IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2022/03/30
mesh zzz: hey?
zzz mesh, just ask your question, I'll get to it when I can, or somebody else may answer faster
mesh zzz: Is it okay for multiple clients to use the same I2PSocketManager?
zzz yes, it's all thread-safe
mesh zzz: What I mean is, can I call I2PSocketManager.connect() multiple times and connect to multiple destinations (using different Sockets) and everything will be multiplexed back to the right client socket when those services respond?
zzz yes
mesh ok. It's possible the bug is in my code then. I'm seeing some strange behavior when multiple clients share the same I2PSocketManager. It goes away when I use separate ones though.
zzz that's equivalent to 'shared clients' in the console, where you can be doing email, browsing, etc
zzz all on one set of tunnels
mesh zzz: Ok. So it's okay for multiple services to share the same I2PSocketManager.getServerSocket() as long as each one listens on a different port. And multiple clients can use the same I2PSocketManager to connect() elsewhere.
zzz correct
mesh zzz: When I create a Destination on my (hidden) Router how long do you think it should take before the Destination is usable for other clients?
zzz as long as it takes to build one tunnel each direction, plus a second or two to publish the LS to the ff
zzz maybe a couple more seconds to flood
mesh zzz: I have a machine in Asia and another machine in North Am. Asia will publish a Destination and North Am won't be able to connect to it for several minutes. Does that seem normal?
zzz not normal but not unusual
zzz if North Am is repeatedly trying before Asia is up, North Am will negative cache the lookup for a couple minues
mesh zzz: I wonder if there's a way to shorten this publishing delay. Like the machine in North Am is very powerful. I could turn it into a flood fill I think. I wonder if I could tell my router to have a preference for that specific flood fill?
zzz no, thats not how DHT works
mesh zzz: Is there anything I can do to help shorten the delay? Sometimes it's only a minute or so but sometimes it's several minutes
zzz if Asia is in hidden mode, it's going to struggle
mesh zzz: ok. thanks for the help. I'll continue to poke at it.
mesh zzz: btw, are there any docs on setting up a floodfill/high bandwidth router that I should read?
zzz search on my forum
zzz but for the most part, don't mess with it, it will become ff automatically if it's happy
zzz trying to manually tune things can make it worse
mesh zzz: I was thinking I might just give it lots of memory and bandwidth.
mesh I thought there was an option to actually enable floodfill but now I can't find it.
zzz /configadvanced
RN first time ever seeing this message: "Maximum number of open connections reached."
zzz re: today's #Spring4Shell 0-day, I2P does not use Spring, nor are we aware of any plugins or related apps that do
mesh zzz: honestly spring4shell looks like a hoax
zzz don't care. just trying to get ahead of it
zlatinb yeah, not very clear according to the twitter front page ranking algorithm :)
zzz because the log4j one was a bit of a fire drill, trying to do better this time
mesh what do people think about resolving "localhost.i2p" to your local Destination. Does that make sense?
zlatinb not really because there's nothing listening on your local destination. Or do you mean to the embedded jetty http server?
mesh is there a more standard mechanism for representing the value of "instance.getSession().getMyDestination()"?
mesh zlatinb: I have stuff listening on the local destination
mesh zlatinb: I'm writing a kind of "I2P AddressResolver" (or maybe HostResolver is a better name) that can turn a java.lang.String into a net.i2p.data.Destination
zlatinb ok in that case localhost.i2p makes sense why not
mesh then check for else if (destination.toLowerCase(Locale.US).endsWith(".b32.i2p"))
mesh if it's not "localhost.i2p" and it doesn't end with ".b32.i2p" I think the next step is just to see if it's a base64 string and try to do, new Destination(host)
mesh if all else fails give NamingService.lookup a try?
mesh zlatinb: I use "localhost.i2p" in my tests at least. But I am thinking about removing the "i2p" and just going with the traditional "localhost"
mesh then again I think stuff like browsers/i2ptunnel might want to make a clear distinction between "localhost" and "localhost.i2p"
zlatinb yeah localhost.i2p makes more sense. Unless someone decides to register that on stats.i2p or reg.i2p in which case it would get confusing
mesh yeah I hope the jumpservers would never accept such an address
mesh right now my address resolver basically says, if (host is 'localhost.i2p') return session.getMyDestination() else if (host endswith 'b32.i2p') return b32Lookup(host); try base64 parsing of host; Last Resort: namingContext.lookup
mesh I think that covers all the possibilities
mesh the other question is how do you represent I2P addresses as uris
mesh I was thinking something like, urn:i2p:${BASE64String}
mesh there are actually some interesting advantages to using Uniform Resource Names (https://en.wikipedia.org/wiki/Uniform_Resource_Name) I think
mesh part of me always wonders what are the chances of an i2p Destination collision
mesh but that's insane hehe
eyedeekay Should localhost.i2p be invalid entirely? proxy.i2p router.i2p and console.i2p are all invalid in AddressBook.java, see ~260
eyedeekay bandura reached out to all the jump providers we could find to ask them to disallow registration of those names
mesh eyedeekay: I treat "localhost.i2p" as a synonym for I2PSession.getMyDestionation() in my unit tests
mesh I think it might be useful as a general rule when a user wants to access a local service they can just refer localhost.i2p
mesh eyedeekay: certain addresses probably should be rejected since they are open to abuse. I could even see users falling for something like "update.i2p" and being asked to download "The offical update to the latest version of I2P"
mesh of course there's no way to catch them all in a decentralized system