eyedeekay
OK they're not perfect, but they're there which is more than I can say for the past 10 months.
eyedeekay
gitlab-runners are back for the time being.
zlatinb
eyedeekay: is it pulling the docker base images every time? looks like it from the logs
zlatinb
also I have configured the muwire runner to upload a code coverage report as an artifact. But I can't find where to visualize them... do you need to enable some setting perhaps?
zlatinb
oh looks like they're only for MRs.. that sux
eyedeekay
zlatinb yeah there's some kind of issue I'm still working on re: docker-in-docker
eyedeekay
Which is why it's pulling docker:stable which is causing the remaining issues
eyedeekay
I also had to enable the gitlab container registry but I haven't exposed it to the rest of the internet yet.
eyedeekay
When I do we can use it
Xeha
eyedeekay: dind with shared socket?
eyedeekay
Yes if I'm understanding it all correctly
eyedeekay
Been scouring their forums, this is pretty close to what I'm seeing: forum.gitlab.com/t/error-during-connect-post-http-docker-2375-v1-40-auth-dial-tcp-lookup-docker-on-169-254-169-254-no-such-host/28678/5
Anomaly
i think microsoft word is the best ide for programming
Anomaly
how are you eyedeekay ?
eyedeekay
OK. Just trying to make sure I have all of my projects ready for release time
eyedeekay
I've got to update libraries across all my plugins and still may have a few adjustments to the CSS on proxy error and new install wizard
Anomaly
sounds stressful
eyedeekay
Nah it's only rough this time because my checklist got a lot longer this cycle
eyedeekay
Sort of making the new one this week
eyedeekay
And also I still don't know why goSam.client.debug=true is required for goSam to work on i2pd, which is why I have to do all the library updates, otherwise I can usually just leave that part unless I add a feature that I want to use in an app
Anomaly
how long is a cycle usually ?
eyedeekay
~3-4 months. About a quarter of a year.
Anomaly
interesting
Anomaly
i2pd is c++ or a c language right ?
eyedeekay
C++ but there's part of it with a C binding, which you can generate bindings to other languages for with SWIG
Anomaly
oh ok
Anomaly
lol i wish i was a good programmer
eyedeekay
I've been increasing my use of C++ i2pd from Go a lot this cycle, which is pretty easy once you get it set up
Anomaly
im invested in my own projects...
Anomaly
thats interesting
eyedeekay
One needs to give a little though to the lifecycle of the embedded i2pd router but it gets right out of your way
eyedeekay
Here's sort of the minimum-example of how to use it: github.com/eyedeekay/go-i2pd
Anomaly
ok
Anomaly
lol you use tmux ?
Anomaly
i never invested the time to learn it, but it looks interesting to me
eyedeekay
It's handy for splitting terminals but basically useless if you don't learn how to configure your keyboard shortcuts
Anomaly
ill keep that in mind
eyedeekay
My recommendation, should you choose to use it in that way is to make the defaults a little bit "intelligent"
eyedeekay
in that you should probably do what you can to discover a usable I2P router on the host before running the embedded I2P router
eyedeekay
Otherwise you sometimes end up with embedded routers racing with the systemwide router to open a port, different keys in different working directories, it can make a bit of a mess
zzz
what's on the agenda for today?
orignal
SSU2
orignal
and torrents on android
orignal
from my side
eyedeekay
Not really an agenda item, but I wanted to ping orignal about this PR: github.com/PurpleI2P/i2pd/pull/1728
zzz
ssu2 is 1), android torrents is 2)
zzz
eyedeekay, it's either for the meeting or it isn't, your choice
orignal
merged
eyedeekay
Good enough for me, no need for the agenda item
zzz
ok then
zzz
1) SSU2
zzz
orignal, how about you give your updates / status and then I will
orignal
so I have have a question how we decrypt header
orignal
once we receive a message where we get intro key from?
orignal
based on endpoint?
zzz
for almost all cases, the first header key is your intro key
orignal
huh?
orignal
please explain
orignal
first 8 bytes is connection id
zzz
right, and the key for that is your intro key, as published in the netdb
orignal
no, it's Bob's key
orignal
if I'm Alice
orignal
so I need to know Bob's intro key
zzz
oh, you said you receive a message, I thought you were bob
orignal
say I'm Alice and rfeceive SessionCreated
zzz
if you're alice sending a session request to bob, you got bob's intro key from the netdb
orignal
yes it's clear
orignal
but when I'm Alice and receive some packet how I decrypt?
zzz
that's the exception. if you're alice and receive session created, the key for that is bob's intro key
zzz
when you're alice, the first header key is always your intro key, except for session created and retry
zzz
in those cases, it's bob's intro key
orignal
but how do I know bob's key?
orignal
by endpoint where a packet came from?
zzz
yes
orignal
good
orignal
basically the way we do in SSU now
zzz
correct
orignal
next question
orignal
what destination connection is for?
orignal
if we always know endpoint
zzz
the idea is to make inbound classification of packets much easier
zzz
so you always try with your intro key first. that will find 99% of the sessions
zzz
then fallback to lookup only pending sessions by endpoint
orignal
yes, that's clear
orignal
got it
zzz
with connection id, you find the connection of a session even if the other end's IP changes. that's the main benefit
zzz
super
orignal
wait
orignal
so I map sessions not by endoint like I do know
orignal
but by this connection id
orignal
I decrypt 8 bytes
orignal
and then try to find session by connection id
zzz
that's what I recommend, yes
orignal
btw, how I know if decryption was successive or now?
orignal
because I always decrypt to some 8 bytes
orignal
it's chacha and xor
orignal
not chacha/poly
zzz
you don't. but then you decrypt the _next_ 8 bytes with the correct key for that connection.
zzz
if the next 8 bytes are garbage, then you know everything failed
orignal
they might not be garbage just inccorect
orignal
so I know for sure when decrypt payload
zzz
sure, but after that there is always a chacha/poly payload
zzz
correct
orignal
no more question for now
orignal
the status is
orignal
implement SessionRequest encryption
orignal
not working on decryption of incoming packets
zzz
great
zzz
those were good questions too
zzz
my status:
zzz
still just working on test code
zzz
I got retry working
orignal
have you recached data phase yet?
zzz
yes, data phase is working
zzz
I got ack blocks working too
zzz
I added a token request message so you can ask for a token without doing DH
zzz
I'm starting to think more about packet numbering, because the proposal is a little inconsistent
zzz
I'm starting to think about peer test and relay
orignal
data with fragmentation ,etc.?
zzz
I should be able to do testing with you soon
zzz
my fragmentation code is sortof working, sortof buggy
orignal
once I'm, done
zzz
I do send both unfragmented and fragmented messages, and acks, in my test code
orignal
but I'm making progress
zzz
great
orignal
eyedeekay we need you
eyedeekay
We trying to put XD into an Android app?
orignal
basically this question came from our Turkmen friend
orignal
he wants to run both i2p and torrent client on his phone
orignal
the question is about I2CP
orignal
should we allow 127.0.0.1 connections?
eyedeekay
As far as I can tell the benefits really outweigh the risks
orignal
because zzz said that android local sockets can work between same developer's apps only
orignal
zzz suggested to discuss it with you
eyedeekay
Yeah you have to at least be using the same namespace and signing with the same keys, it's very limiting
orignal
because you are the main android dev
eyedeekay
There is no such limitation on TCP sockets
zzz
orignal, what I2CP android torrent app are you proposing to use?
orignal
what do you think? should we allow it in config?
orignal
e.g. TCP/IP sockets
eyedeekay
The only one I know of is BiglyBT, and I'm pretty sure it uses a hardcoded local socket or something, I don't seem to be able to get it to work with a TCP socket
eyedeekay
In our app it's behind 1 settings menu and off by default. Not hard to enable but not on by default.
orignal
zzz, Vuze
zzz
eyedeekay, are you sure that biglybt on android supports the i2p plugin and external i2p router?
eyedeekay
I'm pretty sure that it doesn't, actually
orignal
e.g. BiglyBT
zzz
if it doesn't then there's nothing to talk about
orignal
seems it does but works the same way as for desktop
orignal
zzz, we discuss ideas in general
orignal
should i2cp be capable to use TCP/IP on android
eyedeekay
On the desktop there is a way to configure how it connects to I2CP and also there's no limitation on the local socket unless you make one
zzz
sure, but we should know how realistic the idea is
orignal
the idea is
eyedeekay
If it's just a matter of adding an item to enter the I2CP address, or switch between embedded and external, then it's probably not a huge chore on the BiglyBT side
orignal
should we allow an external android app to connect trough I2CP
eyedeekay
Ours is off-by-default, on-by-configuration, but SAM is on-by-default
zzz
I think it's a security risk. I also think SAM is a security risk, but I lost that argument to eyedeekay
orignal
SAM is not a question
orignal
only I2CP
zzz
right. just explaing that I'm both anti-SAM on android, and anti-I2CP-on-sockets on android
eyedeekay
Well some of the issues are pretty much identical
orignal
and how do you suggest to solve this problem?
zzz
isn't there a i2pd android app?
orignal
what do you mean?
zzz
does i2pd have an android app?
orignal
why?
orignal
does i2pd works on adnroid or what?
zzz
because if you do support i2pd on android, you could offer i2cp
orignal
since 2016
zzz
right, that's my question
orignal
and in f-droid now
eyedeekay
The issue I have with *not* doing it is that it leaves Android applications hanging with only our I2PTunnel proxies to connect to
zzz
that's what I thought
orignal
eyedeekay and what should torrents users do?
eyedeekay
Some of them embed another I2P router of their own, then start it instead, now this small device has 2 I2P routers
zzz
the correct solution is a i2psnark android app, released by us, that connects to the i2cp local socke
zlatinb
I think if we want better adoption we should have i2psnark with embedded router
zlatinb
if I ever decide to port muwire to android it will ship with an embedded router
zzz
disagree zlatinb. with Android intents, a i2psnark app will launch the router app. that's the way it's designed
zzz
no app should embed the router
zlatinb
making the user install two apps is a major hurdle
zzz
not that major
orignal
so you want to leave I2CP as "internal" I2P protocol?
eyedeekay
I don't care if they embed the router, I just don't want them to start a new one if one is already there
zzz
orignal, what do you plan to do in the i2pd android app?
zlatinb
I think it is. Ofc it's possible to first check if an existing router is available if such thing is possible on android
eyedeekay
It is
zzz
yes, with intents
orignal
usually people use http proxy
orignal
people use i2ptunnels for irc
orignal
etc.
orignal
and gostcoin through SAM
zzz
do you plan to enable i2cp on a 127.0.0.1 socket in i2pd android?
orignal
that's the subject of discussion
orignal
for now I use local sockets
orignal
but as you said it will never work
orignal
and that's why it didn't work with Bote
orignal
because different deleopers
orignal
so for me no worth to use local sockets at all for I2CP
orignal
either exlude it completely
orignal
of listen 127.0.0.1
zzz
str4d decided to use local sockets for security. then the permissions model changed and now needs the same developer
zzz
but the security model hasn't changed for regular sockets. I still think it's a bad ide
zzz
idea
orignal
anyway the result is that I2CP would never work for i2pd-android
orignal
is there are way we can add some authenication to I2CP?
zzz
for starters, we need to know for sure if the biglybt android app supports i2p
eyedeekay
It does turn Android into a walled-garden scenario at best, but the obvious solution is to give the user an option to enable it
zzz
i2cp supports username/password
zzz
as does sam
orignal
good
orignal
then what's a question
orignal
we should require it for android and that's all
orignal
btw, is there standalone build of i2psnark for android?
eyedeekay
zzz BiglyBT has a buried option to use I2P, it's under an advanced-mode checkbox then buried at the bottom of a "Network Config" menu
eyedeekay
No there isn't
zzz
no orignal there is no i2psnark for android, standalone or not
zzz
eyedeekay, does android enable username/password for SAM by default, with randomly generated defaults?
eyedeekay
No it does not
zzz
I'm trying to find where we had this discussion about sam on android. maybe a trac ticket or gitlab MR or issue. would have been two years ago?
eyedeekay
Making it so would be OK, probably not in the next 4 days though
eyedeekay
It was on zzz.i2p IIRC
orignal
how difficult to build it?
zzz
orignal, there's no code for it
zzz
no UI at all
orignal
eyedeekay turkmen has found that item and was able to trun it on
orignal
but it seems it's just desktop plugin
orignal
zzz, it's Java code
orignal
I don't understand the problem
orignal
you mean there is no main activity or what?
zzz
orignal, the desktop UI is HTML on top of jetty, but there's no jetty web server on android
eyedeekay
found it: zzz.i2p/topics/2988?page=1#p16213 #22 was my analysis
eyedeekay
For SAM
orignal
I see now
zzz
you'd have to write a native UI from scratch, or hack it on top of webview
orignal
you need jetty
zzz
correct
zzz
or port it to webview
zzz
good find eyedeekay
orignal
webview is a good idea
orignal
we use it in i2pd android
zzz
i think snark would look like crap in a webview, it's designed for a wide screen
zzz
you'd have to completely rewrite the css
orignal
we need a hedaless version
eyedeekay
That's an interesting idea
orignal
just with config files
orignal
then how I2P works for android without Jetty?
zzz
I've said this for 10 years: It might be easier to take an existing torrent android app and adopt it for i2p
zzz
than to add a native UI on top of snark
eyedeekay
I was thinking a notification area icon and an RPC interface, all but one of the exising torrent clients on android are actually RPC clients talking to remotes by default anyway
zzz
orignal, i2p android has a native UI. No HTML anywhere
orignal
let me formulate differently
orignal
how has implemented I2P UI for android?
orignal
and why it's not possible to do the same for snark?
eyedeekay
It's possible, just extensive
zzz
native. I did it, then str4d worked on it
zzz
correct. possible? definitely. easy? No
orignal
I think it was more work than fort snark
zzz
our android UI is very simple
orignal
it;s not easy
orignal
but this about demand
orignal
people want to use torrents on android
zzz
we need to find somebody to do the work. it's not going to be me
orignal
ofc
orignal
just asking
zzz
who is your android guy?
orignal
so what's your recommendation?
orignal
Hypn
eyedeekay
The path of least resistance is still pretty much XD in a webview the way I did BRB, that way you only need SAM
zzz
Nurp?
orignal
no
orignal
he is Hypnosis now
zzz
got it
zzz
eyedeekay, there's an XD android app?
orignal
do you think we should exlude I2CP for android or swith to 127.0.0.1?
orignal
XD is go
eyedeekay
Yes, not sure if maintained
orignal
it could be build for android easily
zzz
so isn't XD the answer then, if it still works?
eyedeekay
Even if it doesn't it's probably easy to fix, just a sec I've got the repository bookmarked
zzz
orignal, I suggest you read the discussion at zzz.i2p/topics/2988?page=1#p16213 before making a decision
orignal
will do
eyedeekay
Shoot I guess I don't have it bookmarked anymore
zlatinb
psi's gh handle is majestrate
zlatinb
if I ever port muwire to android it's going to be with a native UI
zzz
I don't see a lot of answers to the possible security issues. I don't see that I ever said yes. That's why I'm thinking I just lost the argument to eyedeekay
orignal
zlatinb btw how aout muwire for android?
zzz
but I really don't remember
orignal
another use case
zlatinb
orignal: someone needs to want to write a GUI, the core should work
orignal
but same problem with I2CP
zlatinb
no, because I'll include an embedded router :-P
zzz
boooooooooo
zzz
don't do it
orignal
a bad idea
zlatinb
unless it's *really* easy to use intents to launch an external one, embedded it will be
zzz
not really feeling like you're listening to my points on this
orignal
more more people have a phone only
zzz
but it's hypothetical only so I'll let it go
zlatinb
I already use embedded for desktops so the code is written
zzz
eyedeekay, orignal, can you two please test XD-android with i2pd and java i2p and report back next week on whether it's a good solution?
orignal
if I knew how to build it for android ))
zzz
here's an apk github.com/wipedlifepotato/XD-android/releases/tag/1.1a
orignal
lol
eyedeekay
I dunno I kinda wanna go with zzz on this one zlatinb, it's probably not a huge deal on a Pixel but on a 50 dollar samsung burner it starts to get obstructive
orignal
do you know who is wipedlefipotato?))
eyedeekay
No idea
zzz
sounds familiar
orignal
Plaz
zlatinb
eyedeekay: what about an embedded router is a big deal? If intents work as you say they do it's just larger apk download by a few megs
zzz
well, if we don't trust the author, then it's not a solution, no need to test
eyedeekay
Bummer, glad I knew in advance
eyedeekay
well, found out
eyedeekay
thanks orignall
zzz
unless you want to audit the code
eyedeekay
It's having both of them running at the same time that seems to cause problems
orignal
I would prefer to build psi's XD
eyedeekay
It's straightforward to turn psi's XD into a .aar and turn it into a library, I can re-do it in a weekend
zzz
getting late, anything else on 2) ?
orignal
no
eyedeekay
Nothing from me
zzz
happy valentines day, I love you all :)
eyedeekay
Thanks zzz, <3
zzz
1722 lines of code in XD android, 1182 of which is some ini file editor. that leaves only 650, easily auditable, should you care to build it yourself
zzz
looks like just a webview UI
zzz
zlatinb, re: intents, I believe that the intent will bring the user directly to the play store i2p app install dialog if the router app isn't installed
zzz
it's all done for you, it's part of the client-side lib
zlatinb
that kind of sucks actually
zlatinb
is there a way to just test if an app is installed without going to the play store?
zlatinb
don't worry about it for now, if I ever decide to learn android UI then I'll look into it carefully
zlatinb
and it may not be possible at all (w/o a Great Rewrite) because the core uses some dynamic language features of Groovy
zzz
see lib/helper/src/main/java/net/i2p/android/ui/I2PAndroidHelper.java in i2p.android.base
zzz
I don't believe there's a general-purpose way to see if an app is installed
zzz
unless it has a Service, then you attempt to bind to it
zzz
the general-purpose way sounds bad for privacy, doesn't sound like it should be allowed, but I'm just guessing here
zzz
you can certainly test by deleting the router app and then trying to start bote to see the workflow