IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2022/12/09
zzz possible new offender DtQs
dr|z3d they keep on coming!
zzz pushed a change to make it easier to get the ip/port of a connected peer which was previously kindof annoying, will help in these kinds of investigations
mesh can anybody think why i2p would crash and then magically downgrade from 2.0 to 1.9.0?
mesh wow i2p went crazy
dr|z3d got most of that minus the port on renderPeerHTML zzz, though the port's not a bad idea.
dr|z3d (might has well present that info globally where flags/hash is shown)
mesh why would i2p downgrade? That shouldn't ever happen right?
zzz it's hard to go from a hash to actual connected ip/port but if you have that all in cannon, great
dr|z3d yeah, it was a bit of work.
dr|z3d RouterInfo ri = _context.netDb().lookupRouterInfoLocally(peer);
dr|z3d String c = getCountry(peer);
dr|z3d String h = peer.toBase64();
dr|z3d if (ri != null) {
dr|z3d String caps = ri.getCapabilities();
dr|z3d String v = ri.getVersion();
dr|z3d String ip = net.i2p.util.Addresses.toString(getValidIP(ri));
dr|z3d buf.append("<span class=\"routerid\"><span class=\"flag\">");
dr|z3d if (ri != null && c != null) {
dr|z3d String countryName = getCountryName(c);
dr|z3d if (countryName.length() > 2)
dr|z3d countryName = Translate.getString(countryName, _context, COUNTRY_BUNDLE_NAME);
dr|z3d buf.append("<a href=\"/netdb?c=" + c + "\"><img height=\"12\" width=\"16\" loading=\"lazy\" decoding=\"async\" alt=\"")
dr|z3d .append(c.toUpperCase(Locale.US)).append("\" title=\"");
dr|z3d buf.append(countryName).append(" &bullet; ");
dr|z3d if (ri != null && ip != null)
dr|z3d buf.append(ip);
dr|z3d buf.append("\" src=\"/flags.jsp?c=").append(c).append("\"></a></span> ");
zzz dr|z3d, that's (one of) the IP in the RI, not the actual connected IP
dr|z3d yeah, I figured. primary ip, better than nowt.
zzz what I did is to easily get the IP of a connected + firewalled router, which otherwise is real pita
dr|z3d Blinded message
dr|z3d that is, if said router is f/wd.
zzz no dr|z3d that's the actual IP/port from the ntcp/ssu connection state
zzz not from the RI
dr|z3d ok, neat.
dr|z3d I might use that and append the ip to a gwhois search icon link as I do elsewhere.
mesh man I don't know what version of i2p I'm running now
dr|z3d if you want something like that for your own use, something like <a title=\"Lookup on gwhois.org\" class=whois href=https://gwhois.org/" + Addresses.toString(peer.getRemoteIP() + " target=_blank>" + Addresses.toString(peer.getRemoteIP() + "</a>" or a variant with an icon + tooltip.
zzz dunno mesh, unless you have two separate installs or are trying to hack your own updates
mesh zzz: not sure what's going on. But I think part of the problem is that I upgraded an I2P+ install to normal I2P. Now everything is a bit wonky.
mesh zzz: btw, how do I get onto the dev build stream like 2.0.0-4?
dr|z3d should be fine, mesh, cross-grading isn't usually an issue.
zzz there is no 'dev build stream', you must build it yourself
mesh dr|z3d: yeah it's something I've done before. But with 2.0 things got especially wonky
dr|z3d that's on you, nothing to do with i2p/i2p+ crossgrading per se.
mesh it should be a simple matter of taking my i2p+ tarball and upgrading it to i2p 2.0
dr|z3d the only time there's an issue is if you're trying to update from the easy install bundle to standard i2p or i2p+. then, problems.
mesh I will probably have to build my own tarball
mesh there's definitely something wonky going on. now the darktheme doesn't work and my eyes are so sensitive that the light theme is unusable
zzz shift-reload might do the trick
zzz to get the new css
dr|z3d yeah, used to work, except themes are loaded from entirely different locations now, so shouldn't be an issue.
dr|z3d doesn't work is a bit vague to troubleshoot :)
mesh dr|z3d: Don't worry about it. I'm going to do a clean install. I'm probbaly the only person in the world that regularly installs i2p+ and then upgrades to i2p.
zzz yeah well next time don't wail 'I don't know what happened, i2p is possessed' here because you did know exactly what happened
mesh zzz: I mean I don't know what happened. I installed i2p+, upgraded to i2p 2.0, restarted. Then windows fucked me and I had to restart again and suddenly I was running i2p 1.9. Very strange.
zzz ok but if your install is not-normal or self-sabotaged please lead with that
mesh zzz: I guess. Though I wonder, why doesn't i2p distribute a tarball distribution? There are lots of people who can't run tne installer you know
zzz we have a source tarball and a binary update on our d/l page
mesh the only reason me and my friends jump through this hoop is because we're stuck on computers with java but no kind of admin access
zzz we also have instructions on how to run the installer in CLI mode somewhere
dr|z3d there's also tar.gz development builds back on skank/gitlab. plenty of choices :)
mesh zzz: the installer requires admin access, every time. In the build.xml file there is a 'tarball' target that produces the simple core router which is what we need
zzz mesh if you're not allowed to install software on your own computer there's not a lot we can do from our side
mesh dr|z3d: that's what we do. We take the tar.gz dev build from gitlab and then upgrade that. It used to work pretty regularly
dr|z3d once you have an install working, mesh, you only need to deploy an update, either an i2p or i2p+ update. no need for admin privs for that.
mesh zzz: well if we had a tarball then we can run i2p because at the end of the day it's just a regular java program. So once we have a tarball it's just a matter of
mesh $ $JAVA_HOME/bin/java -Di2p.dir.base="$I2P_INSTALL_DIR" -Di2p.dir.pid="$I2P_WORKSPACE_DIR" -Di2p.dir.tmp="$I2P_WORKSPACE_DIR/data/tmp/" -Di2p.dir.config="$I2P_WORKSPACE_DIR/data/config/" -Djava.library.path="${I2P_INSTALL_DIR}/lib" -cp "${I2P_INSTALL_DIR}/lib/*" -XX:+UseZGC -XX:SoftMaxHeapSize=2g -XX:+UseNUMA -XX:+UseStringDeduplication net.i2p.router.Router
mesh the problem is there's no good way to get a tarball distribution of the router
mesh at least this is what we've been doing all year since the installer always fails
dr|z3d there are two methods currently. either use the i2p+ builds, or build your own from source. both are GREAT methods.
mesh dr|z3d: yes I know this :) I will look into building our own distribution. my point was that it would be nice if we could dl such a distribution from geti2p.net. But anyways yes, the solution is to build our own
dr|z3d you can also extract the .jar or .exe file for an equvalent file structure.
dr|z3d actually, strike that, not that simple.
dr|z3d you want some cut and paste code for the gwhois search, zzz?
mesh wow, "stablecoin" USDN has failed. wtf. The whole world has decided to go crazy on friday night. I guess it's been a long week
zzz it's not our job to help you circumvent the policies of a computer you don't own
zzz no thanks dr|z3d
mesh zzz: I don't think any policies are being circumvented. i2p is just a java program and the way we run it, it makes no changes to the computer, nothing is written to C:\, everything is written to a usb. I don't think wanting to run in such a portable manner is so crazy. In Asia there are lots of internet cafes where people use computers they don't own to do all sorts of stuff
mesh only recently have many people begun buying their own laptops and it's only businessmen and rich college students
zzz if installer used to work but 2.0.0 doesn't, it's because zab didn't sign it. That's unfortunate but we don't have a replacement
zzz the point of portable is to install it on a stick and then just run it on whatever computer you have. you shouldn't need to rerun the installer
mesh zzz: the installer never worked. It tries to write files to directories that apparently require admin access. It's why we've taken to using a tarball and running i2p from the commandline
zzz so whats the problem?
mesh but keep in mind this is on computers that have been locked down though made available to the public
zzz if command line works, do that
mesh zzz: well the only problem is that it's not easy to get access to an i2p tarball.
mesh zzz: the command line only works if you can get a tarball
dr|z3d there comes a point where these circular discussions start to get very tedious and time-wasting for all involved.
dr|z3d grab i2p+ tarball or build your own. those are your options.
mesh but if I can figure out how to build my own tarballs then that will fix it. my only point was that it would be nice if i2p did distro a tarball for people who don't want/can't use the offical installers
dr|z3d start with 'ant tarball' and end there.
mesh dr|z3d: yeah I learned about ant tarball. I think it requires jdk8 but just need to figure out if it's possible to use a modern jdk.
zzz thats a source tarball. I assume you're asking for a binary tarball
zzz if you can't afford a computer, maybe try android?
mesh zzz: the tarball that expands into a "core router" I think. This contains a lib/ and some other stuff (geoip, certificates)
mesh oh **now** I see what happened
mesh (good news is i2p isn't possessed, I forgot to update a windows shortcut and actually launched the wrong version of the router hence the unexplained update)
zzz told you that an hour ago
dr|z3d ant tarball creates the install dir, zzz, at least here.
dr|z3d [echo] tarball Create tar archive for clean install ➜ ./i2p.tar.bz2
zzz ok, I see, it is a binary tarball
zzz wasn't familiar
zzz that target isn't maintained, and it probably doesn't have any of the config file fixups that the installer does, so I don't know how well it would work to just extract and run it
dr|z3d we don't yet have the plumbing in place for a source tarball, though it's probably not difficult to hand that off to git via ant.
dr|z3d apparently it works fine according to mesh. when he's not getting fscked by windows. :)
zzz not designed as a turnkey portable install though
zzz sure we have a source tarball target, it's part of the release process
zzz and on our d/l page
mesh zzz: hehe, we've been using the output of ant tarball all year
zzz great
zzz there are some portable targets too, put in by our chinese friend walking about 15 years ago, also not maintained
mesh usually what we do is download i2p.tar.gz (the output of ant tarball) from gitlab.com/i2pplus/I2P.Plus/-/jobs/3445420924/artifacts/browse
mesh if you download i2p.tar.bz2 from that page it gives you a tarball that can be run from the commandline
zzz so if you have something working, then you don't need us
mesh heh, I wouldn't call it working, but yeah it seems to work most of the time.
zzz pushing my throttle changes because I'm not seeing any false positives, but let's see if others do
zzz still getting tag teamed by CyLg and DtQs
dr|z3d haha, lucky boy :)
dr|z3d got gwhois lookups working for your identified ips on /peers now, zzz. handy, should make miscreants easier to hunt down.
zzz ping eyedeekay re: android
eyedeekay zzz I'm here, is something up with Android?
zzz eyedeekay, I assume you missed my question on tuesday
zzz re: translations
zzz fine because I have more q's now...
zzz anyway
zzz 1) are you pulling and checking in translations before every android release?
zzz because I recently pulled and got quite a few new ones
eyedeekay I thought I was, but I just tried `tx pull -a -f` and got new ones too
eyedeekay So I guess I need to force-pull translations every time
zzz you only need -f if your local timestamps are off
zzz anyway, I checked in what I got the other day
zzz so you don't need to
zzz on to 2)
zzz I see you've added/changed strings in the resource several times over the years...
zzz but the source was last updated on tx three years ago
zzz so...
zzz you only get translations if you push them to the translators, or ask somebody else to push them (I forget if you have privs)
eyedeekay I see the problem, I don't recall if I have the privs yet but I also don't know if anybody ever showed me how to push them either, is it just something like `tx push`?
zzz yeah, tx push -s, but only if you have privs, and the deprecated python tx was supposed to stop working 9 days ago, but still seems to for now
eyedeekay I just checked my "RELEASE_PROCESS.md" doc and it's not in there, I will add it
zzz ok, ideally on or before the desktop tag freeze
zzz also, if you do push yourself, tell me anyway so I can tell the translators in my tag-freeze-day announcement
eyedeekay I will have a tag freeze the same day as the desktop distro, seems clearest and that's how I've been treating it generally
zzz 3) router stats
zzz the optional 'router stats' section on the home page is not translated
zzz I'm working on a patch
zzz kinda hung up on the build, it's been a year or two and having all sorts of issues
zzz but would you like a MR for that?
eyedeekay Sure, I'm pretty good at picking dissecting build stuff these days, put it in an MR and I'll help
zzz well, ideally I'll ask for help first to get the build working so I can test the patch, then I'll do the MR
zzz if I give up then I'll just give you the MR
zzz oh, also, the push should be tx push -s -R I2P.android (to specify the resource, since there's two)
zzz you want to try the push, and if it doesn't work ask me to?
eyedeekay Yeah that should clear up whether I have push rights on transifex pretty quickly
zzz 4) build problems
zzz I'm not using studio
zzz the GUI SDK manager isn't showing anything later than 29.0.6
zzz the command line does offer 33.0.3 and I updated that way
zzz GUI still doesn't show it
zzz gradle yanked 33.0.2 though, hung up on licensing until I got 33.0.3 via sdkmanager command line
zzz so then the build got going, but blew up due to some spectacular class problem
zzz Execution failed for task ':app:lintVitalDonateRelease'.
zzz > Lint infrastructure error
zzz Caused by: java.lang.reflect.InvocationTargetException
zzz Blinded message
zzz Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "com.android.tools.lint.gradle.api.LintExecutionRequest.getLintOptions()Lcom/android/tools/lint/model/LintModelLintOptions;" the class loader (instance of com/android/tools/lint/gradle/api/DelegatingClassLoader) of the current class, com/android/tools/lint/gradle/LintGradleExecution, and the class loader (instance of
zzz org/gradle/internal/classloader/VisitableURLClassLoader) for the method's defining class, com/android/tools/lint/gradle/api/LintExecutionRequest, have different Class objects for the type com/android/tools/lint/model/LintModelLintOptions used in the signature
zzz at com.android.tools.lint.gradle.LintGradleExecution.runLint(LintGradleExecution.kt:201)
zzz any clues?
eyedeekay Maybe, I don't know for sure yet but I think I worked around this by setting an option in Android Studio, so if I can find that option and add it to the equivalent config file that the non-Studio builds that should work
eyedeekay But I think what I should really do is try and set up a non-Studio build environment from scratch
zzz I thought we took the donate version off gplay? why is it still part of the build?
zzz I assume the non-donate build would die too, but...
eyedeekay It's a workaround for when somebody wants to use a release version and a dev build on the same device
eyedeekay donate's been taken down from gplay but the target's still there for that reason
zzz not asking you to reproduce a non-studio setup, just wondering if any of this rings a bell
zzz I googled pretty hard to try to figure out why the gui sdk manager was stuck at 29, no luck
zzz have not really searched for the lint problem yet
zzz have you added some sort of lint setting? or is gradle off doing this on its own?
eyedeekay Just a sec while I refresh my memory, I think I've found it
eyedeekay OK so what's happening now is that gradle is running the linter on release builds by default every time, but the linter doesn't like the other build options we have to set, at least as far as I can tell
eyedeekay but if you just disable the linter, then everything goes back to working
eyedeekay to disable the linter for every build, go to app/build.gradle and find the lintOptions field
eyedeekay add this line: `checkReleaseBuilds false` to it
eyedeekay That's going to be the easiest way for you to work around it until I can figure out what studio options I set to work around it
zzz woo I got past the error with that
zzz may I check in that change?
eyedeekay Yeah go ahead
zzz back, fun times
zzz I have either overheating or power issues on this box and it likes to just shut down
zzz anyway, disabling lint works for me
dr|z3d not the phenom perchance, zzz?
zzz may I check in that change to build.gradle?
dr|z3d eyedeekay says "yes!"
zzz no phenoms here
mesh you have a modern computer that just overheats and shuts down?
dr|z3d ok, I vaguely recall you had one before.
zzz define modern?
dr|z3d you're getting sucked in, zzz.. :)
mesh zzz: there's two possibilities in my experience. (1) your computer needs to be thoroughly cleaned. all dust removed. (2) your power supply may be seriously compromised and on the verge of exploding
zzz asks the person who only uses Other People's Computers
mesh either way probably want to take it in to an expert. that's def not normal on modern boxen
dr|z3d there's a bunch of different possibles based on zzz's description of the issue.
mesh zzz: I use i2p on other people's computers. important difference.
zzz still don't know if it's modern by your definition
mesh modern == any computer released after say 2015. Most people would say if you're running windows 10 or so it's a modern box
dr|z3d his cpu cooler might need reseating or re-pasting. he could have dodgy ram. his psu could be under specced. all sorts of hypothetical issues.
zzz then it's not modern
mesh dodgy ram wouldn't lead to a sporadic shutdown
zzz the voltages as reported by sensors do swing wildly as the load goes up
zzz can't watch videos on it any more, shuts down within a couple minutes
mesh zzz: ouch, really? well in that case you should just buy a new box. Computers have actually improved significantly over the last 10 years for various reasons.
dr|z3d try cpufreq-set perhaps.
zzz I'm well aware of the trends in computers over the last 10 years, thanks.
dr|z3d you can downclock the cores and run them all with the conservative governor, or if that doesn't work, powersave invariably will.
zzz And I do have several of what you would call modern boxes here, just not this one
dr|z3d zzz: 2022 is calling!
dr|z3d if something functions, no sense just throwing it away because better, faster.
zzz fix pushed, thanks eyedeekay
dr|z3d older kit also has the benefit of forcing you to better optimize for slower hardware. if it runs well on "non-modern" kit, it'll run fantastically on the newer stuff.
zzz I'll redo the build on a different box, then get to testing my translation patch, will let you know, low priority for me
dr|z3d too many developers lose sight of where their code might actually be deployed.
eyedeekay Thanks zzz, just ping me when you're ready
eyedeekay if it's the one I remember, I think it's one certain enthusiasts will continue to buy long after it has been considered obsolete in the mainstream
mesh eyedeekay: is it a potato?
zzz eyedeekay, any ideas why the sdk manager gui is stuck at 29? didn't see anything about it being obsolete, but maybe it is?
zzz the 'sdkmanager' is a workaround but a little wonky
zzz *CLI
eyedeekay I don't know for sure but I'll look into it, just a hunch, are you using it from the debian package?
eyedeekay OK that would have been too easy :)
eyedeekay I'll figure it out
zzz the gui is tools/bin/android, are you familiar? this was the pre-studio build lib installer/manager
zzz I assume it's all in studio now
zzz correction, tools/android
eyedeekay Yeah I'm actually mildly confused that there would, the studio equivalent is almost identical and I had assumed they were the same thing and the sdk manager was being launched by the Studio menu
eyedeekay *there would be a difference
eyedeekay If there's no difference then maybe we can just drop the studio version of the configuration in where the SDK manager is looking
zzz the thing is, the CLI tools/bin/sdkmanager sees the latest, but tools/android doesn't
zzz hmm, now it's showing what I have installed at least
zzz but not recent ones that aren't installed
eyedeekay Getting some answers, officially the GUI SDK manager became unsupported with the end of the ADT plugin for Eclipse in 2015, at some point since then this problem has emerged
eyedeekay They might have put in a check against new versions at some point, or maybe the feed format for the updates changed slightly, don't know for sure
zzz are you on 33 now? or 32?
eyedeekay I'm on 33 in the emulator in Android Studio and 32 on my hardware
zzz what about for SDK platform, build-tools, and platform-tools?
zzz ok I see you have 31 in gradle.properties
eyedeekay sorry my lunch was boiling over, yeah minimum SDK version is 21, target SDK version is 31
zzz should you be updating target SDK every release? or is that a bad idea? how do you decide?
zzz do we only increase if something breaks? I can't remember, it's been so long...
eyedeekay I've not been clear on that in the past but having done it a couple times now I think it makes sense to do it when new numbered API's and/or Android versions come out
eyedeekay I *think* because it seems to be that sometimes you can end up being incompatible with newer devices without code changes, which are usually small and manageable
zzz well, you're two behind, latest is 33
zzz so if that's the best practice, add it to the checklist
zzz so you're recommending I change it to 33 and build and test with that?
eyedeekay Will do
eyedeekay For now I know it's safe to test it in the state that it's in and that it works on 33+ devices, so if you want to leave the target the same it will be fine and I'll update the target SDK version tonight
zzz ok, so I'll build and test as-is with 31
zzz what are you using for build-tools and platform-tools?
zzz do you always update those to the latest before the release?
zzz I don't think they have to match SDK platform
eyedeekay That all gets configured by Android Studio and they don't have to match, just a sec while I figure out how to display the platform-tools
eyedeekay my build-tools is 33.0.1
eyedeekay My platform-tools is 33.0.3
zzz ok, those appear to be the latest, so I'll use those also, with SDK platform 31
zzz thanks
zzz sorry for all the q's, it's all left my brain
zzz looks like there's a new signing key config I'll have to figure out too
eyedeekay No problem
eyedeekay apk should have the same signing key setup, it's just the GPlay builds that have to be `.aab` style packages that require new a different signing key setup now
dr|z3d in other news, I've pushed the button on the exploratory/participating naming changes.
dr|z3d exploratory -> utility; participating -> transit.
dr|z3d your integrated -> floodfill change nudged me to do the rest, zzz.
dr|z3d still debating whether Unreachable should be changed to Firewalled.
eyedeekay Ah, I knew I must have had a reason for leaving it at 31... it requires upgrading to gradle >=7, which breaks the maven gradle plugin, so I have to migrate off that to upgrade completely
mesh eyedeekay: build.xml?
eyedeekay No it's the android-specific one, it's gradle/maven-push.gradle
eyedeekay You'll be able to see it clearly in what I'm about to check in
eyedeekay Need to migrate from `maven` to `maven-publish` I think
anonymousmaybe another issue is that android user can set whatever router encryption available including sha1