Compare commits

...

2918 Commits

Author SHA1 Message Date
zzz
23b61a32cc improve map initialization 2024-07-14 09:43:40 -04:00
zzz
05706131b9 switch from lists to a table
strip prefixes in each section
CSS to follow
2024-07-12 12:07:56 -04:00
zzz
7250ab558c Console: Split up advanced config into sections
only if routerconsole.advanced is not set
2024-01-07 13:52:14 -05:00
zzz
23fa8b9295 add sample testnet config 2024-01-04 08:06:30 -05:00
zzz
a6231992f2 bump -2 2024-01-02 08:53:08 -05:00
zzz
2dfe24fbca Merge branch 'susimail-loading' into 'master'
Susimail: Speed up initial loading by 35x

See merge request i2p-hackers/i2p.i2p!162
2024-01-02 13:37:23 +00:00
zzz
e742c117b0 Susimail: Speed up initial loading by 35x 2024-01-02 13:37:23 +00:00
zzz
011df13b7f Merge branch 'news-fetch' into 'master'
Console: News fetch improvements

See merge request i2p-hackers/i2p.i2p!163
2024-01-02 13:36:49 +00:00
zzz
71ff5be656 Console: News fetch improvements 2024-01-02 13:36:49 +00:00
zzz
2efc759908 Merge branch 'peer-selection' into 'master'
Tunnels: Peer selection adjustments

See merge request i2p-hackers/i2p.i2p!167
2024-01-02 13:34:15 +00:00
zzz
69da9f4034 Tunnels: Peer selection adjustments 2024-01-02 13:34:15 +00:00
zzz
5a2eba7426 Merge branch 'ri-size' into 'master'
Router: Enforce consistent max RI size

See merge request i2p-hackers/i2p.i2p!168
2024-01-02 13:33:51 +00:00
zzz
efcaa3f1d4 NetDB: Log level tweak 2023-12-28 07:43:28 -05:00
zzz
9cf8c2acab Router: Enforce consistent max RI size 2023-12-28 07:17:11 -05:00
zzz
b86aefb169 Susimail: Fix draft attachment thumbnails
missed lines in previous checkin
2023-12-27 08:12:33 -05:00
zzz
57b8a44afc Router: Enable congestion caps permanently 2023-12-26 09:30:21 -05:00
zzz
399507805f Util: Move SyntheticREDQueue from router to core
in prep for use by i2psnark, to follow
log tweak
2023-12-23 08:14:24 -05:00
zzz
394a2b1635 Susimail: Put error messages at the top 2023-12-23 07:49:23 -05:00
zzz
0b88668b7a Susimail: Show user name on folder view 2023-12-23 07:38:56 -05:00
zzz
cb5cdbe00f Susimail: Show size and thumbnail of draft attachments 2023-12-23 07:19:15 -05:00
zzz
222037cc27 Susimail: js auto-resize compose box 2023-12-23 06:56:29 -05:00
zzz
de96821e3b Susimail: Show dropdown on login page for selection from multiple accounts 2023-12-23 06:50:35 -05:00
zzz
d2ea6955ff Susimail: Bring back the logo, put it in the footer
clean up old header CSS
2023-12-23 06:29:09 -05:00
zzz
6c18981b5b Susimail: Add RegexOutputStream util
WIP, prep for enhancements to follow
2023-12-23 06:14:38 -05:00
zzz
2c03586e2d Susimail: Logging enhancements on file read failures
and UIDL mismatches
2023-12-23 06:10:38 -05:00
zzz
44dd19fe82 Susimail: Extract multipart type and content id
WIP, prep for enhancements to follow
2023-12-23 05:52:23 -05:00
zzz
dffa2b7a0d bump -1 2023-12-22 12:03:41 -05:00
zzz
1c4aa12e35 Console: Fix encoding issues in persisted news 2023-12-22 12:01:48 -05:00
zzz
2a9eb85c2e Util: Add 2nd order comparison in ObjectCounterUnsafe sort
to alphabetize ties in console charts
2023-12-22 11:55:58 -05:00
zzz
f476b3ed82 Transports: Don't flood huge RIs 2023-12-22 11:47:48 -05:00
zzz
a4881baf47 Susimail: Include attachment sizes in displayed draft size 2023-12-22 11:28:56 -05:00
zzz
385f6de3cb I2CP: Add router rates to bandwidth limits message 2023-12-22 11:08:19 -05:00
zzz
6b01b22d00 i2ptunnel: Log correct server host/port on error when there are multiple targets configured 2023-12-22 11:00:39 -05:00
zzz
e249449817 i2psnark: Adjust max peers for small torrents 2023-12-22 10:48:31 -05:00
zzz
e5e481a21a Susimail: Login form trimming and validation 2023-12-22 08:51:21 -05:00
zzz
3d95e8608a i2ptunnel: Change return code for host-not-in-addressbook to 502
ref: i2pd github #1987
2023-12-22 08:21:28 -05:00
zzz
70eaa0974c Data: KeysAndCert toString() tweak 2023-12-22 08:18:54 -05:00
zzz
f925d9db0a Util: Catch OOM in timer 2023-12-22 08:16:46 -05:00
zzz
d156c090b5 log tweak 2023-12-22 08:14:21 -05:00
zzz
1678715163 Plugins: Don't auto-update in test mode 2023-12-22 08:11:22 -05:00
zzz
3736bf2432 NTCP2: Add key validity check 2023-12-22 07:59:05 -05:00
zzz
2dcb628fb7 CLI: Add check for slow reseeds to reseed test 2023-12-22 07:54:39 -05:00
zzz
0265987db4 Blockfile: Fix bug in unused getNames()
would return only one entry after a long delay
2023-12-22 07:46:14 -05:00
zzz
ce5cf45f6d Ratchet: Use correct method for Elg2 keygen 2023-12-22 07:40:55 -05:00
zzz
e5484216d6 Router: Minor cleanups from release review 2023-12-22 07:24:45 -05:00
zzz
bd59a00865 PPA/Deb build doc updates 2023-12-22 07:08:05 -05:00
c5350f17bf Debian: update changelogs again 2023-12-20 20:28:57 -05:00
3c43103b93 Debian: update changelogs again 2023-12-20 20:27:09 -05:00
d30ccce44a Update debian changelogs 2023-12-20 14:57:47 -05:00
e49c18a073 Checklist: remind to update topic on i2p-dev 2023-12-19 16:46:30 -05:00
8af6e8bf9e History: match release version to API version 2023-12-19 07:34:13 -05:00
a587e09e24 Router: update versions 2023-12-18 12:37:12 -05:00
03635ad5c7 2.4.0: Pull in new translations, ant testscripts and po4update-man.sh 2023-12-18 12:26:44 -05:00
820d59915d Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-12-18 12:18:13 -05:00
9fe78025cd Router: Restore removed line from SURFJ 2023-12-17 20:55:41 -05:00
zzz
90e4c9f33a bump -19 2023-12-15 13:38:08 -05:00
zzz
e5d2580010 pull translations from tx 2023-12-15 13:36:36 -05:00
zzz
c577b2a05e blocklist update 2023-12-15 13:03:10 -05:00
zzz
b98b86bb6a Javadoc: More 0.9.61 2023-12-14 12:03:07 -05:00
zzz
198a16c76f Console: Whitespace fixes on config pages 2023-12-14 11:59:31 -05:00
ae1c939403 SAM/I2Ptunnel/I2PSnark: update Javadocs to reflect @since 0.9.61 2023-12-12 18:11:44 -05:00
b1f11cc056 Router: update javadoc API version for segmented netDb implementaion 2023-12-10 18:11:00 -05:00
0c2517e050 Console: use stormycloud.png for stormycloud plugin 2023-12-10 15:49:26 -05:00
2203529215 Console: add stormycloud icon 2023-12-10 15:48:51 -05:00
c9b1fd1eae Console: remove metrics from homepage 2023-12-10 15:37:47 -05:00
zzz
dee330f1e5 Console: Add home page addition criteria and validation/checkin steps 2023-12-10 12:32:52 -05:00
78985cd2fd Router: Update GeoIP and Build Time 2023-12-10 08:45:09 -05:00
zzz
143980bc3a Installer: Fix rare misidentification of OS
caused by matching on hostname, e.g. Linux on a Mac
2023-12-08 06:11:12 -05:00
zzz
61fa0e5d8b Susimail: Dark theme fixes
and improvements, and a couple light theme fixes too
2023-12-07 20:05:17 -05:00
zzz
c305530c25 Susimail: Show spam flags for all in spam folder 2023-12-07 10:02:08 -05:00
zzz
5008843b83 Susimail: Fix placement of bottom page nav 2023-12-07 08:51:07 -05:00
zzz
603613c576 bump -18 2023-12-06 09:56:05 -05:00
zzz
f4d22b0c8e SusiMail fixes:
- Flush output to fix truncated mails
- Close output for attachments
- Fix setting encoding for attachments
- Set length for binary encoding
2023-12-06 09:27:43 -05:00
zzz
bdb89581c8 bump -17 2023-12-05 12:43:07 -05:00
zzz
fb59d76af8 poupdate-source 2023-12-05 12:41:09 -05:00
zzz
4a7a9aac95 i2ptunnel: Remove dup headers in error pages 2023-12-05 08:43:00 -05:00
zzz
206cca210e Console: Sidebar CSS tweaks 2023-12-05 08:36:33 -05:00
zzz
4bb5792104 Susimail: CSS tweak 2023-12-03 14:29:01 -05:00
zzz
ffe0360650 Susimail: Fix binary content-encoding
previously unsupported, same as 8bit, ref: RFC 2045
2023-12-02 10:04:29 -05:00
zzz
e3493cc717 Susimail: Fix incorrect "previous" icons
They were copies of "first", not reverses of "next"
2023-12-02 06:28:34 -05:00
zzz
97a8f5249f Console: Fix sidebar not immediately showing results of /configsidebar changes 2023-12-02 05:23:22 -05:00
zzz
1c4d425420 Console: Fix sidebar not showing results of manual update check 2023-12-01 12:01:05 -05:00
zzz
63d7079026 Console: Fix HTML errors on /configupdate 2023-12-01 10:01:12 -05:00
zzz
26524e3e4b Console: Don't lose tabs in log messages 2023-12-01 09:14:33 -05:00
zzz
7048ba6784 i2psnark: Change js mime type as per RFC 9239 2023-12-01 08:18:18 -05:00
zzz
894a2d64ba Console: Clear out "proxy must be running" status after success 2023-12-01 08:07:12 -05:00
zzz
f495b86116 Console: Prevent overflow of sidebar status 2023-12-01 07:53:54 -05:00
zzz
97cb90ef16 restore stats 2023-12-01 05:59:03 -05:00
zzz
d833f53de0 new reseeds 2023-11-30 14:10:35 -05:00
zzz
4f34308e0f bump -16 2023-11-30 11:34:09 -05:00
zzz
84a66eec30 UPnP: Fixes for multiple IGDs
Fix handing of multiple IGDs
Improve logging about multiple IGDs
Add info on UPnP tab on how to disable an IGD
Log tweaks
2023-11-29 16:03:02 -05:00
zzz
c7e46ca52c UPnP: Make case of HTTP headers more standard 2023-11-29 15:57:14 -05:00
zzz
5399aa459f UPnP: Fix missing port in Host header causing failures on libupnp-based devices 2023-11-29 15:55:58 -05:00
zzz
63ac981053 javadoc fixes for org.minidns and net.i2p.router.naming 2023-11-29 06:53:01 -05:00
zzz
4897b67197 javadoc fix 2023-11-29 06:21:34 -05:00
zzz
387e4b93a9 Build: Handle QUALIFIER 2023-11-29 05:42:57 -05:00
02aa509701 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-11-28 19:56:24 -05:00
fb09344781 Router: Use UNKNOWN when IMD doesn't have access to the destination nickname 2023-11-28 19:54:58 -05:00
zzz
5287da1f0f checklist update 2023-11-28 11:37:07 -05:00
idk
3ca7c09914 Update RouterVersion.java bump build number to -15 2023-11-27 20:41:20 +00:00
idk
5b70e4cd2c Merge branch 'i2p.i2p.2.4.0-revert-imd' into 'master'
Router: revert changes to IMD garlic handling

See merge request i2p-hackers/i2p.i2p!158
2023-11-27 20:30:40 +00:00
zzz
d61b8af138 i2psnark: Delay bandwidth limits check briefly
to avoid intermittent "Unable to connect to I2P" message at startup.
2023-11-27 06:52:26 -05:00
42b4f212bd Router: revert changes to IMD garlic handling 2023-11-26 08:20:26 -05:00
zzz
9fc2426e83 i2psnark: Remove things in html, not by hiding them in CSS 2023-11-25 12:47:48 -05:00
88b3fa1eb3 Router: get rid of getClientFloodfillNetworkDatabaseFacades, closes #472 2023-11-24 21:30:57 -05:00
bc5a27f8ac CI: update dind container 2023-11-23 19:30:27 -05:00
zzz
02dfdd5eb7 Util: Update default user-agent
as recommended by drzed
2023-11-23 06:04:16 -05:00
zzz
9d4bb311af i2psnark: Revise tagged string 2023-11-23 06:00:52 -05:00
be594a50c5 Router: add -rc 2023-11-21 17:39:03 -05:00
zzz
70fa743ae0 bump -14 2023-11-21 16:27:32 -05:00
zzz
a80f01f7b3 Merge branch '412-caps' into 'master'
Profiles: Increase congestion cap penalties (Gitlab #412)

Closes #412

See merge request i2p-hackers/i2p.i2p!157
2023-11-21 21:25:18 +00:00
zzz
e9f3b58b7d Profiles: Increase congestion cap penalties (Gitlab #412) 2023-11-21 21:25:18 +00:00
zzz
18b8d05597 CLI: Add "permanent" flag for IPv6 addresses 2023-11-21 09:21:19 -05:00
zzz
9b70d4be73 Addressbook: Workaround for i2p-projekt.i2p etag bug (Gitlab #454)
Will revert if it gets fixed server-side
2023-11-21 09:16:08 -05:00
zzz
761967ed4b i2ptunnel: Add thread number to server thread names
like we already do for clients, to make debugging easier
2023-11-21 08:50:34 -05:00
zzz
a08f59d42f Console: Don't list inner classes on /configlogging
Because the $ won't get through the XSS filter
2023-11-21 07:45:57 -05:00
ecd9140f89 CSS: reduce negative margin on wizard page 2023-11-19 22:25:41 -05:00
zzz
bcdd01448f Router: Don't log updated/started/stopped/crashed events when in test mode 2023-11-19 09:31:10 -05:00
zzz
725181b0dc bump -13 2023-11-18 18:27:17 -05:00
zzz
62079f8dd5 Merge branch 'snark-picker' into 'master'
i2psnark: Uncomment and fix local torrent file picker

See merge request i2p-hackers/i2p.i2p!153
2023-11-18 19:12:51 +00:00
zzz
cfa99b40a1 i2psnark: Uncomment and fix local torrent file picker 2023-11-18 19:12:50 +00:00
zzz
69848474c9 Merge branch 'i2ptunnel-jsp' into 'master'
i2ptunnel: Edit and wizard form improvements

See merge request i2p-hackers/i2p.i2p!154
2023-11-17 18:17:52 +00:00
zzz
b13d9f9769 i2ptunnel: Edit and wizard form improvements 2023-11-17 18:17:52 +00:00
zzz
9667b6469f Merge branch 'console-required' into 'master'
Console: Add "required" to input fields where necessary

See merge request i2p-hackers/i2p.i2p!156
2023-11-17 18:16:42 +00:00
zzz
246d321506 Merge branch 'dbid-cleanup' into 'master'
netDb: Replace all logging access to KNDF._dbid with toString()

See merge request i2p-hackers/i2p.i2p!155
2023-11-17 18:14:29 +00:00
zzz
65b74da95d netDb: Replace all logging access to KNDF._dbid with toString() 2023-11-17 18:14:28 +00:00
zzz
e7536715d4 Console: Add "required" to input fields where necessary 2023-11-16 14:32:43 -05:00
zzz
3facdaabc7 Build: Force build to die on fatal JspC errors 2023-11-16 14:07:39 -05:00
zzz
7ab06396a8 history for -12 2023-11-16 14:00:46 -05:00
idk
f8658957b3 Update RouterVersion.java to build number 12 2023-11-16 15:16:33 +00:00
idk
ed14d07091 Merge branch 'i2p.i2p.2.4.0-simplify-low-level-netdb-handling' into 'master'
Simplify handling of local leaseSets when using subDbs

See merge request i2p-hackers/i2p.i2p!147
2023-11-16 12:45:54 +00:00
idk
a0e9b73bb1 Simplify handling of local leaseSets when using subDbs 2023-11-16 12:45:54 +00:00
zzz
acccd2edd0 i2psnark: Sort tracker list on details page 2023-11-15 18:00:27 -05:00
zzz
676f4ac4a2 i2psnark: Tag untagged strings on torrent edit page 2023-11-15 17:26:36 -05:00
zzz
6ffeb94b83 i2psnark: Increase comment bucket size to reduce duplicates 2023-11-15 16:55:38 -05:00
zzz
60f817be63 i2psnark: Handle metainfo url-list as single byte string 2023-11-15 13:40:30 -05:00
idk
b1a403cbed Merge branch 'i2p.i2p.2.4.0-simplify-imd' into 'master'
Router: use DSM.getRecievedBy in FDSMH to determine whether or not to store a...

See merge request i2p-hackers/i2p.i2p!152
2023-11-12 20:54:26 +00:00
idk
096fbc9ff6 Router: use DSM.getRecievedBy in FDSMH to determine whether or not to store a... 2023-11-12 20:54:26 +00:00
zzz
ec9cf6e0c1 Router: Temp. ban routers publishing in the future 2023-11-12 13:22:11 -05:00
zzz
12684bffa3 Banlist: Throw if banning far in the past, to catch bugs 2023-11-12 11:24:05 -05:00
zzz
a2c5edf6c8 Sybil: Don't ban NAT64 addresses
To workaround i2pd bug, they are publishing them
2023-11-12 10:38:00 -05:00
zzz
4dadfcaab9 Console: Sybil page CSS fixes 2023-11-11 08:31:08 -05:00
zzz
fa72a246a8 Router: Fix congestion cap publishing
Broken in 2.3.0; fix will take effect in 2.4.0
2023-11-11 08:26:16 -05:00
zzz
11feb84d4a i2ptunnel: Exempt tunnel name from XSS filter (Gitlab #467) 2023-11-10 13:06:28 -05:00
zzz
f0b1ae9459 bump -11 2023-11-10 11:50:49 -05:00
zzz
44916e8aa1 Merge branch '468-lookups' into 'master'
NetDB: Lookup handler/throttler fixes (Gitlab #468)

Closes #468

See merge request i2p-hackers/i2p.i2p!151
2023-11-10 16:35:00 +00:00
zzz
bae6844e5d NetDB: Lookup handler/throttler fixes (Gitlab #468) 2023-11-10 16:35:00 +00:00
zzz
c5650478aa Console: Revert change that broke the published LS count on the debug LS tab 2023-11-09 12:15:03 -05:00
idk
d8415f29ca Merge branch 'i2p.i2p.2.4.0-revert-blocklist-changes' into 'master'
Revert Blocklist/Banlist Changes

See merge request i2p-hackers/i2p.i2p!149
2023-11-08 20:59:14 +00:00
idk
878f7b0e46 Revert Blocklist/Banlist Changes 2023-11-08 20:59:14 +00:00
zzz
8ce79f32b1 NetDB: Fix and deprecate unused store() method
was broken for LS2, would have thrown cast exception
2023-11-08 08:14:45 -05:00
idk
ea8b3f00c0 Merge branch 'i2p.i2p.2.4.0-reverse-throttler' into 'master'
I2p.i2p.2.4.0 reverse throttler

Closes #453

See merge request i2p-hackers/i2p.i2p!145
2023-11-07 21:07:18 +00:00
idk
57eb706e95 I2p.i2p.2.4.0 reverse throttler 2023-11-07 21:07:18 +00:00
zzz
3db4f23514 Update checklist for tx v3 2023-11-07 13:31:46 -05:00
zzz
93ff5ffa10 Translations: Fix up config file (Gitlab #408)
to revert mess caused by tx migrate and add missing file_filter lines

- Add comments back
- Restore trans.xx sorting within sections
- Add file_filter line for each section
- Add lang_map
2023-11-07 12:31:26 -05:00
idk
2ab938629d Merge branch 'i2p.i2p.2.4.0-cleanup-todos' into 'master'
Cleans up some dead code, revise comments and TODO's

See merge request i2p-hackers/i2p.i2p!148
2023-11-07 14:43:58 +00:00
idk
f363f9318e Cleans up some dead code, revise comments and TODO's 2023-11-07 14:43:58 +00:00
idk
204567f16b Merge branch 'revert-2fb4dc41' into 'master'
Revert "Merge branch 'i2p.i2p.2.4.0-or-2.5.0-delete-hostnames-from-terminal' into 'master'"

See merge request i2p-hackers/i2p.i2p!146
2023-11-06 01:44:42 +00:00
idk
c57ccfa0df Revert "Merge branch 'i2p.i2p.2.4.0-or-2.5.0-delete-hostnames-from-terminal' into 'master'" 2023-11-06 01:44:42 +00:00
idk
91458ca9bc Merge branch 'i2p.i2p.2.4.0-revert-buildhandler-changes' into 'master'
Router: remove commented out ban strategy and ratestats for tunnels that disrespect congestion caps

Closes #413

See merge request i2p-hackers/i2p.i2p!142
2023-11-03 15:03:12 +00:00
idk
5e076dc13b Router: remove commented out ban strategy and ratestats for tunnels that disrespect congestion caps 2023-11-03 15:03:12 +00:00
zzz
1d37db7704 Merge branch '402-NDF' into 'master'
NetDB: Type changes (Gitlab #402)

Closes #402

See merge request i2p-hackers/i2p.i2p!144
2023-11-03 14:07:02 +00:00
zzz
7e8e0b60d0 NetDB: Type changes (Gitlab #402) 2023-11-03 14:07:02 +00:00
zzz
b20954551e CLI: Test for more Java versions 2023-11-03 10:02:25 -04:00
zzz
5f0ac20b64 Console: RTL CSS tweaks 2023-11-03 09:51:15 -04:00
zzz
db62206008 Console: Profiles definitions CSS fixes 2023-11-02 16:13:47 -04:00
zzz
3ce5f64d75 Console: Use RTL CSS for Persian
thx drzed
2023-11-02 15:24:08 -04:00
zzz
8622b2d42b bump -10 2023-11-02 10:08:59 -04:00
zzz
9d1036935c Merge branch '465-subdb-ri' into 'master'
NetDB: Enforce no RIs in subdbs (Gitlab #465)

Closes #465

See merge request i2p-hackers/i2p.i2p!143
2023-11-02 14:01:41 +00:00
zzz
4ed709aa31 NetDB: Enforce no RIs in subdbs (Gitlab #465) 2023-11-02 14:01:41 +00:00
idk
291e630482 Merge branch 'i2p.i2p.2.4.0-unused' into 'master'
Remove unused functions from FNDS, SNDF, KNDF

Closes #466, #440, #463, and #462

See merge request i2p-hackers/i2p.i2p!141
2023-11-01 20:32:58 +00:00
idk
a460ae2ffc Remove unused functions from FNDS, SNDF, KNDF 2023-11-01 20:32:57 +00:00
idk
a320b254ef Merge branch 'i2p.i2p.2.4.0-move-receivedby-logic-to-dbe' into 'master'
Router: move getReceivedBy and getReceivedAsPublished into DatabaseEntry

Closes #430

See merge request i2p-hackers/i2p.i2p!132
2023-10-30 00:24:23 +00:00
idk
545057314f Merge branch '465-console' into 'master'
Console: Netdb tab fixes and cleanup (Gitlab #465)

See merge request i2p-hackers/i2p.i2p!140
2023-10-29 18:45:13 +00:00
zzz
a7a0956157 Console: Netdb tab fixes and cleanup (Gitlab #465) 2023-10-29 18:45:13 +00:00
zzz
5ea16d9554 bump -9 2023-10-28 11:47:37 -04:00
zzz
31bad7f8c3 Merge branch '460-subsessions-v2' into 'master'
NetDB: Fix lifecycle issues for subsessions (Gitlab #460, #406)

Closes #460

See merge request i2p-hackers/i2p.i2p!139
2023-10-28 15:42:05 +00:00
zzz
49128b5a2c NetDB: Fix lifecycle issues for subsessions (Gitlab #460, #406) 2023-10-28 15:42:05 +00:00
zzz
e7de354f47 Merge branch '458-gunzip' into 'master'
i2ptunnel: Fix gzip footer check in GunzipOutputStream (Gitlab #458)

Closes #458

See merge request i2p-hackers/i2p.i2p!134
2023-10-28 15:40:55 +00:00
zzz
052c9463e0 i2ptunnel: Fix gzip footer check in GunzipOutputStream (Gitlab #458) 2023-10-28 15:40:55 +00:00
zzz
34bff0806f Merge branch '452-proxy-conn' into 'master'
i2ptunnel: Remove nonstandard Proxy-Connection header (Gitlab #452)

Closes #452

See merge request i2p-hackers/i2p.i2p!130
2023-10-28 15:39:45 +00:00
zzz
7a317e5026 i2ptunnel: Remove nonstandard Proxy-Connection header (Gitlab #452) 2023-10-28 15:39:44 +00:00
idk
c74f160b8a Merge branch 'i2p.i2p-2.4.0-eliminate-useSubDbs' into 'master'
I2p.i2p 2.4.0 eliminate use sub dbs option -  Do not merge until after multihomeDb is merged

Closes #461

See merge request i2p-hackers/i2p.i2p!138
2023-10-27 16:06:24 +00:00
idk
7595b4259f I2p.i2p 2.4.0 eliminate use sub dbs option - Do not merge until after multihomeDb is merged 2023-10-27 16:06:24 +00:00
idk
37bb67bf18 Merge branch 'i2p.i2p-2.4.0-eliminate-multihomedb' into 'master'
I2p.i2p 2.4.0 eliminate multihomedb

Closes #409

See merge request i2p-hackers/i2p.i2p!137
2023-10-27 13:40:28 +00:00
idk
5ccdaf10d9 I2p.i2p 2.4.0 eliminate multihomedb 2023-10-27 13:40:28 +00:00
zzz
69e3d521f4 Console: Tweaks to advanced peers summary bar section 2023-10-25 07:28:00 -04:00
zzz
e204c50ba3 history for -8 2023-10-24 07:13:13 -04:00
idk
1334de31bb Router: build -8 2023-10-24 10:33:16 +00:00
idk
8fdd5fc22f Merge branch '406-lifecycle' into 'master'
NetDB: SubDB lifecycle fixes (Gitlab #406)

Closes #406

See merge request i2p-hackers/i2p.i2p!135
2023-10-24 02:35:52 +00:00
zzz
bf1b4cf502 NetDB: SubDB lifecycle fixes (Gitlab #406) 2023-10-24 02:35:52 +00:00
f5e3891abc CI: just echo last line for debugging purposes 2023-10-22 23:44:40 -04:00
d50e70bdfc CI: remove empty continuation line 2023-10-22 23:22:51 -04:00
40fb1cc4cf CI: add git to container 2023-10-22 23:03:42 -04:00
ed77522da6 CI: unset DOCKER_HOST in gitlab-ci.yml 2023-10-22 22:51:30 -04:00
2e32ad8bde CI: update dind image in .gitlab-ci.yml 2023-10-22 22:17:47 -04:00
zzz
83794107f3 SSU: Comment fix
re: LHMCache iteration order
2023-10-22 07:48:07 -04:00
zzz
d5462b31f3 Tests: Disable console scala tests in gradle tests
NPEs due to null log manager
2023-10-22 07:44:53 -04:00
zzz
ec68911568 Tests: Exclude BuildMessageTestStandalone from gradle tests
NPEs via junit; must be run via main()
Already disabled on ant side
2023-10-21 15:34:13 -04:00
zzz
6044d5425c SAM: Reset incoming socket if no subsession is matched (GItlab #456) 2023-10-21 08:42:50 -04:00
zzz
82c7e5a362 Build: Gradle build fixes 2023-10-20 11:33:55 -04:00
a23e09ca20 Router: fix failed ant builds in unit tests 2023-10-18 18:47:44 -04:00
00e3390437 Router: reverse changes to RepublishLeaseSetJob 2023-10-17 12:33:53 -04:00
c67ff1376a Router: fix broken null check in shouldThrottleBurstLookup 2023-10-17 12:30:40 -04:00
fb8bb645c2 Router: move getReceivedBy and getReceivedAsPublished into DatabaseEntry 2023-10-16 20:47:27 -04:00
2af65243a4 Router: remove 'Confirm Succeess' from ISJ, closes #455 2023-10-16 19:38:52 -04:00
idk
de2b122f7b Merge branch 'i2p.i2p.2.4.0-reverse-api-change' into 'master'
Router: Reverse API change from banlistRouterHard back to BanlistRouterForever

See merge request i2p-hackers/i2p.i2p!131
2023-10-16 23:31:07 +00:00
0acae98ccd Router: Reverse API change from banlistRouterHard back to BanlistRouterForever 2023-10-15 20:22:37 -04:00
a2446e1d0c Router: Remove all refs to ban-by-lookup-flood code. Don't create throttlers in the FNDF unles sit's the main db 2023-10-15 20:05:01 -04:00
195b4b9155 Router: bump build rev to -7 2023-10-12 20:19:31 -04:00
idk
5fe8a3bc82 Merge branch 'i2p.i2p.2.4.0-single-blind-cache' into 'master'
Switch back to a single blind cache

See merge request i2p-hackers/i2p.i2p!127
2023-10-13 00:02:28 +00:00
idk
35c4a4cca9 Switch back to a single blind cache 2023-10-13 00:02:28 +00:00
zzz
cef40151a9 Merge branch 'i2ptunnel-cleanup' into 'master'
i2ptunnel: HTTPResponseOutputStream cleanup

See merge request i2p-hackers/i2p.i2p!122
2023-10-12 18:58:59 +00:00
zzz
040bc58917 i2ptunnel: HTTPResponseOutputStream cleanup 2023-10-12 18:58:59 +00:00
zzz
8a840f97c7 bump -6 2023-10-12 11:05:04 -04:00
7d0c857eb5 Router: fix NPE in ClientManager, reduce log level of error in ClientConnectionRunner 2023-10-11 20:39:22 -04:00
79d456a8c3 Router: remove redundant cast in ConfigAdvancedHandler 2023-10-11 12:02:30 -04:00
zzz
3280dd1878 Add ramble.i2p to hosts.txt 2023-10-10 12:00:10 -04:00
zzz
dab30c8c76 Console: Sidebar download button CSS padding tweak (light theme) 2023-10-10 09:47:55 -04:00
zzz
f590128201 Merge branch 'unsigned-update' into 'master'
Updates: Unsigned update improvements

See merge request i2p-hackers/i2p.i2p!125
2023-10-10 12:17:21 +00:00
zzz
df4b3c0d13 Updates: Unsigned update improvements 2023-10-10 12:17:21 +00:00
zzz
0e525b109d Merge branch 'snark-shutdown' into 'master'
i2psnark: Shutdown incomplete torrents first

See merge request i2p-hackers/i2p.i2p!124
2023-10-10 11:56:18 +00:00
zzz
8fdad9c7dc i2psnark: Shutdown incomplete torrents first 2023-10-10 11:56:18 +00:00
zzz
93259d5bf9 Merge branch 'snark-menu' into 'master'
i2psnark-standalone: Add systray item for shutdown

See merge request i2p-hackers/i2p.i2p!123
2023-10-10 11:53:41 +00:00
zzz
dedfee4c82 i2psnark-standalone: Add systray item for shutdown 2023-10-10 11:53:41 +00:00
ccec1162b9 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-10-09 14:54:11 -04:00
dec98e6b8d Router: remove the redundant casts, fixes #438 2023-10-09 14:53:52 -04:00
zzz
6305e85ce1 Console: Fix visibility of radio/checkboxes (light theme) 2023-10-09 10:29:57 -04:00
4c7846be2c Router: add protected isMainDb() function to KNDF and use it when we want to make sure we're the main db 2023-10-08 16:26:52 -04:00
6ada2f3b5e Router: Change name of STATUS to QUALIFIER, move it after BUILD 2023-10-07 16:06:52 -04:00
499106c9ae Router: javadoc add additional note to CM call 2023-10-07 15:54:46 -04:00
idk
6136890616 Merge branch 'i2p.i2p.2.4.0-client-netdbs-on-client-runner' into 'master'
Router: move segmented netDbs into CCRs.

Closes #404, #423, #420, and #439

See merge request i2p-hackers/i2p.i2p!120
2023-10-07 19:20:14 +00:00
idk
4872eedd83 Router: This moves all client sub-netDbs into the ClientConnectionRunners. This turns the FloodfillNetworkDatabaseSegmentor into a means of looking up netDb's and managing the main netDb and a special netDb for managing multihomes. It adds the ability to use sub-netDbs as a defense against netDb context confusion bugs, and also to switch to a single monolithic netDb if necessary. 2023-10-07 19:20:14 +00:00
zzz
1ae663c6a5 Merge branch '433-peertest-iae' into 'master'
SSU2: Prevent rare IAE in peer test timer (Gitlab #433)

Closes #433

See merge request i2p-hackers/i2p.i2p!121
2023-10-03 11:43:02 +00:00
f0b6638466 Router: check \!isClientDb() in KNDF before calling remove 2023-10-02 17:43:41 -04:00
zzz
cb4788019b SSU2: Prevent rare IAE in peer test timer (Gitlab #433) 2023-09-30 10:17:47 -04:00
zzz
d7d51f673f i2psnark: Search box CSS tweaks when iframed (Gitlab #448)
thx drzed for assistance
2023-09-29 17:30:40 -04:00
zzz
d2ab9a7ff4 bump -4 2023-09-29 06:16:14 -04:00
zzz
065ce2886c Merge branch '427-disable-ssu1' into 'master'
SSU1: Disable by default (Gitlab #427)

Closes #427

See merge request i2p-hackers/i2p.i2p!115
2023-09-29 09:58:51 +00:00
zzz
37eb6d383f SSU1: Disable by default (Gitlab #427) 2023-09-29 09:58:51 +00:00
zzz
1350c71c3d Merge branch '399-sam-accept' into 'master'
SAM: Accept fixes (Gitlab #399)

Closes #399

See merge request i2p-hackers/i2p.i2p!114
2023-09-29 09:57:12 +00:00
zzz
0ba97ed4cd SAM: Accept fixes (Gitlab #399) 2023-09-29 09:57:12 +00:00
zzz
60bf83a653 bump -3 2023-09-27 11:11:17 -04:00
zzz
8a1da2ce94 Merge branch '426-doctype' into 'master'
Console: Change all DOCTYPEs to standard html (Gitlab #426)

Closes #426

See merge request i2p-hackers/i2p.i2p!117
2023-09-27 14:17:22 +00:00
idk
d08e82e4f7 Merge branch '437-npe' into 'master'
Transport: Fix NPE during soft restart (Gitlab #437)

Closes #437

See merge request i2p-hackers/i2p.i2p!113
2023-09-26 02:18:12 +00:00
zzz
1dff57856a Transport: Fix NPE during soft restart (Gitlab #437) 2023-09-26 02:18:12 +00:00
idk
453f31099d Merge branch '445-snark-startall' into 'master'
i2psnark: Prevent start-all from within search results erroring on...

Closes #445

See merge request i2p-hackers/i2p.i2p!119
2023-09-26 02:16:51 +00:00
zzz
38f629b91c i2psnark: Prevent start-all from within search results erroring on... 2023-09-26 02:16:51 +00:00
idk
d7eb4db806 Merge branch '443-debian-jre' into 'master'
Debian: Change JRE dependency order (Gitlab #443, Debian #1024461)

Closes #443

See merge request i2p-hackers/i2p.i2p!118
2023-09-26 02:08:28 +00:00
idk
9f99ee66f7 Merge branch '415-itag-zeros' into 'master'
SSU2: Fix uncaught IAE caused by itags with zero values (Gitlab #415)

Closes #415

See merge request i2p-hackers/i2p.i2p!111
2023-09-26 02:07:45 +00:00
zzz
4cf919e3e6 SSU2: Fix uncaught IAE caused by itags with zero values (Gitlab #415) 2023-09-26 02:07:45 +00:00
idk
324c5be47d Merge branch '435-ntcp2-firewalled' into 'master'
NTCP2: Fix updating address on transition to firewalled (Gitlab #435)

Closes #435

See merge request i2p-hackers/i2p.i2p!116
2023-09-26 02:04:33 +00:00
zzz
ef1177689d NTCP2: Fix updating address on transition to firewalled (Gitlab #435) 2023-09-26 02:04:33 +00:00
zzz
69554e4687 Debian: Change JRE dependency order (Gitlab #443, Debian #1024461) 2023-09-23 16:40:31 -04:00
zzz
3d1cc888fa Console: Change all DOCTYPEs to standard html (Gitlab #426) 2023-09-23 16:11:37 -04:00
69d5dfc621 Router: bump build rev 2023-09-22 20:21:51 -04:00
ded7b6dda9 Router: eliminate mainNetDb() call from RouterContext, then replace all calls with calls to netDb() 2023-09-21 19:55:07 -04:00
a343f781d0 Router: don't call remove(dbe,persist) on a TDS 2023-09-21 15:00:04 -04:00
idk
16bfdb4943 Merge branch 'i2p.i2p.2.4.0-no-more-multihome-cache' into 'master'
I2p.i2p.2.4.0 no more multihome cache

See merge request i2p-hackers/i2p.i2p!110
2023-09-21 03:09:09 +00:00
idk
f9f21ba7f5 I2p.i2p.2.4.0 no more multihome cache 2023-09-21 03:09:09 +00:00
idk
790584b329 Merge branch 'i2p.i2p.2.4.0-segmented-netdb-safer-interfaces' into 'master'
Drastically reduces the interface of the FNDS/SNDF, force the use of explicit accessors, refactor FNDS/SNDF

See merge request i2p-hackers/i2p.i2p!107
2023-09-19 19:32:00 +00:00
idk
92a85b35fe Drastically reduces the interface of the FNDS/SNDF, force the use of explicit accessors, refactor FNDS/SNDF 2023-09-19 19:32:00 +00:00
idk
9cad050e6b Merge branch 'i2p.i2p.2.4.0-transient-client-subnetdbs' into 'master'
Router: if a KNDF isClientDb() then set up a TransientDataStore instead of a PersistentDataStore

See merge request i2p-hackers/i2p.i2p!108
2023-09-18 03:26:22 +00:00
d2b8d11645 Router: if a KNDF isClientDb() then set up a TransientDataStore instead of a PersistentDataStore 2023-09-15 12:14:38 -04:00
idk
b4c64e2808 Merge branch 'i2p.i2p.2.4.0-transifex' into 'master'
Project: regenerate updated transifex config files

Closes #408

See merge request i2p-hackers/i2p.i2p!103
2023-09-14 20:33:38 +00:00
idk
f184cc32df Merge branch 'i2p.i2p.2.4.0-undo-breaking-api-change' into 'master'
I2p.i2p.2.4.0 undo breaking api change

Closes #402

See merge request i2p-hackers/i2p.i2p!105
2023-09-14 20:33:28 +00:00
idk
40757b3028 I2p.i2p.2.4.0 undo breaking api change 2023-09-14 20:33:28 +00:00
aa1697e767 Project: regenerate updated transifex config files 2023-09-07 16:08:38 -04:00
idk
c1c8cfc29b Merge branch 'i2p.i2p.2.3.0-DLM-MR' into 'master'
NetDb: Disable Burst Banning on DLM.

See merge request i2p-hackers/i2p.i2p!102
2023-09-05 02:19:06 +00:00
dc68fdc0a0 NetDb: Disable Burst Banning on DLM.
Disable the banning of routers due to excessive Database Lookup
Messages (DLM) until a reliable method is identified for
discriminating between routers that are merely forwarding someone
else's DLM, and routers that are directly sending excessive
DLM.

Signed-off-by: obscuratus <obscuratus@mail.i2p>
2023-09-04 13:26:24 -05:00
4e6323453c Router: change logging of floodfill subdb to main subdb in FNDS. Add TODO comments to getLocalClientsBlindData and lookupClientsBySigningPublicKey. 2023-09-04 12:45:48 -04:00
76067312e1 Router: rename the floodfill netdb to the main netdb 2023-09-03 23:03:35 -04:00
7d9eecd05a Router: rename the floodfill netdb to the main netdb 2023-09-03 21:46:03 -04:00
d3ad082a82 Console: use clientOnly flag from caller when displaying client netDbs 2023-09-03 21:32:50 -04:00
idk
3d225b6f9f Merge branch 'i2p.i2p.2.4.0-test1' into 'master'
Nested NetDb Branch Redux

See merge request i2p-hackers/i2p.i2p!101
2023-08-31 02:53:07 +00:00
idk
88d9d0f9b7 Nested NetDb Branch Redux 2023-08-31 02:53:07 +00:00
idk
2fb4dc415c Merge branch 'i2p.i2p.2.4.0-or-2.5.0-delete-hostnames-from-terminal' into 'master'
AddressBook: add -d option to lookupdest command line which deletes a hostname...

See merge request i2p-hackers/i2p.i2p!99
2023-08-15 07:08:29 +00:00
idk
d2e899915b AddressBook: add -d option to lookupdest command line which deletes a hostname... 2023-08-15 07:08:28 +00:00
idk
79494c2396 Merge branch '2.3.0-lookup-tweaks' into 'master'
2.3.0 lookup tweaks

See merge request i2p-hackers/i2p.i2p!97
2023-08-15 07:07:19 +00:00
idk
d233209694 2.3.0 lookup tweaks 2023-08-15 07:07:18 +00:00
3fc704c445 Add Metrics and StormyCloud to homepage 2023-07-24 13:54:10 -04:00
d66a7424a7 Router: add option to include a release 'status' in the version number, i.e. beta1, rc1 2023-07-18 14:51:45 -04:00
idk
206cc00387 fix lunar changelog 2023-07-01 16:01:20 -04:00
idk
0d359bbc1b update debian changelogs 2023-07-01 11:10:55 -04:00
idk
2fcc947a12 revise icons again 2023-06-30 10:07:30 -04:00
idk
55b1da881b make blue version of notbob icon to match homepage color scheme 2023-06-30 01:01:31 -04:00
idk
ff94b2423e account for RAP vs RAR in multihomeCache 2023-06-29 23:40:56 -04:00
idk
2a3d4e9458 alter color scheme on new icons to match ours. We'll approach this later. 2023-06-29 18:20:01 -04:00
idk
cda6416bf9 fixup debian patch 2023-06-29 16:05:30 -04:00
idk
cd6a4ac758 update translations and manpages 2023-06-29 14:40:46 -04:00
idk
40a7149215 update versions and build numbers 2023-06-29 13:39:12 -04:00
idk
62c21a8de0 fix typo 2023-06-29 12:36:12 -04:00
idk
5c56856566 Merge branch 'i2p.i2p.2.2.1-always-copy-full-leaseSet-when-updating' into 'master'
screen leaseSets before storing them in KademliaNetworkDatabaseFacade.store,...

See merge request i2p-hackers/i2p.i2p!94
2023-06-29 16:23:08 +00:00
idk
8fd2235cde screen leaseSets before storing them in KademliaNetworkDatabaseFacade.store,... 2023-06-29 16:23:07 +00:00
idk
331b24237f Merge branch 'i2p.i2p.2.2.1-not-bob-icon' into 'master'
add notbob and ramble icons

See merge request i2p-hackers/i2p.i2p!96
2023-06-29 04:43:47 +00:00
idk
5edf9f715b add notbob and ramble icons 2023-06-29 04:43:47 +00:00
idk
eb0c8aaaa9 correct the error in the previous checkin 2023-06-26 16:44:37 -04:00
idk
e55e6bc7a2 move singleIPv6BlockList null check in clear outside of the synchronized block 2023-06-26 14:18:48 -04:00
idk
0ac7d69212 add null checks around _singleIPv6Blocklist 2023-06-26 14:12:39 -04:00
idk
ace62a1677 add notbob and ramble to the homepage, tooltips won't be translated for 2.3.0 but we'll live with that for now. 2023-06-23 17:51:21 -04:00
idk
95c29649bd Merge branch 'i2p.i2p.2.2.1-blocklist-expiration' into 'master'
add user-configurable expire-time to blocklists.

See merge request i2p-hackers/i2p.i2p!93
2023-06-19 00:05:03 +00:00
idk
912b534c31 add user-configurable expire-time to blocklists. 2023-06-19 00:05:02 +00:00
idk
b2fea266ee bump build time 2023-06-14 13:31:20 -04:00
idk
c30ad8d386 update geolite database 2023-06-14 12:45:36 -04:00
idk
3ce34ed338 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-06-10 22:23:05 -04:00
idk
f3794ecd10 reverse the last change to i2psnark-standalone 2023-06-10 22:16:25 -04:00
idk
0bb220b85d Merge branch '2.2.1-xormsgmask-mr' into 'master'
Router/Tunnel: Constrain xor message ID mask to >= 0

See merge request i2p-hackers/i2p.i2p!92
2023-06-11 02:05:56 +00:00
badcf76e2f Router/Tunnel: Constrain xor message ID mask to >= 0 2023-06-11 02:05:55 +00:00
idk
90aacc6746 use RandomSource instead of Random 2023-06-04 18:23:17 +00:00
idk
f0df5d19ed add comment to the new getUniqueID code 2023-06-04 17:31:26 +00:00
idk
9c5118f763 re-add 3-arg add function and javadoc. 2023-06-04 17:27:24 +00:00
idk
722029d11e Merge branch 'i2p.i2p.2.2.1-xor-messageIDs-as-interface-change' into 'master'
Patches all INMP.add() calls to use replay "Contexts" specific to where they were called from.

See merge request i2p-hackers/i2p.i2p!91
2023-06-04 01:38:16 +00:00
idk
82aa4e19fb Patches all INMP.add() calls to use replay "Contexts" specific to where they were called from. 2023-06-04 01:38:15 +00:00
idk
63f2ae368c Merge branch 'i2p.i2p.dtg-menu-api' into 'master'
Adds a Menu API to the DTG

See merge request i2p-hackers/i2p.i2p!90
2023-05-31 14:39:53 +00:00
idk
785fc52a14 Adds a Menu API to the DTG 2023-05-31 14:39:53 +00:00
idk
997644a06d Merge branch 'i2p.i2p.congestion-caps' into 'master'
start implementing congestion caps handling by adding...

See merge request i2p-hackers/i2p.i2p!89
2023-05-31 14:34:19 +00:00
idk
43b4364918 start implementing congestion caps handling by adding... 2023-05-31 14:34:18 +00:00
idk
f308ebee74 bump rc 2023-05-25 03:39:18 +00:00
idk
687858e73d Router/Tunnel: xor message IDs in order to prevent cross-context leaks.
Adds unique message ID's per context to bloom filter for safer replay protection.

The transport and client tunnel managers use a message ID in order to prevent
messages from being replayed. Prior to this checkin, the message ID queue used
the same IDs in clients and transports. If a message was sent to a transport
and a client with the same message ID, the message ID in one would cause a replay
to be detected in the other.

The result would be that the message reply would come back empty, creating a
point of evidence that a client and a transport were hosted on the same router.

However, there is no way from the attackers POV to determine with certainty that
the message was dropped because the message was replayed, making it very easy to
demonstrate a potential information leak using a known router and a known client,
but more difficult, to use to deanonymize a known client on an unknown router
(i.e. by trying routers from the local NetDB).

So what we have here is a situation where an attacker observing router behavior
can say that a message was dropped, and that they have reason to believe it is
because it contained an ID which was replayed. This constitutes a potential
information leak and is resolved by this checkin.

patch created by @obscuratus, tested, reviewed and checked in by @obscuratus and @idk
2023-05-17 18:16:25 +00:00
idk
76197ce75d Merge branch '2.2.1-issue397-v2' into 'master'
Router/Tunnel: Handling Updates for Inbound Messages.

See merge request i2p-hackers/i2p.i2p!88
2023-05-08 17:44:58 +00:00
18d939bcd4 Router/Tunnel: Handling Updates for Inbound Messages. 2023-05-08 17:44:58 +00:00
idk
18a3893185 update po files with diff 2023-04-23 19:08:43 +00:00
idk
058f07c208 fix un-escaped character on configplugins.jsp 2023-04-22 15:11:10 +00:00
idk
a9d9c13869 Merge pull request #44 from Shoalsteed/master
Update configplugins.jsp
2023-04-22 11:01:10 -04:00
af3c32fc46 Merge branch 'i2p:master' into master 2023-04-20 13:24:45 -04:00
17b4409823 Update configplugins.jsp
Fixes Issue i2p.i2p/-#392
2023-04-18 12:54:34 -04:00
idk
85822c48da fix lunar changelog 2023-04-17 03:31:25 +00:00
idk
ecc87573e3 update debian changelogs 2023-04-17 03:04:04 +00:00
idk
f66f21434e 2.2.1 2023-04-12 21:23:18 +00:00
idk
c6d853575d fix makegeoip.sh script 2023-04-12 21:21:58 +00:00
idk
53bae90089 fix makegeoip script and update geoip data 2023-04-12 21:21:58 +00:00
idk
a50a65ac9f update version numbers in installer and resources 2023-04-12 21:21:32 +00:00
idk
ff4b8fc106 ignore shell scripts in root directory 2023-04-12 16:43:33 +00:00
idk
fe541df2c7 fix typo in checklist, add .tx to gitignore 2023-04-12 16:42:37 +00:00
idk
4585ec0b4c Merge branch 'lunar-bookworm-jakarta' into 'master'
WIP: Install and link jakara on Ubuntu>=Lunar, Debian>=Bookworm

Closes #374

See merge request i2p-hackers/i2p.i2p!87
2023-04-07 13:33:11 +00:00
idk
456ab3150a WIP: Install and link jakara on Ubuntu>=Lunar, Debian>=Bookworm 2023-04-07 13:33:10 +00:00
idk
b3748395ce Check in fixes for console 2023-04-06 18:54:03 +00:00
idk
b582695aa2 Merge pull request #43 from Shoalsteed/master
Updated Copy For /console, merging with changes requested, I'll be checking them in
2023-04-06 14:52:28 -04:00
06b7f75df3 Update readme.html 2023-04-05 14:55:08 -04:00
e2ca8d3268 Update readme.html 2023-04-05 14:41:50 -04:00
idk
0d4eec7f7f fix decimal/comma formatting issue on stats page 2023-03-31 23:08:45 +00:00
idk
837cb34353 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-03-28 03:25:18 +00:00
idk
8b9cfc4e63 update outproxy user agent to latest TBB/Firefox ESR version, reported by dr|zed 2023-03-28 03:22:24 +00:00
idk
7d7768897d Merge branch 'add-tmp-to-install.jar' into 'master'
use tmp for install.jar to prevent confusion on build fails

See merge request i2p-hackers/i2p.i2p!85
2023-03-23 23:19:12 +00:00
c8b6e678f8 use tmp for install.jar to prevent confusion on build fails 2023-03-23 23:19:12 +00:00
idk
692c73994b fix some errors in startapp.sh shell script, including /JAVA_OPTS/JAVAOPTS/ thanks @bedaro, #41 2023-03-23 04:08:24 +00:00
idk
b5461f3b41 ignore override.properties when building docker 2023-03-19 15:00:48 +00:00
idk
37018f6eb0 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2023-03-19 14:42:56 +00:00
daff55463b Router: Update and Clarify the Inline Documentation for VMCommSystem 2023-03-19 14:41:50 +00:00
ab676bf63c Detect When Running as a Podman Container 2023-03-19 14:41:50 +00:00
idk
8a0a533777 fix base directory path duplication in Dockerfile 2023-03-19 14:35:23 +00:00
idk
3c0eb9c52f Merge branch '2.1.0-9-mr-vmcommsystem-v2' into 'master'
Router: Update and Clarify the Inline Documentation for VMCommSystem

See merge request i2p-hackers/i2p.i2p!83
2023-03-18 17:33:32 +00:00
b3188a26a5 Router: Update and Clarify the Inline Documentation for VMCommSystem 2023-03-18 17:33:32 +00:00
idk
3ab904f164 Merge branch 'master' into 'master'
Detect When Running as a Podman Container

See merge request i2p-hackers/i2p.i2p!84
2023-03-18 17:32:38 +00:00
c71a42859d Detect When Running as a Podman Container 2023-03-18 17:32:38 +00:00
idk
cbe8d3f799 add blocklist 2023-03-14 22:42:24 +00:00
idk
ae4d3b5758 fix bionic changelog 2023-03-14 22:29:10 +00:00
idk
d12adcd933 update debian changelogs 2023-03-14 18:22:42 +00:00
idk
607613b7fd update debian changelog 2023-03-14 17:54:07 +00:00
idk
fdd0b6a280 remove hazardous plugin keys 2023-03-13 20:02:29 +00:00
idk
0401157703 fix non-zero build number change that was not checked in 2023-03-13 19:33:12 +00:00
idk
98931bb530 bump version and create tag for 2.2.0/0.9.58 2023-03-13 14:59:56 +00:00
idk
38666d2449 Send and check target destination in first streaming SYN packet 2023-03-13 01:30:17 +00:00
idk
ed513b6c15 remove stats.i2p from jump services 2023-03-13 00:02:08 +00:00
idk
11523c79f4 remove zzz.i2p and stats.i2p from console homepage 2023-03-12 00:57:14 +00:00
idk
4b87f4d2cc checkin reseed update 2023-03-07 19:50:58 +00:00
idk
bbd90a77bc check in changed translations 2023-03-07 17:30:15 +00:00
idk
0645359cb6 explicitly set i2p.dir.base and i2p.dir.config in router.config for Docker containers. fixes and closes #41. 2023-02-28 02:33:25 +00:00
idk
9369002418 Merge pull request #38 from jeanluc162/docker-multiarch
Changed baseimage to allow for multiarch build (specifically arm64)
2023-02-22 17:56:57 -05:00
zzz
37feda74f7 DTG: Remove "Start I2P" menu item in non-router context
Reported by R4SAS
2023-02-18 17:04:42 -05:00
zzz
e1da8d13d7 Sybil: Don't catch all the i2pds publishing ::1 2023-02-18 16:44:10 -05:00
zzz
a4f36c8e64 log message fix
reported by drzed
2023-02-17 18:48:42 -05:00
zzz
3636ec7cc6 javadoc fix 2023-02-17 13:36:45 -05:00
zzz
2acdcc5c93 Console: Add legend for congestion caps (proposal 162) 2023-02-17 11:26:49 -05:00
zzz
b44cb59a48 Transports: Add new inbound connection throttler
To limit rate increase of inbound conns
Add exemption system so inbound tunnel builds bypass the throttler
2023-02-16 10:26:14 -05:00
zzz
5918613ff4 Tunnels: Re-enable using U routers in some expl. tunnels
to give them cover
2023-02-15 12:24:50 -05:00
zzz
5499b23189 Blocklist: Increase size for slow routers
Store feed blocklist in main array for efficiency
2023-02-15 11:47:01 -05:00
zzz
601a1c917e Sybil: Disable analysis when in test mode 2023-02-15 11:28:20 -05:00
zzz
de978f3a10 SSU2: Remove dup stat update 2023-02-15 07:07:08 -05:00
zzz
48598d9c76 Console: More failing peers removal 2023-02-13 12:55:25 -05:00
zzz
46af72c529 Console, NetDB: Remove deprecated isFailing() calls 2023-02-13 10:28:51 -05:00
zzz
b82cefd904 Profiles: Remove the long-unused failing peers map, deprecate all related methods 2023-02-13 10:09:55 -05:00
zzz
8f0e3d0421 Profiles: Change the new-router bonus to a penalty
Don't penalize old routers after long downtime
2023-02-13 07:24:27 -05:00
zzz
6a04eedb9e Console: Set minimum displayed profile thresholds to 1 2023-02-13 07:19:31 -05:00
zzz
546e51e3d9 Router: Increase min version for tunnels and netdb to 0.9.51 2023-02-12 16:06:51 -05:00
zzz
86cbbd80cf Tunnels: Give up on building through U routers 2023-02-12 15:54:17 -05:00
zzz
18f598bc2c Console: Reduce max age of displayed profiles
to match age reductions in the organizer and limit output
2023-02-12 15:07:37 -05:00
zzz
69b73d4bc8 Profiles: Don't create new profile on message or lookup failures
Mark commErrorOccurred() unused
2023-02-12 15:06:33 -05:00
zzz
8ba5cb4d02 Profiles: Adjust capacity for send success/failure
Stub out adjustments for congestion caps
2023-02-12 14:23:10 -05:00
zzz
f9b9633ac0 Profiles: Downrate capacity of slow/unreachable peers
Use more efficient RI lookup
Comment out unused same-country code
2023-02-12 13:39:47 -05:00
zzz
6f80df48e0 bump -8 2023-02-12 10:17:57 -05:00
zzz
4a9ca43614 NetDB: Don't call heardAbout() unless peer is reachable
Consolidate hash() calls
2023-02-12 10:15:28 -05:00
zzz
afe236c62c Profiles: Limit storage and memory usage
Write profiles to disk more often
Delete old profiles on disk more often
Reduce max age of profiles
Limit age of profiles read in at startup based on downtime
Limit total profiles read in at startup
Change loaded profiles from a Set to a List for efficiency
Log tweaks
2023-02-12 10:11:46 -05:00
zzz
7a75ea4bef NetDB: Store handler updates
Drop some unsolicited RI stores when over thresholds
Don't update profile for banned/blocked RI
Don't flood RIs with blocked IP
Log tweaks
2023-02-12 07:58:24 -05:00
zzz
78ee005870 Data: Move LS RAP/RAR booleans up to superclass
Add RAR to I2NP DSM
WIP
2023-02-11 09:47:40 -05:00
zzz
dbe3445d7b Console: Fixup display of RI published in the future
String consolidation
2023-02-11 06:52:20 -05:00
zzz
cb90139342 NetDB: Increase flood thottle time 2023-02-11 06:34:04 -05:00
zzz
d6c6b5e092 NetDB: Expiration tweaks
Start expire job sooner if forced floodfill or downtime was short
Don't run refresh routers job if forced floodfill or downtime was short or vmcommsystem
Increase expire probability
Don't expire routers close to us just before midnight
Don't start expire leases job until 11 minutes after startup
Base probability out of 128 to reduce random usage
Consolidate now() calls
2023-02-11 06:02:57 -05:00
zzz
5d3dffbaa0 Util: Increase memory required to not be slow 2023-02-11 04:43:31 -05:00
zzz
21d39ebc36 i2psnark standalone: Add example config to disable notifications 2023-02-10 13:47:58 -05:00
zzz
1f81d35423 Router: Tighten skew calculation window 2023-02-10 12:42:36 -05:00
zzz
12239124d6 Profiles: Don't delete old profiles from disk until 90m uptime 2023-02-09 16:27:38 -05:00
zzz
71a1d6dd7b NetDB: Don't lookup before dropping after shutdown initiated 2023-02-09 14:38:21 -05:00
zzz
4881ac32b6 DTG: Support notification disable/enable in non-router context
by moving all the code from InternalTrayManager to TrayManager
and adding to the ExternalTrayManager menu
As requested by R4SAS
2023-02-09 14:09:10 -05:00
zzz
d3e5879068 NetDB: Improve efficiency of ExpireRoutersJob
by iterating through the map entries directly, as in ExpireLeasesJob
Expire RIs just before saving them at shutdown
2023-02-09 13:19:00 -05:00
zzz
e4e9fe2972 i2ptunnel: Tag untagged strings (Gitlab #387) 2023-02-09 11:42:48 -05:00
zzz
56ab3b59a2 bump -7 2023-02-08 09:46:38 -05:00
zzz
bc7355d61e Console: Debug page sockets table cleanup 2023-02-08 09:43:42 -05:00
zzz
7834f44973 NetDB: Minor cleanups and log tweaks 2023-02-08 09:36:32 -05:00
zzz
621862afa9 NetDB: Replace Set with List in ExpireLeasesJob for efficiency 2023-02-08 09:25:42 -05:00
zzz
af99250a69 NetDB: Further restrict what RIs we lookup before dropping
if floodfill, unreachable, or L class
Only kicks in if we don't have a lot of RIs to begin with
2023-02-08 09:20:10 -05:00
zzz
0bce9d1211 Profiles: Reduce initial/min/max expirations
Adjust expiration faster
Use more efficient RI lookup method
2023-02-08 09:10:27 -05:00
zzz
8b7f68e6f9 NTCP: Route RI block of another router to InNetMessagePool 2023-02-08 09:05:29 -05:00
zzz
6ac08e0929 Tunnels: Load RIs more efficiently in peer selector 2023-02-08 08:58:22 -05:00
zzz
b87fd621b1 NetDB: Implement faster RI expiration mode
exempt routers within our keyspace if we are floodfill
2023-02-08 08:52:12 -05:00
zzz
c94bfe6cd0 NTCP: Increase temp. inbound IP block time
Block IP on failed inbound
Ban peers that ban us
2023-02-08 08:32:06 -05:00
zzz
c08d6b3a18 log tweak 2023-02-08 08:27:20 -05:00
zzz
9e2bb1ad0a Transports: Check RI in handshake for matching IP 2023-02-08 08:25:09 -05:00
zzz
10e0596011 NetDB: Reduce min RI expiration 2023-02-08 08:19:34 -05:00
zzz
6216081259 NetDB: Increase closest-floodfill search size
Reduce max fail rate
Lookup RIs more efficiently
2023-02-08 08:10:46 -05:00
zzz
981946c950 NetDB: Don't explore if we have enough RIs 2023-02-08 08:05:30 -05:00
zzz
84e70ba013 Console: Load router infos more efficiently
Add routing key to router infos (advanced)
2023-02-08 07:52:22 -05:00
zzz
8ff421143f NetDB: Set max routers to load at startup 2023-02-08 07:40:18 -05:00
zzz
22b5cdf57a Console: Debug DHT tab dark theme fixup 2023-02-08 07:37:31 -05:00
zzz
cc58c96e98 Console: Fixup netdb search example 2023-02-08 07:36:30 -05:00
zzz
3816278a5e Router: Don't set congestion cap at startup because of high job lag 2023-02-08 07:32:56 -05:00
zzz
338985a4cc Sybil: Thread analyzer at reduced priority
Don't do pair distance check unless enough memory
2023-02-08 07:28:46 -05:00
zzz
c6fca9da6a bump -6 2023-02-04 09:26:32 -05:00
zzz
bdbbe148c3 Profiles: Make DBHistory rates final 2023-02-04 08:58:46 -05:00
zzz
f2b206b1e0 Router: Continue work on congestion caps (proposal 162)
Set caps based on job lag and share bandwidth
Add 20 minute rate to tunnel.participatingMessageCountAvgPerTunnel to
be used for congestion caps
Don't set congestion cap if hidden
2023-02-04 08:57:10 -05:00
zzz
c1f83d6ec9 Router: Stat cleanup
Remove old non-required client.timeoutCongestion* stats in OCMOSJ.
Remove RouterThrottle.getInboundRateDelta(), used only for those stats.
Remove transport.sendMessageSize rates longer than 60s, used only for getInboundRateDelta().
Remove transport.receiveMessageSize rates longer than 60s, unused anywhere.
Remove transport.sendProcessingTime rates longer than 60s, unused anywhere.
getInboundRateDelta() was broken anyway as it was looking at send, not receive size.
All of this was untouched since 2004.
9 total rates for required stats removed.
2023-02-04 08:49:40 -05:00
zzz
c53fe93839 i2psnark: Fix missing paren in tooltip
ref: http://zzz.i2p/topics/3577
2023-02-03 07:37:15 -05:00
zzz
190acf7ed2 i2psnark: Fix for torrents with # in the name
By using custom version of storeProps()/loadprops()
for torrent config files
ref: http://zzz.i2p/topics/3576
2023-02-03 07:32:52 -05:00
zzz
3d71a5404b Util: Fix check for illegal chars in storeProps()
ref: http://zzz.i2p/topics/3576
2023-02-03 07:28:42 -05:00
zzz
37beb53245 Profiles: Remove 30m tunnel history rates
to save a large amount of space.
30m rates were almost always within 10% of the 60m rates,
so we clearly don't need both.
Keep 60m because that's what we publish in the netdb.
Adjust rate weighting in CapacityCalculator accordingly.
2023-02-01 17:10:04 -05:00
zzz
019a8b6655 Profiles: Count all build rejections in tunnel history
Previously did not count probabalistic or transient codes
Reduce 10 minute acceptance rate for these codes
(previously adjusted the averaged rate)
Make rates final in TunnelHistory
Static rates array to reduce object churn
Prep for removing 30m rates
Reduce now() calls, pull out of loops
2023-02-01 16:23:45 -05:00
zzz
652da9ebd5 Console: Dark theme home page CSS tweaks 2023-02-01 16:01:25 -05:00
zzz
99703d53ba Ratchet: Don't bundle LS with ratchet ACK
Not necessary, and will be the wrong LS for EdDSA subsession
2023-02-01 08:47:58 -05:00
zzz
de7b8db504 Console: Don't list same client SKM twice on /debug for subsessions 2023-02-01 08:01:35 -05:00
zzz
1e28557ce2 cleanup buf.append(s.substring(a, b)) -> buf.append(s, a, b)
all over, for object churn
2023-01-31 07:31:02 -05:00
zzz
07a796bcf6 typo 2023-01-30 14:50:40 -05:00
zzz
665e63da5b Util: Add experimental config to bypass Fortuna and just use /dev/random
Refactor Fortuna so it may be extended
Reduce default buf size for Android
2023-01-30 14:04:50 -05:00
zzz
4ef4ae4df5 Streaming: Refactor sig checking
Save sig OK status in Packet
Fix spot where byte array cache was not used
Do not send NACK 0 for retransmitted SYNs
Remove 1-byte DataHelper.toLong() calls
2023-01-30 13:21:10 -05:00
zzz
ac50eefe07 Tunnels: Improve expl. build success in well-connected routers during congestion
by not using high cap tier. Congestion starts from the top.
Right now, the fastest routers have the worst expl. build success.
This will help correct that.
2023-01-30 12:40:39 -05:00
zzz
bd4415ad5c Blocklist: Don't maintain IPv6 blocklist unless we have an IPv6 address
Don't read in same-country blocklist unless configured or in strict country,
so we don't continue to block when no longer hidden
2023-01-30 11:51:44 -05:00
zzz
86c6800fbd NTCP2: Ensure we publish a "6" address on transition to firewalled
Do not call restartListening() on transition to firewalled
2023-01-30 11:11:48 -05:00
zzz
124ebe9fdf Tunnels: Refactor peer selection
by checking if a peer qualifies when adding, rather than
iterating through the whole netdb to generate an exclusion list at the start.
This was very inefficient and generated needless lookup storms via lookupBeforeDropping()
Same idea for getClosetHopExclude()
Goal is to never iterate through all the known routers, profiles, or connected peers
to select peers for a single tunnel.
Add ExcluderBase and 4 classes for various cases:
Excluder, ClosestHopExcluder, IBGWExcluder, and OBEPExcluder.

Change CSFI.getEstablished() from a Set to a List for efficiency
Improve efficiency of selectActivePeersNotFailingPeers()
by iterating through connected list rather than profiles.
Do not add not-connected peers to exclude set,
which would become huge for hidden routers.

Change getExclude() to shouldExclude()
The exclude set calls shouldExclude() in contains().
Pass the exclude set to ProfileOrganizer.

For client tunnels, do OBEP and IBGW checks at peer selection time,
not afterwards in ConnectChecker, so it doesn't fail at the end in checkTunnel().

Check closest hop when hidden.
Fail-fast for inbound when no connected peers and hidden, do not fall back to non-connected peers.
Should improve startup time for hidden routers.

Use ArraySet for matches to save space
Remove unused selectPeersLocallyUnreachable() and selectPeersRecentlyRejecting()

No peer selection policy changes here.
2023-01-30 08:05:39 -05:00
zzz
8b0cd9e36b Util: Add ArraySet.get() and new constructor 2023-01-29 13:27:51 -05:00
zzz
1e35f940da Util: Comment out main() test 2023-01-29 12:50:54 -05:00
cc00337ec1 pinned alpine base image version 2023-01-29 14:02:54 +01:00
zzz
5d4c173c31 Debug: Give dummy update a version 2023-01-29 07:35:10 -05:00
aac8f217e0 Merge branch 'master' into docker-multiarch 2023-01-28 15:51:22 +01:00
ac4daeb82c changed baseimage to allow for multiarch build (specifically arm64) 2023-01-28 15:47:09 +01:00
zzz
9fd31d014f Reseed test message fix 2023-01-28 07:52:52 -05:00
zzz
bfd7b1a5f5 Tools: Check RI dates and counts in reseed test 2023-01-28 07:43:53 -05:00
zzz
56e00fbe3a Tools: Delete reseed test files before retest 2023-01-28 06:26:08 -05:00
zzz
a27e1393f1 Router: Force the stragglers to rekey 2023-01-27 19:01:11 -05:00
idk
fd68634993 add build.built-by to gitlab override.properties and Dockerfile 2023-01-27 21:30:15 +00:00
zzz
3831348301 Tunnels: Reduce grace period from 120 to 90 sec. 2023-01-27 11:15:07 -05:00
zzz
9cbd7643db Tools: Add CLI reseed test 2023-01-27 10:51:17 -05:00
zzz
4d5a3fc73d Console: Debug page cleanups
Split sections into separate tabs
Clean up VersionAvailable.toString()
Don't limit height of DHT section
2023-01-27 08:01:43 -05:00
zzz
6117d8822e Router: One more conversion to ObjectCounterUnsafe 2023-01-27 07:10:01 -05:00
zzz
886adb12fc Tunnels: Pull now() calls out of loops 2023-01-26 17:04:55 -05:00
zzz
542a51658d i2psnark: Search fixes
Fix JS search when refresh disabled
Fix search cancel when JS disabled
2023-01-26 12:12:35 -05:00
zzz
ee055dbdc0 Console: Add git rev to version info 2023-01-26 10:03:14 -05:00
zzz
33a07f811e Console: Add build date to version info 2023-01-26 09:23:50 -05:00
zzz
2dfe05d682 Console: Comment out disabled non-js summary bar iframe refresh
to save space, included ~50x
Disabled in 2012 for "HTML compliance" reasons
2023-01-26 07:45:06 -05:00
zzz
ad64e9c21e SSU2: Zero out intermediate handshake KDF results in-memory when done
Minor cleanup in est. mgr
2023-01-26 07:13:54 -05:00
zzz
9275c79b39 Console: Add chart of peers in most part. tunnels (advanced) 2023-01-25 12:25:56 -05:00
zzz
8e4e0050c8 Console: Sort webapps.config on save 2023-01-25 11:33:28 -05:00
zzz
87618700b3 Util: New thread-unsafe version of ObjectCounter
for efficiency where thread safety not required
2023-01-25 09:09:02 -05:00
idk
3d88fab782 Merge branch 'docker_font_fix' into 'master'
Install fonts

See merge request i2p-hackers/i2p.i2p!78
2023-01-24 22:46:35 +00:00
zzz
bec1978861 Router: Preliminary support for congestion caps (proposal 162)
Publish based on max tunnels setting only, other limits todo.
Tested on a single router.
Publishing disabled until the next release.
No handling of the caps yet in peer selection or profiling, todo.
2023-01-24 10:47:56 -05:00
zzz
b5bd11ca5a i2psnark standalone: Fix running from outside the directory
Reported by Qubes
ref: http://zzz.i2p/topics/3555
2023-01-23 09:24:01 -05:00
zzz
ee167b6b74 Tunnels: Remove 0 event duration from addRateData() calls 2023-01-22 18:00:28 -05:00
zzz
0af5ea883a bump -4 2023-01-22 10:31:38 -05:00
zzz
9963503ebf i2psnark: Add max files per torrent config
No UI, must edit config file and restart.
ref: http://zzz.i2p/topics/3549

Contains code adapted from I2P+. License:
Permission is granted to upstream to incorporate I2P+ modifications under the license
of the applicable upstream subsystem as specified in LICENSE.txt.
2023-01-22 10:30:58 -05:00
zzz
be5a10194a Build: Fix list of changed files in manifests
Broken in move from mtn to git
Fix some places that were broken even with mtn
2023-01-22 10:08:53 -05:00
zzz
37104e30bf i2psnark: More search CSS and js 2023-01-21 16:38:10 -05:00
zzz
8d019a7275 i2psnark: Search box CSS 2023-01-21 16:00:27 -05:00
bc43249bba Install fonts 2023-01-21 19:57:08 +00:00
zzz
3da4369c96 bump -3 2023-01-21 12:47:05 -05:00
zzz
8bbddfc336 NTCP: NAT fixes part 4
Do not rebind internal port if only SSU external port changed
so "full cone" NAT will work
Log warning if NTCP configured with fixed port different from SSU
2023-01-21 11:51:25 -05:00
zzz
38c839c389 SSU: NAT fixes part 3
Eliminate Symmetric NAT errors for "full cone" NATs with different external port
Separate isPortFixed() states for IPv4 and IPv6
Allow port changes when state is unknown
Require two tests to transition from unknown IPv4 state
Save external port config on change
Don't reset external port config at startup
Add port change event to event log
2023-01-21 11:47:31 -05:00
zzz
b8815fc67b Console: Catch graph error in Docker (Gitlab #383) 2023-01-21 11:13:42 -05:00
zzz
537d6ef0d5 SSU2: Fix initial MTU when SSU1 disabled 2023-01-21 09:36:48 -05:00
zzz
a86ab694a5 SSU2: NAT fixes part 2
Fix rare peer test NPE if we did not set charlie's hash
2023-01-21 08:09:28 -05:00
zzz
9008893308 Console: NAT fixes part 1
Remove ERR- and WARN- prefixes from translated status strings
2023-01-21 07:53:38 -05:00
zzz
b10cf8f698 Build: Add i2psnark-release target 2023-01-19 09:06:58 -05:00
zzz
1b3aed6b6a i2psnark standalone: Add search icon, display full version 2023-01-19 08:51:04 -05:00
zzz
d39d21296f i2psnark: param rename fix, missed one 2023-01-18 12:25:41 -05:00
zzz
0cbbe6297e i2psnark: Rename search param to bypass the XSS filter
Fix encode/decode search param
Copy CSS to non-default themes, not tweaked yet
Add support for shorter nf_ prefix to XSS filter
Remove unneeded float_right, reported by drzed
2023-01-18 12:21:29 -05:00
zzz
1dbd94d52d i2psnark: Search CSS and JS
WIP, more polishing todo
default theme only, others to follow
2023-01-18 11:15:22 -05:00
zzz
d45df857d6 bump -2 2023-01-17 14:59:22 -05:00
zzz
83677f01fb i2psnark: Add basic search box
searches torrent names only
CSS fixups to follow
2023-01-17 14:57:47 -05:00
zzz
5fbf385805 i2psnark: Prep for libtorrent arrival
Use extension version if client not known
Consolidate getAzVersion() calls
Add notes about client identification
2023-01-17 14:50:35 -05:00
zzz
053f261e57 i2ptunnel: Fix typo for SSL outproxy host
for new and existing installs
Reported by Opicaak
2023-01-17 14:32:25 -05:00
zzz
eb03e19f03 Console: Don't say we updated all tunnel pool settings if there weren't any
minor cleanups
2023-01-15 14:08:40 -05:00
zzz
399575aba5 i2ptunnel: Return error message from IRC client on failure to build tunnels
previously just closed the socket
2023-01-15 12:38:00 -05:00
zzz
19e3122f48 i2ptunnel: Return error code from SOCKS client on failure to build tunnels
previously just closed the socket
2023-01-15 11:18:00 -05:00
zzz
acec9b5275 i2ptunnel: Return 503 from HTTP client on failure to build tunnels
previously just closed the socket
2023-01-15 10:37:55 -05:00
zzz
522cf05880 Console: Add netdb search by introducer count 2023-01-15 10:05:20 -05:00
zzz
a3fd28dcf4 i2ptunnel: Interrupt pending client tunnel build when stop button is clicked
Message/log cleanups
2023-01-15 10:02:17 -05:00
zzz
a4220f7bc6 Transport: Add 8080 to ports list
as suggested by drzed
2023-01-15 09:02:35 -05:00
zzz
d6891d4b7a Console: Show smoothed receive BPS for SSU peers
Don't show zero send/receive BPS after 15 sec idle; show smoothed value,
so display isn't mostly zeros.
BPS sorters will now work correctly and totals are more accurate.
Pass now to send/receive BPS methods and BW estimator
Comment out UDPTransport.noteSend()
Fix alignment issue in NTCP peers table
Show 0 instead of 0.00 for zero BPS
Change rounding mode of formatters
2023-01-15 08:17:09 -05:00
zzz
65d99d2082 Build: Provide hints on how to fix it when msgfmt fails 2023-01-15 07:05:55 -05:00
zzz
f3f4cd7a21 Console: Show if data structure is compressible (advanced)
Convert IPv6 addresses to canonical form
2023-01-14 08:08:25 -05:00
zzz
cf82d3a156 Transport: isValidPort() micro-optimization
add i2pd console to list
2023-01-14 07:03:16 -05:00
idk
2ba106e38e use buildI2PSnark rather than pkg as dependency of git-bundle 2023-01-13 20:31:03 +00:00
zzz
c4fd1b610b Router: Simplify published stats values
to be only what stats.i2p needs
Disabled until next release, to preserve dev build anonymity,
tested while enabled
Commented out unsed code
ref: http://zzz.i2p/topics/3515
2023-01-12 15:25:52 -05:00
zzz
841e277180 SAM: Abort tunnel build if control socket closes
Command error handling and message improvements
Implement simple HELP command
bump -1
2023-01-12 13:35:05 -05:00
zzz
0bb9984dfa Util: Add warning about copying router.config to another router 2023-01-12 06:58:51 -05:00
zzz
f814b85a86 Console: Add ability to search netdb for a range of ports
Minor cleanup of dup strings
2023-01-11 13:44:42 -05:00
zzz
904829c1d5 Console: Hide Hidden Services Manager link until TCG is running
Use PortMapper constants to check registration
Reported by lbt
2023-01-11 13:37:29 -05:00
zzz
b2d78e4724 Console: Add service true/false to version info
As proposed at http://zzz.i2p/topics/3520
2023-01-11 13:12:09 -05:00
zzz
34be58962a SSU2: Removed cached bitmasks
Waste of space and probably slower
2023-01-11 13:01:02 -05:00
zzz
fb7cd7e3ef Streaming: now() call consolidation 2023-01-11 12:57:43 -05:00
zzz
e1e65546b8 Build: Add bundle target alias, referenced in some docs
reported by lbt
2023-01-11 12:48:21 -05:00
zzz
a6e8d53b37 Console: Incorporate bionic build patch from previous checkin
Remove patch from debian files
2023-01-11 10:15:12 -05:00
zzz
87fbec3e39 Debian files for 2.1.0
Including bionic build fix
Don't know why focal worked without it
2023-01-11 09:53:37 -05:00
zzz
a5d649ba2d 2.1.0 2023-01-10 09:32:31 -05:00
zzz
1e34738fca SSU: Rewrite/fix previous Java 7 (Android) fix
Update checklist to specify bootclasspath, so these are caught in the future
bump -16-rc
2023-01-08 14:45:17 -05:00
zzz
433340c11b SSU: Fix NPE handling SSU1 peer test msg 7
Reported by drzed
2023-01-08 13:04:23 -05:00
zzz
d9a75a5afc AppArmor: Allow classes.jsa in other locations
Remove dup line
Reported/tested by lbt
2023-01-08 13:04:23 -05:00
idk
43090cbc32 put must be followed by get in order to contain the current key, UDPTransport 2023-01-08 00:42:32 +00:00
idk
e70229140b use a containsKey()+put instead of putIfAbsent because putIfAbsent is not present in Java 8, thereby breaking Maven builds 2023-01-08 00:28:26 +00:00
zzz
b4fb8ba2c9 bump for review -15-rc 2023-01-06 14:45:01 -05:00
zzz
5e23488a96 Blocklist update 2023-01-06 14:39:47 -05:00
zzz
9adbef3f27 Pull translations 2023-01-06 14:38:46 -05:00
zzz
09a97c31fc Reseed: Exclude SSU2 with introducers from local reseed file 2023-01-04 08:52:57 -05:00
zzz
76d8d9110a Console: Add link to sort netdb country chart by count 2023-01-03 10:10:35 -05:00
zzz
67c09c69f0 Console: Replace triangle icons with ** on the new peers tab
Can't get the icons to look nice
2023-01-03 09:29:32 -05:00
zzz
513a33abe6 Profiles: Capacity calculator minor cleanup 2023-01-02 16:44:31 -05:00
zzz
b313817399 Update annotation of tunnel reject codes 2023-01-02 16:21:47 -05:00
idk
0f7dca99d1 don't attempt to pass windows flags to cc when building jbigi, jcpuid on non-Windows platforms 2023-01-02 16:59:23 +00:00
zzz
c0891c4a4c Build: Add mockito to core javadocs path to prevent warnings in mavenCentral.deps task 2023-01-02 09:54:10 -05:00
idk
a94382458e set apart windows flags including JAVA_HOME in case the path contains a space 2023-01-02 02:28:44 +00:00
idk
6856969d01 add quotes around JAVA_HOME on windows so that it can use a JAVA_HOME that exists in %ProgramFiles% 2023-01-01 23:48:57 +00:00
idk
e4fba64fc1 Quote and shellcheck the jbigi.jar build scripts in order to fix errors when building jbigi jars on Windows 2023-01-01 23:09:10 +00:00
idk
0c4fd2dbb1 quote JAVA_HOME during jbigi build 2023-01-01 22:22:03 +00:00
idk
6ad90ca38a Change the gmp mirror so that when you try to build a jbigi.jar it does not fail. Can be changed back by editing core/c/jbigi/download_gmp.sh 2023-01-01 22:05:00 +00:00
zzz
edfc9b1454 I2CP: Reduce session limit to 50
Set limit to 0 if vmCommSystem
i2ptunnel: Do not retry if session limit exceeded
2023-01-01 13:08:25 -05:00
zzz
6bcc866f38 GeoIP 2023-01
bump BuildTime
2023-01-01 11:21:31 -05:00
zzz
04d0ecc1a7 i2psnark: Prep for JS DnD (Gitlab MR !73)
Strip file:// in create form for non-JS DnD
Add IDs to relevant elements for access by JS
JS to follow after further testing
2023-01-01 10:46:07 -05:00
zzz
2ad33706e3 i2psnark: Add missing button icons (dark/light themes) 2023-01-01 10:41:59 -05:00
zzz
952d9fd471 Build: Add jsdoc target
Doesn't really do much yet because none of our js has jsdocs
2023-01-01 10:40:33 -05:00
zzz
be7e213736 Pull translations from tx
preliminary in case TX API v2 stops working
2022-12-31 15:08:09 -05:00
zzz
5818f8e26d bump -14-rc 2022-12-31 14:10:58 -05:00
zzz
6b1859421f i2psnark: Throttle torrent startup to prevent OOMs
for a large number torrents
ref: http://zzz.i2p/topics/3475
2022-12-31 14:10:06 -05:00
zzz
4af2122176 Console: Change color palette for graph rendering on dark theme
to improve text readability.
Remove post-render CSS modification of graph images

Contains code adapted from I2P+. License:
Permission is granted to upstream to incorporate I2P+ modifications under the license
of the applicable upstream subsystem as specified in LICENSE.txt.
2022-12-31 14:02:27 -05:00
zzz
ec8d0a2f61 Console: Fix dark theme CSS color tweak affecting more than the intended inbound.png and outbound.png images 2022-12-31 08:37:23 -05:00
zzz
0792526c16 Console: Move hide/show news buttons back to the right (light theme)
unintended side-effect of CSS tweak in last release
2022-12-31 08:07:03 -05:00
zzz
b607304f7b i2psnark: Update tracker list after editing torrent (Gitlab #380) 2022-12-31 07:35:25 -05:00
zzz
f2940146c4 Util: Add methods to convert IPv6 addresses to canonical RFC 5952 strings
Moved from NetDbRenderer
Use in CLI only for now
CLI and conversion micro-optimizations
2022-12-30 06:21:40 -05:00
zzz
0d97dbf534 Tunnels: Add another tier for client tunnel build limiter
only if configured for 6 or more tunnels
2022-12-30 05:50:09 -05:00
zzz
f7d134066d UPnP: Catch AssertionError when closing SSDP multicast socket
Reported on Windows 10
ref: http://zzz.i2p/topics/3500
2022-12-30 05:33:10 -05:00
zzz
dcb8009c63 Tunnels: Limit requested client tunnels during congestion
This will probably also reduce builds at startup.
Limits may require tweaks after further testing.
2022-12-29 12:07:48 -05:00
zzz
32ffd056a1 Throttle: Don't parse default values every time 2022-12-26 14:47:33 -05:00
zzz
b5ce70955b bump -12 2022-12-26 14:15:30 -05:00
zzz
2b8d3477ce SSU1: Symmetric NAT detection fixes
Never let SSU1 test result be symmetric NAT, it's probably charlie
Don't use SSU1 test if we think we are symmetric NAT
Cleanup two places to call new fail() method
2022-12-26 14:13:43 -05:00
zzz
d655ad206c SSU: Fix NPE when SSU2 disabled 2022-12-26 07:21:49 -05:00
zzz
d16aaab35f Router: Don't blocklist our own IP 2022-12-26 07:13:10 -05:00
zzz
ba0fee151b SSU2: Redesign peer test symmetric NAT detection
- Send msg 6 even if msg 5 is not received, after a short delay, to detect symmetric NAT
- Prevent test result of symmetric NAT if Charlie is the one that appears to be symmetric natted.
- Mark if Charlie unreachable if apparently symmetric natted.
- Do not treat a different IP but same port as symmetric NAT
- Increase msg 6 retransmission frequency
- Ignore msg 5 received after sending msg 6
- Call externalAddressReceived() on reception of msg 7
- Add javadoc for testComplete() state machine

Most changes only affect SSU2; some SSU1 changes to follow.

ref: http://zzz.i2p/topics/3489
2022-12-26 06:14:55 -05:00
zzz
2ce2b894b7 SSU2: Minor cleanups
Rename isSnatted() to isSymNatted()
Minor rewrite in PeerState2.gotTermination()
Remove dead peer when pinging fails in intro manager
Cleanup ip length check in externalAddressReceived()
Log tweaks
2022-12-26 05:55:47 -05:00
zzz
d9979b8f97 Console: Sort tunnels by name on /tunnels, /configtunnels, /i2ptunnel 2022-12-26 05:38:35 -05:00
zzz
2d633a0bfd SSU2: Don't replace previous destroyed peer in the cache
kill the new one instead
2022-12-23 16:39:30 -05:00
zzz
fdbdd10a89 SSU2: Refactor in-session PacketBuilder2 methods to throw IOE
Primarily for Peer Test and Relay, so the test or relay can be aborted.
Previously, sends on a dead PeerState2 were not detected or prevented.
Catch IOE throughout where necessary around all build() calls.
Add a fail() method in PeerTestManager
2022-12-23 15:47:09 -05:00
zzz
a6f7f9ec12 SSU1 peer test log level reduction
SSU2 peer test state add alice IP/port back to logging, needed for debugging
2022-12-23 14:29:19 -05:00
zzz
3dd242c1c7 SSU2: Peer test with our current address, not our address from the Bob session,
which could be different, esp. with temporary IPv6 addresses.
Could result in an erroneous SNAT result.
Add logging if different when starting test.
Check address block received in msg 6, use in logging only for now
Add logging of address block received in msg 7 if different than expected (possible SNAT)
Remove isValidPort() check in msg 5 recently added, already checked in code above
Add notes about possible externalAddressReceived() calls from peer test
Add notes about our address in PeerState2
2022-12-23 09:04:09 -05:00
zzz
defe514a31 SSU2: Enforce that address block is present in session created
Simplify check in EstablishmentManager.sendConfirmation(), we don't need to validate
RemoteHostId IP again, we did it before connecting.
Add check that received port is >= 1024.
2022-12-23 07:42:50 -05:00
zzz
31d0bc33d6 Blocklist: Don't add IPv4 addresses permanently banned to the transient list
Already hidden on /configpeers, so don't waste the space
2022-12-23 07:36:22 -05:00
zzz
3580430005 bump -11 2022-12-22 09:59:22 -05:00
zzz
ac799b7ffa SSU2: Further restrict states when we will be a peer test Charlie
and also use those states for when to publish B cap
2022-12-22 09:50:39 -05:00
zzz
4c8e0149f3 SSU2: Peer Test fixes
Check for dup msg 5
Store the time msg 6 sent
Ignore msg 5 after sending msg 6
Ignore msg 7 before receiving msg 4
Validate ip/port in msg 7
Update rcv times for dups
Log tweaks
2022-12-22 08:38:08 -05:00
zzz
150a68a3e0 SSU: Peer Test scheduling fixes
At startup, and for IPv6 so it doesn't lose out to IPv4
PeerTestEvent logging cleanup
2022-12-22 08:20:32 -05:00
zzz
321a21ae9b Util: Add SimpleTimer2.TimedEvent.toString()
to clean up timer crash messages
2022-12-22 07:27:04 -05:00
zzz
d73be206e5 SSU2: Remove ENABLE_xxx feature flags used in early development 2022-12-21 16:19:30 -05:00
zzz
c521d75ef7 CLI: List available commands more compactly 2022-12-21 09:42:57 -05:00
zzz
479ccd57df CLI: Add a "help" command 2022-12-21 07:36:03 -05:00
zzz
4e174df746 Router: Add IPv6 analysis to Sybil checker
Add to console sybil page
Fix links for IPs close to us
Header and reason tweaks
Increase verified family credit
2022-12-21 07:00:38 -05:00
zzz
a71f62c566 Router: Add IPv6 localhost and wildcard to blocklist 2022-12-20 15:12:12 -05:00
zzz
5ddb70eaea Util: Rewrite Addresses.getIPOnly() for 10x speedup 2022-12-20 15:09:10 -05:00
zzz
fd58472cc5 Sybil: Pass reason to the blocklist, for logging only 2022-12-20 14:54:35 -05:00
zzz
e9c74c7c45 bump -10 2022-12-20 08:54:55 -05:00
zzz
903477e905 Change calls from Addresses.getIP() to Addresses.getIPOnly() for peer IPs
getIPOnly() is more efficient for pure IP addresses (no hostnames)
2022-12-20 08:51:29 -05:00
zzz
fd2af4d89c log typo 2022-12-20 08:46:04 -05:00
zzz
ccb01ccf7f SSU2: Bundle RI with peer test messages 2 and 4 if possible
similar to previous checkin for relay intro
2022-12-20 08:44:55 -05:00
zzz
4d65024977 SSU2: Peer test improvements
- Return OK as Alice when only receiving msg 5, unless snatted (SSU 1 also)
- Allow and handle firewalled Charlie as Alice
- Only create peer test data once as Alice
- Store test status and send-to-Alice time in test state to support retransmission
- Don't delete state after sending msg 4 as Bob, for possible retransmission
- Check for IP mismatch from Charlie as Alice, abort test and assume good
- Check for port mismatch from Charlie as Alice and validate
- Skip unroutable addresses when searching through RI for the right one
- Respond to retransmitted msg 1 as Bob
- Respond to retransmitted msg 2 as Charlie
- Update Charlie timer to retransmit msg 5
- Only send Charlie RI to Alice (as Bob) if test was accepted
- Convert timers to SimpleTimer2 (SSU 1 also)
- Log tweaks
2022-12-20 06:12:38 -05:00
zzz
72e2161924 CLI: Add NewsHandler CLI to fetch news from servers 2022-12-19 10:09:58 -05:00
zzz
7bd220adfc Console: Fix IPv6 searches for compressed/expanded address format 2022-12-19 08:35:15 -05:00
zzz
6092e35b65 Router: Time initialization fixes and cleanups
Most changes are relevant only if NTP is disabled or failed at startup.

- Require two peers that agree for transports to initialize time
- Briefly ban skewed peer when not initialized, so another peer will be the second sample
- Allow SSU2 to initialize time even for large skews
- Do not allow NTCP2 inbound to initialize time for large skews
- Disable SSU1 time initialization when SSU2 is enabled
- When SSU2 is disabled, allow SSU1 time initialization even for large skews
- Don't adjust to large inbound NTCP2 skews when not initialized
- Round time sent in NTCP2 DateTime block
- Adjust SSU2 skew for RTT
- Don't sort by absolute skew on SSU /peers tab so we can find median
- Only call System.currentTimeMillis() once in RouterClock.setOffset()
- Log tweaks
2022-12-19 06:45:30 -05:00
zzz
51d567ecb4 SSU2: Compress and bundle Alice RI with relay intro
as Bob, to send to Charlie, if it fits.
Otherwise, delay sending relay intro, so the RI DSM gets there first.
This makes relay faster and more reliable.
Periodically clean _nonceToAlice
Log tweaks
2022-12-18 07:06:52 -05:00
zzz
33f9bd8156 Transport: Fix NPE at shutdown caused by _currentAddresses change 2022-12-17 13:54:37 -05:00
zzz
73d226e7d7 bump -9 2022-12-17 11:59:34 -05:00
zzz
f26c616fdc SSU: Rewrite isTooClose()
to use actual local IP rather than iterating through getCurrentAddresses(),
more efficient and works even when firewalled
2022-12-17 11:56:12 -05:00
zzz
db459de0c6 Console: Fix UDP disabled error when SSU 1 disabled 2022-12-17 10:10:06 -05:00
zzz
ef542d8898 SSU2: split() and send in-session termination after certain session confirmed errors
containing a specific termination reason,
and create a post-termination handler directly from IES2 for any additional packets.
Don't do this unless we get intro key and validate static key in RI.
Don't blocklist the IP for a banned router unless we have validated
the static key to prevent spoofing.
Don't queue data packet after failure
Don't send additional terminations after receiving termination ack
2022-12-17 10:04:18 -05:00
zzz
58e95dc353 SSU: Don't call test forceRunSoon() in addPeer() to prevent test thrashing.
Also removes the rebuildIfNecessary() call claimed to be removed in previous checkin.
Since we aren't thrashing any more, reschedule test after UNKNOWN results,
with the delay depending on current state.
log tweaks
2022-12-17 09:41:41 -05:00
zzz
cdc61ee6ea Add change required for previous commit 2022-12-17 09:36:32 -05:00
zzz
2d2c8fdc96 SSU: Don't call rebuildIfNecessary() from dropPeer() and addPeer() every time
to prevent thrashing.
Only rebuild in dropPeer() if the peer was a published introducer.
Only rebuild in addPeer() if the peer offered to relay and we need introducers.
2022-12-17 09:33:47 -05:00
zzz
d9bb3d0b96 SSU2: log tweaks 2022-12-17 09:29:09 -05:00
zzz
05d60d70e2 SSU2: Immediately remove establish state from EstablishmentManager on fatal error
to free up space and prevent problems handling additional packets
2022-12-17 09:17:55 -05:00
zzz
67d20d4af5 Transport: Change _currentAddresses from COWAL to standard ArrayList and lock
COWAL caused problems because replaceAddress() was removing the wrong address,
since RouterAddress.equals() does not compare caps, so empty '4' and '6' addresses would be equal.
So we could temporarily end up with multiple v4/v6 addresses.
COWAL wasn't really buying us anything anyway.

Fix removeAddress() that called the listener even if no change.
2022-12-17 08:43:25 -05:00
zzz
95bf6be670 SSU2: PacketHandler log tweaks 2022-12-16 08:40:36 -05:00
zzz
8d132a0ba7 Console: Make the /configlogging overrides box bigger if necessary (advanced only) 2022-12-16 06:59:25 -05:00
zzz
bbbc127193 bump -8 2022-12-15 15:08:58 -05:00
zzz
21c7ad4a89 SSU2: Enhance PeerTestState logging
avoid dup previous charlies on list
2022-12-15 15:05:10 -05:00
zzz
af5456b846 add javadocs for banlist return values 2022-12-15 15:03:06 -05:00
zzz
2c955e300f SSU: Check banlist after session confirmed
blocklist IP if banned
2022-12-15 15:01:52 -05:00
zzz
138d674662 SSU2: Reduce log level of 'new ack not found' 2022-12-15 14:59:46 -05:00
zzz
9b0ace19c1 Router: Change transient IPv4 blocklist to LHMCache
Reduce transient blocklist sizes if slow
Improve logging of block source
2022-12-15 14:57:20 -05:00
zzz
3eb4083cb3 SSU2: Fix retransmission of session confirmed
Was setting packet length to number of packets.
Add check and log in UDPSender
Add notes where length is checked
2022-12-15 14:50:38 -05:00
zzz
799944b23b SSU2: Don't attempt to connect to ourselves as an introducer
reported by drzed
2022-12-15 14:17:24 -05:00
zzz
8bda9bf804 SSU2: Update activity on path challenge/response 2022-12-14 17:23:31 -05:00
zzz
232586c709 bump -7 2022-12-14 16:11:16 -05:00
zzz
32a9f47375 Tunnels: Reduce log level of can't-decrypt build messages 2022-12-14 16:09:30 -05:00
zzz
9d50e4d5ed NTCP: Log source of clock adjustment at startup 2022-12-14 14:58:44 -05:00
zzz
f50f55bb54 Merge branch 'fix/chacha' into 'master'
Fix wrong arguments order in ChaCha20 encrypt

See merge request i2p-hackers/i2p.i2p!72

Broken in 1.8.0. Almost certainly broke LS2 encrypted leaseset, but not yet tested.
Did not break anything else. I tested that this fix didn't break anything.
2022-12-14 19:54:10 +00:00
zzz
e71ba76d98 SSU2: Catch "shift too big" IAE from acked bitfield while sending termination
Add preliminary code to terminate session before
there are too many unacked messages to cause the IAE
(untested)
log tweaks

reported by drzed
2022-12-14 14:42:12 -05:00
zzz
4aa6d15933 SSU2: Another consolidation of keys for building retry 2022-12-14 14:35:12 -05:00
zzz
980276b966 SSU2: Preliminary fixes for handling retransmitted retries
and storing session request packet for retransmission
Previously, we would regenerate handshake state on every retry,
and we would not re-save the new session request packet after a retry.
Check for wrong token received in additional retries.
2022-12-14 14:32:08 -05:00
zzz
cf32b7844b SSU2: Reject peer test or relay as Charlie if snatted
remove dup peer test 6 logging
2022-12-14 14:23:22 -05:00
zzz
a112c3a1ed SSU2: Consolidate dup encrypt header keys in IES2/OES2 2022-12-14 14:15:56 -05:00
zzz
9f9a88cf32 SSU2: Drop short session request messages in packet handler
both before and after retry, before passing to IES2
log tweaks
2022-12-14 14:06:18 -05:00
zzz
28a79def5a NTCP: Fix rare NPE sending termination
reported by drzed
2022-12-14 10:51:34 -05:00
zzz
4443fb464a Router: Add stack trace to log error
to catch the message-to-ourselves culprit
2022-12-13 16:27:48 -05:00
zzz
08c31aa6f6 Tunnels: Tighten the hop throttle more
after further testing, thx obscuratus + drzed
2022-12-13 12:39:02 -05:00
a393912213 Fix ChaCha20::encrypt 2022-12-14 00:53:52 +08:00
zzz
20f414c7fa SSU: Don't publish B cap when snatted
as suggested by orignal
2022-12-13 06:27:41 -05:00
zzz
580f954254 SSU2 Peer Test: Bob asks another Charlie on rejection 2022-12-12 12:22:22 -05:00
zzz
3472871e35 SSU: now() call reduction 2022-12-12 05:53:40 -05:00
zzz
803265660e SSU2: Destroy PS2 cipher states when done 2022-12-11 15:12:15 -05:00
zzz
4a4ca0cdf0 SSU2: Handle retransmitted token request
and resend retry.
Previously failed to decrypt it.
2022-12-11 15:11:12 -05:00
zzz
415e31e560 SSU2: Allow termination in retry
Handle skew reason in termination, possibly ban peer
Adjust clock at startup when terminated with skew reason
Don't send immediate termination to a too-close address
Javadoc fixes
Log tweaks
2022-12-11 11:35:31 -05:00
zzz
dc400c652a SSU2: Send termination on inbound session/token request
(rate limited) at conn limits or when alice is banned.
Process retry payload even if token is 0, to get termination reason
Wait longer for session request after retry, allowing for at least 2 retransmissions, to reduce IES2 failures
Ban peer if he bans us in retry
Remove unused writePayload()
Javadoc fixes
Log tweaks
2022-12-11 09:18:51 -05:00
zzz
897ea797cb Graphs: Fix RRD time skew handling
rrd4j throws different exception than jrobin did
2022-12-10 17:29:07 -05:00
zzz
01618c6202 SSU: Update activity timestamps for relay and peer test messages
Javadoc fixes
Log tweaks
2022-12-10 13:00:33 -05:00
zzz
337fd36633 SSU2: Peer Test fixes
Don't set AlicePortFromCharlie in msg 5, should be msg 7 only
Assume success if no address block in msg 7 (i2pd)
Require introducers for SNAT states
Don't log no charlie port if no IP
Add some TODO notes
Log tweaks
2022-12-10 12:11:59 -05:00
zzz
75e23fd1e3 Tunnels: Tighten the hop throttle
drop sooner when over limit to better protect the network
penalize throttled peers in profile to discourage use in our tunnels
2022-12-09 09:23:45 -05:00
zzz
944dff0aa7 Console: Add peer IP/port to transport tab tooltips (advanced only) 2022-12-09 07:14:38 -05:00
zzz
7425484b55 SSU: Disable SSU1 option, part 6 - don't bid on SSU1 addresses 2022-12-09 06:37:19 -05:00
zzz
19269dbaf3 SSU2: Fix IAE creating ACK block
by removing unneeded 255 max ranges check in constructor.
Higher limit of 512 is enforced in PacketBuilder2.
Reported by drzed
2022-12-08 08:01:08 -05:00
zzz
59afc44c8a Console: Show "--" for values < 1 on profiles tabs 2022-12-07 17:35:14 -05:00
zzz
8ada237bfa Console: Remove "Standard" for peers and "unknown" for caps on profiles tabs 2022-12-07 17:27:50 -05:00
zzz
a77f016288 Console: Show "--" for 0% fail rate on floodfill tab 2022-12-07 17:04:38 -05:00
zzz
5a6f92bbbf Console: Change "integrated" to "floodfill" in summary bar 2022-12-07 17:01:02 -05:00
zzz
2e6a4930a0 Console: Fallback to receive MTU on MTU sort in SSU tab 2022-12-07 16:57:56 -05:00
zzz
855bb2af33 SSU2: Post-termination handler part 9
Cancel timers on eviction from cache
2022-12-07 15:55:21 -05:00
zzz
55e2fae135 SSU2: Post-termination handler part 8
Implement termination retransmission
Scale size of handler cache based on max conns
Kill handler sooner once we get an ack
Javadoc fixes
2022-12-07 10:19:18 -05:00
zzz
55f2d782ce SSU2: Post-termination handler part 7
Kill handlers at shutdown
2022-12-06 13:06:37 -05:00
zzz
41e05c8135 SSU2: Token improvements part 2
Don't send tokens in the handshake, now that we have a handler
to process tokens received in the termination ack
2022-12-06 12:52:43 -05:00
zzz
7fdd3d1711 SSU2: Post-termination handler part 6 WIP
Add the handler
2022-12-06 12:45:09 -05:00
zzz
809f927219 SSU2: Post-termination handler part 5 WIP
Don't create a new inbound token if we have one that's still good,
for when the handler retransmits terminations
2022-12-06 12:30:46 -05:00
zzz
ad18c98330 SSU2: Post-termination handler part 4 WIP
Save destroy reason in PeerState2
Add PeerState2 methods to get data for new handler
Log when token received
2022-12-06 12:18:56 -05:00
zzz
2451ea31bb SSU2: Post-termination handler part 3 WIP
PacketBuilder2 takes SSU2Sender
Don't check session lifetime or router shutdown to send token with termination
2022-12-06 12:14:16 -05:00
zzz
2e817416d5 SSU2: Post-termination handler part 2 WIP
PeerState2 implements SSU2Sender
2022-12-06 12:09:00 -05:00
zzz
0fd6c672d3 SSU2: Post-termination handler part 1 WIP
Add interface to go over PeerState2 and the new handler
2022-12-06 11:45:33 -05:00
zzz
3e4014a6f6 Debian: Change i2p-doc priority from extra to optional
per Debian manual, extra is deprecated and means the same thing as optional
https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities
2022-12-05 09:12:47 -05:00
zzz
706cd5a129 SSU2: Token improvements and fixes part 1
- Set cache size based on connection limit
- Track average inbound cache eviction time
- Set inbound expiration based on cache time
- Reduce max inbound expiration
- Fix saving inbound token sent after relay response or hole punch
- Dont send or save tokens if we are symmetric natted
- Sort persisted tokens by expiration so they are expired in correct order on reload
- Periodically expire tokens from cache
- Add getters to Token class
- Add missing case IPV4_SNAT_IPV6_UNKNOWN to EnumSets
2022-12-04 10:04:18 -05:00
zzz
974ffabd18 Debian changelog for 2.0.0-2ubuntu1 fix (gitlab #376) 2022-12-02 15:50:24 -05:00
zzz
d632e08386 Debian: Fix stray char in links file causing symlinks in / (gitlab #376) 2022-12-02 13:20:23 -05:00
zzz
5e623a349c Console: Hide totals row on /peers status tab if only one transport 2022-12-02 10:01:48 -05:00
zzz
8e7c8cab48 SSU: Disable SSU1 option, part 5 WIP - more MTU fixes 2022-12-02 09:15:28 -05:00
zzz
1eee60c0ce SSU: Disable SSU1 option, part 4 WIP - MTU fixes 2022-12-02 08:13:26 -05:00
zzz
1650ce35d0 SSU: Disable SSU1 option, part 3 WIP - NPE fixes 2022-12-01 17:27:19 -05:00
zzz
bdad71bd08 SSU: Disable SSU1 option, part 2 WIP
- Null out SSU1 things
- Don't publish SSU1 intro key
- Use all introducer slots for SSU2
2022-12-01 16:20:33 -05:00
zzz
2c460e095d default true 2022-12-01 10:47:01 -05:00
zzz
1b6ece965c Console: Hide SSU1 row on /peers status tab if disabled 2022-12-01 08:25:37 -05:00
zzz
d0cd620364 UDP: Add option to disable SSU 1 - Part 1 - WIP
More todo, do not attempt until feature is completed
2022-11-30 16:05:38 -05:00
zzz
f8e0ee65f2 i2ptunnel: Change enc type defaults
ECIES (ratchet) introduced about 4 years ago, and we are still defaulting to both ECIES and ElG in most places.

There are four cases:

- New install: $I2P/i2ptunnel.config as shipped
- New tunnel: i2ptunnel code sets default
- Existing tunnel, no enc type config: i2ptunnel code sets default
- Existing tunnel, config changed and saved via UI in last 4 years: Setting as in config file

Changes:

- New install: Change eepsite and IRC client to ECIES-only; shared clients remains both
- New tunnel: Change from both to ECIES-only
- Existing tunnel, no enc type config: Change servers to ECIES-only; clients remain both
- Existing tunnel with enc type config: No defaults, no change
2022-11-28 09:38:34 -05:00
zzz
f67b62a3a1 javadoc typo 2022-11-28 07:34:24 -05:00
zzz
6096fc993c SSU: Reduce log level on SSU1 intro slot, normal if it's a SSU2 slot 2022-11-28 07:32:08 -05:00
zzz
6b44254c16 Console: ConfigTunnels backend minor cleanup 2022-11-28 07:29:58 -05:00
zzz
b60be22754 Util: Add path length constraint = 0 to selfsigned certs 2022-11-28 07:15:19 -05:00
zzz
10b23915f1 i2ptunnel: Change default POP tunnel name to match the hostname 2022-11-26 12:44:09 -05:00
zzz
cb5d7f1f8d i2ptunnel: Fix SOCKS outproxy port configuration after testing
log tweaks
2022-11-26 10:54:22 -05:00
zzz
dfe36b64a5 Util: Fast check for random nextInt(1) and nextLong(1)
Document differences from Java's random for n=0
Entropy harvester cleanups, we're not going to add a factory as jrandom implied.
2022-11-26 09:36:30 -05:00
zzz
cb5be9530a SSU2: Avoid rare NPE handling apparent session confirmed without inbound state
reported by drzed
2022-11-26 09:31:31 -05:00
zzz
3d54dea3dd SSU: Don't build a 4 cap address at startup if configured for IPv6-only 2022-11-26 09:27:44 -05:00
zzz
d726737b23 Console: Hide IPv4/v6 columns on /peers status tab
if disabled or no address
2022-11-26 09:13:09 -05:00
zzz
d9a9c17d02 i2ptunnel: Allow IRCv3 ACCOUNT and CHGHOST through the filter 2022-11-25 10:49:12 -05:00
zzz
84f8506912 Profiles: Don't let one corrupt file kill the loader thread
Name the loader thread
Reported by Qubes
ref: http://zzz.i2p/topics/3469
2022-11-25 08:30:41 -05:00
zzz
c2efb40b62 Console: Tag some /netdb strings that are already tagged elsewhere 2022-11-24 13:42:41 -05:00
zzz
cae522f90b Console, i2psnark standalone: Fix UI configuration of Argentinan Spanish
Add partial Danish translation for i2psnark
Enable zh_TW UI configuration for i2psnark standalone
2022-11-24 12:41:21 -05:00
zzz
d036993b23 i2ptunnel: Outproxy type config UI HTML fixup
reported by drzed
2022-11-24 07:39:08 -05:00
zzz
21a90fc2ec Tunnels: Adjust expiration job start if default reject time overridden by config
reported by drzed
2022-11-23 17:51:18 -05:00
zzz
17aa96ce09 Console: Add LS lookup to search form 2022-11-23 17:12:47 -05:00
zzz
d82e2fe5ac bump -1 2022-11-23 12:24:29 -05:00
zzz
965f84bbfa Console: Add status and banned tabs to /peers (WIP)
Status tab now the default
2022-11-23 12:23:17 -05:00
zzz
a825949a8a i2ptunnel: Fix log message on config migration 2022-11-23 12:10:21 -05:00
zzz
6b2bbda02a SAM: Make enough space for dests with certs without realloc 2022-11-23 12:08:11 -05:00
zzz
495d91193c i2ptunnel: SOCKS 5 tunnel improvements and torsocks support
- Add support for Tor RESOLVE extension by caching and returning fake IP
- Handle user/pw when not required to support Tor stream isolation
  (not really isolating, just handling the authentication)
- Fix user/pw authentication
- Handle outproxy config changes after start
- Support CONNECT outproxies
- Add config UI for outproxy type
- Enable IPv6 (untested)
- Support outproxy config with :port (untested)
- Various cleanups

Further testing required
2022-11-23 12:03:08 -05:00
zzz
50ee30b133 Router: KeysAndCert compressible padding (Proposal 161, Gitlab MR !66)
Update some KeysAndCert and PKF debug output

ref: http://zzz.i2p/topics/3279

Replaces the 256-byte ElG key in dests with padding.
Make all padding in dests and router identities a repeating random 32-byte pattern.

This will make gzipped dests and router identities be much smaller:
Dests: appx. 320 bytes smaller (82% reduction)
RIs: appx. 288 bytes smaller (74% reduction)

Expected to primarily benefit database store messages and streaming SYNs.
Does not rekey or affect existing destinations or router identities.
Testers running this patch may be identifiable via transient destinations.
New installs with this patch will be identifiable via router identities.

This also will significantly speed up Destination creation as
we will no longer generate an ElG keypair.

Tested for several months.
2022-11-23 11:49:00 -05:00
zzz
c9ea1e1a22 SSU2: Increase Session Created max padding
to possibly make protocol identification harder
Preliminary; final value TBD.
2022-11-23 09:58:04 -05:00
zzz
98477eef9f SSU: Remove unneeded old queue latency check in UDPSender
as the queue is CoDel already
reported by drzed
2022-11-23 09:53:09 -05:00
zzz
0d571a5565 Build: Add debcheckpatch to release targets 2022-11-23 09:46:43 -05:00
zzz
dae60e5387 CLI: Sort MTU output by address 2022-11-23 09:45:30 -05:00
zzz
66567bc618 Console: Change mtn tunnel in help FAQ to git 2022-11-23 09:41:14 -05:00
zzz
a40adc5465 Crypto: Don't use AccessController in I2PProvider, deprecated as of Java 17
ref:
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/security/AccessController.html
2022-11-23 09:36:39 -05:00
zzz
5d259efdd8 Console: /configlogging fixes
Add UI for enabling log compression (requires routerconsole.advanced)
Don't save and display override changed message unless overrides changed
Only call ctx.logManager() once in helper/handler
2022-11-23 09:32:08 -05:00
zzz
fb14907fa8 Console: Remove brackets on /debug update and app manager sections and other cleanups for readability 2022-11-23 09:06:01 -05:00
zzz
77bf7f1658 Console: Dark theme banlist margin fix 2022-11-23 08:45:09 -05:00
zzz
eb5b18ed23 SusiDNS: Fix off-by-one in next page last item number 2022-11-23 08:43:03 -05:00
zzz
8fe9c487d3 Build: Windows script updates for 2.x.x 2022-11-22 13:26:04 -05:00
zzz
9b097da22f Debian files and doc updates for 2.0.0 2022-11-22 13:24:54 -05:00
zzz
3d4909381c Build fix for 2.x.x versions 2022-11-21 13:03:54 -05:00
zzz
8d1d9a020f 2.0.0 2022-11-21 13:00:21 -05:00
zzz
52adc9dc16 Pull translations from transifex 2022-11-18 13:45:25 -05:00
idk
f02bf9b72b quote %JAVA% in eepget.bat script on Windows to prevent paths from splitting. Closes 31 on i2p.www, which was mis-filed 2022-11-17 22:07:55 -05:00
idk
907e649647 update Docker.md to reflect safe defaults, close #374 2022-11-14 23:51:12 -05:00
idk
da17c8df52 Merge branch 'i2p.i2p-31337-master-patch-36622' into 'master'
Allow passing the IP address where the router console is reachable when running a Docker container

See merge request i2p-hackers/i2p.i2p!68
2022-11-14 18:55:22 +00:00
idk
d4155625e4 Allow passing the IP address where the router console is reachable when running a Docker container 2022-11-14 18:55:21 +00:00
zzz
114694434c SAM: Change default nickname for primary sessions 2022-11-12 17:00:11 -05:00
zzz
e54f5ffadd i2ptunnel: Fix IRC USER filtering
Wasn't passing through user and realname fields
Pass through RFC 2812 mode field if present
reported by RN
2022-11-12 15:26:27 -05:00
zzz
7b75ee5a0a SAM: Add warning at startup if not bound to localhost 2022-11-09 10:45:53 -05:00
zzz
d435e44e5f Update Debian doc 2022-11-09 10:37:20 -05:00
zzz
109402cea5 Refresh Debian patches 2022-11-09 10:36:34 -05:00
zzz
73cde7abba Systray: Javadoc fix, make new method private 2022-11-09 10:30:49 -05:00
zzz
2f3615e001 poupdate-source 2022-11-09 08:30:59 -05:00
idk
524b2ab417 Merge branch 'edge-registry-query' into 'master'
change registry query from retrieiving iexplore.exe to edge.exe

See merge request i2p-hackers/i2p.i2p!70
2022-11-07 02:44:16 +00:00
idk
d43c9d047b change registry query from retrieiving iexplore.exe to edge.exe 2022-11-07 02:44:15 +00:00
zzz
d774b63d83 Drop muwire from console home page 2022-11-06 11:38:18 -05:00
zzz
b54eb9b4d5 SSU: Temporarily ban ip/port after inbound handshake failure 2022-11-01 11:55:20 -04:00
zzz
5947275aae SSU2: Prep for more padding in handshake 2022-11-01 09:25:44 -04:00
zzz
f3f669dc2e SSU2: Fail IES2 on all session request after retry errors
Don't hexdump for RI errors
Don't throw ISE when sending 2nd retry
2022-11-01 09:21:09 -04:00
zzz
ddd6a37507 SSU: Prefer UDP in China
Don't exceed conn limit even when preference is always
2022-11-01 09:06:50 -04:00
zzz
37e93f6097 GeoIP 2022-11-01 2022-11-01 08:42:21 -04:00
idk
1e5a69a80b Swap old trac wiki with new mediawiki wiki 2022-10-29 10:22:40 -04:00
zzz
e12b3c697d SusiDNS: Comment out debug logging 2022-10-22 13:53:46 -04:00
zzz
0224a0f03b Console: Make NavHelper non-static
add NavService interface
hang off ClientAppManager
i2psnark: register additional instances with NavService
2022-10-19 15:33:53 -04:00
zzz
f83f467b28 SusiMail: Add icons to the buttons that were missing them (dark theme)
Change mark-all icon (light theme)
2022-10-19 13:05:50 -04:00
zzz
bed4563257 Debian: Change dependency from transitional package libservlet3.1-java
to libjsp-api-java and libservlet-api-java
and update symbolic links to the jars in /usr/share/java
Note that the previous symlink to servlet-api-3.1.jar was
another symlink to servlet-api.jar which was actually API 4 anyway.
2022-10-19 12:33:06 -04:00
zzz
d2d9a067ce javadoc fix 2022-10-19 11:46:19 -04:00
zzz
8fee843315 Tunnels: ConnectChecker fixes
add support for 4 and 6 caps
add support for SSU2
remove support for NTCP 1
2022-10-17 14:18:50 -04:00
zzz
21d665b812 Console: CSS fixes for lists in news entries 2022-10-17 11:04:36 -04:00
idk
144271e4ca Merge branch 'programdata-path-fix' into 'master'
remove Application Data from path to I2P service config on Windows

See merge request i2p-hackers/i2p.i2p!65
2022-10-16 21:58:34 +00:00
idk
24fb6c9347 remove Application Data from path to I2P service config on Windows 2022-10-16 21:58:33 +00:00
zzz
1c29d752bd SSU2 Relay: Use from port in hole punch if different from relay response port
to support Charlies behind symmetric NAT
Check for IP mismatch in hole punch
Ban Charlies with bad IP/port
Ban Charlies who ban us
2022-10-16 12:13:26 -04:00
zzz
3f1d2f9808 i2psnark: Increase piece limit to 64K
as requested by RABADA ref: http://zzz.i2p/topics/3436
2022-10-15 08:19:30 -04:00
zzz
166d1ba86b SSU2: Track recently-closed sessions (gitlab #370)
and drop packets received on them, to prevent SSU1 fallback processing
2022-10-10 11:33:05 -04:00
zzz
64873218ba SSU2: Enable by default 2022-09-28 09:26:28 -04:00
zzz
0eb96d6ef0 Installer: Fix error on Windows when username contains a space (gitlab #367)
in fixperms.bat
2022-09-28 09:17:44 -04:00
zzz
beaeb9c835 SSU2: Ensure min packet size for pings 2022-09-23 11:20:17 -04:00
zzz
5b1a023be6 SSU2: Convert 1276 MTU to 1280 to workaround bug in 1.9.0 2022-09-23 11:18:36 -04:00
zzz
c082fc8fa6 SSU2: Fail handshakes while inside sync
to prevent races and fail-after-fail ISE
Override fail() to destroy handshake state
2022-09-23 09:14:03 -04:00
zzz
0e8b757249 SSU2 IES2 reduce log levels 2022-09-20 12:01:08 -04:00
zzz
c1b241ab8f i2ptunnel, eepget: Add support for SHA-256 digest proxy auth (RFC 7616)
Requires re-saving user/pw on proxy side
2022-09-20 08:26:05 -04:00
zzz
ab49a149ba Router debug: Don't show enc. type for local router in tunnel config
as it was always showing ElG which was incorrect
ref: http://zzz.i2p/topics/3403
2022-09-14 08:28:10 -04:00
zzz
f64894ea12 Router: ProfileOrganizer and TunnelPeerSelector cleanup
of unused code, in prep for some redesign
2022-09-10 14:11:00 -04:00
zzz
a34bf5d408 Console: Include SSU2 addresses in transports chart
Linkify router family name in RI
2022-09-10 12:50:29 -04:00
zzz
ca569f0739 Router: Remove some ancient HandlerJobBuilder registration code 2022-09-10 08:12:42 -04:00
zzz
88a66928c1 SSU2: Enable handling of ack-immediate flag by default
test code that was off by default was previously checked in
2022-09-09 12:33:53 -04:00
idk
2144486917 Specify type on emptyList so it compiles with Java 8 2022-09-08 21:57:01 -04:00
zzz
0f560139f3 unused field 2022-09-07 10:11:39 -04:00
zzz
b610b7a695 Transports: Don't rekey noise params on testnet 2022-09-07 10:09:05 -04:00
zzz
26f882edd5 SSU: Fallback processing for MTU detection
take the minimum of all interfaces if specific interface not found
Update CLI to support address args for testing
2022-09-07 10:01:32 -04:00
idk
f00e020f2b Fix unexpanded styles on addressbook pages #365 2022-09-06 18:09:58 -04:00
idk
edd0dd0b0d fix padding on expanded elements in SusiDNS 2022-09-06 15:54:44 -04:00
idk
031fa45eb8 fix incorrect background color on expanding element in SusiDNS 2022-09-06 15:39:45 -04:00
zzz
a2eee5a673 NetDB: Fix reseeding when clock is skewed
reported, fixed, and tested by zlatinb
2022-09-06 11:56:33 -04:00
zzz
45c160f27a Data: Cache SSU2 string 2022-09-06 09:39:14 -04:00
zzz
7ba59b4338 SSU2: Don't publish or connect if our MTU becomes too small
after initial check in constructor
Don't rectify 1280 IPv4 MTU down to 1276
Add note about replay detector
2022-09-06 09:35:29 -04:00
zzz
554b17fe9a SusiDNS: Fix adding to empty address book
by doing form processing even if book is empty.
Do all form processing before displays so the
displays reflect any form add/delete.
Broken in 0.9.50 when form processing call was moved.
Hide replace and add alternate buttons if book is empty.
Ref: https://www.reddit.com/r/i2p/comments/wu7nac/how_do_i_add_to_the_private_address_book/
2022-09-04 08:14:19 -04:00
zzz
64632eed4a UPnP: Fix opening IPv6 ports 2022-09-03 12:01:59 -04:00
zzz
49299f3f28 NetDB: Query connected peers for their RI directly
Negative cache router hash when expiring RI
Log tweaks
2022-09-03 11:59:39 -04:00
zzz
00774590b0 SSU2: Fix ISE after sending retry for clock skew in session request
log tweaks
2022-09-01 12:21:33 -04:00
zzz
52b640b582 Router: Ensure database store message is processed before reply job (Gitlab #364)
by processing DSM inline in InNetMessagePool.
Caused random lookup failures of RI and LS.
Made worse by previous change removing duplicate store from reply job.
thanks obscuratus and drzed
2022-09-01 11:55:00 -04:00
zzz
911e69e3ae Emphasize checklist step to try Maven jars build before release
to not break Android build
ref: Gitlab MR !64
2022-08-31 07:56:13 -04:00
zzz
d809d6653d SSU2: Implement ack-immediate flag
Use a single ack timer for each session rather than
creating a new one for every ack
Log tweaks
2022-08-29 16:47:19 -04:00
idk
8df81fc0a1 Merge branch '1.9.0-java7-classpath-fix' into 'master'
explicitly set types of some objects so that the code can be compiled with a Java 7 bootclasspth

See merge request i2p-hackers/i2p.i2p!64
2022-08-29 15:45:55 +00:00
zzz
ed76829562 Console: Don't lookup RI if banned 2022-08-28 15:28:17 -04:00
zzz
4f4044c3f0 Console: Add notification and summary bar info on deadlock
Check for deadlock more frequently
2022-08-28 15:24:34 -04:00
zzz
3a4bfc9c07 Util: Add option to gzip router logs
Primarily for devs. No UI.
remove shutdown hook ID
2022-08-28 15:07:30 -04:00
zzz
b25c207e9a Console: Linkify router hash even if not in netdb
as the console will do the lookup if not
2022-08-28 11:22:31 -04:00
idk
fcae43547b explicitly set types of some objects so that the code can be compiled with a Java 7 bootclasspth 2022-08-27 19:26:03 -04:00
zzz
b34b0cc399 SSU2: Fix packets exceeding MTU by up to 3 bytes 2022-08-25 10:58:14 -04:00
zzz
f4875d12fa SSU2: Immediately fail session request containing zero token
i2pd will send this after retry with zero token and termination
2022-08-25 10:56:34 -04:00
zzz
2f06e9bebf SSU2: Implement path challenge and connection migration
mark session dead after receiving destroy
log tweaks
2022-08-25 08:57:02 -04:00
zzz
9b6dde008d Router: Hopefully fix deadlock via rebuildRouterAddress() and UDPTransport 2022-08-25 08:46:25 -04:00
zzz
6ddaa72a86 Add deadlocks to event log 2022-08-23 13:01:32 -04:00
zzz
d064de1913 Debian files for 1.9.0 2022-08-23 11:36:06 -04:00
zzz
97013f8874 blocklist update 2022-08-22 15:15:20 -04:00
zzz
39954032d2 1.9.0 2022-08-22 10:16:29 -04:00
zzz
44f0acead5 Refresh debian patches 2022-08-21 07:28:57 -04:00
zzz
6d024b49a9 Fix encoding of getopt translations az and es_AR 2022-08-21 06:36:20 -04:00
zzz
8a379d5394 Pull translations from Transifex 2022-08-19 12:54:48 -04:00
zzz
972adde7eb Router: Add SSU2 keys to the killKeys() list 2022-08-16 18:13:02 -04:00
zzz
f3dd06ad1e Bump build time 2022-08-13 13:32:26 -04:00
zzz
55603782bb New translation: Spanish (Argentina) 2022-08-13 13:31:53 -04:00
zzz
3d65f93277 i2psnark: CSS fix for disabled edit torrent button 2022-08-12 09:42:22 -04:00
zzz
e35d173982 SSU2: Enable for Android, ARM, and 2% of others 2022-08-10 08:11:11 -04:00
zzz
ec6e9b1bfb Router: Hopefully fix clock/job queue deadlock after clock shift
ref: i2p.i2p/-#6
2022-08-06 11:00:09 -04:00
zzz
ca6046f821 GeoIP 2022-08 2022-08-06 10:57:36 -04:00
zzz
c81b4645a8 SSU: Try to keep a mix of v1/v2 introducers 2022-08-05 10:51:08 -04:00
zzz
0687ef8364 SSU2: Block bob's IP in relay response from charlie
(i2pd bug, fixed today)
2022-08-04 17:33:31 -04:00
zzz
8d149136fe SSU2: Remove unused ECN variable
Add RTTdev to logging
2022-08-04 08:40:18 -04:00
zzz
2a83c8f6ee i2ptunnel: New outproxy (new installs only) 2022-08-04 05:58:30 -04:00
zzz
689016f48e SSU2: Pass source ip/port to path challenge/response callbacks
(more prep for connection migration)
2022-08-02 09:38:11 -04:00
zzz
146bbf67f8 SSU2: Add state lookup by conn ID
As fallback for failed lookup by RemoteHostId.
This will eventually be the primary lookup after most traffic is SSU2.
For now, only used to receive traffic from a peer that changed IP/port.
SSU 1/2 send destroy when replacing old session with new.
Prep for full SSU2 connection migration.
2022-07-31 11:34:55 -04:00
zzz
b606c2084b LogManager: Prevent hangs at shutdown on Mac after dock right-click-quit (Gitlab #363) 2022-07-29 12:23:34 -04:00
idk
c1efe6daab Merge pull request #27 from mehdie79/master
Fix errors in HACKING.md
2022-07-28 14:23:49 -04:00
zzz
4bdb7d752f SSU2: Send response to path challenge 2022-07-27 11:48:27 -04:00
zzz
6d9aca9d9b SSU2: Path challenge/response block types 2022-07-27 11:43:00 -04:00
zzz
e250531174 SSU2: Stub out path challenge/response 2022-07-27 10:56:18 -04:00
zzz
5948a7dec3 SSU: Only decrease MTU if the retransmitted packet was large 2022-07-27 10:30:56 -04:00
zzz
4e4718b3b1 NetDB: Publish ff stats based on current caps, not previous
Comment out unused contact property
2022-07-27 09:34:02 -04:00
zzz
d94ff6ad86 Router: Log warning if no family keys loaded 2022-07-27 09:16:01 -04:00
zzz
e4a8a6492d SSU2: Send termination in response to termination 2022-07-26 09:51:41 -04:00
zzz
17695915fa SSU2: Fix bitfield shifts of 256 or more 2022-07-25 13:17:56 -04:00
zzz
69adf84363 Console: Fix saving flat clients.config file
when in portable configuration and changing the
launch browser on startup setting on /configservice
ref: http://zzz.i2p/topics/3347
2022-07-21 09:19:25 -04:00
zzz
af8272b970 SSU: Reduce max establishment time 2022-07-19 12:08:26 -04:00
zzz
5355ee7740 SSU2: Shorten token expiration based on cache size 2022-07-19 11:55:59 -04:00
zzz
02cd83187b GeoIP: Don't lookup route48 addresses 2022-07-19 11:21:12 -04:00
zzz
f5ca15c28d SSU2: Retransmit session confirmed after receiving apparent retransmitted session created
Retransmit handshake messages faster and expire faster (SSU 1/2)
log tweaks
2022-07-19 11:17:54 -04:00
zzz
b7db6ae77c SSU2: Fix storage/checking of local firewalled IP address/port in token file 2022-07-19 11:15:24 -04:00
idk
4aa6ee2308 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2022-07-17 15:34:48 -04:00
idk
21dc07bf5a add note about possible need for Java 17 options to startapp.sh 2022-07-17 15:34:25 -04:00
idk
4a6fe9b291 Merge branch 'docker_updates' into 'master'
Switch to OpenJDK17

See merge request i2p-hackers/i2p.i2p!61
2022-07-17 19:33:23 +00:00
zzz
8aef6ce292 SSU2: MTU and other fixes
Use minimum MTU for IPv6 session confirmed to avoid PMTU issues
Set default MTU for known IPv6 tunnel brokers
Check for s mismatch in session confirmed RI
Don't put DateTime block after Termination block
Fix first message failed check
Log sent data packet size
Log tweaks
2022-07-17 11:28:00 -04:00
c9cf208de7 Fix errors in HACKING.md 2022-07-17 01:45:55 -07:00
zzz
097fa34e91 SSU2: Send retry with termination block on clock skew 2022-07-15 15:03:22 -04:00
zzz
c2ffcb8512 SSU2: Don't rectify MTUs to mod 16 in SSU2 addresses
Set max MTU for range48.org brokered addresses
Limit MTU for brokered addresses in UDPAddress also
2022-07-15 08:51:43 -04:00
zzz
2432680ed3 SSU2: Fail session if first outbound message fails
Reduce max consecutive message failures to fail session (SSU 1/2)
Set peer as unreachable for these failures
Reduce max consectutive session confirmed retransmissions
Fix session confirmed retransmission timing
Respond to relay tag request in data phase
Log tweaks
2022-07-12 07:29:20 -04:00
zzz
8e985eb951 SSU2: Fix NACK handling when higher than previous highest acked
was treating them as acks
2022-07-10 13:01:56 -04:00
zzz
a18a5136b7 Console: Only display news if a new entry is found
not simply when a new file is downloaded
2022-07-09 09:41:13 -04:00
zzz
73c8ee826e SSU2: Support other reason codes in destroy message 2022-07-09 07:31:46 -04:00
zzz
2a4ab118de SSU2: Persist SSU2 tokens
Move establisher and packet handler initialization
to after the address initialization
2022-07-08 14:12:31 -04:00
zzz
70596d0548 SSU: Initialize MTUs
SSU2: Don't log MTU warning at startup
Remove unused dropPeerCapacities()
2022-07-08 11:13:58 -04:00
zzz
6ede06cfdf SSU2: Send termination before dropping session after failure to get Session Confirmed ack 2022-07-08 11:09:58 -04:00
zzz
8818c78cbd Transport: Don't lookup RI in wasUnreachable()
to reduce netdb lookups
2022-07-08 10:00:04 -04:00
zzz
9489b41cb7 Util: Fix UnmodifiableSortedSet compiler warnings 2022-07-05 12:02:28 -04:00
zzz
9a9722dd3e SSU2: Fix peer test throttling
Only throttle messages 1 and 2
Send limit response on throttle
Throttle IPv6 based on first 8 bytes only
2022-07-05 07:37:51 -04:00
zzz
ec3a88dc34 Console: Add cancel button to netdb search form 2022-07-04 08:32:16 -04:00
zzz
4e21fe74e5 NetDB: Lookup handling cleanups
Allow lookups of our RI even when hidden
Consolidate routerHash() calls
Remove unused router.publishUnreachableRouters option, was default true
2022-07-04 08:30:21 -04:00
9dc8ca4edb Merge branch 'jbigi-apple-silicon' into 'master'
jbigi for Apple silicon

See merge request i2p-hackers/i2p.i2p!63
2022-07-03 12:46:31 +00:00
efc3b847ac jbigi for Apple silicon 2022-07-03 13:43:29 +01:00
3701cf9782 Merge branch 'gmp-patch-x18' into 'master'
Add ability to apply patches to GMP.  Apply fix for x18 register.  Run GMP tests after build.

See merge request i2p-hackers/i2p.i2p!62
2022-07-03 11:48:36 +00:00
a171d71bbe Add ability to apply patches to GMP. Apply fix for x18 register. Run GMP tests after build. 2022-07-03 11:09:01 +01:00
a6ef362ad7 Switch to OpenJDK17 2022-07-02 16:31:35 +00:00
c2f3732469 Merge branch 'jbigi-mac-arm64' into 'master'
JBigi build changes for M1

See merge request i2p-hackers/i2p.i2p!60
2022-07-02 13:11:54 +00:00
454cd6bda6 JavaVM framework isn't a thing anymore 2022-07-02 13:22:28 +01:00
zzz
740c7fad4d SSU: Remove copy of peers in idle timeout checker
Just iterate through the main map.
Log tweaks
2022-06-30 18:22:53 -04:00
zzz
c875f1d105 SSU2: Fix last check of local RI for relay
Expire relay token quickly
Log tweaks
2022-06-30 17:15:33 -04:00
idk
43945dcbbf fix dark them address book css. closes #343 2022-06-26 12:28:03 -04:00
zzz
3c7659277d SSU: MTU fixes for IPv6 and SSU2
Fix setting local IPv6 MTU when firewalled
Fix publishing MTU when firewalled or hidden
Save local MTU when changing addresses, not when publishing
Add SSU2 MTU methods (no mod 16 required)
Allow MTU up to 1500 for SSU2 transport style
Disable SSU2 at startup if local MTU too low
2022-06-25 13:14:59 -04:00
zzz
26cffabf86 Build: Update GMP download script to 6.2.1 2022-06-25 08:33:32 -04:00
zzz
897338b790 SSU2: Add checks of peer test msg 1 IP/port 2022-06-24 16:56:47 -04:00
zzz
ac3fc6a0d8 JBigI: Drop 32-bit OSX libs 2022-06-23 12:29:46 -04:00
zzz
20acd7cf61 Debian: Update apparmor profile
see gitlab MR !59
2022-06-23 09:20:35 -04:00
zzz
08e95655c1 SSU2: More MTU checks
Add code for bob rejecting alice peer test address
Don't allow MTU to exceed his MTU
Don't use a token about to expire
Send token with termination message
Add internal type to termination message
log tweaks
2022-06-22 11:00:56 -04:00
zzz
5d27ce3f8d SSU: Rewrite adjustMTU()
to make it more responsive to conditions and a more effective PMTU algorithm.
Move MTU up and down in increments rather than simply shift between min and max
Increase or decrease based on success or failure of each message
Only increase if the successful message was almost as large as current MTU
Clear increase/decrease counters when changing MTU the other way
Don't wait for 10 packets to increase MTU
Reduce max retransmissions from 30% to 10%
2022-06-22 08:07:13 -04:00
zzz
1e95c123e5 Console: Fix SSU TX/RX sorters on /peers 2022-06-21 12:41:47 -04:00
zzz
a6536ea48a Crypto: Fix equality checking of ECParameterSpecs for private keys too
see earlier checkin for public keys
2022-06-21 09:43:16 -04:00
zzz
9aa9f7a714 SSU2: Fix swapped dest/src conn IDs for peer test 2022-06-20 15:19:09 -04:00
zzz
723257d6ef SSU2: First fragments can be 5 bytes larger than followon fragments 2022-06-20 12:05:45 -04:00
zzz
c5323a8d36 SSU2: Fix overhead calculation for followon fragments
so as not to exceed MTU
2022-06-20 07:37:05 -04:00
zzz
67082463e4 Util: HostTxtParser CLI improvements 2022-06-19 12:07:23 -04:00
zzz
b3072d9ef3 SSU: PeerState _remotePeer cannot be null 2022-06-19 12:05:39 -04:00
zzz
3c4956f0c3 SSU2: Add delayed lookup of RI for relay and peer test
Prefer SSU2 introducers for slots 1 and 2
log tweaks
2022-06-19 12:04:10 -04:00
zzz
d69a65605d SSU2: Don't delete empty ipv6 address at startup
Needed for SSU2 handshakes
2022-06-19 12:01:44 -04:00
zzz
2bf7d5ddea Util: New UnmodifiableSortedSet based on ArraySet
use in OrderedProperties
2022-06-17 13:07:22 -04:00
zzz
c2edd7e926 SusiDNS: Fix classloading on Java 11+
Caused SusiDNS and addressbook to be in a different context
addressbook config would be stored in base dir
and subscriptions would not load because it couldn't find i2ptunnel
2022-06-17 12:52:36 -04:00
zzz
ed1e705d35 Crypto: Fix equality checking of ECParameterSpecs
in SigUtil.fromJavaKey()
as the class does not define equals().
Affects Android family key loading where the class does not match our class.
Tested via unit test to compare provider class sun.security.util.NamedCurve
to our class java.security.spec.ECParameterSpec, untested on Android.
Add conversion test to CertUtil loadcert CLI.
ref: http://zzz.i2p/topics/3328
ref: i2p.android.base gitlab ticket #47
2022-06-17 10:34:34 -04:00
zzz
fa145ff7c5 Util: ArraySet improvements
Was never used; prep for actual usage
Move from router to core
Add Set constructors that are more efficient
Add addUnique() method
Allow size of set passed in constructors
Prepare for extension
javadocs
2022-06-17 10:21:15 -04:00
zzz
7610b3842f SSU2: Hole punch processing
Validate and process hole punch payload
Send session request immediately after receiving hole punch
Remove some unused code
Log tweaks
2022-06-16 08:22:55 -04:00
zzz
d812f82e92 SSU2: Fixes
Fix conn ids on hole punch
Fix min size on relay response
2022-06-16 08:16:12 -04:00
zzz
0a87559ba2 SSU2: Add per-introducer relay state machine
Enable relay
Set session created token to 0 as per spec
Log tweaks
2022-06-14 12:48:00 -04:00
zzz
c248279a03 Console: Minor fix for dark theme /logs version section 2022-06-13 07:11:31 -04:00
zzz
22efde37e3 SSU2: Relay WIP part 15
Fix sending charlie's address in relay response
Fix sending session request after introduction
Send 0-length endpoint in relay response on failure
Log tweaks
2022-06-12 16:08:23 -04:00
zzz
c976b86b6e SSU2: Fix peer test msg 1 signature 2022-06-12 13:20:37 -04:00
zzz
3ef06f88c9 SSU2: Relay WIP part 14
Fixes after testnet testing:
Fix NPE in OES2 constructor
Fix relay request signature
Fix relay response signature verification bugs
Fix unhandled state OB_STATE_INTRODUCED
Refactor state handling to switch
Remove dup copy in SSU2Util.sign()
Log tweaks
2022-06-12 12:54:52 -04:00
zzz
2ec0894c35 SSU2: Relay WIP part 13
Reject SSU1/SSU2 relay request mismatch as Bob
2022-06-11 13:06:29 -04:00
zzz
d85d501291 SSU2: Relay WIP part 12
Don't send SSU1 relay request to SSU2-connected introducers
and vice versa
Log tweaks
2022-06-11 09:13:36 -04:00
zzz
e4996a2db6 SSU: No need to validate Bob IP/port on relay intro as Charlie
as it is received in-session only
Log tweaks all over
2022-06-10 16:50:46 -04:00
zzz
ffc4520382 Transport: Remove mtn port from invalid list 2022-06-10 16:03:48 -04:00
zzz
386b259666 SSU: Reduce level of SSU 1 relay logging
to make it easier to debug SSU2 relay
2022-06-10 15:09:23 -04:00
idk
ee5e3a97ed Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2022-06-10 13:39:54 -04:00
idk
a70c988a07 Automatically configure clients and client tunnels to listen on the container network address instead of the localhost. Closes #358 2022-06-10 13:39:27 -04:00
zzz
788babeaa0 SSU2: Relay WIP part 11
prevent dup SSU2 introducers take 2
2022-06-10 13:29:42 -04:00
zzz
3befe90007 i2ptunnel: Add tunnel name to offline expiration log messages 2022-06-10 09:53:55 -04:00
zzz
bfdf75f45b SSU2: Fix test/relay response code for banned IP 2022-06-10 09:08:08 -04:00
zzz
9de618d644 SSU2: Catch errors on bad ack blocks
so rest of payload can be processed
Improve debug output on errors
2022-06-10 07:50:43 -04:00
zzz
cdf778514c SSU2: Don't attempt SSU1 fallback validation on a SSU2 peer
This should actually fix the HMAC NPE
2022-06-10 07:35:53 -04:00
zzz
03f315fc1c SSU2: Relay WIP part 10
Fix OES2 initial state when pending intro
Handle relay response as Alice
Check relay request and relay response sigs as Bob
Remove unused method OES2.reset()
Fix javadoc for one OES state
2022-06-10 07:32:54 -04:00
zzz
379227592c hosts.txt update 2022-06-09 15:08:01 -04:00
zzz
3d9ded4ab1 SSU2: Relay WIP part 9
Alice side:
check for valid v2 introducers,
fetch Bob RIs if not found,
connect if not connected,
then send relay request
2022-06-09 12:24:29 -04:00
zzz
29c827c076 SSU2: Ignore dup session confirmed 2022-06-09 11:54:52 -04:00
zzz
5582814d7c Noise: Add state info to debug output 2022-06-09 09:49:06 -04:00
zzz
43a5998cfd SSU2: Set timer to remove peer test state
Reduce SSU 1/2 max test time as Bob
2022-06-08 11:31:42 -04:00
zzz
d1633938db NetDb: Bypass checks on lookups of our router hash 2022-06-08 11:04:33 -04:00
zzz
5129665256 SSU: Request RI from introducer if we don't have it 2022-06-08 10:58:16 -04:00
zzz
0d51b2d25f Transport: Don't requeue message after multiple failures
Change failed transports from a Set to a List for efficiency
Check fail count before getting bids
Don't remove from netdb after a failure
Other minor tweaks
2022-06-07 14:22:27 -04:00
zzz
ba7b154a09 SSU: Ban IP on bad handshake signature 2022-06-07 14:15:00 -04:00
zzz
52bb2aea94 SSU2: Peer test fixes
per spec, Alice hash not included in msg 1/2 sig
Add sig checks of msgs 1/3 at Bob
Fix checking of 'B' cap in peer selection
2022-06-07 14:08:53 -04:00
zzz
265804a750 Console: Add deadlock detector 2022-06-06 17:01:15 -04:00
zzz
74795a83d6 SSU2: Relay WIP part 8
prevent dup SSU2 introducers
2022-06-06 16:25:30 -04:00
zzz
0fe437f649 SSU2: Check for missing address block in peer test msg 7 2022-06-06 16:24:19 -04:00
zzz
a2ec81eaec Util: Cache new SSU2 properties 2022-06-06 16:21:44 -04:00
zzz
df4be26878 SSU: Don't allow android to be introducers 2022-06-06 16:20:44 -04:00
zzz
06456fb318 SSU2: Peer test fix message 7
Put source address of msg 6 into address block for msg 7
Use msg 7 address block for received address
2022-06-06 11:41:31 -04:00
zzz
d9c932ac2e Compile fix previous checkin 2022-06-06 11:40:24 -04:00
zzz
d680cfd80c SSU2: Relay WIP part 7
Add SSU2 parameter support to UDPAddress
Count SSU2 introducers in UDPAddress
Fix reuse of SSU2 introducers
Don't immediately remove introducer for idle time
2022-06-06 11:07:45 -04:00
zzz
4a9f8240db SSU2: Relay WIP part 6
Fix saving relay tag as Bob
Select introducers by newest connection instead of random
Ping introducers more often
Check and set ping time when pinging introducers
Remove unused nextCipherKey
Debug: Prefer selecting SSU2 introducers
Log tweaks
2022-06-05 11:21:04 -04:00
zzz
266dc09384 Transports: Periodically send RI to connected peers (Gitlab ticket #356) 2022-06-03 08:15:01 -04:00
zzz
4dd5e7737b SSU: Make cipher/MAC keys final
Possible fix for HMAC NPE
2022-06-03 08:07:29 -04:00
zzz
af6722c57b SSU2: Relay WIP part 5
Publish SSU2 introducers
2022-06-02 11:39:30 -04:00
zzz
2ff0a13990 SSU2: Relay WIP part 4
Decrypt and handle hole punch as alice
2022-06-02 10:14:37 -04:00
zzz
cfdc2203fb SSU2: Relay WIP part 3
Put alice hash in relay intro as Bob
Fix relay intro/response generation and signing
Add token to relay response as Charlie
Store relay nonce as Bob
Handle relay response as Bob and forward to Alice
Stub out handling relay response as Alice
2022-06-02 08:43:50 -04:00
zzz
2c53424210 SSU2: Relay WIP part 2
Handle relay request as bob
Send relay intro as bob
Send relay response rejection as bob
Check for valid time in relay request and relay intro
2022-06-01 13:59:15 -04:00
zzz
8b0edde290 SSU2: Relay WIP part 1
Pass relay data from PS2 to Intro manager
Handle relay intro as charlie
Send hole punch as charlie
Send relay response as charlie
Update hole punch format to match spec
2022-06-01 13:12:35 -04:00
zzz
a4d3bf285d SSU2: Enable peer test 2022-06-01 09:01:50 -04:00
zzz
3acc4b754a SSLEepGet: Send Host header to HTTPS proxy
ref: RFC 2617 sec. 5.2
2022-05-30 10:39:38 -04:00
zzz
ef08dfad55 SSU2: Remove role field from peer test block
to match spec change
2022-05-29 10:18:19 -04:00
zzz
b9099fbd99 i2psnark: Fix scrollbar hiding X box on Firefox 100 2022-05-28 15:54:02 -04:00
zzz
c9a6950550 Crypto: Handle conversion from Java JCA 15+ EdEC keys
Change from unchecked to checked exception on unknown keys
2022-05-28 15:14:29 -04:00
zzz
80f76e38b4 i2psnark: Fix DHT not restarting after router restart
cancel DHT cleaner and explorer on stop
2022-05-28 13:00:32 -04:00
zzz
7ea3c430aa Util: FileLogWriter minor optimization 2022-05-28 12:32:39 -04:00
zzz
d467dc28b9 I2CP: Only send one notification to each session listener
for reportAbuse(), disconnected(), and errorOccurred(),
because a single listener may be registered for multiple ports/protocols
2022-05-28 12:02:52 -04:00
zzz
8ac78af293 Console: Require full restart on transport enable/disable
Don't do soft restart if full restart required
2022-05-28 11:58:02 -04:00
zzz
e44eeaf5ae Router: Don't fail to start up on unchecked family key errors 2022-05-28 10:53:25 -04:00
zzz
17cc514bb1 Console: Add TODOs for country variants of readme files
Clean up language selection code in ResourceHelper
2022-05-27 11:59:49 -04:00
zzz
86996dde28 UPnP: Don't bind HTTP listen sockets to all addresses at startup
The lib was binding to all addresses, and then our
UPnP.updateInterfaces() was closing most of them on first run.
Fix the lib to only bind to the non-public and non-deprecated ones,
using the same getLocalAddresses() method as in our code.
2022-05-27 11:18:48 -04:00
zzz
34789fdb30 Streaming: Improve error message on unsupported sig type
Fallback to Ed25519 on error
2022-05-27 09:29:49 -04:00
zzz
a74f36358f i2psnark standalone: Skip browser launch if so configured 2022-05-26 12:29:35 -04:00
zzz
a6ad525197 Addressbook: Add CLI 2022-05-26 11:57:34 -04:00
zzz
0826b1e228 Crypto: Throw checked exception
for unimplemented ElG import, so CertUtil.loadPrivateKey() will
continue processing and then
fail with the correct exception and error message on bad input.
Pull constant KeySpec out of loop.
2022-05-25 09:12:12 -04:00
zzz
5d3c29fb27 Debian files for 1.8.0 2022-05-24 12:29:31 -04:00
zzz
8256f61d56 1.8.0 / 0.9.54 2022-05-23 09:25:37 -04:00
zzz
ffc5ed8dc2 i2psnark standalone: Add hint to disable browser launch on windows 2022-05-23 09:10:48 -04:00
zzz
860eb22af7 refresh Debian patch 2022-05-23 08:47:56 -04:00
zzz
1a050303fa bump for review 2022-05-20 13:30:19 -04:00
idk
ce0c84c5d9 make SAMException class public so that it can easily be used by SAM implementers/embedders. Looks like it should have been public, all the constructors are public but the public keyword is missing on the class itself. Make tabs and spacing consistent in that file. 2022-05-19 14:37:17 -04:00
zzz
b537bd18b0 bump -20-rc 2022-05-19 13:40:25 -04:00
zzz
de79f52c81 New zh_TW translations 2022-05-19 13:35:28 -04:00
zzz
a5bc80da09 i2ptunnel: Improve message on filter file error 2022-05-19 13:15:16 -04:00
zzz
5f4ad87d10 Bump build time 2022-05-19 13:13:16 -04:00
zzz
cc56c4b506 Rebuild updated man page translations 2022-05-19 13:12:39 -04:00
zzz
13efc59916 Pull translations from Transifex 2022-05-19 13:10:57 -04:00
zzz
515a9b8d0d i2psnark: Fix 'left' amount in announce exceeding size
and causing tracker error on initial announce
2022-05-17 09:51:34 -04:00
zzz
52958b95d5 i2ptunnel: Add log message on reconnect 2022-05-14 08:58:58 -04:00
zzz
b36ed7de1a SSU2: Method scope 2022-05-14 08:52:15 -04:00
zzz
693aefe83a javadoc 2022-05-14 08:50:37 -04:00
zzz
ed30da0f0f NetDB: Remove dup now() calls 2022-05-14 08:48:13 -04:00
zzz
81255e19ae Transport: Fix thrashing of UPnP IPv6 listen sockets
Strip % suffixes from addresses before comparing
Fix HTTPMUSocket.getLocalAddress() to return the correct bound address
Throw exception on multicast socket bind failures, don't attempt
further operations on failed sockets
Add toString() to sockets for debugging
Log tweaks
2022-05-11 11:54:25 -04:00
zzz
07dbab9f02 Util: Rename modified apache classes (Gitlab ticket #353)
to avoid conflict in applications linking to apache jars
As requested by 'mesh' project
Remove with-libhttpclient-java build option
No known external uses other than obsolete i2pcontrol plugin
2022-05-11 07:54:56 -04:00
zzz
bf27bf140d poupdate-source 2022-05-10 12:41:09 -04:00
idk
3a906a6ce5 Merge branch 'sam-secure-session' into 'master'
Interactive SAM Authentication Interface

See merge request i2p-hackers/i2p.i2p!58
2022-05-07 16:36:39 +00:00
idk
47e02f7930 Interactive SAM Authentication Interface 2022-05-07 16:36:38 +00:00
zzz
75b808fcf6 DoH Server list update 2022-05-06 08:50:13 -04:00
zzz
5cbdb7d806 Tomcat 9.0.62 2022-05-02 11:31:45 -04:00
zzz
2c8428d85e GeoIP 2022-05-01 2022-05-02 10:15:06 -04:00
zzz
8fe9d7ac06 SSU2 minor updates
Send ack for peer test and relay blocks
Add SSU2 pending inbound states to establisher check
Remove unused PacketBuilder2 method
2022-04-30 11:44:52 -04:00
zzz
db8a843e82 SSU: Enforce peer test message 4 in-session
for routers 0.9.52 or higher
2022-04-29 09:41:10 -04:00
zzz
a730c1acea SSU2: Handle RI block in Data and Peer Test messages
Don't process out-of-session Peer Test message unless enabled
2022-04-28 10:52:01 -04:00
zzz
d6aaf3ee3a NTCP: Don't flood RI block unless newer
Don't accept store of our RI in RI block
2022-04-28 10:49:13 -04:00
zzz
9e4063a161 NetDB: Don't flood RIs banlisted forever 2022-04-28 10:47:01 -04:00
zzz
008943f699 SSU2: Peer Test fixes part 6
Change size/ip/port fields to match changes in proposal 159
2022-04-27 08:30:22 -04:00
zzz
71a58cb1bf Crypto: Destroy ChaCha/Poly after one-time-use 2022-04-25 10:05:16 -04:00
zzz
4a6f6f8647 SSU2: Peer Test fixes part 5
Fix extraction of Charlie address after receiving message 4
for use in message 6
2022-04-25 07:38:48 -04:00
zzz
32bba60bed SSU2: Peer Test fixes part 4
Fix NPE sending message 6
2022-04-24 15:46:57 -04:00
zzz
0f3abf0c9e SSU: Publish empty IPv6 address when missing introducers 2022-04-24 10:23:33 -04:00
zzz
5c1b6ba703 SSU2: Add properties to address when missing introducers 2022-04-24 09:36:23 -04:00
zzz
5e6ec442a7 SSU2: Fix PacketPusher NPE 2022-04-24 09:35:00 -04:00
zzz
cdf5bec155 SSU2: Peer Test fixes part 3
Reject if alice/charlie already connected
Do not retransmit msg 1 after receiving msg 4
Log tweaks
2022-04-24 08:57:20 -04:00
zzz
281bf68098 SSU2: Peer Test fixes part 2
Don't send message 5 unless we sent accept in message 3
Fix packet length for messages 5-7
Pass messages 5-7 from PacketHandler to PeerTestManager
Decrypt and process messages 5-7
Handle messages 4 and 5 in either order
Don't set test complete after message 5
Build data block for message 6
Log tweaks
2022-04-23 15:57:00 -04:00
zzz
ce2b5639b5 SSU2: Peer Test fixes part 1
Store our IP/port in PeerState2
Send our IP/port in message 1
Fix signature validation of message 4
Check for 0 status in messages 1 and 2
Fail on nonzero status in message 4
Log tweaks
2022-04-23 12:13:03 -04:00
zzz
4c10b414c4 InNetMessagePool: Remove some low-level logging 2022-04-17 10:13:46 -04:00
zzz
4c15a0e1c4 i2psnark: Make PeerCoordinatorSet and ConnectionAcceptor final 2022-04-17 10:11:19 -04:00
zzz
203fbdaa9f Console: Usage formatting on /tunnels 2022-04-17 10:10:18 -04:00
zzz
9431b9cfdc i2psnark: Soft restart fixes part 5
Do not stop the ConnectionAcceptor after RouterRestartException,
delay and reconnect instead.
Fix restart() to actually restart after stopped.
2022-04-17 09:56:07 -04:00
zzz
2bec84dd88 Streaming: Soft restart fixes part 4
Do not clear the DisconnectListeners after notification
2022-04-17 09:51:30 -04:00
zzz
cf7efcada8 I2CP: Soft restart fixes part 3
Remove low-level I2CP reconnector
as it may result in duplicate destinations after
higher-level (i2ptunnel) or application-layer reconnections
Root cause identified by BiglyBT
Gitlab issue #350
2022-04-17 09:45:40 -04:00
zzz
dda25bf1ed Router: Restart fixes part 2
Don't set our RI loaded from disk if too old
Rekeying was prevented by previous checkin,
but this fixes root cause
2022-04-14 08:25:16 -04:00
zzz
04b1bdb453 Router: Soft restart fixes part 1
Reset uptime on soft restart
Don't rekey after failure to store our RI due to clock skew
Change comm system state during soft restart
Restarter log tweaks
2022-04-13 10:28:43 -04:00
zzz
e04d31eb04 Update: Log full path to update file 2022-04-12 09:33:06 -04:00
zzz
706ed2ced2 javadoc 2022-04-12 09:33:06 -04:00
zzz
bb7278c5f6 Transport: Remove unnecessary isEmpty() check 2022-04-12 09:33:06 -04:00
zzz
3edc235104 SSU2: Minor updates
send timeout code in termination
remove unused intro key block handling
log tweaks
2022-04-12 09:33:06 -04:00
zzz
806046df64 One more ihost to itag change, missed in earlier checkin 2022-04-12 09:33:06 -04:00
zzz
345c64ebaf Tunnels: Don't build client tunnels less than min length
even if we don't have enough peers
2022-04-12 09:33:05 -04:00
zzz
53eb6ba7e0 Console: Fix Sybil closest hash tabs 2022-04-12 09:33:05 -04:00
zzz
eaa526583d Transport: Fix UPnP deadlock 2022-04-12 09:33:05 -04:00
idk
c0b8fe94a8 fix margins on dark theme bandwidth config table and info div 2022-04-11 13:59:26 -04:00
idk
6e5049c1db remove remaining absolute tags from xhr's on wizard page 2022-04-11 13:56:11 -04:00
idk
949f619ecc fix margin on bandwidth configuration page, fix alignment on bandwidth configuration page, align informational text to language start 2022-04-11 13:35:13 -04:00
zzz
f7c3e06db5 I2CP: Fix external I2CP broken when session ID is 0
one chance in 64K, broken since 2005
don't revert previous attempted fix using synching,
that's still a good idea
2022-04-11 10:30:29 -04:00
idk
1a26e1789c remove the startup wizard images themselves from the source tree 2022-04-08 16:55:31 -04:00
idk
e40bbc9f18 Overhaul CSS n New Install Wizard in order to make it less dependent on absolute positioning. Remove confusing M-Lab measurement table since the meaningful results are already populated in the configuration table. Adjust postioning of some elements on the bandwidth config pages. remove the old images from both themes. 2022-04-08 16:53:36 -04:00
idk
ec72f3cdf6 disable high-contrast mode on browsers where it is possible 2022-04-07 22:36:09 -04:00
zzz
b19998c072 Console: Change sidebar netdb tooltip 2022-04-06 08:37:41 -04:00
zzz
66e1c94bee Console: Use full hash for links to RI
for efficient lookup and to prevent display of dup prefixes
2022-04-06 08:22:12 -04:00
zzz
0449589406 SSU2: Fix hashcode function to detect dup acks
Arrays.hashCode() interacted badly with it,
causing numerous false positives
2022-04-05 14:13:23 -04:00
zzz
cc85df19aa SSU2: Fragmented Session Confirmed
Revert related parts of "Prep for fragmented RI",
we are now fragmenting Session Confirmed instead.
Fragment and send multiple Session Confirmed packets if required
Reassemble Session Confirmed packets

Don't process ack block identical to previous received
Log tweaks
bump -12
2022-04-05 09:26:42 -04:00
zzz
8418bda5a5 Console: Add netdb search options for v1 or v2 only transports 2022-04-05 08:22:26 -04:00
zzz
75492514ca SSU: Fix packet-too-large check in UDPSender 2022-04-05 07:55:28 -04:00
zzz
e43810f182 SSU2: Don't send our RI after outbound handshake, it's in the handshake already 2022-04-05 07:49:43 -04:00
zzz
9d49dc7af7 SSU2: Fix NPE in PeerState.loadFrom() 2022-04-05 07:47:56 -04:00
zzz
680320dede SSU2: Add termination reason codes 2022-04-05 07:45:02 -04:00
zzz
b2d6a091d1 Add more family certs 2022-03-31 06:05:57 -04:00
zzz
5d22a2152a Data: Add cached X25519/Ed25519 key cert, now common 2022-03-28 08:30:36 -04:00
zzz
acbf849b44 Crypto: Micro-optimize AES encrypt loop 2022-03-28 08:08:22 -04:00
zzz
7cf9895908 Transport: Add util methods for AddressType
WIP, not hooked in
2022-03-28 06:38:18 -04:00
zzz
d41c39a4d0 Debian: Add Java 18 2022-03-28 06:24:08 -04:00
zzz
b1852c127b SSU2: Prep for fragmented RI (WIP)
Fix IES2 not being removed from pending after complete
Don't send DSM after handshake
Validate conn ID before pkt type for data pkts
More log tweaks

SSU: Increase min pending establish states limit (unless slow)
Reduce IB establish timeout to 15s
Log pending inbound establish states when limit exceeded
Log tweaks to add establish state lifetime
Bump -11
2022-03-27 12:36:12 -04:00
zzz
8c59c514b2 Router: Validate family sig at startup
when loaded from router.info, and discard if invalid or when family changed.
This fixes some routers out there with bad sigs.
Don't loop forever through LoadRouterInfoJob.
2022-03-27 08:21:22 -04:00
zzz
93493a6d15 Crypto: Add provider in CertUtil so we can load EdDSA certs
Check cert sigs when loading, and log warning on failure
2022-03-27 08:00:08 -04:00
zzz
03e5c6c13c Crypto: Add official EdDSA OIDs to provider 2022-03-26 13:05:28 -04:00
zzz
826bf3c24f SSU2: Hook in IMF Bloom filter to detect dups
Call messagePartiallyReceived() even for dups or expired messages
so an ack is generated.
2022-03-26 11:39:10 -04:00
zzz
68273cd256 SSU2: Reduce ack delay, see MR !57
See previous checkin for SSU 1.
This change dramatically reduces the measured RTT to get it much closer to the real RTT by reducing the ack delay.
With the ack delay dependent on the measured RTT, the measured RTT will increase.

Simulation results: For a denominator D in the ack delay calculation (currently 2) and a true RTT = TRTT:
For D <= about 2, measured RTT -> TRTT + 2 * TRTT/D For D >= about 4, measured RTT -> TRTT + TRTT/D

In other words, for D == 2, measured RTT -> 2 * TRTT. For a TRTT of 50, the measured RTT is 100.
D == 2 is too small. It's been like that since 2005.
Testnet results: measured RTT 80-90

This changes D to 6. measured RTT -> 6/5 * TRTT.
Simulation results: For a TRTT of 50, the measured RTT is 58.
Testnet results: measured RTT 60
2022-03-26 07:04:49 -04:00
zzz
e130f85a65 Merge branch 'ssuackdelay' into 'master'
SSU: Reduce ack delay to minimize addition to measured RTT

See merge request i2p-hackers/i2p.i2p!57
2022-03-26 10:53:49 +00:00
zzz
9385ce7080 Console: Prevent creating a family that another router is using 2022-03-25 08:47:19 -04:00
zzz
da190cc24f SSU2 cleanups
Remove padding and unknown block callbacks
Remove handshake state logging in IES2 now that i2pd works
2022-03-25 08:27:53 -04:00
zzz
2a6dc58659 SSU: Reduce ack delay to minimize addition to measured RTT 2022-03-25 05:59:33 -04:00
zzz
f4eda0551d Router: Change quick address check for introducers
from ihost0 to itag0, because SSU2 probably won't use ihost
2022-03-24 17:31:48 -04:00
zzz
0560b3221d SSU2: Flush tokens on ip/port change
both inbound and outbound
2022-03-24 05:21:58 -04:00
zzz
631a6dd2b2 I2CP: Synch fixes
Synch fields in the data messages both directions,
after one report of zero session ID in MessagePayloadMessage
to an external client on fast hardware with Java 18.
Add new constructors for efficiency.
Deprecated setters, unit tests not changed, TODO.
Should fix all the other messages also, TODO.
2022-03-23 07:25:01 -04:00
zzz
0154a87cbf SSU2: Refactor tokens
Store OB tokens by IP/port
Centralize token generation and expiration in Establishment Manager
Add methods to flush OB tokens on IP/port change
Log tweaks
Javadoc fix
2022-03-23 06:46:01 -04:00
zzz
4f8ad3b6cb Router family fixes
Don't overwrite an existing family keystore file
Don't allow starting a new family with an existing family keystore file
Don't add family to RI until we have restarted and have a keystore file
Don't fail a netdb store for no family sig
Don't ever fail our own netdb store for family errors, to avoid rekey/restart
2022-03-22 08:03:18 -04:00
zzz
458e980e2f bump -10, javadoc typo 2022-03-20 07:59:32 -04:00
zzz
e08d2f354a File missed in previous netdb checkin 2022-03-20 07:57:43 -04:00
zzz
037e6940a9 SSU2: More work on peer test
generate msgs 1,5-7
handle msgs 5-7
log tweaks
2022-03-20 07:53:41 -04:00
zzz
b3055feff6 NetDB: Remove duplicate store in FloodOnlyLookupMatchJob
which bypassed all the checks in HandleFloodfillDatabaseStoreMessageJob
Don't store an entry which is older
2022-03-20 07:45:33 -04:00
zzz
c520dcb0f6 NetDB: Refactor family validation
Return a result code from verify()
Load all known certs at startup rather than continually reloading them
Only give full verified status to known keys
Enforce signatures in netdb store when key is available
Show family verification status on /netdb
Export our cert to disk if missing
Add stormycloud family cert
Bypass /24 Sybil penalty
2022-03-20 07:41:49 -04:00
zzz
fc88d672c5 Console: Fix rare IAE on destination sort 2022-03-18 11:40:09 -04:00
zzz
c62884ef85 SSU2: Implement peer test state machine
msgs 5-7 still TODO
WIP, untested
2022-03-18 10:21:30 -04:00
zzz
d9c629a6b1 SSU2: Log tweaks 2022-03-17 16:45:16 -04:00
zzz
70b7d1204b SSU2: Still more prep for Peer Test (WIP) 2022-03-17 16:43:24 -04:00
zzz
a90bbc3554 SSU2: More prep for Peer Test (WIP) 2022-03-17 16:10:26 -04:00
zzz
c2ec6cdeff SSU2: Set _lastACKSend 2022-03-17 16:08:15 -04:00
zzz
f57abe84bd SSU: Peer Test refactor
to store Bob's PeerState directly in PeerTestState
prep for SSU2
2022-03-17 16:04:28 -04:00
zzz
a1ee8220bb SSU2: Relay and Peer Test WIP
Packet building, fix peer test block
Not hooked in
2022-03-17 10:48:10 -04:00
zzz
ce73b9e8da Console: Remove CSS for hidden text on /graph 2022-03-16 07:59:55 -04:00
zzz
e6c3c097b5 Console: Remove UTC text already hidden by CSS 2022-03-16 07:47:26 -04:00
zzz
8961009292 SSU2: Minor cleanups
Add min packet size constants and notes
Don't attempt to decrypt a packet as a new inbound session if too small
Remove unused payload[] in IES2, now decrypted in-place
Log level tweaks in Establisher
2022-03-16 07:28:22 -04:00
zzz
de27cb1a46 Util: Increase min log file size limit
Rotate the log before we hit the limit, not after
2022-03-16 07:22:00 -04:00
zzz
e8afbc5b92 Transport: Don't use HE addresses for GeoIP
Limit max MTU for HE addresses
2022-03-15 14:30:04 -04:00
zzz
587409daa7 SSU2: Compress large RIs in Session Confirmed
even if they would fit in the MTU uncompressed,
to save bandwidth and room for other blocks
2022-03-15 07:23:53 -04:00
zzz
af5019c8dd SSU2: Fixes part 11
Save data messages received before or immediately after session confirmed
by queueing them for processing after the PeerState2 is created.
The fragments for the first I2NP message from Alice to Bob are frequently lost,
this will hopefully fix it.
Not fully tested, needs wider network testing.
2022-03-15 07:20:23 -04:00
zzz
46bba0fe71 SSU2: Fixes part 10
Avoid relaying until it's implemented:
Don't use SSU2 for an SSU address with introducers (fixes NPE)
Don't connect to SSU2 address without host/port
Don't ask for relay tag
Log tweaks
2022-03-15 07:12:25 -04:00
zzz
049456493f SSU2: Stubs for relay and peer test (phase 2) 2022-03-13 12:42:13 -04:00
zzz
2f63762c80 SSU2: Fixes part 9
Fix length calculation to see if new token block will fit in session confirmed
Extend timeout after sending retry
Fix retx timer for sess req after sending token req
Remove dup call to confirmedPacketsSent()
Cancel ack timer when sending acks
Include intro key in firewalled addresses too
Use SSU2 version of ping packet for SSU2 peers
Reduce max padding
Log tweaks
2022-03-13 07:33:36 -04:00
zzz
ca0d9f5a26 Tunnels: Reduce build reply timeout 2022-03-12 11:37:29 -05:00
zzz
aa620f5ed3 SSU2: Fixes part 8
Fix packet length for retransmitted handshake messages
Expire pending acks
2022-03-12 11:08:20 -05:00
zzz
15bb157126 NTCP: Encrypt handshake options in-place
round timestamp in Session Created
2022-03-12 09:48:33 -05:00
zzz
7e3e42ce42 i2psnark standalone: Add DTG and notifications 2022-03-11 07:23:46 -05:00
zzz
981c5e3878 i2psnark: Don't js-reload CSS on first click 2022-03-11 07:13:09 -05:00
zzz
393ee71ad9 SSU2: Fixes part 7
Clean up and optimize ack handling
Log tweaks and javadocs
2022-03-10 10:27:19 -05:00
zzz
97736cef1c SSU2: Fixes part 6
MTU and related fixes:
Fix max fragment size
Fix max space for acks
Fix max packet size
Pull MTU from best address in Session Confirmed
Pass MTU from establish state to peer state
Use SSU2 min/default/max MTU in PeerState
Stop looping when out of space in OMF (SSU 1 too)
2022-03-09 13:53:16 -05:00
zzz
25af51faf9 SSU2: Fixes part 5
Correctly calculate skew after retry in establish state
Pass calculated skew from establish state to peer state
Round time in DateTime block
Periodically send DateTime block
Handle DateTime block in peer state
2022-03-09 07:04:31 -05:00
zzz
a717dfb923 DTG: Add new ExternalMain class for app context use
that does not require router.jar
and rework other classes as necessary
2022-03-09 05:21:58 -05:00
zzz
e594b9532c SSU2: Track dup packets received
Log tweaks
2022-03-09 04:37:36 -05:00
zzz
a7a5b06b5c I2NP: Fix TunnelGatewayMessage.calculateWrittenLength()
so it doesn't null out the contained message.
Required for SSU2.
Unrelated TunnelDispatcher cleanup done while trying to find the problem.
2022-03-08 05:39:47 -05:00
zzz
eb72e97c03 SSU2: Fixes part 4
Fix deadlock in AckTimer
Enforce token in IES2
Increase bitfield sizes in PS2
Log tweaks
2022-03-07 10:44:17 -05:00
zzz
25cdc988e1 SSU2: Fixes part 3
Handle acks
Set ack timer
Retransmit session confirmed
Fix bitfield constructor when no ranges
2022-03-07 09:55:10 -05:00
zzz
3ce669575f SSU2: Fixes part 2
Add method to put additional blocks in data messages
Send and handle termination blocks
2022-03-06 07:31:16 -05:00
zzz
63aa64f8bb Console: Improve class selection on /configlogging 2022-03-06 06:16:59 -05:00
zzz
a6f61d2bf6 SSU2: Fixes part 1
after initial testnet testing

Use correct intro key for Session/Token request
Fix state management in EstablishmentManager, OES2, IES2
Fix next send time during handshake
Fix header decryption in PacketHandler
Add additional packet checks in IES2 handling
Remove expired IES immediately (SSU1 also)
Failsafe sleep in EstablishmentManager on exception
Remove dup requestSent() calls
Don't release packet in PS2
Log tweaks and javadocs
2022-03-06 06:15:23 -05:00
zzz
9457271ce6 Transport: Fix wasUnreachable() for transports with alt style
Only affects NTCP for now.
This bug had little impact when both transports were enabled,
but significantly harmed connectivity and tunnel building for NTCP2-only.
Decrease unreachable cache time in testnet
Make cache cleaner a little more efficient
2022-03-04 09:17:26 -05:00
zzz
22512d3889 i2psnark standalone: Add more CLI messages
Increase memory
2022-03-04 07:15:16 -05:00
zzz
a7115263f0 i2psnark: Reduce log level 2022-03-04 05:57:27 -05:00
zzz
c4b167b845 i2psnark: Fix css icon link 2022-03-04 05:52:44 -05:00
zzz
5e09245234 i2psnark: Add js theme preview 2022-03-04 05:47:18 -05:00
zzz
fee38c1c32 Console: Add SSU version column to /peers 2022-03-04 05:36:18 -05:00
zzz
a1ced67bad Transport: Fix port selection for NTCP-only 2022-03-04 05:06:01 -05:00
zzz
87f7d470a6 bump -3 2022-03-03 13:38:37 -05:00
zzz
32d60858da NTCP: Start out reachable if SSU disabled
So peers will attempt to connect
2022-03-03 13:37:28 -05:00
zzz
be4ad7eba9 NetDB: Load reseed RI if newer than that in-memory
previously, was only loaded if not known at all
2022-03-03 13:11:08 -05:00
zzz
7f8fa825ac SSU2: More debug logging additions/fixes 2022-03-02 11:08:57 -05:00
zzz
1cd5926f6c SSU2: Debug logging additions/fixes 2022-03-02 11:04:19 -05:00
zzz
9c31be66e6 SSU2: Data phase updates
Send immediate ack of Session Confirmed
Process I2NP messages and fragments in Session Confirmed
2022-03-02 10:47:47 -05:00
zzz
0e89b07ae8 SSU2: Data phase fix
Fix initialization of IMS when receiving last fragment first
2022-03-02 09:37:10 -05:00
zzz
7b6e6270ba SSU2: Data phase more fixes
Fix writing follow-on fragment block
Call messageFullyReceived() for I2NP block
Override messageFullyReceived() to avoid NPE
2022-03-02 09:05:09 -05:00
zzz
9d9310a726 SSU2: Data phase fixes
Fix receiver CipherState key
Override clearWantedACKSendSince() to avoid NPE
Add/tweak debug logging
2022-03-02 08:32:22 -05:00
zzz
0f26baf114 SSU2: Implement split()
Use socket address in PacketBuilder2
Decrypt session confirmed in-place
Check for RI in session confirmed
Copy session confirmed to PeerState2 for retx
RTT calculation fixes
State transitions
Javadoc fixes
WIP, untested
2022-03-01 13:52:16 -05:00
zzz
5ef93f11a9 Util: Add Addresses.getConnectedAddressTypes()
method to efficiently get all types in one pass
2022-03-01 07:25:49 -05:00
zzz
ce53714ba1 Util: Add AddressType enum 2022-03-01 05:48:20 -05:00
zzz
50ce3c2856 NetDB: New reseeds 2022-03-01 05:15:49 -05:00
zzz
21c1f89249 SSU2: Validate DateTime block in handshake messages 2022-02-28 16:50:41 -05:00
zzz
46ef49f2cf SSU2: Token Req. and Retry fixes
Fix Token Request and Retry payload generation
Implement Token Request and Retry payload decryption
Decrypt payloads in-place
Change from numbers to constants
2022-02-28 16:24:59 -05:00
zzz
e53a59b4ac SSU2: fix PS2 packet numbering 2022-02-28 13:36:19 -05:00
zzz
a13f2b9768 SSU2 more fixes
Fix OES2 MTU
Fix Token Request header encryption
2022-02-28 12:32:36 -05:00
zzz
44c30e78fc SSU2 fixes
Fix NPE in PS2
Fix Token Request message type
2022-02-28 10:01:05 -05:00
zzz
ec63f41b27 SSU2: Handle handshake messages
Decrypt handshake headers in Packet Handler
Pass handshake messages to Establishment Manager
SSU 1 and 2: Pass establish state to Establishment Manager
so it doesn't have to look it up again
Add notes about causes of decrypt failures
WIP, untested
2022-02-28 09:18:06 -05:00
zzz
c19944384e SSU2: Fix packet numbering to match spec 2022-02-27 14:50:13 -05:00
zzz
0c08a05bce SSU2: Hook in new classes to EstablishmentManager
Implement handshake retransmissions
Fix up calls to IES2/OES2
split() TODO
not hooked in to PacketHandler yet
WIP, untested
2022-02-27 12:03:28 -05:00
zzz
7eda9c77af SSU: Don't use SSU2 for peer test or relay
Add getAltStyle() so getTargetAddresses() will return SSU2
Add getSSUVersion()
2022-02-27 06:38:43 -05:00
zzz
66045cebc2 SSU2: Store RI in IES2 2022-02-27 05:41:48 -05:00
zzz
2b93dbbf48 SSU2: Add token support to EstablishmentManager 2022-02-27 05:26:04 -05:00
zzz
759f6968f6 Add SSU2 support to OMF 2022-02-26 17:15:07 -05:00
zzz
e3db28542c SSU2: Fix overhead calculations 2022-02-26 16:33:35 -05:00
zzz
e7f98e9243 SSU2: Add acks to data messages
implement buildPing() and buildACK()
2022-02-26 15:39:50 -05:00
zzz
4908f760d9 SSU2: PeerState2 I2NP handling
Handle complete messages and fragments in PeerState2
Send complete messages to transport
Add SSU2 constructor and reader in IMS
Change fragment callback to avoid an extra copy
Fix checks of fragment blocks
MessageReader cleanups for SSU1
Other cleanups

WIP, untested, not hooked in
2022-02-26 11:31:04 -05:00
zzz
6bb3657de2 SSU2: Start of packet handling
Store CipherStates in PeerState2
Add missing getVersion() overrides
2022-02-26 08:25:55 -05:00
zzz
dc40755e7c Sybil: Improve family analysis
Increase credit if family sig is verified
Speed up analysis by only looping through RIs once
Add link to all family members
Add SUNYSB certificate
bump -2
2022-02-25 10:36:17 -05:00
zzz
140ab47354 Fix SSU2 enable logic 2022-02-24 14:42:33 -05:00
zzz
da887f7c6c SSU2: Publish keys and version in address when enabled 2022-02-24 08:49:57 -05:00
zzz
f4be99ecd0 SSU: Add SSU2 class extensions and packet builder
Pass XDH key builder to UDPTransport
Add SSU2 static keygen when enabled
WIP, not hooked in
2022-02-24 06:13:28 -05:00
zzz
b8407a261e SSU2: ACK bitfield support and conversion to ACK block
WIP, not hooked in
2022-02-23 15:55:03 -05:00
zzz
969a8a5d8a SSU: Add support for SSU2 fragmentation to OMS 2022-02-23 15:22:40 -05:00
zzz
b57d9f2f7e SSU: More prep of classes for SSU2 extension 2022-02-23 11:57:03 -05:00
zzz
c9a97d889b SSU: Prep classes for SSU2 extension
add SSU2 states
2022-02-23 10:55:51 -05:00
zzz
51bdd9a283 SSU: Add getVersion() methods (prep for SSU2) 2022-02-23 09:25:21 -05:00
zzz
04dd18615c i2psnark: Load sytem mime types if available 2022-02-23 08:12:39 -05:00
zzz
265f5ee5df Util, i2ptunnel: Update firefox user-agent 2022-02-23 07:08:34 -05:00
zzz
9c3f8602da i2psnark standalone: Add startup message
update readme
2022-02-23 06:28:42 -05:00
zzz
74dedcf7f0 SSU2: More WIP 2022-02-23 06:12:35 -05:00
zzz
ae2b99b1c6 Build: Fix it 2022-02-22 14:53:41 -05:00
zzz
818ecc3563 Build: Fix testscripts target 2022-02-22 14:52:35 -05:00
zzz
5ccbeca676 bump -1 2022-02-22 10:34:31 -05:00
zzz
a621f56c33 Console: Add search for SSU2 transport 2022-02-22 10:32:25 -05:00
zzz
1513695768 Update: Add notification for new version
remove old Java 7 check
2022-02-22 10:30:41 -05:00
zzz
63e202f8f0 SSU: Start of SSU2 support
WIP, not hooked in
2022-02-22 10:27:42 -05:00
zzz
80535875ad SSU: PacketHandler cleanup (prep for SSU2) 2022-02-22 10:22:16 -05:00
zzz
f0ad921fd2 NetDB: Prevent rare deadlock via FloodfillMonitorJob at startup 2022-02-22 10:06:07 -05:00
zzz
63f3d88f78 Util: Speed up PRNG nextInt() and nextLong()
Add signedNextInt()
2022-02-22 09:57:35 -05:00
zzz
9f7f1bbcab Crypto: Prep for SSU2
- ChaCha20: Add ivOffset param
- ChaCha20/Poly1305: Add adOffset/adLength params
- Noise: Add XK-SSU2 initializer
- Noise: Add notes about handshake offsets
2022-02-22 09:45:22 -05:00
zzz
edc9d6fec5 NTCP: Reduce max writer threads 2022-02-22 09:07:58 -05:00
zzz
a089156afc Remove BOB source 2022-02-22 08:58:56 -05:00
zzz
767a5043ab Debian files for 1.7.0 2022-02-22 08:04:03 -05:00
zzz
3b9c26fe8a 1.7.0 2022-02-21 09:12:59 -05:00
zzz
961936f8d5 bump for review 2022-02-18 13:58:02 -05:00
zzz
7ea31835c2 more translations from Transifex 2022-02-18 13:44:08 -05:00
zzz
bf1f2e4635 pull translations from Transifex 2022-02-18 13:39:24 -05:00
zzz
198008472a i2psnark standalone: Raise open files ulimit
copied from i2prouter script
2022-02-17 13:58:10 -05:00
91e9d95df7 Merge branch 'docker-host-networking' into 'master'
Make Docker host networking safer

See merge request i2p-hackers/i2p.i2p!54
2022-02-16 15:53:32 +00:00
1b5feda517 generic advice for cloud deployments 2022-02-16 15:51:28 +00:00
29f74ba72a change interfaces 0.0.0.0->127.0.0.1 and update documentation 2022-02-16 11:14:10 +00:00
zzz
d6684403a2 Add new Japanese man pages 2022-02-12 13:47:52 -05:00
zzz
388aa233e0 Add new Slovenian translated resources 2022-02-12 13:30:33 -05:00
idk
ea92b79340 set table-width to fixed on console dark theme, and run the auto-indenter on the console light theme to fix it's inconsistent tabs. Merge the chrome-overrides rules on the console light theme CSS. Changes to light theme are entirely cosmetic, except that they improve the reliability of my CSS linter. 2022-02-11 23:01:51 -05:00
idk
3ba754d723 Merge branch 'master' of github.com:i2p/i2p.i2p 2022-02-11 15:34:41 -05:00
idk
d651d25de6 Merge pull request #26 from zlatinb/github-actions
Use GitHub Actions to publish installer.jar on each push
2022-02-11 15:32:37 -05:00
idk
00ea32938e set .wizardimg css to display: none on the dark theme so the light-theme background images don't show up. Normalize the wildly inconsistent tabs tabs in console.css 2022-02-11 15:27:50 -05:00
37002822b3 install.jar fix name 2022-02-11 19:50:40 +00:00
50d56ccbe8 gettext 2022-02-11 19:46:27 +00:00
48cb6f79ef Use GitHub Actions to publish installer.jar on each push 2022-02-11 19:38:04 +00:00
idk
a325e63426 use updateType instead of key for error message in ConsoleUpdateManager with custom UPP 2022-02-10 12:42:50 -05:00
zzz
309e306337 javadoc fixes 2022-02-10 09:02:39 -05:00
zzz
2ba56a5e17 Bump build time 2022-02-10 08:39:46 -05:00
zzz
c949ad5205 Update Manager: Add an UpdateType for the API version 2022-02-10 08:37:52 -05:00
zzz
5621b4bf97 GeoIP 2022-02 2022-02-10 08:28:19 -05:00
idk
dbfe8d24a8 log not-found key should an UPP error occur 2022-02-09 21:33:32 -05:00
zzz
548c0994a7 poupdate-source 2022-02-09 14:25:09 -05:00
zzz
d0ca1d38ca NTCP: Fixes for SSU disabled
Update RI reachability after first inbound connection
Allow local address in test mode
2022-02-09 06:39:18 -05:00
idk
96560e8590 Increase size of unicode links on proxy.css 2022-02-07 00:26:18 -05:00
zzz
19712cfd95 SSU: Fix race NPE in debug logging 2022-02-06 09:51:46 -05:00
idk
3dcc954341 Put description of jump link function on newline in proxy.css 2022-02-04 17:26:27 -05:00
zzz
568b5e303f Tunnels: Avoid buggy routers
SSU: Don't bid on connection to buggy routers
2022-02-03 10:36:03 -05:00
idk
73d90ed5c4 Don't add os-arch to pluginname if it's already correct 2022-02-03 01:51:33 -05:00
idk
b2fe36b0d3 Revise ShellService.name to match ShellService directory if the directory includes -SystemVersion.getOS or -SystemVersion.getArch 2022-02-02 17:37:02 -05:00
idk
632a1578a2 Check executable status of shellservice plugins in start. If the ShellService plugin name doesn't correspond to a directory, check plugin name+-$OS-$ARCH and name+$OS. 2022-02-02 15:18:25 -05:00
idk
e28f4be46b Merge branch 'plugin-config-redux' into 'master'
Adds the ability to use `$OS`  and `$ARCH`  variables in clients.config and plugins.config(updateURL.* only)

Closes #340

See merge request i2p-hackers/i2p.i2p!52
2022-02-02 18:57:30 +00:00
idk
73e34b3941 Adds the ability to use $OS and $ARCH variables in clients.config and plugins.config(updateURL.* only) 2022-02-02 18:57:30 +00:00
b4e2366458 Merge branch 'filefilter-fix' into 'master'
Fix for FileFilterDefinitionElement.  Issue #349

See merge request i2p-hackers/i2p.i2p!50
2022-01-31 13:22:44 +00:00
1389e89f6d Merge branch 'junit-deprecations' into 'master'
fix junit deprecations, issue #339

See merge request i2p-hackers/i2p.i2p!51
2022-01-31 13:11:17 +00:00
c3abe7b3d4 Do not use forEach 2022-01-31 13:10:26 +00:00
042c1e88aa fix junit deprecations, issue #339 2022-01-31 11:39:57 +00:00
899ce0f959 Fix for FileFilterDefinitionElement. Issue #349 2022-01-31 04:38:48 +00:00
zzz
5dd8139aad Reseed, DoH: Fixes for IPv6-only 2022-01-30 11:25:36 -05:00
zzz
13ee324d36 NTCP2: Clock skew handling improvements
as discussed in #ls2 meeting
- Bob replies with Session Created even if skewed,
  so that Alice finds out what the skew is
- Alice handles Session Created timestamp and drops if skewed,
  bans Bob, and updates clock if NTP failed
- If Alice does reply with SessionConfirmed, Bob will send a
  destroy with a skew error code
- Don't change skew error code if netdb store failed
- Fix skew adjustment for RTT by Bob
- Call setLastBadSkew() in the right places
- Fix ntcp.invalidInboundSkew and ntcp.invalidOutboundSkew stats
2022-01-26 07:28:43 -05:00
zzz
afa7278080 NTCP: Ban IP if RI signature fails 2022-01-25 12:22:57 -05:00
zzz
b6be2d7e65 bump -9 2022-01-25 09:42:33 -05:00
zzz
78ba3d1f68 Console: CSS tweak for messages 2022-01-25 09:41:12 -05:00
zzz
d930f0a64a Console: Set encoding for CSS 2022-01-25 09:40:02 -05:00
zzz
c1dc3c8275 Data: Remove dup check for negative tunnel ID 2022-01-25 09:37:26 -05:00
zzz
8bf87da4b1 Transport: BW limiter log and javadoc improvements
Portion of gitlab MR !49
2022-01-25 09:35:33 -05:00
zzz
8812e822f9 Util: CDPQ stat description tweak 2022-01-25 09:29:43 -05:00
zzz
f17cd24dc8 UDP: Pass message priority through to the packets
Change UDP-Sender queue from CoDel to CoDelPriority
No change to CoDel params

UDP msg priorities:
High priority: ack-only, session request/created/confirmed, relay request, hole punch, injected
Low priority: ping, destroy, peer test, relay intro/response
2022-01-25 09:27:49 -05:00
zzz
b9f53069bb Tunnels: Reimplement, re-enable using tunnel builds as a tunnel test,
but without ooming
disabled in 2009 because of ooms
2022-01-25 09:10:00 -05:00
zzz
21f5f7c148 Tunnels: Enable tunnel testing by default
disabled since 2011
2022-01-25 09:03:14 -05:00
idk
3057103875 tweak light proxy.css on non-mobile screens 2022-01-23 11:02:47 -05:00
idk
2752015b6e Simplify, add better logging, correctly mark state change in ShellService 2022-01-22 21:26:59 -05:00
idk
f2e0aacbf0 use Arrays.toString to convert trimmed process args to application args in ShellService. 2022-01-22 14:56:04 -05:00
idk
3e8f8a2bd3 add null check to isProcessRunning() in new ShellService 2022-01-22 00:12:37 -05:00
zzz
77e30e246d Util: Fix leak of SimpleTimer2 shutdown task 2022-01-21 09:09:32 -05:00
idk
5e7a00ede4 Merge branch 'fix-docker-configs-support' into 'master'
Allow chown to fail so files can be managed via docker configs and secrets

See merge request i2p-hackers/i2p.i2p!48
2022-01-16 16:45:56 +00:00
ba55ec09ed Allow chown to fail so files can be managed via docker configs and secrets 2022-01-16 16:45:56 +00:00
zzz
0b058c0ffd i2psnark: Add UDPTrackerClient
WIP - not hooked in, untested - target 1.8.0 / 0.9.54
Requires significant changes to TrackerClient
Adapted from mtn branch i2p.i2p.zzz.udpsnark (2014)
Ref: Proposal 160
2022-01-16 08:58:03 -05:00
idk
61422d9f7f Merge branch 'docker_update' into 'master'
Upgrade base image to latest version of Alpine

See merge request i2p-hackers/i2p.i2p!47
2022-01-15 20:32:48 +00:00
zzz
b63a2e41be i2psnark: html fix 2022-01-15 11:52:13 -05:00
zzz
606961c788 Console: Add ban counts to headers 2022-01-15 06:59:52 -05:00
9573c6ed0f Upgrade base image to latest version of Alpine 2022-01-14 20:17:52 +00:00
idk
70bb63e8ab Make the buttons on the save host form look like the links on the jump host form 2022-01-10 17:16:30 -05:00
idk
b96255a65b Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2022-01-10 14:44:45 -05:00
idk
e15dae5c5f Turn jump button-links back into regular-looking hyperlinks when resolution indicates we are not on a mobile device 2022-01-10 14:28:40 -05:00
zzz
695cf8796d javadoc: Add API version 2022-01-10 09:07:07 -05:00
zzz
175f043819 javadoc: Add message flow chart 2022-01-10 08:57:01 -05:00
zzz
662ea995c1 javadoc note 2022-01-07 10:48:48 -05:00
zzz
b8670e1e5b hosts.txt update 2022-01-07 05:53:50 -05:00
zzz
7f4441078d Router: Prevent deadlock at startup
in the transports through PLRIJ via FNDF.publish()
2022-01-06 07:18:42 -05:00
zzz
150248d8d7 Plugins: Fix webapp classpath setting when the webapp name does not match the plugin name 2022-01-05 16:50:33 -05:00
zzz
aaa1da4c66 Plugins: console-icon path is relative to consoleLinkURL if specified,
otherwise relative to plugin name, as before
2022-01-05 15:08:35 -05:00
zzz
8167f5184d hosts.txt update 2022-01-05 06:25:01 -05:00
zzz
034a5acd37 i2pcontrol: Send translated tunnel status string 2022-01-04 13:09:34 -05:00
idk
7249f21602 redirect output and error from process builder to files within the plugin directory 2022-01-03 14:26:27 -05:00
idk
d1192f74f2 Remove platform-specific workarounds from Java 8+ version of ShellService 2022-01-03 14:18:16 -05:00
zzz
13f910be70 i2ptunnel: Add hooks to get the session from the contoller 2022-01-02 11:23:23 -05:00
zzz
2d42541b79 i2pcontrol: Handle more router states mapping to i2pcontrol states
Linkify start/stop webapp on password page
2022-01-02 11:13:15 -05:00
zzz
131da9bdb9 javadoc fixes 2021-12-30 09:59:26 -05:00
zzz
bc97e955e2 bump -7 2021-12-28 12:24:37 -05:00
zzz
faa1bf117a i2ptunnel: Add IRC filter support for IRCv3 message tags
Required for irc.ilita.i2p
2021-12-28 12:07:07 -05:00
zzz
aa386f3bdc bump -6 2021-12-28 10:02:27 -05:00
zzz
f1170b948f NetDB: StoreJob reliability improvements
- Always use a lease as the reply tunnel when publishing LS through a client tunnel
  This ensures we're not using about-to-expire tunnels for the reply,
  and ensures the ff is able pick an alternate
- Don't count skipped peers as attempted in FloodfillVerify
- Pass failed and skipped peers to FloodfillVerify job to be skipped there also
- Pass failed and skipped peers from FloodfillVerify job to the next StoreJob on failure
- Consolidate common reply token generation code in StoreJob
- Ensure tunnel diversity in StoreJob retries by only
  using tunnels closest to the target for the first request.
  This increases reliability by not reusing the same tunnels for all retries.
- Refactor StoreState to rework inefficient methods and unused data
- Clean up commented-out code in StoreState
- Log tweaks
2021-12-28 09:57:42 -05:00
zzz
59ab40779c NetDB: RepublishLeaseSetJob
Don't requeue on failure if there is a newer LS, KNDF will have already done that.
Log tweaks and cleanups
2021-12-28 09:44:39 -05:00
zzz
85b9862b64 NetDB: Ensure tunnel diversity in ISJ retries
by only using tunnels closest to the target for the first request.
This increases reliability by not reusing the same tunnels for all retries.
2021-12-28 09:24:35 -05:00
zzz
132d76a06b NetDB: SearchJob minor cleanup, only call getHash() once 2021-12-28 09:15:48 -05:00
zzz
c4b4b2d4b2 NetDB: Increase lookup throttle time
This reduces the max lookup rate
2021-12-28 09:12:29 -05:00
zzz
db6914f555 NetDB: Use same dbResponseTime rate in ff peer selector as in KNDF.getPeerTimeout()
10 minute rate is too short
Change to getAvgOrLifetimeAvg()
Reduce max time
2021-12-28 09:02:40 -05:00
zzz
bef729463d NetDB: Fix usage of dbResponseTime stat
Actually update the stat for stores in dbStoreSent();
we are generally storing to different ffs than lookups, so we need the
stat for stores as well, since we use it as the timeout in StoreJob.

Change from 1-day to 1-hour stat.
Switch to avgOrLifetimeAvg() so the rate is always valid.
Reduce max time used for timeout.
This allows more peers to be tried before total timeout
Previously, the per-peer timeout was almost always the max.
Make sendStore() package private.
Javadocs and cleanups.
2021-12-28 08:56:47 -05:00
zzz
d0e72aca66 Console: Partial string case-insensitive match for netdb family search 2021-12-28 08:55:29 -05:00
zzz
46ee8be9c6 i2psnark standalone: Add version number to header 2021-12-27 12:40:33 -05:00
zzz
cc3d2cf67b bump -5 2021-12-27 09:00:11 -05:00
zzz
57c997730f Console: Fix display of ip lookup param with netmask in netdb search 2021-12-27 08:55:49 -05:00
zzz
0826f431ef i2psnark standalone: Fixes for router startup and shutdown
so that torrents stop when the router stops and restart when the router restarts.

- Use BWLimits from the DirMonitor as a periodic test that the router is there
- DirMonitor does not attempt to autostart torrents if BWLimits test fails
- DirMonitor does autostart existing torrents when BWLimits test passes again
- Register disconnect listener with socket manger and stop all torrents on disconnect
- Use stopTorrent(true) on router errors to prevent changing the persisted torrent running status
- Change autostart default to true for standalone

Possibly more todo for corner cases or other start/stop/fail scenarios.
2021-12-27 08:52:56 -05:00
zzz
c63cb378e8 I2CP: Send DestroySession message when destroying session
in client-side AppContext SimpleSession, to prevent router-side
error message when closing socket, e.g. for BW limits check
2021-12-27 08:32:04 -05:00
zzz
242dc92397 Banlist: Increase ban time again for routers without netID
it's not a i2pd bug at startup that fixes itself.
2021-12-27 08:27:11 -05:00
zzz
26f34d6985 Debian: Update URL in watch file 2021-12-23 15:28:07 -05:00
idk
e002d3f558 Move ShellService into net.i2p.router.web 2021-12-23 15:10:24 -05:00
zzz
3d5dd639e3 i2psnark standalone: Use previously translated I2CP connect error 2021-12-23 13:49:18 -05:00
zzz
2bfedfbc74 i2psnark standalone: Translate I2CP connect error 2021-12-23 13:06:58 -05:00
zzz
70131c6b25 i2psnark standalone: Pass ctx to logger 2021-12-23 12:02:19 -05:00
zzz
e946040ddd i2psnark standalone: Redirect jetty logging to i2p log 2021-12-23 11:54:51 -05:00
zzz
bab37e57fe i2psnark: Add note for translators 2021-12-23 11:23:00 -05:00
zzz
70e06de846 i2psnark: Translate theme names, translated sort 2021-12-23 11:01:05 -05:00
zzz
11f60a7192 i2psnark standalone: Set launch-i2psnark +x 2021-12-23 09:47:48 -05:00
zzz
6282c365bb i2psnark standalone: Update readme 2021-12-23 09:12:57 -05:00
zzz
621ea49621 i2psnark standalone: Add da, el, and fa to language menu 2021-12-23 08:16:32 -05:00
zzz
e51738d180 i2psnark standalone: Add jbigi.jar
as requested by R4SAS
2021-12-21 06:51:06 -05:00
zzz
811442f9cb Transport: Async NTCP writes (MR !43)
- Write directly from writer threads, except for during establishment and when write doesn't complete; throw those to the pumper as usual
- New NTCPCon writelock, readlock, and statlock (formerly all on NTCPCon.this) to prevent deadlocks
- NTCPCon chan and key now volatile, remove synch to prevent deadlocks
- All interestOps changes now lock on the key via setInterest() and clearInterest() since changes may now happen in multiple threads
- Set _paddingConfig at initialization to avoid NPE

Greatly reduces pumper loops and CPU

As proposed by jogger
Reviewed by zlatinb
Ref: http://zzz.i2p/topics/3192
2021-12-21 06:37:10 -05:00
zzz
464a39b939 MaskedIPSet: More efficient string generation
and don't IAE on 8 byte negative value
2021-12-19 10:53:50 -05:00
zzz
1a05083ed0 Tunnels: Double mask value for IPv6
rather than using a fixed value of 6
so IPv6 default is now 4
2021-12-19 08:38:13 -05:00
zzz
937b6120ff i2psnark standalone: Add notes about changing browser and port 2021-12-18 07:52:30 -05:00
zzz
2a451cdb97 bump -3 2021-12-18 06:34:21 -05:00
zzz
ccba4a197d Tunnels: Do not allow failed tunnels to be rebuilt 2021-12-18 06:33:36 -05:00
zzz
feaff690a3 Debian build doc update 2021-12-18 06:28:19 -05:00
zzz
098ef9a0ff Tunnels: remove log in test timeout job 2021-12-18 06:27:18 -05:00
zzz
f317d29dd5 javadoc fix 2021-12-18 06:25:04 -05:00
zzz
f17b568f19 Tunnels: Remove old NTCP cost=2 check in MaskedIPSet 2021-12-18 06:22:54 -05:00
zzz
5029516087 i2ptunnel: Use defined SOCKS constants 2021-12-18 06:21:25 -05:00
zzz
69699638ae i2psnark: Add avif mime type 2021-12-18 06:19:49 -05:00
zzz
e6c76fa5ae Console: CSS tweak for update status box 2021-12-18 06:18:49 -05:00
zzz
b8435f5e9e Tunnels: Cleanup settings for IP restriction
Check bounds at initialization
Remove unused setIPRestriction()
2021-12-18 06:17:41 -05:00
zzz
5995b0b7a7 Tunnels: Restore support for IP restriction in client tunnels (MR !45)
Removed in May 2011 when we added fast tier slices
Also add support in exploratory tunnels
Create MaskedIPSet in peer selectors, pass to ProfileOrganizer.selectXXX() for each call.
Not required for one-hop tunnels.
Disable for test networks (i2np.allowLocal)
Reported by 'vulnerability_reports' http://zzz.i2p/topics/3215
2021-12-18 06:14:09 -05:00
zzz
80237a57bd Reseed: Renew SSL cert 2021-12-13 07:01:41 -05:00
idk
c4cfe420a6 disable any chance of JNDI lookups in log4j.properties file by setting %m{nolookups}. I don't think we're actually vulnerable to CVE-2021-44228 if I'm understanding correctly, by default it doesn't seem like we actually use log4j for much of anything and we don't do much logging of arbitrarily crafted remote inputs, but also it seems like this JNDI lookups thing is way more trouble than it could possibly be worth to us. Maybe it's a good idea to make sure it's turned off by default. 2021-12-10 21:01:37 -05:00
zzz
14c5d54f0e Reseed: Server list update 2021-12-10 07:58:08 -05:00
zzz
b1a4a8517e i2ptunnel: Refactor UDPTunnel, Streamr, and SOCKS UDP for I2CP ports
- Add fromPort and toPort to Sink interface (breaking API change)
- Change cache maps from Destination to I2PSocketAddress to include port
- Accept host:port for destination in Streamr Client, use port
  as toPort in pinger
- Change to muxed listener in I2PSource, only listen for
  specified protocols
- Eliminate thread and queue in I2PSource, process messages inline
  in the listener
- Add support for handling both repliable and raw datagrams in
  a single I2PSource instance
- Remove verify option from I2PSource and I2PTunnelUDPServerBase,
  always verify repliable datagrams
- Add getPort() method to UDPSource
- Add a constructor to UDPSink to pass in an existing DatagramSocket
- Change I2PTunnelUDPClientBase to receive both repliable and raw
- Change SOCKSUDPTunnel reply handling strategy to key on I2CP toPort;
  remove ReplyTracker; the tunnel would not have worked before, because
  it expected raw replies only but MultiSink required a destination
  to look up where to forward the reply.
- Mark SOCKSUDPTunnel as preliminary; note lack of support
  for raw replies; untested
- Change Streamr Client Pinger to support fromPort
- Change Streamr Server to remember fromPort in subscriptions
  and use it as toPort in data stream
- Move fields to top of classes for sanity
- Cleanups and log tweaks
2021-12-08 13:05:27 -05:00
zzz
22ff40bc84 Build: Add missing @Override annotations (dep-ann lint) 2021-12-07 15:33:41 -05:00
zzz
b5d7dffb08 Debian: Add explicit dependency on libservlet3.1-java (Debian #997213)
libjetty9-java used to depend on libservlet3.1-java
but now in sid it doesn't.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=997213
2021-12-07 14:14:32 -05:00
zzz
a59cad0066 Router: Tweak shutdown messages
Change one from CRIT to WARN
Translate one of them
Attempt to translate class name in notifications
2021-12-05 07:21:57 -05:00
zzz
cbb6a6db65 DTG: Add menu items to control notifications
Fix check for successful configuration save
2021-12-05 06:38:28 -05:00
zzz
730b9790d9 Console: Remove job queue link on /configservice 2021-12-04 16:54:12 -05:00
zzz
ebf6ca5b34 Console: Case-insensitive sort of jobs on /jobs 2021-12-04 16:03:53 -05:00
zzz
0422134a86 SusiMail: Notify new messages on DTG
experimental
2021-12-04 12:47:47 -05:00
zzz
1a77352fa7 i2psnark: Notify completed downloads on DTG
experimental
2021-12-04 11:59:39 -05:00
zzz
cc971eb34f Build: Fix minimum Java version in installer config 2021-12-04 10:56:45 -05:00
zzz
fa0e59435e DTG: Change icon from white to black on Windows by default
Will be set to the opposite of the console theme.
2021-12-04 10:48:11 -05:00
zzz
962cc31f31 DTG: Show all CRIT messages on DTG.
Experimental, may add a separate config or disable later.
Show I2P starting message in DTG
2021-12-04 09:50:08 -05:00
zzz
87362fd68b i2psnark: Edit torrent page cleanup - remove unneeded info 2021-12-04 08:02:37 -05:00
zzz
51f6bef5dc i2psnark: Respect newlines in torrent comments 2021-12-04 07:38:24 -05:00
idk
a1ea48e2b6 Fix the very first ShellService bug, the long pid should be parsed from the pidString from the wrapper output, or it won't be available 2021-12-03 22:44:46 -05:00
zzz
e9aa3a55cc Add file missing from previous checkin to fix build 2021-12-03 16:51:51 -05:00
zzz
d03c690724 Tunnels: Immediately fail outbound tunnels when
we can't connect to the first hop
by attaching an onSendFailJob in OutboundSender.
Check if failed in isValidTunnel()
2021-12-03 12:51:01 -05:00
zzz
2a900a8c5b i2psnark: Add torrent edit page
Additional UI cleanup to follow
2021-12-03 06:26:14 -05:00
zzz
de995761db Tunnels: Change tunnel test failure count to AtomicInteger 2021-12-03 06:15:37 -05:00
zzz
cfbdf8385d Tunnels: Count consecutive build timeouts per-pool
Use exploratory paired tunnel after too many timeouts
2021-12-03 06:10:21 -05:00
zzz
83b959c4a1 Tunnels: Remove 2nd arg on TestJob failure stats 2021-12-03 05:51:56 -05:00
zzz
e66ec208a8 Tunnels: Refactor build completion handling
- Add result code to BuildExecutor.buildComplete() and TunnelPool.buildComplete()
- Remove BuildExecutor.buildSuccessful(), move to buildComplete()
- Move ExpireJob creation to buildComplete()
- TunnelPool.buildComplete() now calls addTunnel()
- Eliminate some now() calls
2021-12-03 05:48:27 -05:00
zzz
cf22186182 Router: Shorter ban time for localhost addresses 2021-12-01 15:51:44 -05:00
zzz
890a8927a5 DTG: Add notification service to display popup messages
unused for now
2021-12-01 08:37:51 -05:00
zzz
dd439bc9be Transport: Add NTCPConnection.getRemoteIP()
to match SSU PeerState method
2021-11-30 11:24:24 -05:00
zzz
537a8bf19b Console: Linkify router hashes on Sybil analysis 2021-11-30 11:14:51 -05:00
zzz
bd0c696b84 CLI: Allow empty blocklist when signing news feed 2021-11-30 11:11:30 -05:00
zzz
5c56884d7f bump -1 2021-11-30 10:51:33 -05:00
zzz
b53707074f DTG: Add classpath to jar, add early check for support when called by CLI
for ease of command-line testing
2021-11-30 10:26:52 -05:00
zzz
6cb8d2eeb7 i2ptunnel: Increase default priority for IRC and standard tunnels 2021-11-30 10:23:14 -05:00
zzz
3895cd1068 Console: NetDB search form improvements 2021-11-30 09:53:44 -05:00
zzz
5b2fbc4ec4 Build: Add bumpBuildTime target 2021-11-30 09:35:06 -05:00
zzz
87654e2f4f Build: Remove BOB from installer, updater, and clients.config
Source remains for now and may still be built with ant buildBOB.
Existing non-package installs will continue to work.
2021-11-30 09:31:06 -05:00
zzz
9c29f8c8ff Debian files for 1.6.1
fix a lintian warning about compare-versions
update launchpad doc for git
2021-11-30 08:53:49 -05:00
zzz
619c36d18d 1.6.1 2021-11-29 12:21:54 -05:00
zzz
cf10a2d5b6 Tunnels: Fix NPE in BuildHandler 2021-11-29 12:19:02 -05:00
zzz
56fdc244d4 1.6.0 2021-11-29 10:41:18 -05:00
zzz
adc69c0d9a Refresh Debian patch 2021-11-29 10:31:55 -05:00
zzz
dd9a5548a8 Man pages: Update bug reporting URL 2021-11-27 08:52:30 -05:00
zzz
ab88f86954 ShellService: More import cleanup 2021-11-27 08:05:57 -05:00
zzz
9466b225b6 blocklist update 2021-11-26 12:47:35 -05:00
zzz
ef1e2b02de Build: Fix the tagged string with '75%'
which causes gettext to add a java-printf-format directive,
then the testscript fails if the translated
string doesn't have a '%' in it; strip out the directive
Bump for review
2021-11-26 11:13:41 -05:00
zzz
ee68aec647 Pull translations 2021-11-26 11:06:29 -05:00
zzz
3dfeb92b63 Update bug report links 2021-11-24 10:33:30 -05:00
zzz
ee5288ebb1 i2ptunnel: AccessFilter findbugs 2021-11-24 09:08:18 -05:00
zzz
488acdfd98 Util: ShellService findbugs and cleanups 2021-11-24 08:59:08 -05:00
idk
ee2e7ec30d Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.i2p 2021-11-23 14:08:19 -05:00
idk
40466bc602 Tweak location of dark theme animation. Closes #335 2021-11-23 14:06:41 -05:00
zzz
d8d6954ef0 BuildTime update 2021-11-23 09:57:59 -05:00
zzz
0aa4550bbe Add Hungarian man pages 2021-11-23 07:51:47 -05:00
zzz
ad82946fd3 Tunnels: Drop request if hop throttle exceeded by 50%
Revert banning peer in throttles
2021-11-23 07:25:53 -05:00
zzz
77b48a48ab Console: Remove tinhat from home page at op's request 2021-11-22 09:38:35 -05:00
zzz
d948fa8db3 Update: Fix registered version of feed blocklist after update 2021-11-21 08:50:10 -05:00
zzz
31393c2bef Update: Add message about pack200 plugins 2021-11-21 08:32:09 -05:00
zzz
e3fc34ef1f Tunnels: Ban peer on excessive build requests
Drop requests if previous or next peer is banned
Console: Drop peer when manually banned
Update: Drop peer when banlisted
2021-11-21 08:17:43 -05:00
idk
d7fdd6d9dc Merge pull request #24 from kfeoktistoff/debian_mkdir_log_on_startup
debian: create a log dir on startup if absent
2021-11-20 21:53:06 +00:00
idk
5a3a7b843a Merge pull request #23 from shisheng-1/Modify_GRADLE_1
Improve GRADLE build Performance
2021-11-20 21:22:01 +00:00
e06f8961b4 debian: create a log dir on startup if absent 2021-11-20 17:35:28 +00:00
idk
9d1aa5b762 Merge branch 'shellservice' into 'master'
Manage Fork-and-Exec Plugins by Monitoring them by PID

See merge request i2p-hackers/i2p.i2p!39
2021-11-17 17:42:50 +00:00
idk
2e71a0b36a Manage Fork-and-Exec Plugins by Monitoring them by PID 2021-11-17 17:42:45 +00:00
zzz
b072f40ed1 Initial Slovenian translations for a few resources
not added to menu yet
2021-11-17 09:00:00 -05:00
zzz
35d2f118ce poupdate-source 2021-11-17 08:30:23 -05:00
idk
3f7f315951 Place .wizardnotice at bottom right of screen above the buttons on both dark and light themes(#335) 2021-11-16 12:21:40 -05:00
zzz
6ef4c74d97 NTCP: Move wantsWrite(byte[]) from EventPumper to NTCPConnection
for sanity in following the write code path, rather than
going from con to pumper to con, keep the code in con.
Prep for possible write-side improvements in a future release,
ref: http://zzz.i2p/topics/3192
2021-11-16 11:09:05 -05:00
zzz
0e4d684e7d NetDB: Add new reseed 2021-11-16 10:58:38 -05:00
zzz
e3be6b50ce Tunnels: Use connected peer for closest inbound hop when
approaching conn limits to increase tunnel build success

This should reduce chances of tunnel builds pushing us over conn limits,
and reduce build failures and watchdog warnings when at conn limits.
2021-11-12 07:21:27 -05:00
zzz
dad2bed334 GeoIP 2021-11-01 2021-11-09 08:35:11 -05:00
zzz
bbe66f0e18 Util: DoH server list update 2021-11-08 13:04:01 -05:00
27bf65c1a4 Improve GRADLE build Performance 2021-11-06 00:13:26 +08:00
zzz
9c7b415d62 Util: Don't warn for new SU3 file types 2021-11-03 08:11:05 -04:00
zzz
78e4572a8c CSS button and checkbox spacing,
NTCP table fixes
2021-10-28 09:08:52 -04:00
zzz
4507ecd5f2 javadoc PKF clarification 2021-10-28 09:06:54 -04:00
zzz
721d39c01d Remove UDPPacketReader logging 2021-10-28 08:25:43 -04:00
zzz
427fc1c1ca More javadocs on getLibDir() 2021-10-27 10:02:45 -04:00
idk
33f1b3be87 Merge branch 'add-libdir' into 'master'
Add an i2p.dir.lib property

See merge request i2p-hackers/i2p.i2p!40
2021-10-26 16:22:37 +00:00
idk
7e1c8c7983 Add an i2p.dir.lib property 2021-10-26 16:22:36 +00:00
idk
aa6b27d829 Merge branch 'backup-locale-conf' into 'master'
This adds inclusion of /etc/locale.conf to i2prouter i2p.init, per backup's...

Closes #326

See merge request i2p-hackers/i2p.i2p!41
2021-10-26 16:06:13 +00:00
idk
999e2615c3 This adds inclusion of /etc/locale.conf to i2prouter i2p.init, per backup's... 2021-10-26 16:06:12 +00:00
zzz
807b7d672f Debian: Update JRE dependencies 2021-10-23 12:03:49 -04:00
idk
685a2f1e39 4217a05ae9 and 1e70849bde were mis-tagged, cannot rewrite history on master, they apply to #335 and not #338 2021-10-21 13:53:48 -04:00
idk
4217a05ae9 Make the background images closer to exactly the same size on /welcome, #338 2021-10-21 13:40:28 -04:00
idk
1e70849bde Checkin consistency fixes for wizard themes, should address remaining issues with #338 2021-10-21 12:53:01 -04:00
zzz
1ab3e9b310 SSU: Send Bob-to-Alice Peer Test message in-session
Matches what i2pd does.
More checks to require in-session for
Alice/Bob and Bob/Charlie Peer Test messages.
2021-10-20 09:37:32 -04:00
zzz
fd2cf972bf Javadoc typos 2021-10-14 07:49:02 -04:00
zzz
d9eed6446e Util: Add more Intel processors to CPUID 2021-10-13 08:51:12 -04:00
zzz
6b823e6381 Tomcat 9.0.54 2021-10-11 10:46:26 -04:00
zzz
917b7e615e javadoc fix 2021-10-11 07:43:15 -04:00
zzz
af97381461 Jetty 9.3.30.v20211001
Remove patched SslConnection.java for Jetty #6072, fix included in this release
2021-10-10 12:09:12 -04:00
idk
4975bb1482 Fix positioning of options on welcome page between instructional text and progression buttons 2021-10-06 11:43:21 -04:00
zzz
83e2246195 Console: eepProxy -> proxy 2021-10-05 10:32:20 -04:00
zzz
3632070e3f i2ptunnel: Move the "(0 = unlimited)" text from section headers to tooltips 2021-10-05 09:56:55 -04:00
zzz
0cb30a085c i2ptunnel: Save access list as B64 to save space
Convert access list to B32 and sort in UI
Remove blank lines in get/set
2021-10-05 09:34:57 -04:00
zzz
a7a59a2b1b NetDB: Reduce ban time for routers without netId
Don't ban routers with bad netId before RI validation,
unless that router sent the RI
2021-10-05 08:40:30 -04:00
zzz
bf7155b935 NetDB: Consolidate getKBucketSetSize() calls
reported by jogger
fix javadoc
2021-10-03 10:13:04 -04:00
zzz
62fb294f54 Console: Replace n/a with -- on floodfills page for readability 2021-10-03 09:46:18 -04:00
zzz
b7e710b28f Wizard: Add theme picker page
Clean up configui.js
CSS cleanups for new page TODO
Gitlab #335
2021-10-03 09:05:26 -04:00
zzz
4a8534e4e6 SSU: Downgrade fragmentation log errors to warn
reported by drzed
2021-10-02 13:40:23 -04:00
zzz
aa4e2f5c95 Console: ConfigUIHelper minor refactor (prep for wizard) 2021-10-02 09:06:50 -04:00
zzz
fe4fbce7bd Wizard: Add a simple progress ticker to bw test status 2021-10-02 08:10:40 -04:00
idk
33374eacaa add input:disabled and button:disabled to dark theme css 2021-10-01 13:12:21 -04:00
zzz
cea76ed9d5 i2ptunnel: Fix enc type configuration logic 2021-10-01 08:18:07 -04:00
zzz
f41db2685e i2ptunnel: Center text in buttons (light) 2021-10-01 07:40:31 -04:00
zzz
95bf068b0a i2ptunnel: Remove experts-only label for X25519-only option 2021-10-01 07:39:09 -04:00
idk
e2caa246f2 Line up the columns on results page of the bandwidth wizard. Remove some unnecessary box-shadows which are causing optboxes to appear blurry in some cases. 2021-09-30 16:36:46 -04:00
idk
bed013d858 hide notification div when bandwidth test is complete, switch back to green icon for slide messages 2021-09-30 14:14:10 -04:00
zzz
282460cb3f Console: Add js to /configui to preview themes
Save theme change before form processing so no refresh required
Enable/disable reset and apply buttons on config clicks
Prep for theme picker in wizard
2021-09-30 09:55:35 -04:00
idk
f015d1f490 Merge branch 'master' of 127.0.0.1:i2p-hackers/i2p.i2p 2021-09-29 17:56:48 -04:00
idk
f0758ee36f Adjust alignment of notifications and increase contrast on dark theme /welcome, progress on #335 2021-09-29 17:55:49 -04:00
idk
c77e9537ae Adjust alignment of notifications and increase contrast on dark theme /welcome, progress on #337 2021-09-29 17:54:08 -04:00
zzz
b7de63e922 Console: Wizard HTML fixes 2021-09-28 12:15:01 -04:00
zzz
13ade14289 Console: Refactor wizard progress indicator 2021-09-28 09:52:07 -04:00
zzz
2b43e4e4b5 Router: Rekey all Android/ARM routers 2021-09-27 10:26:03 -04:00
idk
571986a78b Add transparent channel to wizardlogo.png s and blend with exclusion instead to improve appearance of logo on dark theme. 2021-09-26 02:24:42 -04:00
zzz
d7c89be9a2 Tunnels: Implement Bloom filter for short TBM
Reduce TBM Bloom filter size and interval for EC routers
2021-09-25 09:12:15 -04:00
zzz
d466fd6799 UDP: Use a single PacketBuilder everywhere 2021-09-22 12:44:28 -04:00
zzz
116ec88f56 UDP: Replace ACKSender thread with per-PeerState delayed ack timers
(low latency improvements part 2)

Timer is created in PeerState messageFullyReceived() and messagePartiallyReceived().
Don't send a delayed ack-only packet if acks are sent in a data packet first.

Reviewed and tested by zlatinb.
Related MRs: !36 !37 !38
2021-09-22 12:12:16 -04:00
346372e002 Merge branch 'ssu-low-latency-2' into 'master'
SSU low-latency changes pt1

See merge request i2p-hackers/i2p.i2p!37
2021-09-17 16:36:42 +00:00
f14b7d53a3 reduce the delay in ACKs to the minimum of rtt/2 and the constant 2021-09-17 17:32:37 +01:00
3355daa334 introduce a lock just for _sendWindowBytesRemaining field 2021-09-17 17:31:45 +01:00
zzz
67fea26638 Wizard: remove 'Tcpbw100' from test status messages 2021-09-16 11:50:44 -04:00
zzz
b1c367777d Console: Add constants for wizard page numbers
to make it easier to add/remove/reorder pages later
2021-09-16 10:50:57 -04:00
zzz
3917dc6d2f I2CP: Don't call listener.readError() after external client disconnect via destroySocketManager()
prevents log error on normal client shutdown
reported and tested by zlatinb
2021-09-10 13:43:26 -04:00
zzz
2d239edf34 Update: Get backup URLs from news feed
Remove hardcoded backup URLs
Parse i2p, clearnet, and clearnet-ssl URLs from news
Write i2p, clearnet, and clearnet-ssl URLs to old news format
Clearnet and clearnet-ssl URLs currently unused; no handler is registered
2021-09-05 10:47:10 -04:00
1fbe084b74 Update build.xml 2021-09-03 07:16:57 +00:00
7a37f09334 Merge branch 'choking-retransmission-fix' into 'master'
Prevent the sender from sending too far ahead of an unacked packet

See merge request i2p-hackers/i2p.i2p!35
2021-09-02 17:26:54 +00:00
1ae05103e4 Prevent the sender from sending too far ahead of an unacked packet 2021-09-02 18:22:12 +01:00
zzz
a66422fa3c Console: Catch error checking systray availability (gitlab issue !331) 2021-08-28 09:05:38 -04:00
zzz
dabc29f8a5 Build: Always echo JDK version 2021-08-27 09:51:32 -04:00
zzz
132da4a35a Debian: Add copyright file to apparmor list 2021-08-27 09:42:28 -04:00
zzz
ea1eac2343 Tunnels: Enable sending short tunnel build messages,
remove debug settings
2021-08-26 10:23:13 -04:00
zzz
569e035bfd Router: Increase rekey probability to 1 in 4 2021-08-26 09:57:16 -04:00
zzz
8b1b5d4eb3 Debian files for 1.5.0
Fix build error dh_installdocs linking from the libjbigi-jni arch package
to an arch:all package, this is an error for compat level 10.
2021-08-26 09:52:40 -04:00
zzz
33f64f7913 build checklists and windows scripts updates for 1.x 2021-08-24 09:58:17 -04:00
zzz
e340fc885d 1.5.0 / API 0.9.51 release 2021-08-23 10:34:39 -04:00
zzz
63b3da265b javadoc fix 2021-08-23 09:21:24 -04:00
zzz
03f2cbfc89 bump -10 for review 2021-08-20 13:58:51 -04:00
zzz
7f5e7e54c0 Add Hungarian readme
fix routerconsole po files failing testscript
2021-08-20 13:19:42 -04:00
zzz
30aab77047 Pull translations from Transifex 2021-08-20 12:56:07 -04:00
zzz
367a35e531 refresh Debian patches 2021-08-20 09:28:29 -04:00
zzz
76a48f5983 GeoIP 2021-08-01
BuildTime update
2021-08-20 09:08:43 -04:00
idk
6a1ad6bef5 line up margin for unordered list on susidns.css 2021-08-18 16:50:08 -04:00
zzz
ef947e2dbc spelling fix 2021-08-14 09:38:42 -04:00
zzz
de73dec4b8 Crypto: Fix corruption of EC and DSA private keys on Java 17
Update test to try all key types
2021-08-13 10:15:24 -04:00
zzz
4938e13f0e poupdate-source 2021-08-11 11:38:49 -04:00
zzz
dc48afe89d Remove dead links 2021-08-11 08:18:40 -04:00
idk
15cfa147a6 Add descriptions of the address book section to the front page in susidns. This is the last string change I intend to check in for this cycle. 2021-08-10 16:10:07 -04:00
zzz
7d1656c20f UPnP: Fix construction of absolute URLs
where the service relative URL is an absolute path
and the location absolute URL is below the top level.
Fixes communication with "Freebox" UPnP routers.
ref: http://zzz.i2p/topics/3157
2021-08-07 08:39:05 -04:00
zzz
2cb0650980 javadoc fix 2021-08-03 08:37:41 -04:00
zzz
cf38697774 Update: Show restart button after an update is handled by a post-processor 2021-08-02 11:36:38 -04:00
zzz
f2b878d02a Data: Remove unused static field deprecated long ago 2021-07-30 12:17:15 -04:00
zzz
877b1f5f56 Build: Add resources to dependencies
remove unused systray icons
2021-07-30 10:35:12 -04:00
zzz
a634a9e3cf Util: DoH server list update 2021-07-30 10:12:59 -04:00
zzz
c652d597c9 Tunnels: Prop. 157 updates
- Enable handling
- Remove option to disable garlic reply
- Add option to enable sending
2021-07-29 09:51:21 -04:00
zzz
9db50256a8 Console: whitespace fix 2021-07-28 11:11:46 -04:00
zzz
2edac95be9 Tunnels: Updates for proposal 157
- Fix compatibility check for OB tunnels
- Add test code to send STBM to explicit peers
- Skip too-many-tunnels check when in test mode
- Cleanups and Log tweaks
2021-07-28 11:09:51 -04:00
idk
d246689242 Address some font size, section size, and spacing issues on proxy.css 2021-07-23 17:01:52 -04:00
zzz
6eb1510324 Transport: Fix UPnP IPv6 NPE
ref: http://zzz.i2p/topics/3153
2021-07-23 11:07:59 -04:00
zzz
24ef2b5189 Prop. 157 fix for ChaCha20 IV
after testing with i2pd
2021-07-22 15:15:26 -04:00
zzz
2b3a0f0232 bump -5 2021-07-20 10:52:33 -04:00
zzz
cd7c2efda8 build doc update 2021-07-20 10:50:13 -04:00
zzz
ca879f04e3 javadoc 2021-07-20 10:49:14 -04:00
zzz
369c40322e Make method static 2021-07-20 10:47:50 -04:00
zzz
3244fe1b0f Tunnels: Add check for prop. 157 layer enc. type 2021-07-20 10:44:38 -04:00
zzz
6b2a4a8fda Streaming: remove unneeded returns 2021-07-20 10:39:59 -04:00
zzz
83e67ad9d8 Sybil: Increase min display points 2021-07-20 10:37:08 -04:00
zzz
9f0d6c302f Router: New blocklist entries
as reported by drzed
2021-07-20 10:34:57 -04:00
zzz
d42d41ce0a Util: Check java versions up to 17 2021-07-20 10:33:53 -04:00
zzz
7ff6373d0c Output stream to string optimizations 2021-07-20 10:31:52 -04:00
zzz
3bf3a4ff9d NetDB: Increase min ff version to 0.9.38
previously was .38 for LS2 stores/lookups only
2021-07-20 10:26:17 -04:00
idk
4c5823ecb7 remove console.css lines from build.xml 2021-07-20 09:22:36 -04:00
idk
8b95aa9652 Merge branch 'proxy-css' into 'master'
Proxy Error Page CSS

Closes #330

See merge request i2p-hackers/i2p.i2p!34
2021-07-19 18:30:52 +00:00
idk
71ccd10ba6 Proxy Error Page CSS 2021-07-19 18:30:52 +00:00
zzz
426fbcbfa3 Prop 157 updates
- Fix registration of reply key/tag with SKM
- Allow OTBRM down client tunnel
- Disable tunnel hop throttles for allowLocal
- Various cleanups
2021-07-18 14:22:57 -04:00
zzz
a7d9ca920f Prop 157 updates
- Don't require AES keys for short records
- Derive keys from noise ck
- Use derived keys to garlic-encrypt reply at OBEP
- Register reply key with SKM
- Only use short message for client tunnels if client supports EC
- Set nonce for chacha/poly reply record
- Add tagsReceived() for single tag to MuxedSKM
- Add extended TunnelCreatorConfig.toStringFull()
- BRR toString() enhancements
- Test enhancements
2021-07-16 12:28:04 -04:00
idk
f40eff6b7e Merge branch 'master' of 127.0.0.1:i2p-hackers/i2p.i2p 2021-07-14 15:34:45 -04:00
idk
187ebf4c4a remove echelon.i2p from the English-language readme.html 2021-07-14 14:43:35 -04:00
zzz
1e7b13db66 HopConfig: Remove unused reply fields
previously moved to TunnelCreatorConfig
toString() enhancements
2021-07-14 10:51:57 -04:00
zzz
bc13f64403 Prop. 157 javadoc updates 2021-07-13 11:32:11 -04:00
zzz
617fff175e Tunnels: Prop. 157 updates
- remove ITBM
- remove plaintext slot from OTBRM
2021-07-13 09:47:30 -04:00
zzz
8710aa0065 Fix package for new "filter" 2021-07-13 08:23:32 -04:00
idk
558aa6e421 Merge branch 'x-i2p-location' into 'master'
Adds an X-I2P-Location header filter to the default I2P site

See merge request i2p-hackers/i2p.i2p!22
2021-07-12 14:21:23 +00:00
idk
1911132f11 Adds an X-I2P-Location header filter to the default I2P site 2021-07-12 14:21:23 +00:00
zzz
373924e650 Streaming: Reduce immediate ack delay 2021-07-07 08:31:17 -04:00
zzz
9c74cafd92 UPnP: IPv6 address validation fix 2021-07-02 07:51:01 -04:00
zzz
e88eed760d Streaming: Minor cleanups
- Remove unused stream.trend stat
- Optimization of getting first value from TreeMap
- Only notify reader of input stream when new data available
2021-06-27 11:50:20 -04:00
zzz
b7322e1647 Tests: Add resources to test jars
Fix duplicate classes in i2ptest.jar
Change classpath in routertest.jar to point to i2ptest.jar
2021-06-22 10:00:44 -04:00
zzz
bb19fcdac3 Tunnels: Changes for new build messages (Prop. 157)
- Remove ITBM, change record length from 236 to 218 bytes
- Fix check of blank record in BuildReplyHandler
- Fix offset constants for short record in BuildRequestRecord
- Fix BuildMessageTestStandalone test 6 (short inbound)
- ITBM class removal TODO
2021-06-22 09:06:40 -04:00
zzz
d71a472367 fix deprecation in test 2021-06-21 12:06:29 -04:00
zzz
e5186b0f7b Improve error handling on sort 2021-06-20 09:39:12 -04:00
zzz
fd6219356d Jetty: Case-insensitive sort on directory listing, put directories first 2021-06-20 09:28:10 -04:00
zzz
ea8597d1fb Console: Add preliminary Permissions-Policy header
other places TODO
2021-06-18 09:58:57 -04:00
zzz
970be35084 Transport: Remove 4/6 caps config
since 0.9.50 is out.
Log tweaks
2021-06-18 09:23:22 -04:00
zzz
c65b4689d0 SSU: Fix handling of bad peer test responses
Always abort test with an unknown result,
to prevent false firewalled indication.
Log tweaks
2021-06-18 09:11:42 -04:00
zzz
7628168c3d Tunnels: Consolidate tunnel key generation
in BuildRequestor.createTunnelBuildMessage()
to prep for derived keys in prop. 157
2021-06-17 12:58:46 -04:00
zzz
65b57fed9f minor css fix on /stats 2021-06-16 09:50:39 -04:00
zzz
67288f27b6 Crypto: Increase key pools for slow machines
Increase EDH key pool for all
Return unused EDH keys to XDH pool
ref: http://zzz.i2p/topics/3139
2021-06-16 09:50:04 -04:00
zzz
10cc00a9c8 Console: Format news dates using DataHelper 2021-06-16 09:08:44 -04:00
zzz
2cbb9b44ea Unused field 2021-06-16 09:00:53 -04:00
zzz
f9e8fa8150 Tunnels: Continue work on prop. 157
- Add new internal-only ShortTunnelBuildReplyMessage,
  for processing of STBM as a reply.
- Add support for inbound tunnel tests to TunnelBuildMessageStandalone.
  The ITBM test is WIP.
- Add checks for unset plaintext record in ITBM and OTBRM
2021-06-13 15:28:48 -04:00
zzz
aa0e0b3a62 Tunnels: Change class of TunnelPoolSettings random key
from Hash to SessionKey. It's not a Hash.
2021-06-13 11:34:17 -04:00
zzz
4c6aa8cfc1 Tests: Add serialize/deserialize test for STBM/OTBRM 2021-06-13 10:52:42 -04:00
zzz
010d1a9953 Tunnels: Continue work on new build messages (proposal #157)
WIP, still disabled, proposal not complete

- Use ChaCha20 to encrypt/decrypt records
- Add OTBRM methods for plaintext record
- Add OTBRM checks for correct plaintext slot number
- Add BRR checks to prevent use of nonexistent AES key/IV
- Set plaintext reply at OBEP in BuildHandler
- Allow OTBRM in InboundMessageDistributor
- Remove timing measurements in BuildMessageProcessor.decrypt()
- Add test to BuildMessageTestStandalone for outbound build
- Add check for all replies to BuildMessageTestStandalone
- Log tweaks
2021-06-13 10:31:02 -04:00
zzz
3fbfb689af Tests: Add ECIES test to BuildMessageTestStandalone 2021-06-12 16:20:07 -04:00
zzz
2bb3cf046d Tests: Fix BuildMessageTestStandalone 2021-06-12 15:42:47 -04:00
zzz
988e0e796f Tests: Fixup tunnel test after build classes move 2021-06-12 10:45:18 -04:00
zzz
d93e16e52e UPnP: Bind to IPv6 addresses for search responses
Older miniupnpd 2.0 will send a SSDP search response with an IPv6 location to a IPv4 address,
but newer ones 2.2 won't. So we need to also bind to an IPv6 address for the SSDP search
to receive the router's IPv6 location. Then we can bind to our public IPv6 address
for a port forward and it will work when miniupnpd is configured for "secure".

Also, don't bind a POST request to a mismatched v4/v6 address.
2021-06-11 09:29:16 -04:00
zzz
d5a499591d Update: Make backup news URL configurable (see gitlab MR !33) 2021-06-10 12:36:52 -04:00
zzz
41c8f6d0d5 Merge branch 'dmg' into 'master'
Add support for dmg and exe updates

See merge request i2p-hackers/i2p.i2p!33
2021-06-10 16:18:31 +00:00
zzz
b73d5d6557 Add support for dmg and exe updates 2021-06-10 16:18:31 +00:00
zzz
4f12081b59 Tunnels: Move 3 build classes from tunnel to tunnel/pool
and make package private, so all the tunnel build classes are in one place.
2021-06-08 12:47:28 -04:00
zzz
ad48ff61f3 Console: Change all config page headers to "Configuration" 2021-06-08 10:25:00 -04:00
zzz
4aef8d66e3 Console: Remove "configure homepage" item from /home 2021-06-08 10:19:18 -04:00
zzz
2f371301ad NetDB: Prevent rare deadlock in rebuildRouterInfo()
by making it always nonblocking.
as reported by drzed
2021-06-08 10:06:41 -04:00
zzz
c2c922b665 Tunnels: Switch from SHA256 to SipHash for arbitrary deterministic sort
of peers. For efficiency.
ref: http://zzz.i2p/topics/3082
thx: jogger
2021-06-08 09:44:17 -04:00
zzz
aee9a3f639 Tunnels: Extend use of high cap peers in expl. tunnels at startup, after extended downtime 2021-06-08 09:28:15 -04:00
zzz
d9c98580d1 Continue implementation of short tunnel build messages (proposal 157)
- Generate and parse short record format
- Encrypt and decrypt short records
- Register handlers for 3 new messages ITBM/STBM/OTBRM
- Send ITBM/STBM if all hops support it (disabled)
- Reply with OTBRM at OBEP if STBM received (disabled)
- Send STBM at IBGW if ITBM received (disabled)
- Add logic for when to send new messages
- ChaCha encryption of other short records
- Fix compare logic in ITBM parser (ticket #2814)

All is still preliminary, disabled, untested; proposal is still incomplete

Still todo:
- Fill in plaintext record for ITBM/OTBRM
- OTBRM key/tag
2021-06-08 08:43:40 -04:00
zzz
8b4a93554f Router: Fix JobQueue getLastJobBegin() and getLastJobEnd() (ticket #2809) 2021-06-01 09:32:21 -04:00
zzz
f9b5ee697c Transport: Consolidate now() calls 2021-06-01 09:01:40 -04:00
zzz
6dab5b44ae unused import 2021-06-01 08:53:29 -04:00
zzz
e7bef3f4e8 Console: Fix deprecation in rrd4j 2021-06-01 08:51:16 -04:00
zzz
ff44ba4e07 i2psnark: Fix autostart for magnets 2021-06-01 08:50:18 -04:00
zzz
b88c8a4f6a UPnP: Fix IPv6 address check (ticket #2811) 2021-05-23 07:38:28 -04:00
zzz
58aa95df87 Router: Increase rekey probability 2021-05-21 09:52:26 -04:00
zzz
56a1184da7 Build: Update RRD4J version in manifest 2021-05-21 09:48:21 -04:00
zzz
ecc8b2a1c6 Console: Don't show default cost for NTCP2 either 2021-05-21 09:47:43 -04:00
zzz
288170a728 Console: Remove unused H cap from legend 2021-05-21 09:02:58 -04:00
zzz
b9efc002c0 RRD4J 3.8
Merged in our previous javadoc fixes
Their updated font-selector code remains commented
out in RrdGraphConstants.getFont()
Now requires Java 8
2021-05-21 07:36:57 -04:00
zzz
6926f5769e Systray: Drop unused BrowserChooser 2021-05-20 09:04:26 -04:00
zzz
9036aa84f6 Build: Remove broken list-changes targets 2021-05-20 08:56:21 -04:00
zzz
557c1d0f04 Console: Make the /confighome headers match the home page headers
Fix padding on file chooser buttons
2021-05-20 08:47:20 -04:00
zzz
2bb14c317f Debian files for 0.9.50
checklist updates
2021-05-19 09:50:47 -04:00
zzz
cb7dcda57f Fix dup patched/unpatched jetty classes 2021-05-18 08:47:18 -04:00
zzz
48cfb6114b 0.9.50 2021-05-18 08:21:33 -04:00
zzz
16d50f1e4f Console: Fix tooltip 2021-05-18 08:06:25 -04:00
zzz
fb6e8249d0 bump for review 2021-05-15 14:03:03 -04:00
idk
f83bd18693 set min-height of susidns iframe to the height of the browser's viewport, and automatically show the howitworks section on the susidns homepage. Gets rid of the double-scrollbar on the iframe 2021-05-15 12:02:33 -04:00
zzz
33954094a0 Fix bug reporting links in readme files 2021-05-14 12:57:14 -04:00
zzz
aa16cc02a1 Pull translations from transifex 2021-05-14 12:45:48 -04:00
zzz
bcc6f9e053 Remove deleted script from test 2021-05-14 12:21:31 -04:00
zzz
6796a3cdfe Remove ancient C, CSharp, Perl, Python SAM v1 client libs
See http://i2p-projekt.i2p/en/docs/api/samv3 for maintained list of v3 clients
Remove unmaintained v3.0 protocol doc, link to website instead
2021-05-14 11:45:47 -04:00
idk
59439da702 bump infodiv on slide four of /welcome 2% further to the right 2021-05-13 11:51:00 -04:00
a7467aca2a Merge branch 'gradle-reproducible-2' into 'master'
Fixes for reproducible Gradle build

See merge request i2p-hackers/i2p.i2p!32
2021-05-13 12:45:50 +00:00
ec163549f9 Fixes for reproducible Gradle build 2021-05-13 12:45:50 +00:00
zzz
3196e3dfd2 BuildTime update 2021-05-13 07:47:54 -04:00
zzz
d2eda3e2e2 Blocklist update 2021-05-12 08:33:18 -04:00
8c36f5d5f0 Merge branch 'gradle-reproducible' into 'master'
reproducible builds with Gradle

See merge request i2p-hackers/i2p.i2p!30
2021-05-11 17:50:14 +00:00
8532103e64 reproducible builds with Gradle 2021-05-11 17:50:14 +00:00
zzz
121cb2c94c NTCP: Fix reported NPE in debug logging on java 16 2021-05-10 08:42:04 -04:00
zzz
ea7183eeda Sybil: Fix retention of old analysis files when configured to never delete 2021-05-10 08:38:35 -04:00
idk
57f1ac43ad Un-cramp headline hight on welcome wizard pages in narrow browser windows 2021-05-10 02:11:06 -04:00
idk
4a88400ce3 Fix misplaced text on bandwidth wizard bandwidth configuration slide 2021-05-08 10:58:10 -04:00
zzz
8ab9d82dbd Console: Add tooltip to unban link
Don't show both ban and unban buttons if peer param provided
Don't put hash in form again after ban/unban POST
2021-05-07 08:57:36 -04:00
idk
e04695eed8 Remove all the remaining mtn stuff from the mavenCentral target dependencies since it's no longer transitionally needed 2021-05-06 02:10:27 -04:00
idk
1c275260e0 Widen the table layout on welcome wizard page 4 and lose the image 2021-05-06 02:06:42 -04:00
zzz
38dbe2f509 poupdate-source 2021-05-05 12:02:22 -04:00
zzz
4bfca43e9c News: Move welcome author definition so it doesn't get tagged in the wrong bundle 2021-05-05 11:26:34 -04:00
zzz
f77677f1f4 Router: Unused methods and fields (findbugs) 2021-05-05 10:58:16 -04:00
zzz
e8d3193331 GeoIP 2021-05 2021-05-04 17:09:36 -04:00
zzz
3d362814df Console: Update bug report URLs 2021-05-02 09:37:26 -04:00
idk
2cce2ce857 Push wizard language settings 10% to the right to look better on smaller resolutions. #13 2021-04-28 17:51:34 -04:00
idk
bd29df70c6 Merge branch 'docker-3' into 'master'
Docker cleanup and documentation

See merge request i2p-hackers/i2p.i2p!29
2021-04-28 21:46:22 +00:00
37100ca93d Docker cleanup and documentation 2021-04-28 21:46:22 +00:00
idk
aa117229a2 s /notifcation/notification/ 2021-04-28 15:30:56 -04:00
987bff0008 Merge branch 'docker-2' into 'master'
More Docker changes

See merge request i2p-hackers/i2p.i2p!28
2021-04-28 04:12:24 +00:00
8fa70c9cde More Docker changes:
* disable in-network updates
* persistent directory for snark downloads
* listen on port 12345 for i2np connections
* restore multi-stage build
* use better ant target
* allow passing -Xmx via the JVM_XMX variable

Many thanks to LoveIsGrief for the suggestions!
2021-04-28 04:12:24 +00:00
zzz
20c528debe Router: Cleanup fix for gitlab ticket #16
Only check for clients.config if there was no clients.config.d
2021-04-27 10:58:17 -04:00
idk
9f23102428 Merge branch 'docker-home' into 'master'
Docker persistent home

See merge request i2p-hackers/i2p.i2p!27
2021-04-27 03:55:42 +00:00
179b79f8ab Docker persistent home 2021-04-27 03:55:42 +00:00
zzz
1e8e4762a3 Systray: Remove old doc
Remove old Main-Class from manifest
Add Class-Path to manifest
2021-04-26 10:19:51 -04:00
zzz
bf6dcbce32 Console: Add author for initial news 2021-04-25 11:44:54 -04:00
zzz
28ea0e9025 Tomcat 9.0.45 2021-04-25 10:53:47 -04:00
zzz
fe507b63b5 SSU: Add more state transitions that require confirmation 2021-04-25 10:33:40 -04:00
zzz
a4a3235888 SusiMail: Add class-path to test jar 2021-04-25 07:29:35 -04:00
zzz
21485eff87 SusiMail: Prevent infinite loop on decoding error
More test mods
Fix StringBuilderWriter.write(int)
2021-04-24 19:37:18 -04:00
0a24e56ded Merge branch 'master' into 'master'
Merged into my fork, not main repo

See merge request i2p-hackers/i2p.i2p!26
2021-04-24 23:11:52 +00:00
ee5a87ae44 Merged into my fork, not main repo 2021-04-24 23:11:52 +00:00
zzz
f753728d8a SusiMail: Fix up commented-out test so it works
(if you uncomment it)
2021-04-24 17:09:40 -04:00
zzz
78168be85c Jetty: Add patch for CVE-2021-28165 - Jetty #6072 -
Jetty server high CPU when client send data length > 17408

This affects SSL connections only, which is not part of our default setup.
Adapted from workaround at:
https://github.com/eclipse/jetty.project/security/advisories/GHSA-26vr-8j45-3r4w
Put the new checks directly in the unwrap() method,
rather than subclassing SslConnection, as that would require config file changes.
2021-04-24 16:04:33 -04:00
zzz
41e46448d5 Jetty: SslConnection.java unmodified from 9.3.29.v20201019
Patch to follow in next commit
2021-04-24 15:56:51 -04:00
zzz
a1172c8726 Close buffer on failure too 2021-04-24 10:47:27 -04:00
cc223626de Merge branch 'susimail-fix-iox' into 'master'
Null-out the InputStream of the Buffer object when writing.  Fixes #17

Closes #17

See merge request i2p-hackers/i2p.i2p!25
2021-04-24 14:24:32 +00:00
c58ccfa204 Null-out the InputStream of the Buffer object when writing. Fixes #17 2021-04-24 15:23:04 +01:00
idk
025445fc65 When checking whether to use Roaming appdata(like on older installs or on installs where people deliberately use Roaming appdata) also check whether clients.config exists and if it does, set home to Roaming appdata since people may be updating from routers before the migration to clients.config.d directories. This should fix #16 2021-04-22 23:27:31 -04:00
idk
f62c748342 Add a unicode arrow to the buttons on the address book interstitial. More CSS tweaks to work on more resolutions 2021-04-21 21:56:45 -04:00
idk
f03b1bce76 Fix CSS on redesigned address book interstitial page so it no longer overflows on narrow or short pages 2021-04-20 18:41:27 -04:00
zzz
1a05475f47 SSU: Don't start peer test when shutting down 2021-04-20 08:58:48 -04:00
zzz
23b704960d NTCP: More NTCP1 removal cleanup 2021-04-20 08:50:00 -04:00
zzz
388bac5aae NTCP: Set outbound addresses at startup when force-firewalled
TODO: set outbound addresses on transition to firewalled later
2021-04-20 08:24:50 -04:00
zzz
5af19314db SSU: Call replaceCurrentExternalAddress() from startup()
for local interfaces even when not force-firewalled, because REA2()
now needs them to set the IPs regardless
2021-04-20 07:33:08 -04:00
zzz
58bae9f1bd Proxy: Fix merge error in previous commit 2021-04-20 07:27:53 -04:00
idk
3192a5e67b Make option buttons on addresshelper interstitial larger and contain their own descriptions. Place the button to proceed without adding on one side, place the button to save and continue on the other. Remove redundant save-and-continues. 2021-04-19 17:42:07 -04:00
zzz
0546ef4fa4 Proxy: Decode IDN hostnames in error pages 2021-04-18 10:39:35 -04:00
zzz
bbc8501ba5 Console: Don't include SSU (RA) caps in RI caps definitions 2021-04-18 08:50:14 -04:00
zzz
11151464f3 Router: State transition fixes 2021-04-17 14:30:25 -04:00
zzz
b0249a22dc i2psnark: Add webp mime type 2021-04-15 07:51:33 -04:00
idk
b152e701fb I2P Configuration->Configuration. 2021-04-12 23:27:34 -04:00
idk
bc2bba7d56 I2P Configuration->Configuration. Add I2PDiagnostics to default, default_advanced summarybar 2021-04-12 22:40:23 -04:00
zzz
38289543a0 i2psnark: Add jxl mime type 2021-04-12 10:33:49 -04:00
zzz
cebef747ef Transport: Don't update queue size stat unless enabled 2021-04-12 10:32:58 -04:00
zzz
76fd180b63 SSU: Fix peer test getting stuck
Timer was not getting rescheduled in all cases,
so testComplete() was never called,
so no more tests could run.
Always remove test when testComplete() is called.
Log tweaks
2021-04-12 10:30:37 -04:00
zzz
926fdc097f Proxy: Precompress error page CSS 2021-04-11 09:06:23 -04:00
zzz
39bebaff7c Console: /netdb transport table fixes 2021-04-11 08:58:24 -04:00
zzz
0963a1339c SSU: IPv6-only fixes 2021-04-11 08:54:40 -04:00
idk
ba745f3a8f Create 'Diagnostics' Sidebar section to delineate config and non-config items in the sidebar. Rename 'I2P Internals' to 'I2P Configuration.' Move items to categorically appropriate sidebar sections. Fix slight awk on /home. 2021-04-10 14:58:08 -04:00
zzz
f0e606cc46 Router: Don't fail migration at install if missing eepsite/ or clients.config,
for embedded applications.

Ensure a migration failure is logged if file does exist.
Reported and tested by zlatinb
2021-04-09 09:08:36 -04:00
zzz
009eb8c9f6 SSU: Fix IPv6 introducers
Ensure introducers are required when force-firewalled
Log tweaks
2021-04-08 14:20:31 -04:00
zzz
02cf79c4c8 NetDB: Don't repeatedly log about reseed disabled 2021-04-08 14:16:07 -04:00
zzz
5f1fc80848 Debian: Fix link to compiler jar (Debian ticket #986474) 2021-04-08 07:11:48 -04:00
zzz
7482142431 Util: Parameterize CDPBQ
Same as CDBQ earlier. To allow experiments on adjusted params.
2021-04-06 08:36:05 -04:00
zzz
67d9c0ef8e Drop launcher script from tests 2021-04-05 10:02:40 -04:00
zzz
039d918454 Build: Remove OSX and browser launcher code
Will probably be replaced with jpackage in i2p-jpackage-mac repo
If we do resurrect the launcher, it will be moved to a separate repo
2021-04-05 09:14:34 -04:00
zzz
e16c80516d I2NP: Add msg ID to all build msg toString() 2021-04-05 08:37:28 -04:00
zzz
857f52bbf7 Console: Convert update versions to times for debug page 2021-04-05 08:34:22 -04:00
zzz
4acf0ecd05 Sybil: Register blocklist version with update manager
Fix "very close" message when configured for all routers
2021-04-05 08:05:17 -04:00
zzz
2eedfe5382 SSU: Add note about skew threshold 2021-04-04 13:56:13 -04:00
zzz
a2dde559f1 SSU: Don't call PS.expireInboundMessages() from messageReceived()
it's already called from IMF
2021-04-04 13:25:57 -04:00
zzz
de108dbc5e Tunnels: Fix build message timestamp check for ECIES records
Log tweaks
2021-04-04 13:21:07 -04:00
zzz
00d3965303 SSU: Log enhancement, fix possible log NPE 2021-04-03 17:12:49 -04:00
zzz
7ad7846f86 SAM: Remove subsessions when primary session closes 2021-04-03 15:25:20 -04:00
zzz
1307e5b2e0 SSU: Remove restrictions on IPv6 introducers (prop. 158)
WIP, not fully tested
Don't try to rebuild IPv4 address when IPv4 disabled
Don't bid on a peer if marked unreachable
Fail outbound immediately if no valid introducers
Reduce IPv6 too-close length check from 8 bytes to 4
Log tweaks
2021-04-03 15:24:03 -04:00
zzz
1b1b0f545f SSU: Fix dup IPv6 introducers 2021-04-02 09:30:29 -04:00
zzz
9b361ce71c NetDB: Negative cache LS received with zero leases
Ratchet: Don't schedule a reply to a LS with zero leases
2021-04-01 08:12:35 -04:00
zzz
562b86636a SSU: Update address when IPv6 introducers change (prop. 158)
Enable ipv6 check in locked_rebuild()
Change locked_needsRebuild() to return codes for ipv4/v6
Change locked_needsRebuild() for introducers so it only
returns true if more are available
Change rebuildExternalAddress() so we can do a rebuild of ipv6 without an IP
Only call rebuildIfNecessary() on peer drop if it could have been an introducer
Fix check in pickInbound() for support of AliceIP field
Log tweaks
2021-03-31 12:50:21 -04:00
zzz
8447086c59 Transport: Fix NTCP removing IPv4 address when SSU removes IPv6 address 2021-03-30 07:14:35 -04:00
idk
f9422c9589 Fix double overflow scrollbar on Hidden Services Manager 2021-03-29 21:12:29 -04:00
zzz
2a74dce3ad Util: Clarify deprecated IPv6 addresses 2021-03-29 14:27:15 -04:00
zzz
fed3063f36 Transport: Don't open UPnP ports when force-firewalled 2021-03-29 14:15:42 -04:00
zzz
e6f5ab967e Transport: Don't open UPnP ports when hidden 2021-03-29 14:04:38 -04:00
zzz
953b64af4a SSU: Don't request introducers when hidden 2021-03-29 13:38:18 -04:00
zzz
e21a3a366b Router: Fix decryption of blinded leasesets
Reverse cache wasn't regenerated at midnight,
so decryption would fail after the first routing key change.
We had the rollover() method but it wasn't called.
2021-03-27 08:15:01 -04:00
idk
0fbcd6ddf7 Fix a couple small CSS issues on SusiDNS, Hidden Services Manager. Darken the Active Arrow dropdown. 2021-03-26 16:26:40 -04:00
zzz
4a135a667b Console: Fix swapped SSU dup rx/tx columns
total row was right, per-peer rows were wrong
increase render buffer size
2021-03-26 07:29:26 -04:00
zzz
1309688477 i2ptunnel: Force non-SSL socket to local target
if incoming traffic is to a known SSL port,
to avoid SSL-over-SSL
2021-03-25 14:40:47 -04:00
zzz
af14c3bc4a Console: Don't show IP for disabled IPv4/v6 on /confignet 2021-03-25 09:04:09 -04:00
zzz
684506b0be Transports: Don't open UPnP ports for disabled IPv4/v6 2021-03-25 08:46:00 -04:00
zzz
aecd8efcca SSU: Implement IPv6 introductions (proposal 158)
WIP
Offer intro key for IPv6
Pick introducers for IPv6
Publish address with IPv6 introducers
Reduce churn of selected introducers
Only adjust transport bid if they publish C cap
Log tweaks
2021-03-25 08:03:33 -04:00
idk
3eab36fd37 Fix theme selection on Mail. 2021-03-24 20:06:07 -04:00
idk
8e15eda83b fix up dark theme for new UI elements on dark theme. Fix theme selection on Address Book. 2021-03-24 18:31:04 -04:00
idk
501de01753 Fix some style issues in the iframed version of Address Book. Add a Description field to each address book page. 2021-03-24 16:42:38 -04:00
idk
e1c312046a Explain that the address book pairs human-readable names with I2P Destinations on the index page 2021-03-24 15:22:28 -04:00
idk
8af64ddef1 Style and script changes to addressbook:
Make tables drop-down items in javascript-enabled browsers. The rules are: no javascript, all tables start expanded. This is the default. If javascript is enabled and the addressbook is empty, expand the "Add new host" section by default. If javascript is enabled and the addressbook is not empty, then collapse all sections but leave the headings visible.
  Improvements to addressbook CSS for consistency with rest of light theme. Add drop-down arrows to headings on drop-downable sections.
2021-03-24 14:09:07 -04:00
zzz
5f39426073 NetDB: Don't note 'enabled floodfill' in event log every startup when forced on 2021-03-24 09:32:01 -04:00
zzz
0eb4096aad Console: Add eepsite table on debug page 2021-03-23 08:28:38 -04:00
zzz
0ab429e1ed NetDB: Sort published addresses for consistency 2021-03-23 08:17:38 -04:00
zzz
bd6d6426fd SSU: Try to fix IPv6 transition from firewalled to non-firewalled
state was right but published address wasn't updated because looking
in wrong place for saved ipv6 address
2021-03-23 08:14:17 -04:00
zzz
9a106cb326 I2NP: lookup message debug output fixes 2021-03-22 12:42:28 -04:00
zzz
bbfd94359b Tunnels: Don't count established routers as new in OBEP throttle (ticket #2245)
reported by zlatinb
patch from jogger
2021-03-22 12:38:57 -04:00
zzz
64695a8060 SSU: Fix persisting IPv6 firewalled state 2021-03-22 12:02:36 -04:00
zzz
86b49546c8 Sybil: Persist blocklist 2021-03-22 10:36:42 -04:00
zzz
12c4f43109 Transport: Better IPv6 address check
We don't want to match on "46"
2021-03-22 07:00:17 -04:00
zzz
d5fd754a25 Tunnels: Garlic encrypt ITBM to IBGW
WIP, see proposal 157.
Will not take effect until we actually send ITBMs.
Tested with regular VTBMs.
2021-03-21 09:25:47 -04:00
zzz
c5691ac623 html fix
thx drzed
2021-03-20 15:24:38 -04:00
zzz
844f17500b Console: Add API version to /logs 2021-03-20 13:00:09 -04:00
zzz
4e1848c336 I2CP: Ensure nickname properties are set 2021-03-20 12:58:14 -04:00
zzz
b55fbbf099 Boolean.valueOf() -> Boolean.parseBoolean() 2021-03-20 12:27:46 -04:00
zzz
838295c014 SAM: Improve checks for unset tunnel nickname 2021-03-20 12:12:21 -04:00
zzz
005ac38742 Tunnels: Fix RED dropping for part. tunnels (Gitlab MR !24)
Part 1:
Change bandwidth estimate to exponential moving average
(Similar to Westwood+ Simple Bandwidth Estimator in streaming)
instead of 40 ms bucket.
Also use it for tunnel.participatingBandwidthOut stat.
Remove linear moving average code previously used for stat
Reduce RED threshold from 120% to 95% of limit

Part 2:
Fix the other part of RED which is the dropping calculation.
Previously, it simply used the bandwidth to start dropping if
it was higher than a threshold. The drop percentage rose from
0 to 100%, linearly, based on how far the bandwidth was
above the threshold. This was far, far from the RED paper.

Now, we follow the RED paper (see ref. in SyntheticREDQueue javadoc)
to calculate an average queue size, using the exact same
exponential moving average method used for bandwidth.
Similar to CoDel, it also includes a count of how long
the size is over the threshold, and increases the drop probability with the count.
The unadjusted drop probability rises from 0 to 2%
and then everything is dropped, as in the RED paper.
The low and high thresholds are configured at 77 ms and 333 ms of queued data, respectively.

The queue is "synthetic" in that there's not actually a queue.
It only calculates how big the queue would be if it were
a real queue and were being emptied at exactly the target rate.
The actual queueing is done downstream in the transports and in UDP-Sender.

The goals are, for an 80% default share, to do most of the
part. traffic dropping here in RED, not downstream in UDP-Sender,
while fully utilizing the configured share bandwidth.
If the router goes into high message delay mode, that means we are not dropping enough in RED.
Above 80% share this probably doesn't work as well.

There may be more tuning required, in particular to achieve the goal of "protecting" the UDP-Sender
queue and local client/router traffic by dropping more aggressively in RED.

This patch also improves the overhead estimate for outbound part. tunnel traffic at the OBEP.

Reviewed, tested, acked by zlatinb
2021-03-20 10:49:30 -04:00
zzz
03c657b466 javadoc fix 2021-03-19 13:02:35 -04:00
zzz
3615a9b235 SSU: Skip router addresses with introducers and '6' cap
for now, until implemented, see proposal 158
2021-03-19 11:36:17 -04:00
zzz
0dcc126af0 DoH: Minor cleanups
Handle lower-case date: header
2021-03-18 11:02:26 -04:00
zzz
7143eb3faa DoH: Add new servers
from https://github.com/curl/curl/wiki/DNS-over-HTTPS
2021-03-18 10:19:41 -04:00
zzz
1d83ef46e7 SSLEepGet: Use DoH by default (reseeding)
DoH: Update server list
2021-03-18 09:48:05 -04:00
zzz
615365ec24 Util: Specify hostname for SSLEepGet socket when using DoH 2021-03-18 09:39:14 -04:00
zzz
1e0847271f Util: Fix EepHead fail if headers specify chunked 2021-03-18 09:11:21 -04:00
zzz
0b1fb651e9 EepGet timeout fixes part 2
Have SocketTimeout interrupt thread
Cancel SocketTimeout and use soTImeout after reading headers if able
Cancel SocketTimeout in finally
Cleanups and javadocs
2021-03-18 09:07:45 -04:00
zzz
bd724d1e1f Transports: Enable 4/6 caps
Set i2np.transportCaps=false to disable
Fix NTCP2 address with host and caps after state transition
Bump -7
2021-03-16 08:59:22 -04:00
zzz
e81df54bba Console: Change netdb SSU caps search
to be contains() like the RI caps search, not equals()
2021-03-16 08:23:05 -04:00
zzz
07e3ee6bda Util: Roll our own IPv6 address parsing
Don't bother with ::, still send that to InetAddress.getByName()
2021-03-15 08:22:52 -04:00
zzz
810c2f912c Util: Prevent DataHelper complaining about split() for ipv4 2021-03-15 08:10:48 -04:00
zzz
a1340d8796 Util: Roll our own IPv4 address parsing
to avoid InetAddress.getByName() calls
May help high CPU usage on Windows?
Reported by parg: http://zzz.i2p/topics/3083
More empty hostname checks
2021-03-15 07:41:02 -04:00
zzz
be863d643e SSU: Fix IPv6 addresses not being removed on some state transitions
Ensure IPv4/v6 peer tests are alternated
Reschedule peer test if result is UNKNOWN and a state transition is pending
Fix peer test last send time not being set in all cases
2021-03-15 07:37:08 -04:00
zzz
47283e6ef7 Console: Limit share portion to 90%
We want the part. traffic RED dropper to have some effect
and not let traffic back up at the router bandwidth
limiter and into the UDP-Sender queue,
as it removes any room for client and router traffic,
and throws the router into high message delay mode.
2021-03-13 08:44:11 -05:00
idk
15b6638538 Check in copy.js 2021-03-11 21:18:29 -05:00
idk
56db652ee8 switch Hostname Preview from a direct link to a JS copy function and a textarea. In the presence of noscript, hide the copy button 2021-03-11 21:17:07 -05:00
idk
831a9cebfa check that hostname ends with .i2p when generating tunnelPreviewHostname 2021-03-11 17:20:37 -05:00
idk
a04bb77c68 Adds a button for previewing i2ptunnels using the hostname or sharing I2P Sites with a hostname without using the addressbook or a jump service 2021-03-11 13:54:55 -05:00
idk
8d11a97c9d Fix margin on /peers for issue #14 2021-03-11 13:50:41 -05:00
zzz
023a7fdebe NetDB: Queue RI file deletion and delete in a single thread
Do both writes and removes in the writer thread
As suggested by jogger http://zzz.i2p/topics/3082
log tweaks
2021-03-10 14:17:45 -05:00
zzz
77375148e3 NTCP: More NTCP 1 removal cleanup 2021-03-10 07:16:29 -05:00
zzz
5c232792cc SSU: Don't change ports in some cases 2021-03-10 07:03:33 -05:00
zzz
6e03300371 Throttle: Don't do exponential calculation unless necessary
Limit to ~5% < drop prob. < 100%
2021-03-09 09:59:33 -05:00
zzz
731bf920f6 Util: Consolidate dup BandwidthEstimator interfaces 2021-03-09 07:37:51 -05:00
zzz
c1c2f4bb2e UPnP: Reduce some log levels
of logggung that was added during IPv6 development
2021-03-08 09:14:19 -05:00
zzz
6a54af399d NTCP: Remove NTCP 1 suppport
Remove individual 1/2 enable config
Additional cleanup to follow
2021-03-08 09:05:32 -05:00
zzz
82b7eea5f0 SSU: Increase CoDel drop threshold at UDPSender queue
Increase min and max queue size
Tweak stats
Util: Allow creation of CoDel queues with non-default parameters
New params are tentative, may be adjusted later
2021-03-08 08:12:10 -05:00
zzz
0b71fcf2e6 Util: Fix text display of enc type in key cert 2021-03-07 08:33:57 -05:00
zzz
e4c7ef183f SSU: Require confirmation for IPv6 firewalled state transitions 2021-03-06 08:18:16 -05:00
idk
c8341e77ab Change button on /help from Reachability to Network 2021-03-04 21:42:14 -05:00
zzz
51d2862d75 Console: Improve explanation on /configfamily
based on whether configured or not
escape the family name
2021-03-04 19:27:03 -05:00
zzz
10d303aee5 Router: Increase rekey probability 2021-03-04 19:04:29 -05:00
idk
b0b7c1c3d1 Work on centering restart/shutdown immediately/cancel buttons, for #5 2021-03-04 16:00:24 -05:00
zzz
6339445e35 i2ptunnel: Remove stray character on auth form 2021-03-04 14:31:15 -05:00
zzz
f5a6bb1211 i2ptunnel: Fix title for b32 auth proxy error page 2021-03-04 14:28:09 -05:00
zzz
662fd484de i2ptunnel: Add missing button icons for proxy forms 2021-03-04 14:17:45 -05:00
zzz
fda53416d3 Transports: Prefer IPv6 temporary addresses if the kernel does
This helps us pick the right address at startup,
so we don't switch after peer testing.
2021-03-04 08:42:08 -05:00
zzz
638d471d6b I2CP: Additional changes for release/API version split
Missed in previous checkin
2021-03-04 07:58:49 -05:00
zzz
74c493b1fe Debian: apparmor update 2021-03-04 07:16:03 -05:00
zzz
10b90f45f0 UPnP: IPv6 part 12
Fix retention of deprecated messages
log tweaks, finals
2021-03-03 19:53:24 -05:00
zzz
8e465f4da7 Console: Fix text, anchors and tooltips for links to reachability help
Fix list of subscriptions in /help
2021-03-03 13:16:08 -05:00
zzz
ca1b6bbe42 SSU: Fix replaceAddress() for multiple addresses without host/port 2021-03-03 12:37:21 -05:00
zzz
3fbe4ed7e8 SSU: Increase hole punch rate limit 2021-03-03 11:21:49 -05:00
zzz
c36c8678ed NTCP: Fix reachability status when force-firewalled 2021-03-03 11:08:57 -05:00
zzz
c3099c7cfa SSU: Don't publish IPv4 address at startup when force-firewalled
Publish empty '4' address if firewalled and no introducers
Publish empty '6' address if firewalled
4/6 caps fixes
2021-03-03 10:36:44 -05:00
zzz
ee2482c2c1 SSU: Fix validation of current introducers
Broken in 0.9.48 when we made intro keys random
2021-03-03 08:17:27 -05:00
zzz
64ebcea50a SSU: Fix transition out of IPv4 firewalled after UPnP success 2021-03-03 07:06:42 -05:00
zzz
c6c2ee94a7 SSU: Fix NPE in introduction manager
(move ip length check after isValid() null check)
2021-03-03 06:15:26 -05:00
zzz
6520f69a38 SSU: Only advertise 'C' cap if we can really introduce
Only ask for relay tag if we don't have enough
2021-03-03 06:13:36 -05:00
zzz
eecb6bef69 Console: Hide address cost unless advanced 2021-03-02 14:51:50 -05:00
zzz
4a9424b485 Transport: Don't record reachability changes in event log shortly after startup 2021-03-02 09:15:58 -05:00
zzz
f04c0740c4 Util: Reduce log level on SimpleTimer2 cancel failure 2021-03-02 09:09:54 -05:00
zzz
d3563752a1 UPnP: IPv6 part 11
Change IPv6 last-firewalled config after UPnP success
Minor cleanup in changeAddress()
2021-03-02 09:05:11 -05:00
zzz
e1cd22e6ee UPnP: IPv6 part 10
Enable IPv6 by default
Don't force listen sockets to IPv4 only
2021-03-02 08:15:13 -05:00
zzz
63e9b7f034 UPnP: IPv6 part 9
Subscribe to IPv6 service also
Limit event subscription time
Renew subscriptions periodically
2021-03-02 07:39:46 -05:00
zzz
ea736d71ef UPnP: IPv6 part 8
Retain old UID when refreshing
Continue to forward deprecated addresses for a while
Refresh mappings before lease expiration
Log tweaks
2021-03-01 16:39:17 -05:00
zzz
ca974a85c5 Console: Fix whitespace on /help 2021-03-01 11:13:11 -05:00
zzz
2ee4cbabfe UPnP: IPv6 part 7
Fix IPv6 port forwarding. Source must be wildcarded.
2021-02-28 16:11:12 -05:00
zzz
aa91dc985d UPnP: IPv6 part 6
IP mismatch detction fix take 2
Fix set of SSU comm states used for requiring address confirmation
2021-02-28 11:34:28 -05:00
zzz
12e9e79010 UPnP: IPv6 part 5
Update UID as received from UPnP on add,
so that removal of the mapping works.
2021-02-28 11:13:43 -05:00
idk
3c94f529ad remove the bashism in travis.sh 2021-02-28 10:43:07 -05:00
zzz
c04265c37a Build: Drop BOB demos from test script 2021-02-28 10:05:48 -05:00
zzz
9177459db6 UPnP: IPv6 part 4
WIP - disabled by default
Store local IPv6 address at startup so UPnP can attempt to forward it
Request forwarding of ports to IPv6 addresses
Update status on successful IPv6 forward
Fix IP mismatch test for IPv6
Log tweaks
2021-02-28 10:00:11 -05:00
zzz
851752a57a UPnP: IPv6 part 3
WIP - more to follow
Add support for WANIPv6FirewallControl service
Add class extending PortForward to request forwarding to a specific IP, and to store UID
Bind POST socket to local IP for POST to WANIPv6FirewallControl service
Reduce max forward attempts
Don't sleep after last forward attempt fails
Log tweaks
2021-02-28 08:36:29 -05:00
zzz
eb535762c4 UPnP: IPv6 part 2
Add support for storing multiple location URLs in DeviceData
Add methods to prefer IPv6 for location URLs
Prefer IPv6 for POST target to WANIPv6FirewallControl service
Add method to bind local address for POST, needed for security checks when forwarding IPv6
Remove IPv6 checks from XML URL parser
Remove unused call in QueryRequest
2021-02-28 08:08:07 -05:00
zzz
fa3ca565ca UPnP: Move IPv6 checks from Parser to ControlPoint
... as they were being bypassed for known devices.
This fixes erratic UPnP results for devices sending multiple
SSDP search responses, one for IPv4 and one for IPv6.
Temporary fix until we add support for multiple location URLs to DeviceData.
2021-02-27 12:35:42 -05:00
zzz
f09de33978 NTCP: Don't publish IP at startup when configured as firewalled
Ensure we have an outbound NTCP2 address published even when configured as firewalled
2021-02-25 10:59:15 -05:00
zzz
daf894dbe3 NetDB: Fix NPE validating expired blinded LS2 2021-02-25 07:20:27 -05:00
zzz
3af5a87782 bump -3 2021-02-25 06:37:00 -05:00
zzz
9c677eb465 SSU: Enable RelayRequest over IPv6
This supports IPv6 introducers.
This requires that Alice (the requester) include the IPv4 address in the RelayRequest
when sent over IPv6, and that Bob (the introducer) uses that address instead of
the source address.
IPv6 address will be published in ihost[0-2].
This was specified as of 0.9.24 but never implemented by Java or i2pd.
Bob-Charlie and Alice-Charlie comms must still be over IPv4.
WIP, not fully tested.
IPv6 introductions is part 2, TBD.
ref: http://zzz.i2p/topics/3060
2021-02-25 06:34:57 -05:00
zzz
c609e43d90 Transports: Adjust conn limits for some platforms 2021-02-25 06:25:55 -05:00
zzz
e63e9c58a8 SSU: Avoid outbound connections to routers that disconnect quickly 2021-02-24 11:10:40 -05:00
zzz
7f3f46c8ba Jetty: Fix detection of SSL connector for registration with PortMapper 2021-02-24 10:13:37 -05:00
zzz
6e2292354a Build: More prep for different release and API versions
Use API version as manifest Specification-Version
Use API version in I2CP
Reduce sybil penalty for version and banlist
2021-02-23 10:43:32 -05:00
zzz
58e5c55cfd SSU: Rename method to be more accurate 2021-02-23 10:17:12 -05:00
zzz
20e56c2e52 SSU: Optimize one-byte writes in PacketBuider 2021-02-23 10:12:33 -05:00
zzz
f076789915 Transports: Add 4/6 transport caps
WIP, disabled by default for now, to be enabled before relese
Add caps to NTCP2 when in hidden mode or firewalled
Add SSU address and caps when in hidden mode
Add 4 cap to introducer address
Other cases todo; ref: http://zzz.i2p/topics/3050

When hidden, store last IP address in config,
calling replaceCurrentExternalAddress(), and IP change event logging;
wasn't done before
2021-02-23 10:01:31 -05:00
idk
d132d0ccdb Merge branch 'ci-ant-test' into 'master'
CI: add job to run tests with ant

See merge request i2p-hackers/i2p.i2p!21
2021-02-22 18:16:19 +00:00
zzz
182039964f Util: Assume the OSX M1 is not slow 2021-02-21 11:07:24 -05:00
zzz
fe43da82f2 Profiles: Disable peer test (ticket #2456) and tunnel test response time stat
Peer test tries only one peer every 5 minutes, and uses a store of
the peer's own router info, which is not helpful.
Peer test records its result as a dbLookup success/failure,
but for the peers that are not floodfill, this stat is useless.

The tunnel test is disabled by default except for hidden mode.
The tunnel test response time stat uses a large amount of memory (5 rates)
and has apparently never been used since it was added in 2004.
There's also a separate tunnel test time average variable, separate
from the stat, that is also unused.

Each is disabled with a separate hardcoded config,
pending evaluation of whether and how to make the tests useful
and where to effectively use the result for peer selection.
2021-02-21 10:31:34 -05:00
zzz
6e3b483c03 Util: Store multiple eepsite ports in PortMapper
Jetty: Register all servers with PortMapper
Console: List all Jetty servers in sidebar
2021-02-21 09:17:31 -05:00
idk
1a5fedbb6d Fixup the bandwidth wizard so it works on more resolutions 2021-02-20 16:41:35 -05:00
zzz
b656274c92 Router: Don't rekey previous ECIES every restart on ARM 2021-02-20 14:26:56 -05:00
zzz
5d5e6fa3c2 i2psnark: Fix theme selection 2021-02-19 07:58:28 -05:00
zzz
b92d94ea04 Javadoc spelling 2021-02-18 10:48:21 -05:00
zzz
3bec2b5c73 I2NP: New build messages part 2 (prop. 157)
Rename ShortTunnelBuildReplyMessage to OutboundTunnelBuildReplyMessage (type 26)
Add InboundTunnelBuildMessage (type 27)
Add methods for plaintext record
Update readMessage() and writeMessageBody()
Fix calculateWrittenLength()
Update javadocs
WIP, untested, not hooked in yet
2021-02-18 10:30:51 -05:00
zzz
1d2dbb3cc2 Console: Change "Legal" headers to "Licenses" 2021-02-18 09:01:33 -05:00
zzz
70cd6daa7c Console: Change netdb header icons 2021-02-18 08:29:25 -05:00
zzz
e14de8235f NTP: Year 2036 fixes (gitlab ticket #12) 2021-02-18 08:08:56 -05:00
zzz
89070163cd Reseed: Only log in event log if successful 2021-02-18 07:37:45 -05:00
zzz
60cdfb3af9 Drop .mtn-ignore file 2021-02-18 07:33:19 -05:00
zzz
c19730a32b Bob: Drop Demos/ 2021-02-18 07:31:11 -05:00
zzz
0f730398d4 Build: Omit empty jars and wars from installers
...only needed for updaters
Remove mtn call in release target
Add release menu
Add note on pushing git tag
2021-02-18 07:25:45 -05:00
zzz
ad66437421 Debian changelogs 2021-02-18 06:32:47 -05:00
zzz
b3f60402af 0.9.49 2021-02-17 10:11:58 -05:00
zzz
4fd9f6e9b2 Bump for review 2021-02-15 10:52:44 -05:00
zzz
31a01f0f00 New translation resources from Transifex 2021-02-15 10:15:52 -05:00
zzz
4bf98da6de Pull translations from Transifex 2021-02-15 09:12:15 -05:00
zzz
e645a16e6a Build: Test script fixes 2021-02-15 09:00:31 -05:00
zzz
56beb1aec5 Build: Refresh Debian patches, update release checklist for git 2021-02-14 09:58:56 -05:00
zzz
2eb83171f4 Util: Update build time 2021-02-13 08:05:39 -05:00
zzz
c837bd9bfd Util: Renew my news and update certs, drop str4d certs 2021-02-13 07:29:00 -05:00
idk
9af1c7e4ea add myself as a backup update signer using the same keys I use to sign the backup news feed 2021-02-12 19:50:03 -05:00
idk
53416a5fc5 Add back icons to I2PSnark buttons and center them 2021-02-11 18:44:27 -05:00
idk
69f48f49d1 Fix centering of percent downloaded in snark light theme address bar. Point .priority* image url()s to new location in resources directory for icons clock.png clock_red.png and cancel.png 2021-02-11 12:16:36 -05:00
zzz
b2655dc86b Util: Fix up KeyStoreUtil CLI 2021-02-10 10:04:54 -05:00
zzz
48d3f6469d Drop monotone cheat sheet doc 2021-02-10 08:39:24 -05:00
zzz
c8471d5d9b NetDB: Ensure blind data is rewritten after updating expiration 2021-02-09 09:24:34 -05:00
zzz
92d91dfc3a Proxy: Update jump URL at op's request 2021-02-08 08:17:05 -05:00
zzz
745a9f083b NetDB: Only rewrite blind cache at shutdown if changed 2021-02-06 11:35:39 -05:00
zzz
ce3db7ed9f Util: EepGet timeout fixes part 1 (WIP)
SocketTimeout fix for total timeout remaining less than inactivity timeout
SocketTimeout javadoc fixes
EepHead check for null SocketTimeout, javadoc fixes
2021-02-06 10:54:43 -05:00
zzz
d51a7ccf38 Router: Consolidate watchdog logging 2021-02-06 10:45:21 -05:00
zzz
5502eda407 NetDB: Ensure RI is published after netdb is initialized
Improve logic for publishing RI direct vs. through exploratory
Fix store failed job being called twice
2021-02-06 10:35:09 -05:00
zzz
eefd8b71ad NTCP: Don't publish saved local address when hidden 2021-02-06 09:52:41 -05:00
zzz
c0c84fd6a5 Proxy: New jump server, restore old jump server now working 2021-02-06 09:33:23 -05:00
zzz
79d270e2d5 make git tunnel type 4 only 2021-02-05 11:26:02 -05:00
zzz
7d08a2377c web-site -> website 2021-02-05 10:39:21 -05:00
zzz
a87033f04c poupdate-source 2021-02-05 10:23:49 -05:00
zzz
4b7921838b Fixup initialNews.xml location for poupdate-source 2021-02-05 09:33:20 -05:00
zzz
64b862d378 GeoIP 2021-02-01 2021-02-05 09:21:24 -05:00
idk
8db8c6a028 add SSH tunnel for gitssh.idk.i2p services to i2ptunnel.config files for docker and regular installs 2021-02-04 13:10:18 -05:00
zzz
8d60d68e23 Util: Stub out yggdrasil address detection
WIP - not hooked in
2021-02-03 09:27:12 -05:00
zzz
56fabe31e2 Tunnels: Peer selection tweaks
Remove blanket unreachable test for inbound tunnels, replace with reachable test for IBGW only
Retain inbound reachable test for hidden routers
Retain inbound reachable test for first hour of uptime
Add outbound reachable test for first hour of uptime
Add locally-unreachable test for outbound tunnels (was inbound only)
Minor cleanups
Log tweaks
2021-02-03 08:40:46 -05:00
idk
f7934e2ed5 Go over about the first half of the 'hostname' mentions and decide whether they need to specify something like 'hostname or IP address' or whether 'address' would be a more-self-evident term 2021-02-01 23:51:28 -05:00
idk
fdb4ec7d7c Switch from 'host name' to 'hostname' 2021-02-01 23:12:49 -05:00
zzz
a4777f3e5d Console: Indent address options on /confignet
hostname -> host name or other rewording
2021-02-01 15:48:16 -05:00
zzz
3314d4bf31 finals 2021-01-31 13:54:34 -05:00
zzz
20c7c8785b Router: Update list of hidden mode countries
List updated using the Freedom in the World Index 2020
Force hidden mode routers to LU
Don't publish stats in first hour of uptime
Add H.323 to invalid ports list
Improve crashed message in event log
2021-01-31 12:32:52 -05:00
zzz
0b4fe1aa56 Util: Improved classification of public/local IPv6 addresses 2021-01-31 11:10:35 -05:00
idk
1c8614bc33 Allow wider i2ptunnel panel in dark mode, also force a dockerhub build 2021-01-30 23:22:07 -05:00
zzz
af4c41ef08 UPnP: Race-proof the fix 2021-01-30 08:46:29 -05:00
zzz
33397433ac UPnP: Fix NPE (android gitlab ticket #1) 2021-01-30 08:35:33 -05:00
zzz
af6ecde867 Util: More javadocs for getIP() change 2021-01-29 07:58:59 -05:00
zzz
706a4f5e08 Merge branch 'test-net.i2p.util.Addresses' into 'master'
Util: Fix net.i2p.util.Addresses::getIP empty string
Test parts of net.i2p.util.Addresses

See merge request i2p-hackers/i2p.i2p!16
2021-01-29 12:45:59 +00:00
6a18bf086f Util: Fix net.i2p.util.Addresses::getIP empty string
The standard library behavior is to return the localhost when null or an empty string is passed.
getIP seeked to override that behavior, but didn't treat the empty string case.
Test parts of net.i2p.util.Addresses
2021-01-29 12:45:59 +00:00
idk
29cbac6a41 Merge branch 'build-docker' into 'master'
Fix docker build

Closes #6

See merge request i2p-hackers/i2p.i2p!19
2021-01-28 20:09:33 +00:00
idk
e48ba4b83c Change the default I2P site theme so that it looks like the default light theme, diff provided by sadie, reviewed and checked in my idk 2021-01-28 14:27:02 -05:00
d7638b4167 CI: test🐜 Install gettext for translations 2021-01-27 20:20:29 +01:00
f39ddcb14a CI: Install junit4 for test:ant 2021-01-27 20:13:08 +01:00
3c48b18f43 CI: Fix pwd for test:ant 2021-01-27 20:05:17 +01:00
317b59a9af CI: Where's the build.xml?? 2021-01-27 20:01:16 +01:00
4c1076ee07 CI: Create override properties with echo 2021-01-27 19:56:03 +01:00
16e886ca3e CI: quiet down wget 2021-01-27 19:53:47 +01:00
f68abc41b7 CI: add job to run tests with ant
`gradle` works easily in the dev environment while ant is a little more involved.
In order to allow easy setup with gradle in the dev environment
 and to allow ant-less, local environment while ensuring that nothing in ant is broken
 this job comes into play.
2021-01-27 19:46:03 +01:00
zzz
1dfdf79d15 Console: Spelling fixes all over, from pospelchek 2021-01-27 11:03:57 -05:00
b2f4445f50 CI:build_docker: cache entire ci-exports/ folder
Restoring cached globbed files doesn't seem to work.
The folder only contains a single file anyway,
 so it shouldn't endlessly grow in size.
2021-01-27 16:23:18 +01:00
acbb8d1a24 Docker: Preconfigure clients and tunnels
The follow clients and tunnels are available on all interfaces (0.0.0.0) of the container:

 - routerconsole
 - SAM
 - I2P HTTP Proxy
 - Irc2P
2021-01-25 22:30:04 +01:00
bd1017ba92 Docker: Expose only the ports necessary
The range of 5k ports should be replaced by a more precise choice of ports.
It also pollutes the `docker inspect` output with 5k more lines.
2021-01-25 22:00:12 +01:00
zzz
cb22f31d96 Tunnels: Update profiles for tunnel peers on corrupt message at endpoint 2021-01-24 09:38:03 -05:00
idk
451e53a674 Increase height of i2ptunnel iframed div 2021-01-23 23:12:09 -05:00
idk
9f7b0390a3 Remove background gradient from Hidden Services Manager pages and Snark Light theme. Allow hidden services manager items to use the whole width of the window. 2021-01-23 22:03:28 -05:00
idk
c400232cdf Make usage of 2-word Address Book consistent across console instead of mixed up(AddressBook, Address Book, addressbook, Addressbook, address book). Upper-case in app titles, lower-case in the text. Change CSS on address book to have the rounded buttons used in the rest of the console. 2021-01-23 21:04:49 -05:00
c87e74ea1d CI: Move build_docker to build stage 2021-01-23 22:56:10 +01:00
idk
c95430f33b Merge branch 'activate-ci-for-master' into 'master'
Ready: Activate CI test job for master

See merge request i2p-hackers/i2p.i2p!17
2021-01-23 21:42:19 +00:00
4a9131c39d CI: Add build_docker job conditions
We shouldn't build it for every single branch and commit
2021-01-23 22:37:29 +01:00
b47269f14e CI: Fix docker load command
It wasn't working at all which mean we would never use the cache
2021-01-23 22:36:56 +01:00
fb317b44ba CI: make sure we can build Docker image 2021-01-23 22:32:10 +01:00
e64e12b3fb Fix docker build
ant needed to be updated to >1.9, but the old image used an old alpine
 with the max version of ant being 1.8.

The build is split into 2 phases to reduce the size of the image.
A builder makes the installer and installs it in one image.
The installed files are copied over to the actual result image.
2021-01-23 18:19:31 +01:00
zzz
08c46e55f5 Console: pull new and updated readme translations
Eepsite: pull new and updated help translations

Replace possibly more-translated, but very very old (not from transifex) pages
2021-01-23 11:58:41 -05:00
zzz
5e5886395c Tests: Add mockito classpath to core tests
javadocs for new test classes
2021-01-23 09:47:22 -05:00
zzz
4776080ce6 Merge branch 'test-context' into 'master'
ConvertToHash test I2PAppContext part

See merge request i2p-hackers/i2p.i2p!15
2021-01-23 14:17:27 +00:00
79a868b8fe Use TestContext to replace existing I2PAppContext
This allows us to mock parts of the I2PAppContext as we like.
The mocking is done when `testContext` is created in the constructor,
 which replaces the existing global context.
2021-01-23 14:17:27 +00:00
zzz
c79e6455fd Build: Drop old Makefile.gcj 2021-01-22 09:16:03 -05:00
zzz
b7262aa592 Console: Drop old proof page 2021-01-22 08:43:47 -05:00
596f6e01cc CI: Activate for master
After a merge request has been merged, the result should also be tested.
Otherwise gitlab won't run it
2021-01-21 21:42:31 +01:00
idk
d95c85cdbe Fix the border-radius on the buttons and textareas in Address Book. Make the usage of Address Book agree on the titles. 2021-01-21 12:35:13 -05:00
zzz
f71e59a049 Merge branch 'test-convert' into 'master'
Test net.i2p.util.ConvertToHash

See merge request i2p-hackers/i2p.i2p!13
2021-01-20 14:38:37 +00:00
169fb59d7d test: fix I2PSocketExceptionTest::testUnknownStatus
In non-English environments, the message is translated.
2021-01-20 14:38:37 +00:00
zzz
922178b2c7 SSU: Fix deadlock with router restart
http://zzz.i2p/topics/3036
2021-01-20 09:27:55 -05:00
zzz
74a9193ba5 Console: Fix link to UPnP status 2021-01-20 09:25:58 -05:00
idk
335409f1d2 Find and fix the bug which appears in 'https://old.reddit.com/r/i2p/search?q=console&restrict_sr=on&sort=relevance&t=all' a bunch of Reddit posts, due to a mistake in the Firefox Profile Installer which expected router.config to be in the (deprecated)Roaming application data, even though it was in the Local Application Data, and if it did not exist, created it. If the (deprecated)Roaming application data directory had a router.config file, then I2P attempted to use the Roaming application directory, and the user could end up with a router that had no client apps configured, resulting in a poor UX 2021-01-18 00:26:33 -05:00
idk
d6edb9e96c Merge branch 'gitlab-ci' into 'master'
Tests on Gitlab CI

See merge request i2p-hackers/i2p.i2p!12
2021-01-17 23:10:34 +00:00
f150855f1c test: fix I2PSocketExceptionTest::testUnknownStatus
In non-English environments, the message is translated.
2021-01-17 23:10:34 +00:00
zzz
655ce09796 Console: Remove echelon.i2p from home page at op's request 2021-01-17 10:06:44 -05:00
zzz
91ebec15d5 NetDB: log/stat tweak 2021-01-17 09:51:49 -05:00
zzz
b17d321503 Ratchet: log tweaks 2021-01-17 09:47:04 -05:00
zzz
a6398d88a9 i2psnark minor cleanup 2021-01-17 09:40:11 -05:00
zzz
59969db16c Sybil: Limit stored analysis files if no console to view them
Reduce stored file time to 10 days
Min stored time is 2 * analysis interval
2021-01-17 09:32:23 -05:00
zzz
b68a5ea7fd Router: Fix up warning about no console for split config files
clean up multiple getContext() calls
2021-01-17 09:18:21 -05:00
idk
c2234685b9 eepsite=>I2P site to match the new terminology on the web site, and more fine-tuning to CSS to sharpen image appearance 2021-01-17 01:11:51 -05:00
zzz
ce7daaa02a Router: Limit max addresses in RI 2021-01-14 10:32:35 -05:00
zzz
b19999f95a Router: Move Sybil subsystem from console to router 2021-01-14 09:46:38 -05:00
zzz
92ecc9f8e8 Router: Log crashed event if old router.ping file is found at startup 2021-01-14 09:25:21 -05:00
zzz
aa2ba92db8 Router: Change default encryption type to ECIES-X25519 (proposal 156)
As of 0.9.49. 0.9.48-x dev builds will not rekey.
New installs only.
Existing install rekey probability: 1 in 128
To be increased in later releases, see proposal 156 for details.
2021-01-14 08:54:17 -05:00
zzz
5f3c41244b Jetty: Fix URI in request logs
Use standard getRequestURI() instead of Jetty internal getHttpURI(),
which apparently changed somewhere along the way

Hide Jetty ClosedChannelException from I2P logs
2021-01-13 08:54:46 -05:00
zzz
bf29132898 Tunnels: Downgrade log error to warn 2021-01-12 09:49:09 -05:00
zzz
a424331b78 i2psnark: Don't decrement downloaded counter after receiving bad piece
Received reports of counter going negative
2021-01-12 08:23:36 -05:00
idk
ccb0c279f7 Fix the width of the custom options at the bottom of i2ptunnel on the light theme 2021-01-11 12:48:07 -05:00
zzz
7fe01fb9a7 Console: Delete rrd files for no-longer-configured stats at startup 2021-01-11 10:21:54 -05:00
zzz
66c4c10a78 Console: Improve parsing of email address (part 2) 2021-01-10 08:03:15 -05:00
zzz
163967311e Console: Improve parsing of email address for mailto: link on /plugins 2021-01-10 07:24:28 -05:00
zzz
75734448c5 I2NP: Stub out new tunnel build messages (proposal 157)
WIP - not hooked in yet
2021-01-09 12:00:18 -05:00
zzz
aed1de84b8 SSU: Fix bandwidth estimator deadlock (ticket #2798)
Fix logging in SBE (bytes not packets)
2021-01-08 12:07:41 -05:00
zzz
51560a8ec8 i2ptunnel: Disable shared clients (DSA) (part 2)
missed case in 2020-12-29 checkin
2021-01-08 11:27:53 -05:00
zzz
ec89a80e80 Router: Disable reseeding and NTP in vmCommSystem 2021-01-07 11:04:56 -05:00
zzz
41c7b7382a SSU: Implement fast retransmit (ticket #2427)
This partially fixes the issue of packets not being retransmitted
before they expire in 10 seconds, introduced in 0.9.48 as reported by
jogger at http://zzz.i2p/topics/3003
Fast retransmit was also suggested by jogger as a solution and discussed in that thread.
This code is based on the requirements for TCP fast retransmit
as specified in RFC 5681 but cannot precisely follow the RFC
as UDP messages can be dropped without affecting later messages:
- nack counter is per-message, not per-connection
- some interactions with the retransmit timer when in fast retx mode
- msg expiration is currently 10s but max RTO is 60s
- interactions with individual fragment transmission implemented in 0.9.48-5
- this is a sender-side fix but it depends on far-end ack resend strategy

Maintain a local message sequence number and store
it in OMF, previously unused as codel is disabled
Removed acked messages from _outboundMessages as usual,
but stores message and seq. numbers in a LinkedHashMap,
so we may interpret additional acks as nacks.
Calculate the highest-acked seq. number for every incoming packet.
Marks messages older than highest acked as nacked
Fast-retransmits after 3 nacks
Window and SST adjustments per RFC 5681 sec. 2.4
Reduce resend ack quantity and timeout to improve odds of receiving "nacks"
Disable wakeup of OMF from IMF; should not be needed now that PS calls nudge()
PS.acked(partial) now returns true if any fragment was acked, not if complete
Log tweaks

Still todo: possible additional changes to ack resend strategy;
possible parameter adjustments including msg expiration;
confirm that OMF wakeup in IMF is not required;
further testing and cleanups;
take additional ideas from alternative proposal in MR !8;
stat tweaks;
find related tickets to close

Reviewed by and contains code from zlatinb in MR !8
This builds on several previous SSU improvements; see #2427 for a list.
ref: gitlab MRs !8 !9 !10 !11
2021-01-07 09:33:09 -05:00
idk
b4e1fbd857 center the text on the force restart and shutdown buttons in the sidebar 2021-01-06 16:25:07 -05:00
zzz
517ff4fa24 i2psnark: Add ability to remove I2CP options
Properly lock options map
Remove unused configured variable
2021-01-05 11:21:04 -05:00
zzz
106b1a696d SusiDNS: Hide last-modified on details page if empty 2021-01-05 09:22:36 -05:00
zzz
6cab545c45 Console: Reduce limit of concurrent graph generation on slow devices 2021-01-05 09:18:25 -05:00
zzz
619923dbf8 Build: Update external javadoc links
Add description to gradle update tasks
Add note about jetty versions
2021-01-04 11:51:24 -05:00
zzz
ed0ecdf253 Build: Add gradle updater tasks 2021-01-04 09:36:34 -05:00
zzz
d42ef2223d Build: Add i2pcontrol and imagegen to gradle build 2021-01-04 08:34:09 -05:00
zzz
e461004ed9 Build: Remove jars from gradle wars 2021-01-04 07:38:19 -05:00
zzz
2e180d4c60 Build: Add translations to gradle build (part 3 - only rebuild if necessary) 2021-01-03 10:35:04 -05:00
zzz
152ad1659b Build: Add translations to gradle build (part 2 - wars)
Several fixes for i2ptunnel gradle build
2021-01-03 09:55:42 -05:00
zzz
888311e34f Build: Add translations to gradle build (part 1 - jars) 2021-01-03 09:08:21 -05:00
zzz
2df5fb972a Sybil: Reduce default threshold 2021-01-02 09:58:08 -05:00
zzz
a481255adb Tunnels: Improve error handling of zero tunnel ID at OBEP
Reduce max time to defragment
Make logging of errors consistent
cleanups, stat tweaks
2021-01-02 09:57:27 -05:00
idk
139594df8f Move travis test runner script to own file so it's easier to work with 2021-01-02 09:12:02 -05:00
idk
659ab97f69 Try increasing sonar scanner heap size in travis builds 2021-01-02 08:49:46 -05:00
idk
963a4fe89c Extend travis timeout and make sonarqube output verbose 2021-01-02 08:39:21 -05:00
zzz
4c4dbae107 Console: Show file mod time in local time zone on /jars 2021-01-01 11:05:04 -05:00
zzz
6978049416 Console: Link to our gitlab on /jars 2021-01-01 10:49:14 -05:00
zzz
46fe1ba74a Build: Gradle fixes
Add resources to jars and wars
remove .jsi and .jsp files from wars
remove classes that are in jars from the wars for apps that have both
compile jsps in routerconsole.war
build routerconsole.jar
2021-01-01 10:17:00 -05:00
zzz
13bd5e4938 SSU: Remove router version check for random intro key, now that the release is out 2021-01-01 07:13:26 -05:00
idk
bbacf85245 travis-ci test: correct the sonarqube version for the last time, I think 2020-12-31 15:38:24 -05:00
idk
68f011f344 Remove some CSS that applies to images that aren't present in the current software. Also switch to version 2.8.0 of sonarqube in travis.yml since 3.0.0 does not seem to be available as a gradle plugin for this version 2020-12-31 15:31:52 -05:00
idk
8bd2384ac8 travis-ci test: Try updating the sonarqube plugin. 2020-12-31 13:05:26 -05:00
zzz
54dda1a15f alignment 2020-12-31 12:47:01 -05:00
zzz
3f44a555ba Console: Use local time on graphs by default, add UTC option 2020-12-31 12:36:07 -05:00
idk
86cbb2ed4e travis-ci test: Try switching to oraclejdk11 without updating the sonarqube plugin. 2020-12-31 11:52:10 -05:00
zzz
2569123055 NetDB: Drop lookups with replies going to us
Extend lookup expire time
Cleanups
2020-12-31 08:37:04 -05:00
idk
afa4b9e66d Tweak border color on /events form 2020-12-30 18:34:42 -05:00
idk
67bd5a32fd fix overlapping border on /events css, closes #4 2020-12-30 18:32:57 -05:00
idk
ada3629507 correct name of git-bundle ant target 2020-12-30 15:38:47 -05:00
idk
dcb7314306 travis-ci now requires you to use trusty if you also want to use oraclejdk8 2020-12-30 14:50:09 -05:00
idk
e3c2ad6354 fix broken travis test 2020-12-30 14:14:30 -05:00
idk
178ea252d5 Merge branch 'bundle-target' into 'master'
add a bundle target to ant that generates a current git bundle and corresponding torrent.

See merge request i2p-hackers/i2p.i2p!1
2020-12-30 15:49:41 +00:00
idk
7e4ba4eb31 Merge branch 'master' into 'bundle-target'
# Conflicts:
#   build.xml
2020-12-30 15:48:58 +00:00
zzz
de43de17f6 Crypto: Only skip N mixHash for router messages
Still required for ECIES build replies; previous checkin broke it
Make a new pattern id for N without responses
Fixes ECIES build replies
2020-12-30 07:08:47 -05:00
zzz
2ceb9c429a Console: Add tunnel nicknames to router debug page
Escape tunnel nicknames on LS debug page
2020-12-29 16:29:53 -05:00
zzz
0b59f53fe9 i2ptunnel: Disable shared clients (DSA), any server not
supporting EdDSA doesn't support LS2.
2020-12-29 15:51:51 -05:00
zzz
62fce859b9 Ratchet: mixHash() not required after message for N pattern 2020-12-29 14:15:00 -05:00
zzz
9fc97764c5 NetDB: Verify RI stores for a while after starting 2020-12-29 14:06:28 -05:00
zzz
2813d9412d Crypto: Cache AES Ciphers
About a 10% speedup
2020-12-29 10:26:41 -05:00
zzz
a0bf76a4b1 Debian: Add JRE 15,16 2020-12-28 08:29:07 -05:00
zzz
d2a79e8837 Build: Add version where missing from jar manifests 2020-12-28 08:07:50 -05:00
zzz
738ef496d4 Debian: Build fix for no geoip files 2020-12-27 10:13:02 -05:00
zzz
a2734ffa72 SSU: Fix restoration of window after failed message
Reported by and adapted from patch by zlatinb
2020-12-27 08:50:11 -05:00
zzz
8606d30e9a Build: Fixup installer build after flags move 2020-12-26 10:28:37 -05:00
zzz
a45084cfc3 Console: Move initial news to jar 2020-12-26 10:13:49 -05:00
zzz
eeaf6f3514 Console: Fix missing newlines in readme output 2020-12-26 09:36:36 -05:00
zzz
9e18ff1cd1 Router: Move countries.txt file into i2p.jar 2020-12-26 09:33:13 -05:00
zzz
665239fd37 Router: Move continents.txt file into jar
Move core resources directory to be consistent with the other subsystems
2020-12-26 08:11:00 -05:00
zzz
12f9a7187e Console: Move flag overrides to war 2020-12-26 06:12:31 -05:00
zzz
8835351b99 I2CP: Fix requesting leasesets for subsessions (ticket #2458)
Always request new LS for subsessions also
Don't reuse LS object for subsessions
Cancel rerequest timer as necessary
Fixes watchdog warnings
Fixes console status for subsessions in different states
javadocs
2020-12-24 13:56:32 -05:00
zzz
a3c44912f2 SusiDNS: Fix link to backup image 2020-12-24 10:11:41 -05:00
zzz
db9f735376 i2ptunnel: Fix writing config file twice on saving existing tunnel
Fix 'Invalid tunnel number' message on saving new tunnel
javadocs
log tweaks
2020-12-23 12:26:56 -05:00
zzz
875a7242d4 Javadoc update for DoH 2020-12-23 10:22:34 -05:00
zzz
51ecdc64a4 Debian: Refresh json patch 2020-12-23 10:18:29 -05:00
zzz
7b785ea454 I2CP: Fix encrypted leaseset for ECIES and dual-key encryption, and for offline keys 2020-12-23 10:05:58 -05:00
zzz
8f5fc44755 Crypto: Increase ratchet tag window
Set trimbehind = lookahead
Ramp up tag window faster
Check for ratchet ES encrypt fails
Log tweaks
2020-12-23 06:47:39 -05:00
zzz
010dbfa6f2 Console: Move resource helper to war, doesn't work from jar 2020-12-22 12:37:47 -05:00
zzz
e20a19c358 Console: Move readme files to war 2020-12-22 09:50:02 -05:00
zzz
387e513949 Console: Add netdb search by enc. type 2020-12-22 07:36:47 -05:00
5e005e6520 Merge branch 'whitespace' into 'master'
Whitespace

See merge request i2p-hackers/i2p.i2p!7
2020-12-21 23:00:12 +00:00
e88f40cd95 Whitespace 2020-12-21 23:00:12 +00:00
zzz
82e93a53a3 bump -7 2020-12-21 15:51:14 -05:00
zzz
fee5668c1c Merge branch 'partial-ack-fix' into 'master'
SSU: Fix partial acks not being sent when there are no 'gaps'.

See merge request i2p-hackers/i2p.i2p!6
2020-12-21 20:47:11 +00:00
zzz
abb8cbe75d SSU: Fix partial acks not being sent when there are no 'gaps'.
Workaround the bug on the sending side for pre-0.9.49 routers by sending fragments in reverse order.

Bug introduced in commit 9c4558d891 Sep 20 2014.
This partially reverts that commit.
Reported by and adapted from a patch by zlatinb
2020-12-21 10:02:20 -05:00
zzz
340df51429 Console: Fix theme selection 2020-12-20 14:40:09 -05:00
zzz
bec8feb05a Build: Fix up proxy file location 2020-12-20 14:08:13 -05:00
zzz
d86ccded53 Proxy: Move error page resources to jar 2020-12-20 13:50:54 -05:00
idk
db7d92a5cd Apply 1 suggestion(s) to 1 file(s) 2020-12-20 17:57:52 +00:00
zzz
30ffdd03c7 SSU log tweaks 2020-12-20 08:35:07 -05:00
zzz
251d8de943 Merge branch 'wplus-wip' into 'master'
SSU: Westwood+ congestion control (ticket #2427)

See merge request i2p-hackers/i2p.i2p!4
2020-12-20 13:13:34 +00:00
zzz
5e8de68746 SSU: Increase sendWindowBytesRemaining when increasing the window
Fix BWE log formatting
2020-12-19 08:23:13 -05:00
zzz
8ae29c8c00 SSU: Westwood+ bandwidth estimator classes (ticket #2427) 2020-12-19 07:26:53 -05:00
zzz
542efa0d9a SSU: Westwood+ congestion control (ticket #2427)
Reduce initial window to match RFC
Add back to window on message failure
Remove two bps stats
log tweaks
2020-12-18 14:46:26 -05:00
zzz
23c80accfa SSU: More PeerState cleanup 2020-12-18 11:58:55 -05:00
zzz
b909430725 SSU: Account for packet overhead in window calculations 2020-12-18 11:52:18 -05:00
zzz
20b413bc67 Crypto: Fix use after free (ticket #2797) 2020-12-18 11:05:36 -05:00
a9b6b86183 Merge branch 'ssu-sync-fix' into 'master'
lock locked_shouldSend on this

See merge request i2p-hackers/i2p.i2p!3
2020-12-18 13:48:40 +00:00
66b724759d lock locked_shouldSend on this 2020-12-18 09:03:52 +00:00
zzz
56059448c5 SSU: Send subset of fragments (ticket #2427)
if all fragments will not fit in the window.
Track per-fragment send count.
Reset send window when retransmitting.
Update send window when partial acks received.
Make OMS.getMaxSends() and getPushCount() track different things.
Change OMS.push() to be called by OMF and return the pushed fragments.
Use size of smallest fragment rather than total size to determine if we can send a message now.
This is an improved fix for ticket #2505.
Eliminate repeated calls to OMS.getLifetime()
Log tweaks and reduce log levels
Improves throughput on lossy connections.
Reduces latency for large messages.
This is prep for reducing DEFAULT_SEND_WINDOW_BYTES and W+, which
would have exacerbated these issues.
Additional changes to follow, implementing Westwood+, see #2427
2020-12-17 12:54:24 -05:00
zzz
1c52eeb910 NetDB: Prevent reported NPE 2020-12-16 11:01:45 -05:00
zzz
4aefe4bf7a SSU: Fix OMF looping when timer isn't cancelled after last message acked
Push out timer when no more bandwidth available
Workarounds for now, more changes to follow
2020-12-16 09:40:39 -05:00
idk
b9444cdc51 Merge branch 'fix-ides' into 'master'
Fix ides

See merge request i2p-hackers/i2p.i2p!2
2020-12-14 23:22:16 +00:00
idk
eb72e4c9f5 remove padding from control buttons on i2ptunnel in order to recenter the text vertically 2020-12-14 12:18:19 -05:00
zzz
aa181ee43f SSU: Restore sync dropped in cleanup 2020-12-12 11:00:03 -05:00
zzz
ab04f92072 SSU: PeerState cleanup 2020-12-12 10:15:02 -05:00
zzz
0830329eaf Build: delete file after building to make git happy 2020-12-12 10:13:56 -05:00
2d154cc90e update gitignore 2020-12-11 20:21:10 +00:00
183280871f get gradle assemble to work 2020-12-11 20:12:27 +00:00
067ee80ba0 remove IntelliJ and Eclipse project descriptors 2020-12-11 19:45:25 +00:00
idk
804e2f39f9 append full version to git bundle generation when generating from the ant target 2020-12-11 13:51:40 -05:00
zzz
0ad7e52b71 Router (proposal 156):
- Change router ECIES SKM to use N pattern, remove Elligator2, to match proposal changes
- Allow encrypted messages to ECIES routers
- Allow ECIES routers to become floodfill
- Add XDH factory to VM comm system for tests
2020-12-11 10:08:41 -05:00
zzz
e15110bbe1 Build: Fix i2pcontrol unset property in manifest 2020-12-11 09:00:12 -05:00
idk
2cffda6974 update the HACKING.md to reflect better and/or git-based instructions, also a test commit for git migration. 2020-12-10 13:42:02 -05:00
zzz
2300f6c226 i2psnark: Add web seeds in TrackerClient
list web seeds in UI
2020-12-06 14:25:43 +00:00
zzz
1ed8a1b6f3 i2psnark: Close RAF on error 2020-12-06 14:13:10 +00:00
zzz
c4ed7719e8 i2psnark: Preserve file attribute strings in metainfo 2020-12-06 14:00:02 +00:00
zzz
a98fe45204 Streaming: Add Retry-After header to throttle response 2020-12-06 13:26:55 +00:00
zzz
5a3e26453f Transport: Block SIP ports 2020-12-06 13:11:46 +00:00
zzz
c259000cdb Console: fixup param name 2020-12-06 13:09:57 +00:00
zzz
d683f0d9eb Util: Change DoH to the RFC 8484 protocol 2020-12-06 12:54:20 +00:00
zzz
48b8886224 i2psnark: Add WebSeed support - WIP - not hooked in yet 2020-12-06 12:43:55 +00:00
zzz
1097220d31 i2psnark: Move URIUtil from war to jar (prep for WebSeed) 2020-12-06 12:37:19 +00:00
zzz
fdeae72d38 i2psnark: Fix up standalone build 2020-12-06 12:31:22 +00:00
zzz
f870bc2ccd console: Move web resources to war 2020-12-06 12:05:53 +00:00
zzz
ec3bfa3cb7 susimail: Move web resources to war 2020-12-06 12:03:27 +00:00
zzz
c3f7c5d154 susidns: Move web resources to war 2020-12-06 12:02:11 +00:00
zzz
127b93c1e2 i2ptunnel: Move web resources to war 2020-12-06 11:59:54 +00:00
zzz
cd019f258f i2psnark: Move web resources to war 2020-12-06 11:59:11 +00:00
zzz
889b7361fe imagegen: Move CSS to war 2020-12-06 11:55:40 +00:00
zzz
99f6d4aba4 MiniDNS javadoc fix 2020-12-05 14:27:56 +00:00
zzz
69deddcbc7 Add DNS library to support RFC 8484 DoH (ticket #2201)
WIP - not yet hooked in

This is a portion of release 1.0.0 of MiniDNS from https://github.com/MiniDNS/minidns/ 2020-07-18
Only contains the minidns-core portion of the library.
Removed tests, most util classes, and DnsRootServer class.
Unmodified, as a base for future checkins.
Total size of zipped classes is about 75 KB.

This software may be used under the terms of (at your choice)
- LGPL version 2 (or later)
- Apache Software licence
- WTFPL
2020-12-05 14:21:08 +00:00
zzz
58020b4b58 Console: Swap some columns on ssu /peers for consistency
Format send window and slow start threshold values
2020-12-05 12:56:58 +00:00
zzz
df43e72a08 PRNG: Drop unused exception and interface 2020-12-05 12:51:24 +00:00
zzz
326e2c630c Debian: Files for 0.9.48
refresh patches
update release docs
2020-12-02 14:53:38 +00:00
zzz
36fdfd529f 0.9.48 2020-12-01 15:54:41 +00:00
zzz
94bdc9c5b3 Late pl,zh translation updates 2020-12-01 14:50:37 +00:00
zzz
c60e51514c Add old cert to deletelist.txt
Javadoc fix
2020-12-01 14:39:44 +00:00
zzz
7dcbbf17c3 Console: Fix headers on /debug
JS: Update license headers
patch from idk
2020-12-01 14:36:50 +00:00
zzz
5551deb246 pull RU translations 2020-11-28 19:42:22 +00:00
zzz
6e8fd42efd pull translations 2020-11-27 18:40:53 +00:00
zzz
5020100ef8 BuildTime update 2020-11-27 18:06:55 +00:00
zzz
6c2c6abfb9 NTCP: Enable nodelay by default
SSU: Don't wakeup OMF after ack if no more messages are pending
2020-11-26 18:58:22 +00:00
4940c34779 More light theme CSS tweaks to table headings and table spacing on /config*, switch from uppercase to capitalize for titles on SusiMail 2020-11-25 03:58:38 +00:00
6d5aebeaa0 remove borders from around notifications on /welcome 2020-11-24 19:27:02 +00:00
zzz
d8924119b5 NTCP: Add nodelay option for testing 2020-11-24 14:48:59 +00:00
zzz
4b445e7d35 Build: release target fixes for git 2020-11-24 14:45:02 +00:00
zzz
17e47a0c93 Build: revisions target for git 2020-11-24 14:02:20 +00:00
zzz
2ffb570850 Console: Serve default favicon.ico
i2ptunnel: Remove dup link to nonexistent theme favicon.ico
2020-11-23 18:46:12 +00:00
zzz
aef2fb8ce0 i2pcontrol: Basic HTML fixes and HTTP headers for static pages 2020-11-23 15:24:19 +00:00
zzz
875fcdfb94 NetDB: Increase min FF version for LS lookups since most are LS2 now 2020-11-22 19:46:18 +00:00
151f856b0a apply revert to h3#transports on /peers to fix cramping 2020-11-22 16:25:15 +00:00
zzz
337787be0e i2psnark: Remove old opentrackers 2020-11-21 17:27:41 +00:00
zzz
798521466d Proxy: Remove old jump servers 2020-11-21 17:24:24 +00:00
zzz
678c035fa3 Proxy: Fix CSP for conflict error page 2020-11-21 17:21:36 +00:00
zzz
ccb4210f8b NetDB: Limit max explore at startup when hidden 2020-11-20 14:37:22 +00:00
zzz
7e5dc6ad64 Tomcat 9.0.40 2020-11-20 14:11:59 +00:00
zzz
31622d0458 NetDB: Increase exploration rate when hidden 2020-11-20 12:59:22 +00:00
zzz
f9b18545f9 Reseed update 2020-11-20 12:30:52 +00:00
e67eccd1eb Remove inconsistent gradients from light theme /config items 2020-11-19 22:25:51 +00:00
cefe212a17 Get rid of uppercase text transforms on non-table headings, fix wierd white background on h4's 2020-11-19 21:44:11 +00:00
8a76d71bd5 Widen margins in langsettings dropdown 2020-11-19 21:11:04 +00:00
806df95114 Lighten up some borders on /home, improve consistency of backgrounds on /home, header margins on apps on homepages 2020-11-19 20:56:21 +00:00
c6c0b9ce8a Un-squish the SusiDNS SVG image on Firefoxes greater than 83, remove wierd padding from .optboxes 2020-11-19 18:27:29 +00:00
zzz
00a0970c95 Crypto: Adjust Java key cache sizes 2020-11-19 14:52:11 +00:00
zzz
cb1bd95f2b Build: Reproducible build fix (ticket #2279) 2020-11-19 14:28:38 +00:00
zzz
d12b52f82a Debian: Clean up old commented-out rules 2020-11-19 12:53:26 +00:00
zzz
891ffaac09 Update apparmor profile for usrmerge
https://bugs.launchpad.net/ubuntu/+source/i2p/+bug/1784023
2020-11-19 12:42:07 +00:00
zzz
36fbf0e332 poupdate-source 2020-11-18 17:54:36 +00:00
zzz
e811238d60 NetDB: Disable sending encrypted messages to ECIES routers for now
The #ls2 team plans to change the specification and re-enable after the 0.9.48 release
2020-11-17 16:21:10 +00:00
zzz
c9e6bef825 Jetty: Patch to fix console not starting on Java 11.0.9.1
Backport JavaVersion.java from Jetty 9.4.34
Jetty does not plan to fix in 9.3.x
ref:
https://github.com/eclipse/jetty.project/issues/5682
https://github.com/eclipse/jetty.project/issues/2284
http://zzz.i2p/topics/2991
2020-11-17 15:50:10 +00:00
zzz
0f002b9b69 Jetty 9.3.29.v20201019/ 2020-11-17 15:39:08 +00:00
zzz
f179a057bc Wrapper: Add missing binaries for armv7 and aarch64 to installer (ticket #2308) 2020-11-17 12:04:49 +00:00
zzz
6f5042be8f Test: Drop ancient unused DateMessage 2020-11-16 16:16:49 +00:00
zzz
2044474549 Zxing: Update to 3.4.1 (2020-09-29)
Merge in javadoc fixes
2020-11-16 15:55:27 +00:00
zzz
0b0b93f26f javadoc fix 2020-11-16 15:32:29 +00:00
zzz
595f8762ab I2NP: Don't extend DataStructureImpl, to save space
Fixup test as required
2020-11-16 14:51:35 +00:00
zzz
8644eb431e GeoIP 2020-11-01 2020-11-16 14:43:22 +00:00
zzz
223afdfc7e Wrapper: Update to wrapper 3.5.44
All binaries from Tanuki Delta Pack Community Edition,
except for armhf (armv6), compiled on Raspberry Pi:
  ant 1.8.2
  javac 1.7.0_151
  gcc 4.6.3-14+rpi1

Windows binaries remain unchanged as we must recompile them ourselves
(32 bit just to change the icon; 64 bit is not provided by Tanuki)

PPC 32-bit big endian not updated, no longer supported by Tanuki
2020-11-16 14:35:48 +00:00
zzz
de41cab08e GarlicClove: Store time as long rather than Date to save space 2020-11-11 16:00:57 +00:00
zzz
3606a42ea8 Lease: Store time as long rather than Date to save space
Add long methods, deprecate Date methods
2020-11-11 15:15:44 +00:00
zzz
6887c7edae I2CP: Don't have I2CP Messages extend DataStructureImpl, to save space
Ditto MessageId and SessionId.
Fixup unit tests as required
2020-11-11 13:09:42 +00:00
4a00691385 increment the counter on the bandwidth config page by 5 instead of 10 so that it can actually match the recommendations on the /welcome 2020-11-11 00:32:35 +00:00
1d0a2c4fac Fix right-side padding of down arrow on select boxes 2020-11-10 19:40:30 +00:00
d0016380e5 Make all the border radiuses consistent across apps. Button-like inputs get a 12px radius, text-like inputs get a 6px radius. "Professional but not prickly." nix almost all drop-shadows and most text-shadows. more 1-3 pixed tweaks to get text centered up 2020-11-10 19:15:41 +00:00
zzz
29dc311c6a Ratchet: Destroy HandshakeState after fatal NS/NSR errors 2020-11-10 15:22:46 +00:00
zzz
7aa78a1aed One more i2cp buffer size increase 2020-11-10 14:57:39 +00:00
zzz
989f64192f i2psnark: Larger read buffer for large files 2020-11-10 14:54:37 +00:00
zzz
c908c6bd05 Data: SDS no longer extends DataStructureImpl to save space
More minor i2cp efficiency improvements
KeyCertificate log tweak
2020-11-10 14:48:42 +00:00
9f51b72cab fix oversized button on i2ptunnel home page 2020-11-08 02:49:16 +00:00
zzz
a2fd817915 Tunnels: getUnknownOptions() is non-null
one more TunnelId fixup
2020-11-07 13:53:44 +00:00
zzz
5bafdd05a9 Tunnels: Simplify TunnelId and HopConfig to save space
and reduce object churn and duplication
Fixup tests, javadocs, logging as required
2020-11-07 13:40:48 +00:00
e18708bdbe round and re-center buttons on i2ptunnel home page 2020-11-07 07:18:15 +00:00
f6687c1f88 add a little padding to the left of the text in the sidebar under Local Tunnels, set links list style to none instead of using the link image 2020-11-07 02:55:35 +00:00
b9eabca403 use paste.png for the pastebin instead of pasteidk.png so in theory other pastebins could use it 2020-11-06 16:59:30 +00:00
9ec2c62f2f update the contents of /home to include git.idk.i2p and paste.idk.i2p 2020-11-06 16:57:47 +00:00
zzz
d4152ea546 NetDB: Ensure RI republish time is less than validation time
to prevent failures on connections esp. for hidden mode
2020-11-05 18:47:49 +00:00
zzz
8cc62b5b42 Util: More elimination of data copies 2020-11-04 14:27:16 +00:00
zzz
e242015145 Util: Hook in ByteArrayStream
Set accurate lengths for zero-copy
2020-11-04 12:04:24 +00:00
zzz
35da97936d Point to gitlab in console readme.html,
as approved at today's meeting
2020-11-03 20:59:39 +00:00
zzz
bfe21176ea Add host already linked in console,
as approved at today's meeting
2020-11-03 20:30:53 +00:00
zzz
d1dd9ab517 i2ptunnel: Add checks for offline expiration in alternate destination
Improve logging for expiration checks
2020-11-03 16:39:35 +00:00
zzz
c18dbe974a Remove reseed SSL cert, now using a CA 2020-11-02 22:19:49 +00:00
zzz
f69563da75 Util: New zero-copy BAOS
WIP, to be hooked in
2020-11-02 12:12:20 +00:00
zzz
057eca56d5 Console: Show offline expiration on LS debug page 2020-11-02 12:01:58 +00:00
zzz
a21a64e0c6 i2psnark: Remove unused bencode() methods 2020-11-02 11:39:40 +00:00
zzz
751af5bcd8 i2psnark: Limit max size of embedded video 2020-11-02 11:33:34 +00:00
zzz
c8605009ba i2ptunnel: Automatically restart tunnel if offline-signed private key file is updated
Periodically log if about to expire
Short delay between stop and start on restart
_tunnel is always non-null
2020-11-02 11:27:06 +00:00
zzz
5625caebda I2CP: Remove tunnels immediately on client disconnect 2020-11-02 11:21:52 +00:00
zzz
fc0a78dd7b Util: Drop class deprecated 11 years ago 2020-10-31 20:20:59 +00:00
zzz
90aab37002 i2psnark: Add support for comment and url_list to Storage CLI
Add support for multiple urls to MetaInfo CLI
Add comment to release torrent
2020-10-30 16:37:54 +00:00
zzz
5c1a529df0 Util: Fix NPE in EepGet CLI callback via PartialEepGet
Fix callback javadocs
2020-10-30 15:22:24 +00:00
zzz
6fa015c410 i2psnark: MetaInfo support for url-list (prep for BEP 19),
WIP - unused for now.
Add url-list to CLI tool for testing
Add comment support to CLI tool
2020-10-30 13:18:46 +00:00
zzz
2d1e68b53b i2psnark: Store BEP 47 padding file info in a bitmap (prep for BEP 52),
WIP - unused for now.
Don't instantiate files_utf8 unless needed, which it never is
2020-10-29 17:13:32 +00:00
zzz
35012a3bad Crypto: Precalculate Noise init hash 2020-10-29 16:51:13 +00:00
zzz
190b76d7fd Tunnels: Improved logging and handling of offline signature expiration
Store back ref to controller in tunnel
Stop server controller on I2PException
Support generation of keys with fractional days expiration for testing
2020-10-29 15:20:56 +00:00
8d0b1214d2 un-do android check in ObjectCounter and fix hte issue by correctly setting the classpath instead, see RELEASE-PROCESS.md in i2p.android.base 2020-10-29 04:04:18 +00:00
zzz
70eb2a49f9 Router: Fix ECIES tunnel testing part 2
Remove ratchet tag from RSKM on timeout
2020-10-28 13:15:26 +00:00
zzz
f231ea0951 Util: ObjectCounter better android detection 2020-10-28 12:09:55 +00:00
zzz
f9ffdd5137 Router: Fix tunnel testing for ECIES routers 2020-10-28 12:04:01 +00:00
38f9955391 fix android keySet bug that I discovered this morning 2020-10-28 04:33:47 +00:00
zzz
517ff9af28 Build: Fix dev info in maven data 2020-10-27 15:30:03 +00:00
zzz
62a91acb40 DoH: Limit response size, sort servers for test
SSLEepGet: Fix handling of state param, support max size param
2020-10-27 14:53:11 +00:00
zzz
69a5266675 DoH: Add CLI test of all servers 2020-10-27 12:45:37 +00:00
zzz
e671741329 DoH: Set user agent 2020-10-26 22:47:32 +00:00
zzz
ab55f27ea4 DoH: Add more CLI options for testing 2020-10-26 15:29:59 +00:00
zzz
cf88b3057a DoH: limit total time and max requests
Better loop checking, force DoH off for request
2020-10-26 13:44:23 +00:00
zzz
af97eedcbb Util: Fix EepGet allowCaching parameter
Add SSLEepGet method to force DoH on/off
2020-10-26 12:22:54 +00:00
zzz
7823001594 BOB: Add deprecation warnings 2020-10-25 12:31:50 +00:00
zzz
a49f87179a Router: Quick checks of eph. key MSB before Noise DH
Additional checks on ECIES BRR to catch old/buggy routers
Detailed logging of ECIES BRR decrypt fails
2020-10-25 10:55:53 +00:00
zzz
b52f85ac38 Tunnels: Add missing expiration field to ECIES BRR 2020-10-23 19:42:05 +00:00
zzz
470bc77551 fix one more ;; 2020-10-23 16:10:58 +00:00
zzz
a0822a6b71 NTCP2: Reduce min downtime for rekeying if hidden 2020-10-23 16:09:15 +00:00
zzz
15da2f85ad SSU: Minor cleanup of congestion checkin 2020-10-23 16:05:39 +00:00
zzz
9b3ff9e615 TCG: Rename method to reflect what it really does 2020-10-23 16:03:19 +00:00
zzz
df1db163f0 i2ptunnel: Remove mtn tunnel (new installs only) 2020-10-23 15:50:30 +00:00
zzz
4a4d814a17 Tunnels: Move AES reply keys from HopConfig to TunnelCreatorConfig
to save space; not stored for participating tunnels.
2020-10-23 12:58:45 +00:00
c84360ba4b Update the Firefox user-agent string to match the Firefox ESR that is currently used in Tor Browser, credit to dr|zed for pointing out the update and the fix. Tor Browser updated to Firefox ESR 78 with the 10.0 release on September 24, 2020 2020-10-22 16:12:26 +00:00
zzz
6a6064d614 Garlic: Reduce log level on misrouted message 2020-10-21 20:24:12 +00:00
zzz
49565a99f9 SSU: Redesign of the congestion control (tickets #2412, #2649, #2654, #2713),
modelled on TCP Reno (RFCs 5681 and 6298)
- Use a single timer per connection
- Resend up to half the un-acked messages per timer event instead of a single message
- Only send either old or new messages, do not mix
- Cache/avoid several timer calls
- Instead of 3 return values, allocating bandwidth is now a boolean function
- Avoid one of the iterations over all un-acked messages every packet pusher loop
- Remove 100 ms failsafe
- Fix OMF debug log NPE
With the same cpu usage the bandwidth is much higher
Significant speed improvement for lossy connections (e.g. wifi)
Patch by zlatinb
2020-10-21 18:14:51 +00:00
zzz
ee27bc3bbf Reseed: Renew SSL cert expiring soon 2020-10-21 15:21:41 +00:00
zzz
25899d41d5 NetDB: ECIES router support (proposal 156):
Support sending encrypted lookups and stores to ECIES routers
Support requesting AEAD replies to ECIES routers
Encrypt RI lookups when using ECIES even on slow machines
Switch back to RatchetSKM
Don't schedule ack timer for router SKM
Reduce getContext() calls
GMB null check cleanup
MessageWrapper javadoc clarifications
Log tweaks
2020-10-21 14:54:47 +00:00
zzz
35f6a2e2bf NetDB: Reseed after a long downtime 2020-10-21 13:46:31 +00:00
zzz
9ae5cbbc87 SSU: Increase socket buffer size (ticket #2781) 2020-10-21 12:44:27 +00:00
zzz
0ace93cec7 i2psnark: Remove references to "maggot" links 2020-10-17 15:19:23 +00:00
zzz
d387448794 ;; -> ; 2020-10-17 14:41:13 +00:00
zzz
4d82917b94 SSU: Fix calculation of nextSendDelay (ticket #2714)
patch from zlatinb
2020-10-17 12:12:15 +00:00
7a77f48963 Work on lining up some of the button text and icons a little better, fix peer icon and top/bottom icon, various padding issues 2020-10-16 04:55:48 +00:00
zzz
dee5dfc682 clear exec bit 2020-10-15 15:48:39 +00:00
zzz
5ed6f834c1 libjbigi for linux aarch64 (ticket #1840)
stripped
gcc: 7.5.0
jdk: openjdk version "1.8.0_265"
Built on: Raspberry Pi 4 Model B Rev 1.4
Add support to mbuild-all.sh
2020-10-15 15:36:38 +00:00
zzz
3b8e5f0763 i2psnark: Stub out BEP 52 message numbers
Hide BEP 48 padding directory from UI
Check for and reject BEP 52 info multihashes for now
Use cached fai.isDirectory for efficiency
Use storage.getFileCount() instead of meta.getFiles() to prep for padding files
Add notes for padding file TODOs
2020-10-15 12:04:24 +00:00
zzz
7c1798513d Util: Singleton OrderedProperties comparator 2020-10-15 11:54:43 +00:00
zzz
e54950e02e Router: MessageWrapper.wrap() and GMB support for ECIES (prop. #156 WIP)
NetDB parts still TODO
Remove PK param from GMB.buildECIESMessage(), already in config
2020-10-15 11:50:11 +00:00
zzz
b2f060795c Router: Misc. debug fixes
- StatisticsManager fix for null router in unit tests
- Debug toString() enhancements
- Dest hash logs in b32
- Javadoc fix
2020-10-15 11:39:32 +00:00
zzz
940ad61ccc Ratchet: ECIESAEADEngine main() quick test IK/N NSR 2020-10-15 11:32:25 +00:00
zzz
c1f531ea92 Ratchet: Add support for zero key (prop. #144, WIP for prop. #156) 2020-10-15 11:17:41 +00:00
zzz
0ebca7e8e3 Ratchet: Destroy HandshakeState after NS failure 2020-10-15 11:10:33 +00:00
zzz
d301669726 Router: Don't re-derive public key from private for every HandshakeState 2020-10-15 11:01:22 +00:00
zzz
010bb0a2fe NTCP: Fix sending termination on idle timeout (ticket #2777) 2020-10-12 13:29:46 +00:00
zzz
f028002c11 NTCP: Catch IAE in Reader, possibly a race with cancelled key?
http://zzz.i2p/topics/2968
2020-10-12 13:28:57 +00:00
zzz
11e1747ffc New partial translations for Kurdish, Turkmen, Argentinian Spanish 2020-10-12 12:50:49 +00:00
zzz
5dc9333bb6 DTG: Enable by default for Linux KDE and LXDE
Hide option on /configservice if not supported
2020-10-12 11:24:08 +00:00
zzz
f77acb6db6 i2psnark: Don't truncate 'file not found in torrent' status 2020-10-11 16:25:20 +00:00
zzz
22abf09bd7 i2psnark: Version the file icons
Minor cleanup of icon set selector
2020-10-11 13:22:26 +00:00
zzz
9a1d7a2ae3 Installer: Disable pack200 (ticket #2778) 2020-10-11 12:07:09 +00:00
zzz
98e5908557 i2psnark: Cache length of metainfo 2020-10-10 14:59:13 +00:00
zzz
9e36fe090c Transport: Simplify IPv6 address validation
reject reserved ranges
2020-10-10 12:59:53 +00:00
zzz
b4b6968ede Ratchet debug: Hide expired sessions
Hide sessions with null public key
2020-10-09 13:54:12 +00:00
zzz
999c4c51a2 NetDB: Don't use DSA-SHA1 routers for lookups, stores, or tunnel peers
Don't use non-ElGamal routers for lookups or stores
Prevent DSA-SHA1 routers from auto-floodfill
2020-10-09 13:46:37 +00:00
zzz
8737a6a4fd i2ptunnel: Filter server response headers even if not compressing 2020-10-07 15:02:06 +00:00
zzz
a9a5d13e06 Build: Set javac release property (ticket #2775)
Ant version 1.9.8 or higher now required
Drop support for Xenial package build
Fix up BOB build configuration
Fix i2psnark standalone build
2020-10-07 13:33:41 +00:00
ca1e2ba91e Switch Snark dark and light themes to using images embedded in the .war, and remove the images substitutions from the filesystem and css 2020-10-07 04:47:27 +00:00
zzz
2e34969bbc Add git hostnames as requested by idk 2020-10-04 16:42:50 +00:00
zzz
cead0b2fb8 Router: Add support for building tunnels through ECIES routers (proposals 152,156)
Preliminary, proposal not finalized, subject to change
Not yet compatibility tested with other implementations
Add peers to match requested length for explicitPeers
remove commented out code
log tweaks
2020-10-03 14:05:22 +00:00
9d566aea68 snark theme fixes: Revert the i2psnark buttons on the ubergine and vanilla themes back to their original versions, but keep flat buttons for dark and light themes. Fix some squashed icons and apply some slightly better icons for indicating torrent status and contents on dark theme. 2020-10-01 05:01:44 +00:00
zzz
2d9933a4a9 Router: Don't unregister a message without a selector (ticket #2771) 2020-09-28 13:59:30 +00:00
zzz
cd699c587b i2ptunnel: I2Ping CLI tunnel quantity 1
Show current setting for owndest in CLI
Skip a irrelevant log message for I2Ping
Break wait on interrupt
Log level tweaks
2020-09-27 14:38:44 +00:00
zzz
4108007b26 JBigI: Fix zen/zen2/zen3 CPU names (ticket #1869) 2020-09-27 14:33:58 +00:00
zzz
b31b42a557 Streaming: Fix copy/paste errors in tag option handling 2020-09-27 14:17:36 +00:00
zzz
c3f187abcb Console: Drop gateway icon on leasesets page,
just adds clutter with no value.
Change last-changed time on leaseset debug page to use standard formatting
2020-09-26 14:05:29 +00:00
zzz
2989d955d9 JBigI: GMP 6.2.0 for linux 64 bit (ticket #1869)
Add support for zen and zen2
Enable more fallbacks for zen and zen2
Adds Zen and Zen2 binaries, stripped
Built with gcc 9.3.0
Other binaries will be added if testing shows improvement
Fix hangs in mbuild-all.sh build script
Add silvermont and goldmont to build script, untested, support TBD
GMP is GPLv2
More info: http://zzz.i2p/topics/2955
2020-09-26 12:58:55 +00:00
zzz
ea4409897d i2ptunnel: Change enctype default to both for:
HTTP, IRC, and Streamr servers
IRC, SOCKS IRC, and Streamr clients
2020-09-22 14:52:55 +00:00
zzz
7dd7f021b0 Susimail, SAM: More defensive ByteBuffer casting to avoid runtime issues (ticket #2775) 2020-09-22 14:39:32 +00:00
zzz
2cb53ec45c Update LICENSE.txt since SSU HMAC was moved from core to router 2020-09-20 13:48:46 +00:00
8fa3e45e47 Add tags for librejs compatibility on application/console pages and in embedded javascript 2020-09-20 05:05:57 +00:00
zzz
c4a5d111e7 Build: More git support for release and Debian targets 2020-09-18 14:31:24 +00:00
zzz
dca45a9b18 i2psnark: Defensive checks for v2 format files and magnet links 2020-09-16 14:42:11 +00:00
zzz
6ffebbd5c1 GeoIP: Notify blocklist of new country file (ticket #2759) 2020-09-16 13:43:14 +00:00
zzz
aa07775a32 Blocklist: Move HTML status generation to console 2020-09-11 17:21:04 +00:00
zzz
30244f9d9b Router: Use MuxedSKM for ECIES routers (proposal 156 WIP) 2020-09-11 14:13:36 +00:00
zzz
19d4a5ce26 Blocklist: Refactoring (ticket #2759 WIP) 2020-09-10 16:20:08 +00:00
zzz
e4cb730c1b GeoIP: Generate country blocklist when hidden (ticket #2759)
WIP - full blocking requires restart for now
2020-09-10 14:00:04 +00:00
zzz
3b18e54545 Console: Fix /configclients help message for split client config files 2020-09-10 13:01:18 +00:00
zzz
2fbbd8e7d1 Crypto: Cache HMAC256 instances
Appx. 38% speedup
As suggested by jogger
2020-09-09 21:13:37 +00:00
zzz
e466331407 GeoIP: Add methods to get all IPs for a country
from a geoip 1 or 2 database,
to prep for a country blocklist (ticket #2759)
WIP - not hooked in yet
2020-09-09 15:26:24 +00:00
zzz
5d1f46e6c4 Blocklist: Track versions of each file
Adjust synchronization
Fix logging for feed file
Prep for a country blocklist (ticket #2759 WIP)
2020-09-08 13:38:10 +00:00
zzz
36318def69 Tunnels: BuildRequestor minor cleanup 2020-09-08 13:32:24 +00:00
zzz
72e4b16c1a I2NP BRR: Minor cleanup and javadoc note 2020-09-08 13:26:33 +00:00
zzz
8a10c3a097 NTCP: Call afterSend() for multiple messages in NTCP2 (ticket #2769) 2020-09-08 13:17:46 +00:00
zzz
d402300dba Console: Support remote lookup of full router hash from search form 2020-09-04 16:57:40 +00:00
zzz
ada6753255 Tunnels: For now, don't try to decrypt a build record with a ECIES key (proposal 152 WIP) 2020-09-04 15:03:14 +00:00
zzz
ceb0749e0d Util: Fix decompression of compressed zero bytes (ticket #2770) 2020-09-02 15:57:04 +00:00
zzz
4863ab3711 javadoc 2020-09-02 13:51:27 +00:00
zzz
c745cc8aa1 Ratchet: Change SparseArray from int to char to reduce space 2020-09-02 13:48:30 +00:00
zzz
273902f616 SSU: Randomize intro key 2020-09-02 13:26:10 +00:00
zzz
bb761aea96 Router: Prep for router encryption types (Proposal 156 WIP) 2020-09-02 13:09:38 +00:00
zzz
d13a7d2872 Router: Reduce next key threshold for ratchet 2020-09-02 12:55:21 +00:00
zzz
49b2ca061c New Ed25519 destinations for postman's servers 2020-09-02 12:52:25 +00:00
3e23ec8d27 fix trac#2768 2020-09-01 14:14:39 +00:00
zzz
22eeb90b81 Bump -1 2020-08-29 13:44:11 +00:00
zzz
6a69cef2a8 Ratchet: Minor cleanup 2020-08-29 13:41:48 +00:00
zzz
c1fef302f3 Crypto: ChaCha small initialization speedup 2020-08-29 13:39:52 +00:00
zzz
bd370cf407 spelling fix 2020-08-29 13:34:42 +00:00
zzz
feba993019 javadoc fix 2020-08-29 13:34:00 +00:00
zzz
623a11dd8f console: ngettext fixes 2020-08-29 13:32:34 +00:00
zzz
ba7fb00450 i2ptunnel: Prevent changing alt private key file while running 2020-08-29 12:52:00 +00:00
zzz
20b4186331 merge of '554c9e737b3a7b6585cc36c8e22de6012ca57754'
and 'cd8c225752a1e1e5be98c13e7e7f5fdb2b160642'
2020-08-25 19:50:03 +00:00
zzz
2479645d22 Debian files and checklists update for 0.9.47 2020-08-25 19:49:54 +00:00
8585e2e955 fix heading alignment for console news on light theme 2020-08-24 17:20:34 +00:00
14518dc396 fix missing classic icons from imagegen css/index, removed classic reference ie-compatability from css.jsi 2020-08-24 17:15:40 +00:00
zzz
ccd64b6f07 0.9.47 2020-08-24 15:33:54 +00:00
zzz
21efdb9bd0 bump for review 2020-08-21 19:18:06 +00:00
zzz
94778c74dc update translations 2020-08-21 19:09:48 +00:00
929c09fecc add fontawesome license to router console themes section in LICENSE.txt 2020-08-20 19:35:03 +00:00
zzz
c067f38123 GeoIP 2020-08
Meet db-ip.com license requirements
BuildTime update
2020-08-20 15:39:12 +00:00
zzz
046d1e01b0 make method private 2020-08-19 18:52:18 +00:00
zzz
cc6247fe7e findbugs all over 2020-08-19 14:50:58 +00:00
797a31924d Improve appearance of a few icons from the new icon set, all are under Fontawesome license except for move_up.png, move_down.png, move_top.png, and move_bottom.png which are used under the Feather license 2020-08-16 18:01:54 +00:00
zzz
87f9b619e5 welcome text correction 2020-08-14 15:00:23 +00:00
4ac89e7024 Remove mistaken association between Localization Lab and our Transifex efforts. 2020-08-14 13:49:18 +00:00
zzz
fceda68cd8 Remove reseed 2020-08-14 12:58:18 +00:00
zzz
07fc66ccff Profiles: Create profiles in the nonblocking path
thanks energy52
2020-08-14 12:54:39 +00:00
zzz
d7b512ca9a spelling fix 2020-08-13 19:11:00 +00:00
926f88585a fix typo on welcome.jsp 2020-08-13 18:08:58 +00:00
zzz
717e1c58fa Transport: State transition fix 2020-08-13 15:38:03 +00:00
zzz
4b3dbd8915 poupdate-source 2020-08-12 18:49:44 +00:00
9d31a41ffe remove extraneous comma 2020-08-12 18:33:50 +00:00
217571118b tag complete sentences for strings in welcome.jsp 2020-08-12 18:29:10 +00:00
b03e919cbe fix strings on welcome.jsp 2020-08-12 17:50:12 +00:00
482b305065 Fix fontawesome license file 2020-08-12 13:33:55 +00:00
27776cddb2 use color versions of the new icons(last big image checkin), add custom images for community sites, tweak some sizes on images that were squashed or stretched, remove borders on /home buttons 2020-08-11 22:01:50 +00:00
029e082cfc note icon change in history.txt 2020-08-11 05:21:18 +00:00
6087a46a0b replace basically every small image, icon, or indicator with one from a consistent source, minus personal/community sites and plugns, see licenses/LICENSE-fontawesome for more details 2020-08-11 05:10:00 +00:00
zzz
b78f6a645c Debian: Fix patch offsets 2020-08-01 14:16:16 +00:00
zzz
f8b04e398e Debian: Support libjson-simple-java 3 for bullseye
Patch adapted from Gilles Filippini
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960589
2020-08-01 14:12:54 +00:00
zzz
097f178e2a I2NP: Locking for message ID 2020-08-01 13:49:43 +00:00
zzz
d221846c31 NetDB: Only flood LS to rotated floodfills just before
midnight if the LS will expire after midnight
Reduce number of stat periods
2020-08-01 13:34:26 +00:00
zzz
fa08d2f946 Util: Add KeyStore and SHA256 to CLI 2020-08-01 13:22:24 +00:00
zzz
336563e7c0 Router: Logging fix for client start failures 2020-08-01 13:04:33 +00:00
zzz
f4ac8e02f6 Util: More efficient use of random data 2020-08-01 12:59:50 +00:00
zzz
29d2051a34 configlogging code cleanup 2020-08-01 12:48:53 +00:00
zzz
e52359c4c0 NetDB: New reseed 2020-08-01 12:40:46 +00:00
zzz
d73b327fd0 NetDB: Track client that requested LS
OCMOSJ: Don't send to a RAP LS
2020-08-01 12:36:31 +00:00
d1bdeae596 replace tabs with spaces in HomeHelper.java 2020-07-31 14:51:05 +00:00
fa8bd4310c fix typos in the welcome wizard 2020-07-29 02:38:56 +00:00
zzz
4f8f8b659b Drop more old susi files 2020-07-28 20:34:07 +00:00
zzz
5a9eb68160 Data: Don't check LS1 revocation signature 2020-07-28 16:14:05 +00:00
b97ec8da90 clean up some of the awkward language on the welcome wizard, don't ask people to 'be patient' explain what is happening, etc 2020-07-27 17:01:48 +00:00
zzz
a3fe0092ac i2ptunnel: Change CONNECT tunnel default sigType to EdDSA (ticket #2749) 2020-07-22 17:18:23 +00:00
zzz
896dbfbacf i2ptunnel: Change default encType to both for new tunnels,
http client, shared clients, and all tunnels for new installs (ticket #2751)
Change IRC tunnel sigType to EdDSA for new installs (ticket #2749)
2020-07-22 15:34:43 +00:00
zzz
4d3561c92a i2psnark: Increase max pipeline, negotiate actual value 2020-07-19 14:45:48 +00:00
3c7b658a59 Avoid some repeated code 2020-07-16 05:25:02 +00:00
6482437795 Move plugins to their own section on /home, and make it so that if all the elements of a section are shown, that section becomes hidden(so that plugins are not enabled by default) 2020-07-15 16:06:06 +00:00
zzz
12e2dabaa8 Router: Consistent logging for network ID check
Log level change for peer test IP
2020-07-11 14:19:01 +00:00
zzz
e05545ab7c OCMOSJ: Don't lookup an expiring LS2 if unpublished 2020-07-11 13:53:53 +00:00
zzz
f0bcab2e2c NTCP: Atomics for NTCP final state (ticket #2701) 2020-07-11 13:12:25 +00:00
zzz
075ac7ab43 SAM: Rename 3.3 control session 2020-07-09 17:05:06 +00:00
zzz
31d7d7d9bb Addressbook: Rename the book nobody uses
Config migration
Version the svg
Remove very old standalone files
2020-07-09 16:45:37 +00:00
ed14aa130c Credit sadie for the first part of her redesign work 2020-07-08 17:44:12 +00:00
zzz
81007c1a03 LookupDestJob: Missing return after sending fail for blind data 2020-07-07 15:04:02 +00:00
zzz
2e3ff679f3 i2psnark: Change ETA default sort order (ticket #2733)
add markdown mime type
2020-07-07 13:22:44 +00:00
zzz
a84996399e Reseed: Enforce minimum version for bundling 2020-07-07 12:50:34 +00:00
7b872474fd turn URL's in readme into Markdown Links using URL as link text, as suggested by user gnuself on trac and approved by idk 2020-07-04 21:02:20 +00:00
531b7c2ae9 Remove extra step-indicator from first slide of welcome wizard 2020-07-03 23:21:15 +00:00
95f16c99bd Remove Why I2P from the welcome wizard. Make the welcome wizard more informative about the functionality contained within I2P. Tweaks to stylesheets on the welcome wizard. 2020-07-03 23:18:14 +00:00
462180f9a4 re-name full color logo(logogrey7.png=>wizardlogo7.png) used in welcome wizard and remove the old redundant ones. 2020-07-03 16:15:32 +00:00
505c49ad01 Tweak position of headings and infoboxes in welcome wizard, switch to full-color I2P logo on all pages 2020-07-03 15:36:14 +00:00
16d6cf0177 make expanding sections scrollable on iframed dark theme 2020-07-02 12:44:42 +00:00
zzz
112beb552b i2ptunnel: Fix missing throttling section for non-HTTP servers 2020-07-02 12:15:54 +00:00
b53cdafc84 clarify license status of new wizard assets 2020-06-28 18:50:34 +00:00
zzz
365b9053ec NetDB: Check signature in verify
Remove null checks, _target can't be null
2020-06-28 14:56:08 +00:00
aadc9a13aa improve appearance of textareas and inputs when the text inside is highlighed, on the i2ptunnel dark theme 2020-06-26 22:08:16 +00:00
39f3e3a92c more non-textual updates to the bandwidth wizard 2020-06-24 18:02:25 +00:00
9a6374c79b new images for the install wizard, re-name the images, even up the font sizes on the bandwidth configuration pages 2020-06-23 21:51:53 +00:00
zzz
3a392e84a9 Sybil: Enable analysis and blocking by default 2020-06-22 19:59:35 +00:00
zzz
c119de6188 OCMOSJ: Send meta LS failure code 2020-06-13 13:56:31 +00:00
zzz
066833819b another Broadwell CPU ID 2020-06-12 16:00:44 +00:00
zzz
c840f223cd CSS tweak 2020-06-12 15:59:12 +00:00
zzz
4c2bf3e42f I2CP: Meta LS error code handling 2020-06-12 15:58:30 +00:00
zzz
6ec95a7f13 Misc. Javadoc fixes 2020-06-10 15:28:22 +00:00
zzz
670e57b9e5 Tools: Support hostname lookups in LookupDest CLI 2020-06-10 15:21:22 +00:00
d441ead884 Fix awkward text, browsers should be plural 2020-06-09 17:11:43 +00:00
38f654edd9 Fix awkward text on console welcome browser page, adjust table spacing on configreseed 2020-06-09 17:09:36 +00:00
zzz
25b4d136b8 fix take 2 2020-06-08 12:35:06 +00:00
zzz
2b9783028d fix dup 2020-06-07 20:57:45 +00:00
zzz
6c0e18d3e2 i2ptunnel: Fix missing tunnel quantity section for servers
More ngettext
Hide some text for config advanced
2020-06-07 20:00:50 +00:00
zzz
e23f671ca3 Util: New getEstimatedDowntime() method 2020-06-07 17:20:45 +00:00
zzz
2af7066074 Jetty: Switch from jetty to tomcat jar for servlet-api
to get the 4.0 dtds
Put servlet version on the logs page
2020-06-07 16:22:21 +00:00
zzz
220f641ba6 i2ptunnel: Warn about soon-to-expire offline signatures 2020-06-06 19:42:07 +00:00
zzz
76493b398f i2ptunnel: Rename access lists 2020-06-06 19:29:45 +00:00
zzz
f1a277c4d7 I2CP, i2ptunnel: Check for expired offline signature client-side
Better error message on the router side
2020-06-06 18:44:49 +00:00
zzz
ac76d544b9 Fix creation of Encrypted LS2
Blinded flag bit goes on the inner LS, not the outer
Fix corruption of inner signature
Broken in 0.9.42
2020-06-06 17:24:26 +00:00
zzz
cd77461fba I2CP: Fix issues with persisted leaseset private keys
- Don't generate revocation key for LS2
- Fix generation of persistent revocation key for LS1
- Fix persistent private keys without persistent revocation key
- Don't put unconfigured private keys in leaseset
- Don't strip i2cp.leaseSetPrivateKey from config before it's used
2020-06-06 14:36:01 +00:00
zzz
326178ad47 CI: Try to fix travis 2020-06-03 16:09:01 +00:00
zzz
0fce24479f i2psnark: Enable dual-keys 2020-06-03 15:41:09 +00:00
zzz
3f895d32dd Router: Implement ratchet-layer acks (proposal 144)
Store destination in outbound session
Allow sending null data through OCMOSJ for ratchet acks; omit data clove
Only call messageDeliveryStatusUpdate() for nonzero nonce
2020-06-03 12:33:09 +00:00
zzz
2af26f7d5b Console: Fix alignment of totals row on /peers NTCP tab
as reported at http://zzz.i2p/topics/2901 post #5
2020-06-03 11:19:47 +00:00
zzz
765d4ea725 Console: Don't list temporary IPv6 addresses on /confignet 2020-06-02 12:01:40 +00:00
zzz
ec231ecd78 Transports: Cache the last reachable peer
Adapted from i2speed / jogger
ref: http://zzz.i2p/topics/2894 item 5
2020-06-01 13:08:03 +00:00
zzz
957767c985 Util: Move fromLong8()/toLong8() methods to DataHelper 2020-06-01 12:25:09 +00:00
zzz
3cc7374984 Transports: Make unreachable maps concurrent
Adapted from i2speed / jogger
ref: http://zzz.i2p/topics/2894 item 5
2020-06-01 12:12:04 +00:00
zzz
6461c8e880 Profiles: Make more calls nonblocking
Adapted from i2speed / jogger
ref: http://zzz.i2p/topics/2894 item 1
2020-06-01 12:03:56 +00:00
zzz
edfbc4081b Tomcat 9.0.35 (Servlet 4.0)
Switch Bionic to 9.x
Disco+ already on 9.x
Xenial remains on 8.x
Update dependencies doc
2020-05-31 15:35:18 +00:00
zzz
317bf1e9db Fix javadoc errors 2020-05-31 12:46:13 +00:00
zzz
f985004be0 Util: Update json-simple lib to 2.3.0 2017-10-04
Bundle 2.0 API only; remove 1.1 API
Convert DoH, NDT, and i2pcontrol to the 2.x API
Fix i2pcontrol handling of number values and serialization for 2.x API
Remove xenial dependency on libjson-simple-java, it has only 1.1
Set min and max version constraint on libjson-simple-java for bionic+
Based on patch from Gilles Filippini
ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901827
This does not support 3.x but the patch for that will be smaller.
2020-05-31 12:37:37 +00:00
zzz
4fd834d13e Util: Fix DoH handling of Cloudflare responses 2020-05-30 21:44:48 +00:00
zzz
370f96acfb Streaming: Increase MTU for ratchet (proposal 155)
Set MTU in receiveConnection() for inbound connections
Cleanup CDR.isAckOnly()
Only call now() in MOS for debugging
Set receive.streamActive stat to 1, not 0
2020-05-30 16:24:25 +00:00
zzz
d8b308dd9d Build: Force Java 7 for mavencentral jars used by Android 2020-05-28 14:06:37 +00:00
zzz
3ad8f9b9a5 i2psnark: Fix js for delete buttons (ticket #2743) 2020-05-28 13:02:53 +00:00
zzz
4fe9a27e2e RRD4J 3.6 (ticket #2716) 2020-05-28 10:33:03 +00:00
zzz
686fe88e61 Build: Remove javac.compilerargs7 build property (ticket #2511) 2020-05-27 17:46:30 +00:00
zzz
9b5e4373d4 Debian: Fix patches for Jetty 9.3.28 (ticket #2098)
Add xenial patch to ant test target
2020-05-27 17:19:16 +00:00
zzz
03b1a4dfc0 Installer: Require Java 8 (ticket #2511)
Jetty 9.3.28 (ticket #2098)
This breaks Debian builds, fixes to follow
2020-05-27 16:08:54 +00:00
zzz
27e422f81d Installer: Sign the dlls (ticket #2704) 2020-05-27 13:23:54 +00:00
zzz
f3e821a65d UPnP fixes part 7:
Don't set I2P user agent, spoof MiniUPnPc
Don't convert string-to-bytes-to-string
Don't fallback to alternate code after failure
Don't use HttpURLConnection if proxy enabled
Add location sanity checks
Force Connection: close
Don't attempt to set Host header, HttpURLConnection ignores it
Disable following redirects
2020-05-27 12:49:15 +00:00
zzz
3fac44874e Console: Rename all the js init() functions 2020-05-27 12:35:12 +00:00
zzz
f8df7eba7f Transports: Check for Java proxy settings that could interfere 2020-05-27 12:07:50 +00:00
zzz
4574ebd8a9 Console: Don't translate "caps" 2020-05-27 11:57:59 +00:00
zzz
a00b9bb0c7 Console: Handle bad param on /peers 2020-05-27 11:54:06 +00:00
zzz
e091eeae90 Util: Reduce default gzip compression level for performance
Add fast zero-decompressor
2020-05-27 11:48:21 +00:00
zzz
0a98147315 Debian files for 0.9.46 2020-05-26 17:11:42 +00:00
zzz
e9cc4a4357 0.9.46 2020-05-25 12:32:28 +00:00
zzz
0ab4730002 javadoc fix 2020-05-25 10:25:21 +00:00
zzz
31d7b6fb7d Ratchet: Change session replace timeout value to match spec 2020-05-23 11:31:03 +00:00
zzz
26e5f4c482 Windows: Fix installation directory permissions
For new installs, change owner rather than giving 'F' permission to Users group
For existing installs, change owner and change 'F' permission to 'RX' for Users group
Local privilege escalation vulnerability
Introduced 2009-06-11, released in 0.7.5 2009-06-29
Reported by Juilo Cesar Fort of Blaze Information Security 2020-04-28
2020-05-23 11:28:15 +00:00
zzz
766649bd54 bump for review 2020-05-22 19:47:53 +00:00
zzz
bb6641ed96 pull translations from TX 2020-05-22 19:35:57 +00:00
zzz
6aa81f7ec6 UPnP fixes part 6:
Fix malformed HTTP requests
Check HTTP response code in Parser
Check content type in Parser
Debug log in Parser
Show device URL in CLI
Don't retry after parser exception
Close resources in finally block
2020-05-22 18:22:56 +00:00
a3fc8af1dd fix padding on the i2ptunnel .username and .password and and the width of the customoptions 2020-05-22 02:30:03 +00:00
05082e3ffa On iframed i2ptunnel pages, resize the height of the iframe when a config table is expanded or contacted 2020-05-22 01:29:28 +00:00
4b655070d4 reverse string change to welcome wizard, Alternatively isn't that confusing and translation is important. 2020-05-21 16:58:10 +00:00
zzz
f25037447d unit test tweaks 2020-05-21 14:11:30 +00:00
zzz
df3a03afc5 Streaming: Fix timer race (ticket #2739) 2020-05-21 11:47:39 +00:00
zzz
ded4bde905 I2CP: Add API method to get router version 2020-05-20 19:03:28 +00:00
e1d8e360a5 slightly widen the notice div on the console so text never needs to wrap 2020-05-20 17:56:43 +00:00
b373e253c9 Remove reference to to I2P Browser from the welcome wizard 2020-05-20 17:40:40 +00:00
zzz
a9d84da3b3 i2ptunnel, SusiDNS: Replace onblur with CSP-safe js 2020-05-20 11:12:49 +00:00
zzz
4b7c62aa9c Tunnel: Reduce the IBGW and client OBGW batch time
Should reduce RTT by 225 ms
2020-05-20 10:48:00 +00:00
zzz
e16c0a3271 i2ptunnel: Disable gzip for streamr server 2020-05-20 10:44:28 +00:00
zzz
ef66457181 Util: Speed up zero compression
As suggested by orignal
2020-05-19 14:24:20 +00:00
zzz
093c46c937 Ratchet: Prep for ratchet-layer acks (WIP) 2020-05-18 13:00:45 +00:00
zzz
d48d16d237 Proxy: Fix error code for incompatible encryption 2020-05-18 12:25:25 +00:00
zzz
65cd84dd2e Reseed update 2020-05-18 10:40:16 +00:00
zzz
c457ef68c7 New MuWire logo
License: CC0
Source: Funded by MuWire development
2020-05-18 09:56:15 +00:00
zzz
f00b86475d Streamr: Add expiration timer
Log tweaks
2020-05-17 18:49:47 +00:00
zzz
90bc00436c UPnP fixes part 5:
Set interfaces at startup, to prevent Android from binding to public interfaces
Log fix
2020-05-17 15:47:08 +00:00
zzz
1af32bfe79 UPnP fixes part 4:
Update SSDP listening sockets on interface changes
2020-05-17 14:56:30 +00:00
zzz
25338019ca UPnP fixes part 3:
Switch to alternate device on connected event if better
Remove mappings on device change
Fix bug, wasn't removing mappings on device removal
Retry other devices on device removal or disconnect
2020-05-17 11:05:35 +00:00
zzz
878c11b36f UPnP fixes part 2:
Change data structure of ignored devices to store full device
Don't ignore disconnected devices even if subscription successful
Clear event veriables when switching devices
Hide non-IGD devices from ignored list
2020-05-16 22:45:27 +00:00
zzz
c6c9ba76d9 UPnP fixes part 1:
Numerous fixes for handling multiple devices and selecting the best one
Fixes on device removal
Deal with devices that support permanent leases only
Locking fixes
Sort ignored devices in UI
Remove unused isDisabled field
Log tweaks
2020-05-16 21:16:51 +00:00
zzz
a0261e8fd7 BuildTime update 2020-05-16 11:50:27 +00:00
zzz
d493028c1e i2ptunnel: Disables for persistent client key 2020-05-16 11:47:21 +00:00
zzz
3992ea235d i2ptunnel: Remove javascript from proxy error pages
Add security headers
Fix typo on resetp-header
2020-05-15 21:31:37 +00:00
zzz
31b527a4c4 i2ptunnel: Hide description label if none
Identify shared clients on index page
2020-05-15 19:32:23 +00:00
zzz
09b647f283 i2ptunnel: Don't show b32 twice for non-http servers 2020-05-15 17:59:45 +00:00
zzz
40b312d7c1 Streaming: Change pushBackRTO() log error to warn (ticket #2739) 2020-05-14 18:47:54 +00:00
zzz
fad9d0e3da param length check 2020-05-14 12:57:24 +00:00
zzz
31a57b1a60 poupdate-source 2020-05-13 23:03:02 +00:00
zzz
50e44ece54 Tools: Export private key from private key file in X.509 form
Add missing loadprivatekey command to CertUtil
2020-05-13 20:19:12 +00:00
zzz
f233416bf6 Build: Tweaks for git 2020-05-13 13:28:33 +00:00
zzz
1b3885720a Console: Fix option text on /confignet (ticket #2738) 2020-05-13 12:58:10 +00:00
zzz
82dd9435a3 Console: Support stuffing form from params on /configreseed
Fix HTML errors
2020-05-13 11:40:01 +00:00
zzz
bc89d247ec Console: Support stuffing form from params on /configplugins 2020-05-13 11:04:16 +00:00
zzz
fe36482063 Console: onchange removal 2020-05-12 18:57:29 +00:00
zzz
a47f6d1b2e SusiMail: onclick removal (part 3)
Strict CSP
Fix markall/clearall logic
2020-05-12 17:43:27 +00:00
zzz
8aa23c7dc7 SusiMail: Replace onclick part 2 2020-05-12 17:32:46 +00:00
zzz
0eef0dd21b SusiMail: Replace onclick and onload, part 1
Don't reload page after mark-all and clear-all
2020-05-12 17:03:59 +00:00
zzz
a12a26f65c Console: Hide sensitive properties on /configadvanced 2020-05-12 15:38:25 +00:00
zzz
1ebed8b6aa i2ptunnel: Shared client tooltip depends on current setting 2020-05-12 14:53:56 +00:00
zzz
deb0fe338c i2ptunnel: Hide shared client warning when it doesn't apply 2020-05-12 14:17:31 +00:00
zzz
005f79c95f i2ptunnel: Disable changing shared client option while running 2020-05-12 14:07:30 +00:00
zzz
eeee8d7600 i2ptunnel: Use readonly, not disable, to avoid losing data in forms
Fix disabling of interface select box
Caused by disable changes on May 8
2020-05-12 13:21:25 +00:00
zzz
13cfdf0d5a i2ptunnel: Encrypt keys in forms 2020-05-12 12:50:35 +00:00
zzz
e77c3f23d3 i2psnark: Stricter CSP 2020-05-11 21:08:57 +00:00
zzz
d157daea10 i2psnark: Remove onclick on delete buttons
Version the js
2020-05-11 20:47:42 +00:00
zzz
9aa36562b9 i2psnark: Remove onclick on folder page 2020-05-11 20:12:40 +00:00
zzz
6a36b79a95 i2psnark: Remove onload 2020-05-11 19:33:00 +00:00
zzz
2cd2f25c56 Console: Remove onload and unsafe CSP on iframed pages 2020-05-11 18:04:19 +00:00
zzz
8631db8769 i2ptunnel: Replace edit onclick with js file
Remove unsafe CSP
2020-05-11 17:12:12 +00:00
zzz
7da2ac9ef3 Console: Fix delete confirmation on /configplugins
Replace /configclients and /configplugins onclick with js file
Remove unsafe CSP on /configclients
2020-05-11 16:43:53 +00:00
zzz
4da58258f5 i2psnark: Check for non-i2p URL 2020-05-10 20:28:30 +00:00
zzz
4f78040569 i2psnark: Check for non-i2p URL 2020-05-10 19:21:52 +00:00
zzz
0738d1d1fb i2psnark: Fix section anchors 2020-05-10 19:16:04 +00:00
zzz
e99e15209a i2psnark: Expand section when param passed in
(prep for handler)
2020-05-10 16:18:29 +00:00
96a8aa9d0c clear susidns notification the next time the user clicks anywhere on the page, closes #2419 2020-05-10 07:36:47 +00:00
0bbd747f82 clear susidns notification the next time the user clicks anywhere on the page, closes #2419 2020-05-10 07:35:40 +00:00
zzz
e31b837a7f Console: CSS fix hover over disabled button 2020-05-09 21:47:15 +00:00
zzz
ab7e428624 GeoIP: Add to CLI 2020-05-09 19:37:28 +00:00
zzz
565e7f4d67 GeoIP: Log tweak 2020-05-09 15:52:57 +00:00
zzz
910de68495 Build: Release prep - Geoip 2020-05, checklist, deletelist 2020-05-09 15:50:58 +00:00
zzz
e904c9981e i2ptunnel: Move CSS to own dir, remove allowCSS() and allowJS() 2020-05-09 12:42:44 +00:00
zzz
ddc372f58c NDT: Replace Java Timers with SimpleTImer2 to eliminate two non-daemon threads 2020-05-09 12:12:32 +00:00
zzz
4ff234c110 i2ptunnel: More disabled options 2020-05-08 22:29:09 +00:00
zzz
69ef47e68c i2ptunnel: Tooltips for disabled options 2020-05-08 20:47:39 +00:00
zzz
59901ec7c3 i2ptunnel: Fix padding on password form 2020-05-08 19:22:21 +00:00
zzz
13e38f3d3e i2ptunnel: Disable changing LS encryption on running tunnel 2020-05-08 19:16:05 +00:00
zzz
4b85f06951 Build: Fix more targets when in git workspace 2020-05-08 15:34:35 +00:00
zzz
08df2ba907 Build: Use git rev if mtn rev not available
Adapted from patch by dr|zed
2020-05-08 14:38:56 +00:00
zzz
7a192b4961 Console: More netdb formatting improvements
Hide signing key if not full
Label changes
2020-05-08 14:06:46 +00:00
zzz
d18f622458 CoreVersion: Fix previous change which broke build script 2020-05-08 13:48:33 +00:00
zzz
8a482659e0 Console: Fix padding when no addresses 2020-05-08 12:45:32 +00:00
zzz
eeecede382 Add another CoreVersion field specifically for StatisticsManager (ticket #2729) 2020-05-08 12:21:26 +00:00
zzz
d49741c2db Router: FloodfillPeerSelector cleanup (ticket #2694) 2020-05-08 11:09:11 +00:00
zzz
2ac2850cd4 Router: Min version for tunnel peers 2020-05-07 17:17:15 +00:00
zzz
3d56545210 Router: INMP and netdb DSRM selector cleanup 2020-05-07 13:25:31 +00:00
zzz
5de76252ea Router: Prevent INMP config setting from breaking things 2020-05-07 10:35:14 +00:00
zzz
778d6a2809 Streaming: Reduce default ack delay to match RFCs (ticket #2706) 2020-05-06 13:59:41 +00:00
f90cbaba5a update history.txt to include my changes to i2ptunnel and susimail. 2020-05-05 19:19:04 +00:00
zzz
6510e07b8b Console: Handle wrapper log trunctaion
More efficient line skipping
2020-05-05 16:27:07 +00:00
zzz
4996c05361 i2ptunnel: Add ECIES persistent key support
Fix changing enc type on servers
2020-05-05 14:38:04 +00:00
zzz
78effe14ad Console: Fix log clearing without wrapper (ticket #2449)
Use ABQ as buffer when reading
2020-05-05 12:51:41 +00:00
zzz
122b12fa31 i2ptunnel: Remove experts label from dual-key option
Header tweaks for translatability
2020-05-05 10:42:15 +00:00
zzz
438703a29b Ratchet: Add padding based on optimal message size
remove unused method
log tweaks
2020-05-05 10:39:16 +00:00
zzz
467a48cfe1 Build: Use --java2 for msgfmt
Runtime should be smaller and faster w/o Hashtable
Increases p200 size by < 1%; repack by 3.5%; updater by 4.5%
2020-05-05 10:36:56 +00:00
zzz
2b1c6a9d8f Console: Add wrapper log clear button (ticket #2449) 2020-05-04 21:22:13 +00:00
zzz
f1307614c6 Console: Add log clear buttons (ticket #2449) 2020-05-04 16:59:46 +00:00
zzz
ea8e340895 Util: Change LogConsoleBuffer implementation (prep for ticket #2449) 2020-05-04 15:26:50 +00:00
zzz
26af857dc7 i2ptunnel: Copy over all relevant options to other shared clients
when saving, not just tunnel quantity and length (ticket #1545)
Don't take sig type from client private key file unless persistent option is set also
2020-05-04 14:10:20 +00:00
zzz
f04526d83a Console, eepsite: Fix Arabic translation of 'Arabic' (ticket #2731) 2020-05-03 17:37:47 +00:00
zzz
a255a60944 Crypto: Don't start YK thread in app context 2020-05-03 11:06:46 +00:00
zzz
b4de0cfaf9 Crypto: Interrupt YK thread when empty 2020-05-03 09:56:21 +00:00
zzz
2188d6b222 Checkmark fix take 2 2020-05-03 09:48:04 +00:00
zzz
0528e4109d I2CP: Add PROP_GZIP
i2ptunnel: Disable I2CP gzip for HTTP server tunnels
i2psnark: Disable I2CP gzip
2020-05-02 22:16:39 +00:00
zzz
47f09479ad eepsite: Fix RTL issues on Arabic help page (ticket #2731)
patch from 'rany'
2020-05-02 10:50:44 +00:00
zzz
80d24fa70d Console: Only call getTheme() once 2020-05-02 10:38:37 +00:00
bef9ea11bf fix collapsing table behavior on i2ptunnel edit pages 2020-05-01 23:33:09 +00:00
278090a772 add missing icon from susimail light theme, fix padding on tables in i2ptunnel 2020-05-01 21:43:31 +00:00
zzz
eab688b0bc Ratchet: Fix NPE ratcheting IB NSR tagset 2020-05-01 14:04:14 +00:00
zzz
788c72c331 javadoc 2020-05-01 11:53:11 +00:00
zzz
90d9843acc Router: I2NP debug log improvements 2020-05-01 11:51:28 +00:00
zzz
d7095b69b9 Streaming: Cleanup, use field instead of method 2020-05-01 11:19:07 +00:00
zzz
dd96e29213 Streaming: Fix overhead documentation 2020-05-01 11:16:55 +00:00
zzz
fd3e181b7c i2ptunnel: Prevent changing types on stopped shared client if other shared clients are running 2020-04-30 15:19:51 +00:00
zzz
d7b5783674 i2ptunnel: Prevent changing enc type on running tunnel 2020-04-30 13:38:38 +00:00
zzz
634802c008 Streaming: Westwood+ congestion control (ticket #2719)
Increase max slow start window to 64
Change RTT calculations from double to float
Original idea from jogger
Original patch from zlatinb
Developed and tested with zlatinb
2020-04-30 12:44:55 +00:00
zzz
9e233b42a5 Ratchet: Error handling fixes, log tweaks 2020-04-30 11:29:08 +00:00
zzz
4cf8bfbe0d Ratchet: Increase callback timeout
- Mark tagsets after ratchet, and single tagsets, as acked
  so we don't go searching for the reverse tagset
  or adjust the expiration downward
- Eliminate redundant split() calculation
2020-04-29 21:40:25 +00:00
zzz
e1beeb3653 Log cleanup 2020-04-29 12:57:58 +00:00
zzz
82a918b37d Susimail, EdDSA: Convert Hashtable to HashMap 2020-04-29 12:54:37 +00:00
zzz
b6ecad3c0f Router: Convert Vector to List 2020-04-29 12:37:46 +00:00
zzz
e9d56d85af Console: Event log param fix again 2020-04-28 14:40:57 +00:00
zzz
b874bb2ba0 Ratchet: Block format updates 2020-04-27 20:51:02 +00:00
zzz
7f179551b7 javadoc 2020-04-27 19:54:44 +00:00
zzz
10be87bb59 Ratchet: Reduce tagset expiration
other minor cleanups
2020-04-27 19:52:39 +00:00
zzz
5173d24c72 Crypto: Reduce max ElG tagset expiration at receiver 2020-04-27 19:50:39 +00:00
zzz
f4a37ce75f i2psnark: Don't unchoke when we don't have pieces
Don't avoid partial pieces if there are several seeds
2020-04-27 19:49:09 +00:00
ff4cfd3eb0 improve collapsing table behavior 2020-04-27 03:17:48 +00:00
8b6d8507ec improve collapsing table behavior 2020-04-27 03:17:12 +00:00
65356f09a6 Fix padding on tunnelName 2020-04-26 11:43:02 +00:00
b0c6c845bf Improve toggle behavior 2020-04-26 11:31:14 +00:00
6859baba9f Make custom options full width of i2ptunnel page 2020-04-26 09:40:04 +00:00
c14541f4a3 Fix bug where the second time you opened a +/- table a - would not be shown and make the rest of the CSS line up right 2020-04-26 09:29:42 +00:00
1083d2939b fix +/- expand collapse on i2ptunnel tables, and fix the padding 2020-04-26 02:19:47 +00:00
zzz
2a8f23602a i2psnark: Increase min size for video preview
CSS tweaks for large videos
Mime types update
2020-04-25 14:39:05 +00:00
zzz
da5c92a599 Console: Fix summary bar event log link param (thx drzed) 2020-04-25 13:02:44 +00:00
zzz
baa26aec26 Tests: Prevent ratchet NPE in local tests 2020-04-25 11:01:27 +00:00
zzz
9da290831b Ratchet: Variable tagset lookahead/trim limits
Remove total size trimming, it's redundant
2020-04-25 10:32:33 +00:00
zzz
882f853b1d Console: Change event log param from ms to sec 2020-04-24 12:58:53 +00:00
zzz
a7de9a7f24 i2psnark: Don't mark torrent BAD on I2CP errors (ticket #2725)
Logging:
 - Log to wrapper log after log manager shutdown (ticket #2725)
 - sync methods
Router:
 - Allow clients more time to get disconnect messages at shutdown (ticket #2725)
 - Don't delete router context at shutdown, to prevent a late
   creation of a new app context (ticket #2725)
 - Don't try to delete ping file on Android
javadocs
2020-04-24 12:44:17 +00:00
zzz
f2f6dfbf18 Router: Better enc type rejection message 2020-04-23 19:31:17 +00:00
zzz
5e2db982dd Router: Check for key certs in dests (prop. 145) 2020-04-23 19:16:31 +00:00
zzz
bc11e66429 SusiDNS: Fix typo that broke the add form 2020-04-23 18:57:29 +00:00
zzz
da8f49a712 Router: GarlicMessage debug logging improvements 2020-04-23 18:56:03 +00:00
zzz
a97085ac67 Ratchet: Expire outbound TS based on inbound last-used
Fix outbound expiration time
Reduce pending tagset expiration
Increase max send acks
Increase max next key replies
Don't save ref to NS callback once called
Sync tagset for debug output
2020-04-23 16:21:25 +00:00
zzz
eb7211660f Streaming: Reduce TCB cache time 2020-04-23 13:35:02 +00:00
zzz
b182562c80 Router: Fix logging NPE (thx zlatinb) 2020-04-21 17:01:03 +00:00
zzz
25a80c78b5 Build: Manifests for test, source, and javadoc jars 2020-04-21 12:52:23 +00:00
zzz
c69af8308f i2psnark: CSS tweak 2020-04-20 18:06:33 +00:00
zzz
0cc1861649 Streaming: Single retransmit timer per connection (ticket #2715)
Only instantiate ResendPacketEvent for fast retransmit
Move packet timeout field from ResendPacketEvent to PacketLocal
Set window size to 1 on timeout
Always adjust window when acked, even if the packet was sent more than once
Reduce INITIAL_WINDOW_SIZE from 6 to 3 to reduce router DH overhead
Set maximum burst retransmissions to 16
Closer compliance to RFCs 5681 and 6298
Prep for additional changes (Westwood)
Other minor cleanups
Original patch from zlatinb
2020-04-19 14:59:08 +00:00
zzz
57cd4c5843 Ratchet: Adaptive order of muxed decrypt based on previous traffic 2020-04-19 14:21:24 +00:00
zzz
cd035e1247 Console: Add header for client SKMs on /debug 2020-04-19 11:11:24 +00:00
zzz
73886d06e8 Ratchet: Fix tagset remaining calculation
More efficient tag insantiation
Debug page fixes
Javadoc fixes
Minor cleanups
2020-04-19 10:59:32 +00:00
ae199581be Fix up the dark CSS for use with the new collapsing tables so tables line up, set ::selection highlighting on input text to a non-000 color so it shows up when you highlight it 2020-04-18 22:29:27 +00:00
zzz
bf425d8ac9 i2psnark: Periodically connect out to other seeds to fetch comments (ticket #2288)
javadoc updates
2020-04-18 15:04:43 +00:00
823dc72eaa Improve padding consistency and readability on new i2ptunnel edit config pages 2020-04-17 23:13:18 +00:00
zzz
3716ccc3ef i2ptunnel UI: Move new js from console to i2ptunnel
Move <script> from body to head
Version the js links
2020-04-17 15:53:10 +00:00
zzz
108b3a2363 Tests: Add I2CP port option to LocalClientManager 2020-04-17 13:19:41 +00:00
zzz
35bb5896a1 Streaming: Slow start fix from zlatinb 2020-04-17 12:02:26 +00:00
zzz
da9bfd48c0 Crypto: Disable speculative AES tagset usage 2020-04-17 11:59:59 +00:00
0bd3df6d98 Make the new dropdown_hover.png look consistent on i2ptunnel, re-run javascript prettifier 2020-04-17 06:02:12 +00:00
0656abd101 Add the missing dropdown_active.png image to the light theme 2020-04-17 05:36:34 +00:00
5299eb365f Re-organize the I2PTunnel UI and, in javascript-enabled browsers, turn advanced options onto accordion-menus. 2020-04-17 05:27:23 +00:00
zzz
53eb0fe7f8 SusiDNS: Remove taglib declarations where not required 2020-04-16 15:44:35 +00:00
zzz
4cdaa11024 Build: Reproducible build fix (ticket #2279) 2020-04-16 15:43:40 +00:00
zzz
e642d8e538 i2psnark: Fix TrackerClient thread name 2020-04-16 14:30:52 +00:00
zzz
cc5f13fc5e ElG/AES debug log tweaks 2020-04-16 13:27:53 +00:00
zzz
80f66113c4 i2psnark: Basic torrent file modification CLI 2020-04-16 13:24:51 +00:00
zzz
b3d5accca2 I2CP: Fix client notifier thread name 2020-04-16 13:22:23 +00:00
zzz
12ac06d5ba i2psnark: Debug page tweaks 2020-04-16 13:09:11 +00:00
zzz
7b47d3f314 Streaming:
Fix slow start (ticket #2708)
Reset retransmission timer after ack (ticket #2710)
Minor cleanups to prep for additional changes
Original analysis and patches from zlatinb
2020-04-14 12:59:26 +00:00
zzz
0d2dbcc8fc Ratchet: Additional muxed decrypt fix 2020-04-14 12:57:50 +00:00
zzz
e2cc62a21f Ratchet: Improve muxed decrypt
Try tags for both ratchet and AES before DH for either
Return empty CloveSet for ratchet errors after successful decrypt
Don't corrupt data in ECIESEngine on NS/NSR failure, for subsequent ElG attempt
Log tweaks
2020-04-14 12:13:00 +00:00
zzz
689b26102b i2psnark: CSS tweaks 2020-04-13 16:42:20 +00:00
zzz
c989addadc i2ptunnel: Allow comments in CLI command files 2020-04-13 16:41:26 +00:00
zzz
5e00bc6510 Streaming: Fix retransmission time (ticket #2709)
Remove unneeded checks on RTO max/min
Return new value from doubleRTO() (prep for ticket #2715)
2020-04-11 17:04:55 +00:00
zzz
828311a24f Debian: Fix patch offsets
Add ant target to validate patches
2020-04-10 18:49:30 +00:00
zzz
5976d4952f Jetty: Add GzipHandler for eepsites on Jetty 9.3/9.4 (ticket #2599)
by adding jetty-gzip.xml. JettyStart will copy the file
and add it to the configuration list automatically.
This does not affect standard installs which are still on 9.2;
it's only for Debian installs.
See also ticket #2098.
Partial backport from branch i2p.i2p.zzz.jetty93
2020-04-10 18:10:48 +00:00
zzz
80ae2ccea6 NTCP: Retain pending messages when replacing connection 2020-04-09 17:27:23 +00:00
zzz
370b7f1124 NetDB: Remove class M from auto-floodfill;
only 1% of floodfills are class M, and on average
they store 25% less leasesets than class N.
Reverts change to add M in 2015.
2020-04-08 20:20:55 +00:00
zzz
26b90b9d17 NTCP: More EnumSets 2020-04-08 15:36:36 +00:00
zzz
c8647fc3a5 i2psnark: Give peers preference to get their first pieces,
to mitigate effects of large pieces and allow them to
become interesting faster (ticket #2473)
2020-04-08 14:53:08 +00:00
zzz
3fa15824ee Ratchet: TagSet cleanups
Tag.toBase64() optimization
Javadoc fixes
2020-04-08 13:16:15 +00:00
zzz
1752291ffd Console: Fix disabling sidebar refresh
0 disables refresh on /configsidebar
disable ajax if refresh disabled
change refresh default to 15 sec
2020-04-07 20:47:12 +00:00
4edb9bbf7f switch success notification icon with smaller version of icon, previous commit adds css ID's to table ID's on editclient 2020-04-07 16:07:23 +00:00
e88a585703 switch success notification icon with smaller version of icon 2020-04-07 15:58:50 +00:00
zzz
928c0e9b91 Graphs: Reduce rrd4j sync thread pool size
disable pool if not persisting
stop pool on shutdown
2020-04-07 14:47:18 +00:00
zzz
83a4f5f2f0 Transport: Hang the X25519 keygen thread off CommSystem so Ratchet can use it
Don't start NTCP if neither 1 nor 2 is enabled
2020-04-07 13:23:36 +00:00
zzz
f54db66f77 Console: Use same IPv6 checkmark for NTCP and SSU 2020-04-07 13:21:41 +00:00
zzz
f16981d844 i2ptunnel: Unhide encryption type options 2020-04-06 21:08:52 +00:00
zzz
f6b5a2d493 Ratchet: Simplify OB Session; there can be only one active OB TS
Fix bugs handling of out-of-order nextkeys
Expire unacked tagsets every time through
Remore unused OB session methods
2020-04-06 20:27:47 +00:00
zzz
14b33a1e4c Ratchet: Don't allocate space for tagset keys initially 2020-04-06 15:23:30 +00:00
zzz
c99adeeb61 Ratchet: Use append() for keys too 2020-04-06 14:35:03 +00:00
zzz
b979a97905 Ratchet: Use SparseArray.append() instead of put() for efficiency 2020-04-06 14:29:07 +00:00
zzz
916b296ee0 Ratchet: Expire unused tagsets sooner 2020-04-06 13:54:49 +00:00
zzz
f9f64a441b Ratchet: Fix sorting for sessions on /debug 2020-04-06 13:22:58 +00:00
zzz
2482df7121 Ratchet: Decrypt ES messages in-place 2020-04-06 13:02:27 +00:00
zzz
f9d7cfa7e1 log level tweak 2020-04-06 12:46:16 +00:00
zzz
5229c0e811 Ratchet: Replace session if NS received after 3 minutes
Update lastUsed on NSR or first tag received
2020-04-06 12:45:46 +00:00
zzz
1ca9674f3f RatchetSKM: Group debug output for IB tagsets by pubkey, not session key
ElGamalSKM: Debug header change
ElGamalAESEngine: Minor cleanups for efficiency
2020-04-06 11:31:18 +00:00
zzz
c77e41c59e Ratchet: Next Key completion
Fix NextSessionKey constructor with null data
Fix handling of next keys
Fix sending OB next keys
Fix RatchetSessionTag.equals() for use in SKM
Delete OB NSR tagset when adding OB ES tagset
Log tweaks
2020-04-06 10:42:44 +00:00
zzz
8c4410277d Ratchet: Next Key WIP, got first ratchet working
Remove more ElG tag code from SKM
2020-04-04 11:56:25 +00:00
zzz
2ec9a4ab64 PKF: Add support for addsubdomain 2020-04-03 19:38:39 +00:00
zzz
6b05acff8d Ratchet: Next Key WIP 2020-04-01 18:44:06 +00:00
zzz
471b53698a Ratchet: Validate NS datetime block; add NS key bloom filter 2020-04-01 12:58:24 +00:00
zzz
7404bdc4fd NetDB: Add support for database lookup ratchet replies (proposal 154)
Add support for ElG-encrypted database lookups and stores from ECIES-only destinations
Add ratchet support to MessageWrapper
Application-specific timeout for MessageWrapper-generated tags
Refactor tunnel TestJob to use MessageWrapper
Add ratchet support to TestJob
TestJob cleanups
2020-03-31 19:21:35 +00:00
zzz
9307cc8a0c Ratchet: Add support for database lookup replies (proposal 154) 2020-03-31 18:43:52 +00:00
zzz
6dd0b23c61 Ratchet: Remove ID and DI from ACKREQ block
Use callback != null to specify request for ack
2020-03-30 20:09:29 +00:00
zzz
97f002bfb5 minor optimization 2020-03-30 17:03:20 +00:00
zzz
22ca4d0e44 Ratchet: GMB method to encrypt to a single key/tag for prop. 154 2020-03-30 16:53:14 +00:00
zzz
86fc6478f5 debug log tweak 2020-03-30 16:48:41 +00:00
zzz
dee92b5290 Ratchet: Updates
- Prep for prop. 154 with SingleTagSet
- Variable timeout for tagsets
- Start cleaner sooner
- Make key optional in next key block
- HTML debug output improvement
- log tweaks and javadocs
2020-03-30 16:44:42 +00:00
zzz
b19b529afe Ratchet: Expire tags too far behind current one 2020-03-29 17:53:28 +00:00
zzz
0c4cf5d3cd Ratchet: Add timeout job in OCMOSJ 2020-03-29 12:04:13 +00:00
zzz
eeb7ea4cae Ratchet: Acks and callbacks
- Store callbacks and ES acks in OutboundSession
- Calls from engine to SKM for callbacks and acks
- Pass key ID and remote key back in SessionKeyAndNonce
- Implmenent multiple acks in ACK block
2020-03-28 13:22:32 +00:00
zzz
23634afbc9 Ratchet: More updates
- Reply callback from ratchet to OCMOSJ (ES TODO)
- Store key ID in tagset (prep for next key)
- Move debug tagset ID from engine to tagset
- OCMOSJ minor cleanups
2020-03-27 19:38:24 +00:00
zzz
acf3abb19b Ratchet: Updates
- Modify NextKey, start of support (WIP)
- Don't expect DSM reply to ECIES destinations
- Debug setting to always sent ack request
2020-03-27 16:55:53 +00:00
zzz
c5435410ba atomic 2020-03-24 19:14:28 +00:00
zzz
786d68ce9a javadoc 2020-03-24 19:01:07 +00:00
zzz
0170ff2337 Blockfile: Add b32 to export output 2020-03-24 18:58:23 +00:00
zzz
a5c0448053 Graphs: Note restart required when changing persistence setting 2020-03-24 16:28:03 +00:00
zzz
7a1e2865fc Graphs: Fix rrd4j deprecation warnings 2020-03-24 16:19:33 +00:00
zzz
0c19216c4c Profiles: Remove unused ProfileManager.summarizePeers() 2020-03-24 13:08:23 +00:00
zzz
f2787a8df6 Profiles: Don't decay during first 90 minutes of uptime
Change decay from .75 twice a day to .84 four times a day;
approx. same overall decay in a day (.5)
Parameterize decay variables for clarity
Fix multiple NPEs in ProfileOrganizer CLI
Other cleanups
2020-03-24 13:03:40 +00:00
zzz
7654a0af42 Tunnels: Make new tunnel selection round-robin
Remove one-second stickiness, as OCMOSJ caching does the job better
http://zzz.i2p/topics/2454
2020-03-24 12:33:29 +00:00
zzz
5c1700c2ab Ratchet: Make DI optional in ACK request
Don't put ACK request in NS or NSR
2020-03-20 19:01:56 +00:00
zzz
6487fb0516 Tunnels: FragmentHandler cleanup (ticket #2699) 2020-03-20 12:32:28 +00:00
zzz
42fb3bb2e9 drop anoncoin from /home 2020-03-20 12:29:18 +00:00
f57876dc3b merge of '996d0dc0db49250004a12cd4eb0374a477ff3617'
and 'ee72efae66f864d6e5ff42879055800bbbd44436'
2020-03-20 01:50:39 +00:00
0a7027dd9b add 'ant bundle' target which generates a git bundle target iff the working copy is a git repository. Does not work with mtn clones. 2020-03-18 18:12:57 +00:00
idk
1154d28be7 add a bundle target to ant that generates a current git bundle and corresponding torrent. 2020-03-18 13:39:22 -04:00
zzz
0e68df6ba4 i2psnark: Hide non-i2p trackers on details page 2020-03-17 14:14:36 +00:00
zzz
7707c4bb94 Ratchet: Stub out ack and ack request blocks 2020-03-15 18:40:01 +00:00
56639fa7d2 Fix dead links and inconsistent links in the readme.html, slight expansion to browser configuration options. 2020-03-07 18:02:38 +00:00
zzz
f0a15d084a change from textarea to input 2020-03-05 14:36:58 +00:00
zzz
de6cee8f6a update default irc server list 2020-03-04 13:25:42 +00:00
zzz
8b075f26bf Console: Fix wizard XHR initialization 2020-03-01 17:58:55 +00:00
zzz
5455820a74 Console: Add security headers to XHR targets 2020-03-01 17:57:05 +00:00
zzz
d38c660c36 Console, i2ptunnel: Hide temporary IPv6 addresses from bind options 2020-03-01 15:41:49 +00:00
zzz
3f629ce1af Console: Disable browser launch on /configclients when a service 2020-03-01 14:20:06 +00:00
zzz
29f9986f40 i2ptunnel: Check for same interface before warning of dup port 2020-02-29 14:44:07 +00:00
zzz
d505a2fe76 log level tweaks 2020-02-29 14:32:07 +00:00
zzz
3eb573295b SusiDNS: Support adding b32's (ticket #2101) 2020-02-29 14:11:04 +00:00
zzz
0b9babab42 Profiles: Limit average speed calculation to max high cap peers
Make reorganize() methods pkg private
2020-02-29 13:44:42 +00:00
zzz
c190ddd6b0 typo 2020-02-28 18:54:04 +00:00
zzz
53118fa9c6 Console: Fix /viewlicense for Debian packages 2020-02-28 18:49:20 +00:00
zzz
8cf241f6da Debian: Remove fonts-dejavu as package recommendation,
not needed for rrd4j with our patch
2020-02-28 16:59:07 +00:00
zzz
6774af6910 Systray: Don't attempt to launch browser when running as a service
Console: Hide/show things on /configservice when running as a service
Util: Add isWindowsService() and isService()
2020-02-27 17:30:16 +00:00
zzz
eb73f0aae2 Fixup rrd4j javadoc errors, tested with JDK 15 b11 2020-02-26 17:04:06 +00:00
zzz
0bec84a3b1 Profiles: Fix bug which caused speed values to be
divided by 3 after being read from file
Remove _isFailing field
Minor cleanup
Don't persist profiles when in vmCommSystem mode
2020-02-26 16:36:36 +00:00
75c2d24c45 merge of '0279ae34b6386470db3de49cbb7dcbdc5629c575'
and '9100eed7ff963fd8a54ab922b65208cfd5fb15b3'
2020-02-26 00:24:03 +00:00
53e77df77d Bump router version for osx build 2020-02-26 00:23:58 +00:00
zzz
326a85ea4f Profiles: add to 'big countries' list,
fix typo, thx drz
2020-02-25 15:32:51 +00:00
zzz
e567f7b460 Build: jrobin.jar no longer depends on i2p.jar 2020-02-25 15:22:55 +00:00
zzz
ab28ee960e Add missing parts of rrd4j 3.5 omitted from previous checkin (ticket #2684)
Apache 2.0 and LGPLv2.1
2020-02-25 15:15:23 +00:00
zzz
88a4261b03 Remove tagged string that was never translated anyway 2020-02-25 15:01:37 +00:00
zzz
e7a66659e9 OCMJH comment out unused code 2020-02-25 14:58:10 +00:00
zzz
44a935d086 debug for ratchet 2020-02-25 14:56:10 +00:00
zzz
1e5414f74f drop old tagged strings 2020-02-25 14:54:16 +00:00
zzz
357d400bc6 add install5.xml to release check 2020-02-25 14:46:35 +00:00
zzz
594f1c7f8b Util: Add isRTL() 2020-02-25 14:45:10 +00:00
zzz
4a845f0b73 checklist update 2020-02-25 14:39:48 +00:00
zzz
bc791f91ab NetDB: Comment out unused FloodOnlySearchJob code 2020-02-25 14:38:31 +00:00
zzz
f938090d6a NetDB: Don't send 'fake hash' for exploration any more,
no longer required for compatibility,
exploration option supported since 0.9.16
2020-02-25 14:36:44 +00:00
zzz
d9ea6b1f9c rrd4j patch (ticket #2684)
So that DejaVu fonts are not required in the classpath.
We set the default font to Monospaced.
All fonts are then set in SummaryRenderer.
2020-02-25 14:14:34 +00:00
zzz
5bed4a0d7f Replace old jrobin with rrd4j 3.5 (ticket #2684)
2019-02-10
From https://github.com/rrd4j/rrd4j/releases
Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor.
Copyright (c) 2011 The OpenNMS Group, Inc.
Copyright 2011 The RRD4J Authors.
Apache 2.0 and LGPLv2.1

Unmodified as a base for future merges, except for omitted
files listed below.
This rev will not work; font patch to follow in next revision.

Following directories and files omitted:
converter/
core/RrdBerkeleyDbBackendFactory.java
core/RrdBerkeleyDbBackend.java
core/RrdMongoDBBackendFactory.java
core/RrdMongoDBBackend.java
demo/
graph/RrdGraphDefTemplate.java
inspector/
eu/bengreen/data/utility/
2020-02-25 14:04:21 +00:00
zzz
4826bbd333 debian files for .45 2020-02-24 22:38:12 +00:00
zzz
0540c76c51 release build fix for non-pack200 2020-02-24 17:33:47 +00:00
zzz
f081e88420 0.9.45 2020-02-24 17:13:44 +00:00
zzz
4030d0b427 Installer: Restore i2plogo.bmp, required for launch4j standalone executable (ticket #2608) 2020-02-24 17:07:48 +00:00
zzz
c5f6c9a498 Javadoc fixes after testing with JDK 14 build 36 2020-02-22 16:16:08 +00:00
zzz
403440bab8 bump for review 2020-02-21 18:05:39 +00:00
zzz
8ed7a029d7 more translations 2020-02-21 17:53:09 +00:00
zzz
ec6807cd2c pull translations 2020-02-21 17:50:51 +00:00
zzz
226494028a Update: Extend torrent update timeouts and limits for larger files (ticket #2693) 2020-02-20 18:55:48 +00:00
zzz
4bcd896829 Build: Add non-pack200 release targets (ticket #2693)
Update: Don't require pack200 for in-net update (ticket #2693)
2020-02-20 18:36:03 +00:00
zzz
2524a7a69d GeoIP: Prefer more recent of mmdb or Debian files if we have both 2020-02-20 16:44:18 +00:00
zzz
2805388a4c GeoIP: Add unknown and Kosovo country codes for db-ip.com (ticket #2692)
https://db-ip.com/faq.php
2020-02-20 15:42:22 +00:00
zzz
631a082ebd Util: Change GeoIP update script to use db-ip.com (ticket #2692) 2020-02-20 15:26:12 +00:00
zzz
24b98b86c2 update BuildTime 2020-02-19 15:22:57 +00:00
zzz
5ee903765e Util: Improve LookupDest CLI, add to CommandLine 2020-02-18 17:07:41 +00:00
zzz
c0db50ed0f Debian: Remove GzipFilter in base-context.xml,
does nothing with Jetty 9.4 (ticket #2599)
2020-02-17 17:48:09 +00:00
zzz
3403ea3b51 Install: Remove commented-out GzipFilter in cgi-context.xml,
it will never work, to be replaced with GzipHandler
2020-02-17 16:22:39 +00:00
zzz
daf595ab7e i2psnark: Revert API changes that broke i2psnark-rpc plugin
compile-tested only
2020-02-17 15:47:03 +00:00
zzz
fd958df118 Console: Fix jump-to-section on /stats 2020-02-15 18:28:45 +00:00
zzz
dd794ceee4 NTCP: Remove closed connections from write queue (ticket #2686) 2020-02-15 16:25:44 +00:00
zzz
c19a63c6a2 increase max share ratio 2020-02-14 14:09:34 +00:00
zzz
84bea6438f poupdate source 2020-02-12 17:12:50 +00:00
zzz
d3bd2ce190 I2PTunnel, I2CP: Place ECIES first in LS2
Data: Add debug code to ignore LS2 key order
2020-02-12 17:04:07 +00:00
zzz
e82f420ee6 Remove TODO comment, already fixed 2020-02-12 13:59:43 +00:00
zzz
a035901f0a console: /netdb margin fix 2020-02-12 13:48:25 +00:00
zzz
e73ddb548a i2ptunnel: Change default sig type to Ed for non-shared HTTP client 2020-02-12 13:05:50 +00:00
zzz
fd87c609f2 Reseed: Remove download.xxlspeed.com 2020-02-11 15:16:22 +00:00
zzz
17060c0100 Stats: 4 stats no longer required (thx drzed) 2020-02-11 13:51:12 +00:00
zzz
fe16ccb434 Transport: Mark yggdrasil IPv6 prefix as not routable
Minor cleanup of the checking code
2020-02-10 14:43:57 +00:00
zzz
a46100bde5 I2CP: I2CPMessageHandlerMap cleanup 2020-02-09 16:14:49 +00:00
zzz
0478ac75e9 Console: Show local tunnel status as green if any leases are valid 2020-02-09 15:04:30 +00:00
zzz
d42235486e update string as requested for translatability 2020-02-09 14:01:21 +00:00
zzz
dd3dbbf7f9 SSU: Skip down interfaces when looking for MTU,
handle bad values better
2020-02-05 16:43:58 +00:00
efe85cc30a resources/installer/i2plogo.png is CC-BY-3.0 US(ura), license is in licenses 2020-02-05 15:59:36 +00:00
0b3e6acb97 undo systemd unit change until I've tested it better, it was checked in by accident 2020-02-04 21:06:07 +00:00
aa6c218122 Shrink izpack installer logo 2020-02-03 18:59:30 +00:00
033c37f4a0 Shrink izpack installer logo 2020-02-03 18:59:01 +00:00
zzz
e7ddee5509 Graphs: Add stat for render time (ticket #2684) 2020-02-03 15:41:06 +00:00
zzz
f8283c04ca Console: Fix redirect to /graphs when clicking stop/restart on /graph 2020-02-03 15:03:23 +00:00
zzz
0f7bcbf4bb Graphs: Clean up font setting, fix bugs (ticket #2684)
Unit font now monospaced on Linux and Mac as intended
Don't set Droid Sans font, not present in any platform by default
Fix font scaling for Japanese
Detect more RTL languages
Make fonts configurable
2020-02-03 14:19:35 +00:00
c4fce448c3 Use the new icon in the installer 2020-01-31 02:09:16 +00:00
zzz
c4c75c0ce5 javadoc fix 2020-01-27 16:21:05 +00:00
zzz
2988e58cb2 merge of '33d6437ea30f37b47795bc9e443064a00d297266'
and 'd264b4d7a1ab4e8fc4b510285f0ff30e26a27ca3'
2020-01-27 14:36:00 +00:00
21ae518102 new images are under the Feather(MIT) license, installer/resources/themes/console/images/console/{light,dark}/console_status_running.png
installer/resources/themes/console/{light,dark}/console_status_stopped.png
        installer/resources/themes/console/{light,dark}/console_status_starting.png
        installer/resources/themes/console/images/title_window.png
        installer/resources/themes/console/images/local_down.png
        installer/resources/themes/console/images/local_up.png
        installer/resources/themes/console/images/local_inprogress.png
        installer/resources/themes/console/images/info/network_status/network_ok.png
        installer/resources/themes/console/images/info/network_status/network_hidden.png
        installer/resources/themes/console/images/info/network_status/network_firewalled.png
        installer/resources/themes/console/images/info/network_status/network_warning.png
        installer/resources/themes/console/images/info/network_status/network_testing.png
        installer/resources/themes/console/images/info/network_status/network_error.png
        installer/resources/themes/console/images/info/network_status/network_clockskew.png
        installer/resources/themes/console/images/info/network_status/network_vm.png
        installer/resources/themes/console/images/info/network_status/rejecting.png
        installer/resources/themes/console/images/info/network_status/accepting.png
        installer/resources/themes/console/images/info/network_status/rejecting_hidden.png
        installer/resources/themes/console/images/info/errortriangle.png
        installer/resources/themes/console/{light,dark}/warning.png
        installer/resources/themes/console/{light,dark}/warn.png
        installer/resources/themes/console/images/info/infowarn.png
        installer/resources/themes/console/images/info/infohelp.png
        installer/resources/themes/console/{light,dark}/infowarn.png
        installer/resources/themes/console/{light,dark}/infohelp.png
        installer/resources/themes/console/{light,dark}/confirmed.png
        installer/resources/themes/console/{light,dark}/help.png
        installer/resources/themes/console/images/favicon.ico
        installer/resources/themes/console/{light,dark}/favicon.ico
        installer/resources/themes/console/images/inbound.png
        installer/resources/themes/console/images/outbound.png
        installer/resources/themes/console/images/folder.png
        installer/resources/themes/console/images/cursor_zoom.png
        installer/resources/themes/console/{light,dark}/newsbullet_mini.png
2020-01-26 17:57:40 +00:00
zzz
8bebb884c3 Console: Fix light theme sidebar bandwidth graph 2020-01-26 17:19:20 +00:00
zzz
4401265200 Tunnels: Don't test ECIES-only tunnels 2020-01-26 13:41:19 +00:00
094613b8de fix some issues with fonts and narrowness in light and dark themes, revise some icon choices on both themes 2020-01-25 21:10:43 +00:00
6e38cce149 merge of '1dd202cbab5db44efb071d2b37c26b0fe8822b21'
and '692f541c9c3da4e376de3e3d8dbccff5bf33dc45'
2020-01-25 00:16:38 +00:00
9c626a07c5 Adding two new reseed hosts, hosted by me. 2020-01-24 20:00:40 +00:00
80db2faeb7 Check in the undraw bell for the news notification, make the dark theme logo purple with a darker shadow to match the theme 2020-01-24 19:58:34 +00:00
b31eb3f53b Change the color and size of the new square logo, remove background setters in mobile css for router console since they aren't needed anymore 2020-01-24 16:15:45 +00:00
b572a330ed improve the consistency of the icons used throughout both the themes, round off buttons on light CSS theme, new favicon, bigger logo, don't fix sidebar height to 36px 2020-01-24 00:27:40 +00:00
zzz
98f7f30864 SSU: Use same valid IP criteria for sending relay request as for
receiving relay response
2020-01-22 20:48:32 +00:00
zzz
23d24a48b5 SU3File: Add date output to CLI
Bump -5 for previous Ratchet Elligator2 change
2020-01-21 21:00:54 +00:00
zzz
064e4046a6 Ratchet (proposal 144):
- Randomize high two bits of Elligator2 encoding (incompatible change)
- Fix NPE in RatchetTagSet.toString()
- Use zeros for padding block
- Add more debug logging
2020-01-21 17:54:14 +00:00
50c86147b0 Fix some uncaught stuff in the new dark CSS theme 2020-01-16 18:35:18 +00:00
zzz
3c9e78bd76 i2ptunnel: Fix NPE if no config file 2020-01-15 14:10:49 +00:00
zzz
f65cfbf92c SSU: Extend timeout for msgs with multiple fragments (ticket #2640) 2020-01-11 14:19:31 +00:00
4ad4e579d8 round button borders on /help 2020-01-09 19:43:53 +00:00
1f6b3c1107 round off the remaining icons from the susimail light theme, fix some css issues from the dark theme 2020-01-08 17:45:49 +00:00
zzz
a2a646e1f5 i2psnark: Support "preview" HTML5 play for partial files 2020-01-08 17:12:10 +00:00
zzz
ea05af42fa Jetty 9.2.29.v20191105, Tomcat 8.5.50 2020-01-08 14:16:16 +00:00
520faf477d icon consistency dark theme 2020-01-07 17:29:50 +00:00
cf2a4ba053 fixed non-rounded icons on susimail menus 2020-01-07 17:25:37 +00:00
zzz
1a0b25a6ef Console: Don't refresh bw graph with js unless enclosing summary bar refresh time is longer 2020-01-03 14:52:58 +00:00
zzz
23598ab011 Console: Add hellips to restart messages 2020-01-03 13:51:01 +00:00
zzz
7ac189696b Console: Remove scroll-in-scroll for wrapper logs 2020-01-03 13:49:00 +00:00
zzz
ecdccac37e Console: Refactor the configstats js
Don't toggle the full stats box with toggle-all
2020-01-03 13:31:10 +00:00
zzz
e865f451ca i2psnark: CSS tweaks so the refresh isn't as glitchy
Reduce default refresh to 15 sec
bye whippy
2020-01-03 12:56:24 +00:00
zzz
3d80f0122f merge of '93f632609768276d0eccf0e9f518436ec83dfa57'
and '9908ac36a27905f02e28e8db9f93a32777fe9c62'
2020-01-03 12:12:55 +00:00
zzz
0a34f3d5dd Tests: Drop empty unit test files 2020-01-03 12:12:05 +00:00
b588297458 delete two excessive background rules 2020-01-03 04:05:24 +00:00
b524e91888 add license info to checkin 2020-01-03 03:28:27 +00:00
29f8fec912 big CSS update across all dark-theme apps and susimail light-theme 2020-01-03 03:24:55 +00:00
zzz
09d31cb107 Util: Add https redirect support to EepGet and SSLEepGet
Add https support to EepGet CLI
2020-01-02 16:38:47 +00:00
zzz
fa9f60bcd9 Console, webapps: CSP improvements
i2ptunnel, susidns: Add headers.jsi
Console: Remove onload and use nonce for inline scripts where able
Version remaining js links
2019-12-25 12:18:00 +00:00
zzz
63b48e30be Console: Banlist and sidebar CSS tweaks 2019-12-24 14:01:04 +00:00
zzz
e714e7082e Console: Don't show a temporary IP ban if it's permanently banned also 2019-12-24 13:44:35 +00:00
zzz
9966c40d28 checklist update 2019-12-24 13:39:52 +00:00
zzz
9dbec9fbb5 drop unused flag 2019-12-24 13:35:50 +00:00
zzz
aa472feea9 i2ptunnel: Double default conn. and POST limits 2019-12-24 13:02:12 +00:00
zzz
c7a6584481 snark: psi's open tracker is back 2019-12-24 12:00:33 +00:00
zzz
ae994e3230 Console: Fix displayed name when installing new plugin 2019-12-21 14:24:18 +00:00
zzz
fcd8a3ae69 i2psnark: Fix autostart for torrent files copied into the dir
Use Collator for case-insensitive sort
Use Exception.getLocalizedMessage()
Prevent duplicate torrent starts
Don't write debug info to wrapper log
Increase max piece size
Navbar cleanup
2019-12-21 12:54:48 +00:00
zzz
ccaf4ce4b9 Console: Don't show 'Unresolved TCP address' error,
NTCP2 addresses may have triggered it.
2019-12-21 10:04:04 +00:00
zzz
5772b7d9ae NetDB: Randomize explore and refresh job delays 2019-12-20 16:07:24 +00:00
zzz
61ec10ff47 I2CP: Don't throw exception on early internalConnect()
ClientManager.isAlive() returns true even on port conflict
Hide port conflict message in console
2019-12-20 16:04:35 +00:00
zzz
c3138793fe SSU: Move statement affecting debug stats (ticket #2676) 2019-12-20 12:58:04 +00:00
zzz
c5904b080b SSU: Reduce log level on packet size error (ticket #2675) 2019-12-20 12:15:32 +00:00
zzz
7d10ef7a19 Add partial translations: bg, ca, cs, hi, hr, sq, sr 2019-12-20 11:17:14 +00:00
zzz
938410d68b Console: poupdate to remove strings moved to core and router 2019-12-19 14:24:18 +00:00
zzz
dd0d84fece Router: Add a router strings bundle 2019-12-19 14:08:28 +00:00
zzz
b2aa649c2a Build: Add encoding to all javac targets 2019-12-19 11:19:52 +00:00
zzz
74020ae5a3 CommSystem: Reduce IPv6 status thrashing 2019-12-19 10:56:13 +00:00
zzz
6f3cfd83cd Router: Prep for a router strings bundle 2019-12-18 13:43:17 +00:00
zzz
10b8c92fdb Proxy: Clean up links in error pages 2019-12-18 12:23:49 +00:00
zzz
520da91735 Console: Get log level translations from core 2019-12-17 19:24:41 +00:00
zzz
d73fc85c34 Move log level translations to core 2019-12-17 18:59:55 +00:00
zzz
4eca698584 Fix ngettext in DataHelper to make TX happy 2019-12-17 18:27:55 +00:00
zzz
3fa3b69cbc Fix ngettext in LogWriter 2019-12-17 17:33:04 +00:00
zzz
bf94460420 Core: Move date/time/size translations from console to core,
so apps can use them.
Fix translation in LogWriter, was never included in console.
2019-12-17 17:21:35 +00:00
zzz
d054652952 NetDB: Fixes for hidden routers losing peers (ticket #2673)
Explore more aggressively, increase thresholds
Explore with standard non-explore lookup if low on floodfills
Run RefreshRoutersJob if low on floodfills
Refactor SearchReplyJob to process all hashes at once
Transport: Use NTCP and SSU equally if hidden
2019-12-17 16:17:15 +00:00
zzz
ad3c978c7c Console: Partial az translation 2019-12-16 17:57:53 +00:00
zzz
3277ea4854 Console: Hide services sidebar section if empty
Use Exception.getLocalizedMessage() everywhere
HomeHelper javadoc
2019-12-15 15:48:19 +00:00
zzz
7b6e25db8b Console: Fix Hebrew translation
SusiMail: Add partial Hebrew translation
2019-12-15 15:39:38 +00:00
zzz
1974cc5559 Console: XML stats as attachments, not inline 2019-12-14 17:52:37 +00:00
zzz
9c534fda7b Console: Stat group display names 2019-12-14 14:17:06 +00:00
zzz
a5efce883a CoalesceStatsEvent: Add new known peers stat
cleanups
2019-12-14 13:18:02 +00:00
zzz
6197454225 Console: Add Content-Disposition header to graphs 2019-12-14 12:57:41 +00:00
zzz
64e9e2aebe PeerManager: Add countPeersByCapability() 2019-12-14 12:35:27 +00:00
zzz
faf130cf38 Elligator2 cleanups, thx orignal 2019-12-10 15:26:53 +00:00
zzz
831c1945a5 Fix build (missed one file) 2019-12-05 15:54:44 +00:00
zzz
26ecf364a6 drop unused icons 2019-12-04 18:19:20 +00:00
zzz
74b61a7ba6 Console: Sort advanced section after translation 2019-12-04 18:01:22 +00:00
zzz
d65208b917 Console: Sort help section after translation 2019-12-04 17:36:34 +00:00
zzz
bf70a1520b Console: Sort internals section after translation 2019-12-04 17:16:14 +00:00
zzz
3a3416d2a5 Console: Sort summary bar services section
Simplify data structures in NavHelper
Index NavHelper map by untranslated app name
NavHelper cleanups
2019-12-04 17:01:29 +00:00
zzz
00667151da Console: Rework summary bar services section
Move icon selection from CSS to code
Use plugin-configured icon if available
2019-12-03 19:18:20 +00:00
zzz
a9abf3babf less code inside synch block 2019-12-03 15:53:49 +00:00
zzz
cad3c46ea6 OCMOSJ: Cancel timeout job on reply
JobQueue: Improve removeJob()
2019-12-03 15:43:44 +00:00
zzz
9289a6daa9 NDT: Fix JSON encoding of extended login (ticket #2672)
Disable middlebox and firewall tests
Don't NPE if no middlebox test
Change version to match measurement-kit
Don't prefer IPv6, it is unreliable
Disable SSL by default, unreliable
Add 30s timeout to initial handshake to prevent long hangs on SSL
2019-12-03 14:57:32 +00:00
f2f29d6a6c merge of '2c002e114a71d2110b0c2313843dd3b41aa9a5f4'
and '87ba4083f66afda026363d0d844d0fa8e7486312'
2019-12-02 20:15:20 +00:00
3e888f8936 merge of '5a9a93d4878eb2e2757a350fa1b2b799745e7c1d'
and 'd00191a61a9b395dee95cfbc02f6e38664eb3d50'
2019-12-02 20:14:55 +00:00
cbccba8dc2 Changes for OSX launcher with the 0.9.44 router. 2019-12-02 20:14:50 +00:00
zzz
7cfc16ca36 NDT: Prevent NPE on JSON parse of bad/empty input (ticket #2672) 2019-12-02 17:45:22 +00:00
zzz
f7a2d23f1e NetDbRenderer debug log cleanup 2019-12-02 15:34:27 +00:00
zzz
31e8ff8f45 Update manager: Notify GeoIP type and file version 2019-12-02 15:29:42 +00:00
zzz
3a7ee4f211 Console: Move restart status up in summary bar
Process restart status first regardless of display order
2019-12-02 15:25:10 +00:00
zzz
cc3c2d4d1a misc. minor cleanups 2019-12-02 15:21:46 +00:00
zzz
11d89e248e i2psnark HTML5 minor cleanups 2019-12-02 15:01:23 +00:00
zzz
2bb94bea80 Debian changelogs for 0.9.44 2019-12-01 21:46:56 +00:00
zzz
2bfd421b19 0.9.44 2019-12-01 17:12:05 +00:00
zzz
4c9c83231b CSS tweaks after review 2019-12-01 17:04:46 +00:00
zzz
32044f1682 bump 2019-11-30 19:00:16 +00:00
zzz
51f7348d8a pull translations 2019-11-30 18:58:53 +00:00
ae345cfb85 SusiDNS and router console css nits 2019-11-30 17:21:08 +00:00
52edc35275 SusiDNS and router console css nits 2019-11-30 17:10:57 +00:00
d5bc948bb4 fix css indentations 2019-11-30 06:42:55 +00:00
86ff3420b5 Tab-Menu Layout Changes, color updates to the light theme, new icons, highlight active page in susidns 2019-11-30 06:39:13 +00:00
zzz
6b0e3750c9 Add more partial Persian translations, add to config page 2019-11-29 13:57:05 +00:00
zzz
600c681143 misc updates:
GeoIP, BuildTime, checklist, blocklist
2019-11-27 12:22:25 +00:00
zzz
e1189b9c9f i2psnark: Error messages take 2 2019-11-25 13:36:48 +00:00
zzz
9feeb76d6c i2psnark: Add thebland back as default also 2019-11-25 12:28:51 +00:00
zzz
9f02b27c4a i2psnark: Error message improvements 2019-11-24 16:59:27 +00:00
zzz
345cdd3eb0 Debian: Add apparmor support for Java 11 (Github PR #19) 2019-11-24 16:20:09 +00:00
zzz
def1e2ec68 i2psnark: Restore tracker.thebland.i2p 2019-11-24 16:10:55 +00:00
zzz
62c9ae67d0 new translations 2019-11-24 14:14:00 +00:00
zzz
10b756b726 poupdate-source 2019-11-24 13:28:11 +00:00
zzz
bf9d136a2b readme edits 2019-11-24 13:13:08 +00:00
9ffd71e0b8 Settle on strings for new categories on the router console home page 2019-11-23 18:41:42 +00:00
zzz
6fa13313f0 Tunnel building:
- Don't count zero-hop tunnels as part of the pool when building
   - Don't build more than one zero-hop tunnel in a pool
   - Assume high build failure rate for new installs
   - Reduce threshold for tunnel length override
2019-11-23 16:51:14 +00:00
zzz
27fa991783 Remove dead reseed 2019-11-22 13:12:59 +00:00
09f6429b5f update javadoc 2019-11-21 15:12:30 +00:00
252a7972a1 only load a file filter definition if the definition has been modified since the last load 2019-11-21 15:12:04 +00:00
131ebc4d5a do not write to disk if there are no new breaches #2666 2019-11-21 14:56:25 +00:00
zzz
4e81e48d64 Use "Base32" and "Base64" consistently in strings
Update clearnet user-agent to match TBB
2019-11-21 13:59:26 +00:00
zzz
7b391fa17a I2CP: Don't put ECIES first in LS2 2019-11-20 15:01:22 +00:00
zzz
5e67f4232a I2CP: Prevent an uncaught OCMOSJ exception from killing the session 2019-11-20 14:54:46 +00:00
zzz
398b4ceade SSU: Lower ACKSender log level (ticket #2651) 2019-11-17 17:35:12 +00:00
zzz
03f4624f91 Transport: Save IPv6 firewalled state across restarts (ticket #2175)
Use EnumSets in UDPTransport
2019-11-16 17:12:40 +00:00
zzz
79334afcbc Console: Fix plugin icon-code images 2019-11-15 21:11:40 +00:00
zzz
c711d48835 Console: Hide more SSU peer info unless advanced 2019-11-15 13:55:04 +00:00
zzz
394db0b307 SSU: Remove redundant field (ticket #2659) 2019-11-15 13:45:58 +00:00
zzz
8bb1347e6e i2psnark: Don't start tunnels when autostart enabled but no
torrents set to autostart (ticket #2662)
Remove trackers apparently down
Don't show flv with HTML5
Another escape fix
2019-11-15 13:11:53 +00:00
zzz
e22810fd93 SSU minor cleanups 2019-11-15 11:06:14 +00:00
zzz
8218d55874 SSU: Fix log value (ticket #2652) 2019-11-14 15:51:52 +00:00
zzz
652b75a749 Transport: Remove unused currentReceiveSecond (ticket #2661) 2019-11-14 13:44:52 +00:00
zzz
620917cd70 Transport: Fixes for IPv6 firewalled logic (ticket #2175) 2019-11-14 13:25:38 +00:00
zzz
b8ed77da9a Consolidate I2CP property definitions 2019-11-13 18:06:35 +00:00
zzz
65b3cdbb12 Console: Hide buttons on /configkeyring if no entries 2019-11-13 17:39:56 +00:00
zzz
cecf255706 i2ptunnel: Don't delay after ConnectException if stopped
(fixes zzzot stop delay)
2019-11-13 15:37:16 +00:00
zzz
a854ccee69 remove plugins link 2019-11-13 14:07:01 +00:00
zzz
6e2ad50e16 i2psnark: Disable HTML5 for playlist files
Another escaping fix
2019-11-12 20:20:07 +00:00
zzz
fdb3c68d3f cleanup 2019-11-12 17:04:53 +00:00
zzz
d2e2109799 Router: Shutdown ECIES engine 2019-11-12 17:03:03 +00:00
zzz
9f0c3ee345 Debian: Fixup patch to match wrapper.config change 2019-11-12 17:00:36 +00:00
zzz
725509fe5c i2psnark: Exclude some video types from HTML5 2019-11-12 16:57:17 +00:00
zzz
13318a12da Console: Fix NPE on bad input 2019-11-12 16:55:39 +00:00
zzz
e8bf2ee30d i2psnark: Audio playlist support
Add HTML5 player for single-file torrents
2019-11-12 12:20:19 +00:00
eda91af7c7 pick a better icon for hidden services manager, improve some text, and hide some of the stuff in /monitoring 2019-11-11 17:57:08 +00:00
zzz
9ddb655a88 KeyGenerator: Use new PrivateKey constructor to cache pubkey
Clear cached public key on private key destroy()
2019-11-11 14:24:11 +00:00
zzz
9d46a5d838 Router: Set default sig type to EdDSA for Android 2019-11-11 14:17:27 +00:00
f7471713da Re-categorize items from /home and introduce 2 new categories. Make them configurable on /confighome 2019-11-11 00:49:26 +00:00
b5d7f3e460 only declare one string for determining appdata, use old roaming appdata if it is present. 2019-11-09 08:23:41 +00:00
7b53b0d3ad leave roaming appdir installs that already exist alone 2019-11-09 01:36:53 +00:00
ff293d50a9 introduce divs to allow selecting buttons on /home by category 2019-11-08 17:42:53 +00:00
zzz
552100da17 i2psnark: More playlist mime types 2019-11-08 16:44:09 +00:00
zzz
a2b23f96e8 i2psnark: HTML5 on details page 2019-11-08 15:02:03 +00:00
zzz
14499c2993 i2psnark: Playlist mime type 2019-11-08 14:49:11 +00:00
zzz
dfc533b6e8 i2psnark: Another escaping fix 2019-11-08 14:48:30 +00:00
zzz
2738b3d29c i2psnark: Increase progress bar size again 2019-11-08 14:45:59 +00:00
zzz
07b7ab4262 Ratchet: Hook in MuxedEngine decrypt 2019-11-06 16:20:14 +00:00
zzz
b7f6cfbf46 Ratchet: Replace old session if new NS received
Log tweaks
2019-11-05 19:11:29 +00:00
zzz
ebc8dbe947 Ratchet: Increase tagset sizes
fix compile error
2019-11-05 17:26:22 +00:00
zzz
01d6cea017 Ratchet: Simplify lookup of OB session from IB NSR 2019-11-05 17:15:37 +00:00
zzz
160bcd7da8 MV log tweaks 2019-11-05 17:07:21 +00:00
zzz
bc40978297 Router: No longer check the clove ID in the Bloom filter, just check the expiration.
The Clove ID is just another random number, and the message ID in the clove
will be checked in the Bloom filter; that is sufficient.
Checking the clove ID as well just doubles the number of entries in the Bloom filter,
doubling the number of false positives over what is expected.
For ECIES-Ratchet, the clove ID is set to the message ID after decryption, as there
is no longer a separate field for the clove ID in the transmission format.
2019-11-05 16:43:12 +00:00
zzz
656dd42276 Ratchet: Prep for next key 2019-11-05 15:20:52 +00:00
zzz
4d1d11d1d4 Ratchet: Bob transition to ES
Store PK in RTS
New RST constructor
Log tweaks (lots)
2019-11-05 14:13:35 +00:00
zzz
3ae5b90c98 Ratchet: Expire pending outbound
Prep for Bob transition to ES
Log tweaks
2019-11-04 18:03:06 +00:00
zzz
2846c33b40 Ratchet: Debug page fixes 2019-11-03 17:06:33 +00:00
zzz
b5f6c58a0b Ratchet: Implement expiration
Store creation and last-used in tagset
Catch all decrypt/encrypt exceptions
Debug page improvements
2019-11-03 16:51:51 +00:00
zzz
3ba48fda86 Ratchet: Track pending sessions
Transition from NSR to ES
HandshakeState.clone() fix for multiple NSRs
Add tagset ID numbers
Debug logging
2019-11-02 15:42:16 +00:00
zzz
7c4569816f Ratchet: NSR send/recv fixes 2019-11-01 12:56:16 +00:00
zzz
0cd8073f39 Ratchet: WIP on NSR send/recv 2019-11-01 12:22:20 +00:00
zzz
71411be6d9 Ratchet: Changes to match current proposal 144
Pass CloveSet to/from ECIESEngine
2019-10-31 10:56:01 +00:00
zzz
a51ee8e745 findbugs all over 2019-10-30 15:26:56 +00:00
zzz
3719081469 Build: More findbugs source paths 2019-10-30 13:41:33 +00:00
zzz
2216a58143 I2NP: Javadoc fixes
Improve DataMessage.toString()
2019-10-29 16:30:08 +00:00
zzz
dc29525e5c Console: Remove theme choice objects on /configui
so we don't get snakes with noscript
(thx drz3d)
2019-10-28 16:07:25 +00:00
e5163c6ee5 Set autobits to false in wrapper.config. See #2299 2019-10-27 14:32:43 +00:00
c5db5f0de3 Fix runplain.sh for OSX. See #2299 2019-10-27 14:30:30 +00:00
zzz
3d75b3dc31 OCMOSJ: Keep bundling LS until acked
log tweaks
2019-10-27 12:24:08 +00:00
zzz
591b994b75 OCMOSJ: Bundle unwrapped ack with LS for ratchet dest 2019-10-27 12:21:22 +00:00
zzz
135e9ad31f NetDB: Don't send encrypted lookup reply to ratchet dest 2019-10-27 12:18:07 +00:00
zzz
eee9e47cac Transport: Publish IPv6 address on transition to non-firewalled (ticket #2175) 2019-10-25 13:27:30 +00:00
zzz
df6465f802 TestJob: Remove unused wrappedKey param from buildMessage() 2019-10-25 12:23:43 +00:00
zzz
0c256d30c7 OCMOSJ: Select target key in LS based on local client's support
Hook new SKMs and ending into Garlic Message encryption/decryption
Remove unused wrappedKey param from buildMessage()
Log tweaks and javadoc fixes
WIP
2019-10-25 12:21:33 +00:00
zzz
43c93bceed I2CP: Set client SKM based on configured encryption 2019-10-25 11:36:46 +00:00
zzz
f021abcae0 Crypto: Add ECIES Engine to context 2019-10-24 14:32:05 +00:00
zzz
7b28640e91 Crypto: Ratchet and Muxed SKMs and Engines (WIP) 2019-10-24 14:28:39 +00:00
zzz
6a47319b66 Crypto: SessionTagListener for RatchetTagSet 2019-10-24 14:01:53 +00:00
zzz
ee46678955 Crypto: RatchetTagSet using SparseArray 2019-10-24 13:54:20 +00:00
zzz
8c498069d8 Crypto: SparseArray mods
Remove AOSP dependencies
Remove unneeded code
Javadoc fixes
2019-10-24 13:50:29 +00:00
zzz
7389216560 Crypto: SparseArray from AOSP
Latest as pulled from android.googlesource.com
Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0
Unmodified, as reference for future merges,
will not compile, mods to follow
2019-10-24 13:46:32 +00:00
zzz
129e474ecb I2CP: Add config to disable loopback for testing 2019-10-23 14:02:30 +00:00
zzz
3ed8620e5a I2CP: Fix error message for config errors (ticket #2639) 2019-10-23 13:48:39 +00:00
zzz
436a8b8720 Router: Register all LS2 keys with KeyManager 2019-10-23 13:38:41 +00:00
zzz
5d8871c17c NetDb: Don't try to garlic encrypt netdb messages with a ECIES key 2019-10-23 13:21:22 +00:00
zzz
d84fc4f0c8 Data: Add LeaseSet methods to get encryption key by type 2019-10-23 13:13:13 +00:00
zzz
2c2f90089b Crypto: Noise modifications to support ratchet:
- Add IK support
- Add generic key factory support
- Add method to get ephemeral key
- Add method to get encoded ephemeral key
- Add clone() support
- Add back ChaCha debug support
2019-10-23 13:02:00 +00:00
zzz
236354e5a8 Crypto: Base classes for ECIES-Ratchet (proposal 144) 2019-10-23 12:33:13 +00:00
zzz
aa3d2f39b1 Router: Fix logic error in check for local destinations 2019-10-23 12:23:04 +00:00
zzz
fb67ebb38d Crypto: New KeyFactory interface 2019-10-23 12:17:21 +00:00
zzz
a9d4798bfe Data: Cache public key in private key class 2019-10-23 12:15:58 +00:00
zzz
8484a22fc4 Router: Add KeyManager support for multiple leaseset private keys 2019-10-23 12:11:17 +00:00
zzz
0f7ebf2f71 Crypto: Don't zero-fill arrays already initialized 2019-10-23 12:04:41 +00:00
zzz
db37745a1c i2ptunnel: Add encrytion type selection to form 2019-10-23 11:57:22 +00:00
zzz
b12e7214c8 Build: Make 3 release targets, with jbigi/geoip/neither 2019-10-23 11:35:33 +00:00
zzz
079d464629 Startup: clients.config.d files must have a ".config" suffix 2019-10-23 11:26:35 +00:00
zzz
6dd2e9bb6b fix comment 2019-10-23 11:18:42 +00:00
zzz
413eb7d0eb Console: Consolidate 'selected' strings 2019-10-23 11:16:02 +00:00
zzz
68a03b835a Data: Reduce SessionTag size by flattening class 2019-10-23 11:08:42 +00:00
zzz
eef6c5cb33 Build: Recognize gettext 0.20 2019-10-23 11:00:23 +00:00
zzz
652f9bb6a0 Debian/Ubuntu updates for 0.9.43 2019-10-22 16:36:23 +00:00
zzz
ab7b85cc1a 0.9.43 2019-10-21 19:47:35 +00:00
zzz
2335f547f7 add new man pages to debian 2019-10-21 19:46:09 +00:00
zzz
701f777035 bump for review 2019-10-18 18:29:56 +00:00
zzz
77259293a8 Maxmind GeoIP 2019-10-15 2019-10-18 18:24:35 +00:00
zzz
4e231b26c3 I2CP: Remove pre-43 test code for BlindingInfo 2019-10-18 18:23:26 +00:00
zzz
9889d1adcb Console: changed headers and app colours on /home, headers in sidebar, news, and /console.
patch from sadie
2019-10-18 18:22:17 +00:00
2377b1adde remove unused image from bandwidth wizard 2019-10-18 18:07:59 +00:00
zzz
47aa6101d4 New zh_TW translations for desktopgui and i2psnark
New ro man pages
Fix ru man page error
New transifex translation of zh readme
2019-10-18 13:41:10 +00:00
zzz
7161785c5b pull translations from transifex 2019-10-18 12:53:27 +00:00
zzz
2ca9fe2050 fix html error 2019-10-18 12:46:30 +00:00
zzz
1095a140de Util: Fix eepget -p :port 2019-10-16 12:57:50 +00:00
0485e690c6 fix some colors and some padding in the new bandwidth wizard 2019-10-15 23:57:09 +00:00
20103957a9 remove unused 48x48 flags from the installer package 2019-10-13 15:27:46 +00:00
zzz
9670858095 SessionIdleTimer log level reduction 2019-10-13 13:59:28 +00:00
2bc8d58476 fix the trailing whitespace added by my IDE 2019-10-12 17:27:54 +00:00
zzz
70fd0c6f6a Tests: Disable NTP in context for unit tests 2019-10-12 14:47:59 +00:00
zzz
2b1a7015e4 poupdate-source after spelling fix 2019-10-12 14:14:56 +00:00
zzz
e8404a75fb spelling fix 2019-10-12 14:12:37 +00:00
zzz
05c30b4f1d NTCP: Performance improvement (tickets #2619, #2620) 2019-10-12 13:23:28 +00:00
zzz
29eabc4706 TCG javadoc notes for android 2019-10-11 16:14:26 +00:00
zzz
049b34f7cf Console: Fix mime type and encoding on javadoc pages 2019-10-10 14:48:23 +00:00
zzz
31f2c51e7e poupdate-source 2019-10-09 19:06:33 +00:00
zzz
71cc55fa7d langbox tweaks 2019-10-09 18:53:00 +00:00
68a65d5cac fix tooltips on new gear links, shrink them down a little bit 2019-10-09 17:31:44 +00:00
e4c5c4862f Improve accuracy of TunnelControllerGroup message 2019-10-08 18:14:42 +00:00
cb2544157f fix erroneous log message in TunnelControllerGroup, replace language flags with a link to configui instead 2019-10-08 18:10:34 +00:00
zzz
612bdda281 build.xml comment 2019-10-08 14:11:43 +00:00
zzz
db5dd6a626 I2NP: Remove unused I2NPMessageHandler methods 2019-10-06 16:31:18 +00:00
16db73b092 Improve bandwidth wizard CSS on narrow browser windows 2019-10-05 23:05:01 +00:00
c259abc82c remove metadata from undraw assets 2019-10-05 15:30:23 +00:00
99b33fabe6 regular-ize image sizes, make spacing more similar between dark and light themes of bwwizard, fix some background stuff 2019-10-05 07:45:32 +00:00
81133a1a95 undo absolute positioning of messages 2019-10-04 05:26:43 +00:00
9b3380cef3 check in undraw license 2019-10-04 05:13:11 +00:00
87ba8577e9 fix css leaking from new bandwidth wizard to main router console in light mode. Images for new bandwidth wizard(installer/resources/themes/console/images/wizard/*.png) under the UnDraw license, which is in (licenses/LICENSE-undraw.txt). Make font size consistent on bandwidth page in light mode. 2019-10-04 05:11:42 +00:00
zzz
aca5617935 i2psnark: Start with minimum tunnel count (ticket #2623) 2019-10-03 14:10:18 +00:00
e44a7c5054 modern-styled bandwidth configuration menu 2019-10-03 05:44:53 +00:00
zzz
142508c872 configkeyring html fixes 2019-10-02 20:23:47 +00:00
zzz
788e041939 Installer: Clean up old hosts.txt entries
see http://zzz.i2p/topics/2778
2019-10-02 14:04:48 +00:00
zzz
3563fdf9e4 Console: Add date columns on /configkeyring 2019-10-02 14:02:20 +00:00
zzz
ea8ac884fa i2ptunnel: Results page after generating LS2 DH key 2019-10-02 13:56:11 +00:00
zzz
bf33e8432d CSS -ms-user-select for IE 10
https://www.w3schools.com/csSref/css3_pr_user-select.asp
2019-10-02 13:52:03 +00:00
zzz
18ed1a6bb3 PortMapper: Fix URL generation for IPv6 hosts
Console: Remove i2pwiki.i2p (ticket #2626)
2019-10-01 16:09:17 +00:00
zzz
830e08065b spelling 2019-09-30 17:03:59 +00:00
zzz
c1722a9f82 i2psnark: Log more cases where torrent file gets renamed
(followup to changes for ticket #2291)
2019-09-30 17:01:02 +00:00
zzz
e5475bc229 i2psnark: Recognize more ebook file suffixes 2019-09-30 16:59:32 +00:00
d81bf6a417 Re-added -notimestamp for javadoc 2019-09-29 11:07:24 +00:00
zzz
3710ff9aa1 javadoc fixes 2019-09-28 12:07:59 +00:00
679aa1afac Revert javadoc thingy that didn't work. 2019-09-27 14:03:47 +00:00
zzz
320569ef7f Tomcat 8.5.46 2019-09-21 14:30:57 +00:00
zzz
4f0d764540 i2ptunnel: Support quoting for custom options (ticket #2603)
This also allows closing of ticket #2163.
2019-09-19 16:22:51 +00:00
zzz
a768afe05b i2psnark: Fix breakage of error tables 2019-09-18 16:37:06 +00:00
zzz
d15e068123 i2psnark: Details page cleanups part 2 2019-09-18 14:13:39 +00:00
zzz
c1431565ed i2psnark: Details page cleanups 2019-09-18 13:54:40 +00:00
zzz
2b6cb2099a I2CP: More BlindingInfo serialization fixes
Shorten lookup timeout on router side so the client gets the reply before timeout
2019-09-18 12:37:26 +00:00
zzz
f9a2193e2f i2ptunnel: New CLI BlindingInfo test
I2CP: Fix BlindingInfo serialization
2019-09-17 17:30:42 +00:00
zzz
0d325d5a28 i2ptunnel: Interstitial after auth save form 2019-09-17 15:00:50 +00:00
zzz
520da24e0c i2ptunnel: Improve query parsing in local HTTP server,
as required for b64 keys in form
2019-09-17 14:26:20 +00:00
zzz
69638caa7b i2ptunnel: B32 auth form improvements 2019-09-17 13:18:47 +00:00
zzz
62914d7678 i2ptunnel: Remove streamr, connect, and httpbidir from wizard
Don't override defaults in wizard
2019-09-17 12:09:26 +00:00
zzz
94c96b09e9 Router: Implement expiration for BlindData entries 2019-09-17 11:17:14 +00:00
zzz
0c2a8e9244 Util: Add sigtype/enctype help to PKF
remove dead code from SU3File help
2019-09-17 11:05:48 +00:00
zzz
67cd6409a0 EepHead: Don't output null values in CLI 2019-09-14 14:14:11 +00:00
zzz
65d0ea3f0b i2ptunnel: Fix SSL wizard for split config (ticket #2610) 2019-09-14 13:39:39 +00:00
zzz
f1b725a320 Util: Don't attempt to load hidden cert files (ticket #2622) 2019-09-14 11:40:39 +00:00
zzz
9e39cbe502 reseed: Fix adding netid param (ticket #2621) 2019-09-14 11:23:59 +00:00
zzz
8d104f7fea i2ptunnel: New form for blinding info (WIP) 2019-09-12 17:42:44 +00:00
zzz
e66d64d89b comment out debug log 2019-09-12 16:13:59 +00:00
zzz
9d28b17a04 I2CP: Don't return dest for a b33 lookup if we don't have the
required auth or secret
2019-09-12 16:09:44 +00:00
zzz
43f055ec28 I2CP BlindingInfo fixes 2019-09-12 13:56:00 +00:00
zzz
b4a5cc07c2 i2ptunnel: New b32 error page
Do basic b32 checks before looking up with session
Util: Fix AIOOBE on bad input to base 32 decode
log tweaks
b33 decode error message tweaks
2019-09-10 14:21:28 +00:00
zzz
479461ab3b I2CP: New Blinding Info message (proposal 123)
client- and router-side support
new session lookupDest2() method
return new b33 failure codes from lookup
show b33 alternates in tools
stub out support in HTTP client
2019-09-10 12:37:11 +00:00
zzz
c99a42f0b1 I2CP: Write single byte directly 2019-09-09 15:35:58 +00:00
zzz
65698aa0da remove unnecessary buffers 2019-09-08 19:59:55 +00:00
zzz
7f75d0254c Transport: Don't automatically transition from firewalled to non-firewalled
when IPv6 address changes
2019-09-08 17:09:09 +00:00
zzz
331ecf0625 Transport: Prefer temporary IPv6 addresses when in laptop mode 2019-09-08 12:09:35 +00:00
zzz
32d420e76f GeoIP: Also use saved IPv6 address for local router lookup 2019-09-08 12:08:09 +00:00
zzz
ee5a22be24 Console: Case-insensitive sort for plugins 2019-09-08 12:05:00 +00:00
zzz
b51962aeac Jetty: Support annotation scanning of plugins for Servlet 3.0 @WebServlet
Requires 4 jars not yet bundled:
 asm.jar
 javax-annotations-api.jar
 jetty-annotations.jar
 jetty-plus.jar
2019-09-07 16:59:24 +00:00
zzz
e73640bb8d Debian: revert allowing JRE 8 2019-09-07 13:40:01 +00:00
zzz
92515179e9 javadocs 2019-09-07 13:37:31 +00:00
zzz
c5f126c196 log tweaks 2019-09-07 13:34:56 +00:00
zzz
bb88555a63 Transport: Detect IPv6 address changes
Use same IPv6 address as previous if still valid
Log tweaks
2019-09-07 13:29:37 +00:00
zzz
e03a94647c Console: Fix first row of version info not selectable (ticket #2615) 2019-09-07 11:10:05 +00:00
zzz
8eda9abab7 Util: Fix time zone for formatted time/date 2019-09-07 11:00:29 +00:00
zzz
aed6d433c8 Transports: Remove IPv6 addresses on transition to IPv6 firewalled
log tweaks
2019-09-06 15:51:32 +00:00
zzz
71376d53c5 fix spacing on help page 2019-09-04 16:42:04 +00:00
zzz
9a84f77fab Add Romanian eepsite help page 2019-09-04 16:33:26 +00:00
zzz
2590fd8253 Debian: Allow recent JREs
require Jetty 9.4 or higher
2019-09-04 16:06:49 +00:00
zzz
ea3bddbcd6 i2psnark: un-rotate magnet icon 2019-09-04 15:53:48 +00:00
zzz
d04f0dae37 SusiMail: Show "to" rather than "from" in sent and drafts folder (ticket #2571)
Fix sort links going to wrong folder
2019-09-04 14:24:30 +00:00
zzz
3504bddea4 SSU: Don't mark peer unreachable if it reports we have a bad port,
as it could be due to the NAT external port range (ticket #2467)
Add log message
2019-09-04 13:49:29 +00:00
zzz
b3a5f1f8c1 SSU: Fix IPv6 peer test not firing
more debug logging
2019-09-03 16:46:31 +00:00
zzz
0f2f7e2454 Utils: Fix SAN verification for IPv6 hostnames
Add Quad9 DoH servers
Change Google DoH server hostname
2019-09-03 15:34:21 +00:00
zzz
b119d0be43 Tunnels: Use context AES for hop processing
and related cleanups
2019-09-03 12:42:10 +00:00
zzz
566221b732 Tests: Fix InboundTest so it can be run without a real router 2019-09-02 18:07:23 +00:00
zzz
81ab35abe6 Tests: Fix broken OutboundTest
never worked - didn't check result, processed own config
2019-09-02 14:01:02 +00:00
zzz
b2e37243ab i2psnark: CSS fixes -
increase progress bar size
don't justify comments
2019-09-02 13:59:16 +00:00
zzz
a6e3621c06 Util: Consolidate and standardize date/time formatting (ticket #2016) 2019-08-30 18:38:12 +00:00
zzz
96d8385f49 bump 2019-08-29 12:43:07 +00:00
zzz
912d25b775 Data: Mark Destination method that doesn't support sigtypes as deprecated 2019-08-29 12:24:45 +00:00
zzz
55cdd81017 Transport: UPnP HTML output fix 2019-08-29 12:19:11 +00:00
zzz
a1c18fd0aa Transport: Tweak log levels 2019-08-29 12:18:33 +00:00
zzz
5f3da69acc Router: Job Queue cleanups and javadocs (ticket #2590) 2019-08-29 12:15:13 +00:00
zzz
e6dcfaee15 Transport: Move I2PHMac to ssu package
Remove Mac interface
2019-08-29 12:07:30 +00:00
zzz
f724b2208b i2psnark: Drop debug icon 2019-08-29 11:59:40 +00:00
zzz
89b70895d7 Debian files for 0.9.42
checklist updates
2019-08-29 11:56:55 +00:00
cff2ae3ac9 Hotfix change to make 0.9.42 build on Mac OSX without disabling javadoc. (Since maven builds are built on OSX it's something that really should work fine) 2019-08-28 08:38:06 +00:00
zzz
ec0f8566b6 0.9.42 2019-08-27 12:28:25 +00:00
zzz
2ebe59436a bump for review 2019-08-23 18:19:01 +00:00
zzz
dcf6983607 translated man page updates 2019-08-23 18:17:22 +00:00
zzz
1779202ff9 translation updates from Transifex 2019-08-23 18:15:48 +00:00
zzz
6483abe7cf Transport: Add Turkey to hidden mode list 2019-08-23 18:01:09 +00:00
zzz
6618561237 Console: CSS updates from sadie 2019-08-22 16:06:19 +00:00
zzz
d8c9b0942f Transport: add Kazakhstan to hidden mode list 2019-08-20 15:39:03 +00:00
zzz
9938e50528 Tunnels: Remove timing calls unless for debug logging
Log client in b32
2019-08-19 17:14:43 +00:00
zzz
232b7f30d5 Build: Fix javadoc errors with Oracle JDK
Tested with 12.0.2
2019-08-19 16:33:19 +00:00
zzz
adba7e4c25 update earliest time 2019-08-19 14:49:57 +00:00
zzz
764f89f5c5 MaxMind GeoIP 13-Aug-2019 2019-08-19 14:47:29 +00:00
zzz
87180e0e2d SSU: Increase initial concurrent messages limit (ticket #2576)
Add comments for ticket #2427
2019-08-19 14:18:16 +00:00
6789a735e3 fix typo 2019-08-18 19:12:06 +00:00
65eb9b17db fix checks for config parameters in TunnelControllerGroup constructor 2019-08-18 19:08:27 +00:00
zzz
64ba43c007 Jetty: Log stack trace if 2nd arg is a Throwable (ticket #2592) 2019-08-18 14:53:32 +00:00
zzz
b2dec2f4b2 Tunnels: Clean up debug timing calls in preprocessor 2019-08-17 17:55:45 +00:00
zzz
789f482373 Transports: Disable eph. key reuse 2019-08-17 17:39:25 +00:00
zzz
a667c36d2d Tunnels: Reduce IBGW batching time (ticket #2586) 2019-08-15 19:27:05 +00:00
zzz
65e2132a25 SSU: Reduce ACK time to 150 (ticket #2574) 2019-08-15 17:45:06 +00:00
zzz
5e76118ffd po update source 2019-08-14 20:13:35 +00:00
zzz
131a70057e Console: Clean up help text, tag for translation (ticket #2298) 2019-08-14 19:52:54 +00:00
21ace66a46 Tests: Fix streaming integration tests after access filtering changes 2019-08-10 18:02:23 +00:00
459eb7fdcd Tests: Unify core test resources across JUnit and ScalaTest
Fixes a test failure running the ScalaTests under Ant
2019-08-10 17:19:21 +00:00
8586c28b5f Travis CI: Use Trusty build environment
Travis CI recently bumped the default build environment from Trusty to
Xenial. The latter does not enable installing Java 7 or 8, which we
still test against.
2019-08-10 16:52:40 +00:00
f32c863ba8 Tests: Temporarily mitigate discrepancy between Ant and Gradle in SingleFileNamingServiceTest 2019-08-10 16:48:21 +00:00
ee84e7e3e1 Tests: Fix compilation bug after SSU HMAC implementation move 2019-08-10 16:46:41 +00:00
cf4298f759 Jetty: Fix Gradle build 2019-08-10 16:10:07 +00:00
13190931b9 EdDSA: Reduce diff between vendored code and upstream
Includes missing license information.
2019-08-10 15:39:41 +00:00
zzz
08be6a4f4a i2ptunnel: Add failsafe timeouts for local sockets (ticket #2568) 2019-08-05 15:55:43 +00:00
zzz
7f015c4794 i2ptunnel: Add configs to override user agent
Not particularly helpful yet, because we don't have a way to
quote or escape spaces in the custom options field.
2019-08-05 15:34:46 +00:00
zzz
7b46d43492 update tooltip 2019-08-05 15:29:36 +00:00
zzz
a4bcff093f Transports: Implement cross-network detection (proposal 147)
Reseed: Send network ID in query string (proposal 147)
2019-08-05 14:27:17 +00:00
zzz
fb7b3c2793 Streaming: Reduce immediate ack delay (ticket #2584) 2019-08-04 21:08:29 +00:00
zzz
397bf43147 i2psnark: Fix autostart to start only torrents running previously,
save torrent running status on torrent stop when autostart is enabled,
remove dup call to startTorrent()
(ticket #2120)
2019-08-04 20:29:46 +00:00
zzz
49af26d958 i2psnark: Add checks for dup data dirs (ticket #2291)
Add two HashMaps for faster dup checks
2019-08-04 18:54:01 +00:00
zzz
0ce4811dec SSU: Fix stall when higher-priority message is added to queue (ticket #2582) 2019-08-04 16:28:41 +00:00
zzz
d3e3ec4d35 Transport: Allow local addresses when configured 2019-08-03 15:29:30 +00:00
zzz
8ed0dd2a5c Router: Fix Bloom filter false positives
caused by lack of sync around buffers.
Use temp buffers instead.
Most likely to affect high-bandwidth or testnet routers;
appears to be rare on lower-bandwidth routers.
2019-08-02 15:48:05 +00:00
zzz
8158753dac i2psnark:
- Fix announce hosts of the form b64dest[.i2p]
- Add last activity stat
- Disallow illegal filenames on Windows
- cleanups and log tweaks
2019-08-01 20:20:44 +00:00
zzz
e3481f6730 JBigI: GMP 6.1.2 for linux 64 bit (ticket #1869)
Adds Broadwell and Skylake binaries
Updates all other linux 64 bit binaries
32 bit libraries will not be updated
Other OS 64 bit binaries may or may not follow at a later date
2019-07-27 15:52:38 +00:00
zzz
165beb3fbd TCG: split config log tweaks and cleanups
Fix warning about no tunnels loaded
Add notes in config default files
2019-07-27 11:32:38 +00:00
zzz
5d367940d5 History for prop, -4 2019-07-26 13:00:51 +00:00
zzz
617294b7fa propagate from branch 'i2p.i2p.zzz.confsplit' (head 324249e53469a81e66f9d1c1989d9f53817868f4)
to branch 'i2p.i2p' (head cf6476e03a43a35fea6697b29f9ff43f77875100)
2019-07-26 12:53:03 +00:00
zzz
240d59393f Debian: Change debian files from stretch (Jetty 9.2, Tomcat 8, Java 8) to buster (Jetty 9.4, Tomcat 9, Java 11)
Add debian-alt/stretch files
Update debian-alt/precise, trusty, xenial, bionic, disco to include
 the changes from buster, not stretch
Remove debian-alt/buster, unstable files
Doc updates
2019-07-26 12:48:17 +00:00
zzz
6b94dc2dbd configclients: Only save files that have changed when in split config 2019-07-24 13:37:20 +00:00
zzz
3a0873c991 streaming debug log tweak and notes on ID mismatch 2019-07-23 21:08:30 +00:00
zzz
72ef065ab7 log tweak 2019-07-23 15:57:30 +00:00
zzz
66ecdb2f7a Data: Initial support for enc types in PrivateKeyFile and I2PSessionImpl
CreateRouterInfoJob updates and cleanups; KeyCert updates
2019-07-23 15:56:03 +00:00
zzz
e2980603b7 Router: Checks for new enc types
- Prevent encrypted lookups or stores
- Prevent participting in our tunnels
- Handle padding
- Checks in crypto classes
2019-07-23 13:29:37 +00:00
zzz
885e0468b2 NetDB: Mark ls2 received via garlic as blinded if bit 2 set in flags 2019-07-22 15:35:07 +00:00
zzz
3bfbb6aef6 i2ptunnel:
Store configFile path in controller so it doesn't change
Simplify assureConfigFile()
Sanitize tunnel name when creating config file name
Sort config when saving
Don't copy config when saving
Make shouldMigrate() private
Javadocs
2019-07-20 18:05:17 +00:00
zzz
365820172a Console: Split up /help page, prep for translation (ticket #2298) (WIP)
Summary bar -> sidebar
Remove static translated help pages
Add jsp for LICENSE.txt
2019-07-19 20:30:22 +00:00
zzz
d73058fd65 Console: Remove links on /configclients 2019-07-19 16:33:22 +00:00
zzz
7374484ccb Data: Set flag bit when blinded 2019-07-18 18:42:42 +00:00
7d4229acab use for(Properties props: tunnels) to migrate tunnels 2019-07-18 17:04:36 +00:00
41128f1457 remove redundant functions 2019-07-17 14:34:41 +00:00
61f45b3a3a Remove un-needed imports 2019-07-17 02:25:07 +00:00
aaacb2e558 Fix the configFile property so that removeControllers can work, fix cross-platform/un-migrated platform bugs, override equals so the list of controllers can remove a controller by passing the object 2019-07-17 02:22:07 +00:00
9c2dc47a8a use .equals instead of == 2019-07-15 19:31:04 +00:00
2db0a65425 Save tunnel configs on tunnel creation, only save one config at a time. 2019-07-15 19:05:03 +00:00
zzz
fd781f4894 TCG:
private/public method tweaks and revert API breakage
remove loadSplitConfig()
don't create empty file in assureConfigFile()
throw exception on empty config
locking fixes
formatting cleanups
@since fixes
log tweaks
2019-07-15 16:22:51 +00:00
4a099854f7 Make sure listFiles returns i2ptunnel.config on un-migrated platforms, don't loop over loadControllers in startup() 2019-07-13 08:34:54 +00:00
ff379c36cb NPE fix 2019-07-13 08:10:24 +00:00
d5970f17de more consistency fixes 2019-07-13 07:18:25 +00:00
595e43b8a4 fix the bug where it tries to migrate an already migrated config file, pass around files instead of strings, use the FileSuffixFilter, eliminate irrelevant code 2019-07-13 06:10:30 +00:00
zzz
6adc665fd3 Build: Move SSU HMAC implementation from core to router 2019-07-12 18:40:46 +00:00
zzz
1be569db7a Test: Fix broken junit test build 2019-07-12 17:33:03 +00:00
zzz
63e75ed307 increase max plugin size to 128 MB 2019-07-11 19:17:14 +00:00
zzz
6b990689cc imagegen:
Generate RGB QR code images
re-enable font anti-aliasing
scale font based on text and image size
2019-07-11 14:04:12 +00:00
zzz
3e48bf80f1 Add muwire.i2p to home page
as approved at July 2 meeting
icon: public domain
2019-07-10 12:13:30 +00:00
zzz
5341166e95 NetDb: Pick alternate reply GW for netdb store reply
if connected, to reduce connections
2019-07-09 18:36:02 +00:00
zzz
685088ccca NetDb: Fix NPE on store of Encrypted LS (ticket #2563) 2019-07-09 18:31:37 +00:00
zzz
7a64505139 Console: Hide netdb RI and LS tabs (ticket #2558) 2019-07-04 12:34:14 +00:00
zzz
df223af23d debian files for 0.9.41 2019-07-03 21:25:55 +00:00
zzz
8d74a196cf debian release build fix 2 2019-07-03 17:07:24 +00:00
zzz
26d74620a9 debian release build fix 2019-07-03 17:04:00 +00:00
2918d6006f fix un-migrated and monolithic config saving 2019-06-09 02:20:23 +00:00
357feca7b1 fix bug when configs are un-migrated 2019-06-08 07:26:24 +00:00
920a83ddab tiny formatting fix 2019-06-08 04:11:18 +00:00
42e3406529 re-name inConfig to reflect new purpose 2019-06-08 04:04:53 +00:00
7336f64c26 fix saving config files from ui 2019-06-08 04:03:31 +00:00
c1731f68fa when deleting configs, move them to a backup location 2019-06-08 00:51:59 +00:00
e4892c6d5c fix removeConfig so it backs up and removes the files 2019-06-07 18:12:44 +00:00
zzz
11c8e8e794 dont migrate clients.config if android 2019-06-05 12:15:46 +00:00
zzz
0d1dbc7992 dont migrate clients.config if portable 2019-06-05 12:08:01 +00:00
38f135ceb9 That took me entirely too long to figure out 2019-06-01 18:42:22 +00:00
0a1a2ed82a unwrap some loops, get rid of configFiles(), fix loadConfig 2019-06-01 16:20:53 +00:00
4fdcd25671 add some logging while I fix stuff 2019-05-25 17:35:57 +00:00
65481ad61e improve config saving code, never use deprecated config function 2019-05-23 16:59:27 +00:00
8466cdc675 saveConfig for multi-configuration 2019-05-23 00:29:06 +00:00
zzz
63b2f29633 Begin i2p.i2p.zzz.confsplit branch
Code from Jan. 2018, never checked in, probably untested,
definitely incomplete.
2019-05-10 14:58:41 +00:00
3773 changed files with 420014 additions and 308833 deletions

32
.dockerignore Normal file
View File

@ -0,0 +1,32 @@
.idea
.git
Dockerfile
# Gradle
.gradle
build
apps/BOB/build
apps/addressbook/build
apps/desktopgui/build
apps/i2pcontrol/build
apps/i2psnark/build
apps/i2ptunnel/build
apps/imagegen/build
apps/jetty/build
apps/jrobin/build
apps/ministreaming/java/build
apps/ministreaming/build
apps/routerconsole/build
apps/sam/build
apps/streaming/build
apps/susidns/build
apps/susimail/build
apps/systray/build
core/java/build
core/build
installer/build
router/java/build
router/build
override.properties

34
.github/workflows/ant.yml vendored Normal file
View File

@ -0,0 +1,34 @@
# Mostly copied from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant
# zlatinb
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: GetText
run: sudo apt install gettext
- uses: actions/checkout@v2
- name: Set up JDK 8
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'temurin'
- name : Generate override.properties
run: |
rm -f override.properties
echo "build.built-by=GitHub Actions" >> override.properties
echo "noExe=true" >> override.properties
- name: build with Ant
run: ant distclean pkg
- name: Upload installer.jar
uses: actions/upload-artifact@v2
with:
name: I2P-install.jar-${{ github.sha }}
path: install.jar

8
.gitignore vendored
View File

@ -54,4 +54,12 @@ sloccount.sc
.settings/
# IDEA
*.iml
.idea
# Gradle
.gradle
# TODO: why does this file appear?
apps/routerconsole/jsp/favicon.ico
.tx
/*.sh

103
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,103 @@
image: openjdk:8-alpine
stages:
- test
- build
test:gradle:
stage: test
coverage: '/Total.*?([0-9]{1,3})%/'
before_script:
- apk add --no-cache grep
script:
- ./gradlew codeCoverageReport
# The actual output that will be parsed by the code coverage
- grep -oP "Total.*?%" build/reports/jacoco/html/index.html
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- .gradle
only:
- master
- merge_requests
- tags
test:ant:
stage: test
image: debian:buster-slim
variables:
SCALA: https://downloads.lightbend.com/scala/2.12.13/scala-2.12.13.deb
LIBPREFIX: /usr/share/scala/lib
LIB_SCALATEST: https://repo1.maven.org/maven2/org/scalatest/scalatest_2.12/3.0.4/scalatest_2.12-3.0.4.jar
LIB_SCALACTIC: https://repo1.maven.org/maven2/org/scalactic/scalactic_2.12/3.0.4/scalactic_2.12-3.0.4.jar
before_script:
# Fix bug installing openjdk-11-jdk-headless's manuals
- mkdir -p /usr/share/man/man1/
- apt-get update -q
- apt-get install -y wget gettext
ant default-jdk-headless
libmockito-java libhamcrest-java junit4
# Install specific version of scala
- wget -qO scala.deb "${SCALA}"
- dpkg -i scala.deb
# link to the scala libs with the name `ant test` expects
- ln -s "${LIBPREFIX}/scala-xml_2.12-1.0.6.jar" "${LIBPREFIX}/scala-xml.jar"
# Download required scala libs
- wget -qO "${LIBPREFIX}/scalactic.jar" "${LIB_SCALACTIC}"
- wget -qO "${LIBPREFIX}/scalatest.jar" "${LIB_SCALATEST}"
# Point ant to the right directories
- echo scalatest.libs=/usr/share/scala/lib > override.properties
- echo junit.home=/usr/share/java >> override.properties
- echo hamcrest.home=/usr/share/java >> override.properties
- echo mockito.home=/usr/share/java >> override.properties
- echo build.built-by=GitHub Actions >> override.properties
script:
- ant test
only:
- master
- merge_requests
- tags
# Make sure we can build a docker image
# It's cached for later jobs
build_docker:
stage: build
image: docker:24.0.7
services:
- docker:24.0.7-dind
script:
# Try to load latest branch image from local tar or from registry
- docker load -i ci-exports/$CI_COMMIT_REF_SLUG.tar || docker pull $CI_REGISTRY_IMAGE:latest || true
- docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:latest .
- mkdir -p ci-exports/
- echo docker save $CI_REGISTRY_IMAGE:latest > ci-exports/$CI_COMMIT_REF_SLUG.tar
variables:
# When using dind service, we need to instruct docker to talk with
# the daemon started inside of the service. The daemon is available
# with a network connection instead of the default
# /var/run/docker.sock socket. Docker 19.03 does this automatically
# by setting the DOCKER_HOST in
# https://github.com/docker-library/docker/blob/d45051476babc297257df490d22cbd806f1b11e4/19.03/docker-entrypoint.sh#L23-L29
#
# The 'docker' hostname is the alias of the service container as described at
# https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services.
#
# Specify to Docker where to create the certificates, Docker will
# create them automatically on boot, and will create
# `/certs/client` that will be shared between the service and job
# container, thanks to volume mount from config.toml
DOCKER_TLS_CERTDIR: "/certs"
# Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
# DOCKER_HOST: tcp://docker:2376
cache:
# The same key should be used across branches
key: "$CI_COMMIT_REF_SLUG"
paths:
- ci-exports/
only:
- master
- merge_requests
- tags

6
.idea/ant.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/build.xml" />
</component>
</project>

41
.idea/compiler.xml generated
View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="addressbook_main" target="1.7" />
<module name="addressbook_test" target="1.7" />
<module name="BOB_main" target="1.7" />
<module name="BOB_test" target="1.7" />
<module name="core_main" target="1.7" />
<module name="core_test" target="1.7" />
<module name="desktopgui_main" target="1.7" />
<module name="desktopgui_test" target="1.7" />
<module name="i2psnark_main" target="1.7" />
<module name="i2psnark_test" target="1.7" />
<module name="i2ptunnel_main" target="1.7" />
<module name="i2ptunnel_test" target="1.7" />
<module name="installer_main" target="1.7" />
<module name="installer_test" target="1.7" />
<module name="jetty_main" target="1.7" />
<module name="jetty_test" target="1.7" />
<module name="jrobin_main" target="1.7" />
<module name="jrobin_test" target="1.7" />
<module name="ministreaming_main" target="1.7" />
<module name="ministreaming_test" target="1.7" />
<module name="router_main" target="1.7" />
<module name="router_test" target="1.7" />
<module name="routerconsole_main" target="1.7" />
<module name="routerconsole_test" target="1.7" />
<module name="sam_main" target="1.7" />
<module name="sam_test" target="1.7" />
<module name="streaming_main" target="1.7" />
<module name="streaming_test" target="1.7" />
<module name="susidns_main" target="1.7" />
<module name="susidns_test" target="1.7" />
<module name="susimail_main" target="1.7" />
<module name="susimail_test" target="1.7" />
<module name="systray_main" target="1.7" />
<module name="systray_test" target="1.7" />
</bytecodeTargetLevel>
</component>
</project>

View File

@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="javax.servlet.jsp-2.2.0.v201112011158">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,22 +0,0 @@
<component name="libraryTable">
<library name="jettylib">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-security-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-servlets-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-deploy-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-util-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-servlet-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-http-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-xml-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-server-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/servlet-api-3.0.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-jmx-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-webapp-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-io-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-continuation-8.1.17.v20150415.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/lib/jetty-rewrite-8.1.17.v20150415.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="jrobin-1.5.9.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jrobin/jrobin-1.5.9.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,10 +0,0 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/susidns/src/lib/jstl.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/susidns/src/lib/standard.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="start">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jetty/jetty-distribution-8.1.17.v20150415/start.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="systray4j">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/systray/java/lib/systray4j.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="tomcat-coyote-util">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jetty/apache-tomcat/lib/tomcat-coyote-util.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="tomcat-lib">
<CLASSES>
<root url="jar://$PROJECT_DIR$/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/apache-tomcat-deployer/lib/el-api.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/apache-tomcat-deployer/lib/jasper.jar!/" />
<root url="jar://$PROJECT_DIR$/apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="wrapper">
<CLASSES>
<root url="jar://$PROJECT_DIR$/installer/lib/wrapper/all/wrapper.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="wrapper-win">
<CLASSES>
<root url="jar://$PROJECT_DIR$/installer/lib/wrapper/win-all/wrapper.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

57
.idea/misc.xml generated
View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ClientPropertiesManager">
<properties class="javax.swing.AbstractButton">
<property name="hideActionText" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JComponent">
<property name="html.disable" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JEditorPane">
<property name="JEditorPane.w3cLengthUnits" class="java.lang.Boolean" />
<property name="JEditorPane.honorDisplayProperties" class="java.lang.Boolean" />
<property name="charset" class="java.lang.String" />
</properties>
<properties class="javax.swing.JList">
<property name="List.isFileList" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JPasswordField">
<property name="JPasswordField.cutCopyAllowed" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JSlider">
<property name="Slider.paintThumbArrowShape" class="java.lang.Boolean" />
<property name="JSlider.isFilled" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JTable">
<property name="Table.isFileList" class="java.lang.Boolean" />
<property name="JTable.autoStartsEdit" class="java.lang.Boolean" />
<property name="terminateEditOnFocusLost" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JToolBar">
<property name="JToolBar.isRollover" class="java.lang.Boolean" />
</properties>
<properties class="javax.swing.JTree">
<property name="JTree.lineStyle" class="java.lang.String" />
</properties>
<properties class="javax.swing.text.JTextComponent">
<property name="caretAspectRatio" class="java.lang.Double" />
<property name="caretWidth" class="java.lang.Integer" />
</properties>
</component>
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build" />
</component>
</project>

80
.idea/modules.xml generated
View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/BOB/BOB.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/BOB/BOB.iml" group="apps/BOB" />
<module fileurl="file://$PROJECT_DIR$/apps/BOB/BOB.iml" filepath="$PROJECT_DIR$/apps/BOB/BOB.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/BOB/BOB_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/BOB/BOB_main.iml" group="apps/BOB" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/BOB/BOB_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/BOB/BOB_test.iml" group="apps/BOB" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook.iml" group="apps/addressbook" />
<module fileurl="file://$PROJECT_DIR$/apps/addressbook/addressbook.iml" filepath="$PROJECT_DIR$/apps/addressbook/addressbook.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook_main.iml" group="apps/addressbook" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/addressbook/addressbook_test.iml" group="apps/addressbook" />
<module fileurl="file://$PROJECT_DIR$/apps/admin/admin.iml" filepath="$PROJECT_DIR$/apps/admin/admin.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/apps.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/apps.iml" group="apps" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/core/core.iml" filepath="$PROJECT_DIR$/.idea/modules/core/core.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/core/core.iml" filepath="$PROJECT_DIR$/core/core.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/core/core_main.iml" filepath="$PROJECT_DIR$/.idea/modules/core/core_main.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/core/core_test.iml" filepath="$PROJECT_DIR$/.idea/modules/core/core_test.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui.iml" group="apps/desktopgui" />
<module fileurl="file://$PROJECT_DIR$/apps/desktopgui/desktopgui.iml" filepath="$PROJECT_DIR$/apps/desktopgui/desktopgui.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui_main.iml" group="apps/desktopgui" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/desktopgui/desktopgui_test.iml" group="apps/desktopgui" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/i2p.i2p.sl.iml" filepath="$PROJECT_DIR$/.idea/modules/i2p.i2p.sl.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark.iml" group="apps/i2psnark" />
<module fileurl="file://$PROJECT_DIR$/apps/i2psnark/i2psnark.iml" filepath="$PROJECT_DIR$/apps/i2psnark/i2psnark.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark_main.iml" group="apps/i2psnark" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2psnark/i2psnark_test.iml" group="apps/i2psnark" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel.iml" group="apps/i2ptunnel" />
<module fileurl="file://$PROJECT_DIR$/apps/i2ptunnel/i2ptunnel.iml" filepath="$PROJECT_DIR$/apps/i2ptunnel/i2ptunnel.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel_main.iml" group="apps/i2ptunnel" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/i2ptunnel/i2ptunnel_test.iml" group="apps/i2ptunnel" />
<module fileurl="file://$PROJECT_DIR$/apps/imagegen/identicon/identicon.iml" filepath="$PROJECT_DIR$/apps/imagegen/identicon/identicon.iml" />
<module fileurl="file://$PROJECT_DIR$/apps/imagegen/imagegen/imagegen.iml" filepath="$PROJECT_DIR$/apps/imagegen/imagegen/imagegen.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/installer/installer.iml" filepath="$PROJECT_DIR$/.idea/modules/installer/installer.iml" group="installer" />
<module fileurl="file://$PROJECT_DIR$/installer/installer.iml" filepath="$PROJECT_DIR$/installer/installer.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/installer/installer_main.iml" filepath="$PROJECT_DIR$/.idea/modules/installer/installer_main.iml" group="installer" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/installer/installer_test.iml" filepath="$PROJECT_DIR$/.idea/modules/installer/installer_test.iml" group="installer" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jetty/jetty.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jetty/jetty.iml" group="apps/jetty" />
<module fileurl="file://$PROJECT_DIR$/apps/jetty/jetty.iml" filepath="$PROJECT_DIR$/apps/jetty/jetty.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jetty/jetty_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jetty/jetty_main.iml" group="apps/jetty" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jetty/jetty_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jetty/jetty_test.iml" group="apps/jetty" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin.iml" group="apps/jrobin" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin_main.iml" group="apps/jrobin" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/jrobin/jrobin_test.iml" group="apps/jrobin" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming.iml" group="apps/ministreaming" />
<module fileurl="file://$PROJECT_DIR$/apps/ministreaming/ministreaming.iml" filepath="$PROJECT_DIR$/apps/ministreaming/ministreaming.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming_main.iml" group="apps/ministreaming" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/ministreaming/ministreaming_test.iml" group="apps/ministreaming" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/router/router.iml" filepath="$PROJECT_DIR$/.idea/modules/router/router.iml" group="router" />
<module fileurl="file://$PROJECT_DIR$/router/router.iml" filepath="$PROJECT_DIR$/router/router.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/router/router_main.iml" filepath="$PROJECT_DIR$/.idea/modules/router/router_main.iml" group="router" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/router/router_test.iml" filepath="$PROJECT_DIR$/.idea/modules/router/router_test.iml" group="router" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole.iml" group="apps/routerconsole" />
<module fileurl="file://$PROJECT_DIR$/apps/routerconsole/routerconsole.iml" filepath="$PROJECT_DIR$/apps/routerconsole/routerconsole.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole_main.iml" group="apps/routerconsole" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/routerconsole/routerconsole_test.iml" group="apps/routerconsole" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/sam/sam.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/sam/sam.iml" group="apps/sam" />
<module fileurl="file://$PROJECT_DIR$/apps/sam/sam.iml" filepath="$PROJECT_DIR$/apps/sam/sam.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/sam/sam_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/sam/sam_main.iml" group="apps/sam" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/sam/sam_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/sam/sam_test.iml" group="apps/sam" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/streaming/streaming.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/streaming/streaming.iml" group="apps/streaming" />
<module fileurl="file://$PROJECT_DIR$/apps/streaming/streaming.iml" filepath="$PROJECT_DIR$/apps/streaming/streaming.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/streaming/streaming_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/streaming/streaming_main.iml" group="apps/streaming" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/streaming/streaming_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/streaming/streaming_test.iml" group="apps/streaming" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susidns/susidns.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susidns/susidns.iml" group="apps/susidns" />
<module fileurl="file://$PROJECT_DIR$/apps/susidns/susidns.iml" filepath="$PROJECT_DIR$/apps/susidns/susidns.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susidns/susidns_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susidns/susidns_main.iml" group="apps/susidns" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susidns/susidns_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susidns/susidns_test.iml" group="apps/susidns" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susimail/susimail.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susimail/susimail.iml" group="apps/susimail" />
<module fileurl="file://$PROJECT_DIR$/apps/susimail/susimail.iml" filepath="$PROJECT_DIR$/apps/susimail/susimail.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susimail/susimail_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susimail/susimail_main.iml" group="apps/susimail" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/susimail/susimail_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/susimail/susimail_test.iml" group="apps/susimail" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/systray/systray.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/systray/systray.iml" group="apps/systray" />
<module fileurl="file://$PROJECT_DIR$/apps/systray/systray.iml" filepath="$PROJECT_DIR$/apps/systray/systray.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/systray/systray_main.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/systray/systray_main.iml" group="apps/systray" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/apps/systray/systray_test.iml" filepath="$PROJECT_DIR$/.idea/modules/apps/systray/systray_test.iml" group="apps/systray" />
<module fileurl="file://$PROJECT_DIR$/apps/imagegen/zxing/zxing.iml" filepath="$PROJECT_DIR$/apps/imagegen/zxing/zxing.iml" />
</modules>
</component>
</project>

View File

@ -1,6 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="updater" type="AntRunConfiguration" factoryName="Ant Target">
<antsettings antfile="file://$PROJECT_DIR$/build.xml" target="updater" />
<method />
</configuration>
</component>

View File

@ -1,90 +0,0 @@
# Just to try and prevent some noob disasters.
# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list
# Temporary/build files
_jsp\.java$
\.bz2$
\.tar$
\.class$
\.diff$
\.exe$
\.fba$
\.gz$
\.jar$
\.out$
\.patch$
\.sig$
\.sud$
\.su2$
.\su3$
\.tar$
\.war$
.\deb$
\.zip$
\.torrent$
^\.
~$
web-fragment.xml
web-out.xml
# Temporary/build dirs
^build$
^pkg-temp
/build$
/classes
/dist
^installer/resources/locale/mo
/tmp
^apps/jetty/jettylib
# MSVC files
core/c/jcpuid/msvc/*.opendb
core/c/jcpuid/msvc/*.pdb
core/c/jcpuid/msvc/*.sdf
core/c/jcpuid/msvc/*.user
# Debian-related
^debian/copyright
^.pc/
# Build property overrides
override.properties
# Launcher build paths
launchers/macosx/target
launchers/browserbundle/target
launchers/macosx/project/target
launchers/browserbundle/project/target
launchers/target
launchers/project/target
launchers/common/target
launchers/output
launchers/project/project
# Reporting
sloccount.sc
^reports/
# IDE project files
# Eclipse
/.classpath$
/.project$
/.settings
# IDEA
\.iml$
# Meeh stuff
target/scala-2.12
target/streams
project/target
launchers/macosx/version.h
launchers/macosx/project/project/target
launchers/macosx/I2PLauncher.xcodeproj/project.xcworkspace/xcuserdata
launchers/macosx/I2PLauncher.xcodeproj/xcuserdata
launchers/macosx/I2PLauncher.xcworkspace/xcuserdata
launchers/macosx/Sparkle.framework
launchers/macosx/I2PLauncher.app
launchers/macosx/releases.done
launchers/macosx/target

View File

@ -1,38 +1,18 @@
language: java
dist: bionic
jdk:
- oraclejdk11
- oraclejdk9
- openjdk12
- openjdk11
- openjdk10
- openjdk9
matrix:
include:
- jdk: oraclejdk8
- jdk: oraclejdk11
addons:
sonarcloud:
organization: "i2p"
before_install:
- export JAVA7_HOME=$(jdk_switcher home openjdk7)
- sed -i "1iplugins {\n id 'org.sonarqube' version '2.6.1'\n}\n" build.gradle
- sed -i "1iplugins {\n id 'org.sonarqube' version '3.0'\n}\n" build.gradle
- jdk: openjdk8
before_install:
- export JAVA7_HOME=$(jdk_switcher home openjdk7)
- jdk: openjdk7
sudo: required
before_install: # Work around missing crypto in openjdk7
- export JAVA7_HOME=$(jdk_switcher home openjdk7)
- sudo wget "https://bouncycastle.org/download/bcprov-ext-jdk15on-158.jar" -O "${JAVA_HOME}/jre/lib/ext/bcprov-ext-jdk15on-158.jar"
- sudo perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/$1.($2+1)/ge' /etc/java-7-openjdk/security/java.security
- echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | sudo tee -a /etc/java-7-openjdk/security/java.security
install:
- export TARGET_JAVA_HOME=$JAVA_HOME
- jdk_switcher use oraclejdk8
- ./gradlew assemble
allow_failures:
- jdk: openjdk12
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
@ -44,13 +24,11 @@ cache:
- $HOME/.sonar/cache/
- .gradle
env:
- SONAR_SCANNER_OPTS="-Xmx2048m"
script:
- |
if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ]; then
./gradlew sonarqube codeCoverageReport
else
./gradlew check codeCoverageReport
fi
- travis_wait 45 ./tests/scripts/travis.sh
after_success:
- bash <(curl -s https://codecov.io/bash)

View File

@ -1,4 +1,12 @@
[I2P.i2ptunnel]
;; warning - conversions for all Java bundles:
;; id->in, he->iw, iy, yi->ji
[main]
host = https://www.transifex.com
lang_map = ru_RU: ru, sv_SE: sv, tr_TR: tr, uk_UA: uk, zh_CN: zh, et_EE: et, id: in, he: iw
[o:otf:p:I2P:r:i2ptunnel]
file_filter = apps/i2ptunnel/locale/messages_<lang>.po
source_file = apps/i2ptunnel/locale/messages_en.po
source_lang = en
trans.ar = apps/i2ptunnel/locale/messages_ar.po
@ -6,6 +14,7 @@ trans.cs = apps/i2ptunnel/locale/messages_cs.po
trans.da = apps/i2ptunnel/locale/messages_da.po
trans.de = apps/i2ptunnel/locale/messages_de.po
trans.es = apps/i2ptunnel/locale/messages_es.po
trans.es_AR = apps/i2ptunnel/locale/messages_es_AR.po
trans.fa = apps/i2ptunnel/locale/messages_fa.po
trans.fi = apps/i2ptunnel/locale/messages_fi.po
trans.fr = apps/i2ptunnel/locale/messages_fr.po
@ -24,6 +33,7 @@ trans.pt_BR = apps/i2ptunnel/locale/messages_pt_BR.po
trans.ro = apps/i2ptunnel/locale/messages_ro.po
trans.ru_RU = apps/i2ptunnel/locale/messages_ru.po
trans.sk = apps/i2ptunnel/locale/messages_sk.po
trans.sq = apps/i2ptunnel/locale/messages_sq.po
trans.sv_SE = apps/i2ptunnel/locale/messages_sv.po
trans.tr_TR = apps/i2ptunnel/locale/messages_tr.po
trans.uk_UA = apps/i2ptunnel/locale/messages_uk.po
@ -31,7 +41,8 @@ trans.vi = apps/i2ptunnel/locale/messages_vi.po
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
trans.zh_TW = apps/i2ptunnel/locale/messages_zh_TW.po
[I2P.proxy]
[o:otf:p:I2P:r:proxy]
file_filter = apps/i2ptunnel/locale-proxy/messages_<lang>.po
source_file = apps/i2ptunnel/locale-proxy/messages_en.po
source_lang = en
trans.ar = apps/i2ptunnel/locale-proxy/messages_ar.po
@ -39,12 +50,15 @@ trans.cs = apps/i2ptunnel/locale-proxy/messages_cs.po
trans.de = apps/i2ptunnel/locale-proxy/messages_de.po
trans.el = apps/i2ptunnel/locale-proxy/messages_el.po
trans.es = apps/i2ptunnel/locale-proxy/messages_es.po
trans.es_AR = apps/i2ptunnel/locale-proxy/messages_es_AR.po
trans.fa = apps/i2ptunnel/locale-proxy/messages_fa.po
trans.fi = apps/i2ptunnel/locale-proxy/messages_fi.po
trans.fr = apps/i2ptunnel/locale-proxy/messages_fr.po
trans.hu = apps/i2ptunnel/locale-proxy/messages_hu.po
;; Java converts id to in
trans.id = apps/i2ptunnel/locale-proxy/messages_in.po
trans.it = apps/i2ptunnel/locale-proxy/messages_it.po
trans.ja = apps/i2ptunnel/locale-proxy/messages_ja.po
trans.ko = apps/i2ptunnel/locale-proxy/messages_ko.po
trans.nb = apps/i2ptunnel/locale-proxy/messages_nb.po
trans.nl = apps/i2ptunnel/locale-proxy/messages_nl.po
@ -60,17 +74,101 @@ trans.tr_TR = apps/i2ptunnel/locale-proxy/messages_tr.po
trans.uk_UA = apps/i2ptunnel/locale-proxy/messages_uk.po
trans.vi = apps/i2ptunnel/locale-proxy/messages_vi.po
trans.zh_CN = apps/i2ptunnel/locale-proxy/messages_zh.po
trans.zh_TW = apps/i2ptunnel/locale-proxy/messages_zh_TW.po
[I2P.routerconsole]
[o:otf:p:I2P:r:core]
file_filter = core/locale/messages_<lang>.po
type = PO
source_file = core/locale/messages_en.po
source_lang = en
trans.ar = core/locale/messages_ar.po
trans.az = core/locale/messages_az.po
trans.cs = core/locale/messages_cs.po
trans.da = core/locale/messages_da.po
trans.de = core/locale/messages_de.po
trans.el = core/locale/messages_el.po
trans.es = core/locale/messages_es.po
trans.et_EE = core/locale/messages_et.po
trans.fa = core/locale/messages_fa.po
trans.fi = core/locale/messages_fi.po
trans.fr = core/locale/messages_fr.po
trans.hu = core/locale/messages_hu.po
;; Java converts id to in
trans.id = core/locale/messages_in.po
trans.it = core/locale/messages_it.po
trans.ja = core/locale/messages_ja.po
trans.ko = core/locale/messages_ko.po
trans.ku = core/locale/messages_ku.po
trans.nb = core/locale/messages_nb.po
trans.nl = core/locale/messages_nl.po
trans.pl = core/locale/messages_pl.po
trans.pt = core/locale/messages_pt.po
trans.pt_BR = core/locale/messages_pt_BR.po
trans.ro = core/locale/messages_ro.po
trans.ru_RU = core/locale/messages_ru.po
trans.sl = core/locale/messages_sl.po
trans.sv_SE = core/locale/messages_sv.po
trans.tk = core/locale/messages_tk.po
trans.tr_TR = core/locale/messages_tr.po
trans.uk_UA = core/locale/messages_uk.po
trans.vi = core/locale/messages_vi.po
trans.zh_CN = core/locale/messages_zh.po
trans.zh_TW = core/locale/messages_zh_TW.po
[o:otf:p:I2P:r:router]
file_filter = router/locale/messages_<lang>.po
type = PO
source_file = router/locale/messages_en.po
source_lang = en
trans.ar = router/locale/messages_ar.po
trans.az = router/locale/messages_az.po
trans.cs = router/locale/messages_cs.po
trans.da = router/locale/messages_da.po
trans.de = router/locale/messages_de.po
trans.el = router/locale/messages_el.po
trans.es = router/locale/messages_es.po
trans.es_AR = router/locale/messages_es_AR.po
trans.et_EE = router/locale/messages_et.po
trans.fa = router/locale/messages_fa.po
trans.fi = router/locale/messages_fi.po
trans.fr = router/locale/messages_fr.po
trans.hu = router/locale/messages_hu.po
;; Java converts id to in
trans.id = router/locale/messages_in.po
trans.it = router/locale/messages_it.po
trans.ja = router/locale/messages_ja.po
trans.ko = router/locale/messages_ko.po
trans.ku = router/locale/messages_ku.po
trans.nb = router/locale/messages_nb.po
trans.nl = router/locale/messages_nl.po
trans.pl = router/locale/messages_pl.po
trans.pt = router/locale/messages_pt.po
trans.pt_BR = router/locale/messages_pt_BR.po
trans.ro = router/locale/messages_ro.po
trans.ru_RU = router/locale/messages_ru.po
trans.sl = router/locale/messages_sl.po
trans.sv_SE = router/locale/messages_sv.po
trans.tk = router/locale/messages_tk.po
trans.tr_TR = router/locale/messages_tr.po
trans.uk_UA = router/locale/messages_uk.po
trans.vi = router/locale/messages_vi.po
trans.zh_CN = router/locale/messages_zh.po
trans.zh_TW = router/locale/messages_zh_TW.po
[o:otf:p:I2P:r:routerconsole]
file_filter = apps/routerconsole/locale/messages_<lang>.po
source_file = apps/routerconsole/locale/messages_en.po
source_lang = en
trans.ar = apps/routerconsole/locale/messages_ar.po
trans.az = apps/routerconsole/locale/messages_az.po
trans.cs = apps/routerconsole/locale/messages_cs.po
trans.da = apps/routerconsole/locale/messages_da.po
trans.de = apps/routerconsole/locale/messages_de.po
trans.el = apps/routerconsole/locale/messages_el.po
trans.es = apps/routerconsole/locale/messages_es.po
trans.es_AR = apps/routerconsole/locale/messages_es_AR.po
trans.et_EE = apps/routerconsole/locale/messages_et.po
trans.fa = apps/routerconsole/locale/messages_fa.po
trans.fi = apps/routerconsole/locale/messages_fi.po
trans.fr = apps/routerconsole/locale/messages_fr.po
trans.hu = apps/routerconsole/locale/messages_hu.po
@ -93,7 +191,8 @@ trans.vi = apps/routerconsole/locale/messages_vi.po
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
trans.zh_TW = apps/routerconsole/locale/messages_zh_TW.po
[I2P.welcome]
[o:otf:p:I2P:r:welcome]
file_filter = apps/routerconsole/locale-news/messages_<lang>.po
source_file = apps/routerconsole/locale-news/messages_en.po
source_lang = en
trans.ar = apps/routerconsole/locale-news/messages_ar.po
@ -102,15 +201,20 @@ trans.cs = apps/routerconsole/locale-news/messages_cs.po
trans.de = apps/routerconsole/locale-news/messages_de.po
trans.el = apps/routerconsole/locale-news/messages_el.po
trans.es = apps/routerconsole/locale-news/messages_es.po
trans.es_AR = apps/routerconsole/locale-news/messages_es_AR.po
trans.fa = apps/routerconsole/locale-news/messages_fa.po
trans.fi = apps/routerconsole/locale-news/messages_fi.po
trans.fr = apps/routerconsole/locale-news/messages_fr.po
trans.gl = apps/routerconsole/locale-news/messages_gl.po
trans.he = apps/routerconsole/locale-news/messages_he.po
;; Java converts he to iw
trans.he = apps/routerconsole/locale-news/messages_iw.po
trans.hu = apps/routerconsole/locale-news/messages_hu.po
;; Java converts id to in
trans.id = apps/routerconsole/locale-news/messages_in.po
trans.it = apps/routerconsole/locale-news/messages_it.po
trans.ja = apps/routerconsole/locale-news/messages_ja.po
trans.ko = apps/routerconsole/locale-news/messages_ko.po
trans.ku = apps/routerconsole/locale-news/messages_ku.po
trans.mg = apps/routerconsole/locale-news/messages_mg.po
trans.nb = apps/routerconsole/locale-news/messages_nb.po
trans.nl = apps/routerconsole/locale-news/messages_nl.po
@ -120,37 +224,47 @@ trans.pt_BR = apps/routerconsole/locale-news/messages_pt_BR.po
trans.ro = apps/routerconsole/locale-news/messages_ro.po
trans.ru_RU = apps/routerconsole/locale-news/messages_ru.po
trans.sk = apps/routerconsole/locale-news/messages_sk.po
trans.sl = apps/routerconsole/locale-news/messages_sl.po
trans.sq = apps/routerconsole/locale-news/messages_sq.po
trans.sr = apps/routerconsole/locale-news/messages_sr.po
trans.sv_SE = apps/routerconsole/locale-news/messages_sv.po
trans.tk = apps/routerconsole/locale-news/messages_tk.po
trans.tr_TR = apps/routerconsole/locale-news/messages_tr.po
trans.uk_UA = apps/routerconsole/locale-news/messages_uk.po
trans.zh_CN = apps/routerconsole/locale-news/messages_zh.po
trans.zh_TW = apps/routerconsole/locale-news/messages_zh_TW.po
[I2P.countries]
[o:otf:p:I2P:r:countries]
file_filter = apps/routerconsole/locale-countries/messages_<lang>.po
type = PO
source_file = apps/routerconsole/locale-countries/messages_en.po
source_lang = en
trans.ar = apps/routerconsole/locale-countries/messages_ar.po
trans.az = apps/routerconsole/locale-countries/messages_az.po
trans.bg = apps/routerconsole/locale-countries/messages_bg.po
trans.ca = apps/routerconsole/locale-countries/messages_ca.po
trans.cs = apps/routerconsole/locale-countries/messages_cs.po
trans.da = apps/routerconsole/locale-countries/messages_da.po
trans.de = apps/routerconsole/locale-countries/messages_de.po
trans.el = apps/routerconsole/locale-countries/messages_el.po
trans.es = apps/routerconsole/locale-countries/messages_es.po
trans.es_AR = apps/routerconsole/locale-countries/messages_es_AR.po
trans.et_EE = apps/routerconsole/locale-countries/messages_et.po
trans.fa = apps/routerconsole/locale-countries/messages_fa.po
trans.fi = apps/routerconsole/locale-countries/messages_fi.po
trans.fr = apps/routerconsole/locale-countries/messages_fr.po
trans.gl = apps/routerconsole/locale-countries/messages_gl.po
trans.hi = apps/routerconsole/locale-countries/messages_hi.po
trans.hr = apps/routerconsole/locale-countries/messages_hr.po
trans.hu = apps/routerconsole/locale-countries/messages_hu.po
;; Java converts he to iw
trans.he = apps/routerconsole/locale-countries/messages_iw.po
;; Java converts id to in
trans.id = apps/routerconsole/locale-countries/messages_in.po
trans.it = apps/routerconsole/locale-countries/messages_it.po
trans.ja = apps/routerconsole/locale-countries/messages_ja.po
trans.ko = apps/routerconsole/locale-countries/messages_ko.po
trans.ku = apps/routerconsole/locale-countries/messages_ku.po
trans.mg = apps/routerconsole/locale-countries/messages_mg.po
trans.nb = apps/routerconsole/locale-countries/messages_nb.po
trans.nl = apps/routerconsole/locale-countries/messages_nl.po
@ -160,22 +274,28 @@ trans.pt_BR = apps/routerconsole/locale-countries/messages_pt_BR.po
trans.ro = apps/routerconsole/locale-countries/messages_ro.po
trans.ru_RU = apps/routerconsole/locale-countries/messages_ru.po
trans.sk = apps/routerconsole/locale-countries/messages_sk.po
trans.sl = apps/routerconsole/locale-countries/messages_sl.po
trans.sq = apps/routerconsole/locale-countries/messages_sq.po
trans.sr = apps/routerconsole/locale-countries/messages_sr.po
trans.sv_SE = apps/routerconsole/locale-countries/messages_sv.po
trans.tk = apps/routerconsole/locale-countries/messages_tk.po
trans.tr_TR = apps/routerconsole/locale-countries/messages_tr.po
trans.uk_UA = apps/routerconsole/locale-countries/messages_uk.po
trans.vi = apps/routerconsole/locale-countries/messages_vi.po
trans.zh_CN = apps/routerconsole/locale-countries/messages_zh.po
trans.zh_TW = apps/routerconsole/locale-countries/messages_zh_TW.po
[I2P.i2psnark]
[o:otf:p:I2P:r:i2psnark]
file_filter = apps/i2psnark/locale/messages_<lang>.po
source_file = apps/i2psnark/locale/messages_en.po
source_lang = en
trans.ar = apps/i2psnark/locale/messages_ar.po
trans.cs = apps/i2psnark/locale/messages_cs.po
trans.da = apps/i2psnark/locale/messages_da.po
trans.de = apps/i2psnark/locale/messages_de.po
trans.el = apps/i2psnark/locale/messages_el.po
trans.es = apps/i2psnark/locale/messages_es.po
trans.es_AR = apps/i2psnark/locale/messages_es_AR.po
trans.fa = apps/i2psnark/locale/messages_fa.po
trans.fi = apps/i2psnark/locale/messages_fi.po
trans.fr = apps/i2psnark/locale/messages_fr.po
@ -199,8 +319,10 @@ trans.tr_TR = apps/i2psnark/locale/messages_tr.po
trans.uk_UA = apps/i2psnark/locale/messages_uk.po
trans.vi = apps/i2psnark/locale/messages_vi.po
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
trans.zh_TW = apps/i2psnark/locale/messages_zh_TW.po
[I2P.susidns]
[o:otf:p:I2P:r:susidns]
file_filter = apps/susidns/locale/messages_<lang>.po
source_file = apps/susidns/locale/messages_en.po
source_lang = en
trans.ar = apps/susidns/locale/messages_ar.po
@ -209,6 +331,8 @@ trans.da = apps/susidns/locale/messages_da.po
trans.de = apps/susidns/locale/messages_de.po
trans.el = apps/susidns/locale/messages_el.po
trans.es = apps/susidns/locale/messages_es.po
trans.es_AR = apps/susidns/locale/messages_es_AR.po
trans.fa = apps/susidns/locale/messages_fa.po
trans.fi = apps/susidns/locale/messages_fi.po
trans.fr = apps/susidns/locale/messages_fr.po
trans.gl = apps/susidns/locale/messages_gl.po
@ -231,7 +355,8 @@ trans.vi = apps/susidns/locale/messages_vi.po
trans.zh_CN = apps/susidns/locale/messages_zh.po
trans.zh_TW = apps/susidns/locale/messages_zh_TW.po
[I2P.desktopgui]
[o:otf:p:I2P:r:desktopgui]
file_filter = apps/desktopgui/locale/messages_<lang>.po
source_file = apps/desktopgui/locale/messages_en.po
source_lang = en
trans.ar = apps/desktopgui/locale/messages_ar.po
@ -243,6 +368,7 @@ trans.da = apps/desktopgui/locale/messages_da.po
trans.de = apps/desktopgui/locale/messages_de.po
trans.el = apps/desktopgui/locale/messages_el.po
trans.es = apps/desktopgui/locale/messages_es.po
trans.es_AR = apps/desktopgui/locale/messages_es_AR.po
trans.fa = apps/desktopgui/locale/messages_fa.po
trans.fi = apps/desktopgui/locale/messages_fi.po
trans.fr = apps/desktopgui/locale/messages_fr.po
@ -253,6 +379,7 @@ trans.id = apps/desktopgui/locale/messages_in.po
trans.it = apps/desktopgui/locale/messages_it.po
trans.ja = apps/desktopgui/locale/messages_ja.po
trans.ko = apps/desktopgui/locale/messages_ko.po
trans.ku = apps/desktopgui/locale/messages_ku.po
trans.mg = apps/desktopgui/locale/messages_mg.po
trans.nb = apps/desktopgui/locale/messages_nb.po
trans.nl = apps/desktopgui/locale/messages_nl.po
@ -262,28 +389,39 @@ trans.pt_BR = apps/desktopgui/locale/messages_pt_BR.po
trans.ro = apps/desktopgui/locale/messages_ro.po
trans.ru_RU = apps/desktopgui/locale/messages_ru.po
trans.sk = apps/desktopgui/locale/messages_sk.po
trans.sl = apps/desktopgui/locale/messages_sl.po
trans.sr = apps/desktopgui/locale/messages_sr.po
trans.sv_SE = apps/desktopgui/locale/messages_sv.po
trans.sq = apps/desktopgui/locale/messages_sq.po
trans.uk_UA = apps/desktopgui/locale/messages_uk.po
trans.tk = apps/desktopgui/locale/messages_tk.po
trans.tr_TR = apps/desktopgui/locale/messages_tr.po
trans.uk_UA = apps/desktopgui/locale/messages_uk.po
trans.vi = apps/desktopgui/locale/messages_vi.po
trans.zh_CN = apps/desktopgui/locale/messages_zh.po
trans.zh_TW = apps/desktopgui/locale/messages_zh_TW.po
[I2P.susimail]
[o:otf:p:I2P:r:susimail]
file_filter = apps/susimail/locale/messages_<lang>.po
source_file = apps/susimail/locale/messages_en.po
source_lang = en
trans.ar = apps/susimail/locale/messages_ar.po
trans.az = apps/susimail/locale/messages_az.po
trans.bg = apps/susimail/locale/messages_bg.po
trans.ca = apps/susimail/locale/messages_ca.po
trans.cs = apps/susimail/locale/messages_cs.po
trans.da = apps/susimail/locale/messages_da.po
trans.de = apps/susimail/locale/messages_de.po
trans.el = apps/susimail/locale/messages_el.po
trans.es = apps/susimail/locale/messages_es.po
trans.es_AR = apps/susimail/locale/messages_es_AR.po
trans.fa = apps/susimail/locale/messages_fa.po
trans.fi = apps/susimail/locale/messages_fi.po
trans.fr = apps/susimail/locale/messages_fr.po
trans.gl = apps/susimail/locale/messages_gl.po
trans.hr = apps/susimail/locale/messages_hr.po
trans.hu = apps/susimail/locale/messages_hu.po
;; Java converts he to iw
trans.he = apps/susimail/locale/messages_iw.po
;; Java converts id to in
trans.id = apps/susimail/locale/messages_in.po
trans.it = apps/susimail/locale/messages_it.po
@ -299,6 +437,7 @@ trans.ro = apps/susimail/locale/messages_ro.po
trans.ru_RU = apps/susimail/locale/messages_ru.po
trans.sk = apps/susimail/locale/messages_sk.po
trans.sq = apps/susimail/locale/messages_sq.po
trans.sr = apps/susimail/locale/messages_sr.po
trans.sv_SE = apps/susimail/locale/messages_sv.po
trans.tr_TR = apps/susimail/locale/messages_tr.po
trans.uk_UA = apps/susimail/locale/messages_uk.po
@ -306,7 +445,8 @@ trans.vi = apps/susimail/locale/messages_vi.po
trans.zh_CN = apps/susimail/locale/messages_zh.po
trans.zh_TW = apps/susimail/locale/messages_zh_TW.po
[I2P.debconf]
[o:otf:p:I2P:r:debconf]
file_filter = debian/po/<lang>.po
source_file = debian/po/templates.pot
source_lang = en
trans.ar = debian/po/ar.po
@ -315,6 +455,7 @@ trans.cs = debian/po/cs.po
trans.de = debian/po/de.po
trans.el = debian/po/el.po
trans.es = debian/po/es.po
trans.es_AR = debian/po/es_AR.po
trans.fi = debian/po/fi.po
trans.fr = debian/po/fr.po
trans.gl = debian/po/gl.po
@ -331,14 +472,17 @@ trans.pt_BR = debian/po/pt_BR.po
trans.ro = debian/po/ro.po
trans.ru_RU = debian/po/ru.po
trans.sk = debian/po/sk.po
trans.sl = debian/po/sl.po
trans.sq = debian/po/sq.po
trans.sv_SE = debian/po/sv.po
trans.tk = debian/po/tk.po
trans.tr_TR = debian/po/tr.po
trans.uk_UA = debian/po/uk.po
trans.zh_CN = debian/po/zh.po
trans.zh_TW = debian/po/zh_TW.po
[I2P.i2prouter-script]
[o:otf:p:I2P:r:i2prouter-script]
file_filter = installer/resources/locale/po/messages_<lang>.po
source_file = installer/resources/locale/po/messages_en.po
source_lang = en
trans.ar = installer/resources/locale/po/messages_ar.po
@ -346,6 +490,7 @@ trans.az = installer/resources/locale/po/messages_az.po
trans.ca = installer/resources/locale/po/messages_ca.po
trans.de = installer/resources/locale/po/messages_de.po
trans.es = installer/resources/locale/po/messages_es.po
trans.es_AR = installer/resources/locale/po/messages_es_AR.po
trans.fi = installer/resources/locale/po/messages_fi.po
trans.fr = installer/resources/locale/po/messages_fr.po
trans.id = installer/resources/locale/po/messages_id.po
@ -364,8 +509,9 @@ trans.sv_SE = installer/resources/locale/po/messages_sv.po
trans.tr_TR = installer/resources/locale/po/messages_tr.po
trans.uk_UA = installer/resources/locale/po/messages_uk.po
trans.zh_CN = installer/resources/locale/po/messages_zh.po
trans.zh_TW = installer/resources/locale/po/messages_zh_TW.po
[I2P.getopt]
[o:otf:p:I2P:r:getopt]
;;
;; Java properties files (when not read with our DataHelper methods) must be ISO-8859-1 encoded.
;; See https://docs.oracle.com/javase/6/docs/api/java/util/Properties.html
@ -382,6 +528,7 @@ trans.zh_CN = installer/resources/locale/po/messages_zh.po
;; and should be escaped using native2ascii after downloading:
;; gl, pt, pt_BR, sq, sv, tr
;;
file_filter = core/java/src/gnu/getopt/MessagesBundle_<lang>.properties
source_file = core/java/src/gnu/getopt/MessagesBundle.properties
source_lang = en
type = PROPERTIES
@ -390,6 +537,7 @@ trans.az = core/java/src/gnu/getopt/MessagesBundle_az.properties
trans.cs = core/java/src/gnu/getopt/MessagesBundle_cs.properties
trans.de = core/java/src/gnu/getopt/MessagesBundle_de.properties
trans.es = core/java/src/gnu/getopt/MessagesBundle_es.properties
trans.es_AR = core/java/src/gnu/getopt/MessagesBundle_es_AR.properties
trans.fi = core/java/src/gnu/getopt/MessagesBundle_fi.properties
trans.fr = core/java/src/gnu/getopt/MessagesBundle_fr.properties
trans.gl = core/java/src/gnu/getopt/MessagesBundle_gl.properties
@ -399,6 +547,7 @@ trans.id = core/java/src/gnu/getopt/MessagesBundle_in.properties
trans.it = core/java/src/gnu/getopt/MessagesBundle_it.properties
trans.ja = core/java/src/gnu/getopt/MessagesBundle_ja.properties
trans.ko = core/java/src/gnu/getopt/MessagesBundle_ko.properties
trans.ku = core/java/src/gnu/getopt/MessagesBundle_ku.properties
trans.nb = core/java/src/gnu/getopt/MessagesBundle_nb.properties
trans.nl = core/java/src/gnu/getopt/MessagesBundle_nl.properties
trans.pl = core/java/src/gnu/getopt/MessagesBundle_pl.properties
@ -407,6 +556,7 @@ trans.pt_BR = core/java/src/gnu/getopt/MessagesBundle_pt_BR.properties
trans.ro = core/java/src/gnu/getopt/MessagesBundle_ro.properties
trans.ru_RU = core/java/src/gnu/getopt/MessagesBundle_ru.properties
trans.sk = core/java/src/gnu/getopt/MessagesBundle_sk.properties
trans.sl = core/java/src/gnu/getopt/MessagesBundle_sl.properties
trans.sq = core/java/src/gnu/getopt/MessagesBundle_sq.properties
trans.sr = core/java/src/gnu/getopt/MessagesBundle_sr.properties
trans.sv_SE = core/java/src/gnu/getopt/MessagesBundle_sv.properties
@ -415,7 +565,8 @@ trans.uk_UA = core/java/src/gnu/getopt/MessagesBundle_uk.properties
trans.zh_CN = core/java/src/gnu/getopt/MessagesBundle_zh.properties
trans.zh_TW = core/java/src/gnu/getopt/MessagesBundle_zh_TW.properties
[I2P.streaming]
[o:otf:p:I2P:r:streaming]
file_filter = apps/ministreaming/locale/messages_<lang>.po
source_file = apps/ministreaming/locale/messages_en.po
source_lang = en
trans.ar = apps/ministreaming/locale/messages_ar.po
@ -424,9 +575,12 @@ trans.ca = apps/ministreaming/locale/messages_ca.po
trans.cs = apps/ministreaming/locale/messages_cs.po
trans.de = apps/ministreaming/locale/messages_de.po
trans.es = apps/ministreaming/locale/messages_es.po
trans.es_AR = apps/ministreaming/locale/messages_es_AR.po
trans.fa = apps/ministreaming/locale/messages_fa.po
trans.fi = apps/ministreaming/locale/messages_fi.po
trans.fr = apps/ministreaming/locale/messages_fr.po
trans.gl = apps/ministreaming/locale/messages_gl.po
trans.hu = apps/ministreaming/locale/messages_hu.po
;; Java converts id to in
trans.id = apps/ministreaming/locale/messages_in.po
trans.it = apps/ministreaming/locale/messages_it.po
@ -438,15 +592,20 @@ trans.pt = apps/ministreaming/locale/messages_pt.po
trans.pt_BR = apps/ministreaming/locale/messages_pt_BR.po
trans.ro = apps/ministreaming/locale/messages_ro.po
trans.ru_RU = apps/ministreaming/locale/messages_ru.po
trans.sl = apps/ministreaming/locale/messages_sl.po
trans.sv_SE = apps/ministreaming/locale/messages_sv.po
trans.tk = apps/ministreaming/locale/messages_tk.po
trans.tr_TR = apps/ministreaming/locale/messages_tr.po
trans.uk_UA = apps/ministreaming/locale/messages_uk.po
trans.zh_CN = apps/ministreaming/locale/messages_zh.po
trans.zh_TW = apps/ministreaming/locale/messages_zh_TW.po
[I2P.manpages]
[o:otf:p:I2P:r:manpages]
;;
;; after adding languages here, add to debian/*.manpages also
;; You must run installer/resources/poupdate-man.sh first.
;;
file_filter = installer/resources/locale-man/man_<lang>.po
type = PO
source_file = installer/resources/locale-man/man.pot
source_lang = en
@ -454,34 +613,44 @@ trans.ar = installer/resources/locale-man/man_ar.po
trans.az = installer/resources/locale-man/man_az.po
trans.de = installer/resources/locale-man/man_de.po
trans.es = installer/resources/locale-man/man_es.po
trans.es_AR = installer/resources/locale-man/man_es_AR.po
trans.fi = installer/resources/locale-man/man_fi.po
trans.fr = installer/resources/locale-man/man_fr.po
trans.hu = installer/resources/locale-man/man_hu.po
trans.id = installer/resources/locale-man/man_id.po
trans.it = installer/resources/locale-man/man_it.po
trans.ja = installer/resources/locale-man/man_ja.po
trans.ko = installer/resources/locale-man/man_ko.po
trans.nl = installer/resources/locale-man/man_nl.po
trans.pl = installer/resources/locale-man/man_pl.po
trans.pt = installer/resources/locale-man/man_pt.po
trans.pt_BR = installer/resources/locale-man/man_pt_BR.po
trans.ro = installer/resources/locale-man/man_ro.po
trans.ru_RU = installer/resources/locale-man/man_ru.po
trans.sv_SE = installer/resources/locale-man/man_sv.po
trans.tr_TR = installer/resources/locale-man/man_tr.po
trans.zh_CN = installer/resources/locale-man/man_zh.po
trans.zh_TW = installer/resources/locale-man/man_zh_TW.po
[I2P.eepsite]
[o:otf:p:I2P:r:eepsite]
;;
;; For any new translations, add links in installer/resources/eepsite/docroot/help/index.html
;; and copy new flags in build.xml copyflags-unlesspkg target,
;; and add to debian/i2p-router.links and debian-alt/*/i2p-router.links
;;
file_filter = installer/resources/eepsite/docroot/help/index_<lang>.po
type = HTML
source_file = installer/resources/eepsite/docroot/help/index.html
source_lang = en
trans.ar = installer/resources/eepsite/docroot/help/index_ar.html
;; File contains local changes to fix RTL issues.
;; Merge locally or make changes on TX side before re-enabling
;;trans.ar = installer/resources/eepsite/docroot/help/index_ar.html
trans.az = installer/resources/eepsite/docroot/help/index_az.html
trans.de = installer/resources/eepsite/docroot/help/index_de.html
trans.el = installer/resources/eepsite/docroot/help/index_el.html
;; not yet translated on TX, use old page
;;trans.es = installer/resources/eepsite/docroot/help/index_es.html
trans.fa = installer/resources/eepsite/docroot/help/index_fa.html
trans.fr = installer/resources/eepsite/docroot/help/index_fr.html
trans.hu = installer/resources/eepsite/docroot/help/index_hu.html
;; Java converts id to in
@ -491,32 +660,39 @@ trans.it = installer/resources/eepsite/docroot/help/index_it.html
;;trans.nl = installer/resources/eepsite/docroot/help/index_nl.html
trans.pl = installer/resources/eepsite/docroot/help/index_pl.html
trans.pt = installer/resources/eepsite/docroot/help/index_pt.html
trans.ro = installer/resources/eepsite/docroot/help/index_ro.html
trans.ru_RU = installer/resources/eepsite/docroot/help/index_ru.html
;; not yet translated on TX, use old page
;;trans.sv_SE = installer/resources/eepsite/docroot/help/index_sv.html
trans.sv_SE = installer/resources/eepsite/docroot/help/index_sv.html
trans.tr_TR = installer/resources/eepsite/docroot/help/index_tr.html
;; not yet translated on TX, use old page
;;trans.zh_CN = installer/resources/eepsite/docroot/help/index_zh.html
trans.uk_UA = installer/resources/eepsite/docroot/help/index_uk.html
trans.zh_CN = installer/resources/eepsite/docroot/help/index_zh.html
[I2P.readme]
[o:otf:p:I2P:r:readme]
;;
;; Text on /console
;;
;; NOTE: No support for country suffixes right now.
;; See ResourceHelper.java
;;
file_filter = apps/routerconsole/resources/docs/readme_<lang>.html
type = HTML
source_file = installer/resources/readme/readme.html
source_file = apps/routerconsole/resources/docs/readme.html
source_lang = en
trans.ar = installer/resources/readme/readme_ar.html
trans.de = installer/resources/readme/readme_de.html
trans.ar = apps/routerconsole/resources/docs/readme_ar.html
trans.de = apps/routerconsole/resources/docs/readme_de.html
trans.fr = apps/routerconsole/resources/docs/readme_fr.html
trans.hu = apps/routerconsole/resources/docs/readme_hu.html
;; Java converts id to in
trans.id = installer/resources/readme/readme_in.html
trans.it = installer/resources/readme/readme_it.html
trans.ja = installer/resources/readme/readme_ja.html
trans.pl = installer/resources/readme/readme_pl.html
trans.pt = installer/resources/readme/readme_pt.html
trans.ro = installer/resources/readme/readme_ro.html
trans.ru_RU = installer/resources/readme/readme_ru.html
trans.tr_TR = installer/resources/readme/readme_tr.html
[main]
host = https://www.transifex.com
trans.id = apps/routerconsole/resources/docs/readme_in.html
trans.it = apps/routerconsole/resources/docs/readme_it.html
trans.ja = apps/routerconsole/resources/docs/readme_ja.html
trans.pl = apps/routerconsole/resources/docs/readme_pl.html
trans.pt = apps/routerconsole/resources/docs/readme_pt.html
trans.ro = apps/routerconsole/resources/docs/readme_ro.html
trans.ru_RU = apps/routerconsole/resources/docs/readme_ru.html
trans.sl = apps/routerconsole/resources/docs/readme_sl.html
trans.tr_TR = apps/routerconsole/resources/docs/readme_tr.html
trans.uk_UA = apps/routerconsole/resources/docs/readme_uk.html
trans.zh_CN = apps/routerconsole/resources/docs/readme_zh.html
trans.zh_TW = apps/routerconsole/resources/docs/readme_zh_TW.html

View File

@ -1,14 +0,0 @@
#!/bin/sh
export JAVA_HOME=/opt/jdk/jre
# Ensure user rights
chown -R i2p:nobody /opt/i2p
chmod -R u+rwx /opt/i2p
gosu i2p /opt/i2p/i2psvc /opt/i2p/wrapper.config wrapper.pidfile=/var/tmp/i2p.pid \
wrapper.name=i2p \
wrapper.displayname="I2P Service" \
wrapper.statusfile=/var/tmp/i2p.status \
wrapper.java.statusfile=/var/tmp/i2p.java.status \
wrapper.logfile=/var/tmp/wrapper.log

View File

@ -1,7 +0,0 @@
#!/usr/bin/expect
set timeout 15;
spawn java -jar /tmp/i2pinstall.jar -console
expect {
-re ".*press 1 to continue, 2 to quit, 3 to redisplay" {send "1\r"; exp_continue;}
-re "Select target path *" {send "/opt/i2p\r"; exp_continue;}
}

93
Docker.md Normal file
View File

@ -0,0 +1,93 @@
# I2P in Docker
### Very quick start
If you just want to give I2P a quick try or are using it on a home network, follow these steps:
1. Create two directories `i2pconfig` and `i2ptorrents`
2. Copy the following text and save it in a file `docker-compose.yml`
```
version: "3.5"
services:
i2p:
image: geti2p/i2p
ports:
- 127.0.0.1:4444:4444
- 127.0.0.1:6668:6668
- 127.0.0.1:7657:7657
- 54321:12345
- 54321:12345/udp
volumes:
- ./i2pconfig:/i2p/.i2p
- ./i2ptorrents:/i2psnark
```
3. Execute `docker-compose up`
4. Start a browser and go to `http://127.0.0.1:7657` to complete the setup wizard.
Note that this quick-start approach is not recommended for production deployments on remote servers. Please read the rest of this document for more information.
### Building an image
There is an i2P image available over at [DockerHub](https://hub.docker.com). If you do not want to use that one, you can build one yourself:
```
docker build -t geti2p/i2p .
```
### Running a container
#### Environment Variables
It is possible to set the IP address where the I2P router is accessible by setting
the `IP_ADDR` environment variable in your `docker run` command or your `docker-compose`
file. For example, if you want to make your I2P router listen on all addresses, then
you should pass `-e IP_ADDR=0.0.0.0` to your `docker run` command.
It is also possible to configure the memory available to the I2P router using
environment variables. To do this, use the: `JVM_XMX` environment variable by passing,
for example, `-e JVM_XMX=256m`.
#### Volumes
The container requires a volume for the configuration data to be mounted. Optionally, you can mount a separate volume for torrent ("i2psnark") downloads. See the example below.
#### Memory usage
By the default the image limits the memory available to the Java heap to 512MB. You can override that with the `JVM_XMX` environment variable.
#### Ports
There are several ports which are exposed by the image. You can choose which ones to publish depending on your specific needs.
|Port|Interface|Description|TCP/UDP|
|---|---|---|---|
|4444|127.0.0.1|HTTP Proxy|TCP|
|4445|127.0.0.1|HTTPS Proxy|TCP|
|6668|127.0.0.1|IRC Proxy|TCP|
|7654|127.0.0.1|I2CP Protocol|TCP|
|7656|127.0.0.1|SAM Bridge TCP|TCP|
|7657|127.0.0.1|Router console|TCP|
|7658|127.0.0.1|I2P Site|TCP|
|7659|127.0.0.1|SMTP Proxy|TCP|
|7660|127.0.0.1|POP Proxy|TCP|
|7652|LAN interface|UPnP|TCP|
|7653|LAN interface|UPnP|UDP|
|12345|0.0.0.0|I2NP Protocol|TCP and UDP|
You probably want at least the Router Console (7657) and the HTTP Proxy (4444). If you want I2P to be able to receive incoming connections from the internet, and hence not think it's firewalled, publish the I2NP Protocol port (12345) - but make sure you publish to a different random port, otherwise others may be able to guess you're running I2P in a Docker image.
#### Networking
A best-practices guide for cloud deployments is beyond the scope of this document, but in general you should try to minimize the number of published ports, while exposing only the `I2NP` ports to the internet. That means that the services in the list above which are bound to `127.0.0.1` (which include the router console) will need to be accessed via other methods like ssh tunneling or be manually configured to bind to a different interface.
#### Example
Here is an example container that mounts `i2phome` as home directory, `i2ptorrents` for torrents, and opens HTTP Proxy, IRC, Router Console and I2NP Protocols. It also limits the memory available to the JVM to 256MB.
```
docker build -t geti2p/i2p .
# I2NP port needs TCP and UDP. Change the 54321 to something random, greater than 1024.
docker run \
-e JVM_XMX=256m \
-v i2phome:/i2p/.i2p \
-v i2ptorrents:/i2psnark \
-p 127.0.0.1:4444:4444 \
-p 127.0.0.1:6668:6668 \
-p 127.0.0.1:7657:7657 \
-p 54321:12345 \
-p 54321:12345/udp \
geti2p/i2p:latest
```

View File

@ -1,62 +1,40 @@
FROM meeh/java8server:latest
# Docker image based on Alpine with Java.
FROM alpine:3.17.1 as builder
# We use Oracle Java to run I2P, but uses the openjdk to build it.
ENV APP_HOME="/i2p"
WORKDIR /tmp/build
COPY . .
MAINTAINER Mikal Villa <mikal@sigterm.no>
RUN apk add --virtual build-base gettext tar bzip2 apache-ant openjdk17 \
&& echo "build.built-by=Docker" >> override.properties \
&& ant preppkg-linux-only \
&& rm -rf pkg-temp/osid pkg-temp/lib/wrapper pkg-temp/lib/wrapper.* \
&& apk del build-base gettext tar bzip2 apache-ant openjdk17
ENV GIT_BRANCH="master"
ENV I2P_PREFIX="/opt/i2p"
ENV PATH=${I2P_PREFIX}/bin:$PATH
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
FROM alpine:3.17.1
ENV APP_HOME="/i2p"
ENV GOSU_VERSION=1.7
ENV GOSU_SHASUM="34049cfc713e8b74b90d6de49690fa601dc040021980812b2f1f691534be8a50 /usr/local/bin/gosu"
RUN apk add openjdk17-jre ttf-dejavu
RUN mkdir /user && adduser -S -h /user i2p && chown -R i2p:nobody /user
WORKDIR ${APP_HOME}
COPY --from=builder /tmp/build/pkg-temp .
# Adding files first, since Docker.expt is required for installation
ADD Docker.expt /tmp/Docker.expt
ADD Docker.entrypoint.sh /entrypoint.sh
# "install" i2p by copying over installed files
COPY --chown=root:root docker/rootfs/ /
RUN chmod +x /startapp.sh
# Required for wget https
RUN apk add --no-cache openssl
# Gosu is a replacement for su/sudo in docker and not a backdoor :) See https://github.com/tianon/gosu
RUN wget -O /usr/local/bin/gosu https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64 \
&& echo "${GOSU_SHASUM}" | sha256sum -c && chmod +x /usr/local/bin/gosu
# Mount home and snark
VOLUME ["${APP_HOME}/.i2p"]
VOLUME ["/i2psnark"]
#
# Each RUN is a layer, adding the dependencies and building i2pd in one layer takes around 8-900Mb, so to keep the
# image under 200mb we need to remove all the build dependencies in the same "RUN" / layer.
#
EXPOSE 7654 7656 7657 7658 4444 6668 7659 7660 4445 12345
# The main layer
RUN apk --no-cache add build-base git gettext tar bzip2 apache-ant openjdk8 expect \
&& mkdir -p /usr/src/build \
&& cd /usr/src/build \
&& git clone -b ${GIT_BRANCH} https://github.com/i2p/i2p.i2p.git \
&& cd /usr/src/build/i2p.i2p \
&& echo "noExe=true" >> build.properties \
&& ant installer-linux \
&& cp i2pinstall*.jar /tmp/i2pinstall.jar \
&& mkdir -p /opt \
&& chown i2p:root /opt \
&& chmod u+rw /opt \
&& gosu i2p expect -f /tmp/Docker.expt \
&& cd ${I2P_PREFIX} \
&& rm -fr man docs *.bat *.command *.app /tmp/i2pinstall.jar /tmp/Docker.expt \
&& rm -fr /usr/src/build \
&& apk --purge del build-base apache-ant expect tcl expat git openjdk8 openjdk8-jre openjdk8-jre-base openjdk8-jre-lib bzip2 tar \
binutils-libs binutils pkgconfig libcurl libc-dev musl-dev g++ make fortify-headers pkgconf giflib libssh2 libxdmcp libxcb \
libx11 pcre alsa-lib libxi libxrender libxml2 readline bash openssl \
&& rm -fr /usr/lib/jvm/default-jre \
&& ln -sf /opt/jdk/jre /usr/lib/jvm/default-jre \
&& chmod a+x /entrypoint.sh
EXPOSE 7654 7656 7657 7658 4444 6668 8998 7659 7660 4445 15000-20000
ENTRYPOINT [ "/entrypoint.sh" ]
# Metadata.
LABEL \
org.label-schema.name="i2p" \
org.label-schema.description="Docker container for I2P" \
org.label-schema.version="1.0" \
org.label-schema.vcs-url="https://github.com/i2p/i2p.i2p" \
org.label-schema.schema-version="1.0"
ENTRYPOINT ["/startapp.sh"]

View File

@ -15,7 +15,7 @@ If you're having trouble, check the
website at https://geti2p.net/, or get on irc://irc.freenode.net/#i2p
I2P will create and store files and configuration data in the user directory
~/.i2p/ on Linux and %APPDATA%\I2P\ on Windows. This directory is created
~/.i2p/ on Linux and %LOCALAPPDATA%\I2P\ on Windows. This directory is created
when I2P is run for the first time. It also creates files in the system
temporary directory specified by the Java Virtual Machine.
To change the location of these directories, or to configure I2P to
@ -40,7 +40,7 @@ To uninstall I2P:
rm -rf $I2PInstallDir ~/.i2p
Supported JVMs:
All platforms: Java 1.7 or higher required
All platforms: Java 1.8 or higher required
Windows: OpenJDK or Oracle from http://java.com/download
Linux: OpenJDK or Oracle from http://java.com/download
FreeBSD: OpenJDK or Oracle from http://java.com/download

View File

@ -1,10 +1,10 @@
I2P source installation instructions
Prerequisites to build from source:
Java SDK (preferably Oracle/Sun or OpenJDK) 1.7.0 or higher
Java SDK (preferably Oracle or OpenJDK) 8 or higher
Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java
Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 1.6
Apache Ant 1.7.0 or higher
Apache Ant 1.9.8 or higher
The xgettext, msgfmt, and msgmerge tools installed
from the GNU gettext package http://www.gnu.org/software/gettext/
Build environment must use a UTF-8 locale.

View File

@ -36,10 +36,6 @@ Public domain except as listed below:
Copyright (c) 2003, TheCrypto
See licenses/LICENSE-ElGamalDSA.txt
HMAC:
Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
See licenses/LICENSE-SHA256.txt
ElGamal:
Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
See licenses/LICENSE-SHA256.txt
@ -82,18 +78,28 @@ Public domain except as listed below:
Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com)
See licenses/LICENSE-LGPLv2.1.txt
EdDSA-Java:
See licenses/LICENSE-CC0-1.0-Universal.txt
HostnameVerifier:
From Apache HttpClient 4.4.1 and HttpCore 4.4.1
See licenses/LICENSE-Apache2.0.txt
json-simple 1.1.1
json-simple 2.3.0
(not included in most distribution packages)
Copyright 2016 Clifton Labs
See licenses/LICENSE-Apache2.0.txt
Noise library:
Copyright (C) 2016 Southern Storm Software, Pty Ltd.
See licenses/LICENSE-Noise.txt
MiniDNS library 1.0.0
This software may be used under the terms of (at your choice)
- LGPL version 2 (or later) (see licenses/LICENSE-LGPL2.1.txt)
- Apache Software licence (see licenses/LICENSE-Apache2.0.txt)
- DWTFYWTPL
Router (router.jar):
Public domain except as listed below:
@ -118,6 +124,14 @@ Public domain except as listed below:
Copyright (C) 2016 Southern Storm Software, Pty Ltd.
See licenses/LICENSE-Noise.txt
SparseArray:
Copyright (C) 2006 The Android Open Source Project
See licenses/LICENSE-Apache2.0.txt
SSU HMAC:
Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
See licenses/LICENSE-SHA256.txt
Installer:
(not included in distribution packages)
@ -164,17 +178,18 @@ Installer:
GeoIP Data:
(not included in most distribution packages)
This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com/
See licenses/LICENSE-GeoIP.txt
IP Geolocation by DB-IP https://db-ip.com/
See https://creativecommons.org/licenses/by/4.0/
Launchers:
(not included in distribution packages)
Copyright (c) 2002-2018 EPFL, Lausanne / Lightbend, Inc. , unless otherwise specified.
See licenses/LICENSE-Scala.md
Java Service Wrapper Community Edition 32-bit 3.5.39:
Java Service Wrapper Community Edition 3.5.44:
(Windows: 3.5.25)
(not included in most distribution packages)
Copyright (C) 1999-2019 Tanuki Software, Ltd. All Rights Reserved.
Copyright (C) 1999-2020 Tanuki Software, Ltd. All Rights Reserved.
See licenses/LICENSE-Wrapper.txt
@ -184,7 +199,7 @@ Jbigi Libraries (jbigi.jar):
GMP 4.3.2 / 5.0.2:
Copyright 1991, 1996, 1999, 2000, 2007 Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv3.txt
GMP 6.0.0:
GMP 6.0.0 / 6.1.2 / 6.2.0:
See licenses/LICENSE-GPLv2.txt
@ -197,10 +212,6 @@ Applications:
Copyright (c) 2006, Matthew Estes
See licenses/LICENSE-BlockFile.txt
BOB (BOB.jar):
Copyright (C) sponge
See licenses/COPYING-BOB.txt
Desktopgui (desktopgui.jar):
Copyright (c) Mathias De Maré
See licenses/LICENSE-DesktopGUI.txt
@ -246,23 +257,22 @@ Applications:
Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
Copyright (c) 2008 Alexander von Gernler. All rights reserved.
See licenses/LICENSE-BSD.txt
Zxing 3.3.0:
Zxing 3.4.1:
See licenses/LICENSE-Apache2.0.txt
Jetty 9.2.25.v20180606 (jetty-*.jar, org.mortbay.*.jar):
Jetty 9.3.30.v20211001 (jetty-*.jar, org.mortbay.*.jar):
(not included in most distribution packages, except for jetty-i2p.jar)
See licenses/ABOUT-Jetty.html
See licenses/NOTICE-Jetty.html
See licenses/LICENSE-Apache2.0.txt
See licenses/LICENSE-ECLIPSE-1.0.html
JRobin 1.6.0-1 (jrobin.jar):
RRD4J 3.8 (jrobin.jar):
Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor.
Copyright (c) 2011 The OpenNMS Group, Inc.
Copyright 2011 The RRD4J Authors.
See licenses/LICENSE-Apache2.0.txt
See licenses/LICENSE-LGPLv2.1.txt
DeallocationHelper:
Copyright (c) 2006-2016 Julien Gouesse
See licenses/LICENSE-GPLv2.txt
Ministreaming Lib (mstreaming.jar):
By mihi.
@ -286,6 +296,7 @@ Applications:
FatCow icons: See licenses/LICENSE-FatCowIcons.txt
Fugue Icons: See licenses/LICENSE-FugueIcons.txt
Feather icons: Copyright (c) 2013-2017 Cole Bemis; see licenses/LICENSE-Feather.txt
Fontawesome icons: Copyright (c) 2018 @fontawesome(company) see licenses/LICENSE-fontawesome.txt
Router Console unthemed, light, and dark theme logos:
Copyright (c) 2019 The Invisible Internet Project. All rights reserved.
@ -324,9 +335,9 @@ Applications:
Systray (systray.jar):
Public domain.
Tomcat 8.5.40 (jasper-runtime.jar):
Tomcat 9.0.62 (jasper-runtime.jar):
(not included in most distribution packages)
Copyright 1999-2019 The Apache Software Foundation
Copyright 1999-2022 The Apache Software Foundation
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Tomcat.txt
@ -340,24 +351,7 @@ distributions. See the source package for the additional license information.
Admin Manager:
Public domain
BOB Demos:
Copyright (C) sponge
DWTFYWTPL
Gradle wrapper:
Gradle wrapper 5.2.1:
(not included in most distribution packages)
Copyright (c) 2017 the original author or authors.
See licenses/LICENSE-Apache2.0.txt
SAM C Library:
Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com>
See apps/sam/c/doc/license.txt
SAM C# Library:
Public domain.
See apps/sam/csharp/README
SAM Perl Library:
See licenses/LICENSE-GPLv2.txt
SAM Python Library:
Public domain.

View File

@ -1,132 +0,0 @@
# Makefile for building native I2P binaries and libraries with GCJ
#
# WARNING: Do not use this yet, as it may explode (etc).
#
GCJ=gcj #/usr/local/gcc-4.0.2/bin/gcj
EXTRA_LD_PATH= #/usr/local/gcc-4.0.2/lib
ANT=ant #/opt/apache-ant-1.6.5/bin/ant
ANT_TARGET=build2
NATIVE_DIR=native
##
# Define what jar files get into libi2p.so. The current setup is
# *incredibly* lazy, throwing everything in the .so, rather than
# give each .jar file its own .so.
# i2p.jar: base SDK
# mstreaming.jar: streaming API
# streaming.jar: full streaming lib implementation
# i2ptunnel.jar: I2PTunnel proxy
# sam.jar: SAM bridge and API
# i2psnark.jar: bittorrent client
# router.jar: full I2P router
# jbigi.jar: collection of native optimized GMP routines for crypto
JAR_BASE=i2p.jar mstreaming.jar streaming.jar
JAR_CLIENTS=i2ptunnel.jar sam.jar
JAR_ROUTER=router.jar
JAR_JBIGI=jbigi.jar
JAR_CONSOLE=\
javax.servlet.jar \
commons-el.jar \
commons-logging.jar \
jasper-runtime.jar \
jasper-compiler.jar \
org.mortbay.jetty.jar \
routerconsole.jar
LIBI2P_JARS=${JAR_BASE} ${JAR_CLIENTS} ${JAR_ROUTER} ${JAR_JBIGI}
LIBSAM_JARS=${JAR_BASE} sam.jar
LIBROUTER_JARS=i2p.jar ${JAR_ROUTER} ${JAR_JBIGI}
LIBCONSOLE_JARS=${LIBROUTER_JARS} ${JAR_CONSOLE}
LIBSNARK_JARS=${LIBROUTER_JARS} i2psnark.jar
# update:
# similar error with gcj 4.3.3.
#
# unfortunately, its not quite ready for most end users, as the
# ${JAR_CONSOLE} fails to compile with:
# org/apache/commons/logging/impl/LogKitLogger.java: In class 'org.apache.commons.logging.impl.LogKitLogger':
# .../LogKitLogger.java: In constructor '(java.lang.String)':
# .../LogKitLogger.java:91: error: cannot find file for class org.apache.log.Hierarchy
# .../LogKitLogger.java:91: error: cannot find file for class org.apache.log.Hierarchy
# .../LogKitLogger.java:104: error: cannot find file for class org.apache.log.Hierarchy
# .../LogKitLogger.java:104: confused by earlier errors, bailing out
#${JAR_CONSOLE}\
#${JAR_XML} \
#${JAR_SUCKER}
#${JAR_CONSOLE}
SYSTEM_PROPS=-DloggerFilenameOverride=logs/log-router-@.txt \
-Dorg.mortbay.http.Version.paranoid=true \
-Dorg.mortbay.util.FileResource.checkAliases=false \
-Dorg.mortbay.xml.XmlParser.NotValidating=true
#SYSTEM_PROPS=-Di2p.weakPRNG=true
OPTIMIZE=-O2
#OPTIMIZE=-O3
LD_LIBRARY_PATH=${EXTRA_LD_PATH}:.
all: jars native
@echo "* Build complete"
jars:
@${ANT} ${ANT_TARGET}
clean: native_clean
native: native_clean native_shared
@echo "* Native code build in ${NATIVE}"
native_clean:
@rm -rf ${NATIVE_DIR}
@mkdir ${NATIVE_DIR}
native_shared: libi2p.so
@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/i2p_dsa --main=net.i2p.crypto.DSAEngine
@echo "* i2p_dsa is a simple test app with the DSA engine and Fortuna PRNG to make sure crypto is working"
@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/prng --main=gnu.crypto.prng.FortunaStandalone
@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/i2ptunnel --main=net.i2p.i2ptunnel.I2PTunnel
@echo "* i2ptunnel is mihi's I2PTunnel CLI"
@echo " run it as ./i2ptunnel -cli to avoid awt complaints"
@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/i2ptunnelctl --main=net.i2p.i2ptunnel.TunnelControllerGroup
@echo "* i2ptunnelctl is a controller for I2PTunnel, reading i2ptunnel.config"
@echo " and launching the appropriate proxies"
#@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/i2psnark --main=org.klomp.snark.Snark
#@echo "* i2psnark is an anonymous bittorrent client"
@cd build ; ${GCJ} ${OPTIMIZE} -fjni -L../${NATIVE_DIR} -li2p ${SYSTEM_PROPS} -o ../${NATIVE_DIR}/i2prouter --main=net.i2p.router.Router
@echo "* i2prouter is the main I2P router"
@echo " it can be used, and while the router console won't load,"
@echo " i2ptunnel will, so it will start all the proxies defined in i2ptunnel.config"
libi2p.so:
@echo "* Building $@"
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBI2P_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
sam: jars libi2psam.so
libi2psam.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBSAM_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
router: jars libi2prouter.so
libi2prouter.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBROUTER_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
console: jars libi2pconsole.so
# doesn't work, see above
libi2pconsole.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBCONSOLE_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"

View File

@ -2,19 +2,19 @@
This is the source code for the reference Java implementation of I2P.
Latest release: https://geti2p.net/download
Latest release: [https://geti2p.net/download](https://geti2p.net/download)
## Installing
See INSTALL.txt or https://geti2p.net/download for installation instructions.
See [INSTALL.txt](INSTALL.txt) or [https://geti2p.net/download](https://geti2p.net/download) for installation instructions.
## Documentation
https://geti2p.net/how
[https://geti2p.net/how](https://geti2p.net/how)
FAQ: https://geti2p.net/faq
FAQ: [https://geti2p.net/faq](https://geti2p.net/faq)
API: http://docs.i2p-projekt.de/javadoc/
API: [http://docs.i2p-projekt.de/javadoc/](http://docs.i2p-projekt.de/javadoc/)
or run 'ant javadoc' then start at build/javadoc/index.html
## How to contribute / Hack on I2P
@ -23,17 +23,17 @@ Please check out [HACKING.md](docs/HACKING.md) and other documents in the docs d
## Building packages from source
To get development branch from source control: https://geti2p.net/newdevelopers
To get development branch from source control: [https://geti2p.net/newdevelopers](https://geti2p.net/newdevelopers)
### Prerequisites
- Java SDK (preferably Oracle/Sun or OpenJDK) 1.7.0 or higher
- Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java
- Java SDK (preferably Oracle or OpenJDK) 8 or higher
- Non-linux operating systems and JVMs: See [https://trac.i2p2.de/wiki/java](https://trac.i2p2.de/wiki/java)
- Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel)
require only Java 1.6
- Apache Ant 1.7.0 or higher
require only Java 6
- Apache Ant 1.9.8 or higher
- The xgettext, msgfmt, and msgmerge tools installed from the GNU gettext package
http://www.gnu.org/software/gettext/
[http://www.gnu.org/software/gettext/](http://www.gnu.org/software/gettext/)
- Build environment must use a UTF-8 locale.
### Ant build process
@ -64,17 +64,22 @@ your `~/.gradle/gradle.properties`:
systemProp.socksProxyHost=localhost
systemProp.socksProxyPort=9150
### Development builds
Automatic CI builds are available at the [continuous integration](https://github.com/i2p/i2p.i2p/actions/workflows/ant.yml) page.
### Docker
For more information how to run I2P in Docker, see [Docker.md](Docker.md)
## Contact info
Need help? See the IRC channel #i2p on irc.freenode.net
Bug reports: https://trac.i2p2.de/report/1
Bug reports: [https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues](https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues) [http://git.idk.i2p/i2p-hackers/i2p.i2p/-/issues](http://git.idk.i2p/i2p-hackers/i2p.i2p/-/issues)
Contact information, security issues, press inquiries: https://geti2p.net/en/contact
Contact information, security issues, press inquiries: [https://geti2p.net/en/contact](https://geti2p.net/en/contact)
Twitter: @i2p, @geti2p
Twitter: [@i2p](https://twitter.com/i2p), [@geti2p](https://twitter.com/GetI2P)
## Licenses
See LICENSE.txt
See [LICENSE.txt](LICENSE.txt)

View File

@ -1,8 +1,8 @@
Prerequisites to build from source:
Java SDK (preferably Oracle/Sun or OpenJDK) 1.7.0 or higher
Java SDK (preferably Oracle or OpenJDK) 8 or higher
Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java
Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 1.6
Apache Ant 1.7.0 or higher
Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 6
Apache Ant 1.9.8 or higher
The xgettext, msgfmt, and msgmerge tools installed
from the GNU gettext package http://www.gnu.org/software/gettext/
Build environment must use a UTF-8 locale.
@ -47,7 +47,8 @@ Need help?
IRC irc.freenode.net #i2p
Bug reports:
https://trac.i2p2.de/report/1
https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues
http://git.idk.i2p/i2p-hackers/i2p.i2p/-/issues
Contact information, security issues, press inquiries:
https://geti2p.net/en/contact

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<project name="echoclient" default="default" basedir=".">
<description>Builds, tests, and runs the project echoclient.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="echoclient-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

View File

@ -1,5 +0,0 @@
#!/bin/bash
(
cd dist
java -jar echoclient.jar main 37338 testclient $1
)

View File

@ -1,3 +0,0 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

View File

@ -1,629 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="echoclient-impl">
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="libs.CopyLibs.classpath"/>
</and>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
<and>
<isset property="jaxws.endorsed.dir"/>
<available file="nbproject/jaxws-build.xml"/>
</and>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="" name="sourcepath"/>
<element name="customize" optional="true"/>
<sequential>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.classes}">
<include name="${fix.includes}*.class"/>
</fileset>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="${run.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target depends="init" name="deps-jar" unless="no.deps"/>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<j2seproject3:depend/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,-do-not-recompile,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target depends="init" name="deps-clean" unless="no.deps"/>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
</project>

View File

@ -1,8 +0,0 @@
build.xml.data.CRC32=8ce3cee9
build.xml.script.CRC32=d1de2df3
build.xml.stylesheet.CRC32=be360661
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=8ce3cee9
nbproject/build-impl.xml.script.CRC32=22d1fbbb
nbproject/build-impl.xml.stylesheet.CRC32=487672f9

View File

@ -1,2 +0,0 @@
jaxws.endorsed.dir=/usr/local/netbeans-6.1/java2/modules/ext/jaxws21/api
user.properties.file=/root/.netbeans/6.1/build.properties

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
<file>file:/root/NetBeansProjects/BOB/Demos/echo/echoclient/src/net/i2p/BOB/Demos/echo/echoclient/Main.java</file>
</open-files>
</project-private>

View File

@ -1,60 +0,0 @@
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/echoclient.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.BOB.jar=../../../dist/BOB.jar
includes=**
jar.compress=false
javac.classpath=
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=net.i2p.BOB.Demos.echo.echoclient.Main
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>echoclient</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

View File

@ -1,193 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB.Demos.echo.echoclient;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author sponge
*/
public class Main {
public static String Lread(InputStream in) throws IOException {
String S;
int b;
char c;
S = new String();
while(true) {
b = in.read();
if(b == 13) {
//skip CR
continue;
}
if(b < 20 || b > 126) {
// exit on anything not legal
break;
}
c = (char)(b & 0x7f); // We only care about ASCII
S = new String(S + c);
}
return S;
}
/**
* Check for "ERROR" and if so, throw RuntimeException
* @param line
* @throws java.lang.RuntimeException
*/
static void checkline(String line) throws RuntimeException {
System.out.println(line); // print status
if(line.startsWith("ERROR")) {
throw new RuntimeException(line);
}
}
static void wrtxt(OutputStream CMDout, String s) throws IOException {
CMDout.write(DataHelper.getUTF8(s));
CMDout.write('\n');
CMDout.flush();
}
static void setupconn(String[] args) throws UnknownHostException, IOException, RuntimeException {
String line;
Socket CMDsock = new Socket("localhost", 0xB0B);
InputStream CMDin = CMDsock.getInputStream();
OutputStream CMDout = CMDsock.getOutputStream();
// setup the tunnel.
line = Lread(CMDin);
System.out.println(line); // print the banner
line = Lread(CMDin);
System.out.println(line); // print initial status, should always be "OK"
try {
wrtxt(CMDout, "status " + args[2]);
line = Lread(CMDin); // get the status of this nickname, if it's an error, create it
checkline(line);
} catch(RuntimeException rte) {
wrtxt(CMDout, "setnick " + args[2]);
line = Lread(CMDin); // create a new nickname
checkline(line);
wrtxt(CMDout, "newkeys");
line = Lread(CMDin); // set up new keys
checkline(line);
wrtxt(CMDout, "inport " + args[1]);
line = Lread(CMDin); // set the port we connect in on
checkline(line);
}
wrtxt(CMDout, "getnick " + args[2]);
line = Lread(CMDin); // Set to our nick
try {
checkline(line);
} catch(RuntimeException rte) {
System.out.println("Continuing on existing tunnel..");
return;
}
wrtxt(CMDout, "start");
line = Lread(CMDin); // an error here is OK
System.out.println(line); // print status
CMDsock.close(); // we no longer need this particular socket
}
static void deleteconn(String[] args) throws UnknownHostException, IOException, RuntimeException {
String line;
// Wait for things to flush
try {
Thread.sleep(10000);
} catch(InterruptedException ex) {
// nop
}
Socket CMDsock = new Socket("localhost", 0xB0B);
InputStream CMDin = CMDsock.getInputStream();
OutputStream CMDout = CMDsock.getOutputStream();
// delete the tunnel.
line = Lread(CMDin);
System.out.println(line); // print the banner
line = Lread(CMDin);
System.out.println(line); // print initial status, should always be "OK"
wrtxt(CMDout, "getnick " + args[2]); // Set to our nick
line = Lread(CMDin);
checkline(line);
wrtxt(CMDout, "stop");
line = Lread(CMDin);
checkline(line);
try {
Thread.sleep(2000); //sleep for 2000 ms (Two seconds)
} catch(Exception e) {
// nop
}
wrtxt(CMDout, "clear");
line = Lread(CMDin);
while(line.startsWith("ERROR")) {
wrtxt(CMDout, "clear");
line = Lread(CMDin);
}
System.out.println(line); // print status
CMDsock.close(); // we no longer need this particular socket
}
static void chatter(String[] args) throws UnknownHostException, IOException, RuntimeException {
String line;
Socket sock = new Socket("localhost", Integer.parseInt(args[1]));
InputStream in = sock.getInputStream();
OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());
out.write(args[3] + "\n"); // send out the i2p address to connect to
out.flush();
System.out.println("Connecting to " + args[3]);
line = Lread(in); // get server greeting
System.out.println("Got " + line); // show user
out.write("Test complete.\n"); // send something back
out.flush(); // make sure it's sent.
sock.close(); // done.
}
/**
*
* @param args tunnelport tunnelnickname I2Pdestkey
*/
public static void main(String[] args) {
// I'm lazy, and want to exit on any failures.
try {
setupconn(args); // talk to BOB, set up an outbound port
chatter(args); // talk over the connection
} catch(UnknownHostException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
try {
deleteconn(args);
} catch(UnknownHostException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(RuntimeException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<project name="echoserver" default="default" basedir=".">
<description>Builds, tests, and runs the project echoserver.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="echoserver-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

View File

@ -1,3 +0,0 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

View File

@ -1,629 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="echoserver-impl">
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="libs.CopyLibs.classpath"/>
</and>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
<and>
<isset property="jaxws.endorsed.dir"/>
<available file="nbproject/jaxws-build.xml"/>
</and>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="" name="sourcepath"/>
<element name="customize" optional="true"/>
<sequential>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.classes}">
<include name="${fix.includes}*.class"/>
</fileset>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="${run.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target depends="init" name="deps-jar" unless="no.deps"/>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<j2seproject3:depend/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,-do-not-recompile,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target depends="init" name="deps-clean" unless="no.deps"/>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
</project>

View File

@ -1,8 +0,0 @@
build.xml.data.CRC32=4ce39738
build.xml.script.CRC32=c1deb82c
build.xml.stylesheet.CRC32=be360661
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=4ce39738
nbproject/build-impl.xml.script.CRC32=555cdd2d
nbproject/build-impl.xml.stylesheet.CRC32=487672f9

View File

@ -1,2 +0,0 @@
jaxws.endorsed.dir=/usr/local/netbeans-6.1/java2/modules/ext/jaxws21/api
user.properties.file=/root/.netbeans/6.1/build.properties

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
<file>file:/root/NetBeansProjects/BOB/Demos/echo/echoserver/src/net/i2p/BOB/Demos/echo/echoserver/Main.java</file>
</open-files>
</project-private>

View File

@ -1,60 +0,0 @@
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/echoserver.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.BOB.jar=../../../dist/BOB.jar
includes=**
jar.compress=false
javac.classpath=
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=net.i2p.BOB.Demos.echo.echoserver.Main
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>echoserver</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

View File

@ -1,4 +0,0 @@
(
cd dist
java -jar echoserver.jar main 37337 testserver
)

View File

@ -1,189 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB.Demos.echo.echoserver;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author sponge
*/
public class Main {
public static String Lread(InputStream in) throws IOException {
String S;
int b;
char c;
S = new String();
while(true) {
b = in.read();
if(b < 20) {
break;
}
c = (char)(b & 0x7f); // We only care about ASCII
S = new String(S + c);
}
return S;
}
/**
* Check for "ERROR" and if so, throw RuntimeException
* @param line
* @throws java.lang.RuntimeException
*/
static void checkline(String line) throws RuntimeException {
System.out.println(line); // print status
if(line.startsWith("ERROR")) {
throw new RuntimeException(line);
}
}
static void wrtxt(OutputStream CMDout, String s) throws IOException {
CMDout.write(DataHelper.getUTF8(s));
CMDout.write('\n');
CMDout.flush();
}
static void setupconn(String[] args) throws UnknownHostException, IOException, RuntimeException {
String line;
Socket CMDsock = new Socket("localhost", 0xB0B);
InputStream CMDin = CMDsock.getInputStream();
OutputStream CMDout = CMDsock.getOutputStream();
// setup the tunnel.
line = Lread(CMDin);
System.out.println(line); // print the banner
line = Lread(CMDin);
System.out.println(line); // print initial status, should always be "OK"
try {
wrtxt(CMDout, "status " + args[2]);
line =Lread(CMDin); // get the status of this nickname, if it's an error, create it
checkline(line);
} catch(RuntimeException rte) {
wrtxt(CMDout, "setnick " + args[2]);
line =Lread(CMDin); // create a new nickname
checkline(line);
wrtxt(CMDout, "newkeys ");
line =Lread(CMDin); // set up new keys
checkline(line);
wrtxt(CMDout, "outport " + args[1]);
line = Lread(CMDin); // set the port we connect out on
checkline(line);
}
wrtxt(CMDout, "getnick " + args[2]);
line = Lread(CMDin); // Set to our nick
checkline(line);
wrtxt(CMDout, "start ");
line = Lread(CMDin); // an error here is OK
System.out.println(line); // print status
CMDsock.close(); // we no longer need this particular socket
}
static void deleteconn(String[] args) throws UnknownHostException, IOException, RuntimeException {
String line;
Socket CMDsock = new Socket("localhost", 0xB0B);
InputStream CMDin = CMDsock.getInputStream();
OutputStream CMDout = CMDsock.getOutputStream();
// delete the tunnel.
line = Lread(CMDin);
System.out.println(line); // print the banner
line = Lread(CMDin);
System.out.println(line); // print initial status, should always be "OK"
wrtxt(CMDout, "getnick " + args[2]); // Set to our nick
line = Lread(CMDin);
checkline(line);
wrtxt(CMDout, "stop");
line = Lread(CMDin);
checkline(line);
try {
Thread.sleep(2000); //sleep for 2000 ms (Two seconds)
} catch(Exception e) {
// nop
}
wrtxt(CMDout, "clear");
line = Lread(CMDin);
while(line.startsWith("ERROR")) {
wrtxt(CMDout, "clear");
line = Lread(CMDin);
}
System.out.println(line); // print status
CMDsock.close(); // we no longer need this particular socket
}
static void chatter(Socket sock) throws UnknownHostException, IOException, RuntimeException {
String line;
InputStream in = sock.getInputStream();
OutputStreamWriter out = new OutputStreamWriter(new BufferedOutputStream(sock.getOutputStream()));
line = Lread(in); // get remote I2P address
System.out.println("Connect from: " + line); // show user
out.write("Hello, You are connecting from " + line + "\n"); // send greeting
out.flush(); // make sure it's sent.
line = Lread(in); // get test text from client
System.out.println("Got "+line); // show user
sock.close(); // done.
}
private static void serverlistener(String[] args) throws UnknownHostException, IOException, RuntimeException {
ServerSocket listener = new ServerSocket(Integer.parseInt(args[1]), 10, InetAddress.getByName("localhost"));
Socket server;
while(true) {
server = listener.accept();
chatter(server);
}
}
/**
*
* @param args tunnelport tunnelnickname
*/
public static void main(String[] args) {
// I'm lazy, and want to exit on any failures.
try {
setupconn(args); // talk to BOB, set up an inbound port
serverlistener(args); // talk over the connection
} catch(UnknownHostException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
try {
deleteconn(args);
} catch(UnknownHostException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch(RuntimeException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

View File

@ -1,14 +0,0 @@
#bob.config
#Tue Dec 30 00:00:00 UTC 2008
# Please leave this file here for testing.
# Thank you,
# Sponge
i2cp.tcp.port=7654
BOB.host=localhost
inbound.lengthVariance=0
i2cp.messageReliability=BestEffort
BOB.port=45678
outbound.length=1
inbound.length=1
outbound.lengthVariance=0
i2cp.tcp.host=localhost

View File

@ -1,12 +0,0 @@
sourceSets {
main {
java {
srcDir 'src'
}
}
}
dependencies {
compile project(':core')
compile project(':apps:ministreaming')
}

View File

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="BOB" default="default" basedir=".">
<description>Builds, tests, and runs the project BOB.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="BOB-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
<target depends="jar" description="Build BOB into a SINGLE JAR." name="onejar">
<!-- Make needed working dirs -->
<mkdir dir="${dist.dir}/lib" />
<mkdir dir="${dist.dir}/classes" />
<!-- Copy jars -->
<copy todir="${dist.dir}/lib" flatten="true" >
<path>
<pathelement path="${javac.classpath}" />
</path>
</copy>
<copy todir="${dist.dir}/lib" file="../../build/jbigi.jar" />
<!-- Extract the classes inside the jar files -->
<unjar dest="${dist.dir}/classes" >
<fileset dir="${dist.dir}/lib" >
<include name="**/*.jar" />
</fileset>
</unjar>
<!-- Recombine the classes into a new jar file -->
<jar jarfile="${dist.dir}/lib/all-in-one.jar" >
<fileset dir="${dist.dir}/classes" />
</jar>
<!-- Clean up work area -->
<delete dir="${dist.dir}/classes" followsymlinks="false" includeemptydirs="true"/>
<!-- Make the single jar file -->
<jar jarfile="dist/BOB-one.jar" >
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="${dist.dir}/lib/all-in-one.jar" excludes="**/META-INF/*" />
<manifest>
<attribute name="Main-Class" value="net.i2p.BOB.Main" />
</manifest>
</jar>
<!-- Clean up the fake jar file -->
<delete file="${dist.dir}/lib/all-in-one.jar" />
</target>
</project>

View File

@ -1,3 +0,0 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

View File

@ -1,642 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="BOB-impl">
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="libs.CopyLibs.classpath"/>
</and>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
<and>
<isset property="jaxws.endorsed.dir"/>
<available file="nbproject/jaxws-build.xml"/>
</and>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="/does/not/exist" name="sourcepath"/>
<element name="customize" optional="true"/>
<sequential>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.classes}">
<include name="${fix.includes}*.class"/>
</fileset>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
<condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
<os family="windows"/>
</condition>
<condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
<isset property="debug.transport"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="${run.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target depends="init" name="deps-jar" unless="no.deps"/>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
<available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
</target>
<target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
<antcall target="clean"/>
</target>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<j2seproject3:depend/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,-do-not-recompile,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed">Some tests failed; see details above.</fail>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target depends="init" name="deps-clean" unless="no.deps"/>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
</project>

View File

@ -1,8 +0,0 @@
build.xml.data.CRC32=209349b6
build.xml.script.CRC32=403e69e6
build.xml.stylesheet.CRC32=958a1d3e
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=209349b6
nbproject/build-impl.xml.script.CRC32=c51e188e
nbproject/build-impl.xml.stylesheet.CRC32=65b8de21

View File

@ -1,93 +0,0 @@
application.homepage=http://bob.i2p/
application.title=BOB
application.vendor=Sponge
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=8
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=8
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=8
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=80
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/BOB.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=**/*.html,**/*.txt
file.reference.build-javadoc=../../i2p.i2p/build/javadoc
file.reference.i2p.jar=../../core/java/build/i2p.jar
file.reference.i2ptunnel.jar=../i2ptunnel/java/build/i2ptunnel.jar
file.reference.jbigi.jar=../../build/jbigi.jar
file.reference.mstreaming.jar=../ministreaming/java/build/mstreaming.jar
file.reference.router.jar=../../router/java/build/router.jar
file.reference.streaming.jar=../streaming/java/build/streaming.jar
file.reference.wrapper.jar=../../installer/lib/wrapper/all/wrapper.jar
includes=**
jar.compress=true
javac.classpath=\
${file.reference.router.jar}:\
${file.reference.i2ptunnel.jar}:\
${file.reference.mstreaming.jar}:\
${file.reference.streaming.jar}:\
${file.reference.wrapper.jar}:\
${file.reference.i2p.jar}:\
${file.reference.router.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.version=1.7
javac.source=${javac.version}
javac.target=${javac.version}
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
jnlp.codebase.type=local
jnlp.codebase.url=file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/dist
jnlp.descriptor=application
jnlp.enabled=false
jnlp.offline-allowed=false
jnlp.signed=false
main.class=net.i2p.BOB.Main
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>BOB</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

View File

@ -1,532 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import static net.i2p.app.ClientAppState.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.util.Arrays;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import net.i2p.I2PAppContext;
import net.i2p.app.*;
import net.i2p.client.I2PClient;
import net.i2p.util.I2PAppThread;
import net.i2p.util.PortMapper;
import net.i2p.util.SimpleTimer2;
/**
* <span style="font-size:8px;font-family:courier;color:#EEEEEE;background-color:#000000">
* ################################################################################<br>
* ############################.#..........#..#..........##########################<br>
* #######################......................................###################<br>
* ####################...........................#.......#........################<br>
* #################..................##...................#.........##############<br>
* ###############................###...####.....#..###.....#.........#############<br>
* #############...........###..#..###...#####...###.##........#.......############<br>
* ###########................#......##...#####...##..##.......#..#........########<br>
* ##########.........................#....##.##..#...##.....................######<br>
* #########...................................#....#.........................#####<br>
* ########.........................................#...............#..........####<br>
* ########.........................................#..........#######..........###<br>
* #######.................................................############..........##<br>
* #######..........................................####################.........##<br>
* #######............####################......########################.........##<br>
* ######.............###############################################.##.........##<br>
* ######............################################################..##........##<br>
* ######............################################################..##........##<br>
* ######.............##############################################..##.........##<br>
* ######............##############################################...##..........#<br>
* ######............#..###########################################...##..........#<br>
* ######.............#############################################....#..........#<br>
* #######...........###############################################..##.........##<br>
* #######...........#####.#.#.#.########################.....#.####...##........##<br>
* ######............#..............##################.................##.........#<br>
* ######................####.........###############........#####......##........#<br>
* ######..............####..#.........############.......##.#.######...##.......##<br>
* ######.................#.####.........########...........##....###...##.......##<br>
* #######....#....###...................#######...............#...###..##.......##<br>
* #######.........###..###.....###.......######.##.#####.........####..##.......##<br>
* #######.....#...##############.........############......###########.###......##<br>
* #######....##...##########.......##...##############......#.############.....###<br>
* ########....#..########......######...##################################....####<br>
* ########....##.####################...##################################....####<br>
* ########..#.##..###################..##################################..#..####<br>
* ##########..###..#################...##################################...#.####<br>
* #########....##...##############....########..#####.################.##..#.#####<br>
* ############.##....##########.......#########.###.......###########..#.#########<br>
* ###############.....#######...#.......########.....##.....######.....###########<br>
* ###############......###....##..........##.......######....#.........#.#########<br>
* ##############............##..................##########..............##########<br>
* ##############..............................##########..#.............##########<br>
* ###############.......##..................#####..............####....###########<br>
* ###############.......#####.......#.............####.....#######.....###########<br>
* ################...#...####......##################.....########....############<br>
* ################...##..#####.........####.##.....#....##########....############<br>
* ##################..##..####...........#####.#....############.....#############<br>
* ##################......#####.................################....##############<br>
* ###################.....####..........##########..###########....###############<br>
* ####################..#..#..........................########.....###############<br>
* #####################.##.......###.................########....#################<br>
* ######################.........#.......#.##.###############....#################<br>
* #############.#######...............#####################....###################<br>
* ###..#.....##...####..........#.....####################....####################<br>
* ####......##........................##################....######################<br>
* #.##...###..............###.........###############......#######################<br>
* #...###..##............######...........................########################<br>
* ##.......###..........##########....#...#...........############################<br>
* ##.........##.......############################################################<br>
* ###........##.....##############################################################<br>
* ####.............###############################################################<br>
* ######.........#################################################################<br>
* #########....###################################################################<br>
* ################################################################################<br>
* </span>
* BOB, main command socket listener, launches the command parser engine.
*
* @author sponge
*/
public class BOB implements Runnable, ClientApp {
public final static String PROP_CONFIG_LOCATION = "BOB.config";
public final static String PROP_BOB_PORT = "BOB.port";
public final static String PROP_BOB_HOST = "BOB.host";
public final static String PROP_CFG_VER = "BOB.CFG.VER";
/** unused when started via the ClientApp interface */
private static BOB _bob;
private final NamedDB database;
private final Properties props = new Properties();
private final AtomicBoolean spin = new AtomicBoolean(true);
private static final String P_RUNNING = "RUNNING";
private static final String P_STARTING = "STARTING";
private static final String P_STOPPING = "STOPPING";
private final AtomicBoolean lock = new AtomicBoolean(false);
// no longer used.
// private static int maxConnections = 0;
private final I2PAppContext _context;
private final Logger _log;
private final ClientAppManager _mgr;
private final String[] _args;
private volatile ClientAppState _state = UNINITIALIZED;
private volatile ServerSocket listener;
private volatile Thread _runner;
/**
* Stop BOB gracefully
* @deprecated unused
*/
@Deprecated
public synchronized static void stop() {
if (_bob != null)
_bob.shutdown(null);
}
/**
* For ClientApp interface.
* Does NOT open the listener socket or start threads; caller must call startup()
*
* @param mgr may be null
* @param args non-null
* @since 0.9.10
*/
public BOB(I2PAppContext context, ClientAppManager mgr, String[] args) {
_context = context;
// If we were run from command line, log to stdout
boolean logToStdout = false;
URL classResource = BOB.class.getResource("BOB.class");
if (classResource != null) {
String classPath = classResource.toString();
if (classPath.startsWith("jar")) {
String manifestPath = classPath.substring(0, classPath.lastIndexOf('!') + 1) +
"/META-INF/MANIFEST.MF";
try {
Manifest manifest = new Manifest(new URL(manifestPath).openStream());
Attributes attrs = manifest.getMainAttributes();
String mainClass = attrs.getValue("Main-Class");
if ("net.i2p.BOB.Main".equals(mainClass))
logToStdout = true;
} catch (IOException ioe) {}
}
}
_log = new Logger(context.logManager().getLog(BOB.class), logToStdout);
_mgr = mgr;
_args = args;
_state = INITIALIZED;
database = new NamedDB();
loadConfig();
}
/**
* Listen for incoming connections and handle them
*
* @param args
*/
public synchronized static void main(String[] args) {
try {
_bob = new BOB(I2PAppContext.getGlobalContext(), null, args);
_bob.startup();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* @since 0.9.10
*/
private void loadConfig() {
int i = 0;
boolean save = false;
// Set up all defaults to be passed forward to other threads.
// Re-reading the config file in each thread is pretty damn stupid.
String configLocation = System.getProperty(PROP_CONFIG_LOCATION, "bob.config");
// This is here just to ensure there is no interference with our threadgroups.
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
i = Y2.hashCode();
{
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(_context.getConfigDir(), configLocation);
}
FileInputStream fi = null;
try {
fi = new FileInputStream(cfg);
props.load(fi);
} catch (FileNotFoundException fnfe) {
_log.warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.", fnfe);
save = true;
} catch (IOException ioe) {
_log.warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.", ioe);
} finally {
if (fi != null) try { fi.close(); } catch (IOException ioe) {}
}
}
// Global router and client API configurations that are missing are set to defaults here.
if (!props.containsKey(I2PClient.PROP_TCP_HOST)) {
props.setProperty(I2PClient.PROP_TCP_HOST, "localhost");
save = true;
}
if (!props.containsKey(I2PClient.PROP_TCP_PORT)) {
props.setProperty(I2PClient.PROP_TCP_PORT, Integer.toString(I2PClient.DEFAULT_LISTEN_PORT));
save = true;
}
if (!props.containsKey(PROP_BOB_PORT)) {
props.setProperty(PROP_BOB_PORT, "2827"); // 0xB0B
save = true;
}
if (!props.containsKey("inbound.length")) {
props.setProperty("inbound.length", "3");
save = true;
}
if (!props.containsKey("outbound.length")) {
props.setProperty("outbound.length", "3");
save = true;
}
if (!props.containsKey("inbound.lengthVariance")) {
props.setProperty("inbound.lengthVariance", "0");
save = true;
}
if (!props.containsKey("outbound.lengthVariance")) {
props.setProperty("outbound.lengthVariance", "0");
save = true;
}
if (!props.containsKey(PROP_BOB_HOST)) {
props.setProperty(PROP_BOB_HOST, "localhost");
save = true;
}
// PROP_RELIABILITY_NONE, PROP_RELIABILITY_BEST_EFFORT, PROP_RELIABILITY_GUARANTEED
if (!props.containsKey(PROP_CFG_VER)) {
props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE);
props.setProperty(PROP_CFG_VER,"1");
save = true;
}
if (save) {
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(_context.getConfigDir(), configLocation);
}
FileOutputStream fo = null;
try {
_log.warn("Writing new defaults file " + cfg.getAbsolutePath());
fo = new FileOutputStream(cfg);
props.store(fo, cfg.getAbsolutePath());
} catch (IOException ioe) {
_log.error("IOException on BOB config file " + cfg.getAbsolutePath(), ioe);
} finally {
if (fo != null) try { fo.close(); } catch (IOException ioe) {}
}
}
}
/**
* @since 0.9.10
*/
private void startListener() throws IOException {
listener = new ServerSocket(Integer.parseInt(props.getProperty(PROP_BOB_PORT)), 10, InetAddress.getByName(props.getProperty(PROP_BOB_HOST)));
listener.setSoTimeout(500); // .5 sec
}
/**
* @since 0.9.10
*/
private void startThread() {
I2PAppThread t = new I2PAppThread(this, "BOBListener");
t.start();
_runner = t;
}
/**
* @since 0.9.10
*/
public void run() {
if (listener == null) return;
changeState(RUNNING);
_log.info("BOB is now running.");
if (_mgr != null)
_mgr.register(this);
_context.portMapper().register(PortMapper.SVC_BOB, props.getProperty(PROP_BOB_HOST),
Integer.parseInt(props.getProperty(PROP_BOB_PORT)));
int i = 0;
boolean g = false;
spin.set(true);
try {
Socket server = null;
while (spin.get()) {
//DoCMDS connection;
try {
server = listener.accept();
server.setKeepAlive(true);
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
DoCMDS conn_c = new DoCMDS(spin, lock, server, props, database, _log);
Thread t = new I2PAppThread(conn_c);
t.setName("BOB.DoCMDS " + i);
t.start();
i++;
}
}
changeState(STOPPING);
} catch (Exception e) {
if (spin.get())
_log.error("Unexpected error while listening for connections", e);
else
e = null;
changeState(STOPPING, e);
} finally {
_log.info("BOB is now shutting down...");
_context.portMapper().unregister(PortMapper.SVC_BOB);
// Clean up everything.
try {
listener.close();
} catch (Exception ex) {
// nop
}
// Find all our "BOB.DoCMDS" threads, wait for them to be finished.
// We could order them to stop, but that could cause nasty issues in the locks.
visitAllThreads();
database.getReadLock();
NamedDB nickinfo;
try {
for (Object ndb : database.values()) {
nickinfo = (NamedDB) ndb;
nickinfo.getReadLock();
boolean released = false;
try {
if (nickinfo.get(P_RUNNING).equals(Boolean.TRUE) && nickinfo.get(P_STOPPING).equals(Boolean.FALSE) && nickinfo.get(P_STARTING).equals(Boolean.FALSE)) {
nickinfo.releaseReadLock();
released = true;
nickinfo.getWriteLock();
try {
nickinfo.add(P_STOPPING, Boolean.TRUE);
} finally {
nickinfo.releaseWriteLock();
}
}
} finally {
if (!released)
nickinfo.releaseReadLock();
}
}
} finally {
database.releaseReadLock();
}
changeState(STOPPED);
_log.info("BOB is now stopped.");
}
}
/**
* Find the root thread group,
* then find all theads with certain names and wait for them all to be dead.
*
*/
private static void visitAllThreads() {
ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
while (root.getParent() != null) {
root = root.getParent();
}
// Visit each thread group
waitjoin(root, 0, root.getName());
}
private static void waitjoin(ThreadGroup group, int level, String tn) {
// Get threads in `group'
int numThreads = group.activeCount();
Thread[] threads = new Thread[numThreads * 2];
numThreads = group.enumerate(threads, false);
// Enumerate each thread in `group' and wait for it to stop if it is one of ours.
for (int i = 0; i < numThreads; i++) {
// Get thread
Thread thread = threads[i];
if (thread.getName().startsWith("BOB.DoCMDS ")) {
try {
if (thread.isAlive()) {
try {
thread.join();
} catch (InterruptedException ex) {
}
}
} catch (SecurityException se) {
//nop
}
}
}
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups * 2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i = 0; i < numGroups; i++) {
waitjoin(groups[i], level + 1, groups[i].getName());
}
}
////// begin ClientApp interface
/**
* @since 0.9.10
*/
@Override
public void startup() throws IOException {
if (_state != INITIALIZED)
return;
changeState(STARTING);
try {
startListener();
} catch (IOException e) {
_log.error("Error starting BOB on"
+ props.getProperty(PROP_BOB_HOST)
+ ":" + props.getProperty(PROP_BOB_PORT), e);
changeState(START_FAILED, e);
throw e;
}
startThread();
}
/**
* @since 0.9.10
*/
@Override
public void shutdown(String[] args) {
if (_state != RUNNING)
return;
changeState(STOPPING);
spin.set(false);
if (_runner != null)
_runner.interrupt();
else
changeState(STOPPED);
}
/**
* @since 0.9.10
*/
@Override
public ClientAppState getState() {
return _state;
}
/**
* @since 0.9.10
*/
@Override
public String getName() {
return "BOB";
}
/**
* @since 0.9.10
*/
@Override
public String getDisplayName() {
return "BOB " + Arrays.toString(_args);
}
////// end ClientApp interface
////// begin ClientApp helpers
/**
* @since 0.9.10
*/
private void changeState(ClientAppState state) {
changeState(state, null);
}
/**
* @since 0.9.10
*/
private synchronized void changeState(ClientAppState state, Exception e) {
_state = state;
if (_mgr != null)
_mgr.notify(this, state, null, e);
}
////// end ClientApp helpers
}

View File

@ -1,996 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Locale;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.I2PClientFactory;
import net.i2p.data.Destination;
import net.i2p.util.I2PAppThread;
// needed only for debugging.
// import java.util.logging.Level;
// import java.util.logging.Logger;
/**
* Simplistic command parser for BOB
*
* @author sponge
*
*/
public class DoCMDS implements Runnable {
// FIX ME
// I need a better way to do versioning, but this will do for now.
public static final String BMAJ = "00", BMIN = "00", BREV = "10", BEXT = "";
public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT;
private final Socket server;
private final Properties props;
private final NamedDB database;
private String line;
private Destination d;
private ByteArrayOutputStream prikey;
private boolean dk, ns, ip, op;
private NamedDB nickinfo;
private final Logger _log;
private final AtomicBoolean LIVE;
private final AtomicBoolean lock;
/* database strings */
private static final String P_DEST = "DESTINATION";
private static final String P_INHOST = "INHOST";
private static final String P_INPORT = "INPORT";
private static final String P_KEYS = "KEYS";
private static final String P_NICKNAME = "NICKNAME";
private static final String P_OUTHOST = "OUTHOST";
private static final String P_OUTPORT = "OUTPORT";
private static final String P_PROPERTIES = "PROPERTIES";
private static final String P_QUIET = "QUIET";
private static final String P_RUNNING = "RUNNING";
private static final String P_STARTING = "STARTING";
private static final String P_STOPPING = "STOPPING";
/* command strings */
private static final String C_help = "help";
private static final String C_clear = "clear";
private static final String C_getdest = "getdest";
private static final String C_getkeys = "getkeys";
private static final String C_getnick = "getnick";
private static final String C_inhost = "inhost";
private static final String C_inport = "inport";
private static final String C_list = "list";
private static final String C_lookup = "lookup";
private static final String C_newkeys = "newkeys";
private static final String C_option = "option";
private static final String C_outhost = "outhost";
private static final String C_outport = "outport";
private static final String C_quiet = "quiet";
private static final String C_quit = "quit";
private static final String C_setkeys = "setkeys";
private static final String C_setnick = "setnick";
private static final String C_show = "show";
private static final String C_show_props = "showprops";
private static final String C_start = "start";
private static final String C_status = "status";
private static final String C_stop = "stop";
private static final String C_verify = "verify";
private static final String C_visit = "visit";
private static final String C_zap = "zap";
/* all the commands available, plus description */
private static final String C_ALL[][] = {
{C_help, C_help + " <command> * Get help on a command."},
{C_clear, C_clear + " * Clear the current nickname out of the list."},
{C_getdest, C_getdest + " * Return the destination for the current nickname."},
{C_getkeys, C_getkeys + " * Return the keypair for the current nickname."},
{C_getnick, C_getnick + " tunnelname * Set the nickname from the database."},
{C_inhost, C_inhost + " hostname | IP * Set the inbound hostname or IP."},
{C_inport, C_inport + " port_number * Set the inbound port number nickname listens on."},
{C_list, C_list + " * List all tunnels."},
{C_lookup, C_lookup + " * Lookup an i2p address."},
{C_newkeys, C_newkeys + " * Generate a new keypair for the current nickname."},
{C_option, C_option + " I2CPoption=something * Set an I2CP option. NOTE: Don't use any spaces."},
{C_outhost, C_outhost + " hostname | IP * Set the outbound hostname or IP."},
{C_outport, C_outport + " port_number * Set the outbound port that nickname contacts."},
{C_quiet, C_quiet + " True | False * Don't send to the application the incoming destination."},
{C_quit, C_quit + " * Quits this session with BOB."},
{C_setkeys, C_setkeys + " BASE64_keypair * Sets the keypair for the current nickname."},
{C_setnick, C_setnick + " nickname * Create a new nickname."},
{C_show, C_show + " * Display the status of the current nickname."},
{C_show_props, C_show_props + " * Display the properties of the current nickname."},
{C_start, C_start + " * Start the current nickname tunnel."},
{C_status, C_status + " nickname * Display status of a nicknamed tunnel."},
{C_stop, C_stop + " * Stops the current nicknamed tunnel."},
{C_verify, C_verify + " BASE64_key * Verifies BASE64 destination."},
{C_visit, C_visit + " * Thread dump to wrapper.log."},
{C_zap, C_zap + " * Shuts down BOB."},
{"", "COMMANDS: " + // this is ugly, but...
C_help + " " +
C_clear + " " +
C_getdest + " " +
C_getkeys + " " +
C_getnick + " " +
C_inhost + " " +
C_inport + " " +
C_list + " " +
C_lookup + " " +
C_newkeys + " " +
C_option + " " +
C_outhost + " " +
C_outport + " " +
C_quiet + " " +
C_quit + " " +
C_setkeys + " " +
C_setnick + " " +
C_show + " " +
C_show_props + " " +
C_start + " " +
C_status + " " +
C_stop + " " +
C_verify + " " +
C_visit + " " +
C_zap
},
{" ", " "} // end of list
};
/**
* @param LIVE
* @param server
* @param props
* @param database
* @param _log
*/
DoCMDS(AtomicBoolean LIVE, AtomicBoolean lock, Socket server, Properties props, NamedDB database, Logger _log) {
this.lock = lock;
this.LIVE = LIVE;
this.server = server;
this.props = new Properties();
this.database = database;
this._log = _log;
Lifted.copyProperties(props, this.props);
}
private void rlock() {
rlock(nickinfo);
}
private void rlock(NamedDB Arg) {
database.getReadLock();
Arg.getReadLock();
}
private void runlock() {
runlock(nickinfo);
}
private void runlock(NamedDB Arg) {
Arg.releaseReadLock();
database.releaseReadLock();
}
private void wlock() {
wlock(nickinfo);
}
private void wlock(NamedDB Arg) {
database.getWriteLock();
Arg.getWriteLock();
}
private void wunlock() {
wunlock(nickinfo);
}
private void wunlock(NamedDB Arg) {
Arg.releaseWriteLock();
database.releaseWriteLock();
}
/**
* Try to print info from the database
*
* @param out
* @param info
* @param key
*/
private void trypnt(PrintStream out, NamedDB info, String key) {
rlock(info);
try {
out.print(" " + key + ": ");
if (info.exists(key)) {
out.print(info.get(key));
} else {
out.print("not_set");
}
} finally {
runlock(info);
}
}
/**
* Print true or false if an object exists
*
* @param out
* @param info
* @param key
*/
private void tfpnt(PrintStream out, NamedDB info, String key) {
rlock(info);
try {
out.print(" " + key + ": ");
out.print(info.exists(key));
} finally {
runlock(info);
}
}
/**
* Print an error message
*
* @param out
*/
private static void nns(PrintStream out) {
out.println("ERROR no nickname has been set");
}
/**
* Dump various information from the database
*
* @param out
* @param info
*/
private void nickprint(PrintStream out, NamedDB info) {
trypnt(out, info, P_NICKNAME);
trypnt(out, info, P_STARTING);
trypnt(out, info, P_RUNNING);
trypnt(out, info, P_STOPPING);
tfpnt(out, info, P_KEYS);
trypnt(out, info, P_QUIET);
trypnt(out, info, P_INPORT);
trypnt(out, info, P_INHOST);
trypnt(out, info, P_OUTPORT);
trypnt(out, info, P_OUTHOST);
out.println();
}
/**
* Dump properties information from the database
*
* @param out
* @param info
*/
private void propprint(PrintStream out, NamedDB info) {
trypnt(out, info, P_PROPERTIES);
}
/**
* Print information on a specific record, indicated by NamedDB
* @param out
* @param Arg
*/
private void ttlpnt(PrintStream out, String Arg) {
database.getReadLock();
try {
if (database.exists(Arg)) {
out.print("DATA");
nickprint(out, (NamedDB) database.get(Arg));
}
} finally {
database.releaseReadLock();
}
}
/**
* Is this NamedDB's tunnel active?
*
* @param Arg
* @return true if the tunnel is active
*/
private boolean tunnelactive(NamedDB Arg) {
boolean retval;
rlock(Arg);
try {
retval = (Arg.get(P_STARTING).equals(Boolean.TRUE) ||
Arg.get(P_STOPPING).equals(Boolean.TRUE) ||
Arg.get(P_RUNNING).equals(Boolean.TRUE));
} finally {
runlock();
}
return retval;
}
/**
* Does the base64 information look OK
*
* @param data
* @return OK
*/
private static boolean is64ok(String data) {
try {
new Destination(data);
return true;
} catch (Exception e) {
return false;
}
}
/**
* The actual parser.
* It probabbly needs a rewrite into functions, but I kind-of like inline code.
*
*/
public void run() {
dk = ns = ip = op = false;
try {
try {
// Get input from the client
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintStream out = new PrintStream(server.getOutputStream());
quit:
{
die:
{
prikey = new ByteArrayOutputStream();
out.println("BOB " + BOBversion);
out.println("OK");
while ((line = in.readLine()) != null) {
StringTokenizer token = new StringTokenizer(line, " "); // use a space as a delimiter
String Command = "";
String Arg = "";
NamedDB info;
if (token.countTokens() != 0) {
Command = token.nextToken();
Command =
Command.toLowerCase(Locale.US);
if (token.countTokens() != 0) {
Arg = token.nextToken();
} else {
Arg = "";
}
// The rest of the tokens are considered junk,
// and discarded without any warnings.
if (Command.equals(C_help)) {
for (int i = 0; !C_ALL[i][0].equals(" "); i++) {
if (C_ALL[i][0].equalsIgnoreCase(Arg)) {
out.println("OK " + C_ALL[i][1]);
}
}
} else if (Command.equals(C_visit)) {
visitAllThreads();
out.println("OK ");
} else if (Command.equals(C_lookup)) {
Destination dest = null;
String reply = null;
if (Arg.endsWith(".i2p")) {
try {
//try {
//dest = I2PTunnel.destFromName(Arg);
//} catch (DataFormatException ex) {
//}
dest = I2PAppContext.getGlobalContext().namingService().lookup(Arg);
if(dest != null) {
reply = dest.toBase64();
}
} catch (NullPointerException npe) {
// Could not find the destination!?
}
}
if (reply == null) {
out.println("ERROR Address Not found.");
} else {
out.println("OK " + reply);
}
} else if (Command.equals(C_getdest)) {
if (ns) {
if (dk) {
rlock();
try {
out.println("OK " + nickinfo.get(P_DEST));
} catch (Exception e) {
break die;
} finally {
runlock();
}
} else {
out.println("ERROR keys not set.");
}
} else {
nns(out);
}
} else if (Command.equals(C_list)) {
// Produce a formatted list of all nicknames
database.getReadLock();
try {
for (Object ndb : database.values()) {
try {
info = (NamedDB) ndb;
out.print("DATA");
} catch (Exception e) {
break die;
}
nickprint(out, info);
}
} finally {
database.releaseReadLock();
}
out.println("OK Listing done");
} else if (Command.equals(C_quit)) {
// End the command session
break quit;
} else if (Command.equals(C_zap)) {
// Kill BOB!! (let's hope this works!)
LIVE.set(false);
// End the command session
break quit;
} else if (Command.equals(C_newkeys)) {
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
try {
// Make a new PublicKey and PrivateKey
prikey = new ByteArrayOutputStream();
d = I2PClientFactory.createClient().createDestination(prikey);
wlock();
try {
nickinfo.add(P_KEYS, prikey.toByteArray());
nickinfo.add(P_DEST, d.toBase64());
out.println("OK " + nickinfo.get(P_DEST));
} catch (Exception e) {
break die;
} finally {
wunlock();
}
dk = true;
} catch (I2PException ipe) {
_log.error("Error generating keys", ipe);
out.println("ERROR generating keys");
}
}
} catch (Exception e) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_getkeys)) {
// Return public key
if (dk) {
prikey = new ByteArrayOutputStream();
rlock();
try {
prikey.write(((byte[]) nickinfo.get(P_KEYS)));
} catch (Exception ex) {
break die;
} finally {
runlock();
}
out.println("OK " + net.i2p.data.Base64.encode(prikey.toByteArray()));
} else {
out.println("ERROR no public key has been set");
}
} else if (Command.equals(C_quiet)) {
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
wlock();
try {
nickinfo.add(P_QUIET, Boolean.valueOf(Arg));
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
out.println("OK Quiet set");
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_verify)) {
if (is64ok(Arg)) {
out.println("OK");
} else {
out.println("ERROR not in BASE64 format");
}
} else if (Command.equals(C_setkeys)) {
// Set the NamedDB to a privatekey in BASE64 format
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
try {
prikey = new ByteArrayOutputStream();
prikey.write(net.i2p.data.Base64.decode(Arg));
d = new Destination();
d.fromBase64(Arg);
} catch (Exception ex) {
Arg = "";
}
if ((Arg.length() == 884) && is64ok(Arg)) {
wlock();
try {
nickinfo.add(P_KEYS, prikey.toByteArray());
nickinfo.add(P_DEST, d.toBase64());
out.println("OK " + nickinfo.get(P_DEST));
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
dk = true;
} else {
out.println("ERROR not in BASE64 format");
}
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_setnick)) {
ns = dk = ip = op = false;
database.getReadLock();
try {
nickinfo = (NamedDB) database.get(Arg);
if (!tunnelactive(nickinfo)) {
nickinfo = null;
ns = true;
}
} catch (Exception b) {
nickinfo = null;
ns = true;
} finally {
database.releaseReadLock();
}
// Clears and Sets the initial NamedDB structure to work with
if (ns) {
nickinfo = new NamedDB();
wlock();
try {
database.add(Arg, nickinfo);
nickinfo.add(P_NICKNAME, Arg);
nickinfo.add(P_STARTING, Boolean.FALSE);
nickinfo.add(P_RUNNING, Boolean.FALSE);
nickinfo.add(P_STOPPING, Boolean.FALSE);
nickinfo.add(P_QUIET, Boolean.FALSE);
nickinfo.add(P_INHOST, "localhost");
nickinfo.add(P_OUTHOST, "localhost");
Properties Q = new Properties();
Lifted.copyProperties(this.props, Q);
Q.setProperty("inbound.nickname", Arg);
Q.setProperty("outbound.nickname", Arg);
nickinfo.add(P_PROPERTIES, Q);
} catch (Exception e) {
break die;
} finally {
wunlock();
}
out.println("OK Nickname set to " + Arg);
} else {
out.println("ERROR tunnel is active");
}
} else if (Command.equals(C_option)) {
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
StringTokenizer otoken = new StringTokenizer(Arg, "="); // use an equal sign as a delimiter
if (otoken.countTokens() != 2) {
out.println("ERROR too many or no options.");
} else {
String pname = otoken.nextToken();
String pval = otoken.nextToken();
wlock();
try {
Properties Q = (Properties) nickinfo.get(P_PROPERTIES);
Q.setProperty(pname, pval);
nickinfo.add(P_PROPERTIES, Q);
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
out.println("OK " + pname + " set to " + pval);
}
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_getnick)) {
// Get the NamedDB to work with...
boolean nsfail = false;
database.getReadLock();
try {
nickinfo = (NamedDB) database.get(Arg);
ns = true;
} catch (RuntimeException b) {
nsfail = true;
nns(out);
} finally {
database.releaseReadLock();
}
if (ns && !nsfail) {
rlock();
try {
dk = nickinfo.exists(P_KEYS);
ip = nickinfo.exists(P_INPORT);
op = nickinfo.exists(P_OUTPORT);
} catch (Exception ex) {
break die;
} finally {
runlock();
}
// Finally say OK.
out.println("OK Nickname set to " + Arg);
}
} else if (Command.equals(C_inport)) {
// Set the NamedDB inbound TO the router port
// app --> BOB
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
int prt;
wlock();
try {
nickinfo.kill(P_INPORT);
prt = Integer.parseInt(Arg);
if (prt > 1 && prt < 65536) {
try {
nickinfo.add(P_INPORT, Integer.valueOf(prt));
} catch (Exception ex) {
break die;
}
}
ip = nickinfo.exists(P_INPORT);
} catch (NumberFormatException nfe) {
out.println("ERROR not a number");
} finally {
wunlock();
}
if (ip) {
out.println("OK inbound port set");
} else {
out.println("ERROR port out of range");
}
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_outport)) {
// Set the NamedDB outbound FROM the router port
// BOB --> app
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
int prt;
wlock();
try {
nickinfo.kill(P_OUTPORT);
prt = Integer.parseInt(Arg);
if (prt > 1 && prt < 65536) {
nickinfo.add(P_OUTPORT, Integer.valueOf(prt));
}
ip = nickinfo.exists(P_OUTPORT);
} catch (NumberFormatException nfe) {
out.println("ERROR not a number");
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
if (ip) {
out.println("OK outbound port set");
} else {
out.println("ERROR port out of range");
}
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_inhost)) {
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
wlock();
try {
nickinfo.add(P_INHOST, Arg);
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
out.println("OK inhost set");
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_outhost)) {
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
wlock();
try {
nickinfo.add(P_OUTHOST, Arg);
} catch (Exception ex) {
break die;
} finally {
wunlock();
}
out.println("OK outhost set");
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_show)) {
// Get the current NamedDB properties
if (ns) {
out.print("OK");
nickprint(out, nickinfo);
} else {
nns(out);
}
} else if (Command.equals(C_show_props)) {
// Get the current options properties
if (ns) {
out.print("OK");
propprint(out, nickinfo);
} else {
nns(out);
}
} else if (Command.equals(C_start)) {
// Start the tunnel, if we have all the information
if (ns && dk && (ip || op)) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
MUXlisten tunnel;
try {
while (!lock.compareAndSet(false, true)) {
// wait
}
tunnel = new MUXlisten(lock, database, nickinfo, _log);
Thread t = new I2PAppThread(tunnel);
t.start();
// try {
// Thread.sleep(1000 * 10); // Slow down the startup.
// } catch(InterruptedException ie) {
// // ignore it
// }
out.println("OK tunnel starting");
} catch (I2PException e) {
lock.set(false);
out.println("ERROR starting tunnel: " + e);
} catch (IOException e) {
lock.set(false);
out.println("ERROR starting tunnel: " + e);
}
}
} catch (Exception ex) {
break die;
}
} else {
out.println("ERROR tunnel settings incomplete");
}
} else if (Command.equals(C_stop)) {
// Stop the tunnel, if it is running
if (ns) {
rlock();
boolean released = false;
try {
if (nickinfo.get(P_RUNNING).equals(Boolean.TRUE) && nickinfo.get(P_STOPPING).equals(Boolean.FALSE) && nickinfo.get(P_STARTING).equals(Boolean.FALSE)) {
runlock();
released = true;
wlock();
try {
nickinfo.add(P_STOPPING, Boolean.TRUE);
} catch (Exception e) {
break die;
} finally {
wunlock();
}
out.println("OK tunnel stopping");
} else {
out.println("ERROR tunnel is inactive");
}
} catch (Exception e) {
break die;
} finally {
if (!released)
runlock();
}
} else {
nns(out);
}
} else if (Command.equals(C_clear)) {
// Clear use of the NamedDB if stopped
if (ns) {
try {
if (tunnelactive(nickinfo)) {
out.println("ERROR tunnel is active");
} else {
database.getWriteLock();
try {
database.kill((String) nickinfo.get(P_NICKNAME));
} catch (Exception e) {
} finally {
database.releaseWriteLock();
}
dk = ns = ip = op = false;
out.println("OK cleared");
}
} catch (Exception ex) {
break die;
}
} else {
nns(out);
}
} else if (Command.equals(C_status)) {
database.getReadLock();
try {
if (database.exists(Arg)) {
// Show status of a NamedDB
out.print("OK ");
try {
ttlpnt(out, Arg);
} catch (Exception e) {
out.println(); // this will cause an IOE if IOE
break die;
}
} else {
nns(out);
}
} catch (Exception e) {
break die;
} finally {
database.releaseReadLock();
}
} else {
out.println("ERROR UNKNOWN COMMAND! Try help");
}
}
}
} // die
out.print("ERROR A really bad error just happened, ");
} // quit
// Say goodbye.
out.println("OK Bye!");
} catch (IOException ioe) {
// not really needed, except to debug.
// BOB.warn("IOException on socket listen: " + ioe);
// ioe.printStackTrace();
}
} finally {
try {
server.close();
} catch (IOException ex) {
// nop
}
}
}
// Debugging... None of this is normally used.
/**
* Find the root thread group and print them all.
*
*/
private void visitAllThreads() {
ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
while (root.getParent() != null) {
root = root.getParent();
}
// Visit each thread group
visit(root, 0, root.getName());
}
/**
* Recursively visits all thread groups under `group' and dumps them.
* @param group ThreadGroup to visit
* @param level Current level
*/
private static void visit(ThreadGroup group, int level, String tn) {
// Get threads in `group'
int numThreads = group.activeCount();
Thread[] threads = new Thread[numThreads * 2];
numThreads = group.enumerate(threads, false);
String indent = "------------------------------------".substring(0, level) + "-> ";
// Enumerate each thread in `group' and print it.
for (int i = 0; i < numThreads; i++) {
// Get thread
Thread thread = threads[i];
System.out.println("BOB: " + indent + tn + ": " + thread.toString());
}
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups * 2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i = 0; i < numGroups; i++) {
visit(groups[i], level + 1, groups[i].getName());
}
}
}

View File

@ -1,99 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.util.I2PAppThread;
/**
* Listen on I2P and connect to TCP
*
* @author sponge
*/
public class I2Plistener implements Runnable {
private final NamedDB info, database;
private final Logger _log;
private final I2PServerSocket serverSocket;
private final AtomicBoolean lives;
/**
* Constructor
* @param SS
* @param S unused
* @param info
* @param database
* @param _log
*/
I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
this.serverSocket = SS;
this.lives = lives;
}
/**
* Simply listen on I2P port, and thread connections
*
*/
public void run() {
boolean g = false;
I2PSocket sessSocket = null;
int conn = 0;
try {
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
g = false;
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}
}
} catch (I2PException e) {
// bad stuff
System.out.println("Exception " + e);
}
} finally {
try {
serverSocket.close();
} catch (I2PException ex) {
}
// System.out.println("I2Plistener: Close");
}
}
}

View File

@ -1,169 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.data.DataHelper;
import net.i2p.util.I2PAppThread;
/**
* Process I2P-&gt;TCP
*
* @author sponge
*/
public class I2PtoTCP implements Runnable {
private I2PSocket I2P;
private final NamedDB info, database;
private Socket sock;
private final AtomicBoolean lives;
/**
* Constructor
*
* @param I2Psock
* @param info
* @param database
*/
I2PtoTCP(I2PSocket I2Psock, NamedDB info, NamedDB database, AtomicBoolean lives) {
this.I2P = I2Psock;
this.info = info;
this.database = database;
this.lives = lives;
}
private void rlock() {
database.getReadLock();
info.getReadLock();
}
private void runlock() {
info.releaseReadLock();
database.releaseReadLock();
}
/**
* I2P stream to TCP stream thread starter
*
*/
public void run() {
String host;
int port;
boolean tell;
InputStream in = null;
OutputStream out = null;
InputStream Iin = null;
OutputStream Iout = null;
Thread t = null;
Thread q = null;
try {
die:
{
try {
rlock();
try {
host = info.get("OUTHOST").toString();
port = Integer.parseInt(info.get("OUTPORT").toString());
tell = info.get("QUIET").equals(Boolean.FALSE);
} catch (Exception e) {
break die;
} finally {
runlock();
}
sock = new Socket(host, port);
sock.setKeepAlive(true);
// make readers/writers
in = sock.getInputStream();
out = sock.getOutputStream();
Iin = I2P.getInputStream();
Iout = I2P.getOutputStream();
I2P.setReadTimeout(0); // temp bugfix, this *SHOULD* be the default
if (tell) {
// tell who is connecting
out.write(DataHelper.getASCII(I2P.getPeerDestination().toBase64()));
out.write(10); // nl
out.flush(); // not really needed, but...
}
// setup to cross the streams
TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P
TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app
t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
// Fire!
t.start();
q.start();
while (t.isAlive() && q.isAlive() && lives.get()) { // AND is used here to kill off the other thread
try {
Thread.sleep(10); //sleep for 10 ms
} catch (InterruptedException e) {
break die;
}
}
// System.out.println("I2PtoTCP: Going away...");
} catch (Exception e) {
// System.out.println("I2PtoTCP: Owch! damn!");
break die;
}
} // die
} finally {
try {
in.close();
} catch (Exception ex) {
}
try {
out.close();
} catch (Exception ex) {
}
try {
Iin.close();
} catch (Exception ex) {
}
try {
Iout.close();
} catch (Exception ex) {
}
try {
t.interrupt();
} catch (Exception e) {
}
try {
q.interrupt();
} catch (Exception e) {
}
try {
// System.out.println("I2PtoTCP: Close I2P");
I2P.close();
} catch (Exception e) {
tell = false;
}
//System.out.println("I2PtoTCP: Closed I2P");
try {
// System.out.println("I2PtoTCP: Close sock");
sock.close();
} catch (Exception e) {
tell = false;
}
// System.out.println("I2PtoTCP: Done");
}
}
}

View File

@ -1,46 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.util.Map;
import java.util.Properties;
/**
* Sets of "friendly" utilities to make life easier.
* Any "Lifted" code will apear here, and credits given.
* It's better to "Lift" a small chunk of "free" code than add in piles of
* code we don't need, and don't want.
*
* @author sponge
*/
public class Lifted {
/**
* Copy a set of properties from one Property to another.
* Lifted from Apache Derby code svn repository.
* Liscenced as follows:
* http://svn.apache.org/repos/asf/db/derby/code/trunk/LICENSE
*
* @param src_prop Source set of properties to copy from.
* @param dest_prop Dest Properties to copy into.
*
**/
public static void copyProperties(Properties src_prop, Properties dest_prop) {
for (Map.Entry<Object, Object> e : src_prop.entrySet()) {
dest_prop.put((String)e.getKey(), (String)e.getValue());
}
}
}

View File

@ -1,44 +0,0 @@
package net.i2p.BOB;
import net.i2p.util.Log;
public class Logger {
public Log log;
private boolean logToStdout;
public Logger(Log log, boolean logToStdout) {
this.log = log;
this.logToStdout = logToStdout;
}
public void info(String msg) {
if (logToStdout)
System.out.println("INFO: " + msg);
if (log.shouldLog(Log.INFO))
log.info(msg);
}
public void warn(String msg) {
warn(msg, null);
}
public void warn(String msg, Throwable e) {
if (logToStdout) {
System.out.println("WARNING: " + msg);
if (e != null)
e.printStackTrace();
}
if (log.shouldLog(Log.WARN))
log.warn(msg, e);
}
public void error(String msg, Throwable e) {
if (logToStdout) {
System.out.println("ERROR: " + msg);
if (e != null)
e.printStackTrace();
}
if (log.shouldLog(Log.ERROR))
log.error(msg, e);
}
}

View File

@ -1,416 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PException;
import net.i2p.client.I2PClient;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
/**
*
* Multiplex listeners for TCP and I2P
*
* @author sponge
*/
public class MUXlisten implements Runnable {
private final NamedDB database, info;
private final Logger _log;
private final I2PSocketManager socketManager;
private final ByteArrayInputStream prikey;
private ThreadGroup tg;
private final String N;
private ServerSocket listener;
private static final int backlog = 50; // should this be more? less?
private final boolean go_out;
private final boolean come_in;
private final AtomicBoolean lock;
private final AtomicBoolean lives;
/**
* Constructor Will fail if INPORT is occupied.
*
* @param info DB entry for this tunnel
* @param database master database of tunnels
* @param _log
* @throws net.i2p.I2PException
* @throws java.io.IOException
*/
MUXlisten(AtomicBoolean lock, NamedDB database, NamedDB info, Logger _log) throws I2PException, IOException, RuntimeException {
int port = 0;
InetAddress host = null;
this.lock = lock;
this.tg = null;
this.database = database;
this.info = info;
this._log = _log;
lives = new AtomicBoolean(false);
try {
wlock();
try {
this.info.add("STARTING", Boolean.TRUE);
} finally {
wunlock();
}
Properties Q = new Properties();
rlock();
try {
N = this.info.get("NICKNAME").toString();
prikey = new ByteArrayInputStream((byte[]) info.get("KEYS"));
// Make a new copy so that anything else won't muck with our database.
Properties R = (Properties) info.get("PROPERTIES");
Lifted.copyProperties(R, Q);
this.go_out = info.exists("OUTPORT");
this.come_in = info.exists("INPORT");
if (this.come_in) {
port = Integer.parseInt(info.get("INPORT").toString());
host = InetAddress.getByName(info.get("INHOST").toString());
}
} finally {
runlock();
}
String i2cpHost = Q.getProperty(I2PClient.PROP_TCP_HOST, "127.0.0.1");
int i2cpPort = I2PClient.DEFAULT_LISTEN_PORT;
String i2cpPortStr = Q.getProperty(I2PClient.PROP_TCP_PORT);
if (i2cpPortStr != null) {
try {
i2cpPort = Integer.parseInt(i2cpPortStr);
} catch (NumberFormatException nfe) {
throw new IllegalArgumentException("Invalid I2CP port specified [" + i2cpPortStr + "]");
}
}
if (this.come_in) {
this.listener = new ServerSocket(port, backlog, host);
}
socketManager = I2PSocketManagerFactory.createManager(
prikey, i2cpHost, i2cpPort, Q);
} catch (IOException e) {
// Something went bad.
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
throw e;
} catch (RuntimeException e) {
// Something went bad.
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
throw e;
} catch (Exception e) {
// Something else went bad.
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
e.printStackTrace();
throw new RuntimeException(e);
}
}
private void rlock() {
database.getReadLock();
info.getReadLock();
}
private void runlock() {
info.releaseReadLock();
database.releaseReadLock();
}
private void wlock() {
database.getWriteLock();
info.getWriteLock();
}
private void wunlock() {
info.releaseWriteLock();
database.releaseWriteLock();
}
/**
* MUX sockets, fire off a thread to connect, get destination info, and do I/O
*
*/
public void run() {
I2PServerSocket SS = null;
Thread t = null;
Thread q = null;
try {
wlock();
try {
try {
info.add("RUNNING", Boolean.TRUE);
} catch (Exception e) {
lock.set(false);
return;
}
} catch (Exception e) {
lock.set(false);
return;
} finally {
wunlock();
}
lives.set(true);
lock.set(false);
quit:
{
try {
tg = new ThreadGroup(N);
{
// toss the connections to a new threads.
// will wrap with TCP and UDP when UDP works
if (go_out) {
// I2P -> TCP
SS = socketManager.getServerSocket();
I2Plistener conn = new I2Plistener(SS, socketManager, info, database, _log, lives);
t = new I2PAppThread(tg, conn, "BOBI2Plistener " + N);
t.start();
}
if (come_in) {
// TCP -> I2P
TCPlistener conn = new TCPlistener(listener, socketManager, info, database, _log, lives);
q = new I2PAppThread(tg, conn, "BOBTCPlistener " + N);
q.start();
}
wlock();
try {
try {
info.add("STARTING", Boolean.FALSE);
} catch (Exception e) {
break quit;
}
} catch (Exception e) {
break quit;
} finally {
wunlock();
}
boolean spin = true;
while (spin && lives.get()) {
try {
Thread.sleep(1000); //sleep for 1 second
} catch (InterruptedException e) {
break quit;
}
rlock();
try {
try {
spin = info.get("STOPPING").equals(Boolean.FALSE);
} catch (Exception e) {
break quit;
}
} catch (Exception e) {
break quit;
} finally {
runlock();
}
}
} // die
} catch (Exception e) {
// System.out.println("MUXlisten: Caught an exception" + e);
break quit;
}
} // quit
} finally {
lives.set(false);
// Some grace time.
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
try {
wlock();
try {
info.add("STARTING", Boolean.FALSE);
info.add("STOPPING", Boolean.TRUE);
info.add("RUNNING", Boolean.FALSE);
} catch (Exception e) {
lock.set(false);
return;
}
} catch (Exception e) {
} finally {
wunlock();
}
// Start cleanup.
while (!lock.compareAndSet(false, true)) {
// wait
}
if (SS != null) {
try {
SS.close();
} catch (I2PException ex) {
}
}
if (listener != null) {
try {
listener.close();
} catch (IOException e) {
}
}
// Some grace time.
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
// Hopefully nuke stuff here...
{
String groupName = tg.getName();
try {
_log.warn("destroySocketManager " + groupName);
socketManager.destroySocketManager();
_log.warn("destroySocketManager Successful" + groupName);
} catch (Exception e) {
// nop
_log.warn("destroySocketManager Failed" + groupName);
_log.warn(e.toString());
}
}
// zero out everything.
try {
wlock();
try {
info.add("STARTING", Boolean.FALSE);
info.add("STOPPING", Boolean.FALSE);
info.add("RUNNING", Boolean.FALSE);
} catch (Exception e) {
lock.set(false);
return;
} finally {
wunlock();
}
} catch (Exception e) {
}
lock.set(false); // Should we force waiting for all threads??
// Wait around till all threads are collected.
if (tg != null) {
String groupName = tg.getName();
// System.out.println("BOB: MUXlisten: Starting thread collection for: " + groupName);
_log.warn("BOB: MUXlisten: Starting thread collection for: " + groupName);
if (tg.activeCount() + tg.activeGroupCount() != 0) {
// visit(tg, 0, groupName);
int foo = tg.activeCount() + tg.activeGroupCount();
// hopefully no longer needed!
// int bar = lives;
// System.out.println("BOB: MUXlisten: Waiting on threads for " + groupName);
// System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + groupName);
// visit(tg, 0, groupName);
// System.out.println("BOB: MUXlisten: ThreadGroup dump END " + groupName + "\n");
// Happily spin forever :-(
while (foo != 0) {
foo = tg.activeCount() + tg.activeGroupCount();
// if (lives != bar && lives != 0) {
// System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + groupName);
// visit(tg, 0, groupName);
// System.out.println("BOB: MUXlisten: ThreadGroup dump END " + groupName + "\n");
// }
// bar = lives;
try {
Thread.sleep(100); //sleep for 100 ms (One tenth second)
} catch (InterruptedException ex) {
// nop
}
}
}
// System.out.println("BOB: MUXlisten: Threads went away. Success: " + groupName);
_log.warn("BOB: MUXlisten: Threads went away. Success: " + groupName);
tg.destroy();
// Zap reference to the ThreadGroup so the JVM can GC it.
tg = null;
}
try {
socketManager.destroySocketManager();
} catch (Exception e) {
// nop
}
}
}
// Debugging... None of this is normally used.
/**
* Find the root thread group and print them all.
*
*/
private void visitAllThreads() {
ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
while (root.getParent() != null) {
root = root.getParent();
}
// Visit each thread group
visit(root, 0, root.getName());
}
/**
* Recursively visits all thread groups under `group' and dumps them.
* @param group ThreadGroup to visit
* @param level Current level
*/
private static void visit(ThreadGroup group, int level, String tn) {
// Get threads in `group'
int numThreads = group.activeCount();
Thread[] threads = new Thread[numThreads * 2];
numThreads = group.enumerate(threads, false);
String indent = "------------------------------------".substring(0, level) + "-> ";
// Enumerate each thread in `group' and print it.
for (int i = 0; i < numThreads; i++) {
// Get thread
Thread thread = threads[i];
System.out.println("BOB: MUXlisten: " + tn + ": " + indent + thread.toString());
}
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups * 2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i = 0; i < numGroups; i++) {
visit(groups[i], level + 1, groups[i].getName());
}
}
}

View File

@ -1,39 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import net.i2p.util.SimpleTimer2;
/**
* Start from command line
*
* @author sponge
*
*/
public class Main {
/**
* @param args the command line arguments, these are not used yet
*/
public static void main(String[] args) {
// THINK THINK THINK THINK THINK THINK
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
BOB.main(args);
Y2.stop();
}
}

View File

@ -1,106 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* Internal database to relate nicknames to options to values
*
* @author sponge
*/
public class NamedDB {
private final Map<String, Object> data;
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(false);
/**
*
*/
public NamedDB() {
this.data = new HashMap<String, Object>();
}
public void getReadLock() {
lock.readLock().lock();
}
public void releaseReadLock() {
lock.readLock().unlock();
}
public void getWriteLock() {
lock.writeLock().lock();
}
public void releaseWriteLock() {
lock.writeLock().unlock();
}
/**
* Delete an object if it exists
*
* @param key
*/
public void kill(String key) {
data.remove(key);
}
/**
* Add object, deletes the old one if it exists
*
* @param key
* @param val
*/
public void add(String key, Object val) {
data.put(key, val);
}
/**
* Get the object, and return it, throws RuntimeException if not found
*
* @param key non-null
* @return Object non-null
* @throws java.lang.RuntimeException if not found
*/
public Object get(String key) throws RuntimeException {
Object rv = data.get(key);
if (rv != null)
return rv;
throw new RuntimeException("Key not found");
}
/**
* returns true if an object exists, else returns false
*
* @param key
* @return true if an object exists, else returns false
*/
public boolean exists(String key) {
return data.containsKey(key);
}
/**
* @since 0.9.29 replaces getcount() and getnext(int)
*/
public Collection<Object> values() {
return data.values();
}
}

View File

@ -1,121 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Shove data from one stream to the other.
*
* @author sponge
*/
public class TCPio implements Runnable {
private final InputStream Ain;
private final OutputStream Aout;
private final AtomicBoolean lives;
/**
* Constructor
*
* @param Ain InputStream
* @param Aout OutputStream
*
* param database
*/
TCPio(InputStream Ain, OutputStream Aout, AtomicBoolean lives) {
this.Ain = Ain;
this.Aout = Aout;
this.lives = lives;
}
/**
* Copy from source to destination...
* and yes, we are totally OK to block here on writes,
* The OS has buffers, and I intend to use them.
* We send an interrupt signal to the threadgroup to
* unwedge any pending writes.
*
*/
public void run() {
/*
* NOTE:
* The write method of OutputStream calls the write method of
* one argument on each of the bytes to be written out.
* Subclasses are encouraged to override this method and provide
* a more efficient implementation.
*
* So, is this really a performance problem?
* Should we expand to several bytes?
* I don't believe there would be any gain, since read method
* has the same reccomendations. If anyone has a better way to
* do this, I'm interested in performance improvements.
*
* --Sponge
*
* Tested with 128 bytes, and there was no performance gain.
* 8192 bytes did lower load average across many connections.
* Should I raise it higer? The correct thing to do would be to
* override... perhaps use NTCP, but I2P's streaming lib lacks
* anything NTCP compatable.
*
* --Sponge
*/
int b;
byte a[] = new byte[8192];
try {
try {
while (lives.get()) {
b = Ain.read(a, 0, 8192);
if (b > 0) {
Aout.write(a, 0, b);
} else if (b == 0) {
while(Ain.available() == 0) {
Thread.sleep(20);
}
} else {
/* according to the specs:
*
* The total number of bytes read into the buffer,
* or -1 if there is no more data because the end of
* the stream has been reached.
*
*/
// System.out.println("TCPio: End Of Stream");
break;
}
}
} catch (Exception e) {
}
// System.out.println("TCPio: Leaving.");
} finally {
// Eject!!! Eject!!!
//System.out.println("TCPio: Caught an exception " + e);
try {
Ain.close();
} catch (IOException ex) {
}
try {
Aout.close();
} catch (IOException ex) {
}
}
}
}

View File

@ -1,95 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.util.I2PAppThread;
/**
* Listen on TCP port and connect to I2P
*
* @author sponge
*/
public class TCPlistener implements Runnable {
private final NamedDB info, database;
private final Logger _log;
private final I2PSocketManager socketManager;
private final ServerSocket listener;
private final AtomicBoolean lives;
/**
* Constructor
* @param S
* @param info
* @param database
* @param _log
*/
TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
this.socketManager = S;
this.listener = listener;
this.lives = lives;
}
/**
* Simply listen on TCP port, and thread connections
*
*/
public void run() {
boolean g = false;
int conn = 0;
Socket server = null;
try {
try {
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
server.setKeepAlive(true);
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
}
} catch (IOException ioe) {
}
} finally {
try {
listener.close();
} catch (IOException ex) {
}
//System.out.println("TCPlistener: " + Thread.currentThread().getName() + "Done.");
}
}
}

View File

@ -1,222 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.IOException;
import java.io.InputStream;
import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.NoRouteToHostException;
import java.net.Socket;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
import net.i2p.util.I2PAppThread;
/**
*
* Process TCP-&gt;I2P
*
* @author sponge
*/
public class TCPtoI2P implements Runnable {
private I2PSocket I2P;
private final Socket sock;
private final I2PSocketManager socketManager;
private final AtomicBoolean lives;
/**
* Constructor
* @param i2p
* @param socket
* @param info unused
* @param database unused
*/
TCPtoI2P(I2PSocketManager i2p, Socket socket, NamedDB info, NamedDB database, AtomicBoolean lives) {
this.sock = socket;
this.socketManager = i2p;
this.lives = lives;
}
/**
* This is a more forgiving readline,
* it works on unbuffered streams
*
* @param in
* @return line of text as a String
* @throws IOException
*/
private static String lnRead(InputStream in) throws IOException {
StringBuilder builder = new StringBuilder();
int b;
char c;
while (true) {
b = in.read();
if (b == 13) {
//skip CR
continue;
}
if (b < 20 || b > 126) {
// exit on anything not legal
break;
}
c = (char) (b & 0x7f); // We only care about ASCII
builder.append(c);
}
return builder.toString();
}
/**
* Print an error message to out
*
* @param e
* @param out
* @throws java.io.IOException
*/
private void Emsg(String e, OutputStream out) throws IOException {
// Debugging System.out.println("ERROR TCPtoI2P: " + e);
out.write("ERROR ".concat(e).getBytes("UTF-8"));
out.write(13);
out.write(10);
out.flush();
}
/**
* TCP stream to I2P stream thread starter
*
*/
public void run() {
String line, input;
InputStream Iin = null;
OutputStream Iout = null;
InputStream in = null;
OutputStream out = null;
Thread t = null;
Thread q = null;
try {
try {
in = sock.getInputStream();
out = sock.getOutputStream();
line = lnRead(in);
input = line.toLowerCase(Locale.US);
Destination dest = null;
if (input.endsWith(".i2p")) {
//dest = I2PTunnel.destFromName(input);
dest = I2PAppContext.getGlobalContext().namingService().lookup(input);
if (dest != null) {
line = dest.toBase64();
} else {
Emsg("Can't find destination: " + input, out);
return;
}
}
dest = new Destination();
dest.fromBase64(line);
try {
// get a client socket
I2P = socketManager.connect(dest);
I2P.setReadTimeout(0); // temp bugfix, this *SHOULD* be the default
// make readers/writers
Iin = I2P.getInputStream();
Iout = I2P.getOutputStream();
// setup to cross the streams
TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P
TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app
t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
// Fire!
t.start();
q.start();
while (t.isAlive() && q.isAlive() && lives.get()) { // AND is used here to kill off the other thread
Thread.sleep(10); //sleep for 10 ms
}
} catch (I2PException e) {
Emsg(e.toString(), out);
} catch (ConnectException e) {
Emsg(e.toString(), out);
} catch (NoRouteToHostException e) {
Emsg(e.toString(), out);
}
} catch (InterruptedIOException e) {
// We're breaking away.
} catch (InterruptedException e) {
// ditto
} catch (IOException e) {
try {
Emsg(e.toString(), out);
} catch (IOException ex) {
// ditto
}
} catch (DataFormatException e) {
try {
Emsg(e.toString(), out);
} catch (IOException ex) {
// ditto
}
}
} finally {
try {
t.interrupt();
} catch (Exception e) {
}
try {
q.interrupt();
} catch (Exception e) {
}
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
try {
Iin.close();
} catch (Exception e) {
}
try {
Iout.close();
} catch (Exception e) {
}
try {
// System.out.println("TCPtoI2P: Close I2P");
I2P.close();
} catch (Exception e) {
}
try {
// System.out.println("TCPtoI2P: Close sock");
sock.close();
} catch (Exception e) {
}
}
// System.out.println("TCPtoI2P: Done.");
}
}

View File

@ -1,140 +0,0 @@
/**
* WTFPL
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and license questions.
*/
package net.i2p.BOB;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import net.i2p.client.I2PSession;
import net.i2p.client.I2PSessionException;
import net.i2p.client.I2PSessionListener;
import net.i2p.data.Destination;
import net.i2p.util.Log;
/**
* UDP IO on I2P
*
* FIX ME: Untested, and incomplete!
* I have no personal need to UDP yet,
* however alot of p2p apps pretty much demand it.
* The skeletal frame is here, just needs to be finished.
*
* @author sponge
* @deprecated incomplete, unused
*/
@Deprecated
public class UDPIOthread implements I2PSessionListener, Runnable {
private final NamedDB info;
private final Log _log;
private final Socket socket;
private DataInputStream in;
private DataOutputStream out;
private final I2PSession _session;
// FIXME never set
private Destination _peerDestination;
private boolean up;
/**
* Constructor
* @param info
* @param _log
* @param socket
* @param _session
*/
UDPIOthread(NamedDB info, Log _log, Socket socket, I2PSession _session) {
this.info = info;
this._log = _log;
this.socket = socket;
this._session = _session;
}
/**
*
*/
public void run() {
byte data[] = new byte[1024];
up = true;
try {
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
while (up) {
int c = in.read(data);
// Note: could do a loopback test here with a wrapper.
boolean ok = _session.sendMessage(_peerDestination, data, 0, c);
if (!ok) {
up = false; // Is this the right thing to do??
}
}
} catch (IOException ioe) {
_log.error("Error running", ioe);
} catch (I2PSessionException ise) {
_log.error("Error communicating", ise);
// } catch(DataFormatException dfe) {
// _log.error("Peer destination file is not valid", dfe);
} finally {
if (_session != null) {
try {
_session.destroySession();
} catch (I2PSessionException ise) {
// ignored
}
}
}
}
/**
*
* @param session
* @param msgId
* @param size
*/
public void messageAvailable(I2PSession session, int msgId, long size) {
// _log.debug("Message available: id = " + msgId + " size = " + size);
try {
byte msg[] = session.receiveMessage(msgId);
if (msg != null) {
out.write(msg);
out.flush();
}
} catch (I2PSessionException ise) {
up = false;
} catch (IOException ioe) {
up = false;
}
}
// Great, can these be used to kill ourselves.
/** required by {@link I2PSessionListener I2PSessionListener} to notify of disconnect */
public void disconnected(I2PSession session) {
_log.debug("Disconnected");
// up = false;
}
/** required by {@link I2PSessionListener I2PSessionListener} to notify of error */
public void errorOccurred(I2PSession session, String message, Throwable error) {
_log.debug("Error occurred: " + message, error);
// up = false;
}
/** required by {@link I2PSessionListener I2PSessionListener} to notify of abuse */
public void reportAbuse(I2PSession session, int severity) {
_log.debug("Abuse reported of severity " + severity);
// up = false;
}
}

View File

@ -1,21 +0,0 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) sponge
Planet Earth
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
See...
http://sam.zoy.org/wtfpl/
and
http://en.wikipedia.org/wiki/WTFPL
...for any additional details and license questions.

View File

@ -1,5 +0,0 @@
<html>
<body>
<p>BOB, the Basic Open Bridge, allows TCP applications to talk over I2P.</p>
</body>
</html>

View File

@ -1,43 +0,0 @@
addressbook v2.0.2 - A simple name resolution mechanism for I2P
addressbook is a simple implementation of subscribable address books for I2P.
Addresses are stored in userhosts.txt and a second copy of the address book is
placed on your eepsite as hosts.txt.
subscriptions.txt contains a list of urls to check for new addresses.
Since the urls are checked in order, and conflicting addresses are not added,
addressbook.subscriptions can be considered to be ranked in order of trust.
The system created by addressbook is similar to the early days of DNS,
when everyone ran a local name server. The major difference is the lack of
authority. Name cannot be guaranteed to be globally unique, but in practise
they probably will be, for a variety of social reasons.
Requirements
************
i2p with a running http proxy
Installation and Usage
**********************
1. Unzip addressbook-%ver.zip into your i2p directory.
2. Restart your router.
The addressbook daemon will automatically run while the router is up.
Aside from the daemon itself, the other elements of the addressbook interface
are the config.txt, myhosts.txt, and subscriptions.txt files found in the addressbook
directory.
config.txt is the configuration file for addressbook.
myhosts.txt is the addressbook master address book. Addresses placed in this file
take precidence over those in the router address book and in remote address books.
If changes are made to this file, they will be reflected in the router address book
and published address book after the next update. Do not make changes directly to the
router address book, as they could be lost during an update.
subscriptions.txt is the subscription list for addressbook. Each entry is an absolute
url to a file in hosts.txt format. Since the list is checked in order, url's should be
listed in order of trust.

View File

@ -1,3 +1,5 @@
apply plugin:'war'
sourceSets {
main {
java {
@ -7,6 +9,14 @@ sourceSets {
}
dependencies {
compile project(':core')
compile project(':apps:jetty')
providedCompile project(':core')
providedCompile project(':apps:jetty')
}
war {
rootSpec.exclude('**/*.class')
}
artifacts {
archives war
}

View File

@ -7,7 +7,9 @@
<property name="jar" value="addressbook.jar"/>
<property name="war" value="addressbook.war"/>
<property name="javac.compilerargs" value="" />
<property name="javac.version" value="1.7" />
<property name="javac.version" value="1.8" />
<property name="javac.release" value="8" />
<property name="manifest.classpath.name" value="Class-Path" />
<target name="all" depends="jar, emptyWar"/>
@ -40,7 +42,9 @@
<target name="compile" depends="init, depend, warUpToDate">
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
release="${javac.release}"
includeAntRuntime="false"
encoding="UTF-8"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -54,8 +58,14 @@
<property name="workspace.changes.tr" value="" />
<jar basedir="${build}" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="net.i2p.addressbook.Daemon"/>
<attribute name="${manifest.classpath.name}" value="i2p.jar" />
<attribute name="Main-Class" value="net.i2p.addressbook.CommandLine"/>
<attribute name="Specification-Title" value="I2P Address Book" />
<attribute name="Specification-Version" value="${api.version}" />
<attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
<attribute name="Implementation-Title" value="I2P Java Address Book" />
<attribute name="Implementation-Version" value="${full.version}" />
<attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
<attribute name="Built-By" value="${build.built-by}" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
@ -74,28 +84,36 @@
</jar>
</target>
<!-- actually the jar -->
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="${dist}/${war}">
<srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
<uptodate property="war.uptodate" targetfile="${dist}/${jar}">
<srcfiles dir= "." includes="${build}/**/*.class"/>
</uptodate>
<condition property="shouldListChanges" >
<and>
<not>
<isset property="war.uptodate" />
</not>
<isset property="mtn.available" />
<isset property="git.available" />
</and>
</condition>
</target>
<target name="changes" depends="warUpToDate" if="shouldListChanges" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<exec executable="git" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="status" />
<arg value="-s" />
<arg value="--porcelain" />
<arg value="-uno" />
<arg value="." />
</exec>
<!-- trim flags -->
<exec executable="sed" inputstring="${workspace.changes}" outputproperty="workspace.changes.sed" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-e" />
<arg value="s/^[MTADRCU ]*//" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<exec executable="tr" inputstring="${workspace.changes.sed}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />

View File

@ -1,48 +0,0 @@
# This is the configuration file for addressbook.
#
# Options
# *******
# All paths are realitive to i2p/addressbook. Default value for
# each option is given in parentheses.
#
# proxy_host The hostname of your I2P http proxy.
# (localhost)
#
# proxy_port The port of your I2P http proxy. (4444)
#
# master_addressbook The path to your master address book, used for local
# changes only. (myhosts.txt)
#
# router_addressbook The path to the address book used by the router.
# Contains the addresses from your master address book
# and your subscribed address books. (../userhosts.txt)
#
# private_addressbook The path to the private address book used by the router.
# This is used only by the router and SusiDNS.
# It is not published by addressbook. (../privatehosts.txt)
#
# published_addressbook The path to the copy of your address book made
# available on i2p. (../eepsite/docroot/hosts.txt)
#
# log The path to your addressbook log. (log.txt)
#
# subscriptions The path to your subscription file. (subscriptions.txt)
#
# etags The path to the etags header storage file. (etags)
#
# last_modified The path to the last-modified header storage file.
# (last_modified)
#
# update_delay The time (in hours) between each update. (1)
proxy_host=localhost
proxy_port=4444
master_addressbook=myhosts.txt
router_addressbook=../userhosts.txt
private_addressbook=../privatehosts.txt
published_addressbook=../eepsite/docroot/hosts.txt
log=log.txt
subscriptions=subscriptions.txt
etags=etags
last_modified=last_modified
update_delay=1

View File

@ -136,9 +136,17 @@ class AddressBook implements Iterable<Map.Entry<String, HostTxtEntry>> {
File tmp = null;
try {
tmp = SecureFile.createTempFile("addressbook", null, I2PAppContext.getGlobalContext().getTempDir());
// Apache 2.4 mod_deflate etag bug workaround
// strip -gzip from the etag
// Gitlab #454
String loc = subscription.getLocation();
String etag = subscription.getEtag();
if (loc.startsWith("http://i2p-projekt.i2p/") && etag != null && etag.endsWith("-gzip\""))
etag = etag.substring(0, etag.length() - 6) + '"';
EepGet get = new EepGet(I2PAppContext.getGlobalContext(), true,
proxyHost, proxyPort, 0, -1l, MAX_SUB_SIZE, tmp.getAbsolutePath(), null,
subscription.getLocation(), true, subscription.getEtag(), subscription.getLastModified(), null);
loc, true, etag, subscription.getLastModified(), null);
if (get.fetch()) {
subscription.setEtag(get.getETag());
subscription.setLastModified(get.getLastModified());
@ -246,19 +254,19 @@ class AddressBook implements Iterable<Map.Entry<String, HostTxtEntry>> {
}
/**
* Do basic validation of the hostname
* hostname was already converted to lower case by HostTxtParser.parse()
* Do basic validation of the address
* address was already converted to lower case by HostTxtParser.parse()
*/
public static boolean isValidKey(String host) {
return
host.endsWith(".i2p") &&
host.length() > 4 &&
host.length() <= 67 && // 63 + ".i2p"
host.endsWith(".i2p") &&
host.length() > 4 &&
host.length() <= 67 && // 63 + ".i2p"
(! host.startsWith(".")) &&
(! host.startsWith("-")) &&
host.indexOf(".-") < 0 &&
host.indexOf("-.") < 0 &&
host.indexOf("..") < 0 &&
host.indexOf("..") < 0 &&
// IDN - basic check, not complete validation
(host.indexOf("--") < 0 || host.startsWith("xn--") || host.indexOf(".xn--") > 0) &&
HOST_PATTERN.matcher(host).matches() &&
@ -275,19 +283,19 @@ class AddressBook implements Iterable<Map.Entry<String, HostTxtEntry>> {
(! host.endsWith(".proxy.i2p")) &&
(! host.endsWith(".router.i2p")) &&
(! host.endsWith(".console.i2p"))
;
;
}
/**
* Do basic validation of the b64 dest, without bothering to instantiate it
*/
private static boolean isValidDest(String dest) {
return
return
// null cert ends with AAAA but other zero-length certs would be AA
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AA")) ||
(dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
// B64 comes in groups of 2, 3, or 4 chars, but never 1
((dest.length() % 4) != 1) &&
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AA")) ||
(dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
// B64 comes in groups of 2, 3, or 4 chars, but never 1
((dest.length() % 4) != 1) &&
B64_PATTERN.matcher(dest).matches()
;
}

View File

@ -0,0 +1,42 @@
package net.i2p.addressbook;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.i2p.CoreVersion;
/**
* Simple command line access to various utilities.
* Not a public API. Subject to change.
* Apps and plugins should use specific classes.
*
* @since 0.9.55
*/
public class CommandLine extends net.i2p.util.CommandLine {
protected static final List<String> ACLASSES = Arrays.asList(new String[] {
"net.i2p.addressbook.HostTxtParser",
"net.i2p.router.naming.BlockfileNamingService",
"net.metanotion.io.block.BlockFile",
});
protected CommandLine() {}
public static void main(String args[]) {
List<String> classes = new ArrayList<String>(ACLASSES.size() + CLASSES.size());
classes.addAll(ACLASSES);
classes.addAll(CLASSES);
if (args.length > 0) {
exec(args, classes);
}
usage(classes);
System.exit(1);
}
private static void usage(List<String> classes) {
System.err.println("I2P Address book version " + CoreVersion.VERSION + '\n' +
"USAGE: java -jar /path/to/addressbook.jar command [args]");
printCommands(classes);
}
}

View File

@ -166,6 +166,10 @@ class ConfigParser {
Map<String, String> result;
try {
result = parse(file);
// migrate
String local = result.remove("master_addressbook");
if (local != null)
result.put("local_addressbook", local);
for (Map.Entry<String, String> entry : map.entrySet()) {
if (!result.containsKey(entry.getKey()))
result.put(entry.getKey(), entry.getValue());

View File

@ -67,8 +67,8 @@ class Daemon {
* Update the router and published address books using remote data from the
* subscribed address books listed in subscriptions.
*
* @param master
* The master AddressBook. This address book is never
* @param local
* The local AddressBook. This address book is never
* overwritten, so it is safe for the user to write to.
* It is only merged to the published addressbook.
* May be null.
@ -77,7 +77,7 @@ class Daemon {
* client applications.
* @param published
* The published AddressBook. This address book is published on
* the user's eepsite so that others may subscribe to it.
* the user's I2P Site so that others may subscribe to it.
* May be null.
* If non-null, overwrite with the new addressbook.
* @param subscriptions
@ -87,7 +87,7 @@ class Daemon {
* The log to write changes and conflicts to.
* May be null.
*/
public static void update(AddressBook master, AddressBook router,
public static void update(AddressBook local, AddressBook router,
File published, SubscriptionList subscriptions, Log log) {
for (AddressBook book : subscriptions) {
// yes, the EepGet fetch() is done in next()
@ -95,8 +95,8 @@ class Daemon {
}
router.write();
if (published != null) {
if (master != null)
router.merge(master, true, null);
if (local != null)
router.merge(local, true, null);
router.write(published);
}
subscriptions.write();
@ -105,13 +105,13 @@ class Daemon {
/**
* Update the router and published address books using remote data from the
* subscribed address books listed in subscriptions.
* Merging of the "master" addressbook is NOT supported.
* Merging of the "local" addressbook is NOT supported.
*
* @param router
* The NamingService to update, generally the root NamingService from the context.
* @param published
* The published AddressBook. This address book is published on
* the user's eepsite so that others may subscribe to it.
* the user's I2P Site so that others may subscribe to it.
* May be null.
* If non-null, overwrite with the new addressbook.
* @param subscriptions
@ -697,7 +697,7 @@ class Daemon {
StringBuilder buf = new StringBuilder(16);
final int sz = dests.size();
for (int i = 0; i < sz; i++) {
buf.append(dests.get(i).toBase64().substring(0, 6));
buf.append(dests.get(i).toBase64(), 0, 6);
if (i != sz - 1)
buf.append(", ");
}
@ -751,17 +751,17 @@ class Daemon {
if (Boolean.parseBoolean(settings.get("update_direct"))) {
// Direct hosts.txt access
File routerFile = new File(home, settings.get("router_addressbook"));
AddressBook master;
AddressBook local;
if (should_publish) {
File masterFile = new File(home, settings.get("master_addressbook"));
master = new AddressBook(masterFile);
File localFile = new File(home, settings.get("local_addressbook"));
local = new AddressBook(localFile);
} else {
master = null;
local = null;
}
AddressBook router = new AddressBook(routerFile);
update(master, router, published, subscriptions, log);
update(local, router, published, subscriptions, log);
} else {
// Naming service - no merging of master to router and published is supported.
// Naming service - no merging of local to router and published is supported.
update(getNamingService(settings.get("naming_service")), published, subscriptions, log);
}
}
@ -841,7 +841,7 @@ class Daemon {
Map<String, String> defaultSettings = new HashMap<String, String>();
defaultSettings.put("proxy_host", "127.0.0.1");
defaultSettings.put("proxy_port", "4444");
defaultSettings.put("master_addressbook", "../userhosts.txt");
defaultSettings.put("local_addressbook", "../userhosts.txt");
defaultSettings.put("router_addressbook", "../hosts.txt");
defaultSettings.put("published_addressbook", "../eepsite/docroot/hosts.txt");
defaultSettings.put("should_publish", "false");
@ -868,7 +868,7 @@ class Daemon {
// wait
try {
Thread.sleep(5*60*1000 + I2PAppContext.getGlobalContext().random().nextLong(5*60*1000));
// Static method, and redundent Thread.currentThread().sleep(5*60*1000);
// Static method, and redundant Thread.currentThread().sleep(5*60*1000);
} catch (InterruptedException ie) {}
while (_running) {

View File

@ -17,6 +17,7 @@ import java.util.Properties;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
import net.i2p.util.SecureFile;
import net.i2p.util.SecureFileOutputStream;
import net.i2p.util.SystemVersion;
@ -25,9 +26,9 @@ import net.i2p.util.SystemVersion;
* Utility class providing methods to parse and write files in a hosts.txt file
* format, and subscription file format.
*
* @since 0.9.26 modified from ConfigParser
* @since 0.9.26 modified from ConfigParser, public since 0.9.55 for CLI
*/
class HostTxtParser {
public class HostTxtParser {
private static final boolean isWindows = SystemVersion.isWindows();
@ -255,8 +256,23 @@ class HostTxtParser {
System.exit(2);
}
if (!e.hasValidSig()) {
if (!quiet)
System.err.println("Bad signature");
if (!quiet) {
System.err.println("Bad signature for " + e.getName());
String dest = e.getDest();
try {
Destination d = new Destination(dest);
System.err.println(dest);
System.err.println(d.toString());
} catch (Exception ex) {
System.err.println("Invalid destination: " + dest);
}
Properties p = e.getProps();
if (p != null) {
for (Map.Entry<?,?> m : p.entrySet()) {
System.err.println(m.getKey() + "=" + m.getValue());
}
}
}
System.exit(3);
}
Properties p = e.getProps();
@ -266,14 +282,30 @@ class HostTxtParser {
p.containsKey(HostTxtEntry.PROP_OLDNAME) ||
p.containsKey(HostTxtEntry.PROP_OLDSIG)) {
if (!e.hasValidSig()) {
if (!quiet)
System.err.println("Bad inner signature");
if (!quiet) {
System.err.println("Bad inner signature for " + e.getName());
for (Map.Entry<?,?> m : p.entrySet()) {
System.err.println(m.getKey() + "=" + m.getValue());
}
}
System.exit(4);
}
}
}
if (!quiet)
if (!quiet) {
System.err.println("Good signature for " + e.getName());
try {
String dest = e.getDest();
Destination d = new Destination(dest);
System.err.println(dest);
System.err.println(d.toString());
} catch (Exception ex) {}
if (p != null) {
for (Map.Entry<?,?> m : p.entrySet()) {
System.err.println(m.getKey() + "=" + m.getValue());
}
}
}
System.exit(0);
}

View File

@ -98,7 +98,7 @@ import net.metanotion.util.skiplist.SkipList;
*
* </pre>
*
* All host names are converted to lower case.
* All hostnames are converted to lower case.
*
* @since 0.8.7, moved from core to addressbook in 0.9.31
*/
@ -138,9 +138,11 @@ public class BlockfileNamingService extends DummyNamingService {
private static final String VERSION = "4";
private static final String PROP_ADDED = "a";
private static final String PROP_MODDED = "m";
// See susidns
//private static final String PROP_MODDED = "m";
private static final String PROP_SOURCE = "s";
private static final String PROP_VALIDATED = "v";
// See susidns
//private static final String PROP_VALIDATED = "v";
private static final String DUMMY = "";
private static final int NEGATIVE_CACHE_SIZE = 32;
@ -1395,6 +1397,11 @@ public class BlockfileNamingService extends DummyNamingService {
p = de.propsList.get(i);
d = de.destList.get(i);
}
out.write("# ");
out.write(key);
out.write(": ");
out.write(d.toBase32());
out.write(nl);
out.write(key);
out.write('=');
out.write(d.toBase64());
@ -1424,6 +1431,8 @@ public class BlockfileNamingService extends DummyNamingService {
}
/**
* Broken prior to 0.9.62, would only return one name.
*
* @param options If non-null and contains the key "list", get
* from that list (default "hosts.txt", NOT all lists)
* Key "skip": skip that many entries
@ -1495,6 +1504,7 @@ public class BlockfileNamingService extends DummyNamingService {
break;
}
}
iter.next();
if (search != null && key.indexOf(search) < 0)
continue;
rv.add(key);
@ -2062,9 +2072,8 @@ public class BlockfileNamingService extends DummyNamingService {
}
if (baos.size() > 65535)
throw new DataFormatException("Properties too big (65535 max): " + baos.size());
byte propBytes[] = baos.toByteArray();
DataHelper.writeLong(rawStream, 2, propBytes.length);
rawStream.write(propBytes);
DataHelper.writeLong(rawStream, 2, baos.size());
baos.writeTo(rawStream);
} else {
DataHelper.writeLong(rawStream, 2, 0);
}

View File

@ -0,0 +1,8 @@
<html>
<body>
<p>
The BlockfileNamingService based on the Metanotion BlockFile Database.
This is the default NamingService for the router.
</p>
</body>
</html>

View File

@ -19,7 +19,7 @@ the API may be subject to change.
Contact I2P developers if you are considering use in another application.
Following is the original documentation copied from metanotion website.
</p>
<h1>Metanotion BlockFile Database</h1>
<h2>Metanotion BlockFile Database</h2>
<p>A 100% Java 1.3, BSD Licensed, embeddable single file database engine in 32KB. This database was designed for PDA based and J2ME applications.</p>
<h2>Table of Contents</h2>
@ -32,18 +32,18 @@ Following is the original documentation copied from metanotion website.
<li><a href="#download">Download</a></li>
</ul>
<a name="features"><h2>Features</h2></a>
<h2 id="features">Features</h2>
<ul>
<li>100% Java 1.3. No JNI.</li>
<li>Will work with any "file" as long as you can approximate something like <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/RandomAccessFile.html">java.io.RandomAccessFile</a>, you can use this.</li>
<li>BSD Licensed. Yes, this means you can use it for free in a commercial project. However, if you base some really cool mobile technology startup on this code we'll gladly accept stock options...</p>
<li>BSD Licensed. Yes, this means you can use it for free in a commercial project. However, if you base some really cool mobile technology startup on this code we'll gladly accept stock options...</li>
<li>No dependence on file API's(useful for mobile apps)</li>
<li>Small. 32KB in a JAR file. &lt;2000 lines of code.</li>
<li>Reasonably fast. This is used in an app running on a sub 200MHz StrongARM PocketPC, and quite handily deals with 70,000 records. The load time is a little slow, but its been tested with a <a href="http://java.sun.com/javame/reference/apis.jsp">CDC 1.0/Personal Profile</a> device.
</li>
</ul>
<a name="unfeatures"><h2>Unfeatures</h2></a>
<h2 id="unfeatures">Unfeatures</h2>
<p>A good, ACID database is a nice thing to work with. Unfortunately, in the goal to make this small, fast, and work with minimal dependencies, something had to give. So I list things which this database will likely never have. Of course, since it is BSD Licensed, patches welcome...</p>
<ul>
@ -53,11 +53,11 @@ Following is the original documentation copied from metanotion website.
<li>No use of reflection or automagical serialization tricks.</li>
</ul>
<a name="future"><h2>Future Plans</h2></a>
<h2 id="future">Future Plans</h2>
<p>There are still bugs(none known...). The app that this was written for is still in testing, but we should most of the issues sorted by the time we deploy it in a few weeks(early November, 2006). Some loading speed issues on large record sets, and memory usage could still be improved. All this and feedback from other uses will direct this products evolution.</p>
<p>What is currently up here is not "1.0" code, but we will release a labeled "1.0" version once we feel happy with the state of the codebase.</p>
<a name="design"><h2>What KIND of database is this?</h2></a>
<h2 id="design">What KIND of database is this?</h2>
<p>You probably store at least part of your application data in memory in a class from the <a href="http://java.sun.com/j2se/1.4.2/docs/guide/collections/">Java Collections Framework</a>. The BlockFile database stores data in a <a href="http://en.wikipedia.org/wiki/Skip_list">Skip</a> <a href="http://eternallyconfuzzled.com/tuts/skip.html">List</a> that almost implements <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/SortedMap.html">java.util.SortedMap</a>. You can create and store as many named(with a string) SkipList in the database as you want.</p>
<p>To serialize your data, you have to either extend our SerialStreams class or implement our Serializer interface. We could have done something cool and fancy with reflection(and other cool stuff with Java 1.5), but that would probably not do the Right Thing&trade; most of the time. As you can see, there's not a lot to it anyway:</p>
<h3>net.metanotion.io.SerialStreams</h3>
@ -91,9 +91,8 @@ public class SkipList {
public ListIterator find(Comparable key) ...
}
</pre>
</p>
<a name="examples"><h2>Examples</h2></a>
<h2 id="examples">Examples</h2>
<p>Better documentation is forthcoming, but there really isn't much to know. The entire public interface to the library is on this page. Where possible, it sticks to idiomatic Java and standard interfaces.</p>
<ul>
<li>Open a database:
@ -146,8 +145,8 @@ public class BlockFile implements Closeable {
<p>So, in other words, if you can provide an implementation of this interface, you can use the BlockFile database. This frees it from dependence on the RandomAccessFile class. If you don't see why this is useful and you're going to be using "files" on PDA's and phone's, well, you'll understand soon enough...</p>
<a name="download"><h2>Download</h2></a>
<h3>Bugfix and cleanup Release 10/6/2006</h2>
<h2 id="download">Download</h2>
<h3>Bugfix and cleanup Release 10/6/2006</h3>
<p>An unnecessary class was removed, some junk methods removed, and a couple of JDK compatability issues were fixed. The StringBytes class was switched to ASCII(from UTF-8) for better compatibility.</p>
<ul>
<li><a href="http://www.metanotion.net/software/sandbox/BlockFile.2006.10.06.jar">BlockFile binary JAR, version 0.1.1</a></li>
@ -160,7 +159,7 @@ public class BlockFile implements Closeable {
<li><a href="http://www.metanotion.net/software/sandbox/BlockFile.src.2006.09.28.zip">BlockFile source code</a></li>
</ul>
<hr />
<center>&copy; 2006 <a href="http://www.metanotion.net/">Metanotion Software</a></center>
<hr>
<p>&copy; 2006 <a href="http://www.metanotion.net/">Metanotion Software</a></p>
</body>
</html>

View File

@ -1,10 +0,0 @@
# addressbook master address book. Addresses placed in this file take precidence
# over those in the router address book and in remote address books. If changes
# are made to this file, they will be reflected in the router address book and
# published address book after the next update.
#
# Do not make changes directly to the router address book, as they could be lost
# during an update.
#
# This file takes addresses in the hosts.txt format, i.e.
# example.i2p=somereallylongbase64thingAAAA

View File

@ -1,7 +0,0 @@
# Subscription list for addressbook
#
# Each entry is an absolute url to a file in hosts.txt format.
# Since the list is checked in order, url's should be listed in order of trust.
#
http://dev.i2p/i2p/hosts.txt
http://duck.i2p/hosts.txt

View File

@ -2,6 +2,7 @@ sourceSets {
main {
java {
srcDir 'src'
srcDir 'build/messages-src'
}
}
}
@ -12,3 +13,14 @@ dependencies {
compile project(':installer')
compile project(':apps:systray')
}
// Create the java files from the po files. The jar task will compile them.
// This requires gettext 0.19 or higher.
// We don't support the "slow way"
task bundle {
doLast {
if (!(new File("$buildDir/classes/java/main/net/i2p/desktopgui/messages_de.class")).exists())
println "apps/desktopgui/bundle-messages.sh".execute().text
}
}
jar.dependsOn bundle

View File

@ -7,8 +7,10 @@
<property name="jar" value="desktopgui.jar"/>
<property name="javadoc" value="javadoc"/>
<property name="javac.compilerargs" value=""/>
<property name="javac.version" value="1.7" />
<property name="javac.version" value="1.8" />
<property name="javac.release" value="8" />
<property name="require.gettext" value="true" />
<property name="manifest.classpath.name" value="Class-Path" />
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
@ -27,7 +29,9 @@
<target name="compile" depends="init">
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
release="${javac.release}"
includeAntRuntime="false"
encoding="UTF-8"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -51,36 +55,48 @@
<arg value="./bundle-messages.sh" />
</exec>
<javac source="${javac.version}" target="${javac.version}"
release="${javac.release}"
includeAntRuntime="false"
encoding="UTF-8"
srcdir="${build}/messages-src" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<exec executable="git" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="status" />
<arg value="-s" />
<arg value="--porcelain" />
<arg value="-uno" />
<arg value="." />
</exec>
<!-- trim flags -->
<exec executable="sed" inputstring="${workspace.changes}" outputproperty="workspace.changes.sed" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-e" />
<arg value="s/^[MTADRCU ]*//" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.sed}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
<target name="jar" depends="compile, bundle, listChangedFiles" unless="jar.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.tr" value="" />
<!-- ideal for linux: 24x24, but transparency doesn't work -->
<copy tofile="${build}/desktopgui/resources/images/logo.png" file="../../installer/resources/themes/console/images/itoopie_xsm.png" />
<copy tofile="${build}/desktopgui/resources/images/logo.png" file="../../apps/routerconsole/jsp/themes/console/images/itoopie_xsm.png" />
<copy todir="${build}/desktopgui/resources/images" file="images/itoopie_black_24.png" />
<copy todir="${build}/desktopgui/resources/images" file="images/itoopie_white_24.png" />
<jar basedir="${build}" excludes="messages-src/**" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="net.i2p.desktopgui.Main"/>
<attribute name="${manifest.classpath.name}" value="i2p.jar router.jar" />
<attribute name="Implementation-Version" value="${full.version}" />
<attribute name="Built-By" value="${build.built-by}" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
@ -99,7 +115,7 @@
<not>
<isset property="jar.uptodate" />
</not>
<isset property="mtn.available" />
<isset property="git.available" />
</and>
</condition>
</target>

7
apps/desktopgui/bundle-messages.sh Normal file → Executable file
View File

@ -11,6 +11,7 @@
# zzz - public domain
# Mathiasdm - modifications for desktopgui
#
cd `dirname $0`
CLASS=net.i2p.desktopgui.messages
TMPFILE=build/javafiles.txt
export TZ=UTC
@ -105,12 +106,12 @@ do
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
msgfmt -V | grep -q '0\.19'
msgfmt -V | grep -q -E ' 0\.((19)|[2-9])'
if [ $? -ne 0 ]
then
# slow way
# convert to class files in build
msgfmt --java --statistics -r $CLASS -l $LG -d build $i
msgfmt --java2 --statistics -r $CLASS -l $LG -d build $i
if [ $? -ne 0 ]
then
echo "ERROR - msgfmt failed on ${i}, not updating translations"
@ -128,7 +129,7 @@ do
TDY=$TD2/net/i2p/desktopgui
rm -rf $TD
mkdir -p $TD $TDY
msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i
msgfmt --java2 --statistics --source -r $CLASS -l $LG -d $TD $i
if [ $? -ne 0 ]
then
echo "ERROR - msgfmt failed on ${i}, not updating translations"

View File

@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2017-09-20 20:31+0000\n"
"Last-Translator: Vitaly Zdorovenko <stenliterziev@gmail.com>\n"
"POT-Creation-Date: 2022-02-09 19:13+0000\n"
"PO-Revision-Date: 2022-02-09 19:23+0000\n"
"Last-Translator: zzzi2p\n"
"Language-Team: Bulgarian (http://www.transifex.com/otf/I2P/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -27,69 +27,81 @@ msgstr "Стартиране на I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr "I2P е стартиран!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr "Стартиране"
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:249
msgid "Launch I2P Browser"
msgstr "Стартиране на I2P Браузер"
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:270
msgid "Configure I2P System Tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
msgstr "Деактивиране"
#: src/net/i2p/desktopgui/InternalTrayManager.java:87
#: src/net/i2p/desktopgui/InternalTrayManager.java:271
msgid "Enable notifications"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
#: src/net/i2p/desktopgui/InternalTrayManager.java:101
#: src/net/i2p/desktopgui/InternalTrayManager.java:285
msgid "Disable notifications"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:115
#: src/net/i2p/desktopgui/InternalTrayManager.java:299
msgid "Disable system tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:131
#: src/net/i2p/desktopgui/InternalTrayManager.java:315
msgid "Restart I2P"
msgstr "Рестартиране на I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
#: src/net/i2p/desktopgui/InternalTrayManager.java:148
#: src/net/i2p/desktopgui/InternalTrayManager.java:332
msgid "Stop I2P"
msgstr "Спиране на I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
#: src/net/i2p/desktopgui/InternalTrayManager.java:164
#: src/net/i2p/desktopgui/InternalTrayManager.java:348
msgid "Restart I2P Immediately"
msgstr "Рестартирайте Незабавно"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
#: src/net/i2p/desktopgui/InternalTrayManager.java:181
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Stop I2P Immediately"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
#: src/net/i2p/desktopgui/InternalTrayManager.java:195
#: src/net/i2p/desktopgui/InternalTrayManager.java:379
msgid "Cancel I2P Shutdown"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#: src/net/i2p/desktopgui/InternalTrayManager.java:437
#, java-format
msgid "Shutdown in {0}"
msgstr "Изключване в {0}"
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
#: src/net/i2p/desktopgui/InternalTrayManager.java:439
msgid "Shutdown imminent"
msgstr ""
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
#: src/net/i2p/desktopgui/InternalTrayManager.java:444
msgid "Network"
msgstr ""
msgstr "Мрежа"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
#: src/net/i2p/desktopgui/TrayManager.java:73
msgid "I2P: Right-click for menu"
msgstr ""

View File

@ -4,19 +4,21 @@
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# slrslr, 2022
# slrslr, 2021
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2017-06-30 21:32+0000\n"
"Last-Translator: zzzi2p\n"
"POT-Creation-Date: 2022-02-09 19:13+0000\n"
"PO-Revision-Date: 2011-02-13 12:05+0000\n"
"Last-Translator: slrslr, 2022\n"
"Language-Team: Czech (http://www.transifex.com/otf/I2P/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
@ -25,69 +27,81 @@ msgstr "Spustit I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr "I2P startuje!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr "Startuji"
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:249
msgid "Launch I2P Browser"
msgstr "Spouštím I2P Browser"
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:270
msgid "Configure I2P System Tray"
msgstr ""
msgstr "Nastavit I2P Systémovou Lištu"
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:87
#: src/net/i2p/desktopgui/InternalTrayManager.java:271
msgid "Enable notifications"
msgstr "Zapnout upozornění"
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
#: src/net/i2p/desktopgui/InternalTrayManager.java:101
#: src/net/i2p/desktopgui/InternalTrayManager.java:285
msgid "Disable notifications"
msgstr "Vypnout upozornění"
#: src/net/i2p/desktopgui/InternalTrayManager.java:115
#: src/net/i2p/desktopgui/InternalTrayManager.java:299
msgid "Disable system tray"
msgstr "Vypnout ikonu systémové lišty"
#: src/net/i2p/desktopgui/InternalTrayManager.java:131
#: src/net/i2p/desktopgui/InternalTrayManager.java:315
msgid "Restart I2P"
msgstr "Restart I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
#: src/net/i2p/desktopgui/InternalTrayManager.java:148
#: src/net/i2p/desktopgui/InternalTrayManager.java:332
msgid "Stop I2P"
msgstr "Zastavit I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
#: src/net/i2p/desktopgui/InternalTrayManager.java:164
#: src/net/i2p/desktopgui/InternalTrayManager.java:348
msgid "Restart I2P Immediately"
msgstr ""
msgstr "Restartovat I2P Hned"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
#: src/net/i2p/desktopgui/InternalTrayManager.java:181
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Stop I2P Immediately"
msgstr ""
msgstr "Zastavit I2P Hned"
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
#: src/net/i2p/desktopgui/InternalTrayManager.java:195
#: src/net/i2p/desktopgui/InternalTrayManager.java:379
msgid "Cancel I2P Shutdown"
msgstr ""
msgstr "Zrušit I2P Zastavení"
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#: src/net/i2p/desktopgui/InternalTrayManager.java:437
#, java-format
msgid "Shutdown in {0}"
msgstr ""
msgstr "Zastavení za {0}"
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
#: src/net/i2p/desktopgui/InternalTrayManager.java:439
msgid "Shutdown imminent"
msgstr ""
msgstr "Vypínání"
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
#: src/net/i2p/desktopgui/InternalTrayManager.java:444
msgid "Network"
msgstr "Síť"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
#: src/net/i2p/desktopgui/TrayManager.java:73
msgid "I2P: Right-click for menu"
msgstr ""
msgstr "I2P: Pravé-kliknutí pro menu"

View File

@ -7,14 +7,15 @@
# blabla <blabla@trash-mail.com>, 2011
# Ettore Atalan <atalanttore@googlemail.com>, 2016
# foo <foo@bar>, 2009
# Georg Stadler, 2022
# Lars Schimmer <echelon@i2pmail.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2017-06-30 21:32+0000\n"
"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
"POT-Creation-Date: 2022-02-09 19:13+0000\n"
"PO-Revision-Date: 2011-02-13 12:05+0000\n"
"Last-Translator: Georg Stadler, 2022\n"
"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -29,69 +30,81 @@ msgstr "I2P starten"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr "I2P startet gerade!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr "Startend"
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:249
msgid "Launch I2P Browser"
msgstr "I2P-Browser öffnen"
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:270
msgid "Configure I2P System Tray"
msgstr "I2P System Tray konfigurieren"
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
msgstr "Deaktivieren"
#: src/net/i2p/desktopgui/InternalTrayManager.java:87
#: src/net/i2p/desktopgui/InternalTrayManager.java:271
msgid "Enable notifications"
msgstr "Benachrichtigungen aktivieren"
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
#: src/net/i2p/desktopgui/InternalTrayManager.java:101
#: src/net/i2p/desktopgui/InternalTrayManager.java:285
msgid "Disable notifications"
msgstr "Benachrichtigungen deaktivieren"
#: src/net/i2p/desktopgui/InternalTrayManager.java:115
#: src/net/i2p/desktopgui/InternalTrayManager.java:299
msgid "Disable system tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:131
#: src/net/i2p/desktopgui/InternalTrayManager.java:315
msgid "Restart I2P"
msgstr "I2P neustarten"
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
#: src/net/i2p/desktopgui/InternalTrayManager.java:148
#: src/net/i2p/desktopgui/InternalTrayManager.java:332
msgid "Stop I2P"
msgstr "I2P beenden"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
#: src/net/i2p/desktopgui/InternalTrayManager.java:164
#: src/net/i2p/desktopgui/InternalTrayManager.java:348
msgid "Restart I2P Immediately"
msgstr "I2P sofort neustarten"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
#: src/net/i2p/desktopgui/InternalTrayManager.java:181
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Stop I2P Immediately"
msgstr "I2P sofort beenden"
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
#: src/net/i2p/desktopgui/InternalTrayManager.java:195
#: src/net/i2p/desktopgui/InternalTrayManager.java:379
msgid "Cancel I2P Shutdown"
msgstr "Herunterfahren von I2P abbrechen"
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#: src/net/i2p/desktopgui/InternalTrayManager.java:437
#, java-format
msgid "Shutdown in {0}"
msgstr "Herunterfahren in {0}"
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
#: src/net/i2p/desktopgui/InternalTrayManager.java:439
msgid "Shutdown imminent"
msgstr "Herunterfahren bevorstehend"
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
#: src/net/i2p/desktopgui/InternalTrayManager.java:444
msgid "Network"
msgstr "Netzwerk"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
#: src/net/i2p/desktopgui/TrayManager.java:73
msgid "I2P: Right-click for menu"
msgstr "I2P: Rechtsklick für Menü"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"POT-Creation-Date: 2023-03-06 14:52+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@ -19,75 +19,84 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
msgid "Start I2P"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:221
msgid "Launch I2P Browser"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:242
msgid "Configure I2P System Tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
#: src/net/i2p/desktopgui/InternalTrayManager.java:88
#: src/net/i2p/desktopgui/InternalTrayManager.java:244
msgid "Disable system tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
#: src/net/i2p/desktopgui/InternalTrayManager.java:104
#: src/net/i2p/desktopgui/InternalTrayManager.java:260
msgid "Restart I2P"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
#: src/net/i2p/desktopgui/InternalTrayManager.java:121
#: src/net/i2p/desktopgui/InternalTrayManager.java:277
msgid "Stop I2P"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
#: src/net/i2p/desktopgui/InternalTrayManager.java:137
#: src/net/i2p/desktopgui/InternalTrayManager.java:293
msgid "Restart I2P Immediately"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
#: src/net/i2p/desktopgui/InternalTrayManager.java:154
#: src/net/i2p/desktopgui/InternalTrayManager.java:310
msgid "Stop I2P Immediately"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
#: src/net/i2p/desktopgui/InternalTrayManager.java:168
#: src/net/i2p/desktopgui/InternalTrayManager.java:324
msgid "Cancel I2P Shutdown"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#: src/net/i2p/desktopgui/InternalTrayManager.java:381
#, java-format
msgid "Shutdown in {0}"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
#: src/net/i2p/desktopgui/InternalTrayManager.java:383
msgid "Shutdown imminent"
msgstr ""
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
#: src/net/i2p/desktopgui/InternalTrayManager.java:388
msgid "Network"
msgstr ""
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
#: src/net/i2p/desktopgui/TrayManager.java:75
msgid "I2P: Right-click for menu"
msgstr ""
#: src/net/i2p/desktopgui/TrayManager.java:310
#: src/net/i2p/desktopgui/TrayManager.java:347
msgid "Enable notifications"
msgstr ""
#: src/net/i2p/desktopgui/TrayManager.java:325
#: src/net/i2p/desktopgui/TrayManager.java:362
msgid "Disable notifications"
msgstr ""

View File

@ -6,21 +6,22 @@
# Translators:
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# punkibastardo <punkibastardo@gmail.com>, 2011
# Juan Jaramillo <juanda097@protonmail.ch>, 2022
# punkibastardo <transifex.symons@slmail.me>, 2011
# strel, 2016
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2017-06-30 21:32+0000\n"
"Last-Translator: strel\n"
"POT-Creation-Date: 2022-02-09 19:13+0000\n"
"PO-Revision-Date: 2011-02-13 12:05+0000\n"
"Last-Translator: Juan Jaramillo <juanda097@protonmail.ch>, 2022\n"
"Language-Team: Spanish (http://www.transifex.com/otf/I2P/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
@ -29,69 +30,81 @@ msgstr "Iniciar I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr "I2P está iniciando!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr "Iniciando"
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:249
msgid "Launch I2P Browser"
msgstr "Lanzar navegador I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:270
msgid "Configure I2P System Tray"
msgstr "Configurar la bandeja de sistema de I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
msgstr "Deshabilitar"
#: src/net/i2p/desktopgui/InternalTrayManager.java:87
#: src/net/i2p/desktopgui/InternalTrayManager.java:271
msgid "Enable notifications"
msgstr "Activar las notificaciones"
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
#: src/net/i2p/desktopgui/InternalTrayManager.java:101
#: src/net/i2p/desktopgui/InternalTrayManager.java:285
msgid "Disable notifications"
msgstr "Desactivar las notificaciones"
#: src/net/i2p/desktopgui/InternalTrayManager.java:115
#: src/net/i2p/desktopgui/InternalTrayManager.java:299
msgid "Disable system tray"
msgstr "Desactivar la bandeja del sistema"
#: src/net/i2p/desktopgui/InternalTrayManager.java:131
#: src/net/i2p/desktopgui/InternalTrayManager.java:315
msgid "Restart I2P"
msgstr "Reiniciar I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
#: src/net/i2p/desktopgui/InternalTrayManager.java:148
#: src/net/i2p/desktopgui/InternalTrayManager.java:332
msgid "Stop I2P"
msgstr "Detener I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
#: src/net/i2p/desktopgui/InternalTrayManager.java:164
#: src/net/i2p/desktopgui/InternalTrayManager.java:348
msgid "Restart I2P Immediately"
msgstr "Reiniciar I2P inmediatamente"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
#: src/net/i2p/desktopgui/InternalTrayManager.java:181
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Stop I2P Immediately"
msgstr "Detener I2P inmediatamente"
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
#: src/net/i2p/desktopgui/InternalTrayManager.java:195
#: src/net/i2p/desktopgui/InternalTrayManager.java:379
msgid "Cancel I2P Shutdown"
msgstr "Cancelar el cierre de I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#: src/net/i2p/desktopgui/InternalTrayManager.java:437
#, java-format
msgid "Shutdown in {0}"
msgstr "Cierre en {0}"
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
#: src/net/i2p/desktopgui/InternalTrayManager.java:439
msgid "Shutdown imminent"
msgstr "Cierre inminente"
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
#: src/net/i2p/desktopgui/InternalTrayManager.java:444
msgid "Network"
msgstr "Red"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
#: src/net/i2p/desktopgui/TrayManager.java:73
msgid "I2P: Right-click for menu"
msgstr "I2P: Clic secundario para menú"

View File

@ -0,0 +1,106 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# kaze kaze <kaze@rlab.be>, 2017
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-09 19:13+0000\n"
"PO-Revision-Date: 2011-02-13 12:05+0000\n"
"Last-Translator: kaze kaze <kaze@rlab.be>, 2017\n"
"Language-Team: Spanish (Argentina) (http://www.transifex.com/otf/I2P/language/es_AR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es_AR\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
msgid "Start I2P"
msgstr "Iniciando I2P..."
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "I2P is starting!"
msgstr "I2P esta iniciando!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
msgid "Starting"
msgstr "Iniciando"
#: src/net/i2p/desktopgui/InternalTrayManager.java:65
#: src/net/i2p/desktopgui/InternalTrayManager.java:249
msgid "Launch I2P Browser"
msgstr "Lanzar el Navegador I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:86
#: src/net/i2p/desktopgui/InternalTrayManager.java:270
msgid "Configure I2P System Tray"
msgstr "Configurar la Bandeja de Sistema de I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:87
#: src/net/i2p/desktopgui/InternalTrayManager.java:271
msgid "Enable notifications"
msgstr "Activar las notificaciones"
#: src/net/i2p/desktopgui/InternalTrayManager.java:101
#: src/net/i2p/desktopgui/InternalTrayManager.java:285
msgid "Disable notifications"
msgstr "Desactivar las notificaciones"
#: src/net/i2p/desktopgui/InternalTrayManager.java:115
#: src/net/i2p/desktopgui/InternalTrayManager.java:299
msgid "Disable system tray"
msgstr "Desactivar la bandeja del sistema"
#: src/net/i2p/desktopgui/InternalTrayManager.java:131
#: src/net/i2p/desktopgui/InternalTrayManager.java:315
msgid "Restart I2P"
msgstr "Riniciar I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:148
#: src/net/i2p/desktopgui/InternalTrayManager.java:332
msgid "Stop I2P"
msgstr "Detener I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:164
#: src/net/i2p/desktopgui/InternalTrayManager.java:348
msgid "Restart I2P Immediately"
msgstr " Reiniciar I2P inmediatamente "
#: src/net/i2p/desktopgui/InternalTrayManager.java:181
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Stop I2P Immediately"
msgstr " Detener I2P inmediatamente "
#: src/net/i2p/desktopgui/InternalTrayManager.java:195
#: src/net/i2p/desktopgui/InternalTrayManager.java:379
msgid "Cancel I2P Shutdown"
msgstr "Cancelar el Apagado de I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:437
#, java-format
msgid "Shutdown in {0}"
msgstr "Apagar en {0}"
#: src/net/i2p/desktopgui/InternalTrayManager.java:439
msgid "Shutdown imminent"
msgstr "Apagado inminente"
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:444
msgid "Network"
msgstr "Red"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:73
msgid "I2P: Right-click for menu"
msgstr "I2P Clic derecho para el menú"

View File

@ -6,19 +6,20 @@
# Translators:
# Amir H. Firouzian, 2017
# NoProfile, 2016
# Reza Ghasemi, 2019
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2018-01-05 02:54+0000\n"
"Last-Translator: Amir H. Firouzian\n"
"PO-Revision-Date: 2019-07-02 14:46+0000\n"
"Last-Translator: Reza Ghasemi\n"
"Language-Team: Persian (http://www.transifex.com/otf/I2P/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
@ -53,7 +54,7 @@ msgstr "غیرفعال کن"
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
msgid "Restart I2P"
msgstr ""
msgstr "راه اندازی مجدد I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
@ -63,17 +64,17 @@ msgstr "توقف I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
msgid "Restart I2P Immediately"
msgstr ""
msgstr "راه اندازی مجدد I2P بلافاصله"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
msgid "Stop I2P Immediately"
msgstr ""
msgstr "توقف I2P بلافاصله"
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
msgid "Cancel I2P Shutdown"
msgstr ""
msgstr "لغو خاموش کردن I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#, java-format
@ -87,7 +88,7 @@ msgstr ""
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
msgid "Network"
msgstr ""
msgstr "شبکه"
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63

Some files were not shown because too many files have changed in this diff Show More