Compare commits

...

4756 Commits

Author SHA1 Message Date
zzz
88d9f1d509 0.9.38 2019-01-22 11:54:19 +00:00
zzz
5c0aab4190 Minor fixes after review 2019-01-21 21:57:14 +00:00
zzz
33e96d7841 Reseed: Update SSL cert 2019-01-21 21:56:34 +00:00
zzz
d00e3c77ab Debian: Add source param to javadoc target, fixes build on sid 2019-01-20 13:28:22 +00:00
zzz
318ebb3fc5 Debian: Replace ttf-dejavu with fonts-dejavu (ticket #2395) 2019-01-20 13:24:01 +00:00
zzz
f224a770f0 bump for review 2019-01-18 20:47:08 +00:00
zzz
ebcf187df6 Pull translations 2019-01-18 20:41:44 +00:00
zzz
b3cfc89fa2 remove old file from test script 2019-01-18 20:34:09 +00:00
e57606a9f6 Mac OSX Launcher: Added Carthage file + shell script bumpInfoPlist.sh 2019-01-18 16:30:46 +00:00
a36777882e Mac OSX Launcher: Misc changes + xcode project file update 2019-01-18 16:30:03 +00:00
605f9872cd Mac OSX Launcher: UI code updates, integration of firefox manager. 2019-01-18 16:29:12 +00:00
52125917b4 Mac OSX Launcher: Storyboard updates, added firefox button, preferences changes etc. 2019-01-18 16:28:17 +00:00
ba853a8c97 Mac OSX Launcher: The firefox manager code 2019-01-18 16:26:08 +00:00
6ad64d5b44 Mac OSX Launcher: Adding the "launcher launcher" for startup functionality. 2019-01-18 16:25:01 +00:00
zzz
272588d820 Debian: Add Disco files, refresh patch for Jetty 9.4 2019-01-18 14:32:28 +00:00
zzz
344c812666 NTCP: Stop X25519KeyFactory on shutdown (ticket #2388) 2019-01-18 12:15:43 +00:00
zzz
b4e2619c3b Plugins: Fix loading of webapp configuration classes
on Jetty 9.4 by whitelisting them as allowed server classes
(ticket #2385)
2019-01-18 11:35:36 +00:00
zzz
6ca383071b Debian: AppArmor updates (ticket #2319) 2019-01-16 20:10:36 +00:00
zzz
d851631494 SusiMail: Fix sending mail with attachments (ticket #2373)
Fix deleting attachments from drafts
Fix dup attachments after clicking add attachment without browsing first
Fix update of draft folder after saving as draft
Change text of add attachment button for clarity
Debug logging
2019-01-15 17:18:59 +00:00
zzz
16f4f04092 change firefox profile installer link 2019-01-15 16:05:40 +00:00
zzz
ca86bbe4f7 EncType javadoc update 2019-01-14 15:58:40 +00:00
cf27938983 fix compilation with Gradle to account for GeoIP2 and systray changes 2019-01-13 14:04:03 +00:00
zzz
4283d71b92 I2CP: Set LS2 unpublished bit, show in debug output 2019-01-13 13:14:58 +00:00
zzz
10f2d838c9 SSU: More consolidation of clock().now() calls 2019-01-12 13:45:38 +00:00
zzz
f5ca17c844 NetDB: Use isSlow() in floodfill criteria 2019-01-12 13:43:09 +00:00
zzz
b62732b5b3 Console: More LS2 debug output
I2CP: Bump min LS2 router version for release
2019-01-11 14:44:33 +00:00
zzz
17228def91 I2CP: Remove client-side-only options from those sent to router 2019-01-10 17:08:35 +00:00
zzz
5ca98022ab I2CP: Router-side stub for enc. ls2; throw for now 2019-01-10 16:21:48 +00:00
zzz
0c15936b5d I2CP: Router-side fix for meta LS2 2019-01-10 15:37:11 +00:00
zzz
e02a0dfc5b NTCP: Avoid Java 8/9 bootclasspath issue 2019-01-10 14:17:18 +00:00
zzz
0d330caf9a I2CP: Basic router-side handling of meta LS2
Improve error handling of LS2 params client-side
Methods to remember blinded key in LS2
2019-01-10 13:39:18 +00:00
zzz
8cd7e7de65 poupdate-source for 0.9.38
Fix poupdate script to not pick up tags in 3rd party libs
2019-01-09 19:03:41 +00:00
zzz
671e9dd711 I2CP: Stub out client-side creation of meta and enc. LS2 2019-01-09 18:41:36 +00:00
zzz
4ff9092bd9 Wrapper: Increase default heap to 256 MB 2019-01-09 13:29:36 +00:00
zzz
fb8665b9bd Console: Fix broken image link on /configui 2019-01-09 13:09:49 +00:00
zzz
2c7033001e Console: Remove firefox anchor in link 2019-01-09 13:08:45 +00:00
zzz
30ea6f3ffa Console: Remove test code that forces wizard run on dev builds 2019-01-09 13:07:59 +00:00
zzz
5634055d4b Crypto: Stub out EdDSA blinding (proposal 123) 2019-01-05 14:22:46 +00:00
zzz
3b7284c9cd I2CP: Add support for multiple private keys in CreateLS2Message 2019-01-04 14:30:38 +00:00
zzz
74ed974145 NetDb: Prevent ISJ deadlock (ticket #2366) 2019-01-04 13:48:38 +00:00
zzz
4786081026 Build: Check cert validity
Reseed updates
2019-01-04 12:15:58 +00:00
zzz
150cee9a08 Data: Add type byte to MetaLease,
add EmptyProperties to reduce object churn,
undeprecate getSigningKey(),
reduce loadProps() buffer size
2019-01-02 14:29:10 +00:00
zzz
941a994482 remove temp wizard text 2019-01-02 13:23:30 +00:00
zzz
d10d722763 Wizard: Styling, fix links, change button icons
back.png: Arrow flipped from go.png in Gimp, same license
2019-01-02 13:19:12 +00:00
zzz
9951e3467e Data: More work on Encrypted LS2 (proposal 123) 2019-01-02 11:50:05 +00:00
zzz
62fd0497f8 Debian: Split up conffiles into subpackages 2019-01-01 21:01:40 +00:00
zzz
a0d2288ded Debian: Remove obsolete systray.config 2019-01-01 20:20:35 +00:00
zzz
149359fdc3 Data: Fix LS2 size(), fix Meta LS2, fix date rouding 2019-01-01 20:17:56 +00:00
zzz
4ae57f4f01 Data: Fix LS2 support for unknown enc. types (proposal 123) 2019-01-01 17:48:31 +00:00
zzz
d95d81aea7 Data: Add support for LS2 multiple encryption keys (proposal 123) 2019-01-01 17:14:37 +00:00
zzz
92ad4d1ce3 NBI: Add lookup tables for ARMv8 2019-01-01 15:41:11 +00:00
zzz
3c0ba5ce9c Console: Add warning for OpenJDK Zero VM 2019-01-01 15:01:22 +00:00
zzz
f221e724b9 Console: New light background (ticket #738) thx Alex 2019-01-01 14:43:19 +00:00
0fdede8657 Fix _isArm 2018-12-30 13:17:19 +00:00
zzz
47629bf2cf Console: Update ARM warning (ticket #2368), remove Java 11 warning 2018-12-24 13:24:58 +00:00
zzz
0474876b58 NDT: Fix deprecation 2018-12-24 13:21:05 +00:00
zzz
edae8e3e0b Sybil: Translate strings that we already have tagged elsewhere 2018-12-23 15:02:45 +00:00
zzz
1411d0cff3 Sybil: Change persistence format to prevent errors in some locales 2018-12-23 14:40:13 +00:00
zzz
aad80eb2a3 Console: _action cannot be null in processForm()
GraphHelper minor cleanup
2018-12-23 13:38:54 +00:00
zzz
af49a90303 Sybil: Add background run form 2018-12-23 13:21:27 +00:00
zzz
fa6a4ca1d1 Console: Convert NetDbHelper to a FormHandler,
change SybilRenderer forms to POST,
only collect RIs on required Sybil tabs
2018-12-23 12:19:32 +00:00
zzz
e122393914 FormHandler: move things around 2018-12-23 11:08:50 +00:00
zzz
2d026d5ae7 Console: isAdvanced() cleanup 2018-12-23 10:17:46 +00:00
zzz
367e5ac679 javadoc fix 2018-12-21 12:15:07 +00:00
zzz
f3a4b115f3 Console: More links on sybil page 2018-12-21 11:37:09 +00:00
zzz
9f64cc7c60 TLSv1.3 notes 2018-12-21 11:35:15 +00:00
zzz
03651292fb thread name change 2018-12-21 11:33:55 +00:00
zzz
94fd60db10 Transports: Improve banning of routers from wrong network 2018-12-21 11:32:17 +00:00
zzz
18b7d97584 new reseed 2018-12-20 11:02:20 +00:00
zzz
021375b5d5 NTCP: More now() calls out of loops 2018-12-20 10:58:30 +00:00
8a0602732d Get call to system timer out of tight loop when counting connections 2018-12-19 10:51:53 +00:00
zzz
20876ff307 Sybil page date formatting 2018-12-17 14:43:02 +00:00
zzz
bf3a7d6ef7 Data: More work on Encrypted LS2 (proposal 123) 2018-12-17 13:59:49 +00:00
zzz
35a771c764 NTCP2: Use new HKDF class 2018-12-17 13:16:54 +00:00
zzz
eb8178ea3b Sybil: Linkify IP reasons
Adjust IP points
2018-12-17 11:46:14 +00:00
zzz
3867beb198 GeoIP: Fix NPE (thx parg) 2018-12-17 11:24:27 +00:00
zzz
cae5dcd69c Sybil: Refactoring part 6
Make Analysis class a JobImpl, run on configured frequency
Bug fixes and cleanups
2018-12-17 11:23:08 +00:00
zzz
2a805dddf5 Sybil: Refactoring part 5
Make Analysis class singleton, hang off ClientAppManager
prep for offline scheduling
2018-12-16 14:44:37 +00:00
zzz
fa0d63f40f Sybil: Refactoring to separate analysis and display, part 4
Load/store offline analysis
Split up sections into separate tabs
2018-12-16 13:20:59 +00:00
zzz
9437e2cb79 Sybil: Refactoring to separate analysis and display, part 3 2018-12-15 17:49:52 +00:00
zzz
3054a240bb Sybil: More refactoring to separate analysis and display 2018-12-15 16:54:01 +00:00
zzz
5d06de8608 Sybil: Class for persisting results, related refactoring 2018-12-14 16:54:10 +00:00
zzz
468871f21e Crypto: Add HKDF class for LS2 and NTCP2 (proposal 123)
Minor speedup in HMAC256
2018-12-13 14:39:08 +00:00
zzz
6c3c227c1b Debian: Add alt files for sid (ticket #2098)
Fixes compatibility with Jetty 9.4
Patch from Emmanuel Bourg, see
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916177
Briefly tested by mhatta
2018-12-13 14:30:22 +00:00
zzz
9738db7254 UrlLauncher:
- Use arrays for exec
- Randomize temp file name
- Require quotes around args containing spaces in routerconsole.browser property
- Add debug logging
- Add chromium-browser to the default list
- Parse and use full command line from Windows registry
- Replace %1 with url in registry line and routerconsole.browser property
ShellCommand:
- Switch to i2p logging
2018-12-12 20:12:07 +00:00
zzz
51bf23a34c DTG: Use UrlLauncher to launch browser 2018-12-12 15:17:51 +00:00
zzz
5eda30644f Util: Add another ShellCommand String[] method
to be used by UrlLauncher
2018-12-12 13:59:27 +00:00
zzz
2746ed5ce2 Installer: Drop unused systray.config 2018-12-12 13:56:47 +00:00
zzz
fd23b23e56 Crypto: HMAC-SHA256 cleanup
Add byte[] key method to reduce object churn in NTCP2
Un-deprecate in context
2018-12-11 12:19:46 +00:00
zzz
a63d2dccb2 Transports: Log tweaks 2018-12-11 11:35:45 +00:00
zzz
0f6f8f90c9 Utils: Code to simulate IPv6-only 2018-12-11 11:32:52 +00:00
zzz
87c97b2a0a Debian: Add conffiles list
Users shouldn't be editing these, they are the site templates
that are copied to the config dir on first run, but if they are changed,
the user will have the chance to save the changes on upgrade.
2018-12-11 11:28:00 +00:00
zzz
6f4d76e871 editorconfig update 2018-12-11 11:22:43 +00:00
zzz
c1850cc4f3 Utils: Enable TLSv1.3 for SSL sockets
(available in Java 11)
2018-12-11 11:19:36 +00:00
zzz
399899e7e7 NetDb: Allow longer expiration for Meta LS2 2018-12-08 18:24:14 +00:00
zzz
bdc4d82eb2 Transport: Don't set status to disconnected if IPv6-only but not configured IPv6-only 2018-12-08 17:35:29 +00:00
zzz
2200cf6627 Transport: Don't repeatedly publish RI if IPv6-only but not configured IPv6-only 2018-12-08 17:28:54 +00:00
d382f1214e merge of 'a2e8a7d9b157e9a7d5ab0e4356b7b046715a4243'
and 'c3ae5fc1d281c2f9c6357dd72bfc2147bae71877'
2018-12-08 14:38:18 +00:00
36a5790b87 Mac OS X Launcher: Misc minor updates to Preferences 2018-12-08 14:37:59 +00:00
zzz
5d100417c4 Console: Hide I2CP config if disabled 2018-12-08 14:30:04 +00:00
b946bb0679 Mac OS X Launcher: Webkit header + I2P version inside Info.plist 2018-12-08 09:17:09 +00:00
c3b8317edb Mac OS X Launcher: Adding optional Dock Icon functionality 2018-12-08 09:16:28 +00:00
f90e2ee659 Mac OS X Launcher: Xcode metadata project file update 2018-12-08 09:15:33 +00:00
3bad8f33c4 Mac OS X Launcher: Remove unneeded entitlement 2018-12-08 09:15:04 +00:00
dfcc616cb3 Mac OS X Launcher: Misc changes in ObjC, forwarding sendUserNotification to Swift. 2018-12-08 09:14:33 +00:00
a0d356bc56 Mac OS X Launcher: Changes in path lookups (many via Preferences), launchd template changes and java arguments for the router itself. 2018-12-08 09:12:24 +00:00
f4496a0c4c Mac OS X Launcher: Unfinished experimental code, adding so other people can compile the xcode project. 2018-12-08 09:10:43 +00:00
8841fed1f1 Mac OS X Launcher: Updated version.h template file to embedd i2p version as NSString in build time. 2018-12-08 09:09:37 +00:00
eca5805195 Mac OS X Launcher: Adding selectors for Preferences window launch, and for view of experimental console webview. 2018-12-08 09:08:22 +00:00
b8681ddf9d Mac OS X Launcher: Misc updates to the Launchd code, also moved it to a own directory for cleaner source view. 2018-12-08 09:07:03 +00:00
68ad4eec14 Mac OS X Launcher: Adding user interface classes for the different Preferences views so far. 2018-12-08 09:05:55 +00:00
a192679638 Mac OS X Launcher: Adding Preferences class which works as an interface towards apple's "defaults" preferences system 2018-12-08 09:04:54 +00:00
7058bd85fa Mac OS X Launcher: Adding Preferences button to existing storyboard view 2018-12-08 09:03:42 +00:00
92c42db787 Mac OS X Launcher: Adding Preference storyboard 2018-12-08 09:03:13 +00:00
zzz
926bce78a7 I2CP: Set and validate offline sig in SessionConfig 2018-12-05 15:27:36 +00:00
zzz
d054c6bc04 I2CP: Set offline keys in generated LS2
(router side to follow)
Propagate error from disconnect message to session listener
Refactor RLSMH options
2018-12-05 13:50:07 +00:00
zzz
2876da2565 I2CP, Data: Initial support for LS2 offline keys in I2PSession and PrivateKeyFile 2018-12-04 20:59:38 +00:00
zzz
177f595f33 Javadoc fixes
NDT log tweaks
2018-12-04 20:34:51 +00:00
zzz
7c5162e155 I2CP: Move the port 7654 definition 2018-12-03 16:17:30 +00:00
zzz
5e7a277e98 I2CP: Consolidate all the port 7654 definitions 2018-12-03 15:22:36 +00:00
zzz
af2eea5916 NetDb: Don't send our RI in response to DSM when shutting down
reverts change from 2015
2018-12-03 12:23:57 +00:00
zzz
633a75e286 Wizard: Update text 2018-12-03 12:03:27 +00:00
zzz
6e053689b9 Transport: Add methods to force-disconnect a peer 2018-12-02 19:14:36 +00:00
zzz
ee722b7688 Router: Allow LS2 DSM down a tunnel 2018-12-02 18:53:13 +00:00
zzz
e6912453e0 DataHelper: Minor efficiency improvements in Properties methods 2018-12-02 15:21:30 +00:00
zzz
7c928f99ea Router: Only flood LS2 to router that supports it
Use same version check in StoreJob for flooding
2018-12-01 18:31:58 +00:00
zzz
9efa0eaa40 Router: Only send/verify LS2 with router that supports it
Remove old commented-out code
2018-12-01 18:18:59 +00:00
zzz
700d4d3b48 Console: Don't output tunnel IDs for meta LS
Router: Don't try to send to a meta LS in OCMOSJ
2018-12-01 16:27:53 +00:00
zzz
026ddb3278 Router: Add preliminary support for more LS2 types (proposal 123)
I2CP: Don't require privkeys for meta in CLS2 message
2018-12-01 13:13:51 +00:00
zzz
79440f84eb I2CP: Add preliminary support for LS2 (proposal 123) 2018-12-01 11:40:10 +00:00
zzz
922515dfe4 Crypto: Add X25519 keygen support 2018-11-30 17:29:08 +00:00
zzz
f1689187a4 Data: Check data length in typed constructors
Check for type match in KeyPair
Mark placeholder EncTypes 1-3 as unavailable
2018-11-30 15:56:27 +00:00
zzz
2487bca47c Crypto: Change X25519 key classes from Java keys to I2P keys,
in prep for new crypto (Proposal 144)
Add EncType
Fix PrivateKey constructor w/ EncType
Add support to KeyGenerator
2018-11-30 15:15:31 +00:00
zzz
cc4da1b4da Crypto: Move Curve25519 from router to core,
in prep for new crypto
2018-11-30 13:51:50 +00:00
zzz
a8bacd8727 Data: Change LS2 sign/verify to match proposal changes 2018-11-27 12:34:41 +00:00
zzz
b93be8bb4a Crypto: Define ElG length constants 2018-11-25 15:23:17 +00:00
zzz
9badfd07bf Utils: Catch ProviderException in SelfSignedGenerator (ticket #2344) 2018-11-25 15:17:27 +00:00
zzz
dc8a822b0e GeoIP: Reduce object churn, add test to command line tools 2018-11-25 15:16:18 +00:00
zzz
43e0d4f910 Reseed: Drop manas.ca reseeds as requested 2018-11-25 15:13:12 +00:00
zzz
d6e350184c Test: Move ElGamalTest from core to router to follow tested class 2018-11-23 14:22:08 +00:00
zzz
535f2daab0 Router: Move ElGamalAESEngine from core to router
Client end-to-end crypto removed 13 years ago
Not used by any client, app, or plugin.
2018-11-23 13:04:28 +00:00
zzz
5c0c69c654 GeoIP: Add MaxMind GeoLite2-Country database 2018113, gzipped
Database and Contents Copyright (c) 2018 MaxMind, Inc.
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.
This database incorporates GeoNames [http://www.geonames.org] geographical data,
which is made available under the Creative Commons Attribution 3.0 License.
To view a copy of this license, visit http://www.creativecommons.org/licenses/by/3.0/us/.
- Drop old ipv4 and ipv6 data files and build scripts
- Build changes for new file
2018-11-20 14:25:49 +00:00
zzz
ef44c36f0c GeoIP: Hook maxmind geoip2 code into transport lookup. 2018-11-20 14:14:34 +00:00
zzz
f1297e7c62 GeoIP2: License and javadocs 2018-11-20 11:07:33 +00:00
zzz
21ca75da14 Modify GeoIP2-java
to remove the dependency on the large com.fasterxml.jackson.databind JSON package,
and use POJOs instead.
Add main() for testing
2018-11-20 11:05:46 +00:00
zzz
3923db0677 Modify MaxMind-DB-Reader-java
to remove the dependency on the large com.fasterxml.jackson.databind JSON package,
and use POJOs instead.
2018-11-20 11:03:47 +00:00
zzz
98de1ae404 This is GeoIP2-java release 2.12.0 2018-04-11
retrieved from <a href="https://github.com/maxmind/GeoIP2-java">github</a>.
For reading MaxMind GeoLite2 database files.
Contains only the DatabaseReader class from that package.
Unmodified as a baseline for future merges.
Does not compile.
To be heavily modified to remove the dependency on the large
com.fasterxml.jackson.databind JSON package,
and use POJOs instead, see following revs.
Apache 2.0 license.
2018-11-20 10:59:43 +00:00
zzz
76921b1e3e This is MaxMind-DB-Reader-java release 1.2.2 2017-02-17
retrieved from <a href="https://github.com/maxmind/MaxMind-DB-Reader-java">github</a>.
For reading MaxMind GeoLite2 database files.
Unmodified as a baseline for future merges.
Does not compile.
To be heavily modified to remove the dependency on the large
com.fasterxml.jackson.databind JSON package,
and use POJOs instead, see following revs.
Apache 2.0 license.
2018-11-20 10:57:33 +00:00
zzz
97e7a98aed JSON javadoc fixes 2018-11-19 14:59:14 +00:00
zzz
d263e42e1e Debian: Add libjson-simple-java dependency 2018-11-19 14:58:20 +00:00
zzz
54184f2889 Util: Switch users of net.minidev.json to com.json.simple
Tested with bundled 1.1.1 and Debian/Ubuntu 2.3.0
2018-11-19 14:48:21 +00:00
zzz
af9ce6d173 Change json lib from net.minidev.json to com.json.simple
because libjson-simple-java is in Debian (jessie+) and Ubuntu (trusty+).
Version 1.1.1 (Feb. 2012) from:
https://github.com/cliftonlabs/json-simple
https://github.com/fangyidong/json-simple/releases
License: Apache 2 (same as minidev)
Release info:
https://cliftonlabs.github.io/json-simple/
Current version 2.3.0 (in buster/sid/bionic+) is compatible.
The 3.x branch is incompatible.

No known external users of minidev (JSON_SMART) which was added in April 2018
(0.9.35) for DoH and the eventual bundling of i2pcontrol.
The i2pcontrol plugin was switched from json-simple to minidev in early 2018,
but it bundles the minidev source. When we bundle, we can switch it back.

Does not compile; see checkins to follow.
2018-11-19 14:44:31 +00:00
zzz
a1baf856f9 Wizard: Fix cancel test button 2018-11-18 16:13:47 +00:00
zzz
13d80e604d Wizard: Ajax fixes for IE (thx zlatinb) (summary bar also)
Form notices on results panel
Hide results if skipped
2018-11-18 13:43:18 +00:00
zzz
09ea40ce8e bump -5 2018-11-17 12:33:00 +00:00
zzz
bbccb476c0 NTCP2 unused code 2018-11-17 10:26:59 +00:00
zzz
0526d6fd15 add bw test to commandline 2018-11-17 10:25:20 +00:00
zzz
c5bd0bd079 NDT: Add support for test over SSL
error handling
log tweaks
2018-11-17 10:19:55 +00:00
zzz
6963d1f746 NDT: Fix NPE caused by last checkin 2018-11-16 21:36:46 +00:00
zzz
a5c38ba6e3 NDT: Remove Swing call 2018-11-16 19:47:36 +00:00
zzz
bfb6eba90c NDT: Thread tweaks 2018-11-16 19:43:11 +00:00
zzz
c07f68e622 NDT: Fix locale, spoof OS, fix log init 2018-11-16 19:27:57 +00:00
zzz
9b9810ea1e MLab: Switch to name server that supports SSL
swingemu cleanups
2018-11-16 17:12:32 +00:00
zzz
9a254aec55 NDT: Restore logging removed in last rev 2018-11-16 15:08:20 +00:00
zzz
aa11211e5e Wizard: Improve ajax
Drop unused test wrapper
Enable first run detection
Spelling fix
2018-11-16 14:34:11 +00:00
zzz
f1e9bf8222 bump -4 2018-11-15 19:45:21 +00:00
zzz
812baf8bd9 NDT log tweaks 2018-11-15 19:39:08 +00:00
zzz
5fe2019897 basic XHR 2018-11-15 19:05:40 +00:00
zzz
aebf7735fe NDT: remove unused user-agent code 2018-11-15 18:04:18 +00:00
zzz
bdbadcd8af Wizard: Warn if trying to start NDT twice 2018-11-15 17:53:50 +00:00
zzz
54a1609760 Wizard: Signal bwlimiter after config change
Remove debug log in form handler
2018-11-15 17:41:57 +00:00
zzz
0369d321d3 Wizard: Hook test results to form
More fixes and cleanups
2018-11-15 16:45:21 +00:00
zzz
62c712c462 Wizard: More test results 2018-11-15 15:07:17 +00:00
zzz
dc343b05a2 MLab/NDT: Hook test to wizard
Make helper the session scope, not handler
Reduce whitespace in formhandler.jsi
Notes on why FormHandler can't be session scope
Ajax still TODO
2018-11-15 14:24:46 +00:00
zzz
6462e2a292 MLab/NDT: Prep for connecting to wizard, fixes, cleanups 2018-11-14 14:48:10 +00:00
zzz
a35ad5fc57 javadocs 2018-11-13 19:37:38 +00:00
zzz
d95c284d3e MLab/NDT: static instance, log fixes, cleanups 2018-11-13 19:20:10 +00:00
zzz
84c0aa4072 javadoc 2018-11-13 19:18:42 +00:00
zzz
cec94e934a Console: Remove some config items from home page 2018-11-13 18:01:26 +00:00
zzz
b695242daf Router: LS2 handling for proposal 123 2018-11-13 18:00:05 +00:00
zzz
ddfc7c05ef Data: support non-string values in DataHelper.toString(Map) 2018-11-13 17:53:33 +00:00
zzz
9377b57c9e ElG minor cleanup 2018-11-13 17:51:52 +00:00
zzz
2bfbcf1ae9 jsi whitespace removal 2018-11-13 17:48:58 +00:00
zzz
f8f6375738 New install setup wizard
Work in progress, run on first install disabled.
Language and bw settings should work,
other panes todo.
2018-11-13 17:46:18 +00:00
zzz
c074467163 MLabRunner, adapted from Vuze/BiglyBT MLabPlugin.java
Github rev e927dca, Aug. 18, 2018.
From: https://github.com/BiglySoftware/BiglyBT-plugin-mlab
License: GPLv2
Work in progress, command line test works,
not hooked up to console yet, awaiting wizard
Build changes to copy in translation files,
and put the javadocs in the right place.
2018-11-13 17:26:38 +00:00
zzz
92787f8fcc swingemu fix to compile Tcpbw100 from 3.7.0.2 2018-11-13 17:21:54 +00:00
zzz
71d8f0e4d4 Vuze/BiglyBT Swing emulation layer for NDT Applet.
This is a simple shim to allow running the NDT Applet code
with minimal modifications.
From BiglyBT MLab plugin:
Github rev e927dca, Aug. 18, 2018.
From https://github.com/BiglySoftware/BiglyBT-plugin-mlab
This is for Tcpbw100 from NDT 3.6.2b;
not sufficient to compile Tcpbw100 from 3.7.0.2,
changes to follow.
License: GPLv2.
2018-11-13 17:20:33 +00:00
zzz
e20401373c NDT changes adapted from Vuze/BiglyBT, and changes for I2P.
Vuze/Bigly is based on NDT 3.6.2b, so their changes are
manually merged here.
This rev does not compile, requires swingemu package to follow.
Changes:
- Add external start hook to Tcpbw100 from BiglyBT
- Replace all Swing/AWT classes with emulations from BiglyBT
  (included in next checkin)
- Leave classes in edu.internet2.ndt package rather than
  moving to com.vuze.plugins.mlab heirarchy as Vuze/BiglyBT did
- Change IPv6 support setting to use I2P class for detection
- Change in-progress field to an AtomicBoolean
- Change from System to I2P logging
- Change JSON library package
- Comment out some applet code
- Javadoc fixes
2018-11-13 17:08:56 +00:00
zzz
6f7881c7ea Web100 Network Diagnostic Tool (NDT) Java Applet
Version 3.7.0.2 (May 20, 2015)
From: https://github.com/ndt-project/ndt/releases
Unmodified, as baseline for future merges.
Will not compile, changes adapted from BiglyBT to follow.
Copyright 2003 University of Chicago.
3-clause license with requirement that:
  Modified copies and works based on the Software must carry prominent
  notices stating that you changed specified portions of the Software.
See LICENSE.txt and licenses/LICENSE-NDT.txt
2018-11-13 16:58:05 +00:00
e326011a93 merge of '917225cb79561b9c536091f9c0790633ebbca610'
and 'c9243853a4211ebe92d964f7aa6ba57e624d6ab8'
2018-10-14 01:46:17 +00:00
zzz
e9ec043bf4 Data: Encrypted LS2, other LS2 changes 2018-10-13 14:36:39 +00:00
zzz
e391992251 Data: MetaLeaseSet2 data structure, LS2 test enhancements 2018-10-13 12:46:45 +00:00
zzz
02f5733eee Data: Prop 123 Meta Lease 2018-10-13 11:40:14 +00:00
zzz
a9f957504e Data: Lease2 and LeaseSet2 data structures, prop. 123 store types 2018-10-13 10:49:50 +00:00
zzz
f0b3815767 Data: Prep Lease and LeaseSet for subclassing 2018-10-13 10:41:16 +00:00
zzz
ee57bd7363 Data: Add encryption types for PublicKey, PrivateKey 2018-10-13 10:39:20 +00:00
zzz
4c970fa0aa Data: SPK log tweaks 2018-10-13 10:35:30 +00:00
zzz
0a99784221 Build: Add javac.classpath to junit.compileTest targets (ticket #2333) 2018-10-13 09:32:51 +00:00
eed8011725 OSX Launcher: dmg create script update 2018-10-13 04:06:44 +00:00
f8fb4a66dd OSX Launcher: Remove restart button 2018-10-13 04:06:02 +00:00
4f8af55378 OSX Launcher: Storyboard update 2018-10-13 04:05:38 +00:00
530470972f OSX Launcher: general cleanup, responsibility delegation, and fixes 2018-10-13 03:54:01 +00:00
a9bf9e0657 OSX Launcher: make deployer an property so it's not deleted in mid-extract by GC. 2018-10-13 03:52:40 +00:00
e2d22645e1 OSX Launcher:
* UI Bugfixes/features
    * restart might work
    * open console button should work
    * cleanup
2018-10-13 03:51:22 +00:00
5f077891ae OSX Launcher: Storyboard update 2018-10-13 03:47:28 +00:00
1a00f73191 OSX Launcher: Extended start/stop/load/unload to be able to set terminationHandler for more reliable execution. 2018-10-12 20:52:24 +00:00
d8cfe21e92 OSX Launcher: make some string functions inline 2018-10-12 20:07:59 +00:00
ee9976c288 OSX Launcher: Xcode UI elements update. 2018-10-12 20:07:36 +00:00
10707c6d71 merge of '1f8e31dab7ed66ddd8f332fca5784b4934d0c9b0'
and '4197dba37e7c738c7b1125b3e407a7bc0b2c972a'
2018-10-11 17:04:49 +00:00
8e988c39e9 OSX Launcher: Updated build instructions in readme 2018-10-11 17:03:11 +00:00
e3ab9f8e91 OSX Launcher: Swift GUI code updates, most related to the new launch method. 2018-10-11 17:02:42 +00:00
96d31995e1 OSX Launcher: cleanup and restructuring the main swift file 2018-10-11 17:01:21 +00:00
3988a8645d OSX Launcher: major updates to the glue between 'backend' and GUI. Implemented the use of the new LaunchAgent classes 2018-10-11 16:59:59 +00:00
b25dec12d1 OSX Launcher: some changes to the Swift<->Objective-C bridge 2018-10-11 16:58:20 +00:00
f57f8c6083 Some more xcode metadata files 2018-10-11 16:56:26 +00:00
2862be564e XCode metadata files update 2018-10-11 16:55:36 +00:00
45b4f426a8 OSX Launcher: Big rewrite of swift code where it now has the capability of creating services.
The router management has been much easier with this approach as it uses launchd to do the dirty work.
This code also uses java_home as a wrapper instead of locating the java binary by itself. This also contribute to the improvements.
2018-10-11 16:55:07 +00:00
51cbd8ef87 Dropping unused swift class 2018-10-11 16:49:51 +00:00
8b2c3de795 OSX Launcher: Cleaning up DetectJava.swift 2018-10-11 16:49:19 +00:00
969bc2dee3 OSX Launcher: String extensions update 2018-10-11 16:48:10 +00:00
zzz
77e539a73c Docs: Add maven doc from str4d via mattermost
Update dependencies doc
2018-10-11 14:33:23 +00:00
zzz
2de36ee343 Console: Remove static Server ref, hang off RCR 2018-10-11 13:10:33 +00:00
7dbf568212 OSX Launcher: Refactor deployment code to own file, + code cleanups. 2018-10-11 11:55:05 +00:00
7e9d1939b1 OSX Launcher: Storyboard update 2018-10-11 11:51:55 +00:00
48877079ca OSX Launcher: Log all events for debugging 2018-10-11 11:50:00 +00:00
zzz
e68182a157 Build: Provide option to prevent Class-Path in manifests (ticket #2317) 2018-10-10 12:30:34 +00:00
zzz
06914f9fd4 Sybil: Take HTML out of reason string for easier parsing and storage 2018-10-09 16:56:50 +00:00
zzz
8332385f05 Sybil: More prep and refactor for background analysis
Put dest name in too-close reasons
2018-10-09 16:37:29 +00:00
zzz
19b1b3cec4 Sybil: Prep for background analysis
sort threat points
consolidate strings
2018-10-09 14:55:13 +00:00
zzz
bdd7c35ab3 Console: Remove static StatSummarizer ref, hang off ClientAppManager 2018-10-08 19:31:54 +00:00
zzz
184b6179e5 i2psnark: Sync field access (findbugs) 2018-10-08 14:24:46 +00:00
zzz
6fccfc990a Use Double.compare() in comparators (findbugs) 2018-10-08 13:34:15 +00:00
zzz
524c375944 Data: Drop long-deprecated and unused boolean methods and related tests 2018-10-08 12:43:58 +00:00
zzz
5041bb8531 netdb class cleanup 2018-10-08 12:13:24 +00:00
zzz
7dfee5f0ab NTCP2 log tweak 2018-10-07 19:50:59 +00:00
zzz
e3d456c733 Debian: Don't override dh_builddeb (ticket #2329) 2018-10-07 15:54:12 +00:00
zzz
e2a41b7748 Console: Sort RAs in Sybil tool 2018-10-07 14:52:24 +00:00
zzz
477fa9ef3a Build: Fix build config with-libtomcat8-java but not with-libjetty9-java,
by copying required jetty jar to jetty-apache-jsp.jar
2018-10-07 14:29:47 +00:00
zzz
0cd67acd19 Console: /netdb fixes (ticket #2326):
- 'O' cap search won't include P/X
- Fix highlighted tab for transport search
- Use POST instead of GET
2018-10-06 22:59:58 +00:00
zzz
aafccc0132 Console: Fix SSU sort links broken in last checkin 2018-10-06 17:40:05 +00:00
zzz
ff1e53a0e3 Console: Fix bw cap display for P/X on /tunnels 2018-10-06 17:09:14 +00:00
zzz
b8d33f7426 Console: Tab /peers, fix html errors 2018-10-06 16:50:32 +00:00
zzz
8dc3163c73 flip sections on /confighome 2018-10-06 13:33:19 +00:00
zzz
960636c6bf Console: Sort addresses in RIs, remove note about O cap 2018-10-06 13:25:22 +00:00
zzz
e528775768 debian changelogs 2018-10-05 18:41:48 +00:00
zzz
52739165a1 0.9.37 2018-10-04 10:01:44 +00:00
zzz
eb1d848372 bump for review 2018-10-01 17:41:20 +00:00
zzz
2a9c39ca6e missed one 2018-10-01 17:04:26 +00:00
zzz
b84b298ec8 pull translations from tx 2018-10-01 16:55:26 +00:00
e59dd3bcec Mac OSX Launcher: LICENSE file for the sbt bash script. 2018-09-30 13:55:06 +00:00
d6fc0adb56 Mac OSX Launcher: Removed dmgconfig.py, added public domain to sharedqueue.h and updated xcode for the dmgconfig.py removal. 2018-09-30 13:42:32 +00:00
5041883d5a Mac OSX Launcher: Update readme regarding Oracle's downlad url. 2018-09-30 11:37:12 +00:00
5ed701dff3 Mac OSX Launcher: updates in logging, remove timestamp from Objc's MLog 2018-09-30 11:34:20 +00:00
410f9df4e4 Mac OSX Launcher: The launcher will now write the pid of the router to a file like the old wrapper did. 2018-09-30 11:29:21 +00:00
b5497ef72e Mac OSX Launcher: Cancel stream that can cause high cpu load on router stop. 2018-09-30 11:02:28 +00:00
2233f7f47b Mac OSX Launcher:
* Update readme about event manager
  * RouterTask can now detect a running router by scanning processes&arguments for i2p.jar
  * The logger will log to OSX's default: ~/Library/Logs/I2P/[whatever].log
2018-09-30 09:40:43 +00:00
36b758f2c0 Mac OSX Launcher: Removing unused/change-in-plans files 2018-09-30 09:37:51 +00:00
ae0d420f5f Mac OSX Launcher:
* Added script to check for latest java via xcode
  * Updated xcode project metadata files
  * Update dmg create script
  * Make xcode write version.h under build
  * Added template for version.h
2018-09-30 09:35:28 +00:00
b40b987c0f Mac OSX Launcher:
* Fixed issue with >> and compilers in C++ in subprocess.hpp
  * Added queue for logger
  * Misc
2018-09-30 09:32:49 +00:00
e8d371ed9b Mac OSX Launcher: C api of the logger to become available for Swift/Objective-C 2018-09-30 09:31:29 +00:00
5a0017a8fe Mac OSX Launcher: Adding a logger library I wrote a good while ago, refactored it to work with the launcher. 2018-09-30 09:30:39 +00:00
751f15c1b1 Update .mtn-ignore for osx stuff 2018-09-30 09:28:52 +00:00
zzz
d1b2a4e51c apparmor update 2018-09-29 19:44:23 +00:00
zzz
6ef6b3b705 new geoipv6 data, bump builddate 2018-09-29 17:20:57 +00:00
c069f76324 Add "clearer" div to Hidden Services Of Interest section in /home so that nested floating divs are displayed properly 2018-09-29 08:48:31 +00:00
9a11165bfc propagate from branch 'i2p.i2p' (head effa099b40ff593227c59707a33922176dc775b1)
to branch 'i2p.i2p.slumlord' (head 5ddcc0dd19779b78356459bd074f75943d5d42d1)
2018-09-29 08:40:20 +00:00
zzz
3a5f020dac SSL Wizard: Don't put public IP in SAN 2018-09-27 15:05:57 +00:00
zzz
d67d501b28 Data: Don't corrupt hidden RI with addresses 2018-09-27 14:38:18 +00:00
zzz
a69aa15acd drop zerobin 2018-09-27 14:12:30 +00:00
zzz
c391dacf7d sybil tweaks 2018-09-27 14:07:38 +00:00
zzz
69f380f4a1 flip /home sections 2018-09-26 22:59:55 +00:00
22a0f396e6 Mac OS X Launcher:
* Enabled Apple's "Hardened Runtime", however unsecure memory had to be allowed to spawn java etc.
  * Updated docs about Event Manager code
  * Make the launcher handle cases where extract is incomplete or invalid
  * Bugfixes as always
2018-09-26 20:42:58 +00:00
zzz
d27000ec07 Crypto: Avoid java-to-i2p ECDSA privkey conversion when generating CRL,
failing on Android for unknown reasons (ticket #2296)
2018-09-26 15:19:14 +00:00
zzz
b82ace8a84 Router: Don't add 'O' cap for P/X anymore 2018-09-26 14:20:11 +00:00
zzz
b7ff82eb82 IRC: Make inbound whitelist static 2018-09-26 14:16:05 +00:00
zzz
f7ae675201 cleanup 2018-09-26 14:12:05 +00:00
zzz
39aa2c597e Utils: Enhance exception message for ticket #2296 2018-09-26 14:04:36 +00:00
zzz
34f0d7d7b3 Build: Compile jsps in-order for reproducibility (ticket #2279) 2018-09-24 15:52:42 +00:00
zzz
e59d7a821b Plugins: Blacklist neodatis and seedless for Java 9+ (ticket #2295) 2018-09-23 15:11:16 +00:00
7a72049e28 Mac OS X Launcher:
* Bugfixes as always
  * Added Sparkle (native updater, https://sparkle-project.org/ )
  * The launcher will now extract and overwrite older versions if found
  * Rewrite of the java extraction part (to enable overwrite)
  * Move more functionality to use EventManager as it works quite well
  * Added check for updates menu item
2018-09-23 03:33:29 +00:00
3b38f5a161 Mac OS X Launcher:
* In general bugfixes
  * Introduced event manager for better control flow
  * Splitted RouterStatusView to own file
  * Added shell script to setup and produce dmg file
2018-09-22 22:13:40 +00:00
zzz
829eb665e9 NTCP: Fix handling of multiple connections,
change termination code for expired RI, log tweaks
2018-09-22 12:13:51 +00:00
zzz
4369b7d122 merge of 'dba1ad61c390f95055923ae1fb35e60552f617c6'
and 'f84ff8b356783cf12619b83a8104e55fe76a7411'
2018-09-22 12:11:43 +00:00
70fa2dae0a Mac OS X Launcher: Let version detection etc happen even a router is already started. 2018-09-20 03:27:37 +00:00
85ebb2f847 Mac OS X Launcher: Removed unused header file. 2018-09-20 03:22:41 +00:00
e8decff5cd Mac OS X Launcher: more cleanup and some bugfixes. 2018-09-20 03:20:39 +00:00
3c0a8cf4ab Mac OSX Launcher: A lot of bugfixes, refactoring and cleanup. 2018-09-20 02:38:44 +00:00
eb81cadac0 OSX Launcher: Removing script for old build system 2018-09-19 19:12:26 +00:00
0f8a61803f Remove license for now unused library. 2018-09-19 17:01:12 +00:00
e046418f8f Cleaning up the code base, remove dead code and failed attempts. 2018-09-19 17:00:17 +00:00
802115e813 Updating .mtn-ignore file 2018-09-19 16:13:05 +00:00
9b958e4427 Moving replace function to strutil.hpp 2018-09-19 16:03:39 +00:00
46ac008775 #2298 - Improve formatting to make translation-related activity easier; More details on trac 2018-09-19 10:37:37 +00:00
281c5f579f Bugfixes, improvements, more error handling and stability to the osx launcher. 2018-09-19 00:37:16 +00:00
01a05f7600 Adding license for forked subprocess code in swift.
MIT, ref. https://github.com/marcoconti83/morione
2018-09-19 00:14:25 +00:00
f76874ac19 Adding XCode workspace & Xcode project, and some files missing from last commit.
Please note that Xcode project embedds the packing script (meaning it runs "ant" - zip files, and moves it to bundle)
2018-09-18 15:39:32 +00:00
7615b9236b Adding all new code, removed a lot obsolete code and fixed import paths etc.
Mac OS X launcher:
* UI built on Swift
  * Why?
    * Apple seems to on purpose make it harder to get into Objective-C these days
    * Swift is compiled to native code, but has easiness of Javascript in programming
    * Perfect for the OS X UI, many guides & tutorials as well
* "Backend" in Objective-C++ / C++14
  * Why?
    * Originally written in Objective-C / C++14 with C++17 backports
    * Only for backend because of the time the development takes
    *

Short summary of features:

* Java
  * It can detect java from:
    * JAVA_HOME environment variable
    * "Internet Plug-Ins" Apple stuff
    * By the /usr/libexec/java_home binary helper
  * It can unpack a new version of I2P
    * Unpacks to ~/Library/I2P
    * Can check currently unpacked version in ~/Library/I2P via i2p.jar's "net.i2p.CoreVersion"

  * User Interface (a popover, see https://youtu.be/k8L3lQ5rUq0 for example of this concept)
    * Router control tab view
      * It can start the router
      * It can stop the router
      * It can detect already running router, then avoid fireing up one
      * It can show basic information about the router state & version
    * Log view tab (not yet done)
  * While left-click triggers popover, right-click draws a minimal context menu
2018-09-18 15:36:38 +00:00
1bddf5527a Commiting XCode's image/resources library alone since it's massive with blobs. 2018-09-18 15:20:21 +00:00
beede9505e Preparing for XCode project. Removing now obsolete files. 2018-09-18 15:19:23 +00:00
zzz
b74abbe4de Tomcat 8.5.34 2018-09-16 20:37:47 +00:00
zzz
6b53a4fac4 Build: Fix hang with Tomcat 8.5.33+ (ticket #2307) 2018-09-16 11:29:03 +00:00
be4c1afe13 propagate from branch 'i2p.i2p' (head 056bc63e77d33f38fb1644b84f9071693ff754a3)
to branch 'i2p.i2p.slumlord' (head 95a150a83187020444206ec94d48c4e4789b7174)
2018-08-31 01:56:37 +00:00
4ead982831 Fix port forwarding line in readme.html 2018-08-31 01:54:30 +00:00
4011680fad propagate from branch 'i2p.i2p' (head f7b28892c564f2b360f9f9dc8a8ad11c760b347a)
to branch 'i2p.i2p.slumlord' (head 0eab0dc27f9269e2791700882ad4b289d566348a)
2018-08-27 13:13:42 +00:00
zzz
48c787ba8d Debian: Prevent dup version (ticket #2300) 2018-08-27 11:34:48 +00:00
c9002b327b #2293 - Use CachedIteratorCollection in PeerState 2018-08-27 06:36:49 +00:00
873087441a Use CachedIteratorCollection in PeerState 2018-08-27 06:36:05 +00:00
f6c45355a4 propagate from branch 'i2p.i2p' (head fea8e3400c114ad820bf3f0eb7d18336b85027cb)
to branch 'i2p.i2p.slumlord' (head 472429fc9d4d273e0d05de5ae0c075c5ebfca45f)
2018-08-27 06:30:31 +00:00
92cc66ecb2 Update RouterVersion.java to match i2p.i2p to allow for propagation from i2p.i2p 2018-08-27 06:25:51 +00:00
773676075c Revert PeerState.java temporarily to allow for propagation from i2p.i2p 2018-08-27 06:20:40 +00:00
zzz
e64ad7ce57 More findbugs all over 2018-08-26 15:13:49 +00:00
zzz
1f92232253 Findbugs all over 2018-08-26 13:50:40 +00:00
zzz
db54edc36d NTCP2: Publish outbound address after transition to firewalled
Fix exception thrower
2018-08-26 12:05:49 +00:00
zzz
3adbea9c76 Better message on su3 certificate errors 2018-08-25 22:26:47 +00:00
zzz
483f043d3c Bettor error message on covariant fail 2018-08-25 18:22:55 +00:00
zzz
819985f3b4 lint 2018-08-25 17:56:30 +00:00
zzz
21fbcb8749 NTCP2: Enable by default 2018-08-25 17:35:29 +00:00
zzz
4a03b6fcb0 i2psnark: Better comment deduping, fixes rating average 2018-08-25 16:35:41 +00:00
zzz
57ddc8ea4f conversion cleanup 2018-08-25 14:29:32 +00:00
zzz
c3881a811b fix deprecations 2018-08-25 13:26:28 +00:00
zzz
ff551b19fb debian doc update 2018-08-23 22:16:50 +00:00
zzz
a45f5374e4 Ubuntu 0.9.36 2018-08-23 22:10:04 +00:00
zzz
1453527382 NTCP2 remove unused code 2018-08-23 15:27:05 +00:00
zzz
cc2056d4cf NTCP2 code consolidation, minor changes 2018-08-23 15:25:45 +00:00
zzz
6cf84ac5a3 log tweak 2018-08-23 15:22:30 +00:00
zzz
e243e0ddba streaming minor tweaks 2018-08-23 15:20:29 +00:00
zzz
fddaa47ded whitespace fix 2018-08-23 15:18:54 +00:00
zzz
658faf9dcf 0.9.36 2018-08-22 20:07:41 +00:00
zzz
68feb080e7 Jetty 9.2.25.v20180606 2018-08-20 13:18:29 +00:00
zzz
f4cab090cd man fixes 2018-08-19 21:41:05 +00:00
zzz
d69f078d8d new man translations 2018-08-19 21:37:19 +00:00
zzz
f2e00ca130 More translation updates
GeoIPv6 update 2018-08-16 from Maxmind
2018-08-19 21:25:46 +00:00
zzz
ea3ce805e4 log typo 2018-08-19 21:02:20 +00:00
zzz
96f7c15e6e pull from tx 2018-08-19 21:00:22 +00:00
zzz
a846271cd4 NTCP2: Catch bad IV exception 2018-08-19 18:56:59 +00:00
da476be75e Fixed neither's license with including LoopPerfect's
license line.
2018-08-19 17:17:42 +00:00
a5830f0203 propagate from branch 'i2p.i2p' (head ac85a7ea91b76b247e7987f5baed14167c5a0661)
to branch 'i2p.i2p.slumlord' (head 5ee52fb5eff362cca2a2bb3a6130aecc2543e734)
2018-08-19 13:51:36 +00:00
zzz
a01bfff974 merge of '412307149f63744814cd43d5df85bc227b8e4667'
and 'cd23f58885590026a755c32f8f2c2f513e22e21c'
2018-08-18 16:18:42 +00:00
8b9e5de9a7 merge of '3985486d761603f3e27f0f9e50fe3ae6d6a022be'
and '7acf152f554c78474ef071ac74ceb6a4889c600b'
2018-08-18 15:49:10 +00:00
aef68eb93e Remove duplicated file. 2018-08-18 15:49:05 +00:00
4a5708ab78 merge of 'e44534030f8f27481da60564e03f4b097f032c89'
and 'eea0aed1232ed304fa6ffeaeee28d9399bf3efdc'
2018-08-18 15:48:16 +00:00
7cf79a3a20 Adding LICENSE file for Boost and MIT.
This licenses the files lying under the path
launchers/macosx/obj-cpp/include in this repository.

launchers/macosx/obj-cpp/include/neither is MIT, while the
rest unless spesified in the header, is Boost.

C++17 variant, eggs implementation is licensed under Boost,
original source can be found at http://eggs-cpp.github.io/variant/
forked at: f801e971d054341430cb91d79aa0bb4d0bf24330

C++ Neither is licensed under MIT, original source can be found at
https://github.com/LoopPerfect/neither
forked at: a2bbaa25d62c538fb044a6eda5254e7a068e4ff7

C++ Optional implementation is licensed under Boost, original source
found at https://github.com/akrzemi1/Optional
forked at: f6249e7fdcb80131c390a083f1621d96023e72e9
2018-08-18 15:47:48 +00:00
8bebda2e35 Remove duplicated file. 2018-08-18 15:47:35 +00:00
42fd4c645c Revert changes checked-in in revision ec64be9e9faf415091bda0fe3567c6460310f7ad as they were not intended for this branch 2018-08-17 11:16:19 +00:00
211533f554 Update PeerState to use CachedIteratorCollection as propagation from i2p.i2p appears to have wiped out changes 2018-08-17 10:05:17 +00:00
11945c823e propagate from branch 'i2p.i2p' (head ec664ddfcb1f460b67cfcb0a5be1d162bb361b5a)
to branch 'i2p.i2p.slumlord' (head c521652f676d8c99cc31916977229cca561dc31b)
2018-08-17 09:23:45 +00:00
26189704f3 Re-add file 2018-08-17 08:37:41 +00:00
5b114f4bf3 Removing files temporarily to allow for propagation from i2p.i2p branch 2018-08-17 08:37:03 +00:00
zzz
c455f15b2a i2ptunnel: Change read timeout defaults now that streaming read timeout works 2018-08-16 18:39:07 +00:00
zzz
30fefa44ec Console: Format part. tunnel rate
Make table headers consistent
2018-08-13 17:38:57 +00:00
e310a6ab31 Add CachedIteratorCollectionTest 2018-08-13 08:38:24 +00:00
a40ff5f528 Add CachedIteratorCollectionTest - junit tests for CachedIteratorCollection 2018-08-13 08:33:45 +00:00
a7e31f1f2b propagate from branch 'i2p.i2p' (head 28e7fe42a73f3806f0d5f805801039e9b6ba66d3)
to branch 'i2p.i2p.slumlord' (head d33d35ee38f522ea71205b041f00420405684dbf)
2018-08-11 06:34:30 +00:00
zzz
1c73be515a move return inside sync 2018-08-10 16:36:33 +00:00
zzz
8dbc11566b log level tweaks 2018-08-10 16:35:03 +00:00
8408e9fe22 propagate from branch 'i2p.i2p' (head e6dfc137396019d82f0f6f08216b5b2496366f1c)
to branch 'i2p.i2p.slumlord' (head 8944540a640826823268268cfcc018be8aa1bc3d)
2018-08-09 09:15:21 +00:00
zzz
62151ef525 poupdate-source 2018-08-08 18:55:22 +00:00
zzz
f855421901 tx resource for readme 2018-08-08 18:46:43 +00:00
61d2e3c208 propagate from branch 'i2p.i2p' (head 9ad2c13f2722c6d9b6387b333e803df6f58a02c8)
to branch 'i2p.i2p.slumlord' (head ec6542c798755f65bc61caf00100a9d49b7d61a0)
2018-08-08 12:01:54 +00:00
zzz
9e237b5086 new hosts 2018-08-07 20:58:57 +00:00
f97ec8820c CachedIteratorCollection - Fix add() function 2018-08-07 12:04:49 +00:00
f9d5d48a4d Clean up code 2018-08-07 12:04:31 +00:00
733d3496a9 Append "-sl" to version string 2018-08-07 10:15:27 +00:00
5a6ee17f3c CachedIteratorCollection - Fix bug in add() function
Add comments for remove() function
2018-08-07 08:28:16 +00:00
177ef573ee Update javadocs for CachedIteratorCollection 2018-08-06 15:14:15 +00:00
57fee62557 Fix PeerState 2018-08-06 15:13:41 +00:00
7084c86e76 Update CachedIteratorCollection javadocs 2018-08-06 15:08:41 +00:00
68482cab43 propagate from branch 'i2p.i2p' (head 561efd6f3e61619f76be7effbd775178a116007b)
to branch 'i2p.i2p.slumlord' (head 11d4aac5f949cac61aaf08c22e0c2a862f09c91a)
2018-08-06 14:52:03 +00:00
fc22d0fcbc merge of '5ceba68eb23bd6229800383e7f9e917bff86b83f'
and '9b8562d09e23badb58dadcedb61bb9a6fa446e6a'
2018-08-06 12:07:25 +00:00
da5c922c40 Rename CachedIteratorAbstractCollection.java to CachedIteratorCollection.java 2018-08-06 12:05:51 +00:00
zzz
aaebbdedcc Debian: Remove old flags dir so symlink gets created 2018-08-06 11:33:59 +00:00
d2b32bc754 PeerState patched for CachedIteratorAbstractCollection; With branch 'i2p.i2p.slumlord' this time 2018-08-06 10:08:44 +00:00
4aff615687 Revert changes to PeerState and .idea/ folder in previous commit 2018-08-06 09:47:32 +00:00
0b3abb3b63 Add CachedIteratorAbstractCollection
Update PeerState.java to use CachedIteratorAbstract
Add some debugging lines to determine cause(s) of higher udp.sendFailed/sendAggressiveFailed stats
2018-08-06 08:54:44 +00:00
zzz
775188a36c I2NP: Fix DI test 2018-08-04 16:31:10 +00:00
zzz
21fe962abd I2NP: Remove unused OutputStream methods 2018-08-04 15:23:36 +00:00
zzz
9b3eb8d2c3 I2NP: Change DeliveryInstructions internal flags storage from long to int 2018-08-04 15:16:21 +00:00
zzz
a5a5f7dbde I2NP: Don't call toLong() for 1 byte 2018-08-04 14:50:33 +00:00
zzz
30f25de49b I2NP: Remove unused InputStream parsing methods 2018-08-04 14:35:00 +00:00
zzz
2cc362ca7b javadoc fix 2018-08-04 14:33:57 +00:00
zzz
f1df49606d Data: Check sooner for unknown sig type;
minor efficiency improvements in parsing
2018-08-04 13:41:01 +00:00
zzz
c0be83fe08 readme edits 2018-08-03 23:10:38 +00:00
zzz
0b2ef3da13 NTCP2: Fix termination handling
log tweaks
2018-08-03 20:14:46 +00:00
zzz
526aadb559 NTCP2: Fix padding calculation for small frames 2018-08-02 21:08:20 +00:00
zzz
8d629de23d readme edits 2018-08-02 20:50:18 +00:00
zzz
8fb7bd264f NTCP2: Remove debug code 2018-08-02 11:48:55 +00:00
zzz
2e85c2387c merge of '2854c97dc4c2cef6d9bd92f80032b60ad86ab030'
and 'df5322d83c1545129c9ed8f3e2dc5378ffb1b4a3'
2018-08-02 10:56:39 +00:00
zzz
1b6c002883 NTCP2: Send termination on idle timeout
Use timer to delay close after sending termination
Prevent sending more data after termination
2018-08-02 10:56:14 +00:00
7121e3e52e #2239 - Updating readme.html, work in progress. 2018-08-01 11:44:33 +00:00
zzz
726d2f4752 ngettext 2018-07-31 14:27:18 +00:00
zzz
75d86727ec SSU: Pull call out of loop for efficiency 2018-07-31 14:26:03 +00:00
zzz
5c3e408772 i2psnark: Don't disconnect seeds immediately if comments enabled (ticket #2288)
Implement variable timeout
Hardcode handshake bytes
Log tweaks
2018-07-31 14:13:33 +00:00
zzz
a51d260a78 Streaming: More efficient copying in MessageInputStream
Log tweaks
2018-07-29 13:30:02 +00:00
zzz
b5ed39f10d Streaming: Throw exception on read timeout (ticket #2292)
Log tweaks
2018-07-28 21:44:56 +00:00
zzz
f12dbba3d6 SusiMail: Catch ISE in get/setAttribute() (ticket #1529) 2018-07-28 19:48:22 +00:00
zzz
9b9f96daf8 i2psnark: Tweak 1st column sort order 2018-07-28 19:34:16 +00:00
zzz
b8437cd247 Console: Catch ISE in get/setAttribute() (ticket #1529) 2018-07-28 19:03:01 +00:00
zzz
63f0355680 Console: Prep for removing themes (ticket #2272) 2018-07-28 13:47:08 +00:00
zzz
2586db91c0 Router: Implement router.rejectStartupTime config (ticket #2285) 2018-07-27 15:58:14 +00:00
zzz
fc817b0ec0 NTCP2: Defer NTCP 1/2 classifiation until receiving 64 bytes 2018-07-26 12:17:50 +00:00
zzz
2f2ff4f181 Console: Split netdb output into pages 2018-07-26 12:15:42 +00:00
zzz
68e8e597e8 i2psnark: Disable gzip for KRPC
it's already disabled at the session level, but in case we change it later
2018-07-25 15:49:32 +00:00
zzz
e7202e0ee6 javadoc html fix 2018-07-25 15:46:20 +00:00
zzz
a700747595 warning tweak 2018-07-25 15:44:06 +00:00
zzz
0bcf9caf7a doc typo fix 2018-07-25 15:43:40 +00:00
zzz
41e20ae707 Utils: Don't truncate at a ZWJ 2018-07-25 15:34:23 +00:00
zzz
a6c506a176 Utils: Debug code to find double-frees 2018-07-25 12:51:40 +00:00
zzz
7338282bbe merge of '00fccb01d49a6b94638c648438bc4059e5ee0796'
and 'a6dc0bea5ee5569b71fa349be025d6a027d46a09'
2018-07-25 12:49:50 +00:00
f9fbc76dd0 Code changes:
* Port check to see if i2p is already running.
* All buttons in the menu should work now.
* Rewrote some C++ to Objective-C, which fits better with the integration.
* Misc cleanup.
* Made the launch of router repeatable.
2018-07-24 16:26:40 +00:00
2ee1a212c8 Added BufferedOutputStream to BaseExtractor for better performance. 2018-07-24 16:23:08 +00:00
fe41dec699 Adding OSX graphics. 2018-07-24 16:21:53 +00:00
2893cbb2e6 Fix typos pointed out by yahoe.001 on transifex 2018-07-24 08:18:26 +00:00
zzz
18e24edce5 NTCP2: Fix double-free of buffers after msg3 p2 fails
Fix sending termination after msg3 p2 fails
2018-07-23 20:50:42 +00:00
zzz
f554ca3493 Console: Add support for IPv6 prefix lookup 2018-07-22 12:56:04 +00:00
03e10835fb Fix Gradle build 2018-07-21 15:19:46 +00:00
zzz
1470ea2d72 reduce more log levels 2018-07-21 13:27:28 +00:00
zzz
292b7e6dc1 NTCP2 (ticket #2286):
Fix error sending large message
Fix NPE after handshake failure
2018-07-21 13:11:41 +00:00
zzz
2800791f00 Test: Backport EdDSA junit changes from github; fixes NPE in 2 tests 2018-07-20 15:25:15 +00:00
zzz
c35d1583d4 NTCP2: Reduce log levels 2018-07-19 14:17:37 +00:00
zzz
412fcfb578 Console: Add netdb search by transport 2018-07-19 14:15:43 +00:00
zzz
80973ca21a Build: Add check for libtaglibs package in debian builds 2018-07-18 13:15:36 +00:00
zzz
1b0102bd1c i2psnark: Enable sequential order option for single-file torrents (ticket #2234) 2018-07-18 12:08:40 +00:00
zzz
2a68a01a35 Console: Fix HTML errors on /configservice w/o wrapper 2018-07-16 18:09:54 +00:00
zzz
63f4e04624 Router: Add CLI tool to generate family keys 2018-07-15 14:39:02 +00:00
zzz
6c3cf9bf77 I2CP: Add option for forcing gzip on/off per-message
Use option in streaming SYN and CLOSE packets
2018-07-15 13:50:31 +00:00
zzz
4ff62c291e NTCP: Increase failsafe sleep threshold for busy routers (ticket #2251)
Hardcode useDirectBuffers config
2018-07-15 11:39:30 +00:00
zzz
d4992936b1 i2psnark: Recreate deleted files on recheck/reopen (ticket #2125) 2018-07-14 17:09:51 +00:00
zzz
2a0b927022 i2psnark: CSS for in-order form (ticket #2234) 2018-07-13 16:58:55 +00:00
17c2a2a580 merge of '639a99d15ec0e7cbf0b44fd44564a6ae304b8673'
and '6b24962b7b3513e22153068b62922cabebb2dee4'
2018-07-13 10:10:14 +00:00
a92993e05b Added some more header files, and fixed much of the build system. 2018-07-13 10:10:04 +00:00
3fcef90cc2 merge of '3307710b35da5de0073b4b3e26fb33d180591563'
and '7532ae57e808a03a2c4500c861e320848729cb27'
2018-07-13 10:09:14 +00:00
8c78d4f83e A functional programming "library" (some headers with some magic love found in scala) 2018-07-13 10:09:08 +00:00
2daeb6d1a1 merge of '54817017a7af30d5a701bb76ce4c5f18479d525c'
and 'b90d952c362ac02ebfadf0049cfdca61e870cd87'
2018-07-13 09:12:25 +00:00
c8490a3140 Starting to get stable and usable. Basically everything is based on callbacks. 2018-07-13 09:11:46 +00:00
818e70d3a7 merge of 'aca699a4227d198b550c8579ebe091a1f5a2578e'
and 'e24559aa0df77c42ee3705237fe35ca3436a1bd5'
2018-07-13 06:30:22 +00:00
6d0f80fa1e Fixed a load of issues related to my "sync" approach, and Mac OSX's "async" API. 2018-07-13 06:30:16 +00:00
zzz
5fd1b69532 i2psnark: Sequential piece priority within each file (ticket #2234) 2018-07-12 15:34:13 +00:00
zzz
e24ebf4bda i2psnark: UI config for sequential download (ticket #2234)
Sort with Collator
CSS TODO
2018-07-12 13:41:44 +00:00
zzz
d34087f4d0 i2psnark: Stub out support for sequential download (ticket #2234) 2018-07-12 11:19:56 +00:00
zzz
b78870de54 NTCP2: Remove dup getHash() method 2018-07-11 14:25:43 +00:00
zzz
9d2f684ac7 Streaming: Change enforce protocol default to true 2018-07-11 13:04:13 +00:00
zzz
6ad1de8d85 Util: Convert more caches to TryCache (ticket #2263) 2018-07-10 21:21:32 +00:00
zzz
f6da5f43aa CPUID: Recognize Hygon processors 2018-07-10 20:33:23 +00:00
zzz
02669fafde SSU: Sync/notify improvements (ticket #2260) 2018-07-10 17:14:14 +00:00
zzz
30fc9544fe Installer: Fix Windows 10 64-bit install for IzPack 4/5 (ticket #1864)
Add more IzPack 5 build targets
2018-07-10 12:19:29 +00:00
zzz
307a68aa5a Installer: Add support for IzPack 5 (ticket #1864)
fix typo in postinstall.sh
2018-07-10 11:19:41 +00:00
2664c417e3 merge of '5a7bb5cbf6a37b5e282620eeb893459dc3ebe4af'
and 'b11d43f037fd0eb4248f7388e26af31209aaf0a2'
2018-07-08 13:16:16 +00:00
21b3864dfd Moved some logic to C++, which will extract i2p if it's not already,
and then secondly fire up the router in a second java process when 
extraction is completed. Gonna use "optional" type in C++ to make
global variables a bit less painful to use.
2018-07-08 13:16:07 +00:00
7a0f384dbf merge of '6b3a264a4dddd9667ce22ed517fbfccd5d676f9f'
and '95e2b9f35eac4e0ca2160d2f554bb4cdba5c074d'
2018-07-08 13:13:21 +00:00
27a0d4e51e Removing some Scala classes for the Mac OSX laucher,
since the C++ code replaces it's functionallity.
2018-07-08 13:12:51 +00:00
dfa1470c17 reinstate cache capacity calculation 2018-07-08 12:38:53 +00:00
zzz
d992dbf92a i2psnark: Add comment icon (ticket #2278) 2018-07-08 12:01:16 +00:00
zzz
1c28495fc3 propagate from branch 'i2p.i2p.zab.2263' (head 5d4d46ea16b13a188d27ff31c81a5362f20b6d68)
to branch 'i2p.i2p' (head 3ba7c5b2e24e950c83d6370df3c814fd025add81)
2018-07-08 11:36:53 +00:00
zzz
950ca71a34 NTCP2: Refactor padding size calculation
Avoid possible NPEs (ticket #2286)
Bundle up to 5 tunnel messages
Use read buffer to send RI and termination
Temp buf doesn't need 2 bytes for length
RI size check
Log tweaks
2018-07-08 11:00:54 +00:00
zzz
fcf82ea580 revert imports too 2018-07-08 11:00:02 +00:00
381f390938 Reverted change related to fatjar. We're using "real" base path in any case. 2018-07-07 12:27:07 +00:00
ab4a8ef16c reinstate capacity check 2018-07-06 17:13:48 +00:00
998931ffde propagate from branch 'i2p.i2p' (head 566b1eeda884669d179397966db673e71775debb)
to branch 'i2p.i2p.zab.2263' (head be0f0d7318f30334dcdbe7d2ef728d9611aff5f7)
2018-07-06 17:02:40 +00:00
67b7febf72 propagate from branch 'i2p.i2p' (head 6c6a7520cad38845cee83103c323782b426b3ff5)
to branch 'i2p.i2p.zab.2263' (head 727b9053d85f58811d1f5e05ccc697bfd9a454a2)
2018-07-06 16:59:14 +00:00
zzz
a916c1a22a NTCP: Read all available data when able (ticket #2243) 2018-07-06 13:31:46 +00:00
zzz
1460bec8cf SSU: Change remaining acks from List to Set (ticket #2258) 2018-07-06 13:27:38 +00:00
zzz
7aca1e4006 i2psnark: Fix comments wrapping (ticket #2284) 2018-07-05 15:07:05 +00:00
zzz
25e567a125 NTCP2: Increase max message size
OutNetMessage: Change size from long to int
2018-07-05 14:31:54 +00:00
zzz
43c2018177 i2psnark: Fix IOOBE when stopping torrent that is allocating (ticket #2273)
more sync in PartialPiece
2018-07-05 12:57:01 +00:00
zzz
7d9207dc81 NTCP: Don't advertise interface addresses when configured for force-firewalled
log tweaks
2018-07-04 16:22:56 +00:00
f9c3f82bb1 clear context reference when clearing cache 2018-07-04 16:13:36 +00:00
40b30979cd clear buf before releasing 2018-07-04 16:11:07 +00:00
11e00ba9cb move TryCache to core 2018-07-04 16:09:11 +00:00
zzz
9ac31573b4 Build: Move Jetty/Tomcat version properties to top-level build.xml 2018-07-01 14:16:56 +00:00
zzz
a895bcc91e NTCP2: Adjust padding defaults and size calculation
Rekey static after 30 days downtime
2018-07-01 13:42:59 +00:00
zzz
eff0cac30b EdDSA: Backport versions 0.2/0.3 from github:
- Change key encoding to match curdle draft
- Support key decoding based on curdle draft
- Implement true constant-time cmov()
- Add handling of X509Key-wrapped EdDSA keys (GitHub PR #47)
- Clarify that KeyPairGenerator takes a key size, not strength
- Javadocs
GitHub PR #58:
- Make GroupElement immutable by moving the pre-computed logic to the constructors,
  allowing the synchronized checking of whether the pre-computed logic had executed or not
  to be removed since it always has when it is used because those code paths
  are modified to request it at construction time.
- This allows getNegativeA() to be lazy, and doesn't need volatile due to the immutability
  (and final fields - this is important part of the contract with the JVM memory model).
- Remove synchronized contention from the named curve table get method.
- Generally remove use of the named curve table get method with a constant curve name
  in hot code paths in favour of using a new static constant for the curve spec.
Overall performance changes:
- Keygen 46% faster
- Signing 39% slower (due to cmov)
- Verify 2% faster
2018-07-01 11:10:06 +00:00
zzz
c65ce1d3f9 Router: Reselect jbigi lib when processor changes (ticket #2277) 2018-06-30 14:13:34 +00:00
zzz
201ef3b062 private field 2018-06-30 14:07:41 +00:00
zzz
3b34581065 Console: Fix reading flags when symlinked (ticket #2270) 2018-06-30 14:06:52 +00:00
d4dd0ea982 Adjustments in Scala code to adopt to work with the Obj-C++ code. 2018-06-30 13:11:17 +00:00
0b01cc5070 Adding codebase for the Objective-C++ part of the Mac OS X launcher/wrapper. 2018-06-30 13:10:06 +00:00
3de1fa2295 Minor change in routerconsole and core code for making I2P work great
in "portable" mode.
2018-06-30 13:07:41 +00:00
zzz
d8cc2a3560 Debian: Add build option for reproducible builds;
remove timestamp from manifests and javadocs (ticket #2279)
2018-06-28 18:47:45 +00:00
d42a467c00 forgot to set context 2018-06-28 17:40:14 +00:00
bc4ee0fc38 Implement tryLock-based object cache and make ntcp and ssu code use it 2018-06-28 17:33:34 +00:00
zzz
9b17b52b39 Debian: Add dependency for famfamfam-flag-png (ticket #2270) 2018-06-27 16:16:08 +00:00
zzz
c02f685307 Deb updates for 35 2018-06-27 14:52:55 +00:00
zzz
ef7b3e0c8b Core: misc. minor changes 2018-06-26 20:29:19 +00:00
zzz
baa11d8146 Console: Move modified flags to new directory,
in prep for symlinking original flags dir to package
for package installs (ticket #2270)
2018-06-26 19:11:53 +00:00
zzz
2d24f21327 Streaming: Enforce valid port in setters 2018-06-26 18:48:04 +00:00
zzz
96c565d486 Router: Misc. javadocs and debug 2018-06-26 18:45:11 +00:00
zzz
3c53dfe628 NTCP2: Remove static config on router rekey 2018-06-26 18:43:19 +00:00
zzz
761affc94d Console: Move servlet to new package (ticket #2265) 2018-06-26 18:39:39 +00:00
zzz
f0f62527d7 NTCP2: Show version on /peers 2018-06-26 16:57:29 +00:00
zzz
c826efd3a1 NTCP: Move runDelayedEvents() after the selector (ticket #2237) 2018-06-26 16:53:07 +00:00
zzz
ae8779e004 NTCP2: Establishment and data phase
- Address generation and validation fixes to match proposal changes
- Fixes for persistence of static s and iv
- Add methods for keygen and getters for static s and iv
- Add OutboundNTCP2State for outbound establishment
- Add support to InboundEstablishState
- Add data phase support to NTCPConnection
- Refactor NTCPConnection for multiple protocols
- Support concurrent pending outbound messages in NTCPConnection
NTCP1: Cleanups and performance improvements
- EventPumper tweaks and logging
- Eliminate extra data copy in NTCPConnection message sending
- Remove _meta field in NTCPConnection
- Locking changes in NTCPConnection and EstablishState classes
- Zero out DH keys when done
- Fix read when buffer position nonzero in NTCPConnection
- NTCPConnection make more methods package private
- Do AES decryption in data phase all at once when possible
- Drop expired outbound messages in NTCPConnection before sending
- Pass extra data from EstablishState directly to NTCPConnection
  to avoid race, remove getExtraBytes() method
- Remove getException, getError, getFailedBySkew methods and calls from Reader
2018-06-26 16:47:53 +00:00
zzz
49221add97 NTCP2: Noise library license, javadoc, .editorconfig 2018-06-26 16:11:46 +00:00
zzz
da810467b3 NTCP2: Noise library changes:
Use key factory for key pair generation
Hardcode Noise name and compute first hash in advance
Expose mixHash method so we can process message 1 and 2 padding
Add method to get chaining key and hash for siphash key generation
Remove unused patterns, methods, code
Debug and speed test code
Finals
2018-06-26 16:06:18 +00:00
zzz
70f018eb87 NTCP2: Noise lib from:
https://github.com/rweather/noise-java
Revision db4855c on Oct 8, 2016
Copyright (C) 2016 Southern Storm Software, Pty Ltd.
MIT license
Unmodified, as base for future merges
Only classes we need, this rev will not compile
2018-06-26 16:01:35 +00:00
zzz
55a8878a64 NTCP2: Key factory 2018-06-26 15:57:09 +00:00
zzz
0f048a7aa6 NTCP2: New FNDF method 2018-06-26 15:39:08 +00:00
zzz
435bf81945 NTCP2: Payload and options classes 2018-06-26 15:29:08 +00:00
zzz
1a56d5ab37 NTCP2: I2NP support, fixes, cleanups 2018-06-26 15:23:55 +00:00
zzz
3d21ad0df9 0.9.35 2018-06-26 11:09:29 +00:00
zzz
f6a4b0b709 Pull translation updates from Transifex
New Azerbaijani translations
2018-06-23 11:57:39 +00:00
zzz
199788495e Update HTML file list for test
Fix HTML error in Chinese eepsite help page
2018-06-23 11:08:42 +00:00
zzz
fecd0a9f5c GeoIPv6 from MaxMind 2018-06-04
No more updates for v4 legacy format, see ticket #2268
2018-06-23 10:44:22 +00:00
zzz
1e24523df2 volatile 2018-06-22 10:40:36 +00:00
zzz
93c6df7e89 SusiMail: Fix NPE on logout (ticket #2266) 2018-06-21 18:41:21 +00:00
zzz
e33bb2ac1e Console: Add Azerbaijani, add translated eepsite help pages
48x48 az.png converted from:
https://upload.wikimedia.org/wikipedia/commons/d/dd/Flag_of_Azerbaijan.svg
Public domain as specified on:
https://en.wikipedia.org/wiki/File:Flag_of_Azerbaijan.svg
2018-06-21 16:25:30 +00:00
zzz
07f7f2be50 i2psnark: Unstick the navbar (ticket #1996) 2018-06-21 12:31:22 +00:00
zzz
7ddeb0c945 i2psnark: Remove tracker links unless non-default 2018-06-21 11:13:29 +00:00
zzz
00c1fc6ed4 /logs version section tweaks (ticket #1996) 2018-06-21 10:38:31 +00:00
zzz
4a211f1bf4 Console: Don't display individual tx/rx graphs if displaying combined graph (ticket #2106) 2018-06-19 17:42:46 +00:00
zzz
776c7aeb83 Console: Restore line breaks in copy/pasted log entries (ticket #2078) 2018-06-19 14:28:37 +00:00
zzz
c143a0e807 i2psnark: Combine strings 2018-06-19 13:58:55 +00:00
zzz
6ea0b05300 /configui: Fix HTML, combine strings 2018-06-19 13:18:24 +00:00
zzz
39dfdad0d2 Add imagegen to standard webapps list 2018-06-19 12:57:21 +00:00
zzz
4cd9fe725d fix build 2018-06-19 11:32:19 +00:00
zzz
03d430ba7c SSU: Catch ISE 2018-06-19 10:31:02 +00:00
zzz
5592992b73 SSU: Add volatile (ticket #2260) 2018-06-19 10:26:57 +00:00
zzz
d500f61738 NTCP: Log and fail messages on outbound queue overflow 2018-06-17 16:00:17 +00:00
zzz
8eb6dc0aef GeoIP: Don't log error message when hitting the end
of the geoipv6.dat file
2018-06-16 17:23:57 +00:00
zzz
dd5c4af6fb Console: Less hats and cats 2018-06-15 22:38:13 +00:00
zzz
0756306e54 SusiMail: CSS fixes (ticket #2242) 2018-06-15 22:05:43 +00:00
zzz
5e24daafc6 disable NTCP2 code 2018-06-15 19:16:06 +00:00
zzz
37bb09ffc7 new irc server 2018-06-15 13:46:50 +00:00
zzz
89c9a6d0bb Push strings to transifex 2018-06-13 18:33:56 +00:00
zzz
04bf5157bb build time debug tweak 2018-06-13 14:15:05 +00:00
zzz
790db3735f update build time 2018-06-13 14:12:34 +00:00
zzz
78b2d24001 Jetty: Add TX config for eepsite help page (ticket #2214)
and for testing readme.html for .36
2018-06-13 12:15:59 +00:00
zzz
14e4cba7cd SSL Wizard tweaks 2018-06-13 11:57:50 +00:00
zzz
b1541dbf11 Eepsite help: more edits 2018-06-13 11:43:23 +00:00
zzz
da5de2fd4a NTCP: Fix clearing of write interest ops at
inbound establishment, causing latency on first message
(ticket #2237)
2018-06-13 10:42:53 +00:00
zzz
aa98e540e0 Catch RuntimeException in BuildRequestor 2018-06-11 12:11:03 +00:00
zzz
253c157ba8 Don't exclusively use explicitPeers when specified for testing 2018-06-11 12:10:04 +00:00
zzz
9c35a55969 enforce max family name length 2018-06-11 12:06:34 +00:00
zzz
a1bf2b8653 console changelog disable horizontal scroll 2018-06-11 12:02:29 +00:00
zzz
3361d14f3c UPnP: Change port names 2018-06-11 11:56:22 +00:00
e687e1d4d5 #2242 - CSS changes for dark theme so that Folder button and drop-down menu have visible text. Could cause problems elsewhere, still testing 2018-06-11 09:23:51 +00:00
zzz
56bf844540 eepsite: More help page updates (ticket #2214)
Rename help page background image file, it's not Bulgaria
Delete all help page country flag files, we already copy them in build.xml
2018-06-10 13:16:55 +00:00
ee5012311e #2214 - Update instructions for adding a key/hostname on stats.i2p; Remove external links, add search suggestion and specific warning about apache modules 2018-06-09 18:18:47 +00:00
zzz
3f92d92ce4 eepsite: More help page fixes (ticket #2214)
Re-enable dir listings, required for help page links
2018-06-09 16:48:57 +00:00
zzz
20145333f4 i2psnark: Fix torrent ignoring priority settings when autostart is enabled (ticket #2229) 2018-06-09 13:42:12 +00:00
zzz
7b3791627c Eepsite Help: Updates for translation (ticket #2224)
Remove dead links and commented-out text
Put each sentence on separate line
Clarify and simplify language
2018-06-09 11:54:03 +00:00
98019bb998 Updates to eepsite help page 2018-06-08 11:32:35 +00:00
zzz
5c3f264295 NTCP: More efficient copying of inbound establish state data
More prep for NTCP2
2018-06-03 13:12:21 +00:00
zzz
02855a0d97 NTCP: Fix state lock, should not have been static
javadocs
2018-06-02 17:03:26 +00:00
zzz
b5117eafc5 NTCP2: Data phase payload generation and parsing 2018-06-02 15:53:06 +00:00
zzz
05ffa63dc0 NTCP: Start NTCP2 implementation, all disabled for now 2018-06-02 15:05:24 +00:00
zzz
06106c75dc NTCP: Refactor EstablishState into interface/base/inbound/outbound,
in prep for NTCP2
2018-06-02 12:35:11 +00:00
zzz
363aaadb1a Console: Sort tunnels within pools by expiration (ticket #2232) 2018-06-02 12:28:50 +00:00
zzz
7713284e64 SusiDNS: Fix deleting notes (ticket #1433)
Hide advanced fields in published entries
2018-06-01 12:25:08 +00:00
zzz
cee45e3031 SusiDNS: Add notes form (ticket #1433) 2018-05-31 20:33:31 +00:00
zzz
24a1cf713e Console: Change Java 10 warning to Java 11,
since bionic uses 10
2018-05-31 17:16:00 +00:00
zzz
481e28750b Console: Fix CSS preventing ordered lists (ticket #2075) 2018-05-31 15:34:37 +00:00
zzz
8b029dbae5 SusiMail: Message button tweaks 2018-05-31 00:37:45 +00:00
zzz
484d4e226c SusiMail: Don't require confirmation to delete from Trash,
Clear reallydelete flag when clicking cancel or change folder
2018-05-30 23:51:14 +00:00
zzz
a7db82a1fa SusiMail: Fix dup ConnectWaiter run, no failure message 2018-05-30 19:46:51 +00:00
zzz
3f2fe39515 SusiMail: Don't store loading/fetching/refresh messages in session object,
so they go away when done
2018-05-30 15:55:19 +00:00
zzz
04a9f5612b Javadoc fixes 2018-05-30 13:11:50 +00:00
zzz
884a42b814 Build: Remove more files from Debian source tarballs
Don't need to both delete and exclude for tarballs
Restore commons-logging.jar to build classpath where needed for deb builds
Add classpath entries to fix Debian javadoc build
2018-05-30 12:52:30 +00:00
zzz
278a8142b8 NTCP: Cleanup, remove commented-out code in prep for NTCP2
Increase max RI size
2018-05-29 17:23:08 +00:00
zzz
277a1619e4 Console: Tagged string fixes (ticket #2017)
CSS tweaks
2018-05-28 17:49:47 +00:00
zzz
d128bab2fa SusiMail: Send deletions after connect so emails don't come back after a move (ticket #2087)
Refactor/consolidate pop3 deletion code
Fix loading mails in checker
Fix checker thread name
Return to inbox, not drafts, after sending draft
CSS for select
2018-05-28 14:18:23 +00:00
zzz
550ef2ae9c SusiMail: Remove disk null checks, always non-null 2018-05-27 13:46:13 +00:00
zzz
5feeffa550 ministreaming: Add classpath to jar (ticket #2228) 2018-05-26 22:03:16 +00:00
zzz
36c279f23d i2psnark: Hide peers button if no peers on that page (ticket #2152) 2018-05-26 21:47:30 +00:00
zzz
f3207464bb i2psnark: Hide column 1 icon for peers (ticket #1996) 2018-05-26 21:07:42 +00:00
zzz
00acac4b61 i2psnark: Hide "0 Bps" if no peers (ticket #2152) 2018-05-26 20:59:09 +00:00
zzz
e67c750fab i2ptunnel: Retry accept after server socket closed (ticket #2003) 2018-05-26 20:00:10 +00:00
zzz
2d7f0d35ce i2ptunnel CLI help tweak 2018-05-26 19:52:41 +00:00
zzz
3701f71fc6 Jetty: Skip files with [] in default servlet to avoid throwing exception 2018-05-26 19:31:40 +00:00
zzz
3f64825436 SSL Wizard: Cleanups 2018-05-26 17:38:33 +00:00
zzz
5ca319e4bd /confignet: Reorganize (ticket #2217) 2018-05-26 16:05:28 +00:00
zzz
f11104e7bc Summary Bar: Change header from "I2P Updates" to "Update Status" (ticket #2137)
/configsidebar: Tag sections for translation; translate unselected sections;
sort unselected sections by translated name
2018-05-26 13:56:06 +00:00
zzz
39c0f558c1 Utils: Disable DNSoverHTTPS by default (ticket #2201)
Reenable with eepget.useDNSOverHTTPS=true and time.useDNSOverHTTPS=true
2018-05-26 12:24:50 +00:00
zzz
c1b9aa9665 Router: Fix wrapper.config path in OOM message when installed as
Debian package, but not running as a service (ticket #2223)
2018-05-26 11:46:59 +00:00
zzz
9eb3cc5916 i2ptunnel: Fix dup tunnels clicking generate on new tunnel (ticket #2225)
remove dup call to processAction()
2018-05-25 19:39:22 +00:00
zzz
2fab97fb20 Console: Fix changes to wrong tunnel on /configtunnels (ticket #2227) 2018-05-25 17:35:29 +00:00
zzz
195a2d0473 LICENSE.txt clarifications and updates 2018-05-06 15:50:28 +00:00
zzz
288a6b0670 SSL Wiz: Use RSA if EC not available 2018-05-06 13:25:40 +00:00
zzz
df7c1c6104 Certs: Change default from RSA to EC for CA certs 2018-05-06 13:21:22 +00:00
598a177e5e Removed a "ant-" which wheren't supposed to be commited :) 2018-05-06 03:58:08 +00:00
0a1191aa3f Small patch to make ant use the SBT wrapper script. 2018-05-06 00:20:54 +00:00
5f81a8de59 Mac OS X Launcher - reborn - ALPHA!
TLDR;
Howto? ant osxLauncher
Privacy Notes? If you don't got SBT, a bash script will trigger
               download of SBT for you with task osxLauncher.
Results? open ./launchers/output
"Binary" App Bundle name: I2P.app
Runtime base directory? ~/Library/I2P
Runtime config directory? untouched.

After talk on IRC with zzz, I rewrote the logic since we could
start with a simple deploy, for a faster alpha version ready :)

SBT will build a zip file from the content of pkg-temp, which
CompleteDeployment.scala will again unzip in runtime. Right now
it's quite basic, but the plan is to add version detection, so
it's capable of upgrading a already deployed I2P base directory.

OSXDeployment.scala is renamed to PartialDeployment.scala for usage
in the browser bundle launcher, since it's going to be a subset of
the files found in pkg-temp.

A Info.plist is added to the launchers/macosx which is added to the
application bundle under building. Note that this differ from the one
in Start i2p router.app that's been here for years now.
2018-05-05 23:34:35 +00:00
zzz
f6273a1662 SSL Wizard: Link fixes
Fix lost autostart config
Separate messages for bad SSL config vs. no SSL config
2018-05-05 22:32:43 +00:00
zzz
e14a4f0111 HTTP Client: Allow SSL to i2p hosts by default 2018-05-05 22:25:13 +00:00
zzz
543e5bd218 Preliminary .editorconfig 2018-05-05 22:22:40 +00:00
zzz
d3c28a6b44 Streaming: Don't send HTTP response to HTTPS request 2018-05-05 22:21:01 +00:00
zzz
d851686272 SSL Wizard: Add links 2018-05-05 14:09:47 +00:00
zzz
87329bc32c SSL Wizard: Page cleanup, message box 2018-05-05 12:59:01 +00:00
zzz
c734b84b28 doc update 2018-05-03 20:40:26 +00:00
zzz
6c88eb5211 BOB: Register with port mapper 2018-05-03 20:00:03 +00:00
zzz
7b2355a888 SSL Wizard: Implement Jetty SSL disable 2018-05-03 19:43:22 +00:00
zzz
b31ebfe368 SSL Wizard: Stop and restart Jetty if running
Make JettyStart restartable
RouterAppManager workaround for JettyStart becoming untracked after stop
2018-05-03 19:29:13 +00:00
zzz
9a7b58259f CLI: Add KeyGenerator 2018-05-03 13:13:29 +00:00
zzz
9c52d454f8 Debug: Case-insensitive sort of PortMapper and AppManager tables 2018-05-03 13:08:56 +00:00
zzz
a548c307bc Console: Make Java 10 warning a 10/11 warning 2018-05-03 13:01:16 +00:00
zzz
2efd544713 Tests: Add scala files to UTF-8 tests
Make tests less noisy
2018-05-03 13:00:08 +00:00
zzz
c9a6fab638 SSL Wizard: Implement disable-SSL 2018-05-02 13:39:49 +00:00
zzz
1c677cd99b SSL Wizard: Fixes, checks, form improvements 2018-05-02 13:10:06 +00:00
70e994fcf3 Some changes, after much testing I find it best to spawn an sub java
process for I2P rather than trying to load Router via reflection or
anything runtime fancy stuff. Shell script is implemented in SBT now,
and can now link to download JRE script and so on.
2018-05-02 03:39:14 +00:00
c326bb7c6d Added scala license snippet to LICENSE.txt 2018-05-01 13:30:55 +00:00
f6c8e44329 Jar deployment, SBT hacking, and more related to launcher code.
Some refactoring, bugfixing, and self awareness of launcher jar.
2018-05-01 11:15:11 +00:00
345e7414e6 Change current directory to base directory before starting the router. 2018-05-01 03:43:41 +00:00
3488db38bc Moved a function to a more logic place. 2018-05-01 03:40:07 +00:00
8957c85486 Disable debug messages. 2018-05-01 03:36:59 +00:00
6b0a102c1b Updating code to handle multiple(no limit) recursive levels. 2018-05-01 03:35:09 +00:00
975d8a069a Cleaned up in SBT build file. Sorted assignments, task definitions and such. 2018-05-01 03:21:04 +00:00
2d15f8e16e Improved code documentation and readableness in form of syntax cleanup. 2018-05-01 03:15:44 +00:00
a3a8ee1329 Major update for the OSX Launcher code. Now it will bundle
installer resources with the fat jar (we add an exclusion list later)
which the base directory will be built(or updated if lacking files) upon
startup of the I2P router. This is done by the OSXDeployment class which
is an extension for the DeployProfile class written for Mac OS X.

Since the app bundle itself should be R/O, we use ~/Library/I2P as base path,
and continue using ~/Library/Application Support/i2p as config path. The BB
code will have other paths.
2018-05-01 02:54:36 +00:00
zzz
4e5a2d00aa SSL Wizard: Move old keystore before rewriting
Fix password setting in XML
Add DTD to rewritten XML
2018-04-30 16:45:01 +00:00
zzz
ab039b8023 SSL Wizard: Update and save tunnel config 2018-04-30 13:59:23 +00:00
zzz
8ed1b96f3a Console: Fix NPE on /configsidebar (ticket #2220)
Don't throw NPE translating null
Add note about split()
Fix form inside table
2018-04-29 20:57:47 +00:00
c73b5b9edb merge of '4d8cced5819f256dd03cd1a845bcb08fe8de9319'
and '76cdc242b9b68e5fef39dfe67cf27baf29872f2f'
2018-04-29 18:51:38 +00:00
e308804cb7 Removing some resources. 2018-04-29 18:51:31 +00:00
zzz
cdd58f168a SSL Wizard: Change cert type, export cert, show in cert helper,
relay keystore password via POST
2018-04-29 15:46:30 +00:00
zzz
4d09e507fb SSL Wizard: Move some things to make the classloader happy
Rewrite clients.config
2018-04-29 14:32:01 +00:00
zzz
d600a2df12 Build: Remove references to now-empty commons-logging.jar 2018-04-28 22:17:19 +00:00
zzz
e310588273 SSL wizard: Start of POST handling
Work around Jetty XML bug
classpath fixes to follow
2018-04-28 22:07:14 +00:00
zzz
a0fabe5f92 i2ptunnel: Fix startup deadlock in TCG 2018-04-28 21:58:13 +00:00
zzz
780fdfe4f6 Console: Add POST support to the error handler so it doesn't error itself 2018-04-28 18:37:59 +00:00
zzz
145730f5b8 SSL wizard: Add missing file, fix form params 2018-04-28 15:25:05 +00:00
zzz
624a672213 i2ptunnel: Initial SSL setup wizard
Includes Jetty XML configuration parser
Work in progress, doesn't work, not linked from anywhere
2018-04-28 13:21:42 +00:00
zzz
16c5252c43 Jetty: Dir listing time format tweak 2018-04-28 11:32:36 +00:00
zzz
50710f8066 Tunnels: Fix and consolidate allow-zero-hop logic,
prevent zero-hop client tunnels even when no active peers
Remove buildRequestZeroHopTime stat
2018-04-27 17:41:47 +00:00
zzz
10c6c428a3 SusiMail: Don't zip encrypted.asc PGP attachment 2018-04-26 13:43:20 +00:00
zzz
c34fd76a78 Proxy: Don't generate footer hidden by CSS 2018-04-25 14:27:40 +00:00
zzz
ab9dac8827 Migrate webapp detection calls to PortMapper.isRegistered() 2018-04-25 14:21:23 +00:00
49ba58cb8d Updated history.txt again. 2018-04-24 05:04:11 +00:00
4f47fab139 Removed unused resources directory hopefully,
And aslo added an IconHelper autoplugin which
will generate Mac OS X valid ICNS images.
2018-04-24 05:01:25 +00:00
832e55ddf9 Updated history.txt for today. 2018-04-24 04:28:37 +00:00
8adf55a568 Still WIP, but I've added a new sbt plugin named
sbt-native-packager for future rpm/deb/windows and 
maybe even OSX packages. Also, the macosx sbt project 
now has a task named buildAppBundleTask and which will 
produce an I2P.app and copy over needed directories/jars/wars
which later needs to be extracted to an writeable area which
would be i2p base directory in runtime.

The MacOSXRouterLauncherApp contains more information about how 
the executable in the OS X bundle will locate our R/O i2pbase so 
it can copy it to a writable area. The R/O is also to ensure valid
signature on the bundle.

At last, this approach is done casue letting an Mach-O binary load
libjvm.dylib was proved unstable, so MacOSXRouterLauncherApp will 
rather use an JNI module to load the needed glue with the 
Mac OS X system.
2018-04-24 04:18:21 +00:00
9307b27655 Update in the install_i2p_service_osx.command script. 2018-04-24 04:09:20 +00:00
345d078370 Updating ignore file to ignore sbt build directories. 2018-04-24 04:08:25 +00:00
a4ef4e594a Update history.txt of yesterdays work. 2018-04-24 00:49:22 +00:00
18b11d2a32 Reducing the amount of "items" in the root of the repo
by moving documents into a own docs directory.
2018-04-24 00:48:08 +00:00
zzz
75d681a93c Clock: Fix early NPE via DoH 2018-04-23 15:48:44 +00:00
zzz
0500bbb186 EepGet: Handle HTTP response line with no status text 2018-04-23 15:46:35 +00:00
a047b91deb Added a section "SBT Behind proxy" 2018-04-23 00:26:53 +00:00
e941e79830 Doing it the right way and add license for Scala (BSD-3) 2018-04-23 00:19:32 +00:00
b98254b2be Updating README.md making contribution/hacking guide/docs more available,
this is specially important for our GitHub impression which I suspect most 
coders will have their first meeting with I2P on. The documentation is far from
done but it should make value for any new developer by this time so I've decided 
to push them. It losly describes our build systems, and has a monotone cheat sheet 
which always has an "git equalent" so it's easier to handle for people used to git.
2018-04-23 00:14:23 +00:00
e8ac24bedd Added some missing files from earlier commits caused by -R stuff in mtn. 2018-04-22 23:48:44 +00:00
38e109db2b Added new ant targets to the overview of targets. 2018-04-22 23:16:04 +00:00
8c10ec9db3 Realised a better way to handle the build process of both the
Browser Bundle i2p launcher, as well as the upcoming Mac OS X
i2p launcher. They share some few properties and how code has
to be managed for both system's update managers and so on.
More details will be documentated in README.md files as well as
in those commit messages I now write :)
2018-04-22 23:13:32 +00:00
b9a2459315 Adding missing files since shitty monotone needs an -R in add. :) 2018-04-22 20:37:39 +00:00
86f8d63a69 WIP: Adding most of the launcher code now to the repo, the one for the browser bundle.
Not 100% completely done but ready for commenting/review.
2018-04-22 19:56:42 +00:00
zzz
1a27fe185c SusiMail: Include attachments when forwarding (ticket #2087) 2018-04-22 15:17:38 +00:00
zzz
0573123460 SusiMail: Remove draft fields from session object 2018-04-22 13:59:10 +00:00
zzz
1e33dac2d7 SusiMail: Reply/fwd immediately saves as draft rather than
passing data through session; re-enable P-R-G
New StringBuilderWriter util
2018-04-22 12:34:49 +00:00
zzz
98663feaa3 SusiMail: Refactor draft compose/save in prep for fixes 2018-04-21 11:58:26 +00:00
zzz
ceeacf6a07 SusiMail: Remove Bcc-to-self feature,
replace with copy-to-sent config (ticket #2087)
2018-04-21 11:18:58 +00:00
zzz
f040421848 SusiMail: Fix reply/forward filling in compose form
Better formatting of addresses in forwarded mail
2018-04-19 21:20:58 +00:00
zzz
9fcddbb6bf SusiMail: Initial CSS for new buttons 2018-04-18 16:42:44 +00:00
zzz
75c20c9b1a SusiMail: Fix unhandled decoding exception
Trim leading whitespace from charset
2018-04-18 15:45:43 +00:00
zzz
ea9a3320a3 DNSoverHTTPS for SSLEepGet and NTP (ticket #2201) 2018-04-17 17:16:51 +00:00
zzz
d621e19349 json-smart-v1 lib for DoH and i2pcontrol
Copied from i2p.plugins.i2pcontrol.
Does not include JSON-RPC2, that stays in the plugin.
i2pcontrol checkin notes:
Smart Mini files (net.minidev.json) from:
https://github.com/netplex/json-smart-v1
commit 51e1641 on Oct 23, 2015
Essentially version 1.3.2 (1.3.1+)
Licensed Apache 2.0.
Removed as unneeded: JSONNavi.java, JSONStyleIdent.java
Not in Debian/Ubuntu
Version in Maven Central (1.0.8) is too old
2018-04-17 17:01:24 +00:00
zzz
1ba7fb9621 BuildTime: Update, add to cmd line tools 2018-04-17 13:28:47 +00:00
zzz
d02b71a39e SusiMail: Fix error message on login page 2018-04-17 13:21:44 +00:00
zzz
f0e0c01518 Console: Fix sidebar status when updating plugin (ticket #2137) 2018-04-17 12:37:54 +00:00
zzz
76999ccb6f Console: Cleanups when no leases/tunnels 2018-04-16 14:44:42 +00:00
zzz
d189c3912c Console: Add links to bandwidth graphs on /tunnels 2018-04-16 14:34:41 +00:00
zzz
b9bc254fd3 SusiMail: Move logging to router logs (ticket #2191) 2018-04-16 11:06:18 +00:00
zzz
8c0e82d4f3 i2ptunnel build restructuring:
Move Messages class from web to ui package, and from jar to war.
Build web package in a separate pass (prep for ssl helper)
API notes in javadocs
Hopefully doesn't break Android build
2018-04-14 18:54:17 +00:00
zzz
844977cca3 SusiMail: Add folders, drafts, background sending (ticket #2087)
Use with caution; cleanups and CSS to follow
2018-04-14 15:50:07 +00:00
zzz
ffad52e48c LoadClientAppsJob.parseArgs() minor cleanup 2018-04-14 14:35:53 +00:00
zzz
d12b531c54 Jetty: Fix quote in header line tripping XSS filter (ticket #2215) 2018-04-14 13:25:25 +00:00
zzz
941db3aeeb Console: Add built-by to /logs (ticket #2204) 2018-04-14 13:12:40 +00:00
zzz
98aafee53a CPUID: Fix TBM detection (ticket #2211) 2018-04-14 12:55:50 +00:00
zzz
abec6ad64c Debian Buster updates (ticket #2027)
As pulled out of http://http.debian.net/debian/pool/main/i/i2p/i2p_0.9.34-1.debian.tar.xz
License file update
2018-04-14 12:38:39 +00:00
zzz
2f53f25580 Debian updates (ticket #2027, PR #15) 2018-04-14 12:15:28 +00:00
zzz
b374b1136e Jetty 9.2.24-v201801015, Tomcat 8.5.30 2018-04-11 18:24:37 +00:00
zzz
57e21e906f Debian updates for 0.9.34 2018-04-11 16:10:08 +00:00
a474bd46d6 merge of '3acb036bb44bfe12916742877b1b2298ef6a156a'
and '674ef573b3a8e4620f0e06397e062d86fc87a5a9'
2018-04-10 15:23:41 +00:00
7ae8381465 Fixed mistake + added @since 2018-04-10 15:22:21 +00:00
zzz
f00ac6ad14 merge of '13e60de3d602be3958686f91b450707dda0767b9'
and '7d04d994f5d52eb6e483ee8654f9314ec9997387'
2018-04-10 14:30:00 +00:00
5bef86f456 Adding initial support to the router for a more slim/portable runtime environment. 2018-04-10 13:52:46 +00:00
4d23e1d38f Corrected a wrong path, and extended info about i2ptunnel. 2018-04-10 13:51:14 +00:00
zzz
c0308526a9 0.9.34 2018-04-10 12:46:30 +00:00
zzz
3c7898160e Updates after review:
Fix logic error in snark warning
Change Java 9 log warning to Java 10
Fix fallback tunnel pool stat name
Don't include geoip in this release
Update Russian translations
2018-04-10 12:42:44 +00:00
4ac505959f merge of 'b1fd7a753b83b73c005bf281fcd7e1e7046d81f6'
and 'c3b63d8b51f340bd41f9f1b8d64b78bec7a7c0c0'
2018-04-07 00:54:18 +00:00
683e0f42bc Too quick to push, fixed descriptions :) 2018-04-06 23:48:08 +00:00
d67cee5e45 Added a partially done directory structure cheatsheet thingy. 2018-04-06 23:39:23 +00:00
zzz
db72f87b34 Pull from tx 2018-04-06 23:14:40 +00:00
zzz
eb175f5542 sybil: hide families with only one member 2018-04-05 14:22:28 +00:00
zzz
43e6bb7569 GeoIP 2018-03-27, GeoIPv6 2018-04-03 2018-04-05 12:16:30 +00:00
zzz
4fbfc5d83d EepGet: Increase max header length
SSLEepGet: Set default CLI proxy type to none
2018-04-05 12:03:57 +00:00
zzz
8ea3aa8592 Console: Remove home page links as agreed in 2018-04-03 meeting 2018-04-04 18:55:52 +00:00
zzz
94c7d840c2 Reseed: Move ReseedBundler from console to router (ticket #2203) 2018-04-04 16:37:32 +00:00
zzz
d11c01cc82 Stats: Clean up per-tunnel bandwidth stat name 2018-04-03 16:21:01 +00:00
zzz
1a7e71c5ca Stats: Enable per-tunnel bandwidth stats by default (tickets #2106, #2145) 2018-04-03 15:25:28 +00:00
zzz
4ca12d141c KeyStore: Fix ConncurrentModificationException (ticket #2196) 2018-04-02 18:04:32 +00:00
zzz
9c2994cf3e build.xml: Dup and typo (ticket #2198) 2018-04-02 17:41:59 +00:00
zzz
2550b2c557 poupdate-source 2018-03-28 23:46:37 +00:00
5435a6584e merge of 'b68ae0177d4f3bd3ac8cedcb6fbf7aa9e3db6cb8'
and 'cf9e5b3c6634546f3b46b25e53ac47dcedde73b4'
2018-03-27 00:41:56 +00:00
9f11188e8f Started on scalatests for SU3File and CertUtil. 2018-03-26 21:48:31 +00:00
zzz
241ee71745 i2ptunnel: Fix display of 'tunnels not initialized' message 2018-03-24 13:26:30 +00:00
zzz
a1ccd5a209 i2psnark: Change default sort order for some columns (ticket #2152) 2018-03-24 12:45:15 +00:00
zzz
2a30bfedca Console: Hide links to i2ptunnel if disabled
/configwebapps changes don't require restart
2018-03-19 17:19:21 +00:00
zzz
129188f3cc PortMapper: Add convenience methods 2018-03-19 17:00:44 +00:00
zzz
bdff474d94 i2ptunnel: Rewrite or pass through Accept: header
Needed for zeronet
2018-03-19 16:56:53 +00:00
zzz
6908616a74 i2ptunnel: Don't set content-encoding and compress if already set,
no matter what the encoding was, can't have two
2018-03-19 13:47:56 +00:00
zzz
841bb75554 Build: Add target to show revs since last release 2018-03-18 12:35:54 +00:00
zzz
ca312f5bbc SusiMail: Move sorters to own class 2018-03-17 13:43:49 +00:00
zzz
ef692efc83 i2psnark: Don't use static field for sort language 2018-03-17 12:34:37 +00:00
zzz
e7e5ee1abe Console: Hide identicons if disabled on sybil page 2018-03-15 23:30:13 +00:00
zzz
f124404dc3 use portmapper 2018-03-15 23:24:16 +00:00
zzz
9332d1347d Console: Add translated descriptions for webapps 2018-03-15 23:12:13 +00:00
zzz
afe34c6b75 Console: Fix logic for when to linkify webapp 2018-03-15 22:55:12 +00:00
zzz
24cb0934c7 susidns: Hide identicons if imagegen disabled
Fix div ordering on /details
2018-03-15 22:27:00 +00:00
zzz
e139710352 i2psnark: Hide remove/delete buttons if data dir is readonly 2018-03-15 21:22:53 +00:00
zzz
144147d854 Certs: Sort alt names in generated certs 2018-03-15 15:58:40 +00:00
zzz
cfd84bdcdd i2psnark: Don't fail to start if data directory not found (ticket #2166)
Try to create dir if doesn't exist
Hide add and create sections if dir not writable
Remove 403 handler, don't want it for standalone hostname check
2018-03-15 15:50:33 +00:00
zzz
1de82a6801 reformat message 2018-03-15 15:46:40 +00:00
zzz
1050fc7786 i2ptunnel: Fix controls broken in last commit (ticket #2184) 2018-03-14 21:04:24 +00:00
zzz
00dc1ed213 SusiMail: Change URL from /susimail/susimail to /susimail
Remove susi.i2p links on help pages
2018-03-14 19:12:17 +00:00
zzz
2aceca5f93 Console: Add error handler to all webapps (ticket #2155)
Fix up default servlet handling in i2ptunnel and susidns
2018-03-14 18:33:14 +00:00
zzz
b9d5cdf2be Console: Hide links to eepsite if not running (ticket #2161)
Show https eepsite link if available (ticket #2159)
Use port mapper instead of webapp starter for webapp detection, much faster
2018-03-14 15:47:55 +00:00
zzz
948bbae661 Jetty: Register HTTPS eepsite with port mapper (ticket #2159) 2018-03-14 15:25:05 +00:00
zzz
6eb09bd0c8 i2ptunnel: Check port mapper for webapp presence (ticket #2161) 2018-03-14 14:09:41 +00:00
zzz
66ee7b563a Util: Add replace() method for StringBuilders 2018-03-14 13:33:43 +00:00
zzz
9b3082be06 Console: Register all webapps with port mapper (ticket #1749) 2018-03-14 12:23:37 +00:00
zzz
74ea45901a Susimail: Minor string replace fix 2018-03-14 11:47:25 +00:00
zzz
030beacf11 Console: Don't gzip svg files
Unused import
2018-03-14 11:41:18 +00:00
zzz
b4f3d961e6 SusDNS: Translate svg image text (ticket #1749) 2018-03-14 11:38:00 +00:00
zzz
a077245b3a Console: Hide links to webapps that are not running (ticket #2161)
Hide link to /configplugins if disabled
2018-03-14 11:17:05 +00:00
zzz
5a13070a58 Console: More checking in error handlers 2018-03-12 19:36:45 +00:00
zzz
4f5e3226de Router: Put FULL_VERSION in router.version property 2018-03-12 19:34:36 +00:00
zzz
df075ca4f5 SusiDNS: Ampersand escaping 2018-03-12 19:33:15 +00:00
zzz
ffc0bcc3a0 Susimail: Fix up compose.js (ticket #2176)
Enable for configuration page
Version the js
2018-03-12 11:42:52 +00:00
zzz
81808d4a60 Crypto: Add utils for renewing a cert in a keystore 2018-03-11 22:17:06 +00:00
zzz
63a8b4668c UPnP: Detect pegged counter
Make public again for CLI
2018-03-11 17:52:42 +00:00
zzz
50268de894 Router: More peer selection fixes for hidden mode
Fix excludes after calling SANFP
Pick connected OBEP when hidden and paired tunnel is zero-hop
2018-03-11 17:27:05 +00:00
zzz
96d7c73644 Router: Fix state transition to RUNNING in vmCommSystem 2018-03-11 15:57:37 +00:00
zzz
2deed13484 /tunnels: Right-justify zero-hop IB
minor cleanups
2018-03-11 15:14:08 +00:00
zzz
eb321445d9 Router: Fix rekey after hidden config change 2018-03-10 18:30:08 +00:00
zzz
39039b89a4 Console: Fix translated (es) plural
Warnings for special cases on /configtunnels
2018-03-10 17:19:38 +00:00
zzz
e7c2162874 i2ptunnel: Strip server Date header
More efficient header checks
Jetty config tweaks
2018-03-10 16:56:59 +00:00
zzz
fe808a8800 Console: Fix gzip enable logic
Don't compress js
Set charset for war resources
2018-03-10 14:53:57 +00:00
zzz
fa85c0c50b NetDB: Wake up FloodfillMonitor when ff setting changes,
so it will take effect immediately, and log in event log.
Don't queue multiple FloodJobs after changes
2018-03-10 12:30:17 +00:00
zzz
4bcb1d27e4 Servlets: Close output stream on redirect,
instead of flushing buffer, to force commitment
2018-03-09 21:02:00 +00:00
zzz
a2dbb21853 viewhistory set content-length 2018-03-09 19:41:55 +00:00
zzz
44c38dffad Console: Enable compression (ticket #2157) 2018-03-09 19:31:15 +00:00
zzz
a845d4f225 Servlets: Add Accept-Ranges headers 2018-03-09 16:02:00 +00:00
zzz
9dcf48ea81 Router: EnumSet for state checking 2018-03-09 11:52:59 +00:00
zzz
33b2d834c7 Log: Default level is ERROR if no match 2018-03-08 21:41:24 +00:00
zzz
fac4f6c28f Router: Check for transport compatibility before direct store of RI;
send through tunnel if incompatible
Fix repeated store of RI when IPv6-only
Move connect checker to own class for use by netdb
Log tweaks
2018-03-08 21:38:39 +00:00
zzz
69aadaa46a Router: Improve tunnel peer selection of closest hop
for routers that are hidden, IPv6-only, or have disabled transports.
Don't try to build tunnel if adjacent peers don't have compatible transports.
Don't select IPv6-only routers for IBGW or OBEP.
Remove old version check in peer selectors
Peer selector cleanups
Extend peer selection startup time for Android
2018-03-08 14:30:26 +00:00
zzz
1412dbd16b Crypto: Generate non-CA cert for family 2018-03-08 14:22:37 +00:00
zzz
c626bb64bd log flush tweak 2018-03-08 14:11:40 +00:00
zzz
c5b6a4ee17 NetDB: More floodfill checks 2018-03-07 21:24:54 +00:00
zzz
7433eeb5c0 Router: Validate tunnel ID in requests
Fix max ID
2018-03-07 18:06:46 +00:00
zzz
ceac733b66 log tweaks 2018-03-07 16:19:38 +00:00
zzz
665f58d62a Router: Remove ancient version check in BuildRequestor
Add method to get all connected peers from transports, for efficiency
Don't try to build non-zero-hop tunnels in VMCommSystem
2018-03-07 13:29:11 +00:00
zzz
0eb04facec Util: Consolidate FileFilters 2018-03-05 13:16:04 +00:00
zzz
28923825d9 clarify there are two f-droid repos 2018-03-04 16:40:46 +00:00
zzz
195d7dc653 Console: Show SAM cert on /certs
Stub for jetty cert
2018-03-04 16:11:29 +00:00
zzz
471fc8ee12 Console: Fix more forms inside tables 2018-03-04 14:38:33 +00:00
zzz
419d411b1b i2ptunnel: Fix multipart config for /register
Fix CSP for /register
2018-03-04 13:31:35 +00:00
zzz
c6e401a64f PortMapper: HTTPS console fallback to HTTP
Console port constants
2018-03-04 12:30:36 +00:00
zzz
3bc9053a86 KeyStore: Log expiration of self-signed certs 2018-03-04 12:14:05 +00:00
zzz
5a639260cd Address utils: Skip IPs of down interfaces on Windows
Improve identification of temporary IPv6 addresses
CLI improvements
2018-03-03 12:52:07 +00:00
zzz
67e07d21ef Console: Use consolidated default keystore password 2018-03-02 12:02:39 +00:00
zzz
f0b9894e48 Util: Warn on dubious split() regex 2018-03-01 16:26:31 +00:00
zzz
74dc427320 Transport: Rescan addresses and UPnP after network reconnection
Log network disconnect/reconnect
Don't even try to start UPnP if network disconnected
Fix UPnP repeatedly decrementing listen ports on failure
Make more classes and methods package private
Log and javadoc tweaks
2018-02-28 20:26:31 +00:00
zzz
d167b5eafb LogManager: Don't register runtime shutdown hook in router context.
This was causing shutdown() to be called twice, resulting
in lost log messages when stopped from i2prouter.
2018-02-28 20:04:40 +00:00
zzz
5cd1419897 Util: Add methods to validate IP addresses 2018-02-28 17:58:28 +00:00
zzz
f129426eed UPnP: CLI fixes
Check that Location IP matches
Display UDN in HTML output
2018-02-28 15:07:19 +00:00
zzz
f3ec5f7956 i2psnark: CSS tweak 2018-02-28 12:58:50 +00:00
zzz
2c17fef161 Addresses: CLI improvements 2018-02-28 12:26:53 +00:00
zzz
ab182d08f3 UPnP: Recognize IGD2 schemas
Don't use IGD on same host
Output last error
Preliminary work for IPv6
2018-02-27 21:26:53 +00:00
zzz
f869b8a133 UPnP: Fix event listening, prep for using events 2018-02-27 15:09:49 +00:00
zzz
7035db2bcd UPnP: Improve diagnostics
try PPP 2nd
other cleanups
2018-02-27 13:05:03 +00:00
zzz
27042f9930 i2ptunnel: Add alt names in standard and irc client tunnel certs 2018-02-25 16:31:48 +00:00
zzz
4c02c1f58b JettyStart: Cleanup, replace Resource with File 2018-02-25 14:20:44 +00:00
zzz
79baf70f9a Crypto: Add support for more alt names in certs (tickets #2159, #2160)
Set alt names for console cert
Use utils to validate console IP addresses
2018-02-25 14:17:01 +00:00
zzz
622c6801ae SusiMail: Set no-cache headers 2018-02-24 17:10:56 +00:00
zzz
005f73729e Console: More validation on URL when installing plugin 2018-02-24 16:58:18 +00:00
zzz
5b0680b29e i2psnark standalone: Add DNS rebinding protection
Add context config file to turn it off
Console: Mark request handled when rejecting in HostCheckHandler
XSSFilter: Catch cascaded ISE
2018-02-24 16:43:15 +00:00
zzz
9d989c6a67 Console: Fix HTML error, forms can't be in tables
split table up into two, put forms outside, fixup CSS to match
2018-02-24 12:43:58 +00:00
zzz
fa740e8271 Console: Fix HTML error 2018-02-24 12:42:16 +00:00
zzz
0ba0f1bded SusiMail: Check mail fixes (ticket #2174)
Fix overlapping error and info boxes
Fix checking mail when apparently connected already
Set soTimeout when fetching mail, now that InternalSocket supports it
Error message and formatting fixes
Debug log tweaks
2018-02-23 20:10:32 +00:00
zzz
4321f13453 i2psnark: Number formatting tweaks (ticket #1913) 2018-02-23 19:57:40 +00:00
zzz
e71d1d38ad Getopt: Add new translations
Add instructions in .tx/config for conversion
Fix checkutf8.sh for getopt translations
2018-02-23 16:35:16 +00:00
zzz
6fe25cda9e I2CP: Use setSoTimeout() when reading first byte
We originally looped because we used InternalSockets,
but we don't anymore.
2018-02-22 16:59:14 +00:00
zzz
01962754b0 Util: Support setSoTimeout() for InternalSockets
to keep susimail server connections from hanging too long
2018-02-22 14:54:57 +00:00
zzz
237447180c cleanup 2018-02-21 21:34:29 +00:00
zzz
4b1a357ee7 Certs: Add policy extension 2018-02-21 20:10:14 +00:00
zzz
56c17300d5 SusiMail: Add Date header to sent messages, as required
Make Loader static
2018-02-21 15:05:15 +00:00
zzz
61ae0a597a Util: Add RFC822Date to CLI 2018-02-21 13:41:09 +00:00
zzz
3159c519b1 Console: Hide options on /configupdate if a package (ticket #2172)
or if not advanced
2018-02-21 12:54:56 +00:00
zzz
f00bf7d2cb Console: Redirect to HTTPS if available (ticket #2160)
Show console links as HTTPS if available
Extend blacklisted ports to cover HTTPS console and eepsite
2018-02-20 20:19:34 +00:00
zzz
33ea4cf571 Console: Change sendError() to setStatus() for 3xx responses
to avoid unnecessary output
2018-02-20 19:45:49 +00:00
zzz
86b3b13d6f Console: Change all 302s to 303 or 307
Eepget: Handle 308
2018-02-20 16:53:31 +00:00
zzz
b77524cfc7 Crypto: Backdate selfsigned cert to allow for clock skew 2018-02-20 12:27:30 +00:00
zzz
12c7871640 i2ptunnel, systray: Replace hardcoded console URL in more places (ticket #2160) 2018-02-19 23:12:06 +00:00
zzz
88c7abedde javadoc note 2018-02-19 22:26:32 +00:00
zzz
ad4eef9757 i2ptunnel, I2CP, SAM: Change selfsigned cert cname to localhost (ticket #2160) 2018-02-19 22:14:50 +00:00
zzz
935ba77da7 Console: Change selfsigned cert cname to localhost (ticket #2160) 2018-02-19 19:40:04 +00:00
zzz
673d765ed6 Crypto: Add IP addresses to selfsigned cert SAN (ticket #2160) 2018-02-19 19:36:30 +00:00
zzz
c719410dfa Console: Change trac links (ticket #2014) 2018-02-19 16:08:24 +00:00
zzz
ff81b4246a Console: Number formatting tweaks (ticket #1913) 2018-02-19 14:39:21 +00:00
zzz
646fe20726 Streaming: Don't exceed configured tag settings when overriding 2018-02-19 14:31:51 +00:00
zzz
a5ca9364ef more NTP response sanity checks 2018-02-19 14:25:57 +00:00
zzz
826d8ca07f i2ptunnel: Retry accept after router soft restart (ticket #2003)
This sends the router restart indication from I2CP router side
to client side to streaming to I2PTunnelServer via
a new streaming exception.
2018-02-18 13:53:50 +00:00
acebd2ea68 Cleanups: Close resources via try-finally 2018-02-17 19:53:30 +00:00
fb6eea2484 NPE fixes 2018-02-17 18:41:30 +00:00
zzz
cd3515923e i2ptunnel: Close sockets in finally{} 2018-02-17 16:04:09 +00:00
zzz
509e39b592 Console: Number format tweaks (ticket #1913) 2018-02-17 15:34:17 +00:00
zzz
dd575316bb Console: Restore:
CSS h1 letter spacing tweak
	Revision: d5b621df7264ac5c0ceb4cbede6779cef043ca4b
	Date:     10/20/2016

Inadvertently? reverted by:
	NedDb advanced lookup layout and theme improvements
	Revision: 058008f4847fe88db6b8236795b55db869e44a13
	Date:     01/15/2017
2018-02-17 15:09:31 +00:00
zzz
cf7d492e8d SusiMail: Change size from int to long
Fix mail save truncation
Don't fetch mail from folder display
Version all css
2018-02-17 13:37:40 +00:00
zzz
48027fe6ff i2psnark: folder.js cleanup (ticket #2168, PR #14)
(thx Pimp Trizkit)
2018-02-17 12:31:53 +00:00
zzz
cabf1aa3c5 Streaming: configurable response when over connection limits (ticket #2145)
Drop when way over limits.
Default to HTTP 429 for HTTP Server tunnels
Increase recently-closed cache size
2018-02-16 19:49:49 +00:00
zzz
a1ed4cf3b0 debug tweak 2018-02-16 16:15:24 +00:00
zzz
624c382652 i2psnark: Fix NPE on torrent not found (ticket #2167) 2018-02-14 17:35:23 +00:00
zzz
a62c6a8b96 Add i2pforum.i2p 2018-02-14 13:03:12 +00:00
zzz
167839b267 i2ptunnel, eepget: Capitalize Cache-Control
Change POST throttle response to 429
2018-02-14 12:54:16 +00:00
zzz
c48796c0f4 change clearnet UA again (ticket #2163) 2018-02-14 12:48:35 +00:00
zzz
507c1d55da Util: Drop deprecated BigPipedInputStream 2018-02-12 19:32:45 +00:00
zzz
6193e487c8 Util: Add sort methods that catch IAE 2018-02-12 18:49:01 +00:00
zzz
1826fcee0c i2ptunnel: Close sockets on error 2018-02-12 17:25:35 +00:00
zzz
2999638255 Proxy: Update clearnet user-agent (ticket #2163) 2018-02-12 17:20:23 +00:00
zzz
012fb4cacf SusiMail: Thread the cache loading and email checking (ticket #2087)
Set Cache-Control header for attachments
Fix rotated attached images
Fix excess debug info in message view
2018-02-12 14:26:19 +00:00
zzz
f13f4fcb6e Util: Number formatting tweaks (ticket #1913) 2018-02-11 20:59:58 +00:00
zzz
31719d30cf SusiMail: Improve speed of subject sorter
Use ID instead of hashcode for mailparts, so attachments are bookmarkable
Recognize fw:
2018-02-09 22:53:25 +00:00
zzz
afad22a8cb SusiMail: Better handling of no subject
Better spacing display in text
Recognize more re: and fwd:
CSS wrap fix
2018-02-09 19:41:03 +00:00
zzz
daf7e86b2f SusiMail: Thread the loading from disk 2018-02-09 17:05:32 +00:00
zzz
768921b361 SusiMail: Handle lower case in q-p and filename decode 2018-02-09 16:09:42 +00:00
zzz
ddf7fba039 SusiMail:
- Don't show the 'no charset' warning
Filename encoding fixes:
- Fix encoding to be hex upper case
- Move encoding to new util class
- Encode in sent mail
- Implement decoding in received mail
Error message and debug tweaks
Output remainder of header line after decode fail
2018-02-09 15:17:04 +00:00
zzz
3d25a9fd66 SusiMail: Fix case where getHeaderLineAttribute() was fooled
Time format tweak in message view
Debug tweak
2018-02-08 15:58:15 +00:00
zzz
8161f099d2 SusiMail: Error handling fixes
More tolerant parsing of Date headers
Set a date if we don't get a valid Date header
Fix parsing long Base64 encoded headers
Fix page count after changing page size
Make attribute name parsing case-insensitive
Import mail method for debugging
Debug and log tweaks
2018-02-08 14:46:41 +00:00
zzz
7da3de20aa Util: Move RFC822Date from router to core for SusiMail 2018-02-08 13:22:01 +00:00
zzz
c5ca226ece Debian: Put quilt back into the rules for the debian-binary ant target 2018-02-07 19:01:33 +00:00
zzz
96185d015a Set default organization for self-signed certs 2018-02-07 18:52:26 +00:00
zzz
65484510c6 SusiMail: Use input streams for reading mail (ticket #2119)
Rewrite Base64, HeaderLine, and QuotedPrintable decoders
Rewrite and expansion of ReadBuffer class and utilities for streams
Rewrite Mail and MailPart to parse the headers only once
Rewrite MailPart parser
MailPart parser rewrite skips over the data without reading into memory or decoding
MailPart decoder rewrite to decode stream-to-stream
ReadBuffer becomes Buffer interface with multiple implementations
Logging and debugging tweaks
2018-02-07 12:27:40 +00:00
zzz
b013173c86 Util: Allow backslash in XSS filter on Windows 2018-02-06 21:52:02 +00:00
zzz
172f0c9d95 Console: Fix "UnreachableOK" on /profiles (ticket #2148) 2018-02-03 16:53:56 +00:00
zzz
a3d3eec709 log tweaks 2018-02-03 16:43:56 +00:00
zzz
8250a8e7f7 Add i2pcontrol service identifiers 2018-02-03 16:41:57 +00:00
zzz
e01234c6a4 Update the update URLs 2018-02-03 16:41:34 +00:00
zzz
ce484f2eb8 Console: Move LS debug display back to the bottom,
can't work at the top as we don't have the data.
2018-02-01 15:12:29 +00:00
zzz
38da5cd4e8 javadoc fix 2018-02-01 14:53:25 +00:00
zzz
42fa23017f NetDB: Increase min floodfill version 2018-02-01 14:51:49 +00:00
zzz
a021e0d31f Console: Fix number formatting (tickets #1912, #1913, #2126) 2018-02-01 14:37:11 +00:00
zzz
81713a0cab i2psnark: Escape chars not escaped by browsers 2018-02-01 14:17:57 +00:00
zzz
cccf76cc78 SusiMail: Don't duplicate Re: and Fwd:
final formatters
store Message-ID
2018-02-01 14:14:19 +00:00
zzz
e2afb72c16 i2ptunnel: Reset connection if out of threads 2018-02-01 13:47:43 +00:00
zzz
40e12b4fb1 Flip the snark erasers too 2018-02-01 13:44:36 +00:00
zzz
4a47bea5f1 Debian updates for 0.9.33 2018-02-01 13:43:48 +00:00
zzz
23aaefa986 0.9.33 2018-01-29 21:06:02 +00:00
zzz
99b028a4e7 bump for review 2018-01-26 18:39:48 +00:00
zzz
fbcaad51d7 translated man page update 2018-01-26 18:35:13 +00:00
zzz
64fe2f1b05 update from transifex 2018-01-26 18:32:55 +00:00
zzz
582bab7c0d minor cleanups 2018-01-26 18:04:58 +00:00
zzz
5f903cc7ca flip eraser business-side down 2018-01-26 17:59:54 +00:00
zzz
276d1c907e i2ptunnel: Fix duplicate tunnels on create
Fix null tunnel name
Javadoc fixes
2018-01-26 14:28:41 +00:00
zzz
c098e5602d SusiMail: Close POP3 socket on error
synch isConnected()
2018-01-25 15:56:28 +00:00
zzz
42f8b98b03 Resources: GeoIP 2018-01-05
blocklist update
gostcoin family cert
update license.readme.txt
Susimail: Don't break words in mail body
2018-01-25 14:10:22 +00:00
zzz
d364bba4c7 i2psnark: Prevent commenting without comment name (ticket #2138)
Trim name
2018-01-24 15:35:30 +00:00
zzz
2df32aa8e5 SusiMail: Fix header corruption (ticket #2139) 2018-01-24 13:27:28 +00:00
zzz
709657e2c6 log tweak 2018-01-21 14:40:26 +00:00
zzz
6176aaeb44 Util: Don't throw unsupported on setSoLinger() 2018-01-21 14:29:48 +00:00
zzz
d8c3f617aa Streaming: Consistent exception message on socket close 2018-01-20 11:34:16 +00:00
zzz
08dec0e00d log tweaks 2018-01-19 19:35:29 +00:00
zzz
1b25eaca8f Console: Fix tiers chart on /profiles to match that on /tunnels 2018-01-19 19:11:39 +00:00
zzz
2f4ea9c588 i2ptunnel: Prevent changing sigtype after dest creation (ticket #2128)
Fix HTML error in editClient
2018-01-19 12:58:41 +00:00
zzz
ae505995ac Util: Consolidate console URL generation in PortMapper 2018-01-18 13:25:21 +00:00
zzz
109ac5b61c Console: Fix corrupted string, and parameterize 2018-01-18 12:13:40 +00:00
zzz
79d8a0ed11 build: New poupdate-source target 2018-01-18 10:18:11 +00:00
zzz
7e4ff0ba85 poupdate 2018-01-18 09:08:46 +00:00
zzz
c4c45f708c tag fixups 2018-01-18 09:06:34 +00:00
zzz
953381ff5e i2ptunnel: Move more dup edit code to edit.jsp 2018-01-17 17:46:18 +00:00
zzz
cae1fe14f9 i2ptunnel: Change include style for edit jsps
Move dup edit code to edit.jsp
Add headers for register.jsp
Remove dup Content-Type
2018-01-17 16:51:55 +00:00
zzz
efe3696aa2 i2ptunnel: Set defaults for limits 2018-01-17 16:23:54 +00:00
zzz
889b5ae280 i2ptunnel: Fix NPE stopping TCG 2018-01-16 00:26:32 +00:00
zzz
c2bfb80233 Keyring: Separate local and remote dests on /configkeyring
Prohibit local changes on /configkeyring
Remove local keys from keyring on tunnel shutdown or encryption disable
Ensure subsession encryption setting matches primary session
(ticket #2108)
2018-01-14 18:48:47 +00:00
zzz
8ef042af6a Tags: Clean up sessions with excess tagsets
Move clearExcess() call to the cleaner task
Debug/log tweaks
2018-01-13 19:47:05 +00:00
zzz
fcb835da34 log tweaks for b32 2018-01-13 12:59:48 +00:00
zzz
7493134f25 unused import 2018-01-13 12:57:19 +00:00
zzz
c6c61c9e57 Summary bar: Bounds check on memory info 2018-01-10 20:36:15 +00:00
zzz
8d6d1bc751 i2psnark: Fix infinite loop stopping update torrent (ticket #2125) 2018-01-10 17:58:50 +00:00
zzz
541dae36d4 Util: New util to truncate a string that won't split across a surrogate pair 2018-01-10 17:39:58 +00:00
zzz
50eb93deec /netdb: Note encrypted leasesets 2018-01-10 16:44:37 +00:00
zzz
ecb8480b5c /confignet: Display IP even if firewalled (ticket #2133) 2018-01-10 16:23:25 +00:00
zzz
cfbcd54ba9 jrobin: Disable DeallocationHelper for Java 9 2018-01-10 15:39:05 +00:00
zzz
1c3fc2bbdb i2psnark: Fix double-escaping of '&' (ticket #2127) 2018-01-10 15:29:59 +00:00
zzz
d55a0c9c39 i2ptunnel: Additional user-agent check 2018-01-10 15:14:17 +00:00
zzz
57e2bb7bc9 Addressbook: Remove finalizers (ticket #2115)
Better resource cleanup
2018-01-10 15:11:10 +00:00
zzz
eeb2835ca1 fixup dependency list in ant help 2018-01-09 19:01:25 +00:00
zzz
823526ae9b Console: Remove trackers from home page 2018-01-09 19:00:57 +00:00
zzz
ce49c00454 SusiMail: Rewrite/fix subject line encoding 2018-01-09 18:59:01 +00:00
zzz
9f7ec398c1 Build: Add buildSusiMailJar target for testing
More test targets
2018-01-08 14:46:26 +00:00
zzz
25d16b13f5 i2ptunnel: Advanced config in/out tunnels separately 2018-01-06 20:19:55 +00:00
zzz
f32d3aaef5 Console: Show and set burst bandwidth on /config (ticket #2123)
Better error handling
Comment out some unused things, misc. cleanups
2018-01-06 16:15:15 +00:00
zzz
b8f17c7ac4 i2ptunnel: Escape chars unescaped by browsers (ticket #2130) 2018-01-06 11:23:47 +00:00
zzz
d82499f07c i2ptunnel, eepget: Better error message on invalid URLs (ticket #2130) 2018-01-06 10:31:41 +00:00
zzz
62210c8165 i2psnark: Fix overflow in ratio sorter (ticket #2129) 2018-01-04 11:28:49 +00:00
zzz
a827b2f964 SusiMail: Clean up/simplify HeaderLine encoder loop,
in prep for a rewrite for tokenizing
2017-12-23 19:36:13 +00:00
zzz
1e30efdb0d SusiMail: Limit quoted-words to max line length
Change HeaderLine encoder to work on chars, not bytes,
so multibyte chars aren't split across lines.
Fix places where lines were one or two chars too long.
More to do, as it isn't tokenizing.
2017-12-23 18:49:48 +00:00
zzz
bf193b3218 SusiMail: Don't convert underscore to space after base64 decoding 2017-12-23 18:36:13 +00:00
zzz
003d865cc3 SusiMail: Fix filenames for inline attachments
Support RFC 5987/6266 for attachment and save-as filenames
Add alt tags for images
2017-12-23 13:16:48 +00:00
zzz
4b95824644 SusiMail: Static DateFormatters 2017-12-23 13:08:16 +00:00
zzz
70b2dbec56 SusiMail: Separate recipients by commas 2017-12-22 23:02:29 +00:00
zzz
4ee6ae96a2 SusiMail: Use pattern matcher 2017-12-22 13:52:59 +00:00
zzz
7379645869 SusiMail: Fix bug sending CC recipients as a 2nd To line
- Workaround on receive side for CC bug
- Display To and CC lists on show page
- Case-insensitive handling of all mail headers
- Early return if state is AUTH
- Escape leading '-' in q-p encoding
2017-12-22 13:32:41 +00:00
zzz
8b8d32e496 Util: LookaheadInputStream speedups and cleanups 2017-12-18 22:23:42 +00:00
zzz
be004cd350 Util: Consolidate two copies of WriterOutputStream into jetty-i2p.jar 2017-12-18 12:45:04 +00:00
zzz
71640590bc SusiMail: Show result after server check (ticket #2087) 2017-12-16 16:12:34 +00:00
zzz
0430323d2a SusiMail: Sorting cleanups and fixes, only sort when required 2017-12-16 14:16:56 +00:00
zzz
c2a1d7956c SusiMail: Don't store state in session object (ticket #1373)
Change state to enum
Static redirect method
Put current state in form
2017-12-15 14:20:38 +00:00
zzz
aca2f5780b SusiMail: Fix interactions between single-delete and multi-delete,
P-R-G for single-delete, don't store single-delete in session,
add cancel button for single-delete (ticket #1373)
2017-12-14 23:48:14 +00:00
zzz
0ec39e5ea1 SusiMail: Rework search params and preserve across P-R-G (ticket #1373) 2017-12-14 21:20:42 +00:00
zzz
52f736a06e SusiMail: P-R-G to config page (ticket #1373) 2017-12-14 16:39:23 +00:00
zzz
0722fd8b19 SusiMail: P-R-G from login and compose pages (ticket #1373) 2017-12-14 16:11:54 +00:00
zzz
b33551d4b8 SusiMail: Put prev/next targets in form, not in session object,
and use P-R-G (ticket #1373)
2017-12-14 14:46:31 +00:00
zzz
e6251e7cb5 i2ptunnel: Add internal sockets for SMTP and POP3 (ticket #2118) 2017-12-13 23:23:02 +00:00
zzz
5f413efc08 InternalSocket: Implement more methods, add debug output, don't ignore interrupt on accept()
Close socket on InternalSocketRunner exception
2017-12-13 16:06:13 +00:00
zzz
bd341d4be3 Startup: Raise open files ulimit (ticket #1967)
Fixup deb patch to match
2017-12-11 14:14:46 +00:00
zzz
34d879a066 unused imports 2017-12-11 11:44:44 +00:00
zzz
789f15f1e4 Java 10 test 2017-12-11 11:41:19 +00:00
zzz
b04924d2b1 Jetty: Fix request log showing zero length for static content 2017-12-11 11:39:58 +00:00
zzz
ed4dc33105 Router: Change RI locking to a read/write lock (ticket #2096) 2017-12-10 13:06:49 +00:00
zzz
8e51ca7f39 javadoc tweaks 2017-12-09 17:37:02 +00:00
zzz
2e00cec408 deb doc updates 2017-12-09 17:35:34 +00:00
zzz
2a57f62e6b remove SSL cert for reseed now using CA 2017-12-09 17:33:54 +00:00
zzz
cd51c9b3c4 susimail tweaks 2017-12-09 17:32:17 +00:00
46a342180d Don't compile ScalaTests on Java 7 2017-12-09 12:42:52 +00:00
578656021e Don't run ScalaTests on Java 7 2017-12-09 02:28:01 +00:00
7dae4eb303 ScalaTest: Fix deprecation warnings 2017-12-09 01:47:24 +00:00
4512a940fb Gradle: Run ScalaTest tests in addition to the JUnit tests 2017-12-09 01:43:09 +00:00
a67ea4b2f2 Cleanups: Close resources via try-finally
We can't use try-with-resources until we bump the minimum-supported Android
version for the client library to API 19.
2017-12-09 01:02:17 +00:00
zzz
fe5e4a2c7a SusiMail: Add tooltips for icon-only buttons
- Fix NPE sorting by sender
- Make subject bold
- Minor prep for folders
2017-12-08 18:59:39 +00:00
zzz
5aef5e24e3 SusiMail: Fix handling of requests for unknown messages 2017-12-08 17:37:33 +00:00
zzz
4c18e2f057 SU3File: Flush and sync on extract (ticket #1941) 2017-12-08 16:08:17 +00:00
zzz
a3e42c435c SusiMail:
- Put UIDL in attachment links, remove session object UIDL (ticket #1373)
- Store UIDL in MailPart
- Fix download of attachments without a Content-Transfer-Encoding
- Fix escaping inside debug html comments
- Fix error return for attachment not found
2017-12-08 15:32:52 +00:00
zzz
2c4ecb7b7c SusiMail: Reference mails by UIDL, not index on page
- Add more safe mime types for downloading
- Put UIDL in show message form, in prep for removing session object UIDL
2017-12-08 02:27:29 +00:00
28f31ae4ec Fix .travis.yml syntax 2017-12-07 21:29:22 +00:00
zzz
f34b4678ba Util: Deprecate BigPipedInputStream 2017-12-07 19:53:06 +00:00
zzz
1f569b7359 i2psnark: Synch operations on BitField byte array 2017-12-07 19:44:56 +00:00
7f673bb254 Travis CI: Dynamically add SonarQube plugin to build.gradle 2017-12-07 19:31:30 +00:00
a02cccaa50 Only use SonarQube with Java 8
It fails on Java 7, and is unsupported on Java 9.
2017-12-07 16:54:02 +00:00
bcb07ff3c6 merge of '9aa4b7c5c2c7f8711ef82ceb28fe85ec3bc1e509'
and 'c08cb985b2e34268deff746d3849d707d1ed084f'
2017-12-07 16:08:15 +00:00
zzz
479120118d merge of '3587a0d669980fb559bea3c618bc6515c8133189'
and '8b9bf9d50ce636255f7c5ccb9625671d37697fa8'
2017-12-07 15:48:35 +00:00
zzz
0c4f945408 Console: Don't list aliased tunnels separately on /tunnels and /configtunnels 2017-12-07 15:47:12 +00:00
zzz
3291b761e8 SusiMail: Recheck max size if server reports less than default
- More javadocs and cleanups
2017-12-07 15:45:55 +00:00
b8d78ac779 Combine Travis CI Gradle tasks into a single step 2017-12-07 15:41:12 +00:00
e6d97308bc Only apply sonarcloud addon to the Travis CI job it is used in 2017-12-07 15:34:21 +00:00
71dbc0abe6 Only call SonarQube once per Travis CI build 2017-12-07 14:55:44 +00:00
ff911e37c4 Deduplicate the default Java Keystore password 2017-12-07 14:31:28 +00:00
f9eaf412b7 Enable SonarCloud in Travis CI 2017-12-07 14:04:48 +00:00
19016edcfc Gradle: Add code coverage reporting, upload from Travis CI to Codecov 2017-12-07 03:50:25 +00:00
zzz
75e6539f81 fix streaming test take 2 2017-12-06 14:41:05 +00:00
zzz
956c9607ff hopefully fix streaming test 2017-12-06 13:09:53 +00:00
zzz
a28ddedce7 Susimail: Move duplicated Encoding methods to the abstract class 2017-12-06 02:10:31 +00:00
e13ce467d8 Travis CI: Remove second IRC server after testing 2017-12-05 22:29:39 +00:00
34b204c44c Travis CI: Tweak IRC notification syntax, add second server for testing 2017-12-05 22:01:56 +00:00
zzz
f5dffb0726 Susimail, Console, Jetty:
- Adjust multipart size limits
- Better handling of errors when multipart limits are exceeded
- Fix multipart config for /configplugins
- Test for total size limit in susimail
2017-12-05 21:46:11 +00:00
d4bafaeee8 Don't check error messages for JRE-generated errors
They may change across Java versions.
2017-12-05 20:33:12 +00:00
2f8249bed5 Remove now-unnecessary Jetty Gradle dependency 2017-12-05 20:24:32 +00:00
5a458822ce Add IRC notifications for Travis CI builds 2017-12-05 20:12:37 +00:00
zzz
692790c4ed Router: Parameterize bandwidth classes, fix display on /tunnels 2017-12-05 15:53:05 +00:00
zzz
7f5f764aba SusiMail: Don't store attachments of composed email in-memory,
encode them on-the fly (ticket #1668)
- Fix bug corrupting sent text and text attachments
  larger than about 1000 chars (output line length was not limited)
- Fix bug corrupting some sent text and text attachments
  containing '.'
- Fix handling of unimplemented encoders
- Error message improvements
- Add test code for encoders
2017-12-05 15:02:23 +00:00
zzz
c299976165 Jetty: Refactor (rather than remove) RequestWrapper to use Servlet 3.0 API.
Remove old org.mortbay helper classes copied from Jetty 5, saving about 24 KB.
Large attachments will now be written to temp files. (ticket #2109)
2017-12-04 16:08:03 +00:00
zzz
14941d0dda Deprecate RequestWrapper (ticket #2109) 2017-12-03 23:09:22 +00:00
676e9c9320 merge of '17e445455139cbd0a4d4096e2f6bf673bdf0f868'
and '8c95a90070f2706b8b4d3eb9151e0c614d25663b'
2017-12-03 18:23:34 +00:00
bb38e07e2a Fix broken I2PSocketEepGet test, add additional case
Broken in 49d33fa03636041c4da35476539a3b6aa318da11 by the move from URL to URI.
If URI is passed a URL with a negative port, URI.getHost() returns null, which
bypasses the coercion-to-80. Zero, OTOH, is still coerced.
2017-12-03 18:17:44 +00:00
zzz
16282ec5c5 Util: New utility class for UI message queues, for use by i2psnark and i2ptunnel
i2psnark: Use new utility, prevent message loss on clear
i2ptunnel:
- Don't lose messages on refresh (ticket #2107)
- New clear messages button
- Hide message box if none
- javadoc clarifications
2017-12-03 17:33:20 +00:00
zzz
5912f7c259 fix swapped log msgs 2017-12-03 17:29:31 +00:00
zzz
89d7a594dd fix test on Java 9 2017-12-02 23:25:43 +00:00
zzz
100d307037 i2ptunnel: Propagate resets from streaming to Socket and vice versa (ticket #2071) 2017-12-02 23:12:19 +00:00
zzz
3d0e15aaed cleanup 2017-12-02 22:51:18 +00:00
zzz
e9de0a14b9 Streaming: Send reset when receiving more data after locally closed,
rather than acking (ticket #2071)
2017-12-02 22:32:03 +00:00
5a3f0163b9 Gradle: Ignore streaming integration tests 2017-12-02 20:58:58 +00:00
dd89c4a469 Exclude BuildMessageTestStandalone from Gradle test suite
Needs rewriting.
2017-12-02 20:54:13 +00:00
a65a498c86 Segment integration tests in router 2017-12-02 20:48:53 +00:00
10d5a17422 Migrate net.i2p.data tests in the router to JUnit 4 2017-12-02 20:08:44 +00:00
b6298dc091 Segment integration tests in core 2017-12-02 19:35:33 +00:00
11da21dd67 Remove AESInputStreamTest reference 2017-12-02 19:33:05 +00:00
a574fcb68d Drop historic unused AESInputStream and AESOutputStream 2017-12-02 19:29:36 +00:00
0f757489ff Migrate DummyNamingServiceTest to JUnit 4, comment out tests requiring a router 2017-12-02 18:22:59 +00:00
b8eeb72044 Fix net.i2p.data.*Key tests, remove dead code
Broken in 463f5347b682f23a159bdeb06ffc8f55c5c2cff7 by an underlying API change.
The dead code threw the previously-expected exception.
2017-12-02 17:42:59 +00:00
60efd0b426 Migrate net.i2p.data tests to JUnit 4 2017-12-02 17:25:09 +00:00
c36905a309 Travis CI: Use BouncyCastle as a SecurityProvider for OpenJDK 7
Workaround for travis-ci/travis-ci#8503, gradle/gradle#2421.
Solution taken from bugsnag/bugsnag-java#66.
2017-12-02 15:17:06 +00:00
1ff9e6eff1 Travis CI: Add Gradle cache configuration 2017-12-02 15:06:08 +00:00
zzz
2e888501d6 Core tests: Remove or suppress deprecation warnings
Remove unchecked warnings
Fix HMACSHA256Test and HMACSHA256Bench?
2017-12-02 14:28:03 +00:00
zzz
e6f17ec1ab Router tests: Remove or supporess deprecation warnings
Remove cast warnings
Fix RouterAddress.setExpiration() to match javadoc, used only by tests
2017-12-02 13:56:13 +00:00
2becaaa593 Add a basic Travis CI configuration 2017-12-02 10:25:00 +00:00
zzz
f8e871cea9 build dep fix 2017-12-01 16:08:03 +00:00
zzz
80e3c96f2d LeaseSet: Better error messages when decode fails (ticket #2108) 2017-12-01 15:57:54 +00:00
zzz
dc13ed6c19 Console: Move /configkeyring HTML to console,
don't truncate hashes, tag for translation,
display as b32, trim form data, better form errors,
fix removing entries, parameterize form messages (ticket #2108)
2017-12-01 15:53:16 +00:00
zzz
17b72dd549 Streaming: Double the RTO on congestion (ticket #1939)
This prevents being stuck at a window size of 1, retransmitting every packet,
never updating the RTT or RTO. See RFC 6298 section 5 item 5.5.
2017-12-01 14:10:57 +00:00
zzz
9b2a85df38 Console: Split net.i2p.router.web into two packages, and move the new .helper package to the war 2017-12-01 14:07:29 +00:00
zzz
6c56d679ab Debian: Exclude gradle, IntelliJ, Docker, .tx, gcj files from source tarballs 2017-11-27 23:59:05 +00:00
5c5f5bc682 Update history after prop 2017-11-27 15:47:49 +00:00
881ff77171 Remove unneeded dependency 2017-11-27 15:41:19 +00:00
9be53ecb43 Swap out getopt, gettext, and geoip code in Gradle libs for dependencies 2017-11-27 15:36:09 +00:00
646dbffe69 Add license details for Gradle wrapper 2017-11-27 14:44:48 +00:00
95f5244fd9 Add Eclipse and IDEA project files to ignores 2017-11-27 09:53:00 +00:00
694aab503d Drop old Eclipse and IDEA project files 2017-11-27 09:47:14 +00:00
36a313cc30 Don't make the apps/ dir itself a Gradle Java project 2017-11-27 01:34:15 +00:00
e011d60987 Add project file generation for IDEA 2017-11-27 01:27:55 +00:00
d76d68ea8d Update Jetty and Tomcat versions after prop 2017-11-27 00:54:07 +00:00
404fe4f127 propagate from branch 'i2p.i2p' (head d3ba02961713c42005f60442d7816cefa3dcf46a)
to branch 'i2p.i2p.str4d.test2' (head fbda38b84fe469dba05367115d2c26dee65fc5f4)
2017-11-27 00:34:41 +00:00
27d8b0ee3d Make settings.gradle more readable 2017-11-27 00:34:02 +00:00
89f2a76409 Update README 2017-11-26 23:27:59 +00:00
3acb7a5c28 Apply java-library plugin to published libraries 2017-11-26 23:20:24 +00:00
zzz
03588e7648 Console: Safer processing of changes on /configadvanced 2017-11-26 20:54:44 +00:00
zzz
6a48910935 Build: add xenial release target, it will be our 4th launchpad flavor.
build.xml cleanups
doc updates
2017-11-26 15:27:06 +00:00
zzz
fb4fb47ee3 Context: Hopefully fix rare NPE on Android (ticket #2092) 2017-11-26 14:16:16 +00:00
zzz
7a36b07cf7 Debian: Clean up the suggests list 2017-11-25 22:00:31 +00:00
zzz
4a59c19ac9 Console: Show full logger.config path on /configlogging
Don't say 'Plugin downloaded' when installing from file
2017-11-25 19:53:25 +00:00
zzz
51a6f298e2 Debian: Remove libecj-java dependency (ticket #2094)
Add taglibs-standard-* to apparmor list (ticket #2093)
2017-11-25 19:42:10 +00:00
zzz
752c17ca6c doc tweaks 2017-11-25 19:00:09 +00:00
zzz
a3a17a4f32 Debian: Replace glassfish-javaee with libtaglibs-standard-* (ticket #2093)
Only for stretch and later, zesty and later
Copy more files for previous stretch setup to xenial
2017-11-25 18:59:04 +00:00
7f6ba8cd15 Enable overriding of the gpg binary 2017-11-24 11:39:05 +00:00
zzz
6cd5f1d83b i2ptunnel: Add timeout to header reads for CONNECT, HTTP, and SOCKS client proxies
Clean up SOCKS exceptions
2017-11-23 17:44:03 +00:00
zzz
2a2795827a Wrapper: Update to wrapper 3.5.34
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)
2017-11-23 15:33:59 +00:00
zzz
700c843b11 i2psnark: Fix nbsp in logs on config change (ticket #2082) 2017-11-22 15:55:19 +00:00
zzz
d28220cd04 Tomcat 8.5.23
Prior to Jetty 9, we used the Tomcat 6 distribution.
As of Jetty 9, we used Tomcat 8.0.33 that was included in the Jetty 9 distribution,
but that is old and doesn't get updated.
Now use the latest Tomcat 8 distribution, and pick the same packages
as Jetty 9 did in their distribution.
2017-11-22 14:49:22 +00:00
zzz
ad056bcef5 Streaming: Fix bug causing hangs on loopback and preventing desired ack behavior (ticket #1939) 2017-11-22 00:10:52 +00:00
zzz
b2dcf2069f Transport: Add checks for more Tor ports as invalid 2017-11-21 01:33:22 +00:00
zzz
8c7898de1e Reseed: Add support for reseeding via outproxy or Orchid (ticket #1841)
InternalSocket: Add support for some methods needed for reseed to work
2017-11-21 01:29:31 +00:00
zzz
07a83bf310 EepGet: Refuse attempted redirect to HTTPS, won't work 2017-11-21 00:58:44 +00:00
zzz
173823695f HTTP Proxy: Better HTTP status message when no outproxy configured 2017-11-21 00:06:32 +00:00
zzz
5000a266cb i2prouter: Fix echo -n on OSX 2017-11-20 23:06:06 +00:00
zzz
14e9315262 Streaming: log tweak to assist in fixing ticket #1939 2017-11-19 21:32:12 +00:00
zzz
3abc777062 Debian: Fix builds for x32 (ticket #2076)
Incorporate patches 2 and 3 into build scripts
2017-11-19 16:58:51 +00:00
zzz
3ba46f16d1 /configreseed help tweaks 2017-11-19 00:41:42 +00:00
zzz
85bb495754 DTG: On OSX, set dock icon, and enable by default 2017-11-19 00:40:50 +00:00
zzz
0ba207cb01 Reseed: Improve status feedback in logs, summary bar, and /configreseed
- Show proxy info, if applicable, in logs
- Show status in summary bar for manual reseed (previously hidden if more than 30 routers)
- Show status in summary bar after successul completion
- Show reseed button in summary bar if less than 50 known RIs (previously 30)
- Show current status on /configreseed if already running
- Consolidate proxy settings detection in ReseedRunner constructor
- Enhance help text on /configreseed (tickets #423, #1130)
2017-11-18 18:47:50 +00:00
zzz
33aac1b125 Reseed: Add SOCKS proxy support (ticket #1130) 2017-11-17 23:46:45 +00:00
zzz
d5cc1d83f3 SSLEepGet: Refactor proxy code to new method, in prep for adding more 2017-11-17 20:49:00 +00:00
zzz
92a26f6f7b Addressbook: Fix adding alternates after importing an empty book (ticket #2072) 2017-11-17 20:34:51 +00:00
zzz
d04050e6b0 SOCKS: Move constants and client code from i2ptunnel to
a new package in core, in prep for use by SSLEepGet (ticket #1130)
Make SOCKSException extend IOException, which allows some cleanups.
Untested.
2017-11-17 20:14:10 +00:00
zzz
80cb62b777 SSLEepGet, Reseed: Implement HTTPS proxy option (ticket #423) 2017-11-17 13:33:46 +00:00
zzz
570dea85f1 Console: Hide Reseed HTTP proxy options if no HTTP URLs (ticket #2007) 2017-11-16 16:17:03 +00:00
zzz
86a2e16ffb Fix pkg build for Jetty 9.2.22
Set next release to include GeoIP
2017-11-16 13:28:01 +00:00
zzz
ed39ea408f Utils: Consolidate user-agent detection code in a new utility class
Add some new checks for mobile
2017-11-16 12:58:59 +00:00
zzz
e9ff0c2882 i2psnark: Fix bad completion status after recheck (ticket #2046)
Only occurred if torrent had previously run, was previously incomplete,
and was now complete.
Also fixed changed-after-recheck logic to be precise.
2017-11-16 02:26:29 +00:00
zzz
e78081f33b Jetty 9.2.22
Remove patches for 9.2.21
2017-11-16 02:15:18 +00:00
eb04971d5a Fixed unicode character which fixes "ant javadoc". 2017-11-14 16:35:34 +00:00
zzz
43d496a93e Regenerate the Debian source po file with debconf-updatepo
i2p.templates file was changed in 986a85fec8c8fd8fd12a3748163fe80c4eb80b51 03/21/2016
but didn't do the po file at that time.
Dutch Debian translation update from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879135
2017-11-12 14:22:32 +00:00
zzz
8212d68c41 Summary Bar: Use Rate instead of instantaneous value for used memory 2017-11-09 17:39:14 +00:00
zzz
f060287df8 Summary Bar: Fix max memory value 2017-11-09 13:08:05 +00:00
zzz
1fbf188d61 debian updates 2017-11-08 22:09:53 +00:00
zzz
c1591983f9 langbox part 2 2017-11-07 01:09:51 +00:00
zzz
b726424a34 increase langbox 2017-11-06 23:57:49 +00:00
zzz
e4814a7d06 bump 2017-11-06 23:47:27 +00:00
zzz
2b8f14f709 Minor fixes and javadocs after review
Set 90 day default for event log
Format clock skew in summary bar
Constant time for password hash check
2017-11-06 23:45:57 +00:00
zzz
e281620063 0.9.32 2017-11-06 22:03:24 +00:00
zzz
7a6db4eda2 remove trailing newline 2017-11-06 22:00:12 +00:00
zzz
97ad909378 Update translations, add Indonesian
Add missing debian nb translation
2017-11-03 21:25:34 +00:00
zzz
718fff945e translated man page updates 2017-11-03 20:30:28 +00:00
zzz
622272758e translation updates from transifex 2017-11-03 20:02:40 +00:00
zzz
19b84aff9f GeoIP 2017-10-04 2017-11-03 19:07:13 +00:00
3f4daede8f switch to a single sourceSet. This fixes the last remaining problem with one-click import in eclipse 2017-11-03 18:23:49 +00:00
5d71fb0b44 Bump version 2017-11-03 07:58:58 +00:00
73ab3e834c propagate from branch 'i2p.i2p.str4d.ui' (head a782f0bce10ae47d857e9ebadf9b62b967f2c77e)
to branch 'i2p.i2p' (head 01ea5b14ea8f5e730d457eca5fd73aec05849902)
2017-11-03 06:28:12 +00:00
8901e3c34c Theme updates
Console:
- Fix scrolling latency issue light theme in Chrome/blink and older Firefox
  versions (ticket #2024)
- Various cosmetic tweaks, fixes and enhancements

I2PSnark:
- Reduce scrolling and hover latency
- Add sort direction hover indicators to .snarkTorrents header icons
  (dark/midnight)
- Various cosmetic tweaks, fixes and enhancements

Susimail/SusiDNS:
- Various cosmetic tweaks, fixes and enhancements
2017-11-03 06:22:27 +00:00
3b1a1fa027 Sidebar: limit event logs to last 7 days, to avoid page freezes 2017-11-03 02:49:24 +00:00
91977aabae /graphs:
- Reorganised config form
- Fixed "hide legends" option
2017-11-03 02:39:05 +00:00
49d970c5bc Fix compilation without bootstrap classpath set 2017-11-03 01:05:37 +00:00
e34ab0b7a8 Indentation 2017-11-03 00:53:36 +00:00
6cd560ff1b fix name 2017-11-03 00:33:09 +00:00
d3cdf3c7d7 switch to single source multiple jar approach 2017-11-03 00:11:51 +00:00
ab69fab3e4 add mini-streaming to testCompile dependencies as well 2017-11-02 20:23:32 +00:00
bf639478c7 add mockito to top level 2017-11-02 20:15:48 +00:00
69bd0571d4 add mockito 2017-11-02 19:57:21 +00:00
a3df4a399c eclipse users rejoice 2017-11-02 19:04:40 +00:00
a715d2b6d7 I2PSnark:
- Roll back target="_top" in config page to prevent embedded view from breaking
  out of iframe
- Add target="_blank" to relevant links to avoid display in iframe in embedded
  mode
- Enhance presentation of tracker links in TorrentInfo view
2017-11-02 10:11:14 +00:00
31a52d2acc Sidebar:
- Fix erratic display of sidebar graph
- Add id to memory bar so we can target it for Chrome/blink display issue
2017-11-02 10:09:10 +00:00
76629741f1 Add EdDSA test vectors to test resources 2017-10-31 12:50:30 +00:00
3eef793bda Add bootstrap classpath JARs if necessary 2017-10-31 08:35:04 +00:00
db17aa048d propagate from branch 'i2p.i2p' (head 01ea5b14ea8f5e730d457eca5fd73aec05849902)
to branch 'i2p.i2p.str4d.test2' (head 0cf1d8a3ab9cde1e942ea8043e64fcb2892a0872)
2017-10-31 08:25:05 +00:00
dc6ab70a69 I2PSnark: Use reflection to access ConfigUIHelper in standalone build
This fixes a "Class not found" error in some build systems
2017-10-31 08:24:34 +00:00
bf4cb419a1 Update i2psnark Gradle build script 2017-10-31 08:15:51 +00:00
a0b316e56d Update Jetty version after prop 2017-10-31 08:15:10 +00:00
62d34f51cb Addressbook has moved from war to jar 2017-10-31 08:14:21 +00:00
113f2c4d14 Gradle build script for JRobin 2017-10-31 07:16:07 +00:00
2ca658174a Set Java 7 build target for all projects 2017-10-31 07:14:39 +00:00
c78af828ac Add missing test dependency 2017-10-31 06:13:24 +00:00
041f5478a4 Use JCenter repository (which pulls from Maven Central) 2017-10-31 06:13:12 +00:00
72081a8647 Upgrade Gradle & wrapper to 4.3 2017-10-31 06:12:50 +00:00
7b221fa239 Update router version in build.gradle after prop 2017-10-31 04:32:08 +00:00
d95e730d94 propagate from branch 'i2p.i2p' (head 707603fcdd707b7521d213a82287d64520e18d37)
to branch 'i2p.i2p.str4d.test2' (head d44865c44b6a31ff2e3d5bf9a5e98a6f28d80e5b)
2017-10-31 04:29:54 +00:00
zzz
670e56ded2 poupdate 2017-10-25 16:46:36 +00:00
20a58a24bb Use correct shared bandwidth measure in TunnelRenderer 2017-10-25 10:18:18 +00:00
bf42cc1594 propagate from branch 'i2p.i2p.str4d.ui' (head 396ff40bde06334be0bd26509dc5e31b75f2c2f5)
to branch 'i2p.i2p' (head 9ba94555553a2d114c9c44022b0ff6e228972d33)
2017-10-25 10:00:12 +00:00
e44fb48ff0 Tag strings for translation 2017-10-25 09:49:48 +00:00
1c6ca5011d Theme updates
Console:
- light:
  - Lighten/tint buttons and dropdowns to better blend with reworked theme,
    vary text color for different button states
  - Increase vertical spacing for status/buttons in news section
  - Fix minor rendering issue with h1's (remove bottom border-radius)
  - Fix some mismatched heading coloring issues
  - Fix alignment issue on /configservice in Arabic/Chinese (ticket #2024)
  - Ensure spacing of sidebar elements is consistent in Chinese
- dark: Overhaul theme
- classic: Add fallback CSS to ensure browsers without CSS3 support can display
  icons on buttons (tested with Netsurf)

Proxy: Remove truncation of URLs in the error messages and handle with CSS to
  avoid UI breakage

I2PSnark
- Add button hoverstate for tracker details, torrent details and file icons
- light
  - Sync buttons in embedded mode with console theme
  - Fix non-functioning message log close icon
- dark: Overhaul theme and sync with console theme in embedded mode
- classic: refresh CSS

Susimail:
- Overhaul dark theme
- Sync theme to console theme by default, override if user sets theme
  (unless universal themeing is enabled)
2017-10-25 09:47:34 +00:00
cdd89df98d /tunnels:
- Indicate that no participating tunnels will be built when shared bw is too low
- Replace <a name> with id attribute for anchor links
2017-10-25 09:47:00 +00:00
ac833ec474 /help:
- Update sidebar help section (en)
- Remove redundant CSS class from all help section files (li.tidylist)
2017-10-25 09:39:09 +00:00
da9c06e663 /configui: Use larger flags for language selection 2017-10-25 09:38:12 +00:00
df95e29f4e I2PSnark UI bugfixes
- Fix broken collapsible panels issue for browsers that don't support the
  feature by conditionally loading override CSS to expand panels by default
  and disable hover/active states for panel headings (tickets #2002, #2026)
- Add UI option to configuration section to enable collapsible panels, and
  disable the option if a non-compliant browser is detected
- Fix multiple instances of snark refreshing to the homepage (ticket #2028)
  (patch supplied by mindless)
- Tentative fix for caching of images so ajax refresh doesn't reload all
  image resources
- Standardize 'Save Configuration' action to return to top of the page
  (so we can see message log entry)
2017-10-25 09:35:51 +00:00
47d354711e /configui: Add option to embed Susimail and I2PSnark in console 2017-10-25 09:33:20 +00:00
b54a5c592e SusiDNS:
- Reinstate filter removal on addressbook navigation links (ticket #1996)
- Reduce vertical padding for filter buttons section
- Migrate search section to div and reposition page elements to better
  integrate with host list and minimize whitespace
2017-10-25 09:32:38 +00:00
5ecae1a951 I2PTunnel: Add hostname / destination (b32) info to server section on index page
For parity with client tunnels section
2017-10-25 09:32:07 +00:00
0e5b46e7d8 Console sidebar improvements
Sidebar:
- Adjust vertical spacing of general section
- Rename 'General' section to 'Router Info' and move ident info to h3 tooltip
  (ticket #1996)
- Replace 'Short Router Info' with a new 'Advanced Router Info' section in
  default advanced sidebar (adds memory usage and clock skew)
- Add optional embedded bandwidth graph (experimental)
- Add optional memory usage bar
- Add optional Advanced Peers section (adds failing and banned peers)
- Add Help link to 'I2P Internals' section
- Add help page anchored links and troubleshooting to 'Help & FAQ' section
- Add download progress bar for router and plugin updates
- Add 'Advanced Minimal' sidebar configuration
- Add Jobs and Events links to Advanced section
- Add additional reachability states for clockskew and vmcomm (with icons)

Homepage: Add 'Customize Sidebar' link to signpost the feature now that there
  are more optional sections available (ticket #1996)
2017-10-25 09:31:13 +00:00
97267a4d5c /graphs:
- Add option to hide legends
- Adjust size of up/down bw graph to match other graphs (ticket #1996)
- Modify image font color to better blend with themes
- Tweak spacing of elements for non-Debian installs
2017-10-25 09:29:49 +00:00
zzz
9ae9abd888 NTCP: Convert configured NTCP hostname to IP address before publishing (proposal #141) 2017-10-24 23:18:22 +00:00
zzz
3f4df2317a UDP: Reduce log level on IP change (ticket #2053) 2017-10-21 13:57:43 +00:00
zzz
c7a3e271db Console: Validate host header (thx Kevin Froman) 2017-10-11 16:26:37 +00:00
zzz
37e0b2ceb1 Router: Honor IPv6 setting when converting configured hostnames
to IP addresses (proposal #141)
2017-10-11 16:23:13 +00:00
zzz
e3751b36ec checklist update 2017-10-11 16:21:46 +00:00
zzz
cd21cda42a BuildTime update 2017-10-11 16:21:33 +00:00
zzz
5fb6b2c79a Router: Convert configured hostnames to IP addresses
before publishing (proposal #141)
NTCP-only config still to do
2017-10-04 17:33:55 +00:00
zzz
c4a932b187 missing paren 2017-10-04 15:54:48 +00:00
zzz
30b9f063d3 Debian: Backport fixes from 0.9.30-4 package (ticket #2027)
and add buster files

* debian/NEWS: remove
* debian/README.Debian: update
* debian/compat: set compat level to 9.
* debian/control: added ${misc:Depends} to i2p & libjbigi-jni's Dep.
* debian/control: added bash-completion build dep
* debian/control: remove version on lsb-base dep
* debian/rules: fixed a typo (override_dh_dhlibdeps -> override_dh_shlibdeps).
* debian/rules: remove apps/susidns/src/lib/standard.jar symlink on clean.
* debian/i2p.postinst: Fixed a typo (missing ")" in /etc/default/i2p).
2017-09-29 18:27:15 +00:00
zzz
de487411b6 Router: Don't lookup hostnames in addresses (proposal #141) 2017-09-14 15:04:16 +00:00
bcd7b7e6ca Update history after prop 2017-09-12 10:08:32 +00:00
8f4f7b7b53 propagate from branch 'i2p.i2p.str4d.bench' (head 61fcef0f1004c55f7b15ba3982173050a952a08c)
to branch 'i2p.i2p' (head 8374318b8b49df7f47dfa0d2653413ceccab9b52)


Core: New benchmarking framework based on JMH (ticket #2036)
2017-09-12 10:08:09 +00:00
10cfa6eeab Add NativeBigInteger benchmarks 2017-09-08 16:25:38 +00:00
9e2bd4aacd Fix bench.jarUpToDate 2017-09-08 11:28:19 +00:00
1a493094bb Add usage info to benchmark script 2017-09-08 11:24:36 +00:00
3d24cc9e92 Move benchmarks into core 2017-09-08 11:16:40 +00:00
7346ce1c89 Enable benchmarks.sh to run with everything in one directory 2017-09-08 10:49:05 +00:00
d5e97d2392 Clean up benchmarks dir 2017-09-08 10:28:11 +00:00
zzz
2cd9b34427 Data: Prohibit excess key data in certs (ticket #2035) 2017-09-02 12:21:55 +00:00
zzz
94738c1396 new opentrackers 2017-09-02 12:18:01 +00:00
zzz
8d89d1eedb new reseed 2017-09-02 12:15:55 +00:00
zzz
8fd354eea6 Startup: Add property to disable output redirect (ticket #2037) 2017-09-02 12:12:08 +00:00
f611f4c965 Minor cosmetic issues in the default console and snark themes 2017-08-26 21:41:24 +00:00
40642c805c Remove old benchmarks 2017-08-26 20:46:33 +00:00
2bb0ca97d6 Use I2PAppContext for obtaining instances of AES and SHA256
This gives a more realistic benchmark of how the rest of the I2P codebase
experiences these calls.
2017-08-26 20:41:12 +00:00
d828ed4342 Shorten the benchmark names 2017-08-26 20:08:17 +00:00
a06c3fe043 Add a script for running the benchmarks with or without jbigi 2017-08-26 19:17:09 +00:00
zzz
d77cd04061 Transport: More invalid ports 2017-08-22 12:42:14 +00:00
zzz
1efc1677a3 i2ptunnel: Check for RFC 7239 Forwarded header 2017-08-22 12:39:12 +00:00
zzz
2071cf8596 more Skylakes 2017-08-22 12:36:23 +00:00
zzz
51d4827657 i2psnark: finals for Message class
recognize BiglyBT
cleanups
2017-08-22 12:34:38 +00:00
6615586a4e Add benchmarks for ElGamal 2017-08-20 21:13:57 +00:00
zzz
3d385228f0 findbugs all over 2017-08-09 21:24:02 +00:00
zzz
24414845d0 Package changelogs
Fix extra chars in patch 1
Fix javadoc causing build error on Trusty
Deb build doc updates
2017-08-09 19:53:41 +00:00
zzz
2c76b87fba 0.9.31 2017-08-06 21:45:05 +00:00
zzz
bbe3a71d2c bump for review 2017-07-31 21:05:41 +00:00
zzz
9d1097b467 merge of '11dcbebf6657486cbeae1d8bfe43ede3f4a5b314'
and '8e065cf86f719138e323815c38f249ed56941327'
2017-07-31 20:51:17 +00:00
zzz
8beb75be50 refresh deb patch 2017-07-31 20:49:50 +00:00
80c55c150f Console: fix router family page form (ticket #2022) 2017-07-31 20:43:29 +00:00
82806099a7 Console theme tweaks:
- Use plugin icon for unidentified sidebar plugins and ensure placement and
  coloring is consistent
- Mobile:
  - Fix misaligned elements in light theme
  - Enhance 'Summary Bar' link
2017-07-31 19:30:07 +00:00
zzz
903f46f3a8 man page translation updates 2017-07-31 19:02:24 +00:00
zzz
d99a699839 translation updates 2017-07-31 18:55:06 +00:00
9f15ae6e56 Add a0.png to update files 2017-07-30 12:13:03 +00:00
26bc83c51b Console theme fixes
- light theme:
  - Fix spacing issue with banned peers list 
  - Tweak font sizes for Arabic
- Shrink icons in sidepanel network status span
- Add single graph view buttons to classic theme
- Better separation of graphing controls in single graph view
- Enhance presentation of /oldconsole and /proof
2017-07-30 12:05:04 +00:00
5dd5a99de5 Theme fixes
Console:
- Enhance presentation of show/hide news links on home page
- Fix some issues with Arabic CSS (light/dark)
- Further tweaks to graphs display and fixes for borderless single graphs
  in midnight/dark themes
- Fix minor coloring issues with light theme post-rework
- Misc theme fixes

I2PSnark:
- Move </center> tag in fileinfo view that prevented sticky navbar from working
- ubergine:
  - Alternative panel tabs for embedded view
  - Tighten .snarkTorrents thead/tfoot spacing
  - Tweak embedded navbar coloring
  - Reduce height of download bars
2017-07-28 18:00:53 +00:00
ac75327a78 Refactor README.md 2017-07-28 00:45:08 +00:00
2f48af517e Bump -21-rc 2017-07-27 02:16:06 +00:00
e284675e5a UI fixes
'light' theme (console & apps):
- Rework to reduce contrast (ticket #1996)
- Add custom radio/checkbox icons for Chrome/Blink

Console:
- Fix reseed failure notice overlap when "check connection" message shown
- Enhance presentation of console "error 500" messages
- Cosmetic tweaks to welcome page presentation, arabic welcome page tidyup
- Migrate .smallhead th class to tr to simplify markup
- Sidebar:
  - Remove "Congestion" from default sidebar (still present in default
    advanced sidebar)
  - Fix label wrapping issue with translations
  - Migrate sidepanel news section to tables to permit better control over
    wrapping and placement (ticket #1996)
  - Move news item dates to tooltips to lessen chance of headlines wrapping
    and cleanup presentation
  - Increase maximum length of local tunnel links in the sidebar (and handle
    overflow with CSS) to minimize chance of default tunnels display
    truncating in translations
  - Add the power off icon to sidebar restart button on hover to clarify
    button function (ticket #1996)
- /configadvanced: Move floodfill status to row above to remove unnecessary
  whitespace and cleanup UI
- /debug: Add debug icon to h2 headers to aid navigation
- /graphs: Improve presentation of graph images by removing rendered border
  and setting background color to better integrate with themes
- /home: Widen div.app to lessen chance of truncation (classic/midnight)
- /jars:
  - Minimize table overflow with conditional scaling of content
  - One-click select for revision, sha256 & unsigned mods
- /logs:
  - Reduce line/entry spacing for router and critical logs (#ticket 1996)
  - Multi-column view for changelog at >=1400px to address horizontal
    whitespace issue
- /netdb:
  - Multi-column display of Leases in LeaseSet tables
  - Better alignment of Lease elements, iconify gateway
  - Placeholder flag for unknown/unresolved peers for [flag+dest] combos to
    improve presentation / fix deadspace issue
- Chinese:
  - Fix alignment of table contents in /tunnels (classic)
  - Fix sidebar content display width (midnight)
  - Cosmetic fixes (all themes)

I2PTunnel:
- Ensure message log font scales proportionately
- Fix overflow issue with dropdowns in Chrome/blink (dark/midnight)

SusiDNS
- Reduce width of filter buttons to lessen chance of wrapping (ticket #1996)
- Add non-selectable items to improve copy/paste of hosts in address books
- Make dest addresses in host list only display scrollbar on focus to reduce
  screen clutter
- Hide broken imagegen images

SusiMail: Enhance presentation of 'postman' links on login panel
2017-07-27 02:14:34 +00:00
674f523cba Add JavaScript snippet to reset dest address scroll position onblur
Fixes Chrome/Blink disappearing text bugs in i2ptunnel and susidns.
2017-07-27 01:23:06 +00:00
2bfe27d217 /jars:
- JARs, WARs & individual plugins separated with headers
- Filenames stripped of path info (path indicated on headers and tooltips)
- Add container divs and styling markup
2017-07-27 00:42:46 +00:00
fe2387e4f0 Missing from previous commit 2017-07-27 00:02:25 +00:00
30eb089623 /debug:
- Add container divs and styling markup
- Add top navigation menu
2017-07-26 23:14:30 +00:00
ee1112cca7 SusiMail: Dismiss notifications on click 2017-07-26 23:04:29 +00:00
a39fb3d7c2 I2PSnark:
- Mitigate truncation of ratings dropdown in comments section (translations)
- light: Reduce contrast of display text
- light/classic: Increase contrast of download bars
- Create Torrent trackers table: Replace "Tracker URL" with "Tracker Type"
  (ticket #1996)
- Add a persistent warning to the messagelog when JavaScript is disabled to
  indicate potential loss of form data upon refresh (ticket #1996)
- Migrate "view or change bandwidth" to [Configure] tooltip to standardize
  configuration links, allow for more space for option labels and lessen
  chance of option labels wrapping in translations
2017-07-26 22:03:08 +00:00
0feb16d57b history.txt: Tweak my older entries to fit 80 character per line limit
This ensures the routerconsole changelog multi-column view doesn't wrap
unnecessarily.
2017-07-26 20:46:54 +00:00
b8f5c956e6 Console: Move JRobin default color and font changes into SummaryRenderer
This ensures these changes are applied to Debian installs, where we get JRobin
from the package manager instead of our bundled source.

The padding and grid stroke changes to RrdGraphConstants have not been reverted,
because there is no API provided to alter those values. This will result in a
minor difference between Debian and non-Debian graphs, and if a user shares
those graphs, it will reveal the fact that they have installed the Debian
package. This is acceptable, given that the graphs themselves inherently reveal
significantly more private information than that.
2017-07-25 10:13:36 +00:00
f9b8a5ec11 JavaDoc fix 2017-07-25 03:43:49 +00:00
32968af39c Add benchmarks for AES and SHA-256 2017-07-25 03:43:04 +00:00
49ed17032c Add a benchmarks subproject 2017-07-25 03:41:55 +00:00
zzz
70393fd2d9 Console: Fixup /imagegen text 2017-07-19 14:43:51 +00:00
zzz
d4a139f215 Console: Fix compile error with Jetty 9.2.22 (ticket #2019) 2017-07-15 13:57:40 +00:00
zzz
0b85bffeff Crypto: Preserve CRT parameters for RSA private keys (ticket #2005) 2017-07-13 15:53:00 +00:00
zzz
5ddb4edd14 fixups after review 2017-07-13 15:46:37 +00:00
d2da262374 Theme fixes
Console:
- /tunnels: Fix display issue with inbound/outbound glyph display in table
  header (classic/light)
- light: Prevent routerlogs from causing horizontal page overflow 

I2PSnark:
- Reduce size of screenlog font at 1400-1600px viewport width to lessen
  chance of text-wrapping (ticket #1996)
- classic: Fix a linespacing issue in the config section (options:) that only
  triggers in foreign languages that force the options td to wrap
2017-07-11 03:35:49 +00:00
3c19bb4ec5 Console: Increase displayed changelog lines to show entire release cycle 2017-07-11 03:31:55 +00:00
123c0de700 Correct some history entries 2017-07-11 03:18:11 +00:00
19fcb9e5b9 Comments 2017-07-11 03:08:52 +00:00
281534b0b0 Fix HTML tags across non-default conditional branches 2017-07-11 02:15:17 +00:00
4fff74793b I2PSnark: Fix I2PSnarkUtil.getCommentsName() to match its JavaDoc 2017-07-11 02:13:32 +00:00
zzz
7d62c43209 bump -18-rc 2017-07-08 19:59:01 +00:00
zzz
00388675f1 new translations 2017-07-08 16:00:51 +00:00
zzz
4ddca951f2 translations update 2017-07-08 15:15:28 +00:00
zzz
2abaa4a39b fix html errors in help files 2017-07-08 13:26:29 +00:00
zzz
402a2af898 GeoIP 2017-07-04, blocklist update 2017-07-08 13:14:17 +00:00
4e8ed909e3 Bump -17-rc 2017-07-07 21:25:34 +00:00
5c670fc57f Show advanced sidebar links by default in advanced mode (ticket #1996) 2017-07-07 21:24:23 +00:00
e83d31f749 /logs: Correctly format unavailable crypto warnings (ticket #1996) 2017-07-07 18:40:10 +00:00
d8831151fe Console: Fix log file size config bug on /configlogging bug (ticket #1996) 2017-07-07 17:25:25 +00:00
87d6c302e6 Minor theme tweaks:
- Console:
  - Cosmetic changes to new firewalled network status in sidebar
  - Arabic: ensure the destinations correctly align on /tunnels
- I2PSnark: Ensure .snarkNoneLoaded background color remains constant on
  mouseover in dark theme
2017-07-02 14:17:59 +00:00
afec920bee Bump -16 2017-07-02 03:56:32 +00:00
873b0b0f19 SusiDNS: Default to the console theme 2017-07-02 03:42:35 +00:00
96c73e7fcb i2psnark: ubergine fix for hidpi 2017-07-02 03:29:03 +00:00
56f6a68ef3 Console: Show correct icon for "Firewalled" network status 2017-07-02 03:25:36 +00:00
7cd7f01db9 Console light theme: prevent identicon breaking out of its container 2017-07-02 03:07:54 +00:00
1650cbe8de Bump -15 2017-07-02 01:42:29 +00:00
dc46f00a35 merge of '95d429bc46db23b3e3181caf4e622b763cff51eb'
and 'ca23007c18cf5894a1b6b4efa92207aa025473d2'
2017-07-02 01:42:05 +00:00
d2edce845a I2PSnark:
- Standalone:
  - Better target the per-theme resources
  - List all available themes in config section
- Themes: tidyups & further optimizations to reduce lag
2017-07-01 19:55:19 +00:00
bd84ba2d5c SusiMail: set button widths 2017-07-01 19:47:15 +00:00
bd74b22b02 Console:
- /netdb:
  - All Routers/Leasesets/Sybil sections:
    - Each transport instance on own line
    - Better presentation of address characteristics
    - Place flag in table header
  - Container div for leasesets to allow 2 column display at wider viewport width
  - Increased spacing of lease information in leaseset tables
  - Add div for "not initialized" message
  - Reorganize content display in sybil database to reduce horizontal whitespace:
    - Conditional 2-column display of sybil families
    - Sybil router characteristics & threatpoints presented in multi-column view
    - Added empty (n/a) fields to maintain visual consistency in column view
- /tunnels: ensure our tunnel tables display correctly in Arabic
2017-07-01 19:44:02 +00:00
zzz
c768b8f8d7 DNS (ticket #1998):
- Data: Cache hostname lookups in RouterAddress
- Job Queue: Make search jobs droppable
- Router: Increase JVM DNS cache time
- Util: Add negative DNS lookup cache, increase cache size
2017-07-01 19:41:16 +00:00
56c0fbeebe Tag "local" strings on /tunnels (tagged for translation elsewhere pre-freeze) 2017-07-01 18:59:10 +00:00
5bc9d0af52 I2PSnark: Fix unclosed <label> 2017-07-01 08:08:38 +00:00
12cbbfbac7 Bump -13 2017-06-19 13:47:55 +00:00
4aa4ff738a Console:
- Add untagged strings for /tunnels tooltips and local tunnel indicator (to
  be tagged for translation post .31 release)
- classic: reduce color contrast of main display font
- classic/dark/midnight: alignment on /peers and /tunnels
- /tunnels:
  - Add bandwidth tiers definitions
  - Indicator for local tunnels
- /profiles:
  - Split capabilities and version
  - Minimize wrapping at narrow viewport width
  - Iconify view profile link
  - Add "OK" status indication for functional peers
- /peers: merge Dir and CWND rows in definitions table
- /events: when no events found, place result in table
- All themes: marginally increased width of sidebar to better accommodate
  extra long strings
- Chinese: ensure buttons do not deviate in height (ticket #1996)
- Arabic: fix alignment issues on /configui; presentational enhancements
- Misc: remove erroneous tags
2017-06-19 13:46:40 +00:00
3d535a2282 I2PSnark:
- Disable JavaScript td:onclick (handled by css)
- Fix minimode bug in vanilla/ubergine
- Minimode for dark/classic
- ubergine:
  - Further optimizations to reduce lag/cpu load
  - New hidpi details.png to bypass mix-blend mode in .snarkTorrents
- Usability:
  - Tab navigation now works for toggle panels
  - Touch target for configure button now extends entire length
- All themes: cleanups and optimizations
2017-06-19 13:00:50 +00:00
36030ae180 i2ptunnel: consistent tooltips and Destinations for editClient and editServer 2017-06-19 12:52:56 +00:00
e21479a164 Cleanup & formatting tidyups for welcome page readmes, remove unneeded classes 2017-06-19 11:29:29 +00:00
zzz
32efa2e509 DNS (ticket #1998):
- Data: Cache hostname lookups in RouterAddress
- Job Queue: Make search jobs droppable
- Router: Increase JVM DNS cache time
- Util: Add negative DNS lookup cache, increase cache size
2017-06-15 15:48:22 +00:00
8216b68ee1 bump -11 2017-06-12 13:11:53 +00:00
3e4318cca6 /netdb: Fix UI bug with unpublished LeaseSets 2017-06-12 13:04:27 +00:00
cf7a6041b3 UI updates
Console:
- /logs: fixed environment/running info table resize on focus (ticket #1996)
- Scale theme/language divs so we don't truncate language display
- Arabic (light) adjust font size for sidebar elements
- Sidebar network status display (ticket #1996)
- Usability:
  - Enhance presentation of tables on /peers (improve header/column alignment,
    center to separator for multi-value rows)
  - Enhance presentation of tables on /tunnels (reliable alignment of mixed
    content in rows, more prominence to bandwidth tiers)

I2PSnark:
- Usability: add tabindex="0" to screenlog
- Update navbar link classes to allow easier targetting of button type 
- Remove disabled cursor for known tracker radio icons (ticket #1996)
- Fix alignment issue for comments (ticket #1996)
- ubergine: further optimize theme to reduce scroll lag (ticket #1996)
- ubergine/vanilla:
  - Add mini-mode at <=800px
  - Small size reduction to navbar links (ticket #1996)

Imagegen:
- Theme tweaks
2017-06-12 12:45:51 +00:00
zzz
25c709afe2 Reseed updates 2017-06-11 16:30:12 +00:00
zzz
58b38b283f Remove forum.i2p links 2017-06-11 16:26:25 +00:00
zzz
931d7a95bd poupdate source 2017-06-05 23:08:28 +00:00
d771cc6e37 history 2017-06-05 07:58:41 +00:00
e21a57a1fc Switch light theme to the same top-nav style as the other themes 2017-06-05 07:58:04 +00:00
1ede0c8b2f Boost letter spacing and margins slightly 2017-06-05 07:29:53 +00:00
57f3b89eed Fix alignment of language flags 2017-06-05 07:14:15 +00:00
9eedb5c732 Add state classes to network status messages in sidebar 2017-06-05 00:42:54 +00:00
4964b1165f Hardcode language names in their native language for usability 2017-06-04 10:26:01 +00:00
bd1ccba960 SusiDNS: Update SVG image to use grouped objects for styling and hotlinks 2017-06-04 05:10:26 +00:00
3334d9f737 Fix regression in snark CSS 2017-06-04 05:04:02 +00:00
135920a9bb Updated history 2017-06-04 05:02:52 +00:00
c0742b5cf3 Remove capitalization of SusiDNS config options in light theme 2017-06-04 05:00:22 +00:00
163023ecc2 String tweaks 2017-06-04 04:59:46 +00:00
791bc9a84f String de-duplication 2017-06-04 04:59:26 +00:00
c91f942194 /netdb: Fix bug rendering the "Add to addressbook" link for local Destinations 2017-06-04 01:01:09 +00:00
66385c06ae Minor theme tweaks:
- Use theme-consistent colours for graphs (dark + midnight)
- Add slight visual feedback when clicking table header and i2psnark control
  buttons
- tr highlighting in i2ptunnel to match other info-dense tables
2017-06-04 00:43:16 +00:00
6fe55529d6 i2psnark: Fix bug in status tooltips 2017-06-04 00:33:29 +00:00
zzz
4c6af7cdca bump -10 2017-06-03 17:24:06 +00:00
5e8730a616 Console:
- (light, dark, midnight) Fix minor alignment issues with Arabic CSS
- JRobin (graphs):
  - Fix font size issue for non-title text on graphs
  - Optimise layout (tweaked padding, legend box size etc)
  - Tweak graph lines (now dotted, slightly less opaque)
2017-06-03 14:11:33 +00:00
6acca28969 i2psnark:
- (ubergine) Speed up tr:hover events by optimizing css (remove latency)
- (all) Remove fade activation delay for download bars, speed up fade-in /
  fade-out
- Fix i2psnark link in navbar overflow issue in Arabic (ubergine/vanilla)
- (ubergine) Change default font for screenlog from Noto Mono to Droid Sans Mono
  to soften text/slightly reduce text size
2017-06-03 14:10:54 +00:00
017f66a342 i2ptunnel:
- Remove redundant labels and spans for keyaccess
- Edit Server:
  - Shift Local Destination / Private Key file to share table row
    - Reduces spread of Local Destination textarea
  - Move "Use SSL to connect to target" to Target Port column
- Add translation tagging for title tags
- Remove redundant title tags and provide enhanced strings for features that
  benefit from clarification
- Move title tags to <label> where applicable
- Fixed Cancel button on registration so it now jumps back to the list page
- textareas for registration page and local destination on edit server page
  changed to divs
  - Scrollbars hidden until mouseover, 1 click to select content
  - Responsive width, tabindex="0"
    - Fixes text breaking out of textarea bounding box issue in chrome/blink
- Fix overflow issue on select dropdowns (edit server/client -> tunnel options)
  in Chrome / Blink
- More generous vertical padding for th (responsive)
- Larger h2/h3s (responsive)
- Increase spacing between panels in iframe mode
2017-06-03 14:10:08 +00:00
ff400c9448 UI feedback
Console:
- Increase contrast of table rows on profile/tunnels/peers tables
- Changed pink font to magenta in /logs to increase legibility
- Soften H3 headings in sidebar
- Single click to select I2P Version and Running Environment table text, with
  table:hover color change and text cursor to better reflect selection
  - Modify text above to indicate what exactly needs to be included in logs
- Reduce size of monospace dests in peers/profiles/tunnels, add additional
  spacing (responsive)
- Fix resizing of sidebar reseed button
- De-emphasise siderbar app icons with background-blend-mode: luminosity
- Change sidebar snark icon to match homepage icon
- Bump div.main text color from #222 to #333 (reduce contrast)

i2ptunnel: Increase vertical spacing of H2/H3's

SusiDNS: Change address helper icon to add book icon

i2psnark:
- Remove font-adjust-size (ubergine/vanilla)
  - Was probably causing the navbar links to display too large on some setups
- Add extra spacing to screenlogger bullets (ubergine)
2017-06-03 14:09:17 +00:00
b28cc94a4a Compress some of the larger image files
Space savings of 40-60%. All tested and passed for perceptual differences
(non-noticeable).
2017-06-03 14:08:17 +00:00
4da95af45a i2psnark:
- Reorder .snarkCommentInfo sections so my rating / average rating is located
  directly above posted comments/ratings in .snarkComments
  - Allows us to visually join the two tables and provide comment/rating
    continuity

- If author name for comments is configured, display it in .snarkCommentInfo
  table header

- Full status tooltips for status icons in .snarkTorrents
  - This ensures we still retain full info in mini-mode in light/midnight themes
    in addition to providing more descriptive text (for new users)

- Rework td/th classes for .snarkTorrents so each column (both th + td) now
  belongs to a given class
  - Removes the need to overuse nth-child qualifiers to target columns
  - Allows easier column-alignment/spacing/widths

- Stop .snarkTorrentStatus class being incorrectly applied to .peerinfo columns

- Spans for DHT peers / Dest in #totals
  - Ensures they don't break on narrower screens in Russian etc.

- Span for .snarkTorrentInfo info hash
  - So we can highlight and select with a single click

- Delete icon for delete comments td

- Overhaul .snarkTorrents column widths
  - Provides more predictable scaling experience, tidier layout

- CSS tidyups; deduplicate .snarkTorrents classes and move to their own
  commented section
2017-06-03 14:03:56 +00:00
a9bf1e2969 SusiDNS:
- Rework SVG image
  - Now features interactive feedback when mouseover objects and hotlinks
- Update fallback images for en and fr
- Update overview text
- added tabindex="0" to destination addresses, highlighted on :focus
2017-06-03 14:01:33 +00:00
d50c12dc7d Console:
- Add spans to /stats page to avoid summary info breaking mid-sentence, and to
  aid presentation
- Adjust /stats CSS so information isn't over-dense
- Set graph size for generated graphs on /stats to 600x200
- Fix netdb leaseset tables
  - Ensure we only iconify add to addressbook links and not b32 dests
- Individual icons for I2PSnark and I2P Plugins on /home
- Add div to upnpstatus on peers to comply with layout
- Fix various unclosed/erroneous tags
2017-06-03 13:59:20 +00:00
zzz
5361571c15 Crypto: Fix AES NPE on 4-core RPi 2nd try (ticket #1989) 2017-05-25 18:05:45 +00:00
zzz
13d9322d81 Debian: Update notes on dependencies 2017-05-24 12:49:55 +00:00
zzz
d35f260f15 Console: Don't show add-to-addressbook link for local unpublished clients 2017-05-24 12:47:24 +00:00
zzz
7338b79ef1 GeoIP: Fix NPE in Maxmind lookup (thx parg!) 2017-05-24 12:40:45 +00:00
edda87d53e Snark theme updates, hidpi rating images 2017-05-22 11:49:23 +00:00
zzz
de0a5c7094 i2psnark: Fix bencoded scrape response for zzzot (ticket #1994)
requires zzzot 0.16.0
2017-05-21 18:42:42 +00:00
008f421377 Fix a minor alignment issue on the address helper page 2017-05-21 03:01:59 +00:00
6821e13820 Add images for theme updates 2017-05-21 03:01:17 +00:00
fa73b481e6 i2psnark: Integrate ratings and comments into themes 2017-05-21 02:59:50 +00:00
63581d32de SusiMail light theme tweaks 2017-05-20 08:10:28 +00:00
0db637ed5a Clarify choices on address helper save page (ticket #1940) 2017-05-20 08:09:30 +00:00
62b3e19217 Add router.hideFloodfillParticipant to advanced settings help 2017-05-20 07:26:47 +00:00
2b82312b77 I2PSnark changes:
- Make DHT debug section collapsible
- Tooltips for downloading/finished torrents
- Download bars for torrents, torrent parts and peer downloads
- Friendlier date format (with completed: <date> tooltip for finished torrents)
2017-05-20 07:26:19 +00:00
zzz
81b8b18581 i2psnark: Add ut_comment UI and per-torrent configuration
Some UI cleanup still to do
2017-05-19 21:33:30 +00:00
zzz
769cb40b79 missed checkin 2017-05-19 19:25:18 +00:00
zzz
81026c2871 build fix 2017-05-19 19:23:47 +00:00
zzz
dc33ad101a Console: Move /peers page rendering from router to console (ticket #1879)
except UPnP still to do
compressed size: appx. 25 KB
2017-05-19 19:20:11 +00:00
b7baeddc7c Bump to -5 2017-05-18 13:52:35 +00:00
e6b968e48c History for prop 2017-05-18 13:49:56 +00:00
96bdfb3a63 propagate from branch 'i2p.i2p' (head 247ff5f9bcb20e4aa3ad4aa8702425c315d1d77b)
to branch 'i2p.i2p.str4d.ui' (head d4b5b96ff60f7d8b746c8fc5f0f9c533778a9eda)
2017-05-18 12:54:13 +00:00
7002c683ab Minor i2psnark style fixes 2017-05-18 12:52:10 +00:00
ae7c2f6e5f Use disabled drop-down in universal theming mode instead of plain text 2017-05-18 12:51:19 +00:00
zzz
b8c97a1d7a AES: More cleanups and javadocs 2017-05-17 15:54:37 +00:00
zzz
a5551c1be3 Debian: More fixes for lintian 2017-05-17 15:51:34 +00:00
zzz
7d129215cf Debian: Put the i2prouter-nowrapper man page with the binary 2017-05-17 13:31:07 +00:00
zzz
777d2fc0f0 javadoc fix 2017-05-17 13:26:39 +00:00
zzz
7f45e97335 Reseed: Remove expired SSL cert 2017-05-17 12:16:34 +00:00
feee22e389 Fix escaping of non-breaking space in time string 2017-05-15 04:53:58 +00:00
208372ed9e Prevent i2psnark DHT debug info breaking out of the table 2017-05-15 04:05:44 +00:00
6fd66c9396 Cleanups:
- Minor theme updates/fixes
- Added #jumplist div to proxy error to make styling easier
- "tabindex -1"s to ignore disabled radios in snark/tracker config
- Updates to eepsite css files.
2017-05-15 03:18:34 +00:00
e8c28ad42c Add tooltips to shutdown/restart buttons 2017-05-14 12:28:27 +00:00
5caefb5ea9 I2PSnark tweaks:
- Replace theme selector with a message when universal theming is enabled
- Move DHT debug info into its own <tr>
2017-05-14 12:26:17 +00:00
zzz
ac788d973f Router: New method to get bandwidth class, for efficiency 2017-05-14 12:16:25 +00:00
zzz
e973185be1 Crypto: Initialize array earlier (ticket #1989) 2017-05-14 11:57:48 +00:00
zzz
040af114e1 i2psnark: Fix HTML double-escape (ticket #1992) 2017-05-14 11:51:08 +00:00
6f60d642af propagate from branch 'i2p.i2p' (head 098e31ae6c0969990791077264bfd58d8ac3680c)
to branch 'i2p.i2p.str4d.ui' (head 0cfd439957ebce6c3a71f5b3e11f4e873388b03c)
2017-05-14 06:53:02 +00:00
8a5967f592 Additional <label>s 2017-05-14 06:35:23 +00:00
a929b5c683 Theme updates:
- Section title images in the tunnel manager + presentational tweaks
  - Separation of server/client tunnels for consistency in iframed/separate view
- More responsive layout tweaks specifically for narrow viewports
  - Lessens UI breakage, particularly for languages with long translated strings
    (ru, de etc)
- Susimail light theme enhancements
- Incremental theme tweaks including Arabic (light/dark) & Chinese
  (classic/dark/midnight)
- Fixed placement of "Welcome to I2P" h2 on /home for new users
- Fixed conflicting .home#home div on homepage (now #homepanel)
- Fixed double select dropdown icon in Internet Explorer/MS Edge
- Addressed minor rendering issues in IE 11 and MS Edge
2017-05-14 06:26:16 +00:00
e32d4b15e8 String tweaks 2017-05-14 05:41:21 +00:00
67b3c46758 Shortened button text on /configfamily
Helps to avoid overlong strings breaking layout in translation (specifically
Russian). The section subtitle already indicates full scope of action.
2017-05-14 05:40:45 +00:00
7de815bd90 CSS sort buttons on /peers
- New icons to avoid conflation of tunnel direction and sort direction
- Active sort columnn now indicated and focused button highlighted
2017-05-14 05:39:51 +00:00
0aae97162e Use new tabs for a couple of links 2017-05-14 05:38:56 +00:00
ac31a1319b /news updates:
- Updated presentation of news status & view/hide news text at the bottom of
  the homepage news section, so it behaves sensibly when wrapping (for German,
  Russian etc)
- <span>s for news title dates and author names
- Iconified author name for news entries
2017-05-14 05:38:31 +00:00
e453ea48e1 /help changes:
- Added topnav
- Added mini-FAQ
  - Linked to subscriptions section from SusiDNS subscriptions page
- Layout fixes for translated pages
- Reformatted help-legal.jsi, removed/replaced dead links
2017-05-14 05:37:35 +00:00
8f04aa70cb /home changes:
- Update some app icons
- Rationalise the markup
- Add tabindex ="-1" to icon links
  - This means they are skipped when using tab to navigate in the browser
2017-05-14 05:36:40 +00:00
d7d13d1a4f Whitespace 2017-05-14 05:30:42 +00:00
6b056ce6e0 Backend HTML changes:
- Labels for radio/checkbox icons to increase surface area for clicks, improving
  UI for touchscreen use
- Standardized configuration labels: bold text for leading options, standard
  weight for trailing descriptions
- Remove some hard-coded table layouts
- Additional ids and classes for theming
2017-05-14 05:30:13 +00:00
zzz
b340f4a17c i2psnark: Better handling of read-only i2psnark dir (ticket #1990)
Prevent add/create/remove/delete
More handling of RuntimeException via Snark.fatal() in SnarkManager
2017-05-12 17:16:25 +00:00
zzz
93cb2a0513 Debian: Fix apparmor profile (ticket #1986) 2017-05-10 16:53:36 +00:00
zzz
610af51e95 show suggested paths 2017-05-10 14:05:02 +00:00
zzz
efd7d651cc AES: Cleanups (ticket #1989) 2017-05-10 14:00:59 +00:00
zzz
d139892ae0 SusiDNS: Fix display of default subscription when no subscriptions.txt file present 2017-05-10 13:49:34 +00:00
zzz
45f3695f9d Debian: Restore systemd for trusty
Fix date in changelogs
doc update
2017-05-10 13:46:04 +00:00
zzz
3e354f2f1a Jetty: New default servlet for eepsite, with
locale-independent directory listing (ticket #1965)
2017-05-05 19:53:43 +00:00
zzz
b0514cc564 move BFNS test 2017-05-05 13:38:59 +00:00
zzz
3718c73341 Reseed: Fix messages about reseed disabled 2017-05-05 12:26:48 +00:00
zzz
cd76457128 i2psnark: Initial support for ut_comment, no UI yet 2017-05-05 12:08:49 +00:00
zzz
f3d931d090 Blockfile: Move from i2p.jar to addressbook.jar
http://zzz.i2p/topics/2274
2017-05-05 11:41:19 +00:00
zzz
ffb3e27c0f launchpad build fixes 2017-05-03 21:29:22 +00:00
zzz
8d6ca6431d fix build.xml XML error 2017-05-03 19:35:59 +00:00
zzz
920b14212f 0.9.30 2017-05-03 13:08:34 +00:00
zzz
1e9c68859e fix null check 2017-05-02 14:34:33 +00:00
e390e67aee Package I2P servlet classes for Maven Central
RequestWrapper and its dependencies are excluded to avoid classpath issues.
2017-05-02 13:05:31 +00:00
zzz
d27d060322 Jetty: Rollover log files at midnight, not noon
This is a separate Jetty 9.2.21 bug unrelated to the previous fix
2017-04-30 13:19:48 +00:00
zzz
baa314d71f pull translations 2017-04-29 15:20:42 +00:00
zzz
d98c3d8f71 fix another test 2017-04-29 15:01:42 +00:00
zzz
5e497f790d Tests: Temporarily change cert threshold so Vuze's old cert won't fail 2017-04-29 14:40:42 +00:00
zzz
3dbbc2943f Jetty: backport patch from 9.4.4 to 9.2.21
to fix Timer crash in RolloverFileOutputStream
1e46576bf4
https://github.com/eclipse/jetty.project/issues/1469
2017-04-29 14:28:30 +00:00
zzz
925caccb57 Jetty: Set up to add patch for RolloverFileOutputStream
checked in file is unmodified from 9.2.21 for reference
patch in next checkin
2017-04-29 14:24:10 +00:00
zzz
a21e027403 Console: Revert previous checkin, unrelated to the Jetty Timer bug 2017-04-29 13:52:05 +00:00
zzz
4dec3657b0 Console: Disable Jetty timer thread consolidation
causing log file rollover to stop (ticket #1068)
2017-04-27 13:43:24 +00:00
zzz
06f78d7cfe HTTP Proxy: Add delay before jump page 2017-04-26 14:00:50 +00:00
zzz
6901914640 remove reseed 2017-04-26 13:57:49 +00:00
zzz
75db7fa196 geoip 2017-04-06 2017-04-19 13:13:20 +00:00
zzz
f8ea882f99 SSU: Reuse previous introducer expiration if available,
so we don't force a republish
- Don't run peer test if configured to force firewalled
2017-04-14 13:34:33 +00:00
zzz
dd0153e29a SSU: Publish introducer expiration (proposal 133) 2017-04-13 15:58:52 +00:00
zzz
9dd146680d fix eepget man page formatting 2017-04-13 15:52:50 +00:00
zzz
5fa6583a4e Console: Fix detection of UPnP setting changing 2017-04-13 15:45:24 +00:00
48661361fa Minor theme tweaks 2017-04-09 08:49:09 +00:00
4747172059 Tweak placement of caps info 2017-04-09 08:48:45 +00:00
f541dbe042 Add link to /configplugins on /home 2017-04-09 08:28:37 +00:00
a3e146a814 propagate from branch 'i2p.i2p' (head 5d56a7eb371dddb9336e596bda69f99c91294b05)
to branch 'i2p.i2p.str4d.ui' (head 3aeafcdb5c0ffbc9c77f574558f8438d3e81133e)
2017-04-09 06:52:22 +00:00
fa6fc84bf8 Theme updates:
- Subtler, softer colors & shadows and cleaner lines in the light theme in the full suite of apps
- Seamless iframe integration for light susidns theme
- Enhanced Arabic support in the light theme
- Better presentation of options on /confignet
- Enhanced bullets for stats/logs presentation
- console_big improvements/fixes
- Incremental improvements
2017-04-09 06:28:47 +00:00
a0911a43dd I2PSnark: hidpi navbar images 2017-04-09 06:28:20 +00:00
b6c6a5d696 Whitespace 2017-04-09 06:28:00 +00:00
5353fd986e Tidy up /profiles, add definitions for capabilities 2017-04-09 06:27:41 +00:00
3f40af54d1 Add id for for sidebar help & faq h3 2017-04-09 06:27:22 +00:00
9e8d4fbe21 Reorder sidebar sections for new installs 2017-04-09 06:27:04 +00:00
cb3326fa42 Minor updates to imagegen page 2017-04-09 06:26:46 +00:00
123473439c Fix "Advanced" links on sidebar with leading / 2017-04-09 06:26:35 +00:00
c12312f523 i2psnark: Remove hard-coded topnav image 2017-04-09 06:24:43 +00:00
zzz
dd8f7638c5 add bash completion scripts 2017-04-06 13:05:47 +00:00
zzz
4edc4077f8 Gentoo: Fix config dir location
http://zzz.i2p/topics/2285
2017-04-04 14:07:49 +00:00
zzz
0d3b1fa490 hosts.txt and blocklist update 2017-04-04 14:05:14 +00:00
zzz
828b0954a3 add BuildTime note to checklist 2017-04-04 14:03:09 +00:00
zzz
ec82912085 instructions for adding RPC support to i2psnark-standalone 2017-04-04 14:01:58 +00:00
zzz
021067dab9 deprecate ZipFileComment 2017-04-04 14:01:04 +00:00
zzz
bfc04178a6 i2psnark: Fix standalone configuration for Jetty 9
Context: Fix ClientAppManagerImpl in AppContext,
required for transmission.war in standalone i2psnark
2017-04-02 18:48:03 +00:00
zzz
f390831835 Console: Fix stopping of webapps when console stops (ticket #1893)
i2psnark: Only rewrite torrent config file if changed (ticket #1893)
Util: Don't sync config writes on Android/ARM (ticket #1893)
2017-04-01 14:15:06 +00:00
zzz
5eefb8b222 KeyStoreUtil: Reduce log level of expired cert error 2017-04-01 12:50:31 +00:00
zzz
c06e320f99 SSU: When a IPv6 peer connects, trigger a IPv6 peer test, not a IPv4 one
Require two consecutive peer test results for some state transitions,
to prevent frequent transitions to firewalled and back
2017-03-31 12:28:31 +00:00
zzz
b810b79a44 New translated man pages: pl, pt_BR, ru, sv
updates: it, ko, zh
2017-03-29 14:16:45 +00:00
zzz
3cc0122af4 Throttle: Reduce threshold for probabalistic throttling on slow platforms (ticket #1964) 2017-03-29 12:32:36 +00:00
zzz
48fb12ebeb SSU: Refactor PeerTestEvent out of UDPTransport 2017-03-29 12:30:21 +00:00
zzz
82554b943e Build: Suppress JarScanner warning during Debian build (ticket #1975) 2017-03-27 16:48:25 +00:00
zzz
04e0cfe020 Debian: Add missing addressbook.jar to package (ticket #1973) 2017-03-27 14:52:50 +00:00
zzz
ed590cd6f5 SusiDNS: Add addressbook.jar to classpath, don't fail to start
if it's still not found (ticket #1973)
This fix covers:
1) Old wrapper.config without addressbook in the classpath
2) Java 9 together with 1)
3) Completely missing addressbook.jar
This does not fix addressbook.jar missing from Debian build.
2017-03-27 14:43:20 +00:00
zzz
c1991241e4 Time: Fix crashes on old Androids (ticket #1976) 2017-03-27 14:12:42 +00:00
zzz
b503f03bd6 Blockfile: Include authentication strings in exports 2017-03-27 14:10:01 +00:00
zzz
cff8eafc43 Blockfile: Upgrade to Blockfile format 4 on non-Android ARM 2017-03-25 11:32:05 +00:00
zzz
a0b2f5738a i2ptunnel: Allow alt priv key file to be added without restarting I2P
Display message requiring tunnel restart if tunnel is running
2017-03-25 11:29:14 +00:00
zzz
b335ded1d2 CPUID: Recognize Ryzen 2017-03-24 13:08:56 +00:00
zzz
0a2097a238 Addressbook: Remove static reference, hide implementation
Requires Android fix (ticket #1972)
2017-03-24 13:07:17 +00:00
zzz
1ab67de677 Plugins: Blacklist i2pbote and BwSchedule
Translate exceptions thrown from PluginStarter
2017-03-23 14:55:56 +00:00
zzz
47277063e4 Plugins: Add version number to console messages when downloading/starting,
and linkify plugin name
2017-03-23 13:54:02 +00:00
zzz
ca6ce37a0b context: New ClientAppManagerImpl in AppContext, so registration
works there (for i2psnark-rpc in standalone)
2017-03-21 19:26:48 +00:00
zzz
a00f11d5b7 i2psnark: Add another method to support RPC plugin 2017-03-21 11:57:52 +00:00
zzz
13ad5d72ae SSU: More work on introducer expiration (proposal 133) 2017-03-20 22:31:32 +00:00
zzz
b9a7a76174 dont replace app if a dup 2017-03-20 22:27:55 +00:00
zzz
a8ae2ce955 typo 2017-03-20 22:24:59 +00:00
zzz
de5661ef1b new reseed ssl cert 2017-03-20 22:18:21 +00:00
zzz
e4da3b0f3b dont allow non-GET requests to icon servlet 2017-03-20 22:12:33 +00:00
zzz
95b6bd36e5 i2psnark: Enhancements to support RPC plugin 2017-03-20 16:41:04 +00:00
zzz
05aef9bd59 Move "isSlow" detection to SystemVersion 2017-03-18 14:38:59 +00:00
zzz
fda673038f Addressbook build changes (ticket #1966):
- Build as jar, not war
 - Put empty war in updater
 - Move Servlet starter to SusiDNS
 - Skip war in RouterConsoleRunner
2017-03-18 14:34:59 +00:00
zzz
24801553d6 i2psnark: Recognize XD client 2017-03-15 15:10:23 +00:00
zzz
43c3a14745 javadoc typo 2017-03-14 14:17:10 +00:00
zzz
4b722c9b7f i2ptunnel: New form to enter private key file for alternate destination
- Use alt destination for registration if set
   - Another dup check for alt destination
SusiDNS: New button for adding alternate destination
   - Fix nonces on details page with multiple destinations
   - Fix single dest deletion on details page with multiple destinations
   - Set book in all forms to ensure correct book
Blockfile: Fix specified-destination deletion from the correct book
2017-03-14 14:15:54 +00:00
zzz
1150b4cd73 NBI: Adjust logging during extraction to use standard format 2017-03-14 13:33:39 +00:00
zzz
e7cfb2d6fe Streaming: Add reset() to I2PSocket API
i2ptunnel: Reset I2P socket on TCP socket errors, in standard servers
that don't have protocol responses
SAM: Reset I2P socket on handler errors
2017-03-13 14:09:27 +00:00
zzz
ad810de747 i2ptunnel: Add subsession support to servers, no UI yet
Update subsession javadocs
2017-03-13 13:48:36 +00:00
zzz
b57d7c699f Javadoc: Update Jetty URL and package-list 2017-03-13 13:28:16 +00:00
zzz
ba825e61d5 New reseed, delete unused reseed SSL certs 2017-03-13 13:26:01 +00:00
zzz
aea20a552e Fix HashSessionScavenger, class changed in Jetty 9
History for prop, -4
2017-03-11 16:27:37 +00:00
zzz
0703a29562 propagate from branch 'i2p.i2p.zzz.jetty9' (head 80022f6ef552acd1382d45103969aa7c17b1d794)
to branch 'i2p.i2p' (head 3b4b418ae8be95d52228fc7c325fc52e0223e4fe)
2017-03-11 15:24:23 +00:00
zzz
db0381d6b1 Add required jetty-9.2.21.v20170120 jars
Includes two Tomcat 8.0.33 jars from that, which are:
"A rebundling of Apache Tomcat Jasper to remove the tomcat server dependencies, so that the JSP engine can be used by the Eclipse Jetty project."
2017-03-11 15:24:04 +00:00
zzz
a9be26d2bc unneeded casts 2017-03-11 14:43:37 +00:00
zzz
db5ab0b9b8 Add commons-logging to list of empty jars 2017-03-11 14:37:37 +00:00
zzz
072d990279 reseed now using CA 2017-03-11 14:06:55 +00:00
zzz
6b4f665f34 Add more markers and protection for xml file migration
Add error message for jetty-jmx.xml migration, don't migrate
Update non-default files jetty-rewrite.xml and jetty-jmx.xml
2017-03-10 18:48:48 +00:00
zzz
48a055d462 Streaming: Don't change buffer size when max message size is adjusted
Only change max message size when buffer is empty
2017-03-09 19:40:17 +00:00
zzz
9146f3c7e1 i2psnark: Prevent RuntimeException caused by corrupt i2psnark.dht.dat file
http://forum.i2p/viewtopic.php?t=12751
2017-03-09 19:34:30 +00:00
zzz
1fe9acefe2 Router: Set default sig type to EdDSA for non-Android ARM 2017-03-09 15:25:25 +00:00
zzz
359b4570e4 hide destination box on registration page 2017-03-09 15:24:10 +00:00
zzz
1c720a0fda finals 2017-03-09 15:23:28 +00:00
zzz
d1fdf14911 unnecessary parameter 2017-03-08 16:27:48 +00:00
zzz
6fbeef5f8c remove old ssl cert 2017-03-08 16:26:04 +00:00
zzz
6ef6106336 Random: Don't need extra bits if power of two 2017-03-08 16:25:27 +00:00
zzz
23ee40d990 stray semicolon 2017-03-08 16:24:13 +00:00
zzz
4e236fc5ab Put Jetty 9 files in eepsite-jetty9/ directory in updater 2017-03-08 13:48:28 +00:00
zzz
d573910b7a CPUID: Fix saving of libjcpuid.jnifile on Macs,
was incorrectly saving as libjcpuid.so (tickets #1865, #1900)
 - Try to load libjcpuid-x86_64-osx.jnilib for 32-bit Macs,
   because as of 0.9.26 it's a 'fat binary' with 32-bit in it also.
   This was broken in the 0.9.26 changes.
 - Improve error logging
 - Add library search path logging to main()
NBI:
 - Try to load the "none" architecture for x86, even if
   CPUID loading fails (tickets #1865, #1900)
   This was broken in the 0.9.26 changes.
 - Add library search path logging to main()
 - Comment out unused method
2017-03-06 20:44:16 +00:00
zzz
da00b95599 doc updates 2017-03-06 20:41:43 +00:00
zzz
e20310d257 Throttle: Fix disable of probabalistic throttling (ticket #1963)
Fixes this checkin:
  Revision: c52409bf5d7b422c23a62eecfa50b98d7c74f8df
  Date:     01/16/2012
  Branch:   i2p.i2p
  Don't throttle tunnel creation if using a higher than default router.maxParticipatingTunnels setting.
2017-03-06 20:38:38 +00:00
74151b06ef propagate from branch 'i2p.i2p' (head 600cd73c4b46b7ba8c421149785f6245afa47487)
to branch 'i2p.i2p.str4d.ui' (head d5b54214bfe1bf5203f614600b916346a10f26dd)
2017-03-06 04:59:59 +00:00
de7a4ba55c Whitespace cleanups 2017-03-06 04:56:58 +00:00
5ddeeec9ea I2PSnark theme updates 2017-03-06 04:55:09 +00:00
1f7042a68e I2PSnark fallbacks when JS is unavailable:
- Use meta-refresh
- Hide JavaScript-dependent buttons
2017-03-06 04:52:42 +00:00
a65722f3e8 I2PSnark: clean up RNF/RDNE errors 2017-03-06 04:51:55 +00:00
964dacd907 I2PSnark:
- More tooltips
- Remove "if checked" from checkbox strings
- Checkbox layout tweaks
2017-03-06 04:47:51 +00:00
25b03979d5 I2PSnark backend layout/style tweaks 2017-03-06 04:43:19 +00:00
6151480ee6 SusiDNS theme updates 2017-03-06 04:43:02 +00:00
97fa5d9921 SusiMail theme updates 2017-03-06 04:42:43 +00:00
83c9dc7437 Console theme updates 2017-03-06 04:41:22 +00:00
4bf0147198 Update I2P logos for console themes 2017-03-06 03:49:43 +00:00
d7e5aaf919 Replace &nbsp; with thin non-breaking space &#8239; for byte sizes
The latter has more consistent/predictable width between fonts & point sizes.
2017-03-06 03:46:56 +00:00
10a021f5fc Re-layout "Banned IPs" section of /configpeer 2017-03-06 03:43:38 +00:00
20df511401 "Mark for deletion" tooltip in SusiMail folder list 2017-03-06 03:42:56 +00:00
73708041e8 Spacing tweaks for legibility/consistency 2017-03-06 03:38:30 +00:00
zzz
b71aafbb28 Debian: Add files for jessie with libtomcat8-java
Fix missing glassfish dependency in trusty/control
2017-03-04 15:02:08 +00:00
zzz
319ce9b065 Debian: Revert previous checkin for precise, it does not have libtomcat8-java 2017-03-04 14:44:09 +00:00
zzz
87cff00b99 Debian: Revert previous checkin for trusty, it does not have libtomcat8-java 2017-03-04 14:41:21 +00:00
zzz
f38ee48ca3 Move setting of InstanceManager to WebAppConfiguration to avoid race
Fix up LICENSES.txt
Build.xml cleanup
Debian:
- Add support for with-libtomcat8-java but not with-libjetty9-java for wheezy/jessie
- Fix wheezy/precise/trusty build files to use tomcat8 but not jetty9 packages
- Remove build dependency on ant-optional, not required
- Remove some remaining eclipse-ecj dependencies
- Add short README files for wheezy and jessie
2017-03-04 14:24:48 +00:00
zzz
ec6c24429a Debian build fixes 2017-03-03 19:44:39 +00:00
zzz
15915afeb8 Remove dup DTDs in javax.servlet.jar
Set InstanceManager for webapps
Remove InstanceManager log message
Resolves ticket #1818
2017-03-03 17:56:47 +00:00
zzz
b72085bcf3 Debian builds:
- Remove with-libtomcat6-java and with-libtomcat7-java
- Replace with-libjetty8-java with-libjetty9-java
- Add libtomcat8-java dependency in debian builds
- Change libservlet-3.0-java implicit dependency to libservlet-3.1-java
- Initial mods for trusty build files, as it does not have jetty 9
- Initial xenial build files
- Add link to jetty9-apache-jsp.jar
- Add necessary util jars to jsp classpath
Non-Debian builds:
- Move tomcat runtime from javax.servlet.jar to jasper-runtime.jar,
  to be consistent with Jetty 8
- Switch from jetty (glassfish) to apache (tomcat) jsp implementation,
  to be consistent with Debian builds
- Drop checked-in Tomcat 6 and Jetty 8 jars
Code:
- Force Jasper initialization in RouterConsoleRunner since we
  don't use the Jetty annotation scanner
2017-03-03 15:48:10 +00:00
zzz
5f96067c22 merge of 'bd4c9889786a280f8797cbdc6ca9cddb8c7260a2'
and 'fe4b2b6942b6c0dbe1efda4e2fa555289e74cbef'
2017-03-03 14:00:47 +00:00
zzz
61e4e2a052 Util: Don't depend on DataHelper in FileUtil.copy(),
causes Windows installer to fail because DataHelper is not in install.jar.
tag i2p-0.9.29-win1
2017-03-03 13:59:54 +00:00
zzz
f7cdf221eb UDPAddress: Add method to get introducer expiration (proposal 133) 2017-03-02 14:24:27 +00:00
zzz
69ad95710a UDPAddress: Fix bug in "Error handling for failed intro packets"
cur variable wasn't being incremented.
from Revision: 0f0232b342477486c38b51afa3d298285cc8fbcf
from Date:     09/15/2005
Simplify error handling code
javadocs
2017-03-02 14:14:28 +00:00
zzz
920572d3bc UDPAddress: Make most fields final 2017-03-02 13:27:30 +00:00
zzz
d3abbe86e9 Fix eepsite jetty.xml and jetty-ssl.xml files
Migration script for eepsite jetty.xml and jetty-ssl.xml files
Add exclude protocols
2017-03-01 16:42:57 +00:00
zzz
3631efa567 Fixup for PathMap generics
Remove dup returns
2017-03-01 16:41:19 +00:00
zzz
a6e62afc1f Servlet: Catch OOM in MultiPartRequest 2017-03-01 12:58:16 +00:00
zzz
8bfb3649dd Fix webapps and plugins not starting, because the
default configurations were not being run.
Revert adding JettyJspServlet class, maybe we don't need it after all.
2017-02-28 03:52:32 +00:00
zzz
45abf6575c add missing JettyJspServlet class 2017-02-27 22:26:39 +00:00
zzz
7fb82da7ff Partially revert previous checkin, which was missing some DTDs.
Delete previously checked-in DTDs, and in the build,
copy all the DTDs out of jetty-schemas-3.1.jar to javax.servlet.jar.
Update to Jetty 9.2.21.
2017-02-27 21:31:44 +00:00
zzz
e995a4cf92 i2psnark: Fix disappearing start button 2017-02-27 19:51:38 +00:00
zzz
2de25ca453 addressbook: Add date parameter to authentication strings 2017-02-27 19:50:21 +00:00
zzz
8d928eadba minor fixes after review 2017-02-27 19:49:05 +00:00
zzz
e03c25e397 debian files update 2017-02-27 19:48:28 +00:00
zzz
b695293070 0.9.29 2017-02-27 14:11:44 +00:00
zzz
c09bfa0a26 i2ptunnel: Fix generation of advanced authentication strings 2017-02-27 14:09:46 +00:00
zzz
f420a99b6f Update translations 2017-02-24 23:54:31 +00:00
zzz
33b1851317 PrivateKeyFile: Add option to generate addressbook authentication string
fix inadvertent fallthru
HostTxtParser: Add -q command line option, enhance return codes
2017-02-23 19:45:33 +00:00
zzz
3c735eaf96 more man pages 2017-02-20 18:31:25 +00:00
zzz
3f452c5acb GeoIP, blocklist, checklist update
GeoIP from Maxmind 2017-02-07
2017-02-20 18:20:38 +00:00
zzz
380f55a0e8 I2CP: Return null on decompression failure instead of
throwing exception, to reduce the impact, for example
in iMule which is apparently closing the session (ticket #1915)
2017-02-15 17:48:47 +00:00
zzz
8a89b3da29 Fix calls to Class.newInstance() deprecated in Java 9 2017-02-15 17:01:02 +00:00
zzz
f2ae1bfe09 Utils: Disable caching of ResettableGZIPOutputStreams,
add more checks for compression failure,
fix output for zero-length input (ticket #1915)
2017-02-15 16:45:06 +00:00
zzz
17b781c1b4 Translations: Update source
Fix dependencies for poupdate target
2017-02-15 16:27:43 +00:00
zzz
68fb3f42a8 New SSL cert for reseed.i2p-projekt.de 2017-02-11 20:31:21 +00:00
zzz
fc8c193f37 strip more system properties in I2CP 2017-02-11 15:12:53 +00:00
zzz
c949d776be I2PTunnel CLI: Set connectDelay default for HTTP client
tweak clientoptions help messages
2017-02-11 13:44:57 +00:00
zzz
e29e3e2fd3 Test: Prevent NPE in LocalClientManager test on client shutdown 2017-02-11 13:26:26 +00:00
zzz
e01c443fa2 Test: Add random delay and drop options to LocalClientManager
Return failure codes from LCM to client (ticket #1939)
2017-02-10 19:17:43 +00:00
50450ecba6 propagate from branch 'i2p.i2p' (head bd037c8b542fe0f6125aa16fb3bff5d257b4e955)
to branch 'i2p.i2p.str4d.ui' (head 9bd4080121d8ef662d6a2e4dfe7fae1079b32646)
2017-02-10 16:43:25 +00:00
44c0d9357b Update snark tile2.png 2017-02-10 16:42:50 +00:00
42ba5fa509 Fix typo 2017-02-10 16:42:06 +00:00
24b2bb8e3f I2PTunnel theme tweaks 2017-02-10 16:41:49 +00:00
026a9cf026 Smooth out heading backgrounds on I2PTunnel edit pages 2017-02-10 16:40:49 +00:00
87c8031e5a SusiMail theme tweaks 2017-02-10 16:40:21 +00:00
bff3f0436c Router console theme tweaks 2017-02-10 16:39:56 +00:00
bfe8c65628 SusiDNS changes:
- Additional column on hostname list page for helper address with icon, and
  iconfication of b32 addresses
- Added minified identicon to hostname column
- Changed destination address display on list/details from textarea to div to
  accomodate automatic height adjustment (no need to manually specify height and
  hope for the best)
  - Also allows us to display the full Destination on the details page
- Tooltips for eraser icon + new address helper icon & minified identicons
- Consolidation of Hostname/host name/name referenced: now all "Hostname"
- Theme tweaks and whitespace removal
2017-02-10 16:37:15 +00:00
a22bf6b4a4 I2PSnark changes:
- Add spacing between File Info/ Directory Listing for all themes
- Tooltip for tracker removal eraser icon
- Theme tweaks and whitespace removal
2017-02-10 16:34:33 +00:00
c4e7b1a799 Open log files in a new tab 2017-02-10 16:31:49 +00:00
232d0b5e77 More tooltips 2017-02-10 16:31:21 +00:00
82095d9786 Add "NetDB Search" to Advanced sidebar section 2017-02-10 16:31:08 +00:00
f68967c5f2 Alphabetical sorting of sidebar links under "I2P Internals" 2017-02-10 16:30:47 +00:00
9898a4a930 Min width for config tabs on light theme 2017-02-10 12:36:40 +00:00
092881acc4 Padding for text-dense tables 2017-02-10 12:36:20 +00:00
b1ed295e26 Rename /configclient button classes 2017-02-10 12:13:05 +00:00
zzz
2d8f0c2956 Streaming: Fix optional delay and choking (tickets #1046, 1939)
- Don't always send optional delay
- Don't overwrite choking delay with non-choking delay
- Don't send optional delay of 0 every 8 packets
- Don't set options both in CDR.buildPacket() and Conn.sendPacket()
- Set or clear optional delay in packet when retransmitting
- Move choking state variables from ConnectionOptions to Connection
- Move updateAcks() call from PacketLocal to PacketQueue
- Fully implement choking and un-choking
- Reduce periods for some stats
- Comment out some debug logging
- Cleanups
- Fix javadoc HTML broken in previous checkin
2017-02-09 17:24:03 +00:00
zzz
f0241d4a1c Util: Change logCloseLoop level to DEBUG 2017-02-08 15:27:25 +00:00
zzz
a11bd7cbe7 I2CP: Return local delivery failure on queue overflow (ticket #1939) 2017-02-08 15:22:41 +00:00
zzz
36ec4de9c7 Console: Consolidate timer threads (ticket #1068)
Clear correct property if no users are set
2017-02-05 20:56:40 +00:00
zzz
843b66d61e Streaming: Don't hard fail on expired message error (ticket #1748) 2017-02-05 19:39:15 +00:00
zzz
afb87cd75c NTCP: Don't write to an inbound connection before established, causing NPE (ticket #996) 2017-02-05 19:09:12 +00:00
zzz
aa098ac800 dont log deletion of deletelist.txt 2017-02-05 14:58:47 +00:00
zzz
bbbbfe2417 reduce concurrent graph generation for ARM 2017-02-05 14:57:57 +00:00
zzz
9ab55ec368 checklist update 2017-02-05 14:56:51 +00:00
zzz
a85546534e Streaming: Don't always send optional delay (ticket #1046)
javadocs
2017-02-05 14:55:13 +00:00
zzz
83c786a5fd more man page translations 2017-02-05 14:16:33 +00:00
zzz
50d735b126 new reseed 2017-02-05 13:03:55 +00:00
zzz
da893452ea HTTP proxies: Pass through relative referer URIs, convert same-origin
absolute referer URIs to relative (ticket #1862)
2017-02-04 21:18:00 +00:00
zzz
6306799a4b single-char indexof() 2017-02-04 19:46:04 +00:00
zzz
82d812c25c NTP: Enable IPv6 support (ticket #1896) 2017-02-04 15:38:49 +00:00
zzz
890ad257e1 Router: Run shutdown tasks in parallel,
increase max time for shutdown tasks (ticket #1893)
i2psnark: Remove most delay between announces at shutdown
2017-01-30 22:05:43 +00:00
zzz
7cb5dab67f i2ptunnel: Add support for outproxy plugin to CONNECT proxy (tickets #1364, #1895)
Add support for ports to CONNECT proxy
2017-01-30 00:33:43 +00:00
zzz
1cf6030646 Utils: Catch Java 9 error in SSLEepGet 2017-01-28 15:41:48 +00:00
zzz
36fd93da0d Utils: Comment out debug logging in SSLEepGet 2017-01-28 14:00:11 +00:00
zzz
5483306d21 Utils: Detect when running as service on Gentoo 2017-01-28 13:57:31 +00:00
zzz
1f228a3f85 Build: Rename translated man pages to be compatible
with dh_installman for debian.
Add i2prouter-nowrapper man page.
Misc. man page fixups (man man-pages for the standard)
No ant targets or deb packaging yet.
2017-01-27 19:15:32 +00:00
zzz
12cc7b3a3b bump -4 2017-01-27 16:11:14 +00:00
zzz
61fd242938 Build: Translated man pages for es and zh,
and a script to build them.
es complete, zh partial, just for testing.
No ant targets or deb packaging yet.
2017-01-27 16:10:00 +00:00
zzz
78da3b9785 javadoc fixes part 15 (ticket #1894) 2017-01-27 16:00:58 +00:00
zzz
e0e06d73eb javadoc fixes part 14 (ticket #1894) 2017-01-27 03:14:34 +00:00
zzz
112fa503e6 javadoc fixes part 13 (ticket #1894) 2017-01-27 03:03:34 +00:00
zzz
9dab3b0dfe javadoc fixes part 12 (ticket #1894) 2017-01-27 02:27:53 +00:00
zzz
82064760d5 javadoc fixes part 11 (ticket #1894) 2017-01-27 02:19:47 +00:00
zzz
bd1354f95b javadoc fixes part 10 (ticket #1894) 2017-01-27 01:49:19 +00:00
zzz
fb74f41692 javadoc fixes part 9 (ticket #1894) 2017-01-27 01:41:06 +00:00
zzz
5db89d8743 javadoc fixes part 8 (ticket #1894) 2017-01-27 01:36:26 +00:00
zzz
b970912cc1 javadoc fixes part 7 (ticket #1894) 2017-01-26 21:55:04 +00:00
zzz
d196047382 javadoc fixes part 6 (ticket #1894) 2017-01-26 21:45:47 +00:00
zzz
eefb36cb99 javadoc fixes part 5 (ticket #1894) 2017-01-26 21:37:23 +00:00
zzz
dc5bfb224d javadoc fixes part 4 (ticket #1894) 2017-01-26 20:59:26 +00:00
zzz
e461e8fb4f javadoc fixes part 3 (ticket #1894) 2017-01-26 20:51:05 +00:00
zzz
8bb114e9c4 javadoc fixes part 2 (ticket #1894) 2017-01-26 20:45:58 +00:00
zzz
f77fc52ca7 javadoc fixes part 1 (ticket #1894) 2017-01-26 20:37:44 +00:00
zzz
1a28a2af23 Use the EL API and compiler from Jetty, not old Tomcat
Bundle the DTDs, as extracted from jetty-schemas-3.1.jar
These were in lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar in Jetty 8
but are not in any lib/jsp/*.jar in Jetty 9.
  GPL v2:
  Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
  Copyright 2004 The Apache Software Foundation
  Copyright (c) 2009-2013 Oracle and/or its affiliates. All rights reserved.
2017-01-26 17:30:33 +00:00
zzz
d9c6360e0a Build: Set up man pages for translation.
No ant targets yet.
2017-01-26 15:47:42 +00:00
zzz
8137661751 i2prouter: Add root check to restart and condrestart commands (ticket #1770) 2017-01-24 14:44:17 +00:00
zzz
c66559ff84 propagate from branch 'i2p.i2p' (head d2e954c054d89a425c9791067ac7998433e95a23)
to branch 'i2p.i2p.zzz.jetty9' (head adcba23cab31b88e430ee09bf45fd1b6789a1719)
2017-01-19 17:19:00 +00:00
zzz
e47c628891 jbigi: Update GMP version (ticket #1840) 2017-01-19 16:18:30 +00:00
zzz
7b0a5bcd5a debian doc update 2017-01-19 13:33:10 +00:00
zzz
6e7dedba81 javadoc clarification 2017-01-19 13:32:15 +00:00
zzz
83e356140d i2ptunnel: Change eepsite sigtype to EdDSA for new installs 2017-01-19 13:31:10 +00:00
zzz
b66c7802e7 Add new reseed reseed.onion.im 2017-01-19 13:28:40 +00:00
zzz
7311cf33b7 Utils: Gzip test code refresh 2017-01-19 13:25:56 +00:00
zzz
60c93f1e1c Client: Don't log error on datagram dissector fail (ticket #1915),
let the client do the logging.
Throw early if data too short
2017-01-17 15:34:38 +00:00
zzz
a36083ab18 Utils: Java 9 yakkety workarounds 2017-01-17 14:08:47 +00:00
6308038a08 "Cables? Where we're going, we don't need cables." 2017-01-15 14:17:20 +00:00
e141abb5de susimail and susidns theme tweaks
- Responsive layout
- "background: none" for radio/checkbox icons (Edge/IE fix)
- Address dropdown display issue in MS Edge by making customized dropdown menus inclusive (-webkit-appearance: none);
2017-01-15 14:15:26 +00:00
94c6496f9d Tooltips for /configclients and reseed button 2017-01-15 14:13:30 +00:00
d360ba4817 NedDb advanced lookup layout and theme improvements 2017-01-15 14:08:29 +00:00
cca3f57373 Presentation tweak on /help 2017-01-15 14:06:23 +00:00
57e51ab8c5 I2PSnark theme tweaks 2017-01-15 14:04:24 +00:00
93511c0e61 HTML tag validity bugfixes 2017-01-13 17:34:20 +00:00
zzz
7cae467b59 DTG: Don't try to start if headless (ticket #1924) 2017-01-12 15:54:06 +00:00
zzz
2df64cd098 Copy README.txt contents to README.md
so the github page is restored.
2017-01-09 13:54:49 +00:00
0a0757a69f Add 10px border between torrent info and content on details page
Only on ubergine theme currently; extend to other themes if this works
2017-01-08 17:23:18 +00:00
14bacc272e propagate from branch 'i2p.i2p' (head 439bb8be3133559026640ebd22fdf93d10ba2cb9)
to branch 'i2p.i2p.str4d.ui' (head 83c1a136effdf092093e9af799a138e86da7ec43)
2017-01-08 01:37:15 +00:00
2bc5630832 Final CSS updates
- Responsive layout tested on HiDef+ setup, tweaked where necessary
- Extended glyphs that don't appear to be universally available replaced
- /graphs styling
- Various smaller improvements
2017-01-07 18:51:58 +00:00
ecb9726ba4 Help: more advanced settings 2017-01-07 18:31:10 +00:00
894186e975 Updates to /graph
- Graph image updates
  - Custom fonts with fallback
  - Left-align legend
  - Thinner restart and graph lines for clarity
  - Separate legend and display period date
  - Text tidyups
- Tweak layout and text of configuration options
- Default width to 400px to avoid info truncation
- 15s and 30s refresh options
2017-01-07 18:28:55 +00:00
053ebd7079 Disable anti-aliasing and hinting on QR codes to improve quality of display text 2017-01-07 17:52:09 +00:00
fabc57b57a Second draft of CSS updates
- More responsive layout
- Accessibility tweaks
- Further consolidation of look & feel between console and webapps
2017-01-07 17:47:01 +00:00
04b9b202e5 Routerconsole CSS hooks 2017-01-07 17:42:07 +00:00
acec99ff43 Move console links above hidden service links on /home
UX motivation:
- Console links are a small group of likely-useful actions and apps, thus makes
  sense to keep them at closer reach
- Ensures that if more hidden services links are added, the console links
  remain visible
2017-01-07 17:41:32 +00:00
e81a01d3e8 Typo fix 2017-01-07 17:36:08 +00:00
7101fb0997 Move /configclients sub-links into header 2017-01-07 17:33:09 +00:00
6b7ac9fba6 Move susidns export button to top of UI 2017-01-07 17:29:12 +00:00
0badcf63aa Theme and forms for imagegen app 2017-01-07 17:09:34 +00:00
bd69499f8f Add more filetypes to eepsite jetty-dir.css 2017-01-07 16:47:32 +00:00
23f835781c I2PTunnel CSS hooks 2017-01-07 16:24:34 +00:00
5dd6f2d06b merge of 'a84cabd267418e1cf436c975915ed5b91e39ae86'
and 'aafd3b9469e494f4f106a5c60c2139947c150679'
2017-01-07 15:48:44 +00:00
7f9a211242 Adding Dockerfile with support files to build a minimal docker image running i2p. 2017-01-07 13:59:26 +00:00
zzz
ca440a50fe i2ptunnel: Fix NPE on proxy.i2p/add when no params 2017-01-07 13:55:36 +00:00
zzz
994b51b5b1 update to Jetty 9.2.20 2017-01-06 13:57:41 +00:00
zzz
fc0ddb0193 eepget: recognize more status codes 2017-01-06 12:24:29 +00:00
zzz
f0e6baad27 add package dependency document 2017-01-05 15:46:33 +00:00
zzz
6ad4cb0928 Data: No longer sort addresses in an RI by SHA256,
it's undocumented, the other router implementations don't do it,
and unnecessary since we store addresses in a List, not a Set,
as of 0.8.14 2012-05
2017-01-04 14:47:52 +00:00
zzz
91163948b5 Router: Replace random tunnel keys when rekeying 2017-01-04 14:29:37 +00:00
zzz
e16cf2ce51 javadoc 2017-01-04 13:31:55 +00:00
zzz
307a03f0ed RouterAppManager: Logging 2017-01-04 13:31:21 +00:00
zzz
b63d44b226 Sybil: Start analysis 3 days before 2017-01-04 13:30:35 +00:00
zzz
57be0df858 Webapps: Remove classpath system log 2017-01-04 13:28:34 +00:00
zzz
6843950bdc DataHelper: Release resources in finally block 2017-01-04 13:25:49 +00:00
zzz
134cbd46e4 Crypto: Enforce correct seed and hash lengths in EdDSAPrivateKeySpec
From github PR #22
747df9f9aa
2017-01-04 13:00:31 +00:00
91007735a1 Update tests to use ScalaTest 3.0.1 2016-12-29 18:54:23 +00:00
14ca463499 Add Maven Central upload to release checklist 2016-12-29 12:12:22 +00:00
zzz
a7492269fb RKG command line tool multiple args 2016-12-24 14:24:30 +00:00
zzz
074c630ac6 Utils: Add RKG command line tool 2016-12-24 13:46:51 +00:00
zzz
f902a63144 Console: Add Referrer-Policy header 2016-12-23 12:35:41 +00:00
zzz
ffcd2d4517 Clock: Fix duplicate notification of clock shift listeners 2016-12-22 15:16:51 +00:00
zzz
dd400bb14b Update: Fix JVM crash and i2p.jar corruption when updating from -1 2016-12-22 14:13:39 +00:00
zzz
63a2a6da08 Router: Check blocklist when loading RIs
Ensure blocklist is initialized before netdb
2016-12-22 14:08:44 +00:00
zzz
3846e08e68 Router: More efficiently check blocklist when receiving new RI 2016-12-22 12:46:38 +00:00
zzz
e625e67b5d Console: Limit age of news entries displayed 2016-12-22 12:03:28 +00:00
zzz
0819857b86 add toopie 2016-12-22 11:25:54 +00:00
zzz
fbbfd8acf0 NTP:
- Verify source address and port
 - Add to command line
 - main() test improvements
 - Add KoD support (ticket #1896)
 - Add initial IPv6 support (ticket #1897)
 - Make some methods private
 - Add year 2036 warning
2016-12-21 17:48:47 +00:00
zzz
95fb2df609 Tools: Fix installer compile fail 2016-12-20 14:01:36 +00:00
zzz
c1baee64d3 reseed updates 2016-12-18 15:06:48 +00:00
zzz
ce47d4ea68 Profiles: length check on file names 2016-12-16 18:06:38 +00:00
zzz
14a839ebba synch graceful exit code 2016-12-16 18:01:30 +00:00
zzz
636badcec2 reduce buffer size 2016-12-16 17:59:00 +00:00
zzz
6093f26fb6 minor cleanup 2016-12-16 17:58:16 +00:00
zzz
4615fce28e Update: Register blocklist version with update manager 2016-12-16 17:56:18 +00:00
zzz
328f544de1 minor optimization 2016-12-16 17:50:26 +00:00
zzz
0c76201bd9 propagate from branch 'i2p.i2p.zzz.test2' (head 2447f30ec8d46502041197c3ca0ce85d4da070b0)
to branch 'i2p.i2p' (head 763f037865b6bc798d2db144dc39faa02a09219a)
2016-12-16 17:45:54 +00:00
zzz
0a1cd20585 Debian: Updates
- Fix jetty version in build.xml
- Make javadoc package priority 'extra'
- Beginning of xenial files, Java 8 only, untested
- Build doc updates
- Add zesty, remove wily in docs
2016-12-15 13:56:52 +00:00
zzz
26a9e8bd89 0.9.28 2016-12-12 16:08:35 +00:00
zzz
f5e8220c8b add java version to manifest 2016-12-12 15:59:10 +00:00
zzz
b7c7e02518 remove reseed serving old files 2016-12-12 15:58:33 +00:00
zzz
7eadc3df6f restore two sites up again 2016-12-12 15:57:58 +00:00
zzz
2f3f01c5c7 remove git.repo.i2p 2016-12-09 20:13:36 +00:00
zzz
5d7546598e remove zerobin 2016-12-09 16:01:23 +00:00
zzz
434e3badd6 translation updates 2016-12-09 15:58:22 +00:00
zzz
541e9e6dc0 Remove DOS line endings in cert (fails ant testscripts) 2016-12-09 15:52:37 +00:00
zzz
8a3a725730 GeoIP: Update from Maxmind 2016-12-06 2016-12-06 19:10:25 +00:00
zzz
74cd5cee20 Router: Revert default family sig type back to ECDSA,
as the OIDs are changing, to be deferred to next release.
Update blocklist
2016-12-05 13:41:51 +00:00
zzz
b78b3cb942 configpeer: Remove hr at bottom 2016-12-04 15:49:53 +00:00
zzz
62b5b49b02 Console: Sort banlist and floodfills in true binary order, not by base64 string 2016-12-04 15:25:38 +00:00
zzz
7734d3dd65 Consolidate base64 alphabet string 2016-12-04 14:10:07 +00:00
zzz
27724a809f BOB:
- Change NamedDB implementation to HashMap
  - Change NamedDB locks to ReentrantReadWriteLock
  - All unlocks in finally blocks, remove redundant unlocking
  - Remove throw declaration from methods that don't
  - Read under write lock when that's simpler
  - Use Boolean fields rather than valueOf()
  - Fix unlock order inversion in I2PtoTCP and MUXlisten
  - Remove unused locking in TCPtoI2P
  - Add missing locking in status command
  - Remove redundant locking
  - Remove unnecessary catch-and-rethrows
  - Spelling fix in error message
  - Set some methods static
  - Blank line removal
2016-12-03 23:10:53 +00:00
zzz
1d6fc40d59 BOB finals 2016-12-03 16:24:00 +00:00
zzz
176ecaa9f1 use new copy 2016-12-03 16:18:56 +00:00
zzz
42efed578a Clean up single char indexOf() 2016-12-03 16:00:09 +00:00
zzz
f461d4881d javadoc fixes 2016-12-03 14:27:50 +00:00
zzz
5be077e25d Clean up single char indexOf() 2016-12-02 18:52:37 +00:00
zzz
5b31540fe8 Console: Version the css links 2016-12-02 17:23:02 +00:00
zzz
ec94a6eca3 NetDb: Peer selection tweaks 2016-12-01 14:33:26 +00:00
zzz
04321e6af3 remove jump server 2016-12-01 14:29:02 +00:00
zzz
25fd488db0 Blocklist: Read feed file before user-specified file 2016-11-27 15:58:57 +00:00
zzz
850f1504f7 NetDb: Add MTU, SSU caps, IPv6 prefix, and cost lookups 2016-11-27 15:46:07 +00:00
zzz
2318a2b319 NetDb: Add same-port check in peer selector
Convert FloodfillPeerSelector MaskedIPSet to use the one now in util
2016-11-27 14:58:34 +00:00
zzz
8d494ad162 Lookup by port and sig type 2016-11-26 17:43:18 +00:00
zzz
5a87c232ea NetDb: Add advanced lookup form
Fix /16 and /8 lookup
Fix tab highlighted for all lookups
Add sybil points for banlist
2016-11-26 15:11:06 +00:00
zzz
f6778c573a SU3File: Add types for blocklist (proposal #130) 2016-11-25 14:53:42 +00:00
zzz
ffb3a75813 add converttohash to commandline 2016-11-25 14:06:23 +00:00
zzz
e3435dce10 sybil tweaks 2016-11-25 13:54:17 +00:00
zzz
497d08845c add links 2016-11-24 18:12:18 +00:00
zzz
cc6cd9e402 Sybil tool enhancements 2016-11-24 18:04:40 +00:00
zzz
64f5fed05a blocklist feed tweaks 2016-11-24 13:54:54 +00:00
zzz
1d280156a2 Console: Lookup RI by IP with netmask 2016-11-23 18:08:15 +00:00
zzz
08f7e5d6a8 ip links 2016-11-23 17:08:13 +00:00
zzz
b72b768945 Console: Lookup RI by IP 2016-11-23 16:13:07 +00:00
zzz
89733251d4 Console: Lookup RI by caps
stub out lookup by IP
2016-11-23 16:00:36 +00:00
zzz
8146f6fdb6 FFPeerSelector: Penalize new and slow peers 2016-11-23 14:21:57 +00:00
zzz
625e992c91 News: Add command line support 2016-11-23 14:06:33 +00:00
zzz
62064da081 News: Support blocklist in the news feed (proposal 129) 2016-11-23 13:54:05 +00:00
zzz
86c0fe327b NetDB: Fix detection of bandwidth class when multiple values are specified 2016-11-21 21:03:37 +00:00
zzz
bbb921806e NetDB: When doing lookups, don't use floodfills too close 2016-11-20 22:25:00 +00:00
zzz
fdff5ecd43 Router: Change default family sig type to EdDSA 2016-11-20 16:32:38 +00:00
zzz
97af7d0622 margins on /configlogging 2016-11-20 15:43:16 +00:00
11579b9818 merge of '8bf9850eb3fe4fcfb63053838a188969b7ba9c5b'
and 'a40ea9b5f7545281195f00a80e31ae879197e76b'
2016-11-20 06:08:40 +00:00
01cfb7b241 merge of '348832602d6528cc162d427742d0910df3db76ef'
and 'd51aa134c2f1b0fe533f79663f1e79dade41bde1'
2016-11-20 06:07:00 +00:00
zzz
b0bba18f33 Build: Add manifest attributes for java version to all jars and wars 2016-11-17 15:14:50 +00:00
zzz
70902bd279 Tomcat 6.0.48 2016-11-17 14:56:52 +00:00
zzz
cd4d5a39bf Console: Add netdb lookup by family 2016-11-17 14:33:33 +00:00
zzz
7a1a1d5b93 NetDB: When verifying store, don't use floodfills too close
to the store
2016-11-17 14:27:55 +00:00
zzz
66c2664b91 Blocklist: Add support for IPv6 in blocklist.txt
fixup main() test, minor cleanups
2016-11-17 13:45:36 +00:00
zzz
68e5fd6d08 Profiles: Pull same-IP detection into a utility class, for use by netdb 2016-11-16 18:05:40 +00:00
zzz
37d3204e43 Router: Add methods to verify and track members of our family;
use on sybil page
2016-11-16 18:01:24 +00:00
zzz
784566a7cb eddsa findbugs 2016-11-16 15:27:28 +00:00
zzz
126850626c socks findbugs 2016-11-16 15:26:19 +00:00
zzz
42cbc1e9ac Console: Remove dead home page links 2016-11-16 12:34:24 +00:00
zzz
1a46d9373d Certs: Add Let's Encrypt ISRG Root X1 cert 2016-11-15 20:17:32 +00:00
zzz
cd5d5ee23d Logs: Fix output of dup message after 30 minutes 2016-11-14 13:15:36 +00:00
zzz
16a551f7ce UPnP: Prevent NPE on socket creation fail (ticket #1681) 2016-11-13 16:30:51 +00:00
zzz
75d599e061 Handle case where it was an emptyList 2016-11-13 16:11:19 +00:00
zzz
efd953f3d4 Console: Add initial news to bottom of news page so it doesn't disappear (ticket #1153) 2016-11-13 15:56:47 +00:00
zzz
3ac8e5f54f UPnP: Prevent exception on bad HTTP header (ticket #1480) 2016-11-13 15:11:59 +00:00
zzz
0108c1c290 i2psnark: Periodically DHT nodes (ticket #1328) 2016-11-13 13:48:38 +00:00
zzz
a8976d25e3 Profiles: Delete old ones after saving (ticket #1328) 2016-11-12 23:10:55 +00:00
zzz
6a72c2957b Profiles: Periodically save (ticket #1328) 2016-11-12 22:27:34 +00:00
zzz
f69c0998ea Susimail: Fix nonce error on login after logout
Fix internal error after cancel button on settings form when not logged in
2016-11-12 20:10:58 +00:00
zzz
35548ff9be Susimail: Add logout button to more pages (ticket #1374) 2016-11-12 19:43:00 +00:00
zzz
6ed329db78 I2CP: Reduce log level of error when session closed
while signing leaseset (ticket #1606)
2016-11-12 18:07:20 +00:00
zzz
2c65173bec Console: Add IPv6 firewalled setting on /confignet 2016-11-12 15:14:43 +00:00
zzz
6acc23af00 Console: Fix inadvertent config save when clicking restart or shutdown
on /configstats
2016-11-12 14:54:56 +00:00
zzz
d7a84c88cd JRobin: Move DeallocationHelper logging from wrapper log to router log
Fix redundant cast
2016-11-12 12:29:30 +00:00
zzz
aeeee0e5c4 Build: Truncate history.txt in installers 2016-11-11 18:23:58 +00:00
zzz
c3181d8561 Transport: Use NTCP for some outbound connections even before
SSU minimums are met (ticket #1835)
2016-11-10 15:09:39 +00:00
zzz
24ecc858f1 Tunnels: Reduce default VTBM records from 5 to 4 2016-11-09 21:32:19 +00:00
zzz
e5bcfe4207 Transport: Add stats for inbound v4/v6 connections (ticket #1854) 2016-11-09 21:08:21 +00:00
zzz
e614b0996d Router: Fix low-memory log messages for non-wrapper (ticket #1795)
Install: Add max memory option to runplain.sh
Build: Fix minimum Java version for Windows
2016-11-08 15:42:22 +00:00
zzz
b559b412aa Crypto: Change serial number in selfsigned certs from int to long
Add CertUtil to command line
2016-11-08 14:09:56 +00:00
zzz
cd775fa38d Transport: Improve IPv6 selection logic
to skip temporary addresses on linux
2016-11-08 03:24:30 +00:00
zzz
ab064fd31e add upnp to command line 2016-11-08 00:15:37 +00:00
zzz
08062aaf64 service cant be android 2016-11-07 14:31:53 +00:00
e74479317d Add router.jar to Maven Central target 2016-11-07 03:11:32 +00:00
zzz
c9c29520b4 Consistently log authentication failures for all interfaces 2016-11-06 17:20:35 +00:00
zzz
81bbf554e8 sort 2016-11-06 15:31:43 +00:00
zzz
26a24a98ed add java 9 log warning 2016-11-06 15:31:01 +00:00
zzz
e8de1daf65 Util: Consolidate linux service detection code 2016-11-06 00:49:34 +00:00
zzz
11e86110e7 Build: Add support for using libtomcat8-java package, untested 2016-11-05 18:50:22 +00:00
zzz
f42d76b4b4 Console: Add message to ignore InstanceManager warning (ticket #1818) 2016-11-05 17:52:21 +00:00
zzz
e379ca6c54 SusiDNS: Fix jsp EL syntax error with EL 3.0 (Tomcat 8) (ticket #1870) 2016-11-05 15:31:07 +00:00
zzz
5d0b35d53a Console: Improve handling and logging of webapps that fail to start 2016-11-04 17:02:15 +00:00
zzz
8c71b883bb Transports: New config options i2np.udp.minpeers and i2np.udp.minv6peers,
for testing (ticket #1876)
2016-11-04 14:20:56 +00:00
zzz
843351956e build fix 2016-11-04 14:02:06 +00:00
zzz
7197d22f2a Transports: New config option i2np.allowLocal,
replaces i2np.udp.allowLocal and i2np.ntcp.allowLocal,
fixes test networks (ticket #1875)
2016-11-04 13:44:24 +00:00
zzz
b77c4c67a1 i2psnark: Add launch-i2psnark.bat (ticket #1871)
author is MXPLRS|Kirill, adapted from launch-i2psnark,
same license
2016-11-04 13:19:02 +00:00
zzz
62bc616ada Crypto: Certificate tweaks for email subjects 2016-11-01 13:27:12 +00:00
zzz
9e8251fb9f spelling take 2 2016-10-30 17:56:41 +00:00
zzz
6ff9483e07 Console: Java 9 fixes for classloader (ticket #1870)
May not be sufficient for plugins
Unlinkify viewmtn links on /jars, site is down
2016-10-29 16:21:02 +00:00
zzz
484a3903ca Build: Fix typo in jcpuid build.sh for Mac (ticket #1865)
Doc updates for Mac copied from that ticket
2016-10-28 17:10:22 +00:00
zzz
916fc96654 opus mime type 2016-10-28 16:15:16 +00:00
zzz
75345f4da1 Utils: Add Addresses methods for getting multiple results from DNS
ticket #1050, work in progress
2016-10-28 16:14:44 +00:00
zzz
e603437500 drop empty wily dir 2016-10-28 16:01:12 +00:00
zzz
d49a778b68 javadoc typo 2016-10-28 16:00:25 +00:00
zzz
95ae86d962 Jrobin: Fix for error in DeallocationHelper on Java version 9-internal 2016-10-28 15:18:08 +00:00
zzz
51e35eb572 Utils: Handle Java version detection for internal or ea versions 2016-10-28 15:08:13 +00:00
zzz
4f0cae59c2 Crypto: Remove deprecated Sha256Standalone as scheduled
This will break Syndie 1.105 and earlier, users must upgrade to 1.107
2016-10-28 01:52:07 +00:00
zzz
886dbf1172 Crypto: Generate more-conforming selfsigned certs (ticket #1853) 2016-10-28 01:39:01 +00:00
zzz
04392069a6 JRobin: Fix for Java 9 to remove dependency on Sun private classes
https://github.com/OpenNMS/jrobin/issues/3
http://stackoverflow.com/questions/1854398/how-to-garbage-collect-a-direct-buffer-java
Code from http://sourceforge.net/p/tuer/code/HEAD/tree/pre_beta/src/main/java/engine/misc/DeallocationHelper.java
unmodified, GPLv2
2016-10-26 19:31:40 +00:00
zzz
78acf707dc JRobin: 1.6.0-1, 2014-10-28, checked in as source
from https://github.com/OpenNMS/jrobin/releases
Replaces 1.5.9.1 from 2008-09-05
Needed for Java 9 to remove dependency on Sun private classes.
No modifications, but includes only core, data, and graph;
cmd, convertor, inspector, and tests are not included.
Using source instead of jar because:
 - Release jar not available
 - Additional change will be needed for Java 9
   to remove dependency on Sun private classes, see:
   https://github.com/OpenNMS/jrobin/issues/3
2016-10-26 17:45:34 +00:00
zzz
08d1ea89bf Build: Set Java 7 build target for all jars;
embedders (esp. Android) targetting 1.6 must
set javac.version=1.6 in override.properties and set
both bootclasspath variables.
2016-10-26 16:56:13 +00:00
zzz
2b6fd49a53 Update GettextResource.java from GNU gettext 0.19.8
Only change is in comment block.
Previous checkin didn't have gettext version, so do this
just so we know what version we are on.
2016-10-26 14:54:59 +00:00
zzz
3063e37cbd Systray: Remove old 32-bit Windows implementation, replaced by DTG 2016-10-25 23:59:20 +00:00
zzz
d2569fa446 i2psnark: Don't count unchoked but uninterested peers as uploaders
when calculating global uploader limit, to allow more upload slots,
especially when some torrents are stalled.
Convert some shared fields to atomics for concurrency.
2016-10-25 22:30:55 +00:00
zzz
8a8452290c Zxing 3.3.0 2016-10-25 15:04:55 +00:00
zzz
d2f7b65282 SSU: Increase max IPv6 MTU (proposal #127) 2016-10-25 13:39:33 +00:00
zzz
80966d60c1 Crypto: Create keystore directory when making SSL keys (ticket #1866)
When we switched to new way of making keys in 0.9.25,
we omitted the mkdir step, which broke it.
2016-10-23 16:38:26 +00:00
zzz
85223303f2 Jetty 8.1.21.v20160908 2016-10-22 16:22:08 +00:00
zzz
0860bd3736 one more gl translation 2016-10-22 15:24:51 +00:00
zzz
b53bf7844b New Chinese (Taiwan) translations for susidns, susimail, debian 2016-10-22 14:19:17 +00:00
zzz
75514ddd87 New Korean translation 2016-10-22 13:51:25 +00:00
zzz
35642e2661 New initial news translations: Czech, Galician, Greek 2016-10-22 13:20:20 +00:00
zzz
c24ddf5deb Build: Fix jbigi build for Arch Linux and others when using Java 8 (ticket #1863) 2016-10-22 12:58:50 +00:00
zzz
f436fd08ed Add MTU to command line utils 2016-10-21 22:23:48 +00:00
zzz
dc523b78d4 CSS fix for more flags 2016-10-21 22:05:54 +00:00
zzz
06a599b4e7 Add Galician language
Flag converted from:
https://en.wikipedia.org/wiki/File:Flag_of_Galicia.svg
Public Domain
2016-10-21 22:00:51 +00:00
zzz
27cd1a6a6e Console: Remove calls to deprecated two-arg setStatus() 2016-10-21 21:38:55 +00:00
zzz
b6521ed884 Wrapper: Update to wrapper 3.5.30
All binaries from Tanuki delta pack,
except for armhf (armv6), compiled on Raspberry Pi:
  ant 1.8.2
  javac 1.6.0_38
  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)
2016-10-21 21:01:36 +00:00
zzz
71f7c712cd NetDB: Disallow RSA for RI or LS 2016-10-21 18:21:12 +00:00
zzz
f5f411b62f Data: Cache serialized leasesets on floodfills 2016-10-21 18:08:31 +00:00
zzz
d367149048 Tomcat 6.0.47 2016-10-21 17:42:50 +00:00
zzz
1bd5ebd8ec Crypto: Actually use a random nonzero byte in ElGamal,
as our specification says
2016-10-21 17:19:44 +00:00
zzz
534609e83a unused import 2016-10-21 17:13:58 +00:00
zzz
082a5d3c0f move siphash test from util to crypto 2016-10-21 15:21:24 +00:00
zzz
cee3ebbb23 less wtf 2016-10-21 15:20:35 +00:00
zzz
9b27251473 SSU: Fix minimum version check for IPv6 peer test (ticket #1861) 2016-10-20 18:31:32 +00:00
zzz
022479aff9 Build: Don't include jbigi.jar in next release update 2016-10-20 18:23:31 +00:00
zzz
adcee462e3 Build: Add library jars to i2p.jar classpath for Debian builds 2016-10-20 18:20:24 +00:00
zzz
7d070e6caf i2psnark: Add ids to rows, add to per-torrent show peers link 2016-10-20 18:04:56 +00:00
zzz
dcdf3e197c CSS h1 letter spacing tweak 2016-10-20 17:27:24 +00:00
zzz
6b5b3617d4 Debian: Update package descriptions, allow Java 9 2016-10-20 17:23:42 +00:00
zzz
be9f7dbf6e Fix HTML error on /configservice 2016-10-20 17:15:51 +00:00
zzz
38c9cb98a9 Updates for Debian builds 2016-10-18 14:50:06 +00:00
zzz
d8d0414ec4 Updates for launchpad builds 2016-10-17 22:16:35 +00:00
zzz
a7870bbd5a Fix so installers get the right jbigi 2016-10-17 00:49:57 +00:00
zzz
19370a36a2 0.9.27 2016-10-16 23:14:05 +00:00
zzz
5998587c52 Fix test for IPv6 firewalled configuration, javadocs 2016-10-16 16:57:33 +00:00
zzz
778ce71ea4 Translations: Update from Transifex 2016-10-14 12:07:26 +00:00
zzz
72105e218d SSU: Set min version for IPv6 peer testing 2016-10-11 13:24:56 +00:00
zzz
1af23a4106 Debian: Don't use glassfish-javaee.jar for jstl.jar (ticket #1793) 2016-10-10 12:31:28 +00:00
zzz
6b7d22c211 GeoIP update from Maxmind 2016-10-04
Add geoip to checklist
2016-10-06 14:58:46 +00:00
zzz
40b41b0dc5 Add geoipv6 file generation to command line util 2016-10-06 14:55:44 +00:00
zzz
db8a3d5b90 Susimail: Add console translate method so strings don't get tagged in susimail bundle 2016-10-06 14:04:02 +00:00
zzz
011d08b172 poupdate source 2016-10-06 14:02:23 +00:00
zzz
124c2b5ce3 i2psnark: Add standalone shutdown method 2016-10-02 15:44:49 +00:00
zzz
1e375c6de9 Crypto: EdDSA add private key spec constructor for hash
javadocs
2016-10-02 15:42:07 +00:00
zzz
cc4f63be12 SusiMail:
- Show settings button on list page even if no messages
 - Add nonce to forms
2016-10-02 15:39:37 +00:00
zzz
597231bed9 i2ptunnel registration page layout fixes 2016-10-02 14:47:22 +00:00
zzz
98e3ca47e6 Utils: Move SipHashInline from util to crypto 2016-09-24 16:00:56 +00:00
zzz
a46a0b1b32 i2ptunnel: Don't accept default 'mysite.i2p' as a valid spoof host 2016-09-24 15:46:57 +00:00
zzz
d4f786c902 i2ptunnel: Don't wrap destination in status message box
for easier readability / copypaste
2016-09-24 15:30:35 +00:00
zzz
b123720fa3 DTG: Enable by default on Windows 2016-09-24 14:54:30 +00:00
zzz
1376237e08 Reseed: remove user.mx24.eu as requested 2016-09-24 14:13:41 +00:00
zzz
78b7385281 i2ptunnel: Whitelist IRC AWAY inbound 2016-09-22 17:15:33 +00:00
zzz
4ab727acbd SSU: addRateData() cleanup 2016-09-22 17:13:42 +00:00
zzz
32e1c9617e EdDSA: throw IllegalStateException instead of NPE if field not set 2016-09-22 17:10:50 +00:00
zzz
fb323cef69 SipHashInline: Make public for external use with a supplied key (for obfs4) 2016-09-22 17:06:53 +00:00
zzz
cc179b488d DataHelper: Fix read() for nonzero offset, broken since the
beginning (2004) but unused by this repo;
Throw EOFException on short read rather than returning a smaller value,
since the whole point is to guarantee a complete read
2016-09-22 17:01:32 +00:00
zzz
2fd0ed1e74 spelling 2016-09-10 16:26:29 +00:00
zzz
afa5a193a7 Console: Add jsps to view entire router.log and wrapper.log files
Add links to /logs
Add some headers to the history.txt jsp
javadocs
2016-08-21 20:21:50 +00:00
zzz
b0789d45f3 HostTxtParser: Comment out tests, beginning of a command-line tool 2016-08-19 17:20:46 +00:00
zzz
be5fdea5e1 Enable tunnel testing when in hidden mode (ticket #1192)
Enable tunnel testing when without addresses (ticket #1835)
Use fast peers for inbound tunnels when without addresses (ticket #1835)
2016-08-19 17:13:12 +00:00
zzz
268953e19f CPUID: Add IDs for Kaby Lake (unverified/untested) 2016-08-19 16:09:21 +00:00
zzz
8cc03c265f JettyStart: Fix (now unused) main() 2016-08-19 16:06:04 +00:00
zzz
47a0df769e Router: Fix return code in getShutdownTimeRemaining()
when no participating tunnels remain
2016-08-19 16:02:17 +00:00
zzz
ff2d5badc9 ReadConfigJob minor optimization 2016-08-19 15:56:31 +00:00
zzz
bcaf837da8 i2ptunnel:
Register actual listen host with port mapper
Register POP and SMTP ports with port mapper
2016-08-14 17:44:08 +00:00
zzz
0d46c06843 Add new 'atomike' reseed 2016-08-14 15:20:33 +00:00
zzz
cdab6f8b76 i2ptunnel: Add outproxy plugin support to SOCKS (ticket #1824)
Make some classes package private
Move some fields to SocksServer superclass
2016-08-12 16:41:42 +00:00
zzz
b21b953ef2 i2ptunnel: Use preferred sigtype for new SOCKS tunnels 2016-08-12 16:34:44 +00:00
zzz
0d5cf46625 Console: Fix UPnP NPE on /peers (ticket #1830) 2016-08-09 17:27:54 +00:00
f7db737c1f Update i2psnark filetype icons 2016-08-08 08:00:01 +00:00
6512a9eb11 propagate from branch 'i2p.i2p' (head c62904685f0153a5b8cd032e8b3f1c4f64c5bec9)
to branch 'i2p.i2p.str4d.ui' (head 2a82ccb644906256af7bd0827725dc83e4c76be2)
2016-08-08 02:29:14 +00:00
zzz
9c0ae14609 Streaming: Fix debug NPE (ticket #1821) 2016-08-02 14:56:03 +00:00
zzz
5fcafb6434 i2psnark: Fix SIOOBE on bad announce URL (ticket #1823) 2016-08-02 14:28:34 +00:00
zzz
5763d73dda SSU: Fix peer test stuck when IPv6-only (ticket #1819) 2016-08-02 14:24:48 +00:00
zzz
cd4218e523 javadoc 2016-08-01 13:40:11 +00:00
zzz
f592f2234b build: include jbigi in next release update 2016-07-30 22:10:12 +00:00
zzz
c73a4a7983 i2psnark: Don't warn on failure to delete file if it's already gone 2016-07-30 18:47:03 +00:00
3e96a24fb8 Update default eepsite, add new section about running alternative webservers 2016-07-24 12:37:07 +00:00
01902de200 Hide JS links on proxy pages when JS disabled 2016-07-24 11:45:07 +00:00
e8e42a0b9d First draft of theme updates
- CSS changes to match backend changes
- Routerconsole themes applied across all plugins
- Move i2ptunnel CSS to a single file
- Image cleanups
- New icons
- Drop unused images
2016-07-24 11:25:32 +00:00
5368da2632 propagate from branch 'i2p.i2p' (head 57f8904e34e39111f13c427cb9fc92eeeb71afcd)
to branch 'i2p.i2p.str4d.ui' (head c4a8676261c7bbfa420927d931398c52f38ed03f)
2016-07-24 09:21:14 +00:00
zzz
a1fd8f49d7 SSU: Increase minimum peers if we have a IPv6 address
Check for 'B' cap for peer test
Fix peer test ip length check logic
2016-07-20 14:45:29 +00:00
zzz
a213799dac bump -6 2016-07-18 16:00:02 +00:00
zzz
b925f517d2 i2ptunnel: Block 'Proxy' header 2016-07-18 15:23:52 +00:00
zzz
767476ea51 SU3File: Also look in config dir for signer certificate 2016-07-18 14:39:35 +00:00
zzz
37ebf04bb5 Streaming: Kill accept() when session disconnects 2016-07-16 16:59:07 +00:00
zzz
7f2bd164db Plugins: Add exception for HSQLDB Timer in thread check 2016-07-16 16:08:34 +00:00
zzz
77014843fb I2CP Client: Break out of wait for LS in connect() if disconnect message received first 2016-07-16 16:07:14 +00:00
ddf332e779 susidns: rework top nav, consolidate filter section, misc markup 2016-07-11 07:08:55 +00:00
e01fe689d0 Encase susimail message nav in div 2016-07-11 07:08:13 +00:00
c586970128 Migrate i2ptunnel UI to tables, drop duplicate ids 2016-07-11 06:54:26 +00:00
f1d56a488a propagate from branch 'i2p.i2p' (head 67b5bc86a038a01b09ce3118cb12ffc5a63a7465)
to branch 'i2p.i2p.str4d.ui' (head e6ed70b649e8c498444b47918e2396a9602b8fd2)
2016-07-11 06:52:57 +00:00
5f62bf3e62 Missing i2ptunnel dependency in IDEA 2016-07-11 06:52:50 +00:00
12ced03aa5 propagate from branch 'i2p.i2p' (head e820709c391eb47dd85c43b4ec76d3731e2d653f)
to branch 'i2p.i2p.str4d.test2' (head 72c043901a0d9bbff44db975a12f38d6c4127845)
2016-07-10 14:41:27 +00:00
3471950f6f propagate from branch 'i2p.i2p' (head e820709c391eb47dd85c43b4ec76d3731e2d653f)
to branch 'i2p.i2p.str4d.ui' (head d58f7672f47913b858ab8651f9f460ac4a911898)
2016-07-10 14:41:03 +00:00
0333fb6e22 Add a couple of missing dependencies to IDEA 2016-07-10 14:40:54 +00:00
6d55f5bacf Update Jetty version after prop 2016-07-10 14:34:16 +00:00
6468e9e317 Update router version in build.gradle after prop 2016-07-10 14:32:53 +00:00
2270c4744c propagate from branch 'i2p.i2p' (head 34802d93f1d32368153a6769608d8e1046d0d117)
to branch 'i2p.i2p.str4d.test2' (head 0981aa4b9874c1752456cbf381aadc2fe829d57b)
2016-07-10 14:31:03 +00:00
e34eaa351e propagate from branch 'i2p.i2p' (head 34802d93f1d32368153a6769608d8e1046d0d117)
to branch 'i2p.i2p.str4d.ui' (head cc830bf1431a74c1944324a7b90349cc9319bd92)
2016-07-10 00:24:52 +00:00
03de374b07 Project files for IntelliJ IDEA 2016-07-10 00:24:40 +00:00
6d4f8fd471 Fixes after merge
Also found several duplicate ids that were split up; these will be replaced with
classes later.
2016-07-09 23:53:51 +00:00
b38f3b56f8 propagate from branch 'i2p.i2p' (head 2c491226853de4521d10d68da3a0a8e4db33293d)
to branch 'i2p.i2p.str4d.ui' (head bbdfdd2b3941cfa3c2c5cab8f3c78069c865c54d)
2016-07-09 23:20:31 +00:00
zzz
3baa08a3bb Utils: Improve random seed initialization
Fallback to Random rather than try SecureRandom twice
Fetch from SecureRandom incrementally
Remove log warning
correction, this is just a simple javadoc fix, original changelog was a dup
2016-07-09 21:07:31 +00:00
zzz
896af2c5d2 Utils: Improve random seed initialization
Fallback to Random rather than try SecureRandom twice
Fetch from SecureRandom incrementally
Remove log warning
2016-06-25 22:20:27 +00:00
zzz
2c3311b471 SSU: Add support for IPv6 SSU Peer Testing
(ticket #1752; proposal #126)
In PeerTestManager, this is simply the removal of v6 restrictions,
and the tracking of whether we are testing v4 or v6.
In UDPTransport, track v4 and v6 peer tests separately.
2016-06-25 21:25:12 +00:00
zzz
2506f6b143 spacing 2016-06-25 18:28:02 +00:00
zzz
c9b4ab5a13 Prep for IPv6 SSU Peer Testing 2016-06-22 17:28:55 +00:00
zzz
08fad38782 minor speedup 2016-06-22 17:26:25 +00:00
zzz
ba8b2df473 SSU peer test:
Only fire a peer test on connection if address has changed
Reverts inadvertent change in ccb0029690e8a5921f34289dfc86fe37ef9344c6 2009?
2016-06-22 15:20:33 +00:00
zzz
b819c0334a SSU peer test:
Forget the test and don't keep retransmitting to Charlie if we receive
the Bob reply after the 2nd Charlie reply.
2016-06-22 14:20:19 +00:00
zzz
009f6cce6e add links from old config page to new pages 2016-06-22 13:02:47 +00:00
zzz
4ee66c8218 Back out previous checkin adding override fields to Translate;
we can set language and country with System properties in app context.
Back out previous checkin bundling countries translations in
i2psnark standalone; use Locale to translate country names.
2016-06-18 17:49:28 +00:00
zzz
e6f111c5fc Split up /configclients, add /configi2cp, /configplugins, /configwebappsx
(ticket #1804)
2016-06-16 15:24:24 +00:00
zzz
e146480401 More manifest attributes in streaming jars 2016-06-15 18:34:44 +00:00
zzz
e7f82c88f1 i2psnark standalone:
- hide router link
- change javascript down message
2016-06-15 15:29:09 +00:00
zzz
9ba8f53ec7 Translate: Add method to set language in standalone app context
i2psnark:
- add form to set language in standalone context
- add Ukrainian and Japanese translations
2016-06-15 15:03:17 +00:00
47f0bbb93a merge of '65027e70ec9585f6013d97ec88d4f251869e47fd'
and 'c26f9208a0245c8b4b421076479271214ff1d660'
2016-06-13 06:03:03 +00:00
9a9144321d Add build target for Maven Central
Requires the Maven Ant Tasks to be installed. On Debian:

sudo apt-get install libmaven-ant-tasks-java
2016-06-13 06:02:48 +00:00
zzz
2113946ed0 add snark standalone context and redirect files
fix snark standalone build
2016-06-11 17:03:10 +00:00
zzz
cad7953ef6 remove dup section 2016-06-11 16:54:06 +00:00
zzz
1fea327eff more jar manifest attributes 2016-06-11 16:39:27 +00:00
zzz
16a5295140 history for prop, -1 2016-06-11 14:19:04 +00:00
zzz
d84b0e4455 propagate from branch 'i2p.i2p.zzz.test2' (head ee7dbea07e8ad7e01cb8012a1540aca8346ee7d2)
to branch 'i2p.i2p' (head 2cb447c64ae706c6cead619c9428083fce6f1d46)
2016-06-11 13:47:12 +00:00
zzz
bb8e050434 i2psnark standalone:
- Add shutdown hook to delete temp dir
- Fix up CSS URL paths to use single quotes
- Don't attempt to register with update manager
2016-06-11 13:34:09 +00:00
zzz
e27af374b0 i2psnark standalone:
- Cherry-pick fixes from psi's github i2psnark_rpc branch
- Fix up Jetty XML file for Jetty 8
- Start with JettyStart
- Add UrlLauncher to launch browser
- Move RunStandalone to standalone/ directory
- Fix up paths in CSS files during build
- Force startup delay to 0 when in router context
- Fix theme selection when not in router context
- Adjust CSS and image paths when not in router context
- Add hosts.txt so announces work
2016-06-10 19:10:59 +00:00
zzz
471ff5b939 Fix distclean for deb builds
Deb build doc updates
Checklist updates
Deb 8 changelog
2016-06-08 16:41:01 +00:00
zzz
bfbd159706 Release tarball build fixes
Precise build tweaks
Precise and Trusty changelogs
2016-06-07 19:15:00 +00:00
zzz
aa8fd85d65 Fix eepget Deb classpath via patch 0001
Launchpad doc tweaks
2016-06-07 16:55:05 +00:00
zzz
bc6583fe57 merge of '0bf1803f4554f830aee970415fcd6c9b6c4d2747'
and '98a4dbd3af97e8892dafc24a4ebbcc6b2ff30afe'
2016-06-06 21:55:04 +00:00
zzz
249e6f0eea 0.9.26 2016-06-06 19:23:17 +00:00
zzz
7471d04526 Fix i2pwiki.i2p link (ticket #1803) 2016-06-06 12:55:56 +00:00
zzz
389eba23cb Drop empty file inadvertently checked in two years ago 2016-06-06 12:54:38 +00:00
zzz
63272d3cfc mbuild-all script fixes 2016-06-06 12:37:06 +00:00
78d0a54e96 Typo 2016-06-06 12:34:17 +00:00
zzz
280ca2cf2f CPUID: Add CLI output for new AMD tests
Add @since for new AMD methods
2016-06-06 12:12:16 +00:00
f564d4dc22 Fixes for a bunch of old unused code to make it compile 2016-06-05 12:57:32 +00:00
zzz
126a4d8443 jbigi: Fix GMP version reporting for shared library (ticket #1800) 2016-06-04 13:23:05 +00:00
zzz
38b930cd03 propagate from branch 'i2p.i2p' (head eb2151f9d804ec432bfe97214896ee62da08943e)
to branch 'i2p.i2p.zzz.test2' (head 2ea50c5f22fe1e24d37dff2f283b77feaa9190ee)
2016-06-04 13:00:36 +00:00
zzz
2eb89e938a i2ptunnel CLI: Don't set the listen host to the I2CP host 2016-06-04 12:50:24 +00:00
zzz
34c611d340 New translations all over 2016-06-03 15:04:04 +00:00
zzz
d4ea7dc416 Update translations
Fix i2psnark .pt_BR file name
Add i2ptunnel .zh_TW
Fix getopt .fi which is coming in from tx non-UTF-8
2016-06-03 14:05:30 +00:00
zzz
1583f35fe4 i2psnark: Add psi's open tracker 2016-06-03 12:42:38 +00:00
zzz
d7e1f62db4 Build: Fix Debian build on ARM (ticket #1801)
- Fix other jbigi/jcpuid build script errors and typos
- Nonzero exit code missing on some jbigi/jcpuid build script failures
- Refresh patch
2016-06-01 17:45:27 +00:00
e86092b3e0 Consistent back-linking 2016-05-30 04:56:20 +00:00
ed3120956c Position routerconsole.advanced warning so it is more clearly associated 2016-05-30 04:56:08 +00:00
zzz
dbd1ae0dfb toString() for timer debugging 2016-05-29 15:03:51 +00:00
zzz
6f0fde092b more keys to cache 2016-05-29 15:03:04 +00:00
zzz
7213be43b2 'volatile' family cert
run by 'weekend'
2016-05-29 14:58:19 +00:00
zzz
d0594ebc77 javadoc 2016-05-29 14:56:46 +00:00
zzz
faebe8ab7e Console: Fix /configfamily form (ticket #1797) 2016-05-29 14:35:39 +00:00
5cb285b034 Bump 2016-05-29 12:09:34 +00:00
e16760d4d0 propagate from branch 'i2p.i2p' (head 31a9e968da3ecdf8475137e498ed0145bfd48c5a)
to branch 'i2p.i2p.str4d.ui' (head b1b8350768db1eccf4b5939a5add1c5c94410ec3)
2016-05-29 11:53:02 +00:00
3266907346 Dynamically load javax.naming classes to avoid VerifyErrors on some Androids 2016-05-29 11:47:59 +00:00
5439ff2195 Update history 2016-05-29 05:06:10 +00:00
7249b643ac Differentiate between constructor invocation failure and connection failure 2016-05-29 05:03:32 +00:00
efcf294670 Require that AndroidLogWriter is a subclass of LogWriter 2016-05-29 05:02:47 +00:00
147a7e4468 propagate from branch 'i2p.i2p' (head fc46f2d84625265a3899b5ad50af5e91d396ba01)
to branch 'i2p.i2p.str4d.ui' (head f8d5c7b37f4813b669d8a10f9ff82d0ed2a33282)
2016-05-29 02:04:34 +00:00
e969213451 Dynamically load Android LogWriter 2016-05-28 23:39:13 +00:00
03e188b57a Rename LogWriter -> FileLogWriter, LogWriterBase -> LogWriter 2016-05-28 22:51:44 +00:00
zzz
8807787b10 remove alert character output from build script printfs 2016-05-26 20:24:08 +00:00
zzz
f653b03288 Ubuntu: Launchpad precise build fixes
- Mods to the trusty debian files for precise
- New precise-tarball build target
2016-05-26 18:29:24 +00:00
zzz
498280b56d Ubuntu: Launchpad build fixes
- Set BITS in rules to target architecture bits
- Remove dh --with quilt as dh clean will unpatch with quilt
2016-05-26 14:22:18 +00:00
zzz
6b8cb54466 Debian: Refresh patch, update docs 2016-05-26 11:42:24 +00:00
zzz
0e941625cf Streaming: Return I2PSocketAddress from StandardSocket methods (ticket #1321) 2016-05-25 14:55:30 +00:00
zzz
2a739f593f Reseed: Require two sources minimum (ticket #1794) 2016-05-25 13:53:21 +00:00
zzz
d48f70c2fe poupdate english po files 2016-05-25 12:43:33 +00:00
zzz
f4d4ca0adf remove i2psnark message 2016-05-24 15:07:48 +00:00
zzz
bb8b3ebe8c add reseeds requiring SNI 2016-05-24 15:06:55 +00:00
zzz
e518e670f2 DTG: Add tray icons for Windows and Mac
White icon copied from Android drawable-mdpi/ic_stat_router_active.png for Windows
Converted to black in Gimp for Mac
2016-05-23 18:26:41 +00:00
6b7db094a9 Add toggles to i2psnark in preparation for CSS3 collapsible sections 2016-05-23 13:25:18 +00:00
9d3dec8577 Another style tweak 2016-05-23 13:20:22 +00:00
797ee21024 First pass at tidying up the favourites and services
This will change again once the new IA and UX for /home has been defined.
2016-05-23 12:50:07 +00:00
e485752546 Add help section for advanced settings 2016-05-23 12:46:18 +00:00
c9728fe2ef Add an optional Advanced section to the summary bar 2016-05-23 12:27:42 +00:00
206718f1e8 Text tweaks 2016-05-23 11:37:49 +00:00
31b480a68e Tweak /configstats toggle layout, hide if JS disabled 2016-05-23 11:33:42 +00:00
1a335321b2 Limit file inputs to accepted extensions 2016-05-23 11:29:10 +00:00
96fc02de5c Layout tweaks 2016-05-23 11:26:44 +00:00
804011d18d Note about language name length 2016-05-23 11:19:44 +00:00
f95100a1ff Update links, add tooltips etc. 2016-05-23 11:02:10 +00:00
bbc2454f36 Remove \n from inside empty <ol>s
When there are no list items, the <ol>s are now rendered as <ol></ol>, which
means they can be selected in CSS with ol:empty (to e.g. display: none), because
:empty only ignores comments inside HTML tags. This will be unnecessary once
browsers support the :blank selector, which will build on :empty to also ignore
whitespace.
2016-05-23 06:21:24 +00:00
62437acf66 More ids and classes 2016-05-23 05:41:24 +00:00
9cbcf5baa7 Fix repeated ids that should be classes 2016-05-23 05:31:42 +00:00
63260aac59 propagate from branch 'i2p.i2p' (head 198dad192e830f3eaf568af10f308bc98795470e)
to branch 'i2p.i2p.str4d.ui' (head 24039fce2eef425a63521138774a182aa07fec9f)
2016-05-23 04:55:57 +00:00
c5432a2098 Dynamically load domain socket code 2016-05-22 01:18:16 +00:00
zzz
3afe04d5e9 change tracker URL as requested 2016-05-20 21:31:20 +00:00
zzz
101d0691f0 DTG: Fix systray menu redraw on Mac;
Switch to AWT by default on Mac;
Hide DTG enable form on Mac until we fix headless override in i2prouter
2016-05-20 14:43:15 +00:00
zzz
18b61e7036 Config files, eepsite help: Add path information for OS X
and Windows as a service. (ticket #1495)
2016-05-19 19:03:53 +00:00
zzz
86a35f1a13 SSU: If configured with a hostname, bind to all v4/v6
addresses found for that hostname.
Fix binding if more than one IP or host was configured.
Log tweaks
2016-05-12 21:37:07 +00:00
zzz
d6638f3e00 NTP:
Don't put random data in zeroed fields
Increase random data in originate timestamp from 1 byte to 2 bytes
Verify originate timestamp to prevent injection
Verify received packet size
Log tweaks, javadocs, cleanups
2016-05-12 13:48:44 +00:00
zzz
f9bd4952f4 release checklist more info on translations 2016-05-09 15:18:01 +00:00
zzz
edbeac9c7b DTG: Add 9 new translations 2016-05-09 15:09:08 +00:00
zzz
97fca96861 DTG: Can't do first-time startup from /configservice,
restart required
2016-05-09 14:26:07 +00:00
zzz
702e1c5a78 Console: Fix escaping of search URLs on /confighome 2016-05-09 13:26:18 +00:00
zzz
ea38672159 Console: Fix HTML error on /configui 2016-05-09 13:09:38 +00:00
zzz
2d08889977 DTG swing event handling tweaks 2016-05-09 12:45:29 +00:00
b316315c61 Use subtable for mail header 2016-05-09 12:01:23 +00:00
zzz
ab3dbd5880 I2PSnark: Limit cases when we display tracker errors;
include host name of tracker when we do
2016-05-09 11:32:56 +00:00
61be475044 propagate from branch 'i2p.i2p' (head 6706bab853107973d7d0ff28212aae65bd098591)
to branch 'i2p.i2p.str4d.ui' (head 645f60a4d23af4116ae660b09dfff32d19a65c32)
2016-05-08 21:47:30 +00:00
29befb44cc Missing files from revision f253b24b4a6d5c841605792653ed57344dade6c4 2016-05-08 21:31:08 +00:00
zzz
6b578dfd8c Console: Fix UTF-8 passwords
Partial fix for UTF-8 usernames
Better input checking and help messages
2016-05-08 19:49:14 +00:00
zzz
8bb6922e80 Reseed: Reformat reseed list as requested by 'backup'
Remove unused certificates
2016-05-08 13:40:56 +00:00
zzz
99a5b10ea6 DTG: Add basic network status
Hide disabled items in Swing menu
2016-05-07 17:39:02 +00:00
zzz
bf1fa061e3 DTG: Use actual console URL
Hide browse menu item if not supported
2016-05-07 15:16:38 +00:00
zzz
16cee2ad56 Build: Update javadoc links to Java 7
Refresh package-lists
2016-05-07 13:49:03 +00:00
zzz
bb468ad38f javadoc fix for deb builds 2016-05-07 13:25:23 +00:00
zzz
05012a91ed refresh deb patches 2016-05-07 13:07:25 +00:00
zzz
5d93ca19f8 Build: Add back the old, slow way to build bundles
for gettext < 0.19
2016-05-07 12:57:49 +00:00
zzz
7d11ec2f08 merge of '52c56a56e3e6addc350299c0f86142760a6fc7cb'
and 'a8e6813e94cbc0bdccb063d140214db36af7ac1f'
2016-05-07 12:51:50 +00:00
dev
0f6336052a core/buildscripts: Added ARM support to BITS detection.
Added support for armv6/armv7/aarch32/aarch64 BITS detection
to build scripts.
2016-05-07 01:34:38 +00:00
zzz
62296222e9 Console:
- Show systray controls for all OSes on /configservice
  - Implement backend for systray control
2016-05-06 17:54:27 +00:00
zzz
70f9cb1b19 Build:
- Add DTG to updater
  - Fix and bundle DTG license info
  - Remove jstl.jar and standard.jar from updater,
    last changed in 0.9
  - Fix bundling of Tomcat license info
Console:
  - Change to new DTG constructor
  - Don't attempt to start systray or DTG when running as a service
2016-05-06 15:56:54 +00:00
zzz
ecafcddddb merge of '1ec1784c6eed4da97d0f3236f9fb46dea17d158b'
and '602d5ca1a488f10859327e19709700a7e1837c7c'
2016-05-06 15:43:38 +00:00
zzz
dd50b1487b DTG: Implement second TrayManager menu implementation in Swing.
Use Swing for non-Windows menus because AWT looks terrible on Linux
and the button handling there is almost impossible to fix
TODO: test on Mac
2016-05-06 13:45:30 +00:00
dev
c2f35c0d29 core/buildscripts: Added proper uname based BITS detection.
Added automatic detection for the BITS variable.
2016-05-05 22:32:20 +00:00
dev
4fd0261efa jcpuid/build_jbigi: Default BITS to 64 if unset.
To make sure that our debian build scripts work,
set BITS to 64 if unassigned.
2016-05-05 22:03:27 +00:00
zzz
390b2d409c DTG: Hide restart menu items if no wrapper
Add graceful restart and shutdown menu items
Add basic adjustment of menu based on shutdown state
Disable wrapper notification for now
2016-05-05 20:36:02 +00:00
zzz
196cf48372 DTG: Remove Swing DesktopguiConfigurationFrame as it's
completely inconsistent with the AWT SystemTray menus;
move to the AWT menu as a submenu.
This was the last of the Swing UI elements,
mathias ripped out the all of them in Nov. 2010, but
then added this one in Feb. 2011.
Remove LookAndFeel setting, only works for Swing.
2016-05-05 16:39:41 +00:00
zzz
8c1f7a4a39 DTG: Fix NPE and disable logging in config frame 2016-05-05 15:51:02 +00:00
zzz
75d6df7789 DesktopGui:
- Remove all static log, context, and instance fields
- Make Main class a RouterApp
- Remove unused ConfigurationManager class
- Translate tooltip, disable tooltip on linux
- Use safer exec call to start i2p
- Remove all images, use itoopie
- Don't start spinner thread in router context
- Handle various startup errors better
- Synchs, finals, javadocs, cleanups
2016-05-05 13:13:44 +00:00
zzz
16ff3e3def Debian: Refresh patch after i2prouter change 2016-05-05 11:41:05 +00:00
zzz
0839b46c8d i2prouter: Set JAVA_HOME correctly on Mac OS X 10.5 and later (ticket #1783) 2016-05-04 16:05:30 +00:00
zzz
cdafab2734 Wrapper: Update to wrapper 3.5.29
All binaries from Tanuki delta pack,
except for armhf, compiled on Raspberry Pi:
  ant 1.8.2
  javac 1.6.0_38
  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)
Old 3.5.25 wrapper.jar moved to win-all, use it in windows-only installer
so it will be consistent with the old binaries.
Fixes wrapper failure on FreeBSD 10 (ticket #1118)
Minor i2prouter script fixes for FreeBSD 10, from anonimal (ticket #1118)
2016-05-04 13:40:50 +00:00
zzz
13685484f6 Utils: Fix bug in periodic timers triggered by
a backwards clock shift, caused graphs to be blank
and various router, streaming, and i2ptunnel
degradations over time (ticket #1776)
Log tweaks
2016-05-04 11:43:47 +00:00
zzz
cb2790bc62 another deb fix 2016-05-02 12:17:02 +00:00
zzz
17542400b9 Debian: Back out libhttpclient-java dependency,
requires 4.4 which is too recent for most distros
2016-05-01 21:22:38 +00:00
zzz
7a49b09b97 Build: Fix to not clean in imagegen on every build
Clarify some release prompts
2016-05-01 20:32:14 +00:00
zzz
33629d0744 Build: Compile resource bundles from ant, not msgfmt,
speeding up builds with translations by 20x
2016-05-01 20:19:56 +00:00
6bfd39d5c0 propagate from branch 'i2p.i2p' (head 8e9786b74b0ffb821179c5c60954ab3c00a71250)
to branch 'i2p.i2p.str4d.ui' (head 94e11eaba6bb17c14f4d9ca58547867f34949847)
2016-05-01 11:45:22 +00:00
8e391444b4 Fix mail table layout 2016-05-01 05:26:50 +00:00
a945cabf11 Ensure users know they are logging into I2PMail 2016-05-01 05:21:00 +00:00
4634debe21 Adjust truncation limits 2016-05-01 05:19:19 +00:00
d0456098e2 susimail layout tweaks 2016-05-01 05:18:29 +00:00
a3c9887fe5 Add a bunch of ids and classes to susimail HTML for styling 2016-05-01 05:04:43 +00:00
327f36d022 Disable spellcheck on SusiDNS config editor 2016-05-01 04:28:05 +00:00
8eeb902467 Rework "Create Torrent" table 2016-05-01 04:22:45 +00:00
61e54cf52e Rename i2psnark paging control images 2016-05-01 04:20:46 +00:00
50291233a1 Various small i2psnark HTML tweaks 2016-05-01 04:18:00 +00:00
edb3ffcf45 Rework /configui forms for theming 2016-05-01 04:06:28 +00:00
e34f0443bc Include bandwidth in minimal sidebar 2016-05-01 03:26:36 +00:00
cb0147a798 Collate help topics under /help 2016-05-01 03:24:25 +00:00
a7f789f069 Collate /configtunnels infostrings 2016-05-01 02:20:23 +00:00
66544f41f2 Tweak /stats for theming 2016-05-01 02:16:46 +00:00
82c55e6008 Remove hard-coded styling that will be moved to CSS 2016-05-01 01:28:49 +00:00
1ad69e7127 Improve contrast of graphs 2016-05-01 01:17:01 +00:00
6470f2d983 Wrap /profiles and /viewprofile info in tables for theming 2016-05-01 01:10:04 +00:00
709ccf6c22 Use tables for /netdb 2016-05-01 01:02:17 +00:00
zzz
2fe1f97ee0 Debian: Add runtime dependency on libhttpclient-java,
link to /usr/share/java/httpclient.jar and httpcore.jar.
This is 2 MB of dependencies to replace 20 KB of copied code,
so may not be worth it, esp. for Tails.
2016-04-30 18:08:50 +00:00
zzz
30ecdedf1f Drop old release checklist doc, current one is in checklist.md 2016-04-30 15:42:29 +00:00
zzz
efdb296468 SAM: Log tweaks (ticket #1778) 2016-04-30 15:02:04 +00:00
zzz
43f7897027 Data: Fix NPE calculating the hash of a RI of unknown sig type 2016-04-30 13:58:36 +00:00
zzz
d8e15dbbc5 Blocklist: Add RFC 6598 addresses 2016-04-30 13:25:09 +00:00
zzz
f3610bc285 reduce log level of RI sig failure 2016-04-30 13:23:24 +00:00
zzz
6bdf25bc3d Console: Only display cpuid information on x86 2016-04-30 13:22:22 +00:00
zzz
a2b2c19cbf Eepsite: comment out gzip filtering in cgi context,
causes hung threads, root cause unknown
2016-04-30 13:20:36 +00:00
zzz
3e09413e0a Console: Readme page link fixes (tickets #1789, #1790) 2016-04-30 13:16:18 +00:00
zzz
139f386fb8 Update: Enable libjbigi update for ARM 2016-04-29 22:34:55 +00:00
zzz
9128c79e05 one more deb build fix 2016-04-29 19:32:25 +00:00
zzz
7ae1483cb3 Fixes for building with libgetopt-java 2016-04-29 19:15:41 +00:00
zzz
c3f5c04bea typo 2016-04-29 18:41:06 +00:00
zzz
2e154881ef Debian: Add runtime dependency on libgetopt-java,
link to /usr/share/java/gnu-getopt.jar,
don't build gnu/getopt source
2016-04-29 18:40:02 +00:00
zzz
f2239ba7d1 Debian: Add runtime dependency on gettext-base,
link to /usr/share/java/libintl.java,
don't build GettextResource.java
2016-04-29 16:39:16 +00:00
zzz
5067b00058 javadoc fixes 2016-04-29 15:35:49 +00:00
zzz
c2e486f72c Debian: Refresh patches after jbigi/jcpuid build script changes 2016-04-29 15:30:55 +00:00
zzz
fbeca5ed80 SysTray: Remove systray4j.jar from linux installers
Move SysTray.java to SysTrayImpl.java
New SysTray.java that instantiates SysTrayImpl
by reflection, so the SysTrayImpl.java source is optional
Remove systray4j.jar, systray4j.dll, and SysTrayImpl.java
from Debian source packages
Remove systray4j.jar from Debian binary packages
2016-04-29 14:57:29 +00:00
zzz
d885e00c64 News: Verify received CRL before saving 2016-04-28 22:17:27 +00:00
zzz
52c9bf6d80 News: Parse and store CRLs in news feed 2016-04-28 21:55:17 +00:00
zzz
03adda3bde CPUID: Add version to /logs 2016-04-28 11:43:11 +00:00
zzz
da62a1114c History for prop, -6 2016-04-28 11:05:20 +00:00
zzz
13d3730fd9 Build: Add updaterWithJbigi and updater200WithJbigi targets 2016-04-28 10:54:40 +00:00
zzz
fb5ef83009 fixup jbigi version display 2016-04-28 02:39:32 +00:00
zzz
94056f68e9 fixup @since after prop 2016-04-28 01:49:45 +00:00
zzz
9f31b1fe97 propagate from branch 'i2p.i2p.zzz.gmp6-prop' (head 416ef26df4b91fb9de3e27623551c7f87ec2bfe0)
to branch 'i2p.i2p' (head 9466fdeae338d6b0bf049d86975db9b6ddbd3064)
2016-04-28 01:34:48 +00:00
dev
414522f8be Added jbigi files ignored from previous commit due to not using --no-respect-ignore 2016-04-27 22:26:34 +00:00
dev
91c8e5cf7f Updated jbigi/jcpuid binaries.
Files changed
-------------

  jcpuid:
      - Rebuilt for OSX/Windows/FreeBSD/Linux

  jbigi:
      - Moved to GMP 6.0.0a
      - Removed NetBSD binaries
      - Removed kFreeBSD binaries
      - Removed Solaris binaries
      - Removed OpenBSD binaries
      - Added coreihwl jbigi support
      - Added coreisbr jbigi support
      - Added bulldozer jbigi support
      - Added steamroller jbigi support
      - Added cortex a9 suppot support
      - Added cortex a15 jbigi support
      - Rebuilt _all_ unmentioned binaries


Build notes jbigi:
------------------
Windows: Cross-compile, linux hosts. Compiler: GCC
Linux: Native build. Compiler: GCC
FreeBSD: Native build, VM. Compiler: GCC
OSX: Native build. Compiler: GCC


Build notes jcpuid:
-------------------
Windows-x64: Native build. Compiler: MSVC
Windows-x86: Cygwin on Windows. Compiler: mingw on Cygwin
Linux: Native build. Compiler: GCC
FreeBSD: Native build. Compiler: GCC
OSX: Native build. Compiler: GCC
2016-04-27 21:35:05 +00:00
zzz
a2873c42bc i2ptunnel: Fix can't connect error message for servers when
in router context, like we did for clients earlier
2016-04-27 15:48:42 +00:00
zzz
967074c2d6 Wrapper: Increase default wrapper.log max size,
so a thread dump is more likely to fit in a single file
2016-04-27 15:46:24 +00:00
zzz
f35eaaf194 i2psnark: Add CommandLine to jar 2016-04-27 14:27:38 +00:00
zzz
6a71c23fd4 Addressbook: Check inner sig even if old name not found
More logging cleanup
2016-04-26 13:50:34 +00:00
zzz
fc8b72768a NamingService, BFNS: Add API methods to lookup all reverse entries
Addressbook: Use new API methods to simplify delete-all code
i2ptunnel: Output full authentication line
HostTxtEntry: More tweaks for i2ptunnel
2016-04-25 19:25:30 +00:00
03887826e8 Use table for transport legend 2016-04-25 12:03:38 +00:00
zzz
0ac83bd7c1 i2ptunnel: Enhance registration authentication page
- Enable form
- Switch to multipart form for getting old private key file
- Add advanced authentications
PrivateKeyFile: Add InputStream constructor for i2ptunnel
2016-04-24 21:03:10 +00:00
zzz
2a34d1c44a HostTxtEntry: Fixups for use by i2ptunnel
i2ptunnel: Add new registration authentication page
- Remove old, unused hostname signature generation
PrivateKeyFile: Ensure initialization before returning private keys
2016-04-24 18:10:10 +00:00
zzz
799d90e1b5 Addressbook: Move HostTxtEntry to net.i2p.client.naming,
in prep for use by i2ptunnel
2016-04-23 18:07:35 +00:00
zzz
f72753f3eb Addressbook: Store last-modified date
SusiDNS: Display signature validation on details page
2016-04-23 17:11:50 +00:00
zzz
d97908b430 SusiDNS: Add support for multiple dests per hostname 2016-04-23 16:52:15 +00:00
zzz
2fb8faa166 Addressbook:
- Enable parsing and handling of 'remove' actions
- Logging improvements
BFNS: Limit max dests per host
HostTxtEntry: Test improvements
2016-04-23 15:53:02 +00:00
zzz
e016c87fba add routerinfo to command line 2016-04-22 23:47:39 +00:00
zzz
75dd22510b Addressbook: Fix changedest action
- Implement adddest action
- Logging improvements
BFNS: Fix lookupAll() NPE
- Fix addDestination() UOE
- Support long property values
DataHelper: Properties methods cleanup
HostTxtEntry: Test improvements
2016-04-22 23:37:55 +00:00
zzz
55de82bb50 Addressbook: Add tests for Daemon to read local subscription file
More HostTxtEntry 'remove' methods and tests
2016-04-22 12:58:27 +00:00
zzz
4f262f6140 Addressbook: Use new NamingService API methods in action handling
- Refactor HostTxtEntry to consolidate properties writing
- More HostTxtEntry tests
- Start of 'remove' entry handling
Blockfile: Cleanup unused code
- Add Iterable interface to SkipList
2016-04-21 14:37:38 +00:00
zzz
34e390909e Build: Add some config checks before signed-updater tasks 2016-04-20 21:51:44 +00:00
zzz
9b726a8963 BlockfileNamingService: Implement new NamingService API
methods for multiple destinations per hostname
2016-04-20 21:04:30 +00:00
zzz
a0ba623061 Drop kytv's router and news certs 2016-04-20 17:48:19 +00:00
zzz
9ca8a7752a drop unused Blockfile classes 2016-04-20 17:36:13 +00:00
zzz
a4265a23ba BlockfileNamingService: Don't upgrade Android/ARM to version 4 for now,
too slow
2016-04-20 15:23:12 +00:00
zzz
b57b43247d Blockfile: Fixes for finishing interrupted database migration
by tracking version of each list, and catching some exceptions
2016-04-20 15:06:38 +00:00
zzz
436fee9200 Blockfile: Add generics, part 4 2016-04-20 13:08:42 +00:00
zzz
0067c8d1bd Blockfile: Add generics, part 3 2016-04-20 12:59:24 +00:00
zzz
0d19fe44c2 Blockfile: Add generics, part 2 2016-04-20 12:49:03 +00:00
zzz
4d2c227b0d Blockfile: Add generics, part 1 2016-04-20 12:40:28 +00:00
zzz
1a8847d177 Blockfile: Add method to change serialization schema for a skiplist
Fix delIndex() method, broken and previously unused
Improve javadocs
BlockfileNamingService: New database version 4, allows for
multiple destinations per hostname
Disallow database version higher than supported
2016-04-20 00:41:45 +00:00
zzz
e9cf4c21b7 NamingService: Add new API methods for multiple Destinations per hostname
Improve javadocs
2016-04-19 15:11:37 +00:00
zzz
25bce1031b Addressbook: Add sign/verify methods for inner signature
Add preliminary handling of incoming actions
2016-04-19 00:11:46 +00:00
zzz
909622fbd7 Addressbook: Rename ConfigIterator to HostTxtIterator 2016-04-18 13:17:57 +00:00
zzz
2d3d6f73b5 GeoIP: Disable Debian-style files on Android 2016-04-18 13:02:30 +00:00
44a27008dd Convert various config pages to table layouts 2016-04-18 12:11:05 +00:00
33229a31ee Use tables for /logs 2016-04-18 05:46:58 +00:00
653047146a Put /events controls on a single line 2016-04-18 05:36:33 +00:00
423167fdd3 Make /jobs HTML consistent with other pages 2016-04-18 04:55:57 +00:00
4547d5887d Move name title above name column on /confighome 2016-04-18 04:45:22 +00:00
3790129b30 Fix bug in /configui lang selector when not in advanced mode 2016-04-18 04:32:55 +00:00
aa95750e1f Make /configclients plugin links consistent with other details 2016-04-18 04:29:57 +00:00
ac6cd7e4c6 Add a bunch of ids and classes to routerconsole HTML for styling 2016-04-18 04:12:15 +00:00
zzz
b69677b709 Addressbook: Add initial support for signatures in subscriptions
More cleanups
SingleFileNamingService: Store signature properties on write
2016-04-17 20:20:10 +00:00
zzz
0ceb9576b9 PrivateKeyFile: Add method to specify sig type on creation 2016-04-17 15:55:41 +00:00
zzz
193ad4306e Util: Minor optimization in OrderedProperties 2016-04-17 15:29:18 +00:00
zzz
4290b1e795 Addressbook build:
- Fix main-class in addressbook.jar
- Fix corrupted manifest in addressbook.jar
2016-04-17 15:28:10 +00:00
zzz
3428995906 Build: Fix broken build from scratch in jetty build.xml 2016-04-17 12:43:43 +00:00
zzz
ca3f9963c6 Addressbook: More cleanups 2016-04-16 21:01:05 +00:00
zzz
ebbf7f23ac Addressbook: Cleanups
in advance of new subscription protocol work:
- finals
- Add Iterable interfaces
- Comment out unused methods
- public->private methods
- Close resources in finally blocks
- Javadocs, spelling fixes
- Increase max subscription size
- LinkedList -> ArrayList
- Improve while loops for reading lines
2016-04-16 18:35:46 +00:00
zzz
696c2152b3 Tunnel build stat tweak (commented out) 2016-04-16 16:21:28 +00:00
zzz
b66bc39db3 log tweak 2016-04-16 16:14:30 +00:00
zzz
df16ce6f77 javadoc note 2016-04-16 16:11:57 +00:00
zzz
a438722eed TunnelId: Add max value check 2016-04-16 16:10:56 +00:00
zzz
4e635aa485 Console: Add JSTL version to /logs 2016-04-16 16:05:19 +00:00
zzz
25fe886e72 Update version warnings
Add OpenJDK check for ARM
Uncomment SystemVersion.main()
2016-04-16 15:53:34 +00:00
zzz
5a2975ba65 SOCKS: Fix NPE on lookup failure in SOCKS 4a
Remove duplicate lookups in SOCKS 5
Log tweaks
Streaming, i2ptunnel: Catch null destination in connect() calls
Synchronize Connection.setRemotePeer(); remove _remotePeerSet field
2016-04-13 13:40:46 +00:00
zzz
094cf14d4a Debian:
Prep for dependency on libtomcat7
Doesn't work yet, breaks susidns.
glassfish-javaee for jstl.jar and standard.jar version 1.2 won't work with tomcat7,
it's ancient and not compatible with recent el libs.
Add back option to depend on libjakarta-taglibs-standard and libjstl1.1-java which are version 1.1.2,
but not clear if they will work with tomcat7 either, even though they are
dependencies of libjetty8-extra-java.
We switched from JSTL 1.1.2 to JSTL 1.2 when we went from Jetty 5 to Jetty 6 in 2012.
1.2 libs are not available anywhere except for Glassfish, and
Debian only has the ancient Java EE 5 Glassfish 2.1.
Not clear there's any way to get susidns (and bote) to work with both Tomcat 6 and 7.
- Fix wrong jsp-api version
- Fix other minor errors in install and links files.
- Log stack trace for Jetty warnings if log level is WARN
- SusiDNS: Move standard.jar and jstl.jar out of WEB-INF/lib, where Tomcat 7 build refuses to find them
2016-04-07 14:38:30 +00:00
zzz
5c8eab9dfb Debian: Add dependency on glassfish-javaee for jstl.jar and standard.jar version 1.2
don't echo comments in debian/rules
2016-04-04 18:07:43 +00:00
zzz
ae5828fdb1 history for prop, -1 2016-04-03 15:20:28 +00:00
zzz
b79471e0ca propagate from branch 'i2p.i2p.zzz.debian' (head c630b2a47f63476018a63783a9ae2a8a58503d87)
to branch 'i2p.i2p' (head 700a07a64359e4f328d1002e559f4585c6f02f19)
2016-04-03 15:16:52 +00:00
zzz
18391ac7db another fix 2016-04-03 14:19:20 +00:00
zzz
c3a1f153c1 another fix 2016-04-03 13:53:03 +00:00
zzz
d940aa5a44 typo 2016-04-03 13:35:12 +00:00
zzz
d6b1f813a8 Debian: Fixes for with-libjetty8-java builds 2016-04-03 13:04:23 +00:00
zzz
f867a9d4ce Debian: Update launchpad instructions
Add debian build instructions
2016-04-02 13:30:15 +00:00
zzz
e2f048b2ac Debian:
Add dependency on libjetty8-java and libservlet3.0-java packages
Remove those binaries in debian builds
Prep for dependency on libservlet2.5-java package
Prep for dependency on libtomcat6-java package
Prep for dependency on libtomcat7-java package
Prep for dependency on libjakarta-taglibs-standard-java package
Prep for dependency on libjstl1.1-java package
Add build properties for building with packages
Rework of apps/jetty/build.xml for building with packages
Redefine debian/ as the files for the jessie build
Make debian-alt directories for ubuntu builds
Move debian/changelog to debian-alt/trusty/changelog
Move debian-alt/jessie/changelog to debian/changelog
Add apps/jetty/jettylib/jsp-api.jar to classpath for jsp builds
2016-04-01 18:19:06 +00:00
a834cef1f4 added devscripts to list of needed debian packages 2016-04-01 16:24:57 +00:00
zzz
a493a2842a propagate from branch 'i2p.i2p' (head 809274054ef446273ea312a631fe7482fa53c030)
to branch 'i2p.i2p.zzz.debian' (head 437e22ee74e32e103bb8475007b1d1a2f995ef28)
2016-03-31 22:42:52 +00:00
zzz
f3c679e615 Debian: Update debian-alt files based on 0.9.25 released packages.
Delete files in debian-alt if the current package version
is now the same as what's in debian/
debian-alt/precise/ contains fixes for precise builds.
2016-03-31 21:14:46 +00:00
zzz
e69f39f6e3 Debian:
Add build property to prevent bundling of geoip.txt and geoipv6.dat.gz
2016-03-31 14:51:42 +00:00
zzz
b95f30b7d6 build: add missing distclean targets 2016-03-29 22:35:38 +00:00
zzz
17b1d524de Debian: Delete debian-alt in debian-tarball target
Add debian-release-tarball target
2016-03-29 19:06:56 +00:00
zzz
66be14016b Debian: Add alternate debian files for other series 2016-03-29 12:51:38 +00:00
zzz
4be46d8299 Debian: Restore --with quilt in debian/rules,
inadvertently removed in previous checkin, which broke patch.
2016-03-28 10:43:41 +00:00
2fb0572e08 updated ant debianhowto to reflect the needed libwrapper package on debian 2016-03-27 21:00:34 +00:00
zzz
169fd56527 Transport:
Include Maxmind geoip-api-java library v1.3.1 (LGPL v2.1)
Use Maxmind database for geoip lookup if it exists
Debian:
Don't bundle geoip.txt and geoipv6.dat.gz, depend on geoip-database instead
2016-03-27 12:55:28 +00:00
zzz
97a6cbda3e Debian: Set bootclasspath in override.properties
Require openjdk-7-jdk to build hso we have the correct bootclasspath jars
2016-03-26 17:28:58 +00:00
zzz
51e04f7c6e Debian: Remove libcommons-logging-java build dependency
mtn-ignore tweak
2016-03-26 15:26:55 +00:00
zzz
ee138a2b36 Build:
Don't bundle launch4j licenses in non-windows builds
Clarify in LICENSES.txt that launch4j is not bundled in non-windows builds and packages
Debian:
Change maintainer
Remove Debian patch that drops the launch4j licenses
2016-03-26 14:44:37 +00:00
zzz
5405792fad Debian:
Add missing patch with update for .25
Add missing line to require wrapper
Add launchpad help document
Add .24 and .25 releases to changelog
2016-03-26 13:56:57 +00:00
zzz
1da9c21f13 drop kytv certs 2016-03-23 13:53:26 +00:00
zzz
7eed4fa97b build dependency tweak 2016-03-23 13:46:33 +00:00
zzz
49ff78cf0e 0.9.25 2016-03-21 23:47:02 +00:00
zzz
c1b6e1be87 BuildHandler: Fix for leaky counter of outstanding lookups 2016-03-21 23:37:24 +00:00
zzz
c84dd527b7 Debian: Updates from the 0.9.24 release, including patch refresh, not checked in at the time.
Cherry-picked out of
https://launchpad.net/~i2p.packages/+archive/ubuntu/i2p/+files/i2p_0.9.24-1ubuntu1.debian.tar.xz
The files in http://deb.i2p2.no/pool/main/i/i2p/i2p_0.9.24-1~deb8u+1.debian.tar.xz
are somewhat different.
Note that some files out of that tarball are apparently older than what is in our debian/
directory and were not copied over.
Some of the changes may be for Ubuntu and will not work for Debian.
Kytv may have had a local debian/ directory for Ubuntu builds that was not checked in anywhere.
Untested. Another patch refresh for 0.9.25 may be required.
To be fixed up after the 0.9.25 release.
2016-03-21 18:25:17 +00:00
zzz
b0aaf64cec Console: Use i2pwiki.i2p for plugins directory link 2016-03-21 14:33:13 +00:00
zzz
557f16b8d5 NetDB: Improve handling of deferred search result jobs 2016-03-20 13:41:26 +00:00
zzz
ed72847374 Add SystemVersion.isOpenJDK()
Add warning for OpenJDK + ARM
2016-03-20 13:21:40 +00:00
zzz
645bd3d383 propagate from branch 'i2p.i2p' (head 110585552852c1f9c61a3a2efb4f17d62b0c1b2e)
to branch 'i2p.i2p.zzz.test2' (head 558ec52091868b7fa66af462f84044df1bede8cb)
2016-03-19 15:18:17 +00:00
zzz
2e7a7f26f8 take out code for stats removed in .24 2016-03-19 15:18:07 +00:00
zzz
3474b827b0 add raw signing test 2016-03-19 15:16:38 +00:00
zzz
25514e9848 tx pull 2016-03-19 13:32:24 +00:00
zzz
d00c08dcd7 disable torontocrypto reseed, no ETA for restoration 2016-03-18 20:01:07 +00:00
zzz
d64e6bb17d new backup news url 2016-03-16 18:55:39 +00:00
zzz
855215e840 SU3File: fix bulksign of .xml and .xml.gz files 2016-03-15 20:42:53 +00:00
zzz
674a77baca SU3File: bulksign .xml.gz files 2016-03-15 19:55:05 +00:00
zzz
c9f025a44d GeoIP update 2006-03-02
add v4 script
2016-03-15 18:21:50 +00:00
zzz
a61c44ba42 remove update.killyourtv.i2p 2016-03-15 18:20:36 +00:00
zzz
c869d3adc4 jetty config to disable context listing 2016-03-15 14:08:28 +00:00
zzz
387dc98e11 remove dead kytv sites 2016-03-15 13:53:24 +00:00
zzz
319d40146d Router: Fix corner cases maintaining local leasesets (ticket #1768) 2016-03-14 15:13:26 +00:00
zzz
2e3f5d0de9 UPnP: Fix NPE in HTML output on /peers (ticket #1779) 2016-03-12 13:55:03 +00:00
zzz
dc36de667d Home page: Replace pastethis with zerobin 2016-03-12 13:44:40 +00:00
zzz
0904500398 Susimail: Fix NPE 2016-03-12 13:43:45 +00:00
zzz
74e8cf79bd Peer selection: Don't truncate data used for random slice 2016-03-11 01:53:21 +00:00
zzz
b7498b564a add reseed 2016-03-11 01:48:30 +00:00
zzz
6d40e87032 tweak for consistent tagging 2016-03-05 14:58:55 +00:00
zzz
1f088ff3e5 NetDb: Look in all SSU addresses for introducers in the expiration check 2016-03-01 13:42:03 +00:00
zzz
50d038af5d NetDb: Search for new leaseset before expiration
Reduce expiration for router infos with introducers
More negative cache checks
Log tweaks
SSU: Switch introducers less often
2016-03-01 13:30:30 +00:00
zzz
ffa4d6580d i2psnark: Fix handling of HAVE messages received before metainfo 2016-03-01 13:09:18 +00:00
zzz
bf2f3762af add missing reseed cert 2016-02-28 14:22:22 +00:00
zzz
35e4b3c859 javadoc typo 2016-02-28 14:04:40 +00:00
zzz
4910413482 fail javadoc task if it has errors 2016-02-28 13:54:28 +00:00
7ccca9ef3c EdDSAEngine: one-shot mode tests 2016-02-28 04:18:04 +00:00
6e7f015d4b Add tests to check that an EdDSAEngine object can be reused with the same key 2016-02-28 03:37:03 +00:00
zzz
80860232d7 i2ptunnel: Don't default to a private key file that exists (ticket #1628)
Fix build.xml war dependency tracking
2016-02-27 16:17:25 +00:00
zzz
d28f983c46 Utils: Add main classes to i2p.jar and router.jar
for simple command line access to utilities
2016-02-26 18:12:11 +00:00
zzz
0de1ca161c CPUID: Restore AES-NI diagnostic output, inadvertently removed 2016-02-26 15:36:00 +00:00
dev
9445690cb1 Fixed OSX include search path. 2016-03-12 19:36:21 +00:00
zzz
b3f37db33f i2ptunnel:
- Fix hostname signature not finding private key file
 - Hide hostname signature if not successful
 - Null check for hostname signature failure
 - Make add-to-addressbook link a button
 - Add QR code generation
2016-02-26 15:25:01 +00:00
zzz
5f7d636738 Console: Don't display error after clicking restart on /graph page (ticket #1582) 2016-02-25 17:27:47 +00:00
zzz
90a915b8b5 log message clarification 2016-02-25 14:59:20 +00:00
zzz
248deaecbb Console: Add X-Content-Type-Options header everywhere (ticket #1763) 2016-02-25 14:56:06 +00:00
zzz
a79b25d7b1 Router: Log full path to wrapper.log when dumping threads 2016-02-25 14:18:26 +00:00
zzz
d9a7dc0233 Transports: Increase connection limits for class N and higher 2016-02-25 13:58:16 +00:00
zzz
f34a05c35d i2ptunnel: Fix default shouldBundleReplyInfo setting for non-http servers 2016-02-25 13:52:00 +00:00
zzz
8e4b7e3847 News: Set initial news to current date 2016-02-22 16:19:42 +00:00
zzz
eb094ba0ef Console: Improve news CSS (ticket #1710) 2016-02-22 16:04:42 +00:00
zzz
87d7e10841 I2CP: Improve client error message when internal router connection fails 2016-02-22 13:04:57 +00:00
zzz
7d35a4e1b9 Transports: Increase default max inbound bandwidth
Increase minimum in/out bandwidths
2016-02-21 22:17:38 +00:00
zzz
fc1268dd5b Graphs: Increase font size 2016-02-21 22:11:48 +00:00
zzz
abb52331a5 /configfamily tweaks 2016-02-21 14:04:41 +00:00
zzz
fa44a952ed make renderers package private 2016-02-21 14:02:12 +00:00
zzz
a3cac88c91 h1 css tweak 2016-02-21 14:00:40 +00:00
zzz
04614ac6f8 add i2pd-dev family cert 2016-02-21 13:59:39 +00:00
zzz
bd49b1d4bd Crypto: Blacklist certificates by SHA1 hash,
not by serial/CN/OU
2016-02-20 01:41:23 +00:00
zzz
40894663c2 Clock: Add sanity checks to detect invalid system clock 2016-02-19 17:01:40 +00:00
zzz
7d6fe011db i2ptunnel: Change Content-encoding to Content-Encoding
(thx orignal)
2016-02-19 14:37:02 +00:00
zzz
451cb2573a log tweak 2016-02-19 02:51:11 +00:00
zzz
238ebc23e2 Crypto: Check for revocation when reading in certificates 2016-02-19 01:37:41 +00:00
zzz
910822ecf2 Add utilities for loading CRLs from disk and checking certs for revocation 2016-02-18 23:54:56 +00:00
zzz
9fba12519f Transport:
- Implement mayDisconnect() for outbound connections also
- Run UDP idle disconnect loop faster if floodfill or near connection limit
NetDB:
- Call mayDisconnect() after direct netdb store
- Fix check to publish RI faster, broken in .24,
  we were publishing at every check,
  causing increased load on floodfills
2016-02-18 22:27:17 +00:00
zzz
3a28680162 /confignet: Clean up display and form handling
for specifying a fixed host name or IP
2016-02-18 16:10:14 +00:00
zzz
fa12967873 Add qr icon, to be used in buttons
created by me, public domain
2016-02-17 14:21:51 +00:00
zzz
9f0640ca2d log tweak 2016-02-17 14:17:37 +00:00
zzz
c385ad8f1d OCMOSJ: Don't wait until lease grace period has expired
to switch to a different lease
2016-02-17 14:16:53 +00:00
zzz
8faafc00b0 set request encoding 2016-02-17 14:13:58 +00:00
zzz
8498d7d128 i2psnark: Increase max files per torrent to 2000 2016-02-17 14:13:00 +00:00
zzz
455f32faa7 SAM: Don't log an error on datagram send success!
set i2cp.fastReceive=true
log tweaks
2016-02-17 14:11:18 +00:00
zzz
27d0a81bcb i2ptunnel: Improve layout of blacklist radio buttons on editServer.jsp 2016-02-17 14:06:12 +00:00
zzz
52a37d170f Imagegen: Add text to QR codes 2016-02-13 20:13:12 +00:00
zzz
236155791d Console: Add translation debug option 2016-02-13 16:29:49 +00:00
zzz
8ef593fe98 Data: New Hash.toBase32() method 2016-02-13 15:35:57 +00:00
zzz
e65bd26ad5 I2PTunnel:
- Add options to block by referer and user-agent
- Increase size of access list field in form
- Log blocked destinations in b32, not b64
- Strip X-Runtime header
Streaming;
- Log blocked destinations in b32, not b64
2016-02-13 15:31:38 +00:00
zzz
071769679d Javadoc fixes in imagegen, sam, crypto
package.html files for imagegen
2016-02-13 15:17:41 +00:00
zzz
6ab5b84979 Crypto: EdDSA precedence fix 2016-02-10 16:36:40 +00:00
zzz
981b708230 Crypto: Use new internal key generation instead of calling
out to keytool; save CRL for new su3 amd family keys
Allow su3 bulksign for xml files (news)
2016-02-09 20:48:23 +00:00
zzz
651c1b6545 Crypto: Fix raw (su3) signing, broken in test2 prop (-2) 2016-02-09 16:39:09 +00:00
zzz
e402bfaa81 history for prop, -3 2016-02-08 21:33:36 +00:00
zzz
241bb3812c propagate from branch 'i2p.i2p.zzz.sam' (head d5c193915251826fe4f5dcd58c36f74714495fd4)
to branch 'i2p.i2p' (head 5ad07e5b5ef68fddeec919c04c6c49178b6a6b31)
2016-02-08 21:24:06 +00:00
zzz
55addfc739 Fix bug receiving datagrams on v3 sessions with UTF-8 IDs
Add test for tag options
2016-02-08 17:30:01 +00:00
zzz
84b94368a9 BOB: Fix invalid output after getnick (ticket #1204) 2016-02-08 13:22:38 +00:00
zzz
8f667a0463 Use I2CP option names, not SAM option names, for setting tag options in SESSION CREATE/ADD 2016-02-07 20:53:09 +00:00
zzz
d962be9d7e SAM v3.3:
- More master session option checks
- Add support for SEND_TAGS, TAG_THRESHOLD, EXPIRES, and SEND_LEASESET
  (untested)
- Consolidate dup code in SAMv1Handler
- Change Session to extend SAMMessageSess
- Pass options down to v1 handlers in case we need it later
2016-02-07 18:45:26 +00:00
691e274ca7 Linting dep-ann: Added @Deprecated annotations in i2psnark, i2ptunnel, ministreaming, routerconsole, streaming 2016-02-06 22:38:10 +00:00
b1eaa772a1 Linting dep-ann: Added @Deprecated annotations in BOB and i2p_sdk 2016-02-06 21:32:28 +00:00
79bb3f6cc4 Added @Deprecated annotations to router classes/methods 2016-02-06 20:39:58 +00:00
zzz
b6deae9b23 SAM v3.3: Tests and fixes for REMOVE; don't close underlying I2PSession
- Don't remove a non-subsession with REMOVE
2016-02-06 17:51:23 +00:00
zzz
edde533e1b SAM v3.3: Fixes after testing
- More error checking
- Better error responses
- Fix listen port and protocol for DATAGRAM and RAW
- Fix adding sessions with duplicate dests to DB
- Add more sessions in SAMStreamSink
2016-02-06 16:56:37 +00:00
zzz
ceb7791541 test tweaks 2016-02-06 15:08:23 +00:00
zzz
68c617950c SAM v3.3: Fixes after testing
- Fix master acceptor
- Clean up error message generation
- Add basic master session test for SAMStreamSink
2016-02-06 13:44:08 +00:00
zzz
62ad7996f1 SAM v3.3: Fixes after testing
- Set Master properties in handler, not in session, so they take
- Create subhandlers for the subsessions
- Create socket manager with preferred createDisconectedManager()
  so we get exceptions
- Fix check for master session
- Enhance error messages
- Add basic master session test for SAMStreamSend
- Add check for DESTINATION in SESSION ADD
- Don't return DESTINATION in an I2P_ERROR response
Next to do: master support in SAMStreamSink
2016-02-06 00:21:37 +00:00
zzz
270bc24b62 SAM: Add start() to session interface,
don't start threads in constructors.
Start master acceptor thread.
Javadocs, SAMv2StreamSession cleanup
2016-02-05 18:44:35 +00:00
zzz
9b004bc61f SAM v3.3 master sessions.
Compiles only. Untested, not regression tested, not complete.
2016-02-05 16:10:04 +00:00
dev
f4abb284eb Imported Microsoft Visual Studio Comminuty 2015 project files.
These were used to create the jcpuid-x86-windows.dll
2016-02-03 21:04:10 +00:00
zzz
f9cf6bdc85 Fix typos, history for prop, -2 2016-02-03 20:22:41 +00:00
zzz
ebc4ca8698 propagate from branch 'i2p.i2p.zzz.test2' (head 70ae5494bd7255a03f80838a2f3d8e7c0ce86634)
to branch 'i2p.i2p' (head 05a201cc5c1bd841f32e9268b3019b3a3447f4f3)
2016-02-03 20:02:34 +00:00
zzz
d4d720524e hashCode() and equals() for ElGamalParameterSpec
comments for I2PProvider
2016-02-03 19:04:46 +00:00
zzz
6be7c46038 EdDSA:
- Implement one-shot methods in EdDSAEngine so we don't copy
   the data if all the data is available (ticket #1750)
 - Use EdDSA one-shot methods in DSAEngine
 - Fix API violation if EdDSAEngine object is reused for signing (ticket #1750)
 - Javadocs
2016-02-03 18:39:49 +00:00
dev
eb696c8993 Added correct build instructions for jcpuid on windows. 2016-02-03 18:31:18 +00:00
zzz
7901784a71 Add secure.thethinhat.i2p to console home page and hosts.txt
Approved at Feb. 2 meeting
Icon license: public domain
2016-02-03 14:12:50 +00:00
zzz
4e55edc049 minor cleanup and javadocs for previous checkin 2016-02-03 13:32:31 +00:00
zzz
acdaa60de3 Console: Custom icons for non-webapp plugins, from cacapo (ticket #1550) 2016-02-03 13:20:22 +00:00
zzz
a70a7a7ed5 Imagegen:
- Return 403 if no code specified in QR or RA
- Mode parameter for html or text in RA
- Set RA text-mode character encoding
- Fix up test page
2016-02-01 14:51:59 +00:00
zzz
2fb1ad035f history for prop, -1 2016-02-01 13:45:09 +00:00
zzz
28a2b82795 propagate from branch 'i2p.i2p.zzz.imagegen' (head 051e08304e7d6d2abaa7eeaf1b57e17bc49c752e)
to branch 'i2p.i2p' (head cd632db729aa84ae0c27c5863cb11820f0adb950)
2016-02-01 13:35:03 +00:00
zzz
bf51d5d9c4 CertUtil: Consolidate PEM encoding (DRY) 2016-01-31 22:24:16 +00:00
zzz
5d1d8b6d4d SelfSigned: Add support for CRL generation 2016-01-31 22:09:39 +00:00
zzz
129fb973f2 update comments 2016-01-29 18:28:43 +00:00
f094bacd67 merge of '01b0b5d0f5aae9882a6ada1fd1a9a7414adec7cb'
and 'ad6ebc8a0672f769ddc142886e0ce9e7fb344180'
2016-01-29 18:23:57 +00:00
be97e84d83 refresh patch 2016-01-29 18:03:33 +00:00
zzz
da3086bbef EdDSA:
- Add hashCode() and equals() everywhere it was missing,
  so we can test keys for equality: Curve, EdDSAParameterSpec, EdDSAPrivateKey, and EdDSAPublicKey
- Speedup for GroupElement.equals()
- Fix public key decode()
- Put unknown class name in exceptions
- indent fixes
Provider:
- Add KeyFactory aliases required for cert.verify()
- Fix EdDSA signature OID
SelfSigned:
- Add simple tests after generation using cert.verify() and key equality
2016-01-29 16:01:23 +00:00
zzz
8badb609e4 Selfsigned: Add EdDSA_SHA512_Ed25519 support
Remove debug output by default
2016-01-29 12:56:26 +00:00
zzz
a1a895e462 Add EdDSA_SHA512_Ed25519ph
Fix EdDSA OID
2016-01-29 03:02:02 +00:00
zzz
9ed185f3d1 Add synch
https://github.com/str4d/ed25519-java/issues/10
2016-01-29 02:40:44 +00:00
zzz
7fdfb5cf12 Put the OID in SigType 2016-01-29 02:23:14 +00:00
zzz
b4d4c93047 New selfsigned key and cert generator,
without keytool, BC, or sun private classes.
To be hooked in to KeyStoreUtil to replace keytool.
2016-01-29 02:08:51 +00:00
zzz
66299cb081 EdDSA notes 2016-01-29 02:04:16 +00:00
zzz
79450bcda6 ElG cleanup 2016-01-29 02:02:34 +00:00
zzz
3a72b0cc63 Crypto: Move I2PProvider initialization
Add ElGamal SigAlgo type
2016-01-28 14:57:07 +00:00
zzz
f200d5cb03 checklist fix 2016-01-27 17:46:31 +00:00
zzz
3ad1db8d74 I2PTunnel: Fix exception message choice that was backwards
for router/non-router context
2016-01-27 16:27:26 +00:00
zzz
bccefb949f 0.9.24 2016-01-27 14:18:08 +00:00
zzz
c6136b5cdb SHA256Generator: Don't fall back to Sha256Standalone,
SHA-256 support must now be in the JRE.
Deprecate all uses of Sha256Standalone, schedule for removal
in 0.9.27. This will require a new Syndie release.
2016-01-27 13:47:46 +00:00
zzz
d2d5a464a3 KeyGenerator: Check that dsax is greater than zero 2016-01-27 13:42:58 +00:00
zzz
6ab814a649 bootclasspath doc 2016-01-27 13:39:25 +00:00
zzz
df0aceb26d add another bootclasspath check 2016-01-27 13:38:08 +00:00
zzz
ddf056cf1d Fixups after review:
Fix arraycopy argument order in unused SocksHeader
Add deleted reseed cert to deletelist.txt
Fix minimum version for SSU extended options
2016-01-27 13:26:22 +00:00
dev
c9818e607f Improved jcpuid build script 2016-01-26 00:06:39 +00:00
dev
305f45fb30 Added jcpuid build instructions for linux/osx/freebsd/windows 2016-01-26 00:06:05 +00:00
ddb9777638 Add new reseed host, bump build 2016-01-25 05:09:12 +00:00
374996d8b2 merge of '7fbf2343aecc5e4d60cf076b89e7ad999f9b1091'
and 'e0b151c2f0595a79a9580334568d9e9c520ed956'
2016-01-25 05:08:24 +00:00
6192aa6910 Switch reseed host per email from reseed admin 2016-01-25 05:05:25 +00:00
8e47ec325d Translation updates from TX 2016-01-25 05:00:23 +00:00
zzz
ed9d403281 ElGamal: Implement key encoding 2016-01-24 21:40:33 +00:00
zzz
f38cfcc937 SigUtil: Enhance ASN.1 parser/generator to support
signatures up to 64K, needed for ElG
Log and javadoc tweaks
2016-01-24 19:02:13 +00:00
zzz
649d7122a2 Add ElGamal signature implementation
Add ElGamal to provider
doesn't work yet,
needs key encoding/decoding and SigUtil support for longer signatures
2016-01-24 16:45:54 +00:00
zzz
ad2561125e final all the crypto classes 2016-01-24 16:37:21 +00:00
zzz
403044fc6c DSAEngine: minor cleanup
ElG KeyFactory: Use getParameters() instead of getParams()
to get the correct class back
SigUtil:
  Use split() in sigBytesToASN1();
  new public ASN1 methods
  Javadoc, args checking
2016-01-24 13:28:03 +00:00
zzz
e7081491ca Fix unit tests I broke 2016-01-23 17:58:16 +00:00
zzz
594abdee55 merge of '8511dd159fa291cbf15fc0ea8bde4b331ed44534'
and 'd577249d0bf080d821db013df9a945dd87217a09'
2016-01-23 17:17:40 +00:00
zzz
c9063f9d9b KeyFactory and KeyPairGenerator for ElGamal.
Stub out decoding key constructors.
2016-01-23 17:12:47 +00:00
zzz
e276febf0a private, final 2016-01-23 14:57:42 +00:00
zzz
592f2449d2 ElGamal classes, from Bouncy Castle 1.53, for I2PProvider.
License: BSD
Encoding/decoding/sigs: todo.
2016-01-23 14:51:52 +00:00
d08f29d7d6 geoip updates (05-Jan-2016) 2016-01-23 08:30:57 +00:00
4342aa6bce Fix erroneous test for equality 2016-01-23 08:28:02 +00:00
zzz
207bfb44f2 Add identicons to sybil page. 2016-01-22 22:53:16 +00:00
zzz
726adaf2bb Add identicons to i2ptunnel address helper conflict page.
Clean up text on the conflict page for readability.
2016-01-22 22:26:46 +00:00
zzz
d16db7b56c Display qr and id images on susidns details page
Don't trim whitespace, messes up title
2016-01-22 20:41:56 +00:00
zzz
c4ea50f06d fix mtn-ignore skipping build.xml files 2016-01-22 20:12:40 +00:00
zzz
5004626d7a Add top-level imagegen to build, javadoc, and licenses
Fix zxing build from top
2016-01-22 20:11:58 +00:00
zzz
48d32943b2 Add random art class, translated to Java from randomart.c in gnutls,
which is BSD licensed.
Heavily modified to add UTF box chars, colors, and HTML options.
Work in progress.
Add random art servlet to the imagegen webapp.
Heavily modified from the example in the identicon package,
which is MIT licensed.
2016-01-22 19:32:13 +00:00
zzz
49d8235661 New imagegen webapp, including
servlets for identicon and qr images.
Heavily modified from the example in the identicon package,
which is MIT licensed.
2016-01-22 19:25:33 +00:00
zzz
21e2600c40 zxing: Add build.xml and i2p notes 2016-01-22 19:04:49 +00:00
zzz
bdd6066fc3 Partial zxing package
This is a small portion of zxing, including only what's required
to generate QR codes.
Pulled from https://github.com/zxing/zxing on Jan. 4, 2016,
rev 4e3abafe3008e02695f894eccf05f8257fca4ee9 dated Dec. 9, 2015.
Contains only the files we need.
Unmodified.
License: Apache 2.0
2016-01-22 19:03:06 +00:00
zzz
04d7c9dfb4 identicon:
Add build.xml
Add i2p notes
Remove commons-logging dependency
2016-01-22 18:55:46 +00:00
zzz
cc21de3fee Partial Identicon package
Pulled from https://github.com/PauloMigAlmeida/identicon on Jan. 4, 2016,
rev 96902d3c7c9733d9da4cce9c5ed424557fc2ec3c dated April 10, 2015.
Contains only the files we need.
Unmodified, changes to follow.
License: MIT
2016-01-22 18:52:47 +00:00
zzz
cf3accb181 Random: Reduce number of PRNG buffers 2016-01-22 16:43:29 +00:00
zzz
a4f75d7b32 Random: Don't bother trying to seed from /dev/urandom on Windows 2016-01-22 16:04:43 +00:00
zzz
9cdd0fc829 Crypto: Fix privkey encoding to follow PKCS8,
ignore example in josefsson draft,
required for keytool to work.
Fix pubkey decode typo.
(ticket #1723)
2016-01-21 21:38:26 +00:00
zzz
f29ed21090 Crypto: Add OID aliases to provider,
required for keytool to work
(ticket #1723)
not working yet, need to fix privkey encoding
2016-01-21 19:06:54 +00:00
zzz
cd5db63286 Crypto: Add I2PProvider,
pass provider args to keytool,
add EdDSA keygen support
(ticket #1723)
not working yet, need sig support
2016-01-21 15:36:54 +00:00
zzz
5074002327 Crypto: Implement EdDSA key decoding
following the draft at
https://tools.ietf.org/html/draft-josefsson-pkix-eddsa-04
(ticket #1723)
2016-01-21 14:43:23 +00:00
zzz
9067dedcc2 tweak family key explanatory text and file name 2016-01-21 13:34:45 +00:00
zzz
179a4a2e56 Crypto: Implement EdDSA key getEncoded()
following the draft at
https://tools.ietf.org/html/draft-josefsson-pkix-eddsa-04
(ticket #1723)
2016-01-21 13:27:33 +00:00
zzz
8243b6922d Jetty: Add gzip filter to eepsite Jetty (new installs only) 2016-01-20 22:40:11 +00:00
zzz
ec27458393 SusiDNS: Replace image (ticket #1301) 2016-01-20 22:37:32 +00:00
zzz
2007e881e5 Crypto: New utils to support private key import/export
Console: New /configfamily, /exportfamily
2016-01-20 21:05:26 +00:00
zzz
d82591ae70 add icon to button 2016-01-20 20:42:01 +00:00
zzz
9d5e8dd785 make network ID configurable for testing 2016-01-20 16:44:40 +00:00
zzz
07e85e095d propagate from branch 'i2p.i2p' (head 45c85fec6458cd0d1a6a6fa2d34b10ee2b9f215c)
to branch 'i2p.i2p.zzz.test2' (head 3ee9968e19867bebb063a98da1184ff4426626cd)
2016-01-19 01:13:09 +00:00
zzz
9bb1a00325 ArraySet implementation 2016-01-19 01:12:51 +00:00
zzz
f0dc76983a BuildHandler: Disable removal of tunnel on next-hop timeout,
as it isn't reliable
cleanup and log tweaks
2016-01-17 19:22:55 +00:00
zzz
71c4505617 add locale note 2016-01-16 17:37:39 +00:00
zzz
acfb0a1e3b add opendocument mime types
source: https://en.wikipedia.org/wiki/OpenDocument_technical_specification
2016-01-15 16:14:06 +00:00
zzz
ff66d9db67 Fix mime type for svg in themes directory 2016-01-15 15:24:40 +00:00
zzz
6edd2b97b9 add zh_TW translation 2016-01-15 00:04:04 +00:00
zzz
cdfd4ca2f4 Move CachedIteratorArrayList from core to router 2016-01-14 13:54:53 +00:00
zzz
308c9da384 remove unused stats 2016-01-14 13:51:42 +00:00
zzz
ca00ea7a76 Fortuna: Add getByte() method 2016-01-13 16:11:39 +00:00
zzz
e2b7f504b0 add i2p-dev family cert 2016-01-13 16:03:56 +00:00
zzz
20547238fc javadoc 2016-01-13 16:03:14 +00:00
zzz
9caddc166b SSU: Don't early-disconnect if we are introducing 2016-01-13 16:02:13 +00:00
zzz
c546b283fd BuildHandler: More early-disconnect cases 2016-01-13 16:01:13 +00:00
zzz
c8197b8181 Tunnels: Fix build request Bloom filter (ticket #1746)
Change from 60s DHS to 60m DBF
Use reply key as filter key, not first part of
encrypted data, to match the specs and hopefully reduce dups
BuildMessageProcessor cleanups
log and stat tweaks
remove deprecated methods
remove some timing measurements
javadocs
2016-01-10 21:22:22 +00:00
zzz
35739289cd Console: Fixed summary bar overflow (ticket #1739) 2016-01-07 14:16:14 +00:00
zzz
68d8c6e556 NetDB: Don't query floodfills if they are too old to
support sig types or encrypted replies (ticket #1742)
2016-01-06 19:38:26 +00:00
zzz
f85d03085b Build: Remove big geoip files from release again 2016-01-06 17:57:06 +00:00
zzz
6917203530 DataHelper: Optimize checks in storeProps() 2016-01-06 17:54:05 +00:00
zzz
144f54eb8c Console: Properly register listen hosts with PortMapper
I2PTunnel: Fixup console links in error pages if console is
           on a non-standard host or port, or on https
PortMapper: Add method to convert wildcard host to actual host
2016-01-06 17:50:06 +00:00
zzz
46af643ca8 Change default source logging from b64 to b32.
To change back to b64, add the following to the RequestLogImpl
section of jetty.xml:
    <Set name="b64">true</Set>
2016-01-06 17:45:35 +00:00
zzz
ee1852f3a4 initialization cleanup and finals 2016-01-03 17:22:03 +00:00
zzz
a141d50902 Refactor Session classes out of SAMv3Handler to their own files 2016-01-03 16:56:44 +00:00
zzz
ab5d4b59fd Cleanup to combine checking and removing a property 2016-01-03 15:48:43 +00:00
zzz
3dbc8408f1 propagate from branch 'i2p.i2p' (head 833ef88c125ba48423bc704701303ba55858336f)
to branch 'i2p.i2p.zzz.sam' (head 7814184e3e7cb4b819a0d7b4ceeda5befbe536c3)
2016-01-03 13:51:03 +00:00
zzz
08a9a01bfb bump to 3.3 2016-01-03 13:50:37 +00:00
0bfe45bebe Start of buildscript for generating updates 2015-12-29 21:18:53 +00:00
3c383ca874 Update router and Java versions in build.gradle after prop 2015-12-29 21:16:42 +00:00
fccd0dad78 propagate from branch 'i2p.i2p' (head 833ef88c125ba48423bc704701303ba55858336f)
to branch 'i2p.i2p.str4d.test2' (head 6f21d8d6c6d4cca5b6442f8effb56841e81a07b6)
2015-12-29 21:08:36 +00:00
dev
3e4d77452a Added support an missing binary for AMD K10 arch. 2015-12-27 13:22:34 +00:00
zzz
2698076fb6 distrust Comodo UTN cert 2015-12-23 11:55:44 +00:00
zzz
2f09389ddd netdb minor cleanups 2015-12-23 10:59:53 +00:00
zzz
8da3257856 cache new family options 2015-12-23 10:50:46 +00:00
zzz
a4546e1045 SSU: Hand all messages pending after establishment to the
outbound queue at once, for efficiency.
This allows more aggressive combining of fragments in packets,
and ensures the priority queue works as designed.
Don't sort outbound messages by size, keep priority order instead.
Log tweaks
2015-12-21 17:19:40 +00:00
zzz
3bce2f5d46 SSU: Fix sent msg count, broken in last checkin
Increase sent threshold from 1 to 2 for mayDisconnect(),
because we send both our RI and a DeliveryStatusMessage
Log tweak
2015-12-21 14:15:40 +00:00
074c5aa16c merge of '22cebc21c21e3a101e03165f26a5e9fddc3648da'
and 'e210f94f3d17359b39a6b24f2a5e1221a86abfd0'
2015-12-20 21:07:16 +00:00
zzz
879b70617b Family: Discard old key property so the separator change will happen 2015-12-20 15:24:35 +00:00
zzz
cad0ab17dc SSU: Fix received msg count, broken in last checkin 2015-12-20 15:23:00 +00:00
zzz
4250f78ddf javadoc fix, bump 2015-12-20 14:33:24 +00:00
zzz
cc4bf8ea16 CertUtil: Add methods to export private keys
Unused so far, to be used for family key
2015-12-20 14:28:44 +00:00
zzz
05b40a220d Sybil tool tweaks 2015-12-20 14:23:59 +00:00
zzz
64f5c662fa synch 2015-12-20 14:20:28 +00:00
zzz
e9146ebc77 Family: change separator from ';' to ':' 2015-12-20 14:17:42 +00:00
zzz
d5990cc0f2 Transports: Add mayDisconnect() advisory which says we
don't expect more messages on this connection; use for BuildHandler
Rename some dest arguments to peer for clarity
UDP: Display messages, not packets, sent/rcvd on /peers
Don't count duplicates in received message count
Count sent messages when sent, not acked
Move some PeerState counters from longs to ints to save space
2015-12-20 14:15:48 +00:00
b6bd497e52 Replaces instances of getBytes() in apps classes 2015-12-20 02:11:42 +00:00
2246e21340 Replaces instances of getBytes() in router classes 2015-12-20 01:26:33 +00:00
c60f3970d1 Replaces instances of getBytes() in core classes 2015-12-20 01:18:38 +00:00
zzz
0b94d866f0 BuildHandler: Improve handling of null 'from' value
when not IBGW (ticket #1738)
2015-12-19 22:17:33 +00:00
zzz
fa6643c5a2 Sybil tool: Fix NPE
Add old version points
Add lookup fail rate points
2015-12-19 22:06:00 +00:00
zzz
d0eaf4d899 BuildHandler: Fix NPE (ticket #1738) 2015-12-18 15:44:11 +00:00
zzz
c59496f30f Console: Consolidate "checked" code 2015-12-18 14:43:31 +00:00
zzz
71d4b5f49f Broadwell/Skylake tweak 2015-12-16 20:52:14 +00:00
zzz
31efa7c980 Recognize Skylake
Do the same checks for Broadwell and Skylake that we do
for Haswell, and check ADX as well, which will be used
in GMP 6.1.
Javadocs
2015-12-16 20:32:54 +00:00
zzz
89e5e1d308 Fix class for nativeJcpuidVersion()
Add output for nativeJcpuidVersion()
Change CPUIDCPUInfo back to package private
More @since fixes
2015-12-16 15:55:39 +00:00
zzz
1e3e02d1f0 CPUID: Clear ECX register to ensure it will work with EAX=7
Tested on linux only
Add nativeJcpuidVersion()
Only call getCPUVendorID() once in getInfo()
Change all @since to 0.9.25 in hopes it will come true
Tab removal
Javadoc tweaks
2015-12-16 15:02:03 +00:00
zzz
8226e92973 Profiles: Don't use same family in a tunnel
Reduce IPv6 mask from 8 to 6
2015-12-16 14:37:40 +00:00
zzz
af26f73f99 Sybil tool tweaks 2015-12-16 14:34:05 +00:00
dev
1f4a266c22 Added more checks to Haswell identification.. 2015-12-15 20:34:28 +00:00
dev
93fbdcd443 Made CPUIDCPUInfo non-abstract to support looking for CPU features during CPU identification. 2015-12-15 17:19:37 +00:00
dev
0e6e90baf0 Cleaned up BMI1/BMI2/AVX2/FMA3/MOVBE/ABM support. 2015-12-15 05:29:58 +00:00
dev
2c8179f057 Added hasBMI2() feature detection and use it to list some Celeron Haswell CPUs as non-Haswell CPUs. 2015-12-14 18:54:58 +00:00
zzz
95946606ef log tweak, bump 2015-12-13 17:35:00 +00:00
zzz
3c5f9d0bc3 RouterInfo: Optimize writing to avoid extra copy;
eliminate caching previously enabled for routers with high memory limits
Log tweak on sig verify fail
DataHelper.writeLong() to write(byte) conversion
DatabaseEntry: Remove deprecated, unused setRoutingKey()
2015-12-13 16:48:04 +00:00
zzz
2155347e4f another writeLong 2015-12-13 16:41:35 +00:00
zzz
db86850d15 Addresses: Catch a rare (Windows only? IPv6 only?) error
when enumerating network interfaces
2015-12-13 16:40:42 +00:00
zzz
97ae1e5034 Cleanup: Don't use DataHelper.writeLong() for a single byte 2015-12-13 16:38:06 +00:00
zzz
fee755bdb7 Show family cert on /certs; fix HTML 2015-12-13 02:42:12 +00:00
zzz
4fe24790fd RouterInfo: Log the full RI, not the hash of the data
(which is useless) on signature verification fail,
in an attempt to find the culprit
2015-12-12 23:14:39 +00:00
zzz
fe3642edd4 CPUID: Multiple bug fixes:
- Add support for extended feature registers EBX/ECX
 - No such thing as EBX for 0x80000001 call; remove getExtendedEBXCPUFlags() method,
   replaced with getExtendedEBXFeatureFlags()
 - Check for support of 6 required Core i3/i5/i7 instructions to enable Haswell,
   since GMP Haswell requires Core i3/i5/i7 support.
   There are Pentium/Celeron Haswells that do not support these instructions.
 - Fix hasAVX2(), hasAVX512(), and hasADX() using wrong register
 - Fix hasAVX512() checking wrong bit
 - Define hasAVX512() as supporting AVX-512 Foundation, not the "full"
   instruction set as previously specified in the javadocs.
 - hasAVX2(), hasAVX512(), and hasADX() need not check hasAVX() first
 - Add missing hasADX() to CPUInfo interface
Also:
 - More diagnostic output in CPUID.main()
 - More javadocs
2015-12-12 22:53:33 +00:00
zzz
68ecd82755 minor cleanup 2015-12-12 14:55:08 +00:00
zzz
2c1b9c2d37 Javadoc fixes
Better OCMOSJ Javadocs
2015-12-12 14:31:52 +00:00
zzz
cddc1b362e Another deadlock fix: remove sync in Router.isHidden() 2015-12-12 13:21:29 +00:00
zzz
89bdbedc0f Sybil: Add start of profile analysis, use for first-heard-about time
Increase pair-distance threat points
2015-12-12 12:43:22 +00:00
zzz
3a4e82f025 Family: Publish pubkey in RI; use it to verify if no cert available 2015-12-12 12:14:51 +00:00
zzz
c8aca62d03 Crypto: Blacklist Verisign G1 roots
match by CN or OU
2015-12-11 22:36:40 +00:00
zzz
8b9bcbc777 SSU: Fix outbound IPv6 errors on Windows without a real v6 address
when explict host is set. Validate addresses before confirming that
we have an IPv6 address. Possibly related to ticket #1538.
javadocs
2015-12-11 17:14:45 +00:00
zzz
00d6a49653 Router: Don't let context clock shifts affect calculated uptime 2015-12-11 17:11:16 +00:00
zzz
ea9c4a1957 Router, naming, I2CP: Increase lookup cache max sizes (except on Android),
reduce max lookup depth, and increase non-floodfill profile bonus
to attempt to reduce load on floodfills
2015-12-11 15:40:11 +00:00
zzz
7680ecbdc4 Transport: More deadlock prevention (ticket #1722) 2015-12-11 15:28:39 +00:00
zzz
00a5d19534 Limit wait for NTP to 45 seconds (ticket #1725) 2015-12-11 15:16:16 +00:00
zzz
2d1ac7b266 Wrapper: Listen for Windows Service shutdown events and shutdown router hard.
As a result, event log will now show "shutdown" instead of "crashed".
2015-12-11 15:13:40 +00:00
zzz
2852383e4e Router: Fix family verification after testing, partially hook into netdb store()
Always use our pubkey to verify our family
Rework caching strategy
2015-12-11 15:10:08 +00:00
zzz
393b593785 Logs: Windows line ending fixes for event log and duplicate message in router log 2015-12-11 15:06:22 +00:00
zzz
32df925fa6 More Sybil tool tweaks 2015-12-10 13:09:33 +00:00
zzz
9b2bbe03ee dont put HTML in Android router logs 2015-12-10 13:07:40 +00:00
zzz
7e872088d0 Router:
- Change addCapabilities() to getCapabilities()
  - Add netdb family sign/verify utility (ticket #1510)
    (verify not yet used)
RouterInfo:
  - Remove addCapability() and delCapability()
StatPublisher:
  - Remove Service interface, not required
  - Consolidate getCapabilities() and network ID here
  - Add family signatures
  - Remove unused coreVersion and stat_uptime (as of 0.9.24)
2015-12-10 13:03:49 +00:00
77a6db1cab Updated history after prop 2015-12-08 05:32:27 +00:00
bb56a11bda propagate from branch 'i2p.i2p.unittests' (head 53586f73fb813f519cdb6a1f7b1b40efec2e35dc)
to branch 'i2p.i2p' (head 628a2c591ca44095e2f93acd026046d4512cf692)
2015-12-08 05:27:03 +00:00
zzz
7ea2be387e Better exception message, so it's in the router log 2015-12-08 02:13:31 +00:00
zzz
81cb62fda7 Sybil tool tweaks and enhancements 2015-12-08 02:09:10 +00:00
zzz
8b42896cc6 Crypto: Consolidate certificate import methods 2015-12-08 02:07:38 +00:00
dev
5df3f404f8 Fixed support for Atom CPUs. 2015-12-08 00:36:49 +00:00
9ba5ad7bb1 Remove 'l' from example apparmor profile 2015-12-06 17:47:22 +00:00
f7ede4bf6f Update timestamp 2015-12-06 17:45:31 +00:00
64f2318720 update debian changelog: new pkg uploaded 2015-12-06 17:43:27 +00:00
34202e6c4e debian: refresh patch 2015-12-06 17:43:07 +00:00
zzz
af8b8ecddd Startup: Increase rekey probability again 2015-12-06 17:35:31 +00:00
zzz
0558bc41a3 Add wrapper deadlock detection to default wrapper.config 2015-12-06 17:33:44 +00:00
zzz
d45dc8d0f3 NetDb: Stub out a "family" indicator (ticket #1510) 2015-12-06 16:52:27 +00:00
zzz
b6e8431bce Console: Don't force profile creation when loading floodfill tab
Don't show negative times
Sybil tool: tweaks
TunnelRenderer: minor cleanup
2015-12-06 16:47:34 +00:00
zzz
826bb54984 minor cleanup 2015-12-06 16:30:46 +00:00
zzz
fdc160cf1d Utils: Move new getSystemTimeZone() from DataHelper to SystemVersion,
which is a better place for it.
2015-12-06 16:28:14 +00:00
5a7fc3f7f4 Update debian changelog 2015-12-06 14:16:43 +00:00
a35ecda992 Debian: java6 can no longer fulfill the requirements 2015-12-06 03:08:23 +00:00
89e60fa8c5 sync debian/changelog 2015-12-06 03:05:42 +00:00
6e2e4ca6d8 allow writing to /tmp/imageio*, needed on some systems to display graphs 2015-12-06 03:03:01 +00:00
eaae06028e remove 'l' from debian apparmor profiles 2015-12-06 03:01:31 +00:00
zzz
997ef73d50 Sybil tool: Test tomorrow's routing keys also
Add netdb stats output
Add avg. ff distance output
Increase penalty for proximity to our keys
Reduce number of RIs output
2015-12-05 13:50:00 +00:00
zzz
ff4d575196 Profiles:
- Change doubles to floats to save memory
  - Move fields to top
Sybil tool: Tweaks
2015-12-04 21:25:25 +00:00
zzz
68c312139e Console: Fix NPE on /profiles
Profiles:
  - Fix first heard about to be earliest, undeprecate
  - Fixup first heard about at profile readin
  - Persist good/bad lookup/store DBHistory stats added in 0.7.8
  - Remove unused DBHistory methods and fields to save memory
  - Change bonus longs to ints to save memory
  - Extend profile expiration time from 3 days to 15
  - Consolidate getLong()
  - Synch fixes
Sybil tool: Tweaks and enhancements
2015-12-04 20:35:38 +00:00
zzz
cab69f6583 NetDb: Fix deadlock (ticket #1722) 2015-12-03 18:07:29 +00:00
zzz
5bd0041f8b Console: Add experimental Sybil analysis tool
requires routerconsole.advanced=true
2015-12-03 17:44:15 +00:00
53ae4125e5 Add time-sync to the systemd unit created by i2prouter install (#1578) 2015-12-02 19:51:00 +00:00
zzz
b53fe37a30 SAM:
- Don't map keys to upper case in parser, corrupts I2CP options
  - Register SSL and UDP ports with PortMapper
2015-12-01 20:14:09 +00:00
zzz
348805f012 i2psnark:
- Consolidate default tunnel length definition
  - Increase max peers and uploaders per torrent
  - Increase default max total uploaders
  - Increase max peers sent and returned in DHT
2015-12-01 20:12:31 +00:00
zzz
72527f4d33 SSU: Allow IP and port in relay request if it matches the source 2015-12-01 20:11:07 +00:00
zzz
dfbbe3e928 Transport: Interrupt DH refiller thread when pool is empty,
to speed refilling and reduce pumper stalls
Reduces empties by 10x
2015-12-01 20:09:22 +00:00
zzz
f778c23f0b SAM: Timeout for first command after HELLO
Better removal of command and opcode from properties
Send error message if no NAME key in LOOKUP
2015-11-30 21:57:55 +00:00
zzz
3c8cc16273 SAM: Use the Destination cache
Comment out some unused methods
SAM client: Add SSL forward support
Handle header line in forwarded stream
Name some threads, number some others
2015-11-30 20:20:55 +00:00
1c1511267d after extended downtime, disabling https://i2pseed.zarrenspry.info/ as a reseed host 2015-11-30 19:08:50 +00:00
zzz
55f729986b properly set protocol value 2015-11-29 16:23:22 +00:00
zzz
23df322056 i2ptunnel:
Change preferred sig type to Ed
   Set permissions on backup tunnel keys file
2015-11-29 15:11:07 +00:00
zzz
d5717ca12d javadoc 2015-11-29 14:52:08 +00:00
zzz
74fac4b1d8 i2psnark: BEP 21 support (upload_only) 2015-11-29 00:19:48 +00:00
zzz
a5a702744f Parser: Allow '=' in values 2015-11-28 23:21:20 +00:00
zzz
1db7613519 one more UTF8 fix 2015-11-28 22:51:00 +00:00
zzz
68b4ad2238 declare 3.2 complete, bump -5 2015-11-28 21:45:36 +00:00
zzz
513e1b9ff8 SAM: Handle UTF-8 in ReadLine (ticket #1488)
Allow forever timeout in ReadLine
Use ReadLine in v1 and v3 handlers
Fix send client closing too fast in v1 stream mode
UTF-8 test and fixes in clients
2015-11-28 21:25:44 +00:00
zzz
dffd441304 SAM: Allow backslash escapes in parser (tickets #1325, #1488)
remove unneeded escape char in other parsers
2015-11-28 18:53:40 +00:00
zzz
87fa1cb1ac SAM: Fix parser to allow spaces in quoted values (tickets #1325, #1488)
Map keys to upper case
Catch some other parse errors
2015-11-28 18:28:15 +00:00
zzz
38c8e017a8 i2psnark: Increase max pieces to 32K 2015-11-28 13:01:00 +00:00
zzz
7b83e23269 HTML fix 2015-11-28 12:56:57 +00:00
zzz
415b51bc49 i2psnark: Fix NPE caused by URL-to-URI conversion in -2 (ticket #1715)
Fix some other similar places
2015-11-28 12:54:41 +00:00
zzz
a03339b120 SAM:
- Use DataHelper to load/store sam.keys
 - Move sam.keys file to config dir (ticket #677)
2015-11-27 22:39:19 +00:00
zzz
b1668bbc11 Fixup after prop, history, bump -3 2015-11-27 21:10:10 +00:00
zzz
9ce8fced02 propagate from branch 'i2p.i2p.zzz.sam' (head b328f0edb961263d7606ea964ecb3f7c319ca1cf)
to branch 'i2p.i2p' (head 7b4c0525be182722ef2cc7b564691f27d997da3b)
2015-11-27 20:58:18 +00:00
zzz
01d23713af test javadoc 2015-11-27 20:49:34 +00:00
zzz
2849aec3c2 Add v3 FORWARD support to sink 2015-11-27 20:34:11 +00:00
zzz
cb979fb685 Allow multiple simultaneous ACCEPT sockets.
Add support for parallel accepts in sink client
2015-11-27 19:39:32 +00:00
zzz
bafec18093 stub out send-with-options 2015-11-27 18:51:59 +00:00
zzz
5adbf9050a Forwarded raw datagrams will include a header line if HEADER=true
Add support for raw with headers to sink client
2015-11-27 18:23:06 +00:00
zzz
3a25a91c33 log tweak 2015-11-27 17:36:42 +00:00
zzz
0519ea476e Add v3 datagram and raw to sink 2015-11-27 17:34:36 +00:00
zzz
48d7f4969c Fix PROTOCOL parsing
Add PROTOCOL test for raw sessions to send client
2015-11-27 16:20:49 +00:00
zzz
ed1567e9f7 short test instructions 2015-11-27 16:05:46 +00:00
zzz
9f625a03fb Fix protocol for V3 datagram and raw sessions
Add V3 datagram and raw sessions to send client
minor cleanups
2015-11-27 15:59:42 +00:00
zzz
e77c5bd05c add session options 2015-11-27 13:44:07 +00:00
zzz
31ace20256 auth and ssl support 2015-11-27 00:46:45 +00:00
zzz
4291450f37 make method private
fix timeout message
add client sink pinger
2015-11-26 23:30:18 +00:00
zzz
6373c8a9ed v1 datagram and raw support for sink 2015-11-26 21:39:18 +00:00
zzz
bd048b04cc Fix ReadLine bug that buffered and lost input;
can't handle UTF-8 for now.
Start support of datagrams and raw in the client
2015-11-26 20:55:10 +00:00
zzz
b9ab933550 client getopt 2015-11-26 18:31:17 +00:00
zzz
626f5415c7 add FROM_PORT and TO_PORT to client 2015-11-26 17:00:32 +00:00
zzz
9367aca50a Notes on STREAM STATUS messages when SILENT=true
Fix one message for STREAM CONNECT that wasn't honoring SILENT setting
PING failure sends a SESSION STATUS message
Implement ping/pong in client
Delay at end of client send so data gets through in v3 mode
log tweaks
Exception catch tweaks
2015-11-26 16:40:45 +00:00
zzz
e5f186f61a fix stopping of reader 2015-11-26 15:02:47 +00:00
zzz
807e5bf966 v3 sink working 2015-11-26 14:14:17 +00:00
zzz
8d7edaae61 Block DSDTestProvider CA cert 2015-11-26 12:54:37 +00:00
zzz
868e5e988c More v3 support
Convert IDs from ints to Strings
Wait for STREAM STATUS
Open 2nd socket for sender
v3 sender working
2015-11-25 22:59:41 +00:00
zzz
612e01cbbf More SAM client cleanup and fixes, beginning of v3 support
v3 unfinished, does not work yet
2015-11-25 20:46:21 +00:00
zzz
13fd613bb8 more client test enhancements 2015-11-25 17:27:37 +00:00
zzz
6b67a70bbd update @since 2015-11-25 16:54:44 +00:00
zzz
6934599eed log tweak 2015-11-25 16:48:44 +00:00
zzz
730dea377a Streaming: Fix recognition of PoisonPacket in ConnectionHandler 2015-11-25 16:48:25 +00:00
zzz
5d07294cc6 require Java 7 in installer 2015-11-25 15:12:54 +00:00
zzz
6081856dd1 client demo cleanup 2015-11-25 14:48:43 +00:00
zzz
92bb2dbda7 Block CNNIC roots also.
Only log once.
2015-11-24 17:18:26 +00:00
zzz
5c4189abdf KeyStoreUtil: Implement system cert blacklist
Fix creation of empty keystore
test enhancements
2015-11-24 15:23:13 +00:00
zzz
2400a77e25 Remove unused USE_FAKE_CRYPTO 2015-11-23 19:49:56 +00:00
zzz
110a0a1b7a Remove singleton SAMv3DatagramServer; hang off of SAMBridge
SAMv3DatagramSession whitespace fixes
@since change to 0.9.24
2015-11-23 18:19:17 +00:00
zzz
302ec7767a Console: Don't show null port in error message (ticket #1712)
History for prop, -2
2015-11-22 16:44:26 +00:00
zzz
1215a70aab propagate from branch 'i2p.i2p.zzz.test2' (head 8fa44268a1dd2b7baaf01806e6994281ab031870)
to branch 'i2p.i2p' (head 44afdaa15ce8a95c112c7d58a5908f401c1a0145)
2015-11-22 16:00:16 +00:00
zzz
ce96234fdb SSU ext. options:
- don't ask for intro if he is indirect
  - ask for intro if our state is unknown
  - debug logging
  - change min to 0.9.23 for testing
2015-11-21 19:45:54 +00:00
zzz
9a9832cb77 Console: Fix escaping of plugin description on /configclients (ticket #1711) 2015-11-21 17:39:10 +00:00
zzz
d30c1ec319 EepGet: Fixes after URL to URI conversion 2015-11-21 17:37:56 +00:00
zzz
7649132259 OCMOSJ: One more place attempting to update our own profile 2015-11-21 14:33:22 +00:00
9efb3c8751 Blockquote formatting part 3 2015-11-21 02:10:12 +00:00
07c9ddb38f Blockquote formatting part 2 2015-11-21 01:05:07 +00:00
be498eaab8 Blockquote formatting 2015-11-20 23:48:55 +00:00
9e8597aa05 Update checklist 2015-11-20 23:24:10 +00:00
5b4a4f6c84 Comment out update.postman.i2p because of lost key 2015-11-20 10:53:01 +00:00
zzz
a468b3e8b4 Build: Remove commons-logging classes from commons-logging.jar (ticket #1679) 2015-11-19 18:56:49 +00:00
zzz
c7d68c2a6c Require Java 7 for SAM
separate option javac.compilerargs7 for Java 7
2015-11-19 17:48:56 +00:00
zzz
16549aa49a Update text docs for Java 7 2015-11-19 17:11:26 +00:00
zzz
b59a8027bb Update: Disable sud/su2 updates (ticket #1709)
Add constraints for no Pack200 support and no certs
2015-11-19 15:40:05 +00:00
zzz
8d9d3fcf95 SSU: Add option to disable extended options
Fix max payload type
2015-11-19 14:15:28 +00:00
1a7bf2a0c3 Rewrite release checklist in Markdown 2015-11-19 10:21:07 +00:00
bb8e6127d3 Add test plan to release checklist 2015-11-19 07:52:55 +00:00
13987b7d50 Release checklist tweaks 2015-11-19 07:52:30 +00:00
dfb8830802 0.9.23 2015-11-19 00:31:15 +00:00
9483e095d9 build.xml: Stop building SUD and SU2 update files in "ant release" (ticket #1709) 2015-11-19 00:30:22 +00:00
zzz
46f42432a2 BOB: change default tunnel length to 3 (ticket #1707) 2015-11-18 22:05:47 +00:00
zzz
599989deba comment re: SSU timestamps 2015-11-18 20:04:45 +00:00
zzz
1e89fac192 SSU: Add support for requesting a relay tag via
Session Request extended options (ticket #1465)
2015-11-18 18:12:23 +00:00
zzz
4c72c08d65 i2psnark: Add skipped length on details page
reorder some logging
volatile
2015-11-18 13:43:14 +00:00
zzz
679fe9b044 more release checks 2015-11-17 14:51:32 +00:00
zzz
6fb0692d57 Centralize time zone code in DataHelper
NewsManager should be a ClientApp, not a RouterApp
2015-11-16 20:04:15 +00:00
zzz
38a1a96db2 revert JobTiming being a clock shift listener, not needed 2015-11-16 19:57:38 +00:00
bbaa6f7f87 Tweaks after review 2015-11-16 19:32:00 +00:00
046ef07efd -29-rc 2015-11-15 19:12:53 +00:00
fc7939b404 Translation updates 2015-11-15 19:12:05 +00:00
dd6a3f14ec geoip updates based on Maxmind GeoLite Country database from 2015-11-03. 2015-11-15 19:07:08 +00:00
zzz
99c9b30e49 another installer build fix 2015-11-14 13:22:35 +00:00
zzz
f5ae9c23fe fix installer tools compile 2015-11-14 02:50:08 +00:00
zzz
23cb4ca764 ditto 2015-11-14 02:07:28 +00:00
zzz
231040ddd8 Profiles: Don't allow creation of our own profile
TunnelCreatorConfig:
 - locking
 - comment out unused code
 - don't set bandwidth stats in profile for ourselves
TunnelDispatcher:
 - don't set tunnel stats in profile for ourselves
BuildHandler, TunnelPool: Minor optimizations
2015-11-14 02:07:01 +00:00
7a75e2e662 up version for interrupt() 2015-11-13 23:32:55 +00:00
e6644236ed Interrupt when cancelling events 2015-11-13 23:28:02 +00:00
zzz
8a1f02aa89 Console: Fix lifetime participating bandwidth display (ticket #1706)
Add locking to HopConfig counts
Split participatingMessageCount stat into two stats,
participatingMessageCountAvgPerTunnel for throttle (same as old participatingMessagecount)
and participatingMessageCount for console (straight total)
Fix calculation of stat for throttle by adjusting for new
stat coalesce time (50 not 20 seconds)
2015-11-13 21:18:21 +00:00
zzz
ded249dd3d add systray dependency tracking to build 2015-11-12 21:00:46 +00:00
zzz
a028bba997 Console: Fix filtering and escaping on /configclients
Fix autostart setting on new client, was inverted
2015-11-12 20:39:58 +00:00
zzz
c609781927 fix compile 2015-11-12 20:02:11 +00:00
zzz
51c5da3f72 lint: don't catch Exception, catch RuntimeException or checked exception.
omits SAM, BOB, reflection, commented-out code, and a few other places
2015-11-12 18:49:13 +00:00
zzz
37a4fcb469 i2psnark: Minor details page reformatting 2015-11-12 16:02:01 +00:00
e93e76a362 Remove netdb.rows.io and its associated certs
The DNS record for the subdomain was removed about a month ago.
2015-11-11 16:36:32 +00:00
zzz
c1afbd37d7 SSU: Version check to send extended options 2015-11-11 13:48:38 +00:00
zzz
3fa2fb4c8d Timers: State fix 4th try (tickets #1694, #1705)
log tweaks
2015-11-11 13:38:24 +00:00
zzz
ffddf415c0 snark add .cue mime type 2015-11-11 13:23:04 +00:00
zzz
03a99adaab snark increase max pieces 2015-11-11 13:22:35 +00:00
zzz
48f294024c snark log tweak 2015-11-11 13:20:42 +00:00
123b4ca460 Fix locking on _nextExpire field 2015-11-09 17:48:19 +00:00
c944fcce96 log if we can't cancel the future 2015-11-09 17:44:54 +00:00
zzz
1451dc6ece More: Don't use DataHelper.readLong() for 1-byte reads, for efficiency 2015-11-08 20:43:42 +00:00
zzz
1aed266f70 Consolidate increments of offset, for efficiency 2015-11-08 19:17:32 +00:00
zzz
e120a8a3a3 Don't use DataHelper.readLong() for 1-byte reads, for efficiency 2015-11-08 18:49:05 +00:00
zzz
a3e16614ae SSU: Prep for extended options 2015-11-08 18:30:51 +00:00
zzz
bdde11c0ef Fix NPE from URL->URI conversion
new URL(null) throws MUE
new URI(null) throws NPE
2015-11-08 18:14:42 +00:00
zzz
63ddf11799 use float for efficiency 2015-11-08 18:14:19 +00:00
zzz
a3b55ccdea cleanup 2015-11-08 16:43:49 +00:00
zzz
8e77188560 Replace URL with URI where possible
URL bad for anon and has traps like equals()
2015-11-07 22:38:05 +00:00
zzz
1e5a35c7f8 Use new split() 2015-11-07 17:45:48 +00:00
zzz
83b923151c propagate from branch 'i2p.i2p' (head e2aa08a93036bcf0d846b8ff67e9cb74de3e4d0f)
to branch 'i2p.i2p.zzz.test2' (head b3d23ed369ba339b9a71dfeb205110458df9ec0d)
2015-11-07 17:08:39 +00:00
zzz
e4ebb9a77d Utils: Add caching string split() 2015-11-07 17:08:27 +00:00
zzz
077c4a073f replaceAll -> replace 2015-11-07 12:47:31 +00:00
zzz
f5bf4ec8ea escape referer 2015-11-07 12:06:56 +00:00
c901010d96 Make parameters of NegativeLookupCache configurable 2015-11-07 02:56:59 +00:00
9f0f1f5ec8 Make more ISJ parameters configurable 2015-11-07 02:46:33 +00:00
7175b1cdb9 Make the search limit configurable 2015-11-07 02:22:17 +00:00
ca4642e0f0 Reduce the memory footprint of Rate objects by changing longs to ints and doubles to floats 2015-11-06 20:19:43 +00:00
6bb156a436 Do not expose ISJ lock 2015-11-06 19:01:44 +00:00
zzz
19090343ba add more links in README 2015-11-06 14:16:25 +00:00
zzz
b15138dd67 i2pwiki.i2p icon
license: creative commons
2015-11-06 01:42:43 +00:00
zzz
5f50f23fe1 Streaming: Split blacklist into one for EC and one for Ed 2015-11-05 21:37:21 +00:00
zzz
d5e2defb5f synch fix 2015-11-05 21:34:47 +00:00
zzz
c1d77dfe5c I2CP: Fix additional connections getting rejected during tunnel open (ticket #1650)
State change cleanups
State checking consolidation
2015-11-05 21:18:01 +00:00
zzz
eca234c187 i2ptunnel: Add longer tunnel options in advanced mode 2015-11-05 20:24:12 +00:00
zzz
1a6074a62b Add lenta.i2p icon, public domain 2015-11-05 17:09:52 +00:00
9baeedbc27 merge of '380c87670c1c931cf39e93d5600c4954c6e13d1e'
and '4fe47402bea065caae229256d58d87e60607602a'
2015-11-04 22:22:58 +00:00
3f91e448c0 Add serialization methods to StatManager, FrequencyStat and Frequency
for easier collection
2015-11-04 21:41:33 +00:00
zzz
3e25ff251b Console: Add new home page links as approved at meeting
exchanged.i2p icon license: WTFPL
i2pwiki.i2p and lenta.i2p: Awaiting icons that meet our requirements
2015-11-04 15:08:44 +00:00
zzz
f8830a759e Threads: More conversions to I2PAppThread 2015-11-04 15:01:56 +00:00
zzz
b15ea8ba2f Timers: Improve OutboundMessageRegistry locking
SimpleTimer2 cleanups
possible fix for ticket #1694
2015-11-04 14:57:07 +00:00
zzz
ef428d559e merge of '7db2f97711361f598cb14aa579cb008ac8438577'
and 'cb9b4af48ca3c515eeddd44aefc040857a109b05'
2015-11-04 14:50:17 +00:00
39d749ba16 Fixed generation of eepget target filenames for basic page URLs, URLs with query parameters, certain edge cases. 2015-11-02 17:27:04 +00:00
zzz
a3a092a454 Utils: Double IP lookup cache size (ticket #1700) 2015-11-01 19:31:22 +00:00
zzz
787921aa89 spelling 2015-11-01 17:29:20 +00:00
zzz
bbb6da2ac6 cleanups, javadoc 2015-11-01 16:47:59 +00:00
zzz
b7dc55e326 checklist update 2015-11-01 00:45:30 +00:00
zzz
805979b987 UPnP: Fix deadlock in callbacks (ticket #1699)
possibly more to do
2015-10-31 22:58:51 +00:00
zzz
c37cc7ad52 Convert remaining Threads to I2PThread or I2PAppThread 2015-10-31 19:13:57 +00:00
zzz
02c1417cc5 update ancient snark docs 2015-10-31 14:20:10 +00:00
zzz
627d0d29db Router: Fix cascading I2CP error (ticket #1692)
caused by not setting message ID.
only happens when serialized (external I2CP)
2015-10-30 16:53:45 +00:00
zzz
c595895877 i2psnark: More consistency and torrent links in messages 2015-10-21 13:22:32 +00:00
zzz
6efce31eed Increase timer thread priority 2015-10-21 13:11:35 +00:00
zzz
f713a19785 Disable TLS_DHE_DSS_WITH_AES_128_CBC_SHA 2015-10-17 20:13:03 +00:00
zzz
abc0f4c720 lint core, console, i2ptunnel, jetty 2015-10-17 17:38:57 +00:00
zzz
71bc55b470 lint core, i2psnark, jetty, susimail 2015-10-17 16:49:37 +00:00
zzz
5f175455c7 lint console,streaming 2015-10-17 15:47:49 +00:00
zzz
9bddba56a0 lint router 2015-10-17 14:38:02 +00:00
zzz
4e6ddfcea3 lint core 2015-10-17 14:01:08 +00:00
zzz
3411a7c884 Crypto: Consolidate duplicate unlimited strength crypto check code 2015-10-17 12:55:39 +00:00
zzz
70921a2b09 i2psnark: Don't balloon files on ARM (ticket #1684) 2015-10-16 22:17:09 +00:00
zzz
dd36176997 big fat Java 6 warning 2015-10-16 21:38:12 +00:00
zzz
fe26052189 add mime type for .mka 2015-10-16 20:54:12 +00:00
zzz
ba1488bcce i2psnark: Add "smart sort" option, set sort based on language (tickets #637, #1303) 2015-10-16 19:45:23 +00:00
zzz
39b218b216 i2psnark: Fix deadlock (ticket #1432) 2015-10-16 14:25:55 +00:00
zzz
b43417bf77 update jetty javadoc link 2015-10-15 18:59:37 +00:00
dev
eec87bd814 Removed error print for cases of 'null' primary, where CPU identification has failed. 2015-10-15 17:42:30 +00:00
zzz
649a63db6f Update: Fix persistence of the available dev version
Java 7 check at startup with persisted versions
2015-10-14 19:18:10 +00:00
zzz
6aa8ed1280 Update: Require Java 7 to download dev builds 2015-10-14 18:22:35 +00:00
zzz
9224afb78d i2psnark: Don't show empty fields on details page 2015-10-13 21:38:19 +00:00
zzz
5e879b85a8 fix installer build 2015-10-13 19:49:18 +00:00
zzz
2c03b434e1 Startup: Delete our old RI from netDB when rekeying 2015-10-13 19:24:30 +00:00
zzz
55a6f44651 Crypto: Test for broken Gentoo ECDSA support
Add SystemVersion.isJava9()
2015-10-11 15:39:28 +00:00
zzz
971a2652e3 adjust date in warning 2015-10-10 19:53:34 +00:00
zzz
68aa8800b6 increase rekey probability 2015-10-10 15:45:54 +00:00
zzz
dd4d12f287 i2psnark: Increase max piece size to 16 MB, max files to 999,
close files faster based on file count (tickets #1626, #1671)
Remove dup synchs
2015-10-10 14:02:48 +00:00
zzz
7063609f05 JobQueue: Only adjust timing for negative clock shifts 2015-10-10 13:33:46 +00:00
zzz
b32c8d5fa4 NamingServices: Add support for lookups prefixed with "www." 2015-10-10 12:29:52 +00:00
zzz
f8163241ef NBI test improvements:
- Try to prevent not-coprime errors
- Minor cleanups
- Javadoc fix
Fix build script typo
2015-10-09 16:35:00 +00:00
843e2a8a0e propagate from branch 'i2p.i2p' (head 4a63eba1606a8ba2448352876b4177d9e4c753a1)
to branch 'i2p.i2p.unittests' (head 051ea486db9f6f5a4327038827763f350369f932)
2015-10-09 10:17:03 +00:00
zzz
419d6a8e18 SimpleTimer2: Additional fix for uncaught IllegalStateException
affecting streaming timers (ticket #1672)
Minor streaming cleanup
2015-10-08 13:42:31 +00:00
dev
6a0d421ed0 merge of '8e2524075b463bca9f87a992a87b439210abbc96'
and 'b6a391f4f621d58d7d94c1fc3f5b58f8679081da'
2015-10-08 01:18:43 +00:00
dev
c1c3a92331 Fixed case statement to be independent of case. 2015-10-08 01:18:38 +00:00
dev
1dfc8187ca merge of '0901b31b94e8472e5578cd5ac685500044fc07de'
and 'c7d6075d6f3c0ea1035d8c839773da25634842e4'
2015-10-07 18:45:27 +00:00
dev
075c4d4822 Changed scripts to be SH compatible instead of bash. 2015-10-05 14:13:38 +00:00
03f9df4ff0 JobQueue: Listen to clock shifts as well as clock changes (ticket #1014).
Restarter: Don't restart the JobQueue or PeerManager (ticket #1014)/undo previous commit.
More to do.
2015-10-04 15:17:26 +00:00
zzz
07fa3eb922 NBI test improvements:
- Output versions
- Only warmup crypto once
- Add -n option to test native only
- Reduce output if only native or only java tested
2015-10-04 13:58:28 +00:00
zzz
f4a6cf2002 Show 'none' if no part. tunnels on /tunnels 2015-10-03 14:06:12 +00:00
zzz
f93da93cf0 Router: Minor cleanup, remove some deprecated and small methods 2015-10-02 13:45:42 +00:00
zzz
b068f9a262 Router: Don't check config files for reload on Android 2015-10-02 13:43:54 +00:00
dev
489ff65e34 Added OSX notei 2015-09-30 16:17:09 +00:00
dev
bf76c57de7 Added FreeBSD cross-compilation instructions. 2015-09-30 15:07:09 +00:00
5fa059b4a8 Adding the new reseed server hosted by our friends at TorontoCrypto. Thanks. :) 2015-09-29 19:41:01 +00:00
2f92b27446 Ticket #1596 - part 2
Removing 193.150.121.66 as a reseed host from the source and its certificate.
2015-09-29 19:30:13 +00:00
dev
2bc87662aa Added 'osx' alias for darwin. 2015-09-29 15:34:57 +00:00
dev
73228a1514 Revamped downloading of gmp files.
Revamped cross-compilation support.
2015-09-29 15:31:42 +00:00
zzz
5d345f65a3 SusiDNS: Hide table headers and buttons if there are no search results 2015-09-28 16:58:18 +00:00
zzz
ccc8c04782 i2psnark: Support adding plain base 32 hashes
convert plain hashes to upper case
2015-09-28 14:52:55 +00:00
zzz
58ccfed41d Addressbook:
- Use Patterns instead of replaceAll()
- Fix isValidDest() for EC/Ed dests
2015-09-28 14:50:53 +00:00
zzz
59b05d4214 Util: Speed up IP address validation by using Apache's implementation (ticket #1198) 2015-09-27 21:54:14 +00:00
f46a902256 Router: Fix soft restarts for 'massive' clock jumps (over +150s or -61s) and recover from standby/hibernate (ticket #1014).
I2P should now recover (better) from a system hibernate/standby and be able to reconnect to peers automatically.
2015-09-27 21:15:51 +00:00
zzz
39b810bd79 Tunnels: Use max of 2 not-failing peers in an exploratory tunnel,
use high cap for the rest; change outbound exploratory
default length from 2 + 0-1 to 3+0.
2015-09-27 16:01:22 +00:00
zzz
22417715e7 javadoc 2015-09-27 15:58:47 +00:00
zzz
d21777fbc1 log tweak 2015-09-27 15:57:53 +00:00
zzz
b22a6bc163 log tweak 2015-09-27 15:57:22 +00:00
zzz
1c3527e1a4 Console:
- Export SSL cert on creation
 - new /certs page to show local SSL certs
2015-09-27 15:56:03 +00:00
zzz
4d7ad6ef7f Console: show 'none' if no leases
log timing for /netdb (ticket #1532)
2015-09-27 15:53:37 +00:00
zzz
3ea8b477d8 Streaming: Move throttler from context timer to streaming timer 2015-09-27 15:14:18 +00:00
zzz
ea4dd12bff SimpleTimer2:
- Fix bug in forceReschedule() that caused subsequent uncaught IllegalStateException;
    forceReschedule() is only used by streaming timers
  - Log uncaught exceptions
  - Enforce 5 second minimum delay for periodic events
  - atomic count
  - de-wtf
2015-09-27 15:10:59 +00:00
a13552dd8d Fix news (ant poupdate), typos in bundle-* 2015-09-25 21:49:47 +00:00
89c14c2e9a javadoc 2015-09-25 20:21:03 +00:00
22b9876b68 Rename _() for translation to _t() for Java 9 compatibility (ticket #1456) 2015-09-25 19:55:36 +00:00
dev
0848e34243 Replaced 0 with NULL to fix miscompilation on windows. 2015-09-24 22:13:33 +00:00
zzz
04690bed9f close before rename 2015-09-24 19:08:36 +00:00
zzz
0faa5ba2f4 i2psnark:
- Rename bad .torrent files instead of deleting them
  - Add mime type for .xz
2015-09-24 18:28:26 +00:00
zzz
04d653a8b9 comment out main() 2015-09-21 15:21:54 +00:00
zzz
3f213cf1db register I2CP with the PortMapper 2015-09-21 15:13:39 +00:00
zzz
53ae727935 synch fix 2015-09-21 14:54:08 +00:00
zzz
62acfc0cae use standard error message 2015-09-21 12:35:39 +00:00
5a2f22b00f history 2015-09-20 19:34:10 +00:00
7dd438b5f0 bump 2015-09-20 19:29:47 +00:00
6685b81834 /configreseed: Add 'Reset URL list' button for revert to default hosts (ticket #1554, thanks dzirtt@gmail.com) 2015-09-20 19:28:11 +00:00
c56f686d8c Fix typo. 2015-09-20 19:23:50 +00:00
zzz
b81cbedd5c format multiplies by 100, so complete is 1.0 2015-09-20 11:08:27 +00:00
zzz
02a0ef3526 include man pages in the update 2015-09-20 00:44:51 +00:00
zzz
cfc0664756 Don't try to fetch subscriptions, news, or plugin updates while in VM Comm system 2015-09-19 19:06:07 +00:00
zzz
2a3b55f3a4 i2psnark: Add check progress output 2015-09-19 17:54:07 +00:00
zzz
287f94ad19 i2psnark: Add recheck/start/stop buttons to details page (ticket #372)
remove dup CSS item
2015-09-19 17:05:09 +00:00
zzz
462c882f4e i2psnark: Improve directory listing efficiency (ticket #1079) 2015-09-18 22:54:32 +00:00
zzz
b8a909c4cc Fix eepget man page (ticket #1631)
retry default was changed to 0 a while ago
2015-09-18 20:43:54 +00:00
zzz
83791b2d10 i2psnark: Don't display "Tracker Error" if torrent is stopped (ticket #1654) 2015-09-18 20:15:06 +00:00
zzz
ff420278c5 only log once 2015-09-18 20:08:40 +00:00
zzz
1a385b6dca i2ptunnel:
- Pass Accept-Encoding header through HTTP client and server proxies,
   to allow end-to-end compression
 - Don't do transparent response compression if response
   Content-Encoding indicates it is already compressed
 - Minor encoding cleanups
EepGet:
 - Send Accept-Encoding: gzip even when proxied
 - Minor cleanups
2015-09-18 18:15:32 +00:00
zzz
64889b2bc2 Streaming: Move remaining timers from the context to streaming's SimpleTimer2;
these were the ones migrated from SimpleScheduler earlier
2015-09-18 14:36:49 +00:00
zzz
bfc6534b20 Don't delete torrent config file after error on initial startup (ticket #1658) 2015-09-17 21:20:21 +00:00
zzz
84abfa0190 Store magnet parameters across restart (ticket #1485) 2015-09-17 20:19:10 +00:00
zzz
d5a0d95c61 news appearance tweaks 2015-09-17 19:51:01 +00:00
zzz
1de840ce59 Profiles: Bias slightly away from floodfills 2015-09-16 21:07:46 +00:00
zzz
0f6176b7bf News: Add author to entry headers 2015-09-16 17:26:03 +00:00
zzz
3d533a406d News:
- Fix retrieval of entry links from feed
 - Linkify entry headers
2015-09-16 16:42:24 +00:00
zzz
37597b8c7d Build:
- Include geoip in update files for next release
 - Add created-by string to release torrents
i2psnark:
 - Store torrent added and completed times in config files, display on details page
 - Display dates on details page in local time zone
 - Add metainfo creation command line support for created-by string
2015-09-16 14:21:02 +00:00
zzz
addc9c5ca3 News: connect it all together (ticket #1425):
- Enable new NewsManager to load/store feed items on disk by UUID
 - News items are stored forever, not lost when they are removed from feed
 - News read in once at startup, not at every summary bar refresh
 - Convert old initialNews.xml and news.xml to NewsEntry format
 - Limit display to 2 news items in summary bar, /home and /console
 - New /news page to show all news
2015-09-15 13:33:29 +00:00
zzz
a2e38503fe News: New /news page and helper to show all news
WIP, not yet hooked in
2015-09-14 16:15:21 +00:00
zzz
7912d7650d News: new NewsManager to maintain current news entries.
WIP, not yet hooked in.
2015-09-14 14:49:20 +00:00
zzz
6f5739b9d8 News: Store/load individual news entries as XML in separate files by UUID.
WIP, not yet hooked in.
2015-09-14 11:06:35 +00:00
zzz
ed3e444d1e log tweak 2015-09-13 13:38:19 +00:00
zzz
ac1a28e988 print usage if no arg 2015-09-13 13:34:51 +00:00
zzz
7117438b04 RIP ugha 2015-09-13 13:34:10 +00:00
zzz
d5cbccf186 checklist update 2015-09-13 13:33:00 +00:00
zzz
fd606064d9 0.9.22 2015-09-12 13:55:30 +00:00
zzz
9d05424202 Router: Reduce rekey probability from 10% to 5% 2015-09-11 13:24:10 +00:00
157d494dee bump build to -8-rc 2015-09-11 00:54:45 +00:00
fa792a9d5e GeoIP db updates from 2015-09-02. 2015-09-11 00:54:03 +00:00
ab134261f0 Translation updates from Transifex 2015-09-11 00:53:13 +00:00
de2431e9ee Fix auto-start of new .torrents in the Snark folder 2015-09-07 18:18:16 +00:00
c4cbd7d5c4 (hopefully temporarily) disable netdb.rows.io as it's been down for nearly a month. 2015-09-06 08:01:28 +00:00
zzz
e978bb81a0 checked in correct file 2015-09-05 14:02:21 +00:00
zzz
2c6edf401f add extra to bumpBuild output after change 2015-09-04 21:15:48 +00:00
zzz
fe69d3b8f7 UPnP: Fix "content not allowed in trailing section" (tickets #481, #1653)
patch from 'kay" in #1653, dev agreement received
2015-09-04 21:05:38 +00:00
61edd01e3d Switch URL/certificate for backup's reseed server 2015-09-04 18:44:05 +00:00
zzz
483d7c43ee Router: Change thread name so it truncates better (ticket #1648) 2015-09-01 11:56:58 +00:00
zzz
7c703953be Data: Cache P256 and Ed255i9 key certificates
- Enable P256 caching
 - Create cached Ed25519 cert and enable
 - Fix cached P256 hashcode
2015-08-31 13:25:58 +00:00
zzz
f577a94012 i2psnark: Change default sig type to Ed25519 2015-08-31 13:19:29 +00:00
zzz
b10b8581cc Router:
- Change default RI sig type to Ed25519, with a 10% chance od
     rekeying from DSA at each restart
   - Don't initialize KeyManager before selecting sig type
   - Don't log KeyManager error when changing sig type
2015-08-29 14:20:13 +00:00
zzz
601376561b add Closeable/Flushable interfaces 2015-08-27 14:36:19 +00:00
zzz
5a11a28a35 i2psnark:
- Return partial piece to coordinator after reject
   - Fix tracking of downloaded portion of piece after reject
   - Send reject on receipt of bad request
   - Mark piece unrequested after receiving bad data, so it
     will be requested again, but not from the same peer
   - Fix NPE in Request constructor on error
   - Fix stuck before completion due to reject handling (ticket #1633)
2015-08-24 17:30:32 +00:00
zzz
b0c3c11bd9 Start work on Jetty 9
targetting 9.2.x for now
Requires Java 7
2015-08-09 13:36:24 +00:00
fde0ae8349 sync debian/changelog with packaged version 2015-08-02 15:06:50 +00:00
b5944045fb sync apparmor rules with the 0.9.21 package 2015-08-02 15:04:08 +00:00
zzz
ecd0231cd0 Fix console SSL excluded ciphers (thx lazyg)
Fix typo in local address in I2PSSLSocketFactory
Another findbugs char encoding fix
Add keystore password option to SU3File command line
2015-08-02 12:58:00 +00:00
zzz
44b35f328b 0.9.21 2015-07-31 14:22:03 +00:00
zzz
f3bb20d750 minor updates after review 2015-07-30 20:41:45 +00:00
20cb284f9d update geoip, bump to -23-rc 2015-07-30 17:03:46 +00:00
b4993d42b3 updated i2prouter po files (deb related) 2015-07-30 07:11:45 +00:00
9b466f3261 refresh debian patch so my automated update builds will run again 2015-07-30 06:52:18 +00:00
zzz
0bf9cb3bf2 add news cert 2015-07-28 13:55:10 +00:00
zzz
9efe60d7a8 Fix processing of translated news 2015-07-27 18:10:01 +00:00
45fe238227 Refactor SchedulerDead tests 2015-07-27 11:50:01 +00:00
e704baddd8 SchedulerDead tests 2015-07-27 08:18:46 +00:00
db9555dba3 Fix test 2015-07-27 06:49:07 +00:00
4b34b49dc1 More MessageInputStream tests 2015-07-27 06:32:53 +00:00
1652bb39e3 Fix Cobertura exclusions 2015-07-27 06:31:31 +00:00
5eda1e0031 JavaDoc paragraphs 2015-07-27 04:29:50 +00:00
b19866cbc4 Refactor part 2 2015-07-27 03:33:30 +00:00
48bcc031da Refactor tests 2015-07-27 02:57:33 +00:00
f1998e6377 Add Mockito libs to streaming tests 2015-07-27 01:52:56 +00:00
6f1bb85397 Separate out streaming integration tests, make them optional 2015-07-27 00:58:42 +00:00
zzz
d848a19ab0 update translations, bump -20-rc 2015-07-26 14:22:33 +00:00
8dcbc9958e I2PSocketManagerFactory tests 2015-07-26 11:55:49 +00:00
63555acd21 I2PSocketException tests 2015-07-26 09:33:11 +00:00
c451014eea I2PSocketEepGet tests 2015-07-26 07:46:13 +00:00
9fad9347c1 Add Mockito library hooks 2015-07-26 07:45:49 +00:00
841e27f35c Add tests for I2PSocketAddress 2015-07-25 15:09:32 +00:00
zzz
bfde521cf9 NetDB: Fix NPE (ticket #1619) 2015-07-25 13:37:45 +00:00
zzz
fea6b8aec3 i2psnark: Fix total_size in metadata message (ticket #1618) 2015-07-25 13:15:56 +00:00
8d3fb0c9a1 Add build harness for ministreaming tests 2015-07-25 12:08:17 +00:00
d662514f74 Move streaming demo out of tests 2015-07-25 11:42:53 +00:00
44bd14bd4d propagate from branch 'i2p.i2p' (head 3a8ae6268555bd2c5d1519c48497677f74e34a76)
to branch 'i2p.i2p.unittests' (head 752d5d999986d2a552e695592c82fa659c1f889c)
2015-07-25 10:01:18 +00:00
1681598dec merge of '30be1cda5a1ad30d33bbd355f4d85785a889c9fb'
and '8ec6b122079156e35f7515afa5eb433a13ce41b0'
2015-07-23 01:31:39 +00:00
809a533573 Updated history 2015-07-23 01:22:12 +00:00
265e4b58a5 Throw DataFormatException if not enough bytes 2015-07-23 01:15:11 +00:00
93854e93b5 bump -18-rc 2015-07-22 23:36:19 +00:00
f6605d05d9 merge of '1ba9885122d9a9ec69c77342719d8464aae244be'
and 'c61353ade089ac0e1fa83fab661dc6893b51b95a'
2015-07-22 23:34:32 +00:00
c20772702a I2PSnark: Don't let tunnels start unless we're starting torrents (regression, #766) 2015-07-22 22:05:44 +00:00
ba5af15c6f Fix KeyCert bug 2015-07-21 01:19:37 +00:00
9af197e590 Add KeyCert test that fails 2015-07-21 01:19:23 +00:00
2f59a4b3e6 Fix test 2015-07-21 00:40:35 +00:00
zzz
8b14afd605 Add SSLSocketChannel wrappers after review
Requires Java 7 to compile
2015-07-20 14:44:22 +00:00
63e934f8f2 Update English PO files 2015-07-17 01:36:45 +00:00
zzz
dd5f804150 Console: Add dates to news headings
Spacing for news headings in summary bar
2015-07-16 18:06:48 +00:00
35b0e99ff0 I2PSnark: Fix torrent-stopping (#766) 2015-07-14 14:33:41 +00:00
zzz
1ed1e4414b Findbugs all over #4
char encoding
2015-07-12 19:19:32 +00:00
zzz
d087fd674b Findbugs all over #3
char encoding, remove FileReader/FileWriter
Fix TunnelConfig bug
2015-07-12 16:34:24 +00:00
zzz
1f9bb046f5 Findbugs all over #2
Mostly char encoding
Use StringWriter rather than OSW->BAOS->String
2015-07-12 16:06:49 +00:00
zzz
914cc120ad Findbugs all over 2015-07-12 14:02:55 +00:00
631a0674ab bump 2015-07-08 21:26:13 +00:00
17d26976d5 lang fixups 2015-07-08 21:25:33 +00:00
dc9d60e261 I2PSnark:
- Fix NPE (#1615, h/t kytv)
- Fix start/stop status resumption on restart (#766, h/t backup)
2015-07-08 21:22:45 +00:00
zzz
2c191e7bf8 Tunnels: New Bloom filter size, increase bandwidth limit (ticket #1505) 2015-07-08 13:40:26 +00:00
zzz
817888c23c i2psnark: Tweak dest display in footer 2015-07-07 18:42:26 +00:00
zzz
1eaf376ee7 Crypto: Check for error return from sign() 2015-07-07 13:46:04 +00:00
zzz
6cb3d1d330 Updates: New news URL 2015-07-07 13:38:44 +00:00
zzz
2681c4b42f Streaming: New config to add to DSA-only list 2015-07-07 13:35:55 +00:00
zzz
05959d5199 SSU: Request outbound bandwidth on the way into the
sender queue, not on the way out, so that SSU requests
bandwidth allocations for each packet in parallel
and competes more effectively with NTCP for bandwidth.
Inbound stubbed-out only.
2015-07-05 12:30:01 +00:00
zzz
113a8a52f3 Transport: Raise bandwidth refiller thread priority
so I/O doesn't stall under high CPU load
- Raise DH generator thread priority to keep
  DH building out of event pumper thread
- Raise PRNG and YK generator thread priorites one notch
- Set I2PThread priority in constructor
Fixes problems mainly seen on Windows, which seems
to be much more sensitive to priority settings
2015-07-05 12:08:33 +00:00
zzz
98a4460bde fix test compile 2015-07-02 15:20:58 +00:00
3645c906e8 merge of 'a0b025f180c1f7befcc1eb504c24140cf9e3fc0f'
and 'e0773d79a9bc8820024206f39686541ddb393c4a'
2015-06-29 20:22:10 +00:00
zzz
fcdd8be7a7 Transport: More fixes for SSU stalling -
Don't skip further bandwidth allocations for SSU, since
it needs the entire allocation to proceed.
Log tweaks
More synchronization of requests
2015-06-29 16:02:07 +00:00
zzz
34f6f65104 UPnP main() test tweak 2015-06-29 15:59:45 +00:00
zzz
4c516cd2af log tweak 2015-06-29 15:58:41 +00:00
8ea6805f8d Prevent double-save for now and auto start all torrents if autostart is already set (don't make the user restart each one). 2015-06-28 19:43:57 +00:00
zzz
23f2261bd9 Apache Tomcat 6.0.44 2015-06-28 12:13:52 +00:00
zzz
6e06d326e3 Use ReadLine for SAMHandlerFactory 2015-06-27 20:31:56 +00:00
zzz
072e4dc2bf Add ReadLine with timeouts
Implement PING
Handle QUIT, STOP, EXIT
synch DatagramServer start/stop
2015-06-27 19:46:45 +00:00
zzz
f56ac66d64 Make DatagramServer a Handler, register with bridge 2015-06-27 16:02:15 +00:00
zzz
c662f17823 Move DatagramServer from SAMv3Handler to its own file,
javadocs
more changes to follow
2015-06-27 15:41:19 +00:00
zzz
246b376ed9 tab cleanup 2015-06-27 14:58:29 +00:00
zzz
194f20e18c V3 Stream Session: SSL for STREAM FORWARD
better exception handling
boolean cleanups
2015-06-27 14:31:55 +00:00
zzz
9b2d416154 Stub out PING and PONG commands.
Handle PING and send PONG. No code for sending PINGs yet.
Don't drop connection if only one token.
2015-06-27 13:15:28 +00:00
zzz
12385f04ec protocol and ports for outgoing datagrams 2015-06-26 23:12:01 +00:00
zzz
49e68bcc86 ports for CONNECT 2015-06-26 21:47:37 +00:00
zzz
b82c1ead72 Add AUTH commands: ENABLE, DISABLE, ADD, REMOVE
Store changes to config file
2015-06-26 21:32:24 +00:00
zzz
33672e6a86 Add authorization
New PasswordManager methods for use by SAM
2015-06-26 20:24:15 +00:00
zzz
876729c24e Add protocol and port notification 2015-06-26 18:51:03 +00:00
zzz
b6cb074c04 Add sam.config file support and -c file option
Add partial SSL support (will require Java 7 due to SocketChannel changes)
won't compile, SSLServerSocketChannel and SSLSocketChannel not checked in,
pending decisions on implementation
Bump version to 3.2
2015-06-26 15:40:20 +00:00
zzz
dd47389ad1 Console: Use registered host/port for eepsite link (ticket #1604)
Jetty starter: Register host/port when started
PortMapper: Add hostname support
2015-06-25 17:00:52 +00:00
zzz
25268e7cb2 Transport: Add failsafe to prevent complete SSU stall waiting
for bandwidth limiter, root cause unknown
2015-06-24 19:11:05 +00:00
zzz
355b2a1528 I2CP: Don't try to decrypt an LS before it's encrypted (ticket #1608)
log tweaks
2015-06-23 21:16:34 +00:00
zzz
975149d049 Router: Increase default outbound bandwidth to 60 KBps;
raise class L/M boundary to match so defaulted routers are still L
2015-06-23 20:50:22 +00:00
zzz
af394e13ad GeoIP: Add countries and flags for Asia/Pacific, Bonaire, St. Barts,
St. Maarten, South Sudan
AP: black flag copied from A1
BL: official flag is France, copied from FR
BQ, SX, SS: PNG files generated from public domain SVG files from Wikipedia
Shortened some other country names (remove "Republic of", etc.)
Change spelling to Macau, Vietnam
2015-06-23 20:33:38 +00:00
zzz
e3f64f6edf Console: Fix NPE on /configtunnels 2015-06-23 20:26:02 +00:00
2fbbfa388e NetDB: Partially revert last NetDB change: flood because we don't want to create a hole in the DHT before publisher resends to somebody else. 2015-06-22 20:11:29 +00:00
zzz
0b4d4ddcbc update hardcoded tags 2015-06-21 15:42:30 +00:00
zzz
428d89a307 Update: Add config to disable translated news
Rewrite addLang() for efficiency
2015-06-21 15:41:33 +00:00
feff6c003b bump 2015-06-20 10:30:14 +00:00
699d550992 NetDB: Don't say we stored, and don't flood, if we're shutting down 2015-06-20 10:06:54 +00:00
c6896c4418 I2PSnark: Auto-start now only starts torrents which were running at shutdown (#766) 2015-06-20 10:03:47 +00:00
zzz
1b2d4c75eb I2CP: Fix simple session lookups, broken in prop 2015-06-19 15:55:07 +00:00
zzz
586defc802 Tunnels: Increase default max tunnels 2015-06-19 14:57:59 +00:00
zzz
2499aad51d I2PSocketEepGet: Do hostname lookups in-session for efficiency 2015-06-19 14:55:49 +00:00
zzz
addb142ecd I2CP: Move client-side implementation classes to
new package net.i2p.client.impl, leaving only the
factories and interfaces in net.i2p.client
2015-06-18 21:20:00 +00:00
zzz
20c796e87a Update: Add language param to news fetch, to support translated news (ticket #1425) 2015-06-18 15:05:48 +00:00
zzz
cd62d7170c I2CP: Don't send the first LS request to the client until we have
at least one OB tunnel, so the client waits until we are ready.
This will reduce drops, retransmissions, and failures on new client tunnels.
Fixes to prevent multiple pending LS requests.
2015-06-18 15:02:21 +00:00
acc647822f sync debian changelog in mtn 2015-06-18 10:34:54 +00:00
zzz
1cf544f1d4 fix unit test compile 2015-06-18 00:41:58 +00:00
zzz
0f4e09500c javadocs 2015-06-17 23:46:11 +00:00
zzz
7c5dfaee20 I2CP: More fixes after prop, w.r.t. restore after close-on-idle
- When socket is closed, set sessionID and LS to null,
    close subsession and set its sessionID and LS to null
  - Checks on client side for null session ID
  - Check for null session in Destroy Session message
  - Don't kill I2CP connection due to a bad session ID
    in a SendMessage, just drop the message and send
    a MessageStatusMessage
  - Log tweaks
2015-06-17 23:44:12 +00:00
zzz
8d9cced128 history for prop, -6 2015-06-17 16:17:46 +00:00
zzz
8096e4f65d propagate from branch 'i2p.i2p.zzz.multisess' (head 655a0c2bbd50625c804b8de8c809b40ed63f53f4)
to branch 'i2p.i2p' (head b977ab50209475c0e74825f361924e05dbd470c7)
2015-06-17 16:00:53 +00:00
zzz
5878fae88f Use getopt for SAM args processing
Args processing cleanups
Change default host from 0.0.0.0 to 127.0.0.1
Add -s option for SSL (unimplemented)
Put help text in a single string
2015-06-17 02:22:28 +00:00
zzz
036b77746b Catch uncaught exceptions in ClientConnectionRunner and stop connection
Catch null SessionId in messages and stop connection instead of NPE
Wait for LS in SubSession in connect() so we don't send data w/o
a session ID and leaseset
Log tweaks
2015-06-17 02:16:06 +00:00
zzz
233cce8311 remove _args field 2015-06-16 13:59:27 +00:00
zzz
bc85543ef2 Fix removal of subsession aliases from tunnel manager on
I2CP connection shutdown
Sort tweaks for shared clients in summary bar
2015-06-15 14:35:15 +00:00
627f7076b0 debian: Add support for setting open file limits to initscript, add comment to explain how to do it with systemd 2015-06-14 20:16:16 +00:00
863e120204 Hard-depend on gmp >> 5. 2015-06-14 20:12:00 +00:00
53cfba4cbd merge of 'cb89dec5190f295ba301666166448929f1b7f3c1'
and 'f13d8499995c44dc76ae61d4b5c4c936e307eb89'
2015-06-14 20:07:43 +00:00
3a774b7c37 Rename i2p.mooo.com2.crt to i2p.mooo.com.crt, certificate has been switched out on the server 2015-06-14 20:07:35 +00:00
dev
5c56de7218 Add x86 and x86_64 targets. 2015-06-14 18:39:12 +00:00
dev
f33e5c2845 Revert accidental commit to ConsoleUpdateManager 2015-06-14 17:57:59 +00:00
dev
52b362dedf merge of '3c853434727997386e691eed12478317c5c5b918'
and 'e62ecd3b1887712e2408f2c716873e9433ee2e4f'
2015-06-13 19:57:10 +00:00
dev
ecb28eb480 Added support for all ARM targets provided in GMP, on platforms running Linux. 2015-06-13 19:57:05 +00:00
dev
69a5f94642 merge of '2ba51476b19c182b894a5cf98f3fff6befb555a9'
and '51c05045ee9faacb879cfc893db82eaa3db99b4d'
2015-06-13 19:55:59 +00:00
zzz
a984745689 Cleanups after review, part 1:
- change crit() to error() and remove crit()
- comment out some System.out.println()s
- Back out a couple of code moves to minimize the diff for review
- Spelling fixes, comment cleanups, spacing tweaks
- Tweaks for efficiency
- Remove / comment out unused methods
- Make ARM architecture have priority over model string,
  except for ARMv6 (Raspberry Pi workaround)
- Restore check for ARM architecture first char only,
  not exact match
- Try architecture and model string even if implementer and part are absent
- Return null immediately for Windows ARM
2015-06-13 17:35:45 +00:00
zzz
0ad34a4b00 Timestamper: Reduce NTP timeouts to shorten startup time
when NTP is blocked
2015-06-13 16:25:58 +00:00
zzz
2b9ffc1270 javadoc fixes after review 2015-06-13 15:14:21 +00:00
zzz
93c7860d2b NetDB: Improve routing of DatabaseStoreMessage acks
Send our own RI unsolicited in reply if we aren't floodfill
  Don't ack or flood a store of an unknown type
PeerTestJob: Don't generate zero reply token
Tunnels: More checks of messages received down exploratory tunnels
javadocs and comments
2015-06-13 15:13:35 +00:00
25f6c3d9e1 apparmor: tweaks to TMPDIR rules 2015-06-13 15:05:28 +00:00
zzz
b9e07bc9aa i2psnark: Fix NPE (ticket #1602) 2015-06-13 14:20:08 +00:00
zzz
09f68e44ca enable ECDSA by default for shared clients 2015-06-10 23:24:38 +00:00
zzz
013b5fd85b more @since updates 2015-06-10 19:24:20 +00:00
zzz
8962bfb6bc more @since updates 2015-06-10 19:23:26 +00:00
zzz
605602e001 @since updates 2015-06-10 19:15:01 +00:00
zzz
f341e5566b Pass session in connect();
Store the session in Connection;
Don't create a new ConnectionManager for a subsession,
now that all components track the session properly.
@since updates
2015-06-10 19:14:33 +00:00
zzz
7b84676f4a remove session ref from PacketQueue 2015-06-10 12:37:19 +00:00
dev
c666f8a4f9 Javadoc fixes. 2015-06-09 14:30:42 +00:00
dev
e067761947 Added a new flavour of checkAvailable() to UpdateManager interface. 2015-06-09 03:57:44 +00:00
dev
226bee64ef Added more variants of isUpdateInProgress to UpdateManager. 2015-06-09 03:44:34 +00:00
dev
1a40e57413 Added isUpdateInProgress() to UpdaterManager interface. 2015-06-09 03:32:33 +00:00
dev
f73101b014 Added checkAvailable(), update() and getStatus() to UpdateManager interface. 2015-06-09 01:09:23 +00:00
zzz
fef65c996f Store the session in Packet, so we may more easily and efficiently
handle multisession, especially on the incoming side.
More refactoring to follow
2015-06-08 22:18:14 +00:00
zzz
cbc2f899a6 fixup after prop 2015-06-08 22:14:49 +00:00
zzz
099515adff propagate from branch 'i2p.i2p' (head 1de143fff53bb56e6eac926d6293d62200f0c392)
to branch 'i2p.i2p.zzz.multisess' (head 70fc07857232668b93ca6ba02c433dffc7639132)
2015-06-08 21:50:42 +00:00
ff2ea9ac3e Irc{Outbound,Inbound}Filter:
- Silence 'no streams' warning when we can't connect to an IRC server. Change to WARN.
2015-06-08 19:35:18 +00:00
97aeecd865 FloodfillMonitorJob, FloodfillRouterInfoFloodJob:
- Directly connect to nearby floodfills to share our RI to speed up integration of new floodfills (#1195).
- Called on both non-ff -> ff OR ff -> non-ff.
- Create FloodfillRouterInfoFloodJob to do so.
2015-06-08 19:24:28 +00:00
8098d705f9 Make netDb.storeFloodNew graphable for testing (#1195) 2015-06-08 16:39:41 +00:00
fa8c390267 Language fixups. 2015-06-08 16:14:08 +00:00
zzz
e8f4e19bac NetDB: Fix early NPE 2015-06-07 16:29:41 +00:00
zzz
9041a2c69f SSU: Possible fix for NPE in establisher 2015-06-07 14:13:58 +00:00
zzz
384e9118c6 Logs: Correct wrapper.config location when running as a Linux service 2015-06-07 12:44:29 +00:00
0936a2ee23 disable 193.150.121.66 (ticket #1596) 2015-06-06 21:36:24 +00:00
bc6b0c12ac update debian changelog to reflect the latest release 2015-06-06 21:33:51 +00:00
f6f051cfa4 remove unneeded user-tmp abstraction; tighten tmpdir perms 2015-06-06 21:31:38 +00:00
zzz
fb131a040c fix snark sort by rate of stopped torrents 2015-06-06 20:54:13 +00:00
zzz
9f2ded6073 cleanup 2015-06-06 20:53:33 +00:00
zzz
55e36ee458 Console: Add indication of current ff status on /configadvanced,
change immediately when config changes, force republish
Router: RI rebuild locking
2015-06-06 16:01:39 +00:00
7c13fb2ba0 Android's SimpleDateFormat doesn't support XXX at any API 2015-06-06 09:24:46 +00:00
663ccb72d7 Bump router version 2015-06-05 01:53:52 +00:00
78e0a37fc9 Define I2PTunnelClientBase stats in one place 2015-06-04 22:36:45 +00:00
09cdc00939 i2ptunnel: Don't call startup() in chained constructor (ticket #1593) 2015-06-04 22:34:13 +00:00
2590e7d4ff i2ptunnel: Don't connect manager to router in constructor (ticket #815) 2015-06-04 22:25:44 +00:00
zzz
27f56776ca Console: Fix display of n/a for events that never happened on floodfill profiles 2015-06-03 20:45:15 +00:00
zzz
657f13af29 Remove ConnectionManager ref from PacketQueue 2015-06-03 17:25:25 +00:00
zzz
e2ca74963f Console: Click on version or country in /netdb table to get list of those routers 2015-06-03 16:55:01 +00:00
zzz
9304cb2bbc SAM message quoting fix 2015-06-03 12:33:42 +00:00
zzz
362086994a history for props, -1 2015-06-03 12:03:07 +00:00
zzz
f57e37d588 comment fix 2015-06-03 12:02:25 +00:00
zzz
d96ddd1a0e propagate from branch 'i2p.i2p.zzz.sam' (head 68de14d0053dea374413f9e0419b1c0f7e9ec3af)
to branch 'i2p.i2p' (head 54f5dd288f7c0c5a50f7f63f911aec4008be27e2)
2015-06-03 11:42:54 +00:00
zzz
7b711ebba0 propagate from branch 'i2p.i2p.zzz.test2' (head 47586aa88408845c51ee4c5fce40c617bdb8e398)
to branch 'i2p.i2p' (head bacb6048bc596f064ff237dd8569014a421b4ef6)
2015-06-03 11:40:28 +00:00
zzz
0762715264 i2psnark: Don't lose sort param when hiding peers 2015-06-02 21:04:12 +00:00
zzz
8a69dc0a97 only log reseed network disconnected warning once 2015-06-02 20:44:10 +00:00
zzz
39dc60cf8a only log UPnP network disconnected error once 2015-06-02 20:19:46 +00:00
zzz
09e867b194 i2psnark: Don't say 'download finished' unless we downloaded something
atomics
2015-06-02 20:14:33 +00:00
zzz
dc9256f274 Console: Prevent bad line-wrap of very long menu items 2015-06-02 16:41:04 +00:00
zzz
272f63dbbd Console: Nicer "move" icons on /configsidebar, add tooltips
Icons from silk, rotated, same license as before
2015-06-02 16:30:35 +00:00
zzz
06104118d0 EepGet: Recognize 418/420 responses 2015-06-02 15:44:17 +00:00
zzz
525ec01c1e Console: Don't allow unbanning of all-zero hash 2015-06-02 15:41:42 +00:00
zzz
f8594c316f DataHelper: make formatDuration() days to years be monotonic 2015-06-02 15:36:19 +00:00
zzz
3c89bd4e19 0.9.20 2015-06-02 12:00:59 +00:00
zzz
1f8408f417 Stats: Reduce number of rates in required stats to save memory 2015-05-31 14:03:39 +00:00
zzz
915b35f0c1 LogWriter: Write dup message to wrapper log and crit buf also 2015-05-31 13:22:36 +00:00
zzz
4521156ecb Fortuna: Catch AIOOBE (ticket #1576) 2015-05-31 12:43:06 +00:00
zzz
c58fd8f84e i2ptunnel: Fix +/- variance config (ticket #1587) 2015-05-30 15:46:37 +00:00
zzz
f02b401b7a SSU: More synchronization in PeerState 2015-05-30 14:25:40 +00:00
zzz
4fdcb6ce29 I2CP: Prevent sending lookup or bw limit messages before handshake with router is complete 2015-05-30 14:13:13 +00:00
zzz
94824e4d2b I2CP: Prevent sending data message before handshake with router is complete 2015-05-30 14:02:38 +00:00
zzz
280fc05c91 susidns, addressbook: Don't attempt to fetch subscriptions if
HTTP proxy is down (ticket #1530)
2015-05-30 13:53:56 +00:00
zzz
89745f5002 HTTP Client: Greatly simplify decompression by using
InflaterOutputStream, available since Java 6.
Removes PipedInputStream, PipedOutputStream.
Removes Pusher threads.
Remove delay workaround for truncated pages, no longer required.
2015-05-30 13:19:29 +00:00
zzz
7715e6484c Router: Add gzip caches to clearCaches() 2015-05-30 11:18:04 +00:00
zzz
c807194e93 propagate from branch 'i2p.i2p' (head 07028378508ab46278d193039b97c543d12ee22e)
to branch 'i2p.i2p.zzz.test2' (head 0074b91cb9fe0ed875457dc0bf1989df03fa9e9a)
2015-05-30 11:16:00 +00:00
zzz
3602f73497 HTTP client: Fix occasional truncation of compressed responses
log tweaks
2015-05-29 17:37:58 +00:00
zzz
4bf115b5f6 javadoc 2015-05-27 21:07:56 +00:00
zzz
7ab85a0a20 Graphs: prevent NaNs if we are skewed ahead of system time 2015-05-27 21:05:44 +00:00
zzz
fba0372339 Banlist: Ban all-zero hash
NetDb: Drop all-zero lookups and stores, add stats
SSU:
 - Fix debug logging of dumped packets
 - Drop sessions with bad clock skew, banlist peer, add stats
 - Drop sessions with corrupt DSM, banlist peer, add stats
Log tweaks
2015-05-27 21:00:46 +00:00
zzz
03dfa6515b SSU: send destroy message in a couple cases where we previously just called dropPeer() 2015-05-27 20:54:22 +00:00
zzz
5e33ed1169 log tweaks 2015-05-27 20:52:00 +00:00
zzz
11ab7fc56c add comment 2015-05-27 20:51:01 +00:00
zzz
716bff41d7 remove cast 2015-05-27 20:50:29 +00:00
zzz
1d8842cfc8 Gunzip: Add tests to main() 2015-05-27 20:49:51 +00:00
zzz
042b03d6b8 DataHelper: Add year output to formatDuration() 2015-05-27 20:48:51 +00:00
ab753651b9 Add new reseed server
Thanks parg!
2015-05-26 20:55:44 +00:00
zzz
6076bb3b2b modPowCT requires GMP 5 2015-05-26 18:16:55 +00:00
dev
1a012dfca1 Removed exec flag from some jbigi libs. 2015-05-26 15:18:48 +00:00
dev
e0fe2439e6 Stripped ARM jbigi binaries. 2015-05-26 15:06:02 +00:00
dev
34d3009439 Added GMP6 compilations of jbigi for Intel CPUs on linux, built on Intel Haswell. 2015-05-25 21:10:47 +00:00
dev
70c2838421 Added GMP6 compilations of jbigi for ARM CPUs on linux, built on Raspberry Pi 2. 2015-05-25 19:43:29 +00:00
dev
63a5b4803c Added support for ARM A12/A17 using the A15 libs. 2015-05-25 19:30:28 +00:00
dev
67760c8bea Corrected make clean call 2015-05-25 18:16:19 +00:00
dev
9130d556d8 merge of '6d6ce6e9e717c56881e728cc3b5fad45897d58b2'
and '8fa65646f9dfb055d71d24fc4d3c26510da48a54'
2015-05-25 18:01:41 +00:00
dev
50d46006ae Added support for ARM Cortex A5/A7/A8/A9/A15. 2015-05-25 18:01:37 +00:00
dev
583a050281 merge of '6040534dc82b5160fea1d95bec37c98497f0f22c'
and 'e8ebf9b71d96f8107ed295d94502a04dc70d1414'
2015-05-25 17:49:26 +00:00
dev
2185a65de6 Added -j flag to make to use parallel compilation. 2015-05-25 17:49:11 +00:00
zzz
4ea99b8a10 I2CP: Take 2 of fix, so a newly created session
isn't destroyed and immediately replaced by i2ptunnel,
which caused dup shared clients in a race at startup;
Clarify session exception text if not open
2015-05-24 00:14:32 +00:00
zzz
3d07e1a10b I2CP: Revert part of prior checkin, prevented idle tunnel from opening;
(treat INIT as CLOSED) better fix to follow
2015-05-23 20:02:46 +00:00
dev
9134d2856f Don't unpack gmp before every build. Do a distclean instead. 2015-05-23 18:48:35 +00:00
zzz
86525e7239 i2ptunnel: Strip top-level supercookies too 2015-05-23 17:13:15 +00:00
zzz
195171f9ed I2CP: Add an INIT state for session, so a newly created session
isn't treated as CLOSED and immediately replaced by i2ptunnel,
which caused dup shared clients in a race at startup
(possible related tickets #642, #650, #815, #1545)
2015-05-23 16:07:49 +00:00
33c4be5b2f Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country database from 2015-05-06. 2015-05-21 17:32:35 +00:00
fea2c3c6b2 Install the apparmor profiles in complain mode
Instead of enabling exceptions when needed for custom set-ups, some users will
opt for disabling all security functions.
2015-05-21 17:27:29 +00:00
281686ba58 clarify comment 2015-05-21 17:24:32 +00:00
0b91fcb636 sync Translations with Transifex 2015-05-21 17:11:50 +00:00
807f1381fb sync debian/changelog 2015-05-21 16:54:35 +00:00
ac56a63809 remove /dev/(u)?random since these are included in the base abstraction 2015-05-21 16:52:09 +00:00
e4798b9ed8 allow user scripts installed to cgi-bin to be executed 2015-05-21 16:46:19 +00:00
7584346c82 fix indentation of i2p abstraction 2015-05-21 16:44:00 +00:00
dev
68adfa80af Added support for new CPUs
- Intel: Sandy Bridge, Haswell and Broadwell
- AMD: Bulldozer, Piledriver, Steamroller, Excavator and Jaguar
2015-05-20 01:06:26 +00:00
zzz
29330aa5d3 i2psnark: Another place to send reject; switch to LBQ 2015-05-19 23:21:18 +00:00
zzz
65ff2c0afe i2psnark: Log tweaks and cleanups after testing 2015-05-19 21:56:21 +00:00
zzz
de4d47de95 i2psnark: Add support for fast extensions (BEP 6)
untested
2015-05-19 18:13:32 +00:00
zzz
ae41a3f316 SSU:
Synchronize UDPPacket methods, possible fix for bad
packets and UDP stalls caused by cache corruption?
Cleanup unused methods and fields
2015-05-19 14:49:02 +00:00
dev
1e8c299be2 Fixed comments 2015-05-19 12:36:02 +00:00
dev
39cb60e72b Added AVX/AVX2/AVX512/TBM feature detection 2015-05-19 12:31:15 +00:00
zzz
2dc3d68418 propagate from branch 'i2p.i2p' (head d046bffcd4f94b253e1aa2bfc9a90482974363dd)
to branch 'i2p.i2p.zzz.test2' (head d00c6fd9c9aef6c37218a791a12f2da957181cd2)
2015-05-18 11:09:26 +00:00
zzz
5eb43b6ae4 Translate: Clear ResourceBundle cache too,
available since Java 6 / Android API 9
2015-05-18 11:08:40 +00:00
zzz
0c672ecc49 Update: Fix NPE in initialization 2015-05-16 13:10:07 +00:00
3b6d98fe38 Translate "Dest" instead of "Dest:", tabbing (thx zzz) 2015-05-15 22:36:49 +00:00
b3472cfe80 Show the I2PSnark dest on the main page (#1436) 2015-05-15 20:51:45 +00:00
38f2b93c7a typo 2015-05-15 20:30:59 +00:00
zzz
e7af87a981 Update: Ignore su3 dev build version at startup if older 2015-05-15 19:15:51 +00:00
zzz
d698a67660 Deprecate Router.setConfigSetting() and removeConfigSetting() 2015-05-15 15:50:16 +00:00
zzz
b38f2d62a8 bump -23 2015-05-15 14:58:54 +00:00
zzz
10556bca75 merge of '174649506cd8a9665ad798c090e39481af967011'
and '67eb724b7638284d33f1b4997183cc9f197d2883'
2015-05-15 14:17:41 +00:00
zzz
1f17d2a149 add cacapo plugin cert 2015-05-15 14:17:08 +00:00
dc777c8de5 fix on non-full stats routers (thx zzz)
doh
2015-05-15 13:42:16 +00:00
zzz
1fb9643916 i2psnark: Fix deletion of single-file torrent outside snark dir (ticket #1544) 2015-05-13 14:00:19 +00:00
zzz
081f1865a8 Console: Fix URLs caught in XSS filter on /confighome (ticket #1569)
Fix name and URL escaping
Truncate long URLs in display
2015-05-13 12:04:28 +00:00
zzz
0e17c560b3 NTCP: Catch race in Reader (ticket #1534) 2015-05-13 10:52:26 +00:00
zzz
a3b1327934 javadoc fixes 2015-05-13 10:48:48 +00:00
zzz
e68ca573f0 remove status message 2015-05-13 10:41:49 +00:00
zzz
b5455cee6e SAM: Set keepalive on sockets (ticket #1573)
Also on both sides of I2CP.
BOB already does it.
2015-05-12 20:13:17 +00:00
cbdc1403bf remove old check
bump
2015-05-12 19:53:19 +00:00
zzz
40130a8a61 SAM:
- Close sockets and stop tunnels when router-side SAM stops (ticket #1572)
- Better checks for quoting status message strings (ticket #1488)
- Set encoding for sam.keys file
- Don't throw NPE on rare stream errors
- Comment out unused dumpProperties()
- Cleanups, log tweaks, thread name tweaks
2015-05-12 19:07:42 +00:00
ca14055976 fix build 2015-05-12 19:02:00 +00:00
8303016b48 - Job Queue/stats: add stat/graph for amount of scheduled jobs (router.tunnelBacklog)
- FloodfillMonitorJob:
  - Use avg of router.tunnelBacklog instead of current backlog
- Some language/spelling fixes
2015-05-12 18:46:40 +00:00
287862887d runplain.sh improvements 2015-05-11 01:12:13 +00:00
zzz
f25d2a3d3f Util: Fix corruption of cached ReusableGZIPInputStreams,
caused by calling close() from HTTPResponseOutputStream.Pusher,
but close() rendered the underlying InflaterInputStream unusable.
Broken in -15. Caused failed HTTP fetches and other flakiness.
2015-05-11 00:08:26 +00:00
zzz
7f30f481b2 i2ptunnel: Improve error handling for UDP tunnels,
Sink.send() may now throw RuntimeException,
converted from IOException or I2PSessionException;
interrupt runner threads on error;
ignore I2PSessionException in Pinger.close();
logging and javadoc improvements;
untested
2015-05-09 22:22:13 +00:00
zzz
5ee6826241 Plugins: Add support for custom icons (ticket #1550) 2015-05-09 15:28:43 +00:00
zzz
68951c4c6b remove http in linkify() 2015-05-09 13:19:46 +00:00
zzz
5dc7497802 Reseed: Don't reseed while shutting down (ticket #1565) 2015-05-08 12:27:40 +00:00
zzz
31cfddc218 Router: Clear I2CP lookup cache on exit 2015-05-07 16:46:15 +00:00
zzz
c1e70ac7d2 SAM: Close datagram or raw session when underlying
I2P session closes (ticket #1563)
2015-05-07 16:04:08 +00:00
zzz
dd9abd3f09 set installed dev version 2015-05-07 14:18:47 +00:00
zzz
2f5e64e532 Update: Add support for su3-signed development builds (ticket #1381)
Full version is used as the su3 version.
Uses same su3 certs as release updates. Users may add additional certs
to ~/.i2p/certificates/router/ as necessary.
Copy echelon's reseed key for use as a router signer.
Unsigned update remains a separate option for now.
Various update subsystem cleanups.
2015-05-07 13:04:43 +00:00
zzz
b12f988390 javadoc fixes 2015-05-07 13:03:17 +00:00
9f3d5bf57b use the full version string (including build number) in the signed-* build targets 2015-05-06 23:24:08 +00:00
zzz
7f9e958e5a Datagram: Convert IOE to DFE and throw on datagram load error
rather than failing silently
2015-05-06 20:05:30 +00:00
zzz
c4877ea092 Crypto: Comment out Cryptix debug logging 2015-05-06 01:53:50 +00:00
zzz
2aafc23774 PrintWriter doesn't throw exceptions, so call checkError() 2015-05-06 01:51:57 +00:00
zzz
77c9a644ac Naming services: Export address books with Windows line endings on Windows (ticket #1557) 2015-05-06 01:48:47 +00:00
zzz
abd8ca34dc Transport: Add config to force IPv4 (only) to firewalled (ticket #1541)
since we cannot reliably detect DS-lite (ticket #1458)
Hide transport status on /peers unless routerconsole.advanced
2015-05-06 01:45:33 +00:00
dev
31435685bf Added disclaimer about not being a part of the public API. 2015-05-05 22:16:51 +00:00
zzz
7337fd0670 i2ptunnel: Add Connection: close headers to errors and proxy.i2p responses
where it was missing (ticket #1531)
2015-05-04 16:36:49 +00:00
zzz
f7b7a98b9d i2ptunnel: Close input stream when HTTP client decompressor terminates (ticket #1506)
streaming: Minor cleanups, log tweaks
2015-05-04 14:43:54 +00:00
2226936737 i2prouter 'console' bugfix: Don't report failure for INT signal 2015-05-04 14:10:25 +00:00
8b293b2190 symlink instead of copying
I created this patch a couple of years ago and at that time symlinking (for
reasons I don't remember anymore) didn't work. Now it works with symlinks, so
let's go with that. (Tested in OpenBSD 5.7)
2015-05-04 13:47:32 +00:00
zzz
94bba8d11f I2CP: Fix external I2CP SendMessageExpires, broken in previous cleanup 2015-05-04 12:36:03 +00:00
5c2b5075f9 support OpenBSD in i2prouter
We don't include a wrapper for OpenBSD and Tanuki doesn't offer OpenBSD
binaries either. It is available as an OpenBSD package. Therefore, if the
wrapper is not found (likely), advise the user to install it. The next time
`i2prouter start` is run, the wrapper will be copied to the I2P install
directory and it should "just work".
2015-05-04 09:22:25 +00:00
ca6820a4c0 refresh debian patch 2015-05-04 00:26:26 +00:00
zzz
2fafa3337f Console: Add floodfill configuration form to /configadvanced 2015-05-03 18:49:34 +00:00
zzz
b5f75a4bb9 Router: Allow class M to become floodfill;
add bandwidth classes P and X (ticket #1447)
2015-05-03 17:35:09 +00:00
zzz
707bfbbf8b Router: Put the GarlicMessageParser in the RouterContext
to reduce object churn, we only need one
Add DeliveryInstructions.create() to return immmutable
local instructions, to reduce object churn
Minor cleanups
2015-05-03 17:00:22 +00:00
zzz
1eba6c5167 SusiDNS: Add export button 2015-05-03 13:21:16 +00:00
zzz
a14208b841 Move Indonesian po files used by Java om _id to _in, since
Locale.getDefault().getLanguage() will only return "in".
See Locale javadocs. Same change already made in Android.
2015-05-02 23:23:13 +00:00
83966f9a7f Switch out the certificate for netdb.i2p2.no, replacing it with a stronger one
certificates/ssl/netdb.i2p2.no2.crt was checked in on 2014-12-08 with the
intention of its replacing certificates/ssl/netdb.i2p2.no.crt after a
transition period of a few months had passed. The certificate has already been
switched out on the server.
2015-05-02 20:49:50 +00:00
zzz
d89f06015b merge of '7cc7b74d018c5e2d5d571000d066e65ad034c114'
and 'd87b6870e67271b703a38f82cb6fc9b753bf9698'
2015-05-02 17:46:48 +00:00
zzz
49f786c928 Transport: Ticket #1458 continued...
enum fixes so we don't always force a peer test quickly
set reachability status at startup when interfaces are configured
prevent firewalled -> OK -> firewalled+OK transition
2015-05-02 17:45:37 +00:00
zzz
e8bc0bd5d1 Stats: randomize router count at startup also 2015-05-02 17:42:49 +00:00
8d69b69357 Switch out the certificate for ieb9oopo.mooo.com
certificates/ssl/ieb9oopo.mooo.com2 was checked in on 11/23/2014 with the
intention of its replacing certificates/ssl/ieb9oopo.mooo.com.crt after a
transition period of a few months had passed. The certificate has already been
switched out on the server.
2015-05-02 15:59:33 +00:00
e7b9a230e6 add 'bump' as an alias for the 'bumpBuild' ant target 2015-05-02 15:50:25 +00:00
6385c412fd Disable https://jp.reseed.i2p2.no:444/ due to extended downtime, unresponsive host (ticket #1422) 2015-05-02 15:48:46 +00:00
zzz
bb33b358b4 Change log level for Jetty warnings with exceptions
from error to warn (ticket #1551)
2015-05-02 14:36:39 +00:00
zzz
572f071cfe Jetty 8.1.17.v20150415 2015-05-02 14:09:59 +00:00
zzz
42cb89f525 bump -12 2015-04-30 21:14:56 +00:00
zzz
1868d2b50f Transport: Ticket #1458 continued...
Implement methods to remove only a single IPv4 or IPv6 address,
so that IPv6 addresses will remain when SSU detects that IPv4 is firewalled
Summary bar status fixes
Fix getIsPortFixed() for more enum cases
log tweaks, cleanups
2015-04-30 20:33:46 +00:00
dev
d5d4dbb078 Added source of CPUID information 2015-04-29 15:52:08 +00:00
dev
815f275d8b Added source of CPUID information 2015-04-29 15:51:34 +00:00
dev
fdad8f0c34 Added support for new AMD CPUs
- Jaguar added
 - Bulldozer derivatives (Piledriver, Steamroller and Excavator) added
2015-04-29 15:48:52 +00:00
zzz
4588f1ec75 I2CP: Periodically send a SetDate message to external clients
so they stay in sync
2015-04-29 15:22:55 +00:00
zzz
629f7f05c7 Transports: Track IPv4/v6 reachability separately (ticket #1458)
Don't include NTCP conns established too long ago in clock skew vector
Hide unestablished outbound NTCP conns from /peers view
Add per-transport status to /peers
Put status description instead of code into event log reachability changes
2015-04-29 12:50:33 +00:00
zzz
0f18686243 Clock: Make forward slewing work better
when now() is not called too frequently
2015-04-29 11:48:17 +00:00
zzz
2a2587b13d fix logic bug 2015-04-29 02:41:25 +00:00
zzz
489fdd5e4b NTCP: Use context time, not system time, in NTCPConnection
so that clock skew calculations work right
2015-04-29 02:35:22 +00:00
zzz
fe680eb192 Transports: Fix clock skew calculations
- NTCP inbound skew calculation had flipped sign
- Include RTT in NTCP skew calulation
- Set SSU skew on first packet so it's right from the beginning
- Above should fix the "ignoring clock offset" error
- Javadocs
RouterClock:
- Add config to disable clock adjustment for testing
- Reduce window in skew vector for slew calculation
- Double max slew rate
2015-04-29 01:30:33 +00:00
zzz
613440ff63 CSF: New enums for SNAT/OK and SNAT/UNKNOWN 2015-04-28 22:26:40 +00:00
zzz
64121b1e92 catch OOM in the OOM listener 2015-04-28 22:24:05 +00:00
zzz
f16927f316 JobQueueRunner: Don't call System.exit() on OOM,
let the shutdown progress normally;
Make it an I2PThread instead of a Runner so we can
call fireOOM() for consistent logging (ticket #1549)
Router: Don't add OOM listener on Android so
we don't hang onto the context
2015-04-28 21:57:13 +00:00
zzz
cb50c1bd8b improve UDP test 2015-04-28 12:44:53 +00:00
zzz
921ad86274 Comm System: More prep for ticket #1458
- Big method to handle status transitions, not yet used
 - Status enum tweaks, unknown must be higher code than known
2015-04-28 03:25:20 +00:00
zzz
ac76107752 Transports:
- More transition to status enum
 - Don't set TCP keepalive for IPv6
2015-04-28 03:21:28 +00:00
zzz
2359b1edd2 Transports: Convert internal state to enums (ticket #1458) 2015-04-27 17:05:16 +00:00
zzz
2750681d78 CommSystem: Stubs for separate IPv4/v6 status (ticket #1458) 2015-04-27 15:44:05 +00:00
zzz
eaac4d3de0 NamingService: Add export methods,
fill in subclass methods for efficient exporting,
fill in getBase64Entires() and getNames() where unimplemented
SusiDNS: Add export support, no UI yet
2015-04-27 15:41:38 +00:00
dev
827b7b64d2 merge of '1a475694d7840a7be029691e7ba97ee7afca80d4'
and '3d8d9d506f96418982baac68a992ec62a0278a35'
2015-04-27 00:29:51 +00:00
zzz
f243968dfa i2ptunnel: Reduce sleep time in runners to reduce latency
greatly improves "loopback" performance
minor cleanups
2015-04-26 17:50:06 +00:00
zzz
8d9e2bdc71 log tweaks 2015-04-26 17:46:48 +00:00
zzz
6dbbb6b61b minor cleanup 2015-04-26 17:46:14 +00:00
zzz
f89bf32390 target=_top 2015-04-26 17:45:31 +00:00
zzz
ef195aa4ef re-add fixed reseed 2015-04-26 17:45:01 +00:00
843230a1cb Fixed MessageInputStreamTest after constructor changes 2015-04-26 01:43:34 +00:00
zzz
84e63f3b38 reseed tweaks for SNI 2015-04-26 00:12:17 +00:00
zzz
b90816fdf8 add package.html files 2015-04-25 23:15:52 +00:00
zzz
40c4a42921 I2PSSLSocketFactory:
- Add hostname verification using code from
Apache HttpClient 4.4.1 (Apache 2.0 license)
and one small class from HttpCore 4.4.1,
slightly modified to remove additional Apache dependencies
and unneeded code.
- Includes support for public suffix list;
use basic list with standard TLDs,
and also support loading the big Mozilla list,
but don't bundle the 150KB Mozilla list for now.
- For Android, use its default verifier, which
should actually work (unlike Oracle)
- Java 7 not required, although servers requiring SNI will now
fail on Java 6, which does not support SNI
SSLEepGet:
- Rework recent setSoTimeout code changes, as they broke SNI
- Add option to save certs even if no errors
- Add option to disable hostname verification
2015-04-25 23:06:44 +00:00
zzz
26f89391d3 Mods to remove additional Apache dependencies
and unneeded code, now compiles
2015-04-25 22:56:51 +00:00
zzz
aaae72cf84 - Initial checkin of Apache classes from
Apache HttpClient 4.4.1 (Apache 2.0 license)
and one small class from HttpCore 4.4.1,
unmodified as a baseline for future merges.
Does not compile.
See following checkins for more info
2015-04-25 22:54:05 +00:00
zzz
3e55cff153 Util: Catch and convert OOM in I2PThread.start() to a RuntimeException,
to give better message to users and prevent JVM shutdown
on what is unlikely to be a heap issue.
2015-04-25 00:02:55 +00:00
zzz
bd778a2204 Remove old pre-0.6.1.30 TunnelCreateMessage and TunnelCreateStatusMessage,
moved to junit years ago but not part of any tests
2015-04-24 22:25:17 +00:00
zzz
235c196f14 log tweaks 2015-04-24 21:37:22 +00:00
zzz
e475c161cb i2ptunnel: Don't register port mapper in clients overriding startRunning()
if super.startRunning() failed
Register as HTTPS proxy also in HTTP client
2015-04-24 21:16:45 +00:00
dev
e5cd33cedb merge of '7a80d824309a75c1f02df0c50ccddd0f8e65e9dd'
and '874cdc3aa5783e115f79ce6ef7d797ff33bd8ab9'
2015-04-24 20:31:35 +00:00
dev
a074654916 Reformatted and added support for some Intel architectures 2015-04-24 20:31:01 +00:00
zzz
54f9d1eb63 fix typo 2015-04-24 20:20:50 +00:00
zzz
08e96109a7 i2ptunnel: Fix shutdown of client tunnels on server socket errors,
broken in fix for ticket #815
TCG still doesn't go back to stopped, to be fixed.
Test case: configure low port.
2015-04-24 19:19:18 +00:00
zzz
81ad33d9e3 lint unchecked 2015-04-24 16:27:03 +00:00
zzz
aecc95825b Updates: Fail fast if HTTP proxy is not running (ticket #1530)
Covers router, unsigned router, plugin, and news updates
2015-04-24 16:08:08 +00:00
zzz
37c6ac3a88 i2ptunnel: Fix Socks and SocksIRC tunnels not starting,
broken in fix for ticket #815
2015-04-24 01:48:07 +00:00
zzz
772d0beac3 Streaming: Don't wait too long to send a dup ACK, so the other
side isn't stuck forever at a window size of 1.
Cleanups, log tweaks, javadocs
2015-04-23 15:34:24 +00:00
zzz
64fdfd81ee remove excess logging 2015-04-23 13:38:44 +00:00
zzz
1b09b9faa4 Streaming: More efficient checking for input buffer overflow,
add additional checks.
Fix bug if available buffer calculation is negative
Check log level before calling displayPacket()
Log tweaks
2015-04-23 13:19:18 +00:00
zzz
6f0ebb2d94 Streaming: Reduce min RTO so that "loopback" connections
recover quicker after packet loss;
Reduce default initial ack delay;
Rename misspelled method
2015-04-23 10:28:02 +00:00
zzz
12099753ad NBI: core2_64 is always a fallback for corei_64 2015-04-23 09:33:44 +00:00
zzz
db4e09efa3 jbigi: Drop 32-bit corei libs where they are identical to the
core2 lib, since we now have a generic fallback in NBI:
	libjbigi-freebsd-corei.so
	libjbigi-linux-corei.so
	libjbigi-osx-corei.jnilib
Remaining corei libs are not identical to the core2 version
(although they may have the same size)
2015-04-22 23:20:01 +00:00
zzz
8fa1e6ee11 NBI: remove special case for core2/corei in getMiddleName2()
since it's now a fallback in getResourceList()
2015-04-22 23:11:17 +00:00
zzz
e7a33dfd64 NBI: core2 is always a fallback for corei 2015-04-22 22:50:51 +00:00
zzz
55c411a495 Add coreisbr coreihwl coreibwl targets, thx tuna
Reorder the builds so the new ones are build first, for easier testing
2015-04-22 22:10:42 +00:00
zzz
cbe91e3012 I2PSocketEepGet: Fix i2psnark NPE caused by -6 (ticket #1543) 2015-04-22 20:34:04 +00:00
zzz
238501919b i2psnark: Fix deletion of config files, cleanup
orphaned ones at startup (ticket #1498)
2015-04-22 20:22:17 +00:00
zzz
ae3a5f7b25 name tunnel starter threads 2015-04-22 20:17:33 +00:00
zzz
638cadc3c9 NetDB: Disable floodfill for non-ARM Android also 2015-04-22 15:54:18 +00:00
zzz
da0036581c thread name tweak 2015-04-22 14:51:40 +00:00
zzz
59a58ea310 NTCP: Reduce min send finisher threads to 1 2015-04-22 14:48:59 +00:00
zzz
bebe5f8a4e PortMapper: Status output for /debug 2015-04-22 14:45:40 +00:00
zzz
c3af99685d log tweak 2015-04-22 12:00:46 +00:00
zzz
e1d9e05b8d i2ptunnel: Fixes and cleanups for command line testing;
catch IAE from getInstance() if i2ptunnel.config isn't found
in app context; log tweaks; config command tweaks
Unit tests: Fix several NPEs in LocalClientManager,
implement HostLookup
2015-04-22 11:59:40 +00:00
zzz
212f6b472a i2ptunnel: Catch and log uncaught errors in thread pool 2015-04-21 20:37:59 +00:00
zzz
fdada78edf Reseed: Disable non-su3 reseeding 2015-04-21 18:48:11 +00:00
zzz
638c5429d2 NTP:
- close socket in finally
 - really comment out main()
2015-04-21 14:49:48 +00:00
zzz
b67bbd7065 improved locking 2015-04-21 14:33:59 +00:00
zzz
1caf3e778b Router timestamper:
- Add country-to-continent mapping
 - Add continent pool.ntp.org zones as first fallback,
   this will improve time service for countries that don't have a zone
 - Don't start threads in constructors
 - Fix logging, better prevention of initialization loops
 - Log severe errors to wrapper log also
continent.txt file from http://dev.maxmind.com/geoip/legacy/codes/country_continent/
Creative Commons Attribution-ShareAlike 3.0 Unported License
http://dev.maxmind.com/geoip/legacy/geolite/
Terms already met in LICENSE.txt
2015-04-21 14:22:05 +00:00
zzz
fd82fff07a Transports: Reduce idle timeouts 2015-04-21 09:58:46 +00:00
zzz
a6ac8f8c09 Blockfile: Unroll recursive initialization of BSkipLevels 2015-04-20 22:56:08 +00:00
zzz
19a26f8e22 Reseed: Prep for disabling non-su3 fetches (ticket #1513) 2015-04-20 18:48:00 +00:00
zzz
46e85cf265 only reset the sotimeout if not proxied 2015-04-20 17:57:57 +00:00
zzz
8f321b5427 EepGet: Set soTimeout for non-proxied fetches to enforce
header timeout and prevent long reseed hangs
2015-04-20 17:53:29 +00:00
zzz
e1f8f1a3f4 Reseed: Remove all default HTTP URLs (ticket #1514) 2015-04-20 16:11:33 +00:00
zzz
935a5b573d Reseed: Better error message if no valid URLs for configuration 2015-04-20 15:45:49 +00:00
zzz
8c2636aa99 Reseed: Honor SSL/non-SSL setting when custom reseed list is set (ticket #1136)
patch from "Inondle", cleaned up and tested
2015-04-20 15:33:03 +00:00
zzz
03ddb1075c BuildHandler: Don't enforce conn limits for P or X 2015-04-20 13:15:30 +00:00
zzz
72eb2c058c Streaming: Move Packet.writeSignedPacket() to PacketLocal 2015-04-20 13:13:55 +00:00
zzz
a100d2ccf9 javadoc, remove unneeded volatile and initializer in TCG 2015-04-20 13:12:21 +00:00
zzz
ecfb3e94c8 javadoc and debug log tweaks for ST2 2015-04-20 13:09:48 +00:00
zzz
c31d6b1ac1 javadoc fix 2015-04-20 13:09:13 +00:00
zzz
65993e1d50 add methods to simplify logging 2015-04-20 13:05:14 +00:00
zzz
47c4c0d6bb add all known dsa-only hosts to list 2015-04-19 19:35:38 +00:00
zzz
b2872e6110 I2CP Multisession - Work in progress:
Start availability notifier in subsession
Availability notifier cleanup
Various log tweaks added while chasing this down
Better subsession state management
I2PSocketManagerFull verifies subsession to force connect()
Successfully tested
2015-04-19 19:05:53 +00:00
zzz
b8c8d5b447 I2CP Multisession - Work in progress:
Accept subclient data message down client's tunnel in IMD
2015-04-19 15:49:02 +00:00
zzz
32049d7bfc I2CP Multisession - Work in progress:
Reuse LS encryption keypair from primary LS
Log tweaks
2015-04-19 14:49:13 +00:00
zzz
f0fdb35ba6 I2CP Multisession - Work in progress:
Fix creating subsession LS from primary LS
2015-04-19 03:35:40 +00:00
zzz
d8baf62966 I2CP Multisession - Work in progress:
Stub out hardcoded list of DSA-only destinations
Tweak client name length in summary bar
Force initial leaseset request for subsession
Send SessionStatus msg before LS request for subsession
2015-04-19 03:11:37 +00:00
zzz
be8f7f9676 I2CP Multisession - Work in progress:
Fix sending CreateSessionMessage for subsession
New AliasedTunnelPool for subsessions, don't reuse TunnelPool,
so it has its own settings
Fix addAlias()
Simplify refreshSettings()
Send status message on subsession create failure
Fix settings for subsession
2015-04-19 01:32:30 +00:00
zzz
57b641bf63 I2CP Multisession - Work in progress:
Fix NPE in receiveMessage()
2015-04-18 20:45:30 +00:00
zzz
ff5d29de1a I2CP Multisession - Work in progress:
Fix NPE in addSubsession() by creating key stream
Set sigtype for subsession
2015-04-18 19:50:14 +00:00
zzz
91e98ba447 I2CP Multisession Work in progress:
Fix NPE in requestLeaseSet()
Fix setting new session ID in SessionStatusMessage
Fix subsession support detection
Streaming: one socket manager, multiple connection managers.
Change data structure for subessions in socket manager
Subsession cleanup on destroy
I2PTunnel: add DSA subsession for non-DSA shared client
Javadocs
2015-04-18 19:01:23 +00:00
zzz
6a644dd0e5 propagate from branch 'i2p.i2p' (head 66743cfb9b4e1c257e4f0a20a318ee7eb1fb607c)
to branch 'i2p.i2p.zzz.multisess' (head 4533ba250cb8e49044f5144b34014e9bc618cdc7)
2015-04-18 14:08:22 +00:00
zzz
7b82393336 atomics and finals 2015-04-17 17:15:22 +00:00
22993e1ea6 installer/resources/eepsite/jetty-ssl.xml: fix comments 2015-04-17 14:18:56 +00:00
341bd6d7ca tweak to debian apparmor rules 2015-04-17 14:15:05 +00:00
13d5a36cfc drop unneeded patch (ty zzz) 2015-04-17 14:14:06 +00:00
f3bb84f2c0 merge of '4cd641356d3ecf443fa79aa64c8ad553a37022da'
and 'b9d4479f7e0f562a5fd47f2d494fe1b2b0925cbe'
2015-04-17 13:46:44 +00:00
1d496404be Separate loading and starting of TunnelControllers 2015-04-17 13:45:37 +00:00
zzz
51233371e0 history for prop, -5 2015-04-17 13:43:48 +00:00
zzz
bc0a7ebbbc propagate from branch 'i2p.i2p.zzz.test2' (head b6de226d1664089488ab2b438fe7457e9fb8e563)
to branch 'i2p.i2p' (head 0cf35c87b68a5360bd35257e36dfe7f740e53693)
2015-04-17 13:18:22 +00:00
zzz
72c78b3870 config for SSL to eepsite 2015-04-17 13:03:48 +00:00
zzz
5555c52376 Streaming: Locking for next send time,
rename shadowing field in inner class
2015-04-17 13:00:16 +00:00
e1842be049 Don't automatically start TCG on Android 2015-04-17 11:21:26 +00:00
zzz
6ceb4fcf42 history for prop, -4 2015-04-16 23:25:49 +00:00
zzz
50b68d4e1c propagate from branch 'i2p.i2p.zzz.815' (head 43bce385eecdf95bba08985211b80099d1224462)
to branch 'i2p.i2p' (head 1b89427bd2952dc4be08fba14ad1d814d722739f)
2015-04-16 23:19:48 +00:00
zzz
3f46228f0b ISJ: Reduce max search depth to reduce ff load
- from 7 to 6 if not ff
- from 7 to 3 if ff (we don't need to backtrack much if any, we know most of the ffs)
2015-04-16 22:02:35 +00:00
zzz
6c954f0b68 Transport: Fix NTCP countPeers()
O/P conn limit adjustment
2015-04-16 21:55:43 +00:00
zzz
69c2ed77a0 recognize Intel model 69 2015-04-16 15:38:13 +00:00
zzz
6f09224bdc sort clients on /configclients 2015-04-16 15:07:08 +00:00
zzz
568c90806d I2CP: Run DistributeLocal jobs inline (ticket #1506) 2015-04-16 14:24:56 +00:00
zzz
6e451c8d4d javadocs 2015-04-16 14:18:10 +00:00
zzz
12fd585625 Transport: Fix active peer count for NTCP,
which will make the network-down message in the console consistent.
Javadocs for getActivePeers() and getActiveSendPeers()
Make getActivePeers() and getActiveSendPeers() abstract in TransportImpl
Make getActivePeers() and getActiveSendPeers() more efficient
Preliminary conn limits for P/X
Log tweaks
2015-04-16 14:13:23 +00:00
zzz
997fbb3392 log on failed plugin update check 2015-04-16 13:14:40 +00:00
zzz
089626f6b1 increase max i2psnark tunnels to 10 2015-04-16 13:13:32 +00:00
zzz
71d2049fe8 OOM log tweak 2015-04-16 13:11:34 +00:00
zzz
e5aee3001f bump -2 2015-04-15 18:20:52 +00:00
dev
ec62bcbf8e propagate from branch 'i2p.i2p.tuna.tmp' (head 73f55ef56c4b4800364bc92d69794a7b6715c5a7)
to branch 'i2p.i2p' (head 20e0a6d51df8fa6918a48ac01c808e56d3540bf1)
2015-04-15 16:25:58 +00:00
dev
a8f013f3e4 merge of '303a05a4ccfb4162f4cca475bca49d77dceb06f9'
and '9c1c14d60b15e3d9eed4b291a7fae39c11d3c993'
2015-04-15 16:17:24 +00:00
dev
037cd78dc7 #1069: Propagate fix into i2p.i2p from i2p.i2p.tuna.tmp
* Replace SimpleScheduler with SimpleTimer2
 * Bump version number
2015-04-15 16:15:53 +00:00
dev
b31ae4bae5 propagate from branch 'i2p.i2p.tuna.tmp' (head 1bba286bdb7f8ba879c4db3f356676151674a201)
to branch 'i2p.i2p' (head 5698b31632398b8156a3b4cc215fed677cf205bf)
2015-04-15 16:08:29 +00:00
dev
54dba980b4 #1069: Replaced SimpleScheduler with SimpleTimer2 in a few places 2015-04-15 15:32:40 +00:00
dev
dc19d2fab3 SimpleTimer2: Removed debug print 2015-04-15 15:18:02 +00:00
dev
3a57310fbe SimpleTimer2: Call the 3-arg addPeridicEvenet() from the 2-arg addPeridicEvenet() 2015-04-15 14:42:39 +00:00
749e19a1c3 fixes to apparmor profile for i2prouter 2015-04-14 18:50:45 +00:00
zzz
de6608f6b8 Streaming: Handle reset packets without a FROM field, validate
signature using connection's destination
Log tweaks
Remove 0 arg from addRateData() calls
2015-04-14 14:11:48 +00:00
zzz
cd6d9cdd94 Router: Fix NPE on bad share bandwidth config (ticket #1524) 2015-04-14 14:04:31 +00:00
zzz
e45413d417 Update: Don't log an error for the "dummy" updater (ticket #1525) 2015-04-14 14:01:50 +00:00
11c3230150 updates to apparmor profiles
- hardening (restrict access to proc to owner)
- removing files covered by abstractions
- indentation per apparmor profile style
2015-04-14 01:00:10 +00:00
zzz
dd99978b19 0.9.19 2015-04-12 13:32:49 +00:00
zzz
dd265bbd54 Updates after review:
Remove meeh.i2p as update host (ticket #1515)
Re-add 193.xxx https reseed
Fix SocketManagerFactory property handling
Restore UPnP locale fix lost in the merge
i2ptunnel finals
I2NP unique id fixes
duplicate done() in ReseedChecker
bigger langbox in CSS
reformatting
Javadocs
2015-04-11 19:34:34 +00:00
dev
f5ba1b1b97 #1069: Replaced getInstance() with this 2015-04-09 22:32:59 +00:00
zzz
7825f0f84f i2ptunnel: Remove null workaround and stat, testing passed (ticket #335) 2015-04-09 16:04:06 +00:00
69a0324e86 update debian changelog; bump build 2015-04-09 12:06:26 +00:00
957d3545b6 Translation updates pulled from Transifex; start of Malagasy translation 2015-04-09 11:59:17 +00:00
466348a8c5 Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country database from 2015-04-07. 2015-04-09 11:51:55 +00:00
zzz
e5b7e97ff4 Jetty: Set session cookies to HttpOnly in all webapps
i2psnark: Remove extra mime types in i2psnark web.xml;
added to Jetty's default by now, or in our mime.properties file
2015-04-08 19:45:37 +00:00
dev
4613e5f847 #1069: Improved patch according to feedback in ticket 2015-04-08 17:49:28 +00:00
dev
44f8154f07 #1069: Improved patch according to ticket feedback 2015-04-08 17:47:27 +00:00
zzz
5486874d1a Tunnels: Add config to disable Bloom filter for testing 2015-04-08 14:50:12 +00:00
zzz
d868ca4740 Tunnels: Add new Bloom filter size, increase bandwidth limit (ticket #1505) 2015-04-08 14:40:53 +00:00
zzz
780479be4b Tunnel: Add bloom filter warning if high bw but low memory 2015-04-08 13:36:56 +00:00
zzz
4705f01bc5 Router: Move update extraction code to new class in tasks/ 2015-04-08 12:33:16 +00:00
zzz
2f5f91a084 log tweaks 2015-04-08 11:52:02 +00:00
dev
e44fe98c7e propagate from branch 'i2p.i2p' (head 6ae35262874a1828d53ddad22e6a6c4db7b031c1)
to branch 'i2p.i2p.tuna.tmp' (head 7d48c8e1a01f6c6f6cef802e0436c50785d89716)
2015-04-07 17:01:47 +00:00
dev
d8fbc9c170 Formatting 2015-04-06 21:10:49 +00:00
dev
facbe8f9a0 #1069: Deprecated SimpleScheduler and moved functionality into SimpleTimer2 2015-04-06 21:05:24 +00:00
dev
4d8e577ffd findbugs: Added companion equals() and hashCode() methods to existing compareTo() 2015-04-06 16:04:05 +00:00
dev
80eb7635c1 findbugs: Added companion equals() and hashCode() methods to existing compareTo() 2015-04-06 15:40:39 +00:00
dev
e3103762b6 findbugs: Removed synchronization on concurrent object 2015-04-06 15:00:40 +00:00
zzz
cce710e377 IRC Server: Better timeout handling when reading initial lines (ticket #723)
Send error responses for timeout, EOF, and bad registration.
Only affects "user" mode, not webirc.
detab
move private fields to top
2015-04-05 17:36:30 +00:00
013c79bc45 Debian: Refresh patch 2015-04-04 21:59:36 +00:00
dev
1e375886bd merge of '2cb50c2864d750f33039bdbaeb6c15d2bd636ce4'
and 'cb2fbb74aa4412375fdbc546fe2218ca1704cd7d'
2015-04-04 19:49:47 +00:00
dev
d1ac24c65d findbugs: Covariant equals() method defined, Object.equals(Object) inherited 2015-04-04 19:49:37 +00:00
zzz
6aa1284848 i2ptunnel: Check for total header size too big,
log tweaks
2015-04-04 19:31:20 +00:00
zzz
bb082c35fc recognize more error codes 2015-04-04 19:14:30 +00:00
zzz
f7577e7de8 i2ptunnel: Return specific error pages to client on errors
in HTTP header processing in the HTTP server (ticket #1507)
2015-04-04 19:12:18 +00:00
zzz
b5df13d8b7 propagate from branch 'i2p.i2p' (head 2cb50c2864d750f33039bdbaeb6c15d2bd636ce4)
to branch 'i2p.i2p.zzz.test2' (head 9775e688503ec47dc12efa860a5571317af5f063)
2015-04-04 17:04:52 +00:00
zzz
9d76790cc5 javadoc 2015-04-04 17:01:40 +00:00
zzz
706ee243a5 Streaming read timeout fixes:
i2ptunnel:
- Better timeout handling when reading headers in HTTP server (improved fix for ticket #723)
  Enforce total header timeout with new readLine()
- Prep for returning specific HTTP errors to client on request timeout and header errors,
  instead of just closing socket... further work to be in i2p.i2p.zzz.test2 branch
Streaming:
- Fix read timeout on input stream - was waiting too long, often twice as long as timeout, or more
  Enforce total timeout even when notify()ed
- Fix read() returning 0 on read timeout instead of -1 (possible fix for ticket #335)
  This prevents passing partial headers to server on timeout
- Fix javadocs for read timeout to match current behavior
- Fix StandardSocket SoTimeout to account for differences with I2PSocket readTimeout
- log tweaks
2015-04-04 17:00:57 +00:00
zzz
351a1a8d27 i2ptunnel: Fix NoSuchElementException processing proxyList
caused by 03-31 checkin
2015-04-04 16:59:21 +00:00
zzz
6916cd7977 merge of '18f97452ba9fd5a7274ca689084ffe49b55c2cf3'
and 'c9caed8c48615dc740061fd28315ee659e1afe20'
2015-04-04 15:42:14 +00:00
dev
a444c25c2c silence findbugs: use of uninitialized value 2015-04-04 13:44:37 +00:00
dev
45bc533e38 findbugs fix: equals() used to compare array and nonarray 2015-04-04 13:37:18 +00:00
zzz
03e890b01c merge of '2e3b52a13c62422d86931cd194870b7e2698f3c2'
and 'fde331f6b10f0ef936a2aa0d68092df22348a581'
2015-04-04 11:21:50 +00:00
dev
0c90162e20 Copy directly into buffer without intermediate buffer 2015-04-04 02:27:24 +00:00
dev
ddc3ef8db3 Removed unnecessry buffering 2015-04-04 00:05:29 +00:00
zzz
fcec43b7ca i2ptunnel: Fix stopping tunnel on bad args when starting,
broken by new state code
2015-04-03 23:46:24 +00:00
zzz
edb614d970 wrapper.config: Remove old mortbay properties, unused by new Jetty 2015-04-03 23:40:39 +00:00
dev
820b99e3d3 Commented out java runtime argument 2015-04-03 23:20:39 +00:00
dev
cf0453cee0 Initialize uniqueId lazily to avoid wasting entropy for messages where it isn't used 2015-04-03 23:01:16 +00:00
zzz
75a8d8f6d3 more ssl config tweaks 2015-04-03 13:33:59 +00:00
zzz
1ac8d99145 i2ptunnel: Send HTTP server port 443 traffic to the server
transparently, to support HTTPS over the same tunnel,
when so configured.
Jetty: Add extensive help to jetty-ssl.xml for setting
up SSL on the same server.
2015-04-03 12:19:41 +00:00
dev
b7b5512e7a Formatting 2015-04-02 23:01:41 +00:00
zzz
485acd6c8d Remove all the startRunning() calls in constructors,
which duplicated the new ones in I2PTunnel, causing all sorts of trouble.
May still need more locking. TBD.
2015-04-02 20:52:40 +00:00
dev
bb68728c82 Added link to blog post explaining why the flag was added 2015-04-02 20:44:52 +00:00
dev
f3b2eb69d2 Fixed syntax error 2015-04-02 16:32:38 +00:00
dev
168d688fc9 Disable JVM stats being written to file, to prevent long (up to ~400ms) pauses.
- Blog post: http://www.evanjones.ca/jvm-mmap-pause.html
    - This change prevents tools that use the stats-file (/tmp/hsperfdata) from working (like jstat)
2015-04-02 16:05:43 +00:00
dev
ade93ea76d Added model name for Xeon E3-1230v2 2015-04-02 15:58:46 +00:00
44503af88b * Job Queue/stats: add stat/graph for amount of scheduled jobs. 2015-04-01 22:34:39 +00:00
zzz
eb7693561b spelling 2015-04-01 13:59:51 +00:00
zzz
3ccb03f9be propagate from branch 'i2p.i2p' (head bf7fc6bb213e734788d6527a4a689184ff73d6ad)
to branch 'i2p.i2p.zzz.test2' (head 6a04d890ef0ebf179ec6801d9d96afff26a2e515)
2015-04-01 13:48:18 +00:00
zzz
f3a2af8f10 make job runner quantity configurable 2015-04-01 13:48:06 +00:00
zzz
2ef615a3f7 I2CP: Allow larger client clock skew (ticket #1503),
better error message to client
javadocs
2015-04-01 12:50:51 +00:00
zzz
20197fc3ec i2psnark: Fix changing data directory on Windows (ticket #1503) 2015-04-01 12:41:38 +00:00
zzz
fadc624f7c API: Fix some client-side APIs to honor defaults in Properties;
add javadocs to specify where we do and don't (ticket #1491)
2015-03-31 13:18:11 +00:00
zzz
22c4149358 fix another split() bug 2015-03-31 11:26:02 +00:00
zzz
c770c6bc6a i2ptunnel: Fix multiple SSL outproxies in HTTP client
escape and truncate URL on error page
2015-03-31 11:21:32 +00:00
zzz
891408191e UPnP: Don't rescan when shutting down 2015-03-29 14:59:11 +00:00
zzz
9a8fa246a9 I2CP: Prevent NPE when router receives messages without prior session (ticket #1503) 2015-03-29 13:45:14 +00:00
zzz
83c3152b5d JobQueue: Don't start thread in constructor (ticket #973) 2015-03-29 13:40:04 +00:00
zzz
956730c5e9 log tweak to help diagnose ServerSocket closed 2015-03-28 10:54:00 +00:00
zzz
72b9c92a6e better 7 bit error message 2015-03-28 10:51:59 +00:00
zzz
349255d252 exit code checks and javadocs 2015-03-28 10:49:43 +00:00
zzz
ac902badcd log tweak to hide i2pd badness 2015-03-28 10:47:10 +00:00
zzz
9dc2ae0d7e fixup after prop 2015-03-28 10:25:45 +00:00
zzz
188bd6db7b propagate from branch 'i2p.i2p' (head 2ce39645bf3b3b7fc2f083ebcb073f104114e939)
to branch 'i2p.i2p.zzz.815' (head 4f0279eb4cf13e547a64913443ff7819a43962c0)
2015-03-27 14:47:49 +00:00
zzz
3a8ce64c84 I2PTunnel client-side locking fixes (ticket #815)
Checkin of patches from Oct. 2013, based on 0.9.8.1.
Had some issues back then, and not tested recently.
Prop from i2p.i2p to follow.
2015-03-27 14:16:41 +00:00
zzz
f3d573cab0 i2ptunnel HTTP client: Replace all getBytes() calls
with a Writer or getBytes("UTF-8") for efficiency and to
avoid encoding issues.
Store strings as strings, not bytes.
Catch IOEs to prevent cascading error pages.
Minor cleanups
2015-03-25 12:10:14 +00:00
zzz
9e18c7ea18 Streaming: Throw I2PSocketException when connection is reset,
display new error page in HTTP client (ticket #643)
javadocs
2015-03-24 14:33:36 +00:00
zzz
a975dc4427 Summary bar: linkify news headings, remove 'show news' link 2015-03-23 15:47:33 +00:00
zzz
b875e284af merge of '33b368d75d4b7536dd4a29efa35fba64e6dc409d'
and '8eb5a0d367c4b34eadc326e0ba727e998e6f5505'
2015-03-23 14:21:05 +00:00
46fe4298b9 States for TunnelController (#815) 2015-03-23 13:59:05 +00:00
9790d3ba64 Tweak so TODO is marked in IDEs 2015-03-23 12:50:33 +00:00
2d31f30a22 ReadWriteLock in TunnelControlGroup (#815) 2015-03-23 12:49:30 +00:00
2fefe93922 merge of '91e8b79f2d8c4ffd26867eb6ddd0ee63d22b0ca9'
and 'dd39c6a48fec46017ce527d8b8b8208369ecda5e'
2015-03-23 12:47:40 +00:00
399b068a4e Fixed NPE in test 2015-03-23 03:54:21 +00:00
zzz
dcffde6eeb Javadoc: missing package.html files in applications (ticket #1109) 2015-03-22 18:37:40 +00:00
zzz
78074f6a7e Javadoc: missing package.html files in i2p.jar (ticket #1109) 2015-03-22 17:32:35 +00:00
zzz
79dc01f7e4 Javadoc: missing package.html files in router.jar (ticket #1109) 2015-03-22 16:35:21 +00:00
zzz
0f6040ecb1 enforce a minimum number of RIs to bundle 2015-03-22 12:44:32 +00:00
zzz
a0ab72e362 more /configreseed help text 2015-03-22 12:26:05 +00:00
zzz
2c45378c6d Console: Better status feedback on manual reseed from URL
Reseed: Better status feedback and cleanup in summary bar
2015-03-22 10:08:48 +00:00
zzz
44c75187f5 set tunnel name for ping 2015-03-22 08:30:38 +00:00
zzz
2609a4d124 Floodfill: Don't become ff w/o ECDSA support
Don't transition to non-ff when shutting down if configured true
Set ff for cap P and X
2015-03-22 08:30:10 +00:00
zzz
2d58501db3 Plugins: Add form to browse for local plugin file to install,
easy since we have multipart in console now
Better status feedback from update manager to console
2015-03-21 17:23:19 +00:00
zzz
a337185820 better temp dir fallback and logging 2015-03-21 12:38:48 +00:00
zzz
9c0aa0c271 randomize i2psnark temp dir name 2015-03-21 12:19:03 +00:00
zzz
b2e908f094 add removed certs to delete list 2015-03-21 12:14:07 +00:00
zzz
ef32d37073 TunnelPool: Reduce expl. quantity adder for ff since we're
doing mostly direct lookups now, and delay adding them at
startup to give client tunnels a chance
2015-03-21 12:13:22 +00:00
zzz
f0961a9658 more accurate job stats 2015-03-21 12:10:10 +00:00
876b5714be merge of '7c32d2fbb882e6d56cb06fc0e272f05ee2c0b8ed'
and '7e72459b27feb5176e98c5efc843f63e46e8f63d'
2015-03-21 09:59:00 +00:00
825cd7ff4c Docstring spelling fix 2015-03-21 04:29:45 +00:00
47f3476078 More I2PTunnel UI logic into GeneralHelper 2015-03-21 04:29:32 +00:00
7b10ebc117 fix previous commit 2015-03-20 19:43:01 +00:00
e5cdfd206d Re-enable uk.reseed.i2p2.no; it's back up (ticket #1487) 2015-03-20 19:25:42 +00:00
zzz
dd4c62b560 TunnelDispatcher: Start part. tunnel cleanup job sooner since
we're accepting tunnels sooner.
2015-03-20 16:54:03 +00:00
zzz
aae801efaf sort config tabs 2015-03-20 16:51:34 +00:00
zzz
e02d44433d missed file from last checkin 2015-03-20 13:32:42 +00:00
zzz
590a3c98e5 charset 2015-03-20 12:32:53 +00:00
zzz
7f472e4ee9 Console:
- Move multipart form support from susimail to jetty-i2p.jar
    so console can use it
  - Add multipart form support to formhandler.jsi and FormHandler.java
Reseed:
  - Fix zip magic number
  - Finish manual reseed from local file
package.html files for jetty-i2p.jar
2015-03-20 12:30:04 +00:00
zzz
a3802d4d8b javadoc fix 2015-03-20 12:29:40 +00:00
zzz
59348f8dbd Reseed:
- Add form to manually reseed from zip or su3 URL
    (result status not yet working)
  - Add form to manually reseed from local zip or su3 file
    (not yet working, needs multipart/form-date moved from susimail)
  - Add form to create reseed zip file to share
    (working)
  - Backend support and refactoring in reseed code
2015-03-19 23:17:18 +00:00
zzz
8742a66f2f fix susimail HTTP headers 2015-03-19 21:36:23 +00:00
zzz
a2f027e136 NetDB: Don't publish non-ff RI on exit if we are coming right back 2015-03-18 19:58:31 +00:00
zzz
cb4359cd0a Streaming: Reduce min RTT again 2015-03-18 17:50:40 +00:00
zzz
163c172823 StatisticsManager: Publish dummy LS count if we just started 2015-03-18 17:29:08 +00:00
zzz
80a2d2c1f5 Router: Allow disabling the setting of some System properties, for embedded applications 2015-03-18 14:40:17 +00:00
zzz
486f282999 add CoreVersion.getVersion() 2015-03-18 14:13:05 +00:00
zzz
1293dccf35 I2CP Multisession support and multiple destinations in one tunnel pool.
Work in progress.
Router-side I2CP mostly done.
Client-side I2CP mostly done but undecided on how to handle
listeners.
Streaming stubbed out but may be wrong, may need multiple socket managers,
not clear how to proceed.
I2PTunnel not started.
Blacklist of DSA-only dests not started.
Router leaseset publishing not correct. Not clear whether to have
additional tunnel pools with flags, or put the tunnel pools into
the client hashmap twice. Client config contains destination,
may need to move that to tunnel pool.
2015-03-18 12:59:50 +00:00
zzz
91fe62eee3 History for prop, -6:
Prop from i2p.i2p.zzz.upnp, containing:
Cyberlink for Java v3.0 + (2015-02-15) from github
See branch revs for more info and fixups.
Previous was Cyberlink for Java v2.1 (2011-09-16) from SVN.
From a scan of the 2.1-to-3.0 diff, it's mostly
formatting changes, getting rid of DOS line endings,
and a couple of new features we don't need.
I see very few fixes. And the Device.getAbsoluteURL()
"fixes" did not work in my testing, I had to fix them again.
Unlikely to fix any of the open UPnP tickets #481 #725 #728 #1194 #1480.
But now we're current.
2015-03-18 12:15:41 +00:00
zzz
d3f5596cb2 propagate from branch 'i2p.i2p.zzz.upnp' (head 8719ae9a1473d748947733043f465a4589cc23d5)
to branch 'i2p.i2p' (head 5ae9785903c4b9452f4241758e8ddc1338e94574)
2015-03-18 12:13:41 +00:00
zzz
d7a88db87a NetDB:
- Send exploratory lookups directly to the floodfill if
    we are already connected to him
  - Don't encrypt RI lookups when overloaded
  - Don't explore when overloaded
  - SearchJob cleanups
Tunnels: Drop instead of reject requests on high job lag
2015-03-18 12:10:30 +00:00
zzz
0af1f67c33 Router: Revert deprecation;
addCapabilities() tweaks
2015-03-17 21:38:59 +00:00
zzz
8dde7b70db UPnP:
- New fix Device.getAbsoluteURL() once again after merge
 - Don't load local files in Service.getSCPDNode()
2015-03-17 21:29:03 +00:00
zzz
64faeef6c4 restore previous javadoc fixes after merge 2015-03-17 19:11:21 +00:00
zzz
c79e4aeaea propagate from branch 'i2p.i2p' (head 97716ce246bcbee153cf1a28253bac2385ddf7be)
to branch 'i2p.i2p.zzz.upnp' (head e508f71db90f382080b98d11efbdb4d88c1bc406)
2015-03-17 18:49:37 +00:00
zzz
8b6a86e391 merge of 'c5e201203713f0fefcdef642ca50597f8936c79c'
and 'fbd68f812db1e891f96e212b3a5938beec0233b5'
2015-03-17 18:21:12 +00:00
zzz
92daf4a8df Cyberlink for Java v3.0 + (2015-02-15) from github:
Unmodified cybergarage-upnp from github rev 9499b03 2015-02-05
https://github.com/cybergarage/cybergarage-upnp/commits/master
which is the same as rev 3ed1af9 2014-07-28 except for
the addition of README.md which we aren't using.
This is post-version 3.0.

Omitted files:
  router/java/src/org/cybergarage/xml/parser/XercesParser.java
  router/java/src/org/cybergarage/xml/parser/XmlPullParser.java
  router/java/src/org/cybergarage/xml/parser/kXML2Parser.java
chmod all files back to 644.

Diverging from 2.1 checkin rev 59eae97dbb470d8c4a1e4dba3a9763e134bb0c53
in prep for merging.

License unchanged.
Compile tested only.
2015-03-17 14:36:05 +00:00
zzz
819b07a52a minor refactor 2015-03-17 13:18:30 +00:00
zzz
b8f8c6129d prevent negative sleep 2015-03-17 13:17:38 +00:00
zzz
25d1ae195a New translations from tx:
Indonesian, Finnish, Malagasy, Albanian, Korean, Ukrainian, Brazilian Portuguese, Dutch
Note broken translations in TX config file
2015-03-17 13:16:40 +00:00
zzz
d22b05e114 NetDB: Send RI lookups directly to the floodfill if
we are already connected to him
(from ISJ only; does not affect exploration, verifies, LSes, ...)
2015-03-16 22:40:25 +00:00
zzz
db25eff74a log tweak 2015-03-16 22:38:29 +00:00
zzz
c927441d66 case-insensitive sort of stats 2015-03-16 20:14:32 +00:00
zzz
7e4832d5f2 lint 2015-03-16 15:44:45 +00:00
zzz
819b35c760 Router: Increase exploratory tunnel quantity if floodfill 2015-03-16 15:20:03 +00:00
zzz
071498c413 Router: Republish RI early if capabilities change
- RI javadoc clarifications WRT caps
2015-03-16 15:10:36 +00:00
zzz
7125ed0492 Apache Tomcat 6.0.43 2015-03-16 09:34:37 +00:00
zzz
de201bdd9c Throttle: Reject tunnels based on job lag 2015-03-16 09:12:41 +00:00
zzz
4fccd258e6 javadoc fixes 2015-03-16 09:08:03 +00:00
56d705739b Migrate accessors to GeneralHelper, fix broken outproxyAuth boolean 2015-03-15 20:26:36 +00:00
2a9d61b1ed merge of '6eb0d9bd5731afaa33fa1a0c82dd08a1d16d104b'
and 'f4fa275a1d6e014c64c5ff063fb890dd05e4ed60'
2015-03-15 20:13:16 +00:00
zzz
a9f6839a04 NetDb: Track flood success 2015-03-15 13:37:22 +00:00
zzz
5b555855ef Clear displayed tracker issues when restarting torrent
lint
2015-03-15 12:52:26 +00:00
zzz
76cf80a3d0 Job Queue:
- Fix overload dropping
   - Add drop count to job stats
   - Decrease overload threshold again
   - Concurrent tweaks
2015-03-15 11:48:12 +00:00
zzz
4c6aaa32b6 Router javadocs, stub out class P,
throw ISE instead of exit() if another router running
2015-03-15 11:42:00 +00:00
zzz
74ab1bff53 threshold tweaks for floodfill 2015-03-15 11:37:03 +00:00
zzz
b5bba5e3c8 log tweak 2015-03-15 11:35:49 +00:00
7e5bd17714 Move saveTunnel() and deleteTunnel() from IndexBean into i2ptunnel-ui.jar 2015-03-14 02:52:16 +00:00
zzz
ec6207fc78 Job Queue:
- Drop garlic message decryption jobs on overload
  - Decrease overload threshold
2015-03-13 17:50:32 +00:00
zzz
36d47a0ba9 minor cleanup 2015-03-13 17:48:29 +00:00
zzz
0289cefd8d lint 2015-03-13 17:26:15 +00:00
521eb2d8f8 Router: create router.integratedPeers (floodfills) stat, and allow graphing of it. 2015-03-13 16:53:08 +00:00
zzz
0494266649 i2psnark:
- Auto-reduce tunnel quantity based on peer count
  - Increase max tunnels
2015-03-13 14:56:35 +00:00
zzz
8fac5c064e fix i2ptunnel.war 2015-03-13 14:14:49 +00:00
0b6f74e646 Enable proxy authentication type to be configured 2015-03-11 23:46:38 +00:00
b8b272a5b8 Better multi-mode setters 2015-03-11 10:57:07 +00:00
a570e09166 Explicit boolean setters in TunnelConfig 2015-03-11 10:34:02 +00:00
1919e36c30 Move TunnelConfig to .ui, separate it from i2ptunnel.jar 2015-03-11 03:58:24 +00:00
812c00f11e Move TunnelController config creation logic into class that Android UI can use 2015-03-10 20:05:45 +00:00
419e27cfd1 Disable (jp|uk).reseeder.i2p2.no (tickets #1422, #1487) 2015-03-09 15:49:52 +00:00
d761c02909 Remove commented out reseed server i2p-netdb.innovatio.no and its associated certificates. 2015-03-09 15:40:40 +00:00
zzz
c7d1d2b69a console: Hide cancel graceful shutdown button unless we are shutting down 2015-03-08 20:23:00 +00:00
zzz
0972b6b56a more test cases 2015-03-08 20:20:50 +00:00
zzz
6e3cf7869f log tweak 2015-03-08 20:20:06 +00:00
zzz
f7337b4891 i2psnark: Increase min and default bandwidth
Add creation date to created torrents
log tweaks
more test cases
2015-03-08 20:19:12 +00:00
zzz
55161dec17 Router Throttle: Tweak messages during probabalistic rejection,
other cleanup
2015-03-08 20:07:05 +00:00
zzz
b65b53b0df Transport: Add missing bogons to IP validity check
192.0.0.2 seen out there (RFC 6333)
2015-03-08 20:05:50 +00:00
zzz
49e1e1c8a4 minor transport cleanup 2015-03-08 20:02:28 +00:00
9b73fcda40 Include priority for logged strings 2015-03-04 19:07:28 +00:00
b92e1ee9aa Split LogWriter to make Android subsititution simpler 2015-03-02 10:56:50 +00:00
04ac54cd35 Re-enabling host; its su3 files are now properly signed. 2015-03-01 23:37:27 +00:00
d47916f753 re-enable jp.reseed.i2p2.no (ticket #1422) 2015-03-01 22:34:15 +00:00
zzz
b0ea1d691a log fix, comment fix 2015-02-23 09:50:43 +00:00
zzz
ce041dfbc1 0.9.18 2015-02-22 09:52:27 +00:00
zzz
4613da093d log level tweak, bump for review 2015-02-19 09:47:44 +00:00
2d5f7aaae5 year typo fix 2015-02-18 23:48:21 +00:00
5a7a7ac83d typo fix 2015-02-18 22:36:52 +00:00
f217af2deb extend checkcerts.sh to print bits and hash information 2015-02-18 22:36:33 +00:00
6d58f9a354 Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country database from 2014-02-04. 2015-02-18 22:34:09 +00:00
29953ea5e4 Debian: confine daemon with apparmor (ticket #1061) 2015-02-18 22:25:24 +00:00
bb9cef1e40 Add example apparmor profile (ticket #1092) 2015-02-18 21:38:25 +00:00
ece2f1484c refresh debian patch 2015-02-18 21:32:34 +00:00
a3c8a4363d Pulling in translations from Transifex 2015-02-18 20:20:52 +00:00
2f90b5a201 refresh debian patch 2015-02-17 19:27:11 +00:00
d4bbdc28f3 FloodfillMonitorJob: use the 60 min rate avg instead of lifetime avg, but fallback to the lifetime.
SAMStreamSend: fix tabbing from earlier commit.
2015-02-16 17:27:17 +00:00
f41df969b7 merge of '3e2231827648f614c5df325d9904e8d454e9a847'
and 'cddd2e9d2cf6f5c50a7d9948fbb2b3247d9768eb'
2015-02-16 08:07:54 +00:00
f87d006a1c FloodfillMonitorJob:
- Use lifetime average value for job lag
 - Change the job lag limit to less than 25ms
 - Consider and set the limit of backlogged tunnels to less than 5
2015-02-15 22:40:36 +00:00
f4fa9a7d8f New cert for i2p.mooo.com. Will be switched on the server in a future release. 2015-02-15 19:16:07 +00:00
c52047e6cd Remove reseed host by hoster's request 2015-02-15 19:10:48 +00:00
9163d41228 * I2PSnark, Jetty, SAM, crypto: findbugs resource leaks. 2015-02-10 21:57:27 +00:00
1be9bb29e8 disabling us.i2p2.no over http 2015-02-08 15:05:04 +00:00
522a89a045 reseed: remove reseed.info; hoster is discontinuing the service. 2015-02-08 15:00:01 +00:00
zzz
06b9b6a7fb more clock log tweaks 2015-02-08 12:52:51 +00:00
zzz
7f9c565cd7 fix early NPE 2015-02-08 00:42:43 +00:00
zzz
201afc823e SSU: Limit range for valid clock skew
Reduce log level for ignored clock adjustment
2015-02-07 14:13:14 +00:00
zzz
f4c79c885a Transport: Ban routers if they are too old and we are non-DSA 2015-02-07 14:03:42 +00:00
zzz
656202c9db debug tweak 2015-02-07 14:01:56 +00:00
zzz
72b64072d5 missed file for event log change 2015-02-07 13:59:11 +00:00
zzz
b72271f9a4 NTCP: Block IP for a while when incoming connection is dropped before
receiving a message. Possible workaround for tickets #551, #1075, #1411.
Root cause of problem not yet found.
- Increase threshold for loop throttle, this probably isn't the problem.
- Log tweaks
2015-02-06 15:09:45 +00:00
zzz
b0d09d28f4 SSU: Change peer test log error to warn.
This is caused by an i2pd bug, already fixed.
2015-02-06 11:18:20 +00:00
zzz
b9197e35b5 NetDB: Reduce max job lag for floodfill, was far too high 2015-02-06 00:51:32 +00:00
zzz
e431be2cbe NTCP minor cleanups, javadocs, atomics 2015-02-06 00:49:21 +00:00
zzz
761c883c1f Add event log for reachability change 2015-02-06 00:47:41 +00:00
zzz
60f86f342b Decrease DH refiller initial delay and increase buffer size
to reduce chance of running out on high-bandwidth routers
2015-02-06 00:46:13 +00:00
zzz
1234b6b148 stat tweak 2015-02-06 00:45:24 +00:00
6f45242fc8 Plugin SU3 cert for str4d@mail.i2p 2015-02-04 23:03:42 +00:00
zzz
36c45ccb7b Console: Show UPnP status even if disabled (ticket #1459) 2015-02-04 16:11:17 +00:00
zzz
90cf71b5bc rename headers after review 2015-02-04 11:54:18 +00:00
zzz
7165dc7860 NetDB: Don't flood an RI back to itself. While Java ffs self-flood,
other implementations may not.
2015-02-01 19:57:18 +00:00
zzz
5491287931 OCMOSJ: Pick a OB tunnel at random, not with the OBEP closest
to the lease, as that may be reducing the odds of trying a
different path and hurting connection reliability.
While the change may slightly increase connection congestion,
if it helps with reliability then it's worth it.
2015-02-01 19:53:11 +00:00
zzz
7256096b8a Router: Call warmupCrypto() earlier in the initialization, so it
actually happens before some other thread needs the crypto
2015-02-01 19:49:25 +00:00
zzz
b6008b5414 Crypto: Catch IAE in generateCertificate() 2015-02-01 19:47:09 +00:00
zzz
1042d21278 log tweak 2015-02-01 14:07:56 +00:00
zzz
47eff7ee86 PRNG: Don't hang forever at startup waiting for SecureRandom init 2015-01-31 17:37:59 +00:00
zzz
3da850a6b9 bump -17 2015-01-31 15:20:37 +00:00
zzz
a1358deda2 private method 2015-01-31 15:16:42 +00:00
zzz
df0bbfd615 Netdb: Encrypt lookups for 32-bit x86 also 2015-01-31 15:13:52 +00:00
zzz
0568ac3aa5 javadoc 2015-01-31 15:13:04 +00:00
zzz
e63a69170e Transport: set 4 MBps max bw due to bloom filter 2015-01-31 15:12:21 +00:00
zzz
711f8dedd9 console: disable changing log path 2015-01-31 15:10:45 +00:00
zzz
09c3737a94 reduce log level 2015-01-31 12:53:49 +00:00
zzz
9384424173 disable floodfill in laptop mode 2015-01-31 00:12:25 +00:00
zzz
4936f08212 Console: Don't display invalid IPv6 addresses as options on /confignet 2015-01-30 17:26:45 +00:00
zzz
03f4ebbe35 add throttle stat 2015-01-30 16:17:39 +00:00
zzz
0671785ab2 NTCP: Throttle event pumper if looping too fast (tickets #551, #1075, #1411)
This is just a simple workaround, root cause unknown.
May need tuning.
2015-01-30 16:00:45 +00:00
zzz
381dbc4b4a Proxy error page tweaks 2015-01-30 15:55:12 +00:00
zzz
84cf531f5f SSU: Fix transition from firewalled to non-firewalled 2015-01-29 22:23:28 +00:00
zzz
175806115b SSU:
- Sort introducers in router address, so we won't force a republish
due to a different ordering of the same introducers
- Don't publish an address if we need introducers but don't have any,
so the user won't see a 'firewalled with inbound NTCP enabled' message
2015-01-29 20:34:49 +00:00
zzz
86b45ab1e5 SSU: Fix replaceExternalAddress churn when firewalled,
caused by change in 0.9.17 removing IP/port from published address
when firewalled. We must now keep a local unpublished address
also, containing the detected IP/port.
2015-01-29 15:53:04 +00:00
zzz
17939036bc move comparators to their own class 2015-01-29 12:52:46 +00:00
zzz
5bf515441e Router: Ensure nonzero tunnel IDs 2015-01-28 21:43:27 +00:00
zzz
06edb9f2a6 Router: Stub out capabilities P and X (ticket #1447) 2015-01-28 18:07:45 +00:00
zzz
33b58f5fab UPnP:
- Callback when device removed
  - Consolidate callbacks
  - Clear ignored devices after primary device removed
    to allow one to be promoted on rescan
2015-01-28 17:38:52 +00:00
zzz
47a012a4dd initialize blocklist sooner 2015-01-28 17:36:53 +00:00
zzz
e5801be43e only use valid IP for geoIP 2015-01-28 16:25:50 +00:00
zzz
d5a6ac591c more UPnP locking fixes 2015-01-28 16:25:08 +00:00
zzz
59373f9bdf UPnP:
- Rescan for devices periodically and when reachability changes (tickets #661, #959)
  - Don't put "I2P" in registered protocol name
  - Add uptime to UPnP info
  - HTML escaping
  - Remove static log on Android
  - Javadocs and cleanups
2015-01-28 15:04:59 +00:00
zzz
5da492b9e5 spelling 2015-01-19 12:44:31 +00:00
zzz
9bcc951f10 i2psnark: Skip incompatible welterde tracker if we are ECDSA 2015-01-11 18:21:45 +00:00
zzz
3270ba840e I2PTunnel: Add option for multihoming optimization 2015-01-11 17:36:39 +00:00
zzz
45b3e44cc2 NetDB: Stubs for bandwidth estimation during reseed (ticket #935)
Incomplete and may not ever be, for evaluation only.
2015-01-10 16:51:13 +00:00
zzz
7ed855b2d2 NetDB: Publish RI faster when costs change (ticket #1437)
PLRIJ interval was 37-50 minutes. Reduce that by 4x,
but for 3 out of 4 times, only publish if something changes,
including cost. 4th time, always publish, as before.
This will hopefully reduce routers getting slammed to
conn limits on a transport.
2015-01-09 17:03:33 +00:00
zzz
f08552c2d1 javadocs 2015-01-09 16:58:57 +00:00
zzz
9a4c19b24b reduce log level 2015-01-08 19:32:42 +00:00
zzz
690b695373 remove jisko.i2p, down since 2014-11-08 2015-01-08 18:21:11 +00:00
zzz
65348b2365 more renaming 2015-01-08 18:20:08 +00:00
zzz
285c13d900 fix reseed checking at startup, broken in previous checkin 2015-01-07 23:15:10 +00:00
zzz
0a938d9048 Router: Don't reset uptime after a soft restart
Tunnels: Temporarily increase exploratory tunnel quantity at startup,
so that netdb refresh will work better
2015-01-07 20:11:04 +00:00
zzz
a02a265802 trim all xml news data 2015-01-07 19:55:37 +00:00
zzz
eeeeef81cf NetDB: Possible fixes for reseed completion not recognized (ticket #1384) 2015-01-07 19:16:55 +00:00
zzz
bcb9fe5f24 Startup: Accept tunnels after 10 minutes instead of 20 (ticket #1152) 2015-01-07 19:14:44 +00:00
zzz
37f34d83f8 Router: Add startup/shutdown state machine
Tunnels: Cleanup, catch more cases of zero-hop configuration
ClientAppConfig: Start i2ptunnel sooner
  Since BuildRequestor won't use a zero-hop exploratory as a paired tunnel
  for client builds, it's now safe to start client tunnels
  before the expl. tunnels are ready. This will save up to 90 seconds.
2015-01-07 17:54:21 +00:00
zzz
b3238079c3 reorder 2015-01-06 14:39:14 +00:00
zzz
ee1edb3383 renaming 2015-01-06 14:10:25 +00:00
zzz
7767430af2 EepGet: Fix PcapWriter 2015-01-05 17:05:36 +00:00
zzz
2e5185aa99 EepGet: Change command line default to 0 retries 2015-01-05 15:22:32 +00:00
zzz
6e847a4cc4 Streaming: Add API for sending/receiving payload in ping/pong 2015-01-05 15:09:12 +00:00
zzz
045f6dccf8 Latency reduction all over:
- SSU: Reduce ack delay
- Streaming: Reduce min RTO and flusher delay
- Tunnels: Reduce GW batching time
2015-01-05 13:19:34 +00:00
zzz
d7895a456a minor optimization 2015-01-05 13:17:59 +00:00
zzz
7753d05b61 UrlLauncher:
- Configure browser with routerconsole.browser (ticket #1159)
- Convert to ClientApp interface
2015-01-05 12:42:39 +00:00
zzz
043b4776c3 move port under interface in form 2015-01-05 12:40:46 +00:00
zzz
5db764de5f Blocklist:
- Rewrite to read and merge multiple files
- Include in update, use version in base dir too
- Increase limits
- Bug fixes
2015-01-05 12:38:38 +00:00
zzz
3ae846a713 m4b mime type 2015-01-03 14:15:48 +00:00
zzz
927e29b8ef I2PTunnel: Persist leaseset keys
I2CP: Use configured leaseset keys if available
2015-01-03 13:32:24 +00:00
d271411552 Added Dock fix for Mac OSX 10.10 2015-01-03 01:51:32 +00:00
31d98ac4a5 new reseed host 2014-12-30 02:18:30 +00:00
78f4cc8e30 Add two certs to deletelist (missed in last commit) 2014-12-22 16:27:58 +00:00
cce30a8f42 reseed changes
- cowpuncher is moving to rows.io
- (temporarily) disabling 193.150.* due to downtime
- removing unnecessary certs
2014-12-21 20:41:34 +00:00
zzz
a9e928fb46 Eepsite help: Removed statements requiring dest to end in AAAA.
Translations updated also, but may need some further fixup.
2014-12-19 14:14:04 +00:00
zzz
60017f7c55 Crypto: Stubs for encryption key types 2014-12-17 14:41:24 +00:00
zzz
eb46f74e24 I2CP: Don't log full session config on error 2014-12-17 14:30:11 +00:00
5e890bd781 checkremotecerts.sh: torify was recently deprecated and now is just an alias pointing to
torsocks, so let's use torsocks directly
2014-12-15 15:18:19 +00:00
zzz
20facf78d0 bump -3 2014-12-15 14:51:34 +00:00
zzz
96db43cc8e unchoke new peer faster 2014-12-15 14:43:37 +00:00
zzz
ab4f209c10 remove xml stats link 2014-12-15 14:40:38 +00:00
zzz
fa51a0aef4 enhance logging for inproxy rejections 2014-12-15 14:40:00 +00:00
zzz
aa6a5e053c raise max concurrent tunnel builds 2014-12-15 14:38:33 +00:00
zzz
03df6c2ba0 less casting 2014-12-15 14:38:07 +00:00
501f645e60 disabling reseed host i2p-netdb.innovatio.no: unresponsive hoster + config issues.
Could be re-enabled when/if problems are fixed.
2014-12-14 23:32:11 +00:00
zzz
23534b31c6 SU3File: Infer SigType from private key when signing,
Change default to RSA 4096
SigUtil: Add conversion methods for Java keys with unknown types
2014-12-14 17:52:23 +00:00
zzz
d35363cdbc SU3File: Fix getContentOffset(); fail on excess data after sig 2014-12-14 15:52:44 +00:00
zzz
ba34c90b7f EdDSA cleanup, another null resource check 2014-12-13 20:56:49 +00:00
94a19171ed reseed server and comment updates 2014-12-13 18:54:28 +00:00
8099591589 correct certificate line endings 2014-12-13 18:38:41 +00:00
df6bbc59b3 update of reseed ssl certificates:
The webpack* and cloudflare* certificates are for ssl.webpack.de and
cowpuncher.drollette.com, respectively.  I'm removing the smartcom.org
certificate because it's unused.
2014-12-13 18:29:12 +00:00
zzz
05a616aa0d SU3File: Implement 'extract -k' 2014-12-11 20:58:04 +00:00
zzz
c84105e783 add cacert cert to deletelist 2014-12-10 17:57:16 +00:00
zzz
262721cc90 SSU: reduce log level of uncaught errors processing I2NP message 2014-12-10 17:56:37 +00:00
c24168d5cd remove unused and weak md5 certficate 2014-12-10 14:39:44 +00:00
zzz
4e529a68d3 Console: Prevent two-word translations from splitting across lines in summary bar 2014-12-09 15:16:41 +00:00
4f3244e93b add new, stronger certificate for netdb.i2p2.no
The old certificate will not be replaced on the server yet.  The old cert is
SHA/1024-bit. New cert is SHA256/2048-bit key.
2014-12-08 23:50:06 +00:00
zzz
b2e17916e4 HTTP Proxy: Fix parsing of ECDSA address helper,
ignore '=' when comparing, reindent test
2014-12-08 14:12:00 +00:00
zzz
57ac344e7f show infohash in upper case 2014-12-08 14:08:45 +00:00
zzz
98e275d908 javadoc typo 2014-12-08 14:05:35 +00:00
zzz
8420b6c715 NetDB: Increase lookup throttle time 2014-12-08 14:05:08 +00:00
3dfcb2d5cc (temporarily?) disable jp.reseed.i2p2.no (ticket #1422), add a note that netdb.i2p2.no is currently v3 only 2014-12-07 15:42:57 +00:00
zzz
540720a912 unit test fixes 2014-12-05 16:18:25 +00:00
zzz
f86200e3ae history for prop, -1 2014-12-05 15:37:01 +00:00
zzz
9e43618028 Plugins: More thread group debugging for isRunning check;
Don't count Jetty RolloverFileOutputStream in the thread group,
to fix restart of a plugin
2014-12-05 15:35:38 +00:00
zzz
aacdba1bc7 KeyGenerator: main() test improvements
Allow specification of sig types on command line
2014-12-05 15:32:34 +00:00
zzz
c28d060d52 Update: Use last-modified instead of last-checked for the next
if-modified-since fetch, to fix failing to fetch the latest news
2014-12-05 15:30:53 +00:00
zzz
bf3fdbb1ab Increase default class O conn. limits to 350 NTCP, 1050 SSU 2014-12-05 15:27:24 +00:00
zzz
0a7a637d46 javadocs 2014-12-05 15:21:45 +00:00
zzz
e842165265 more argument checking, javadocs 2014-12-05 15:21:26 +00:00
zzz
2db82da910 cleanup 2014-12-05 15:19:26 +00:00
zzz
9953bc3024 javadoc 2014-12-05 15:18:24 +00:00
zzz
2ba4992d88 propagate from branch 'i2p.i2p.zzz.test2' (head 0feb2e6806927f68c7333aaa0892de185bb2629c)
to branch 'i2p.i2p' (head 0482fa843cb1e9d7ec281440056eef3a0ab07bdb)
2014-12-05 15:14:40 +00:00
zzz
5e67008d26 I2PTunnel: Reduce i2ptunnel threads, more thread pooling.
Big savings is on client side (two less threads per connection)
 - Move client pool from static inI2PTunnelClientBase to TCG.
 - Use client pool for some server threads
 - Run some things inline that were formerly threads
 - Client-side I2PTunnelRunner thread used to do nothing but start 2 more
   threads; now it runs one inline (like we do for server-side HTTP)
 - Javadocs and cleanups
Was originally intended to reduce load for high-traffic servers
but most of the savings for now is on the client side.
Ref: http://zzz.i2p/topics/1741
Todo: Figure out how to run the HTTP client-side gunzipper inline too
Todo: More server-side improvements

---

Client side:

before:
4-5 threads, 1-2 pooled

  I2PTunnel Client Runner (BlockingRunner from client pool)
      starts I2PTunnelRunner or I2PTunnelHTTPClientRunner and exits
          starts StreamForwarder toI2P and waits
          starts StreamForwarder fromI2P and waits
              starts HTTPResponseOutputStream (HTTP gunzip only) (from client pool)
now:
2-3 threads, 1-2 pooled

  I2PTunnel Client Runner (BlockingRunner from client pool)
      runs I2PTunnelRunner or I2PTunnelHTTPClientRunner inline
          starts StreamForwarder toI2P and waits
          runs StreamForwarder fromI2P inline
              starts HTTPResponseOutputStream (HTTP gunzip only) (from client pool)

---

Server side:

before:
1-4 threads, 0-1 pooled

  Server Handler Pool (Handler from server pool) execpt for standard server, blockingHandle() inline in acceptor
      starts I2PTunnelRunner or CompressedRequestor and exits
          starts StreamForwarder toI2P and waits   (inline for HTTP)
          starts StreamForwarder fromI2P and waits  (except not for HTTP GET)

now:
1-4 threads, 0-2 pooled

  Server Handler Pool (Handler from server pool) execpt for standard server, blockingHandle() inline in acceptor
      starts I2PTunnelRunner or CompressedRequestor and exits (using client pool)
          starts StreamForwarder toI2P and waits   (inline for HTTP)
          starts StreamForwarder fromI2P and waits  (except not for HTTP GET)
2014-12-05 15:12:51 +00:00
zzz
e7b50c5940 reduce auto-stop threshold again 2014-12-02 15:23:50 +00:00
zzz
78d7277298 show b32 for local leasesets too 2014-12-02 15:11:12 +00:00
zzz
fb641187b8 use new getVersion() 2014-12-02 13:42:58 +00:00
zzz
4b2715c36f RouterInfo: Add convenience method getVersion() 2014-12-02 13:30:31 +00:00
zzz
f1e9f5d4fd DatabaseStoreMessage: Mask the unused bits in the type field,
in case we ever want to use them for options
2014-12-02 13:28:48 +00:00
zzz
2d43d349ab add more invalid ports 2014-12-02 13:22:26 +00:00
zzz
a3c6cc1daa libjbigi updates:
Added:
     nativeJbigiVersion()
     nativeGMPMajorVersion()
     nativeGMPMinorVersion()
     nativeGMPPatchVersion()
     nativeModInverse()
     nativeModPowCT()
   Support negative vaules in conversion functions
   Support negative base value in modPow()
   Throw ArithmeticException for bad arguments rather than crashing
   Switch to GMP 6.0.0
   New build targets
NativeBigInteger changes:
   Test improvements
   Version reporting
Crypto changes:
   Use constant time modPow() for signing and decryption
   Use native modInverse()
2014-11-30 21:19:28 +00:00
zzz
7ab6708a3c 0.9.17 2014-11-30 16:41:57 +00:00
7010d9b524 really bump 2014-11-28 20:43:42 +00:00
947a3a2181 bump build (-11-rc) 2014-11-28 20:42:33 +00:00
0ff87ef8cb merge of '3e6cfe9a01136316f39f1bd294a515e6bc91ff8e'
and 'b4b595d294ace07f7fde583957d8e00e96af347c'
2014-11-28 20:39:57 +00:00
ec20150ffd geoip updates (2014-11-05) 2014-11-28 19:29:16 +00:00
30876a9cd3 PO files pulled from tx 2014-11-28 19:25:26 +00:00
zzz
1773fc0e0d Add more clues to file locations in default config files 2014-11-28 14:23:34 +00:00
zzz
6d6f7fb89b Data: Disallow duplicate keys in a Mapping 2014-11-28 13:45:33 +00:00
zzz
449ce3176e propagate from branch 'i2p.i2p' (head b4b595d294ace07f7fde583957d8e00e96af347c)
to branch 'i2p.i2p.zzz.test2' (head 90c482d231ea639bff8d37d390dac081e361f48f)
2014-11-28 13:13:00 +00:00
zzz
be8832e87f link to Russian version of ECDSA help page 2014-11-27 18:17:07 +00:00
zzz
5999690665 link ECDSA warning to wiki help page 2014-11-27 12:55:16 +00:00
zzz
285fa6cbc9 BuildRequestor: Reduce delay when client build can't find
a paired tunnel (possible fix for ticket #1412)
2014-11-26 17:32:56 +00:00
zzz
9700f30c35 Tunnels: Disallow changing allowZeroHop setting for exploratory 2014-11-26 16:18:37 +00:00
zzz
a38bd0b5cf Data: Fix NPE on unknown sig type in destination
Fix hashcode and equals for typed data
2014-11-26 16:06:09 +00:00
zzz
5383f9f097 Profiles: Change slice selection argument from an int to an enum for clarity 2014-11-25 14:25:42 +00:00
zzz
a16d17c422 SusiMail: Add save-as button
Fix encoding for filename in Content-Disposition header
New icon from Silk, same license as the others
2014-11-24 18:36:16 +00:00
zzz
5f2b620819 PrivateKeyFile: Don't rewrite file in main() if no options 2014-11-24 14:26:53 +00:00
zzz
fd47cb88de i2ptunnel: Fix automatic setting of random key 2014-11-24 14:15:44 +00:00
zzz
77e7982e74 Drop i2p.feared.eu ssl cert for reseed 2014-11-23 14:24:22 +00:00
zzz
04cd1cedda Reseed update from backup@mail.i2p:
please commit some updates for my reseed servers: Add new ssl-certs:
	ieb9oopo.mooo.com2.crt	-->  certificates/ssl/	
	link.mx24.eu.crt	-->  certificates/ssl/

The first one is a new ssl-cert as exchange for the current one.
On http-server side the exchange will take place sometimes next year,
until then the current existing ieb9oopo.mooo.com.crt is still valid.
The second is a new reseed server from me.

Reseeder.java: Please add to DEFAULT_SSL_SEED_URL:	
	https://link.mx24.eu/
with this comment:	
	// Only HTTPS and SU3 (v3) support

Also the list can be cleaned up from these other dead servers:
2014-11-23 14:18:29 +00:00
zzz
3ef89f49e7 SAM: Fix v3 bug accepting incoming connections
It was starting both the v3 and v1 acceptors.
2014-11-22 17:19:40 +00:00
zzz
2a681608b5 PeerSelector: If non-DSA, don't use incompatible peers
for exploratory tunnels or closest-hop in client tunnels
2014-11-22 14:05:06 +00:00
zzz
a52c06a6c6 point to Jetty 8 Javadocs 2014-11-22 13:17:39 +00:00
49b8a65ad9 Integer.compare() is 1.7 syntax 2014-11-21 22:52:19 +00:00
9781cb72ac Bump version 2014-11-21 13:11:47 +00:00
f7e83fb839 Require at least one update in a release 2014-11-21 13:09:58 +00:00
ce2a2cf684 Only need one torrent magnet; tighten update type spec 2014-11-21 13:02:57 +00:00
c88fa70f82 Cleanups 2014-11-21 12:52:24 +00:00
f76744a0c0 Improved SU3 news file specification 2014-11-21 12:46:33 +00:00
zzz
31cc0764a9 Logger: Configurable flush interval 2014-11-18 14:49:23 +00:00
zzz
15137d9b62 NetDB: Exclude A1/A2 "countries" from auto-floodfill 2014-11-17 14:19:00 +00:00
zzz
8f8adfa39e propagate from branch 'i2p.i2p' (head bde4ef3680071b416b3528bad4c16245964f432a)
to branch 'i2p.i2p.zzz.test2' (head 183d2a30edd10165451d0cbbf75636f3b1dfda16)
2014-11-15 17:48:39 +00:00
zzz
5044f3e58f I2NP:
Move some data structures away from ByteArray; offsets were always zero
  - New BuildRequestRecord constructors
  - BuildRequestRecord field becomes final byte[222]
  - IV becomes byte[16]
  - Build record becomes EncryptedBuildRecord
Remove extra copy in BuildRequestRecord.encryptRecord()
Remove unused BuildRequestRecord.readOurIdentityMatches()
2014-11-15 17:48:11 +00:00
zzz
279e102d7a I2NP:
- Set lookup type flags even if no reply tunnel specified
- Reduce object churn when writing some messages
2014-11-15 17:45:14 +00:00
7f72830ec8 JavaDoc fixes 2014-11-14 22:00:51 +00:00
2caaad95ec Comment out not yet implemented tests 2014-11-14 21:52:47 +00:00
09b995aca6 BigIntegerFieldElement.isNonZero() tests 2014-11-14 21:51:53 +00:00
a0bf8433e4 Tests: copy the EdDSA test.data file to where the classloader can find it 2014-11-14 21:16:28 +00:00
zzz
9104bd7304 Tests: Copy the new EdDSA test vectors
to where the classloader can find them.
Throw a better error message if not found.
2014-11-14 16:44:04 +00:00
zzz
2f2aa7f5a8 I2PTunnel:
- Fix bug that left server acceptor thread running after close
- Add destroy() methods to release all resources when closing a tunnel for good,
  particularly the streaming timer threads
- Use COWAL to prevent concurrency problems
- Javadocs
Streaming:
- Don't return null from accept() any more; actually throw
  ConnectException as the javadocs have always specified
- Throw ConnectException from accept() if interrupted; previously caught and ignored
- Throw exceptions from ConnectionHandler.accept(), not higher up
- Close ServerSocket when ConnectionManager is shut down
- Synchronize setActive(), clear queue when starting to accept,
  better handling of calls that don't change state
- Javadocs
ConfigClientsHelper: Call isPluginRunning() less often
PluginStarter: Simplify detection of active threads

Above changes mostly in support of zzzot plugin implementing ClientApp
and being able to shut down completely so there are no threads
in its thread group, so /configclients will all show status as stopped.
Previously, the I2PTunnelServer acceptor thread and
one or more streaming timer threads would remain.
2014-11-13 20:12:55 +00:00
0773a30578 add hamcrest-all to classpaths and minor formatting fixes 2014-11-12 17:42:50 +00:00
962f5efe6b merge of '1e0d390eeacce432f968251f1bbbe03ef031a116'
and 'f61d617d9bfd5759366102b0b5ff45effde08e84'
2014-11-12 14:52:52 +00:00
6dc3cd9650 build.xml: signing
- move signing to ant macros so they can be used by multiple build targets
- add support for signed devbuilds
- add support for generating i2pseeds.su3 (for testing)
2014-11-12 14:51:27 +00:00
zzz
397ae536f9 Data: Clear more caches when under memory pressure and at shutdown 2014-11-12 14:44:49 +00:00
zzz
f19ec4bd44 Plugins: Fix bug in stopping a ClientApp plugin with $parameters in the args 2014-11-12 14:38:13 +00:00
fd7e549915 Added EdDSA tests
Source:
https://github.com/str4d/ed25519-java
Git commit:
58e4efadf972f4dc4f67c05152f82b49fb22bac6
2014-11-12 10:21:46 +00:00
7a7ae77c83 Updated EdDSA code
Source:
https://github.com/str4d/ed25519-java
Git commit:
58e4efadf972f4dc4f67c05152f82b49fb22bac6
2014-11-12 10:20:28 +00:00
zzz
1a9fb381ed new su3 reseed cert (bugme/mooo.com) 2014-11-11 21:45:32 +00:00
zzz
ae7bfceafb snark tweaks 2014-11-11 14:26:23 +00:00
zzz
a961843aa6 bump -4 2014-11-10 16:27:53 +00:00
zzz
43c6a4ddac fix some issues with tracker config form 2014-11-09 14:33:26 +00:00
zzz
ae1d5648d5 Router, i2ptunnel: Add option for per-pool persistent random key,
so peer ordering does not change across restarts
2014-11-09 13:51:19 +00:00
zzz
2d3e8e0c4e disable spellcheck in custom options field 2014-11-09 13:46:47 +00:00
zzz
4691fc69d5 SSU: Fix bug preventing inbound connection from non-DSA router (ticket #1408)
Transports: If we are non-DSA, check for compatibility before connecting out
2014-11-08 18:01:13 +00:00
zzz
cb87f9f307 ProfileOrganizer: More efficient slice calculation,
don't pollute Hash cache
2014-11-08 17:57:17 +00:00
zzz
5f1e5bc271 Data: make getKeysAndCert() public 2014-11-08 17:53:55 +00:00
zzz
1c6d5ad2db EdDSA: Bump minimum router version to 0.9.17
due to previous bugs
2014-11-08 17:52:35 +00:00
zzz
555189f123 i2psnark: Add support for specifying data dir in add form (ticket #1028) 2014-11-08 17:50:27 +00:00
zzz
049044b827 javadoc fix 2014-11-08 17:47:51 +00:00
zzz
cfd9e2c3ab Fix compile error; history for prop; -2 2014-11-06 18:09:14 +00:00
zzz
a0b457b9a1 propagate from branch 'i2p.i2p.zzz.test2' (head 9dca19f228a66b5ac646c3d97d4f018c733081de)
to branch 'i2p.i2p' (head e7f2b0990f1ff9ab0e0d8633ac2faf35a993b917)
2014-11-06 17:53:02 +00:00
zzz
23f24c7d39 javadoc 2014-11-06 17:50:47 +00:00
zzz
6112cc5a38 i2psnark:
- Add new opentrackers, remove welterde
  - Support multiple default opentrackers
  - Don't link to opentrackers at the top
2014-11-06 17:45:06 +00:00
zzz
7deb8c1bcb Console: Don't disable updates when restarting from /configupdate
Recognize router.newsRefreshFrequency=0 as "never"
2014-11-06 16:41:29 +00:00
zzz
76e4b49d9d Transports: Consolidate port checking code
Disallow SSDP port
2014-11-06 15:20:24 +00:00
5ae267a8a2 EdDSA bugfixes 2014-11-06 03:02:25 +00:00
zzz
f524351041 Console: Add ECDSA warning to sidebar 2014-11-05 17:20:45 +00:00
zzz
893d1bb45f Job Queue: Only drop lookup jobs if lagged 2014-11-05 16:59:19 +00:00
zzz
945988dfb7 i2psnark: Fix NPE when deleting torrent if the data directory
was deleted out from under us (ticket #1407)
2014-11-05 16:39:54 +00:00
zzz
62698664a2 SU3 News: Blacklist HTML event-handler attributes in content 2014-11-05 16:04:21 +00:00
zzz
0d2892c75d SSU: Fix corruption of ack-only packets containing bitfields
Full acks were included in the bitfield portion, which
ran over and appeared to be fragments.
Also clean up setting bytes with initial data, for clarity.
2014-11-04 14:51:31 +00:00
zzz
ecc72e6825 SU3 News: Add echelon cert, change default URL 2014-11-04 13:56:46 +00:00
zzz
531d520ceb Blockfile:
- Add block size to superblock
 - Add span size to skiplist block
 - Bump version to 1.2
2014-11-02 19:37:23 +00:00
zzz
4e72e150ad reduce log level of expired certs on android 2014-11-02 17:36:28 +00:00
zzz
b28628b8e1 Console: Log warning if no pack200 2014-11-02 16:42:35 +00:00
zzz
702830ad0e Reseed: SSL only by default 2014-11-02 16:16:01 +00:00
zzz
6ca0c54ba7 i2ptunnel:
ECDSA default for all new server tunnels
ECDSA default for streamr client tunnels
Fix display of server destination on edit page when not running (privkey file path wasn't absolute)
Fix display of persistent client key b32 on edit page when not running
Fix display of server sig type on edit page when we have a privkey file
Add KeysAndCert.getSigType()
Javadocs
2014-11-02 15:23:13 +00:00
zzz
634bf5f7e3 0.9.16
Fix history.txt UTF-8 breakage
Javadoc fixes after review
2014-11-01 18:50:26 +00:00
zzz
2284c963af drop dummy crypto stubs 2014-11-01 15:52:02 +00:00
zzz
ad2052395f bump -19-rc 2014-10-31 12:47:35 +00:00
e9a1dbf8f1 merge of '3baf6884e9804b23ac99e38fb031fc6c04b6134a'
and '995a4e27dc6bd096a6eb83acfc9e2e09c9cb61aa'
2014-10-31 02:03:44 +00:00
703b21e89b Eclipse classpath fix 2014-10-31 01:58:27 +00:00
36ea2cca6b Removed 20 unnecessary variable definitions from multiply()
Android build tools 21.0.* caused dalvikvm runtime errors before this change.
2014-10-31 01:58:05 +00:00
zzz
8b2cf770a5 bump -18-rc 2014-10-30 20:51:28 +00:00
zzz
7d6d801943 merge of '76a3db43068c5b8578dfad10bf0dad884846f608'
and 'feed7db1184a2b8a06ddf35d45dc0e993895e2be'
2014-10-30 20:50:03 +00:00
d705b43f3a update en po files before pushing to tx 2014-10-30 20:11:11 +00:00
a18ed194cb update debian changelog 2014-10-30 20:09:13 +00:00
a3e4293fd8 geoip updates 2014-10-30 20:03:13 +00:00
df144d8434 Arabic, Chinese, Czech, Dutch, French, German, Russian, Spanish updates from Transifex 2014-10-30 20:01:45 +00:00
zzz
bab1e05235 Router: Fix rare NPE building garlic message (ticket #1403) 2014-10-30 15:14:52 +00:00
zzz
a1fdd41b0e SU3 News: Tweaks after testing
Console /debug: Move DHT section to bottom
2014-10-29 15:34:52 +00:00
zzz
60d9c1651a SU3File: Show content and file types in showversion 2014-10-29 14:31:14 +00:00
zzz
ec1380dfa1 i2psnark: Convert '+' to ' ' in magnet dn param 2014-10-29 14:11:41 +00:00
zzz
798275608e jbigi: Save and report extracted library name 2014-10-28 14:50:40 +00:00
zzz
0f2affd414 SSU: Don't publish direct info if introducers are required 2014-10-28 14:00:37 +00:00
zzz
7695b51d89 Make recognition of a hidden router consistent,
whether specified in the caps or the cert
2014-10-28 13:50:09 +00:00
zzz
fb99122d83 log Java 6 warning 2014-10-28 13:18:48 +00:00
zzz
6d53838e20 javadoc clarification 2014-10-28 13:18:27 +00:00
zzz
ec3fd9a7d7 null check in zip entry name 2014-10-28 13:17:20 +00:00
zzz
304f2ebb7b dont OOM when thread dies 2014-10-28 13:16:20 +00:00
zzz
4976e84488 use recent method 2014-10-28 13:13:40 +00:00
zzz
2ebacb1b9b fix static access 2014-10-28 13:11:39 +00:00
zzz
d085f9ea66 SSU: Fix ACK Sender thread dying on corrupt packet 2014-10-26 22:09:38 +00:00
zzz
e275117569 i2ptunnel: Fix description entered via wizard 2014-10-24 14:25:33 +00:00
zzz
eae277fb77 dont add whitespace to XHTML output 2014-10-24 14:11:40 +00:00
zzz
d7130c15cc SSL: Don't prohibit SSLv3 ciphers if that's all we have 2014-10-23 15:32:07 +00:00
zzz
937a17c5dd SessionKeyManager:
- Raise inbound limit
- Delete oldest tagsets when limit is hit
- Don't delete recent tagsets when limit is hit
- Log tweaks
2014-10-23 15:31:00 +00:00
zzz
b6234e1d5e javadoc fixes 2014-10-23 15:26:03 +00:00
zzz
7955b8ae71 SU3 News: Fix parsing of the XHTMl nodes 2014-10-22 18:20:31 +00:00
zzz
a36ef62358 SU3 News:
- Fix SU3File support (tested)
 - Finish implementation (untested)
 - Output metadata as comments in news.xml
 - Support signed HTML
 - Copy router certs to news
2014-10-22 16:07:18 +00:00
zzz
bcbda3cd27 SSU: Don't resend ACKS that are too old (ticket #772)
untested
2014-10-21 18:37:11 +00:00
zzz
239fe518a9 Update: Partial implementation of su3 news with atom feed.
No spec yet, just followed str4d's testnews.atom.xml proposal.
Atom parsing is tested, su3 part is incomplete and untested.
Todo: add spec to http://i2p-projekt.i2p/en/docs/spec/updates,
finish su3 and test.
2014-10-21 18:35:06 +00:00
zzz
44d6e117d5 Console and Eepsite Jetty:
Switch back to QueuedThreadPool (ticket #1395)
In Jetty 5/6, the default QTP was not concurrent, so we switched to
ThreadPoolExecutor with a fixed-size queue, a set maxThreads,
and a RejectedExecutionPolicy of CallerRuns.
Unfortunately, CallerRuns causes lockups in Jetty NIO.
In addition, no flavor of TPE gives us what QTP does:
- TPE direct handoff (which we were using) never queues.
  This doesn't provide any burst management when maxThreads is reached.
  CallerRuns was an attempt to work around that.
- TPE unbounded queue does not adjust the number of threads.
  This doesn't provide automatic resource management.
- TPE bounded queue does not add threads until the queue is full.
  This doesn't provide good responsiveness to even small bursts.
QTP adds threads as soon as the queue is non-empty.
QTP as of Jetty 7 uses concurrent.
QTP unbounded queue is the default in Jetty.
So switch back to QTP with a bounded queue, which does what we want,
which is first expand the thread pool, then start queueing, then reject.

ref:
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html
https://wiki.eclipse.org/Jetty/Howto/High_Load
2014-10-20 14:01:36 +00:00
zzz
8a12b7cb41 snark HTML fix 2014-10-18 15:22:39 +00:00
zzz
4d4308c486 NTCP: Deadlock fix 3rd try (ticket #1394) 2014-10-17 14:15:40 +00:00
zzz
abcdcf2e8c log tweaks (SSU) 2014-10-16 20:38:12 +00:00
zzz
44b753d1e5 NTCP: Deadlock fix 2nd try (ticket #1394) 2014-10-16 20:21:03 +00:00
zzz
83b3f242a9 Console, I2CP, i2ptunnel, SSLEepGet: Set allowed SSL protocols and ciphers 2014-10-15 20:44:23 +00:00
zzz
86c43f4734 propagate from branch 'i2p.i2p' (head b82e829752729679ee6b9ece7ce8c7279c70aedf)
to branch 'i2p.i2p.zzz.test2' (head 8e441b5ba1384e499901127e10ab79b96f0f0cb5)
2014-10-14 16:47:50 +00:00
zzz
be0cb84f97 Util: Use write-sync-close-rename for config file writing 2014-10-14 16:47:41 +00:00
zzz
3bea7f5ad5 drop unused HarvesterJob 2014-10-14 16:32:41 +00:00
zzz
266a20d55e I2NP: Implement DatabaseLookupMessage search type field,
to replace all-zeros hash, and ease implementation for
separate LS and RI databases, as documented in i2np spec.
2014-10-14 13:57:02 +00:00
zzz
d2c6a80d24 i2ptunnel: Set default sig type to ECDSA P256 for client tunnel
types Standard, IRC, and Socks IRC, if non-shared.
2014-10-13 16:46:58 +00:00
zzz
cd51fbc2a6 doc fix 2014-10-13 16:46:43 +00:00
zzz
73256f6030 Move BundleRouterInfos out of router.jar 2014-10-10 19:40:49 +00:00
zzz
e081f94d9f GeoIP:
- Don't rate peers in some countries as high capacity
   - Don't enable auto-floodfill in some countries
   - Don't prefer floodfills in some countries
2014-10-10 15:26:17 +00:00
zzz
e96cc09d75 Banlist: Remove unused banlist tracking in the profile causing deadlock (ticket #1394) 2014-10-10 15:21:10 +00:00
zzz
d87178fec3 UPnP: Comment out unused parsers 2014-10-08 17:47:19 +00:00
zzz
28ad95f892 findbugs all over 2014-10-07 14:59:49 +00:00
zzz
8270a92a44 SSU: Improve handling of socket that gets closed (ticket #1385) 2014-10-07 12:09:10 +00:00
zzz
088290c544 Startup: Delay ReadConfigJob another minute
- code cleanup
2014-10-07 12:04:55 +00:00
zzz
6685acfef4 i2ptunnel: Handle named sig types from i2ptunnel.config in the GUI 2014-10-07 12:03:00 +00:00
zzz
1d1a05ee7b log tweak 2014-10-07 11:57:03 +00:00
zzz
bbeb429a59 Graphs: Catch an error caused by missing fonts 2014-10-07 11:56:18 +00:00
zzz
55af588c2c CPUID: Remove Intel model 2 again, this is spoofed in the VM 2014-10-07 11:49:51 +00:00
zzz
80d0313fe5 Crypto: EdDSA cleanup
- Remove duplicate load3 and load4 methods
 - Change load3 return type to int
 - Comment out dead stores
 - Re-roll the add, subtract, and negate loops;
   there's no speed benefit or timing reason to unroll them
 - Check for field already set
 - Remove shifts by 0
2014-10-05 12:11:21 +00:00
zzz
853d309960 i2ptunnel: Fix js confirm for delete button 2014-10-04 13:54:09 +00:00
zzz
564400597a i2psnark: Disable changing types for predefined trackers 2014-10-04 13:21:14 +00:00
zzz
1c2b6fc00e CPUID: Fix Intel processor identification 2014-10-03 17:45:34 +00:00
zzz
7b6f32e5b2 Console: New add-to-addressbook links on leaseset page 2014-10-03 17:44:24 +00:00
zzz
dd4acc88a1 i2psnark: Fix adding magnet links with % encoding (ticket #1391) 2014-10-03 17:40:19 +00:00
zzz
6e566f6e3d log tweak 2014-10-03 15:12:38 +00:00
zzz
fff7fbe121 Base64: Catch NPE on bad input to main() decode 2014-10-03 15:11:29 +00:00
zzz
a50afeb5d5 SAM: Fix v3 LS publish, broken in -4 (ticket #1390)
- code cleanup in direction handling
2014-09-30 12:17:56 +00:00
zzz
49eeb99d43 Logs: Fix displayed filename when empty (ticket #1386)
- More synchronization
2014-09-30 12:12:22 +00:00
zzz
bfd51097c9 i2psnark: Show subdirectory in table header on details page 2014-09-29 13:07:08 +00:00
zzz
a21e3cd842 CPUID:
- Fix main() model and family calculation
  - Add model string fetch from processor
  - AMD model string tweaks
2014-09-29 13:05:38 +00:00
zzz
0f298cf48e CPUID:
- Fix model and family calculation
  - Fix most AMD family 15 IDs
  - Add AMD Llano, Jaguar, Bulldozer 2
  - Add Intel Ivy Bridge, Haswell, Broadwell, Penryn, Pineview, Cedarview, Bay Trail, Avoton, and others
  - Set best-guess capabilities for most Intel processors
  - Supply best-guess model string in most cases
  - Processors listed above, and some others, may see crypto speedups as a result
  - Code cleanup, reduce number of JNI calls
  - Merge dup cases
  - Tab removal
  - Javadocs
2014-09-27 19:27:58 +00:00
zzz
4b074b8dcf I meant CREATE
SAM:
 - Don't publish LS for DIRECTION=RECEIVE
 - Set default tunnel name
2014-09-26 20:24:53 +00:00
zzz
2c79853ffe i2psnark:
- Increase default to 3 hops (ticket #966)
   - Reduce upload threshold for auto-stop
   - Revert addition of js mime type, it was already in the default
2014-09-26 14:24:21 +00:00
zzz
72f57255f0 Transport: Hooks for pluggable transports (ticket #1170) 2014-09-26 14:16:08 +00:00
zzz
1053bc8bb0 go back to release w/o geoip 2014-09-25 20:14:28 +00:00
zzz
4835e6fcb9 i2psnark:
- Show info hash on details page
 - Null storage check just in case
2014-09-25 20:11:47 +00:00
zzz
7ec02a1620 NetDB: Increase max age of RIs to reduce number refreshed after restart 2014-09-24 13:57:26 +00:00
zzz
10993cc6ef EdDSA: Use our PRNG by default for keygen 2014-09-24 13:54:33 +00:00
zzz
81409369bc measure keygen time in test 2014-09-24 13:46:38 +00:00
zzz
edb8590da8 move log outside synch 2014-09-24 13:45:50 +00:00
zzz
3a7bfd28fc snark: Don't enable sort-by-remaining link when complete 2014-09-24 13:44:55 +00:00
zzz
36fdb4ee2f Fix junit compile fails due to data structure moves 2014-09-23 14:15:27 +00:00
zzz
b06f772647 history for prop, -2 2014-09-23 13:23:04 +00:00
zzz
012cc740d6 propagate from branch 'i2p.i2p.zzz.test2' (head 6ccd9ca652057494bb2857e87636f18aadcd33f3)
to branch 'i2p.i2p' (head 376f751adc13923cdbf4f659c3f23ca957cf47b3)
2014-09-23 13:06:36 +00:00
zzz
1407cff49d fix anonymous proxy flag 2014-09-23 12:18:23 +00:00
zzz
3331e1c152 SSU: Return unused DH to the queue 2014-09-22 18:49:20 +00:00
zzz
591f48856d add sort links for details page
fix tooltips on images
2014-09-22 17:06:02 +00:00
zzz
479b9691fd snark sorters for details page
no links yet
2014-09-22 15:18:20 +00:00
zzz
0e48557b48 * SSU: Fix 100% CPU after socket failure
* UPnP: Catch reported error on FreeBSD
2014-09-22 13:22:35 +00:00
zzz
3fae6f06dd reduce object churn in ElG decrypt 2014-09-21 22:20:37 +00:00
zzz
7639c24bfe restore dh.calculateSessionTime stat 2014-09-21 21:54:31 +00:00
zzz
39fd1c3ab8 center icons in details first column 2014-09-21 16:12:46 +00:00
zzz
abf9dbae6d itoopie for update files 2014-09-21 15:51:53 +00:00
zzz
98062f830a 0.9.15 2014-09-20 19:17:58 +00:00
zzz
c259347917 javadoc fixes after review 2014-09-20 15:08:55 +00:00
zzz
9c4558d891 Catch SSU packet read errors in one place
IMS PartialBitfield tweaks
Log tweaks
2014-09-20 12:26:45 +00:00
zzz
9e7e2948e3 dont return next IV to cache 2014-09-20 12:20:08 +00:00
zzz
43430da25f bump for review -21-rc 2014-09-19 12:41:01 +00:00
zzz
eca7ac21a0 remove bogus check 2014-09-18 15:48:48 +00:00
zzz
bc463f6d0b NetDB: Don't auto-ff if ARM or ElG decrypt is too slow 2014-09-18 14:48:08 +00:00
zzz
ec2708a1fd Jetty 8.1.16.v20140903 2014-09-18 13:56:48 +00:00
zzz
082922de01 NTCP: Return unused DH keypairs to the pool 2014-09-18 13:32:27 +00:00
zzz
ea02a7c70b Transport DH:
- Add method to return an unused keypair to the pool
2014-09-18 00:16:39 +00:00
zzz
ab7e25bd52 NTCP EstablishState:
- Prep for future enhancements by refactoring to a state machine model
  - Reduce object churn; use SimpleByteCache
  - Synchronization
  - Define some constants
  - More finals
  - Log tweaks
2014-09-17 22:29:03 +00:00
d4876dd25e debian: add 0.9.14.1 changelog 2014-09-17 22:16:22 +00:00
89ee0bbab4 translation updates pulled from transifex (cs, es, fi, fr, ja, nb, pl, ro, ru,
uk), and English po file updates
2014-09-17 22:13:04 +00:00
06ae882064 geoip updates:
Updates to geoip.txt and geoipv6.dat.gz based on the Maxmind GeoLite Country
database from 2014-09-04.
2014-09-17 21:29:42 +00:00
zzz
6517fe7515 set default SSL outproxy 2014-09-17 14:19:25 +00:00
zzz
d510aad2ab fix class 2014-09-17 12:52:20 +00:00
zzz
3db297de95 * i2psnark:
- Forward port from trunk: Don't send HTML-only headers for icons (2nd try)
  - Consolidate HTML header code
  - Set no-cache headers
  - Don't set HTML headers for redirects
2014-09-17 02:21:31 +00:00
zzz
8688f26f15 * i2psnark: Don't send HTML-only headers for icons (2nd try) 2014-09-16 22:32:05 +00:00
zzz
85d38e7af2 I2PTunnelGUI: Deleted, moved to i2p.scripts 2014-09-15 19:17:24 +00:00
zzz
0448348154 javadoc fix 2014-09-15 18:30:59 +00:00
zzz
ceab4f1ffc improve efficiency of addressbook parser 2014-09-15 18:28:35 +00:00
zzz
3781b8db09 sanity check 2014-09-15 18:24:37 +00:00
zzz
7a450c526c exception tweak 2014-09-15 18:23:58 +00:00
zzz
c1e8ea0e4a RoutingKeyGenerator:
- Move from core to RouterKeyGenerator in router.jar
  - Leave RoutingKeyGenerator as a simple abstract class
  - DatabaseEntry now uses timestamp instead of mod data
    to determine if mod data has changed. Don't expose
    mod data to DatabaseEntry any more.
  - I2PAppContext.routingKeyGenerator() now returns null;
    you must be in RouterContext to get a generator.
2014-09-15 18:23:01 +00:00
zzz
f248a33eaa SSU:
- Fix IB ACKBitfield.highestReceived()
- More efficient OMS.acked()
- Log tweaks
2014-09-14 18:54:46 +00:00
zzz
67fb4e7007 SSU InboundMessageState.PartialBitfield, PacketBuilder:
- Add ACKBitfield.highestReceived() for efficiency
- Only write as many partial bitfield bytes as required,
  rather than 10 (for 64 bits) every time.
- Don't allow more than 10 bytes when reading in bitfield
- Don't send an extra byte if (fragments % 7) == 0
- Don't send a corrupt ack packet if the partial ack got completed (race)
- Log tweaks
2014-09-14 17:51:29 +00:00
zzz
0a41052f3f SSU InboundMessageState -
Rewrite PartialBitfield for efficiency, less space and object churn
SSU ACKBitfield: Add ackCount()
PeerState.fetchPartialACKs() improvements
2014-09-14 14:32:23 +00:00
zzz
a7763a08dc SSU OutboundMessageState -
Fix SSU Output Queue errors due to races with PacketBuilder:
   - Remove all buffer caching as it can't be made thread-safe.
     Just allocate buffer in constructor and let GC handle it
   - Do fragmenting in constructor and make all fragment fields final
   - Don't track per-fragment retransmissions as it wasn't used
   - Move ack tracking from an array to a long
   - Sync all ack methods
   - Entire class now thread-safe (thx dg)
2014-09-14 13:04:48 +00:00
zzz
fcfb471a8a log OS version too 2014-09-14 11:55:33 +00:00
zzz
b9e383130e i2psnark: Sort themes in config form
Don't return null from getThemes()
2014-09-14 11:48:56 +00:00
zzz
cd2159b873 i2psnark: Switch from checkbox to radio for tracker configuration form 2014-09-14 11:38:22 +00:00
zzz
e492d5e0cf fixup remaining field on details page 2014-09-13 18:21:58 +00:00
zzz
9a0f6490ba i2psnark: Consolidate code for creating img entities 2014-09-13 18:09:48 +00:00
zzz
5183b44d8b port new styles to the other two themes 2014-09-13 15:32:17 +00:00
zzz
156d86835a propagate from branch 'i2p.i2p' (head 60a9a2297abeaf042645e3f0bc8d106f1ff585bf)
to branch 'i2p.i2p.zzz.test2' (head 6ff6f0bcee835d32aad62449a37f5171afde915a)
2014-09-13 14:50:11 +00:00
zzz
eab4397b0f * i2ptunnel:
- Fixes for stopping client tunnels
   - Fix status display for shared clients
   - Log tweaks
2014-09-13 14:49:38 +00:00
zzz
d808b999c6 better error message 2014-09-13 14:36:21 +00:00
zzz
603b345405 * i2ptunnel: Fix updating session options on a running delay-open client tunnel 2014-09-12 21:48:29 +00:00
zzz
682534f468 * i2psnark: More escape fixes 2014-09-12 18:38:11 +00:00
zzz
42eb43f713 SSU: Implement bundling of multiple fragments in a single data message.
This has always been in the spec and implemented in the receive side
since the beginning, so it is compatible with all versions.
- Switch preparePackets() return value from a "sparse array" to a list
- UDPPacketReader cleanups
- UDPPacket javadocs
2014-09-12 15:17:14 +00:00
zzz
0817b58b9d i2psnark:
- Add file type sorter
 - Cycle through name/type sorters
2014-09-11 16:36:14 +00:00
zzz
9ab766375d i2psnark: Fix downloaded comparator 2014-09-11 15:56:57 +00:00
zzz
6c2799fe53 i2psnark:
- Cycle through downloaded/size sorters
 - Cycle through uploaded/ratio sorters
 - Fix ratio comparator
 - Display ratio when sorted by ratio, and on details page (ticket #1298)
2014-09-11 15:47:53 +00:00
zzz
ef81a575cd i2psnark:
- Add ratio sorter
 - Catch IAE on unstable sort
 - Only sort if necessary
 - toImg() cleanup
2014-09-11 14:42:08 +00:00
zzz
cce0d94fbb - Conditionally enable sort links 2014-09-11 14:13:13 +00:00
zzz
22b5203334 i2psnark:
- Tweak column tooltips
 - Tweak status sort
2014-09-11 13:39:10 +00:00
zzz
d4be5abe67 better shutdown message 2014-09-10 23:30:49 +00:00
zzz
9985a02efc i2psnark:
- Consolidate and clean up parameters code
 - Click to sort by column
2014-09-10 23:28:41 +00:00
zzz
41c2c60ab0 i2psnark:
- Comment out command-line code
 - Clean up ID generation
2014-09-10 23:18:09 +00:00
zzz
f285364f46 icons on buttons when enabled 2014-09-09 20:24:57 +00:00
zzz
1c5e9b7fe3 i2psnark:
- More CSS
 - .js mime type
2014-09-09 19:53:08 +00:00
zzz
12cc501e25 fixup after prop 2014-09-09 19:29:02 +00:00
zzz
49118b8bf1 propagate from branch 'i2p.i2p' (head e606c473eb1e461a477e45419f6295b6430a7353)
to branch 'i2p.i2p.zzz.test2' (head 6212892778308db10a86e58f9f275c838f604973)
2014-09-09 19:27:10 +00:00
zzz
09dfea7dea * i2psnark: Escape fixes
- fix ':' in name (again)
   - Change priority key from file name to file number so we don't hav to escape
2014-09-09 19:23:12 +00:00
zzz
00bd469f8e bump -15-rc 2014-09-09 16:13:49 +00:00
zzz
18e7e56a6c i2psnark:
- Set-all priority buttons (ticket #1376)
 - Move icons to resources dir, add js dir
 - Todo: more CSS
2014-09-09 15:27:53 +00:00
zzz
34d14a720b atomics 2014-09-09 14:22:47 +00:00
c4d7f9924f checkcerts.sh: check for extraneous spaces
(trying to catch the problem noted at http://zzz.i2p/topics/1663)
2014-09-06 22:14:06 +00:00
80d6921a66 fix certificate line endings 2014-09-06 22:11:06 +00:00
3c95144b83 close tag 2014-09-06 22:10:15 +00:00
84ad155ab8 remove extraneous trailing whitespace 2014-09-06 18:21:41 +00:00
zzz
330a5ddd0f NetDB:
- Better handling of unsupported encryption in destinations
 - Implement handling of unsupported encryption in router identities
 - Banlist forever all RIs with unsupported encryption
 - New negative cache of all dests with unsupported encryption
 - New methods for destination lookup that will succeed even if
   the LS is expired or encryption is unsupported
 - Use new dest lookup so client will get the right error code
   later, rather than failing with no LS when we really got it
   but just couldn't verify it.
 - Cleanups and javadocs

OCMOSJ: Detect unsupported encryption on dest and return the correct failure code
   through I2CP to streaming to i2ptunnel

Streaming: Re-enable message status override, but treat LS lookup failure
   as a soft failure for now.

HTTP Client: Add error page for unsupported encryption
2014-09-05 22:52:23 +00:00
zzz
3b2f1d35c4 I2CP: Fix LS keypair check 2014-09-05 22:42:06 +00:00
zzz
0f1036b0e1 better message on EOF reading data 2014-09-04 15:21:03 +00:00
zzz
86935f10a8 update link 2014-09-04 15:14:33 +00:00
zzz
1078c42a14 I2CP: Enforce strict authorization when auth is enabled 2014-09-04 13:28:40 +00:00
zzz
09cf973712 BuildHandler: Enforce request record timestamp
BuildRequestor: Randomize timestamp to prevent hop ID at top of hour
2014-09-04 01:08:23 +00:00
zzz
5af749a226 NetDB: Encrypt exploratory lookups too
SearchUpdateReplyFoundJob: finals
2014-09-03 23:26:34 +00:00
zzz
f84b86a752 * BundleRouterInfos:
- Move to its own class
   - Run GeoIP, exclude bad countries
   - Exclude class K
   - Exclude dup IPs
   - GeoIP mods for use in I2PAppContext
2014-09-03 15:19:18 +00:00
zzz
ca7873eda7 CryptoChecker: add main() 2014-09-03 13:22:56 +00:00
f87ebaf214 re-enable i2p.mooo.com (ticket #1351) 2014-09-02 20:54:49 +00:00
zzz
a9802eb6a7 NetDB: Encrypt RI lookups and request encrypted reply on
faster boxes, as a test, to prevent scraping by OBEPs and IBGWs
2014-09-02 14:23:06 +00:00
zzz
5d5a68cb3e * CryptoChecker: Log tweaks, handle gij 2014-09-02 14:11:22 +00:00
zzz
c6b1f5053f dont bundle IPv6-only RIs 2014-09-02 14:09:41 +00:00
zzz
1d2e01c8cd i2ptunnel filter tweaks 2014-09-02 14:08:41 +00:00
zzz
0c5c18a767 * Build: Add support for bundling router infos in the package 2014-08-31 16:19:46 +00:00
zzz
6826ba05e7 stubs for su3 news 2014-08-31 14:12:18 +00:00
zzz
053ce88743 * I2PTunnel: Allow changing of spoof host and target host/port without
restarting server tunnel
2014-08-31 13:17:44 +00:00
4a216c57d4 Updated EdDSA code from upstream
Source: https://github.com/str4d/ed25519-java
Git commit: f9a9213e1446adb46756d3a23b614fe09324ae16
2014-08-31 00:11:03 +00:00
zzz
03cec7fd5a just check availability once 2014-08-30 20:46:16 +00:00
zzz
1238001add bump -13 2014-08-30 19:38:56 +00:00
zzz
fa1c077fdd * Console: Show unavailable crypto on /logs
* Router: Log warnings for unavailable crypto at startup
2014-08-30 19:00:57 +00:00
zzz
8a7c3390f5 /configclients:
- Re-enable plugin installation by default
 - Don't show configuration section or update-all button if no plugins installed
2014-08-30 16:14:41 +00:00
zzz
2302aee819 su3 plugin key 2014-08-30 14:06:20 +00:00
zzz
a72866ee6a RouterInfo: Backport fix for verification of EdDSA RI sig type
from i2p.i2p.zzz.test2
2014-08-30 12:35:14 +00:00
0f7a3dba87 Catch AIOOB in upnp code (triggered in I2P Android on shutdown) 2014-08-30 02:38:27 +00:00
zzz
5decf18eb5 import, @since 2014-08-29 13:40:53 +00:00
zzz
c318760398 javadoc fixes and package.html files 2014-08-29 13:21:14 +00:00
629eff20dd copy flag icons in preppkg-base target 2014-08-28 23:31:07 +00:00
zzz
f6e508ca14 * Streaming: Fix verify of Ed25519 signatures in CLOSE packets
- cleanup writtenSize()
2014-08-28 13:57:52 +00:00
zzz
588ab86abb * Streaming: Fix P521 and RSA sig types 2014-08-27 22:43:44 +00:00
zzz
387629372b i2psnark: Don't retry announce if we get back HTML 2014-08-27 18:21:58 +00:00
zzz
0a01700e3e NetDB: Don't abort initialization on an unsupported RI sig type
(backport from i2p.i2p.zzz.test2)
2014-08-27 17:44:24 +00:00
zzz
59504deb7f i2psnark:
- Recognize Vuze tracker rejections
 - Don't retry rejected announces unless seeding
 - Better UI handling of announces with ports or full destination
2014-08-27 17:06:44 +00:00
zzz
8ee660c238 i2psnark:
- Persist uploaded count (tickets #1034, #1298)
 - Show uploaded count even when stopped
2014-08-27 16:00:02 +00:00
zzz
176c106427 I2CP: Catch bad private key 2014-08-26 20:12:29 +00:00
zzz
ed4fe56e7e I2CP:
- Verify crypto key pair in LS
 - Verfiy same dest as before in LS
Router: Don't try to use an unavailable sig type for the router,
   even if it's the default
RouterInfo: Work around unsupported raw signatures for
   RI Ed25519 sig type
2014-08-26 19:14:51 +00:00
zzz
310cd54aa0 remove unused EC curves 2014-08-26 13:47:21 +00:00
zzz
3217b4ac90 move radio buttons closer together thx Shinobiwan 2014-08-26 13:47:06 +00:00
zzz
7bf1949061 remove unused method 2014-08-26 13:46:28 +00:00
zzz
51f9d6d421 NTCP RI sig types 2014-08-25 20:33:56 +00:00
zzz
ddb32c65fb add getPadding() 2014-08-25 20:32:47 +00:00
zzz
c5c158e983 PrivateKeyFile: Add validateKeyPairs()
Router: Validate router key pairs read in from file
2014-08-25 16:55:16 +00:00
zzz
f83007e038 KeyGenerator: Add support for converting
all signing key types from private to public
2014-08-25 16:20:39 +00:00
zzz
2b9a368b18 propagate from branch 'i2p.i2p' (head 695c0048cc8ce28df0574a5e188c77c07c9b42ce)
to branch 'i2p.i2p.zzz.test2' (head c116da02ea4b4d01dd028bc58ea02b43ae9af8cd)
2014-08-25 12:05:15 +00:00
zzz
6ad6974452 javadoc warnings about EdDSA raw sigs 2014-08-24 23:11:56 +00:00
zzz
308923448b PrivateKeyFile: New constructor with padding
Router:
 - Use eepPriv.dat format for router keys file (thx orignal)
 - Consolidate router keys readin code
 - Update killKeys file list
RouterPrivateKeyFile: New extension to add getRouterIdentity()
2014-08-24 19:15:26 +00:00
zzz
04ad7de2e1 SSU: Handle RI sig types
TransportManager: Banlist unsupported RI sig types
2014-08-24 14:54:17 +00:00
zzz
54563b0b42 catch swapped args 2014-08-23 23:49:34 +00:00
zzz
593779b54f Router: Prep for RI sig types:
- New router.sigType config
 - Generate / regenerate router keys based on config
 - New router.keys2 file format for sig types and padding
 - Fix RouterInfo.readBytes() signature verification with sig types
 - Catch unset padding in KeysAndCert.writeBytes()
 - Catch key errors in ReadRouterJob
 - Show RI sig type on /netdb in console
 - Move some things from Router to startup classes
 - Startup classes package private
 - Buffer readin of key files
 - Remove configurability of router.info and router.keys file locations
2014-08-23 23:48:16 +00:00
zzz
34d3704680 sig type availability check 2014-08-23 15:09:24 +00:00
zzz
613f90bcf7 SSU: Drop peer tests as Bob from unestablished Alices 2014-08-23 14:22:06 +00:00
zzz
6ff500f7cb increase RI publish interval slightly 2014-08-23 13:49:26 +00:00
zzz
c79e33896e SSU intro key checks 2014-08-23 13:48:13 +00:00
zzz
68b15aadca proxy no LS error pages tweak 2014-08-23 13:46:10 +00:00
zzz
819504f08f console escape fixes and cleanups 2014-08-23 13:44:56 +00:00
zzz
e65ec2a589 i2ptunnel escape fixes 2014-08-23 13:20:25 +00:00
zzz
1bc355b8fd i2psnark escape fixes 2014-08-23 13:19:44 +00:00
zzz
d76164679f move null check to constructor 2014-08-23 13:16:57 +00:00
zzz
efebecfc67 * SigTypes:
- Add isSupportedSince(), use in floodfill selection
  - Handle mixed-case 25519 enum
  - Fix 25519 type code
  - Add dup type code check
2014-08-22 14:34:13 +00:00
7b64586c87 temporarily disable reseed host (ticket #1351) 2014-08-22 10:13:37 +00:00
0fe15b8e1d Use DataHelper instead of TestUtils 2014-08-21 23:43:57 +00:00
a1cb00b5a3 Java implementation of Ed25519
Source: https://github.com/str4d/ed25519-java
Git commit: be161ee7c6da29129b5ec6c4739ec3a99114a846
License: Public domain
2014-08-21 23:27:45 +00:00
5041d819a9 propagate from branch 'i2p.i2p' (head b026fe071e77884ef6d104635c793ef16357ec71)
to branch 'i2p.i2p.str4d.eddsa' (head 0d928736c4a34d8a337e1f55e095fe90564ea1fb)
2014-08-21 23:27:34 +00:00
zzz
02ab6eac62 javadoc 2014-08-21 17:38:35 +00:00
zzz
d7feab116f Core: Move router data structures, and the deprecated RouterAddress sorter, from core to router.
This will break Android and the i2pcontrol plugin but shouldn't affect anything else.
2014-08-21 17:36:06 +00:00
zzz
4f9e13d0f6 unit test fix take 2 2014-08-21 15:01:15 +00:00
zzz
d0b0e6a58e fix clock.skew rates 2014-08-21 14:27:16 +00:00
a12f898096 Corrected Ed25519 SigType name 2014-08-21 13:08:21 +00:00
zzz
c921ecca05 fix unit test 2014-08-21 12:46:11 +00:00
zzz
975378b224 * i2ptunnel:
- Add local SSL support for std. and IRC client tunnels (ticket #1107)
    Keystore goes in ~/.i2p/keystore; pubkey cert goes in ~/.i2p/certificates/i2ptunnel
  - Escape messages to index page
  - Show message for uncaught exception
2014-08-21 12:21:29 +00:00
zzz
915e003355 * i2ptunnel: Use I2PAppThread 2014-08-21 11:58:09 +00:00
zzz
51e45d128a * Tunnels: Debug code and other cleanups 2014-08-21 11:55:03 +00:00
zzz
57650ef058 remove dup conversion 2014-08-21 11:51:05 +00:00
zzz
dee6e16e6c * i2psnark:
- Escape control chars in encodePath()
   - Increase max piece size to 8 MB (ticket #1347)
2014-08-21 11:49:58 +00:00
c860674613 propagate from branch 'i2p.i2p' (head e8883e85a7761bbda9df59b3f6b57601cc01bb5a)
to branch 'i2p.i2p.str4d.eddsa' (head a1cc4ae4a17efaca2825dae64b2cc55aa520ca27)
2014-08-20 02:11:15 +00:00
zzz
33b7f08d5c * i2psnark:
- Don't filter create torrent form, and
     fix exception on ':' in file names (ticket #1342)
   - Don't remap file names on torrents we created, and
     save remap setting in torrent config file (tickets #571, 771)
   - Escaping fixes since names may not be remapped
   - Use better encodePath() from Jetty
   - Don't say create torrent succeeded when it didn't
   - Add more sanity checks for torrent creation
2014-08-19 20:34:46 +00:00
zzz
66bbe21a87 * Tunnels: Use consistent tunnel pair for Delivery Status Message
to reduce network connections (ticket #1350)
2014-08-18 18:57:19 +00:00
zzz
51995cc428 * i2psnark:
- Don't send HTML-only headers for icons
   - Catch IllegalStateException for icons
2014-08-18 18:52:47 +00:00
a3e3a305ce removed notification of port 8887 2014-08-17 14:54:50 +00:00
zzz
15facc72b3 * Console: Escaping fix (ticket #1348) 2014-08-15 11:49:56 +00:00
zzz
3839c8d1c0 * I2CP: Lookup synch cleanups 2014-08-15 11:48:02 +00:00
d5edcbc6e1 * Console, EventLog: Added {BECAME,NOT}_FLOODFILL events. They will now be shown on the console's /events page when the router's ff status changes.
* EventLog: Fix a minor typo.
2014-08-13 21:29:17 +00:00
zzz
eb97ef4cb2 * i2psnark: Fix add torrent NPE 2014-08-13 19:17:26 +00:00
zzz
9c38e1e191 * Console: Escaping fix (ticket #1346) 2014-08-13 19:10:25 +00:00
zzz
7c3d3b4128 fix dependency checking for ministreaming po files 2014-08-13 19:07:39 +00:00
zzz
367cea4b1f new translation files 2014-08-10 19:32:11 +00:00
zzz
a63bfeaeec fix SKM test broken by TSKM move 2014-08-10 15:48:18 +00:00
zzz
41672dde64 include geoip.txt in updater for next release 2014-08-10 14:57:28 +00:00
zzz
3b18cb7eca history for prop, -3 2014-08-10 14:22:16 +00:00
zzz
c9ce1751c1 propagate from branch 'i2p.i2p.zzz.snarkconfig' (head ad48ab1a9e769c58ea2e286337927f5c0e1568be)
to branch 'i2p.i2p' (head 0cd9e265bd38c40839e68de8f51233489acad346)
2014-08-10 14:14:00 +00:00
zzz
4ba40b340a history for prop, -2 2014-08-10 14:08:05 +00:00
zzz
e3be1d1a04 propagate from branch 'i2p.i2p.zzz.test2' (head c182b371bc28158dd47262b89e5bd0cdda29e07b)
to branch 'i2p.i2p' (head 4fc776f7b76b028bb890affccfdcfbefbb932c58)
2014-08-10 13:56:15 +00:00
zzz
6fa2a416be Console: Hide client delete button too 2014-08-10 12:18:18 +00:00
fdb54c315b propagate from branch 'i2p.i2p' (head b8f5da367cf5d16bc1d91aa2097830c350c9ef8a)
to branch 'i2p.i2p.str4d.eddsa' (head 6fcc5b5019abb36251e28fe0f7723fd1a046a8e9)
2014-08-10 11:41:45 +00:00
zzz
c7de4e46c1 0.9.14.1 2014-08-09 21:24:18 +00:00
zzz
22a7757461 Console: Show share options below 30% (ticket #1329) 2014-08-09 18:08:00 +00:00
zzz
0bacbbc553 SigType: Add static isAvailable() methods
SU3File:
 - Add -x option to bypass signature verification
 - Add -k option to use specified private key cert for verification
 - Don't verify signature in showversion
2014-08-09 17:55:17 +00:00
zzz
fbdc535287 * i2psnark: Fix more escaped messages 2014-08-08 20:05:42 +00:00
zzz
03d8314842 dir for plugin certs 2014-08-08 16:41:27 +00:00
zzz
fe4d98f0df javadoc 2014-08-08 16:40:56 +00:00
zzz
b1d60122a3 better msg to client on unsupported sigtype 2014-08-08 16:40:48 +00:00
64ec9f6a00 GeoIP db updates
Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
database from 2014-08-06
2014-08-07 23:28:51 +00:00
2d6f71dc12 debian: changelog update 2014-08-07 23:26:17 +00:00
zzz
c9e20c5d23 log tweak 2014-08-07 21:22:18 +00:00
zzz
381f494754 SU3File: Fix NPE on EOF reading input 2014-08-07 20:17:51 +00:00
zzz
506419964b Plugins: SU3 support in form, type checking,
don't require DSA key in SU3
2014-08-07 19:27:53 +00:00
zzz
35bb8c5348 Plugins: partial SU3 support 2014-08-07 19:06:41 +00:00
zzz
79fe799aeb Plugins: Stub out SU3 support 2014-08-07 18:45:04 +00:00
zzz
2878a6487e KeysAndCert: Change hashcode to prevent possible collisions
caused by apps with zeroed pubkey
2014-08-07 17:05:25 +00:00
zzz
d4722e0d2c * i2psnark: Fix excaped message 2014-08-07 13:39:24 +00:00
zzz
9655e79d26 UPnP: Disable external entities in XML parser 2014-08-06 18:13:54 +00:00
zzz
d1a2e24f0e SSU: Speed up introductions by responding to HolePunch (ticket #1333) 2014-08-06 16:35:08 +00:00
zzz
086381d958 SU3File: Add support for XML and NEWS types 2014-08-06 16:32:10 +00:00
zzz
7187f6f714 * Console: Display full path to config file
* i2ptunnel: More escaping
2014-08-06 13:40:25 +00:00
e10e05166f refresh patch 2014-08-06 09:03:18 +00:00
b0f8d84a7f updated debian/po/uk.po 2014-08-06 09:03:02 +00:00
zzz
0e9ceba057 * i2ptunnel: Fix filtering of custom options 2014-08-05 21:26:48 +00:00
zzz
fe3059f0ab * Plugins: Enforce signing key matches that in plugin.config 2014-08-05 21:23:48 +00:00
bd566f52cf Adding SWAT's reseed(su3) certificate. 2014-08-05 09:27:24 +00:00
zzz
b7e0dabe61 fix manual wrapper URL 2014-08-04 15:49:46 +00:00
zzz
2d2348f671 payload bounds check 2014-08-03 14:36:20 +00:00
zzz
b28eb708a4 * Console:
- Fix update buttons
   - Don't filter parameter names starting with "nofilter_"
   - Re-allow configadvanced, news URL, and unsigned update URL if routerconsole.advanced=true
   - Re-allow plugin install if routerconsole.advanced=true or routerconsole.enablePluginInstall=true
   - Only allow whitelisted plugin signers, unless routerconsole.allowUntrustedPlugins=true
   - Re-allow clients.config changes if routerconsole.advanced=true or routerconsole.enableClientChange=true
   - More escaping
 * i2psnark: Fix add torrent form
2014-08-03 13:58:51 +00:00
bf9c4b2346 new su3 cert as pwd for old lost, old one not in use till yet 2014-07-31 19:11:48 +00:00
zzz
d33aa097fe bump 2014-07-31 14:56:04 +00:00
zzz
8673c232b6 Whitelist of known plugin public keys
Compiled by kytv from plugins.i2p
todo: implementation
2014-07-31 14:51:02 +00:00
zzz
d3ea5d2122 drop ExecNamingService, moving to i2p.scripts 2014-07-31 14:44:52 +00:00
zzz
370d2555c7 Notes and logging re: compiling with Java 8 2014-07-31 14:42:51 +00:00
zzz
5332cee3e8 update credit as requested 2014-07-27 11:02:59 +00:00
zzz
1246e1c498 0.9.14 2014-07-26 20:32:26 +00:00
zzz
d6b0b1b93c refresh tweaks
another escape html
2014-07-26 20:14:01 +00:00
zzz
1e0c970c95 remove add client button 2014-07-26 19:31:36 +00:00
zzz
db9f49c7d4 updates after review:
Disable clients.config editing in UI
Strip single quotes too
Fix double-escaping in susimail folder page
2014-07-26 18:58:58 +00:00
zzz
1603353ae8 Susimail escaping from psi plus some more 2014-07-26 16:50:58 +00:00
zzz
6753d23309 Add filtering for getParameterMap()
Don't return null entries in getParameterValues() array
Log in getParameterValues() too
static
2014-07-26 15:09:40 +00:00
zzz
ca5755b0fd javadoc move new classes 2014-07-26 13:51:48 +00:00
zzz
2c8223274d filter pattern tweaks 2014-07-26 13:43:52 +00:00
zzz
f0dd09cf9c filter logging 2014-07-26 12:18:35 +00:00
zzz
4746d9eb80 Fix CSP to allow inline style and refresh
Add filter to all webapps
2014-07-26 11:01:16 +00:00
zzz
99401c5639 fix link 2014-07-26 10:51:42 +00:00
zzz
58578d9020 Console:
XSSFilter patch from str4d:
  XSSFilter and XSSRequestWrapper were from http://ricardozuasti.com/2012/stronger-anti-cross-site-scripting-xss-filter-for-java-web-apps/
  No provided license, but it is clearly intended for public consumption.
  But most of it is boilerplate provided by the Servlet Filter system.
  In fact, now that I have stripped out his JS-specific patterns and replaced it with the whitelist,
  it is effectively identical to what I would have written from scratch.
2014-07-26 09:39:31 +00:00
zzz
af575d6c95 * Console:
- Fix several XSS issues (thx Aaron Portnoy of Exodus Intel)
  - Add Content-Security-Policy and X-XSS-Protection headers
  - Disable changing news feed URL from UI
  - Disable plugin install from UI
  - Disable setting unsigned update URL from UI
  - Disable /configadvanced
* DataHelper: Disallow \r in storeProps() (thx joernchen of Phenoelit)
* ExecNamingService: Disable (thx joernchen of Phenoelit)
* Startup: Add susimail.config to migrated files
2014-07-26 09:32:26 +00:00
e9c8748c0b Updated Eclipse settings 2014-07-26 02:48:49 +00:00
08409d016b translation updates from Transifex 2014-07-23 13:55:58 +00:00
42bfbfc60b geoip database updates 2014-07-23 13:54:36 +00:00
c7c087d964 fix poupdate target 2014-07-23 13:49:09 +00:00
zzz
89764c12e7 bob finals, synch 2014-07-23 13:12:32 +00:00
bd45d5483f Added new reseed host, thanks to Backup.
Notes: Only HTTPS and SU3 (v2) support.
2014-07-22 17:56:50 +00:00
zzz
328d7d0008 SAM:
- Don't spawn a thread for each transmitted datagram
 - Set protocol field for raw and signed datagrams
 - Enforce a 60s timeout for HELLO
 - Use naming service cache to reduce Destination object churn
 - Get Log object from the log manager
 - Log spelling fixes
2014-07-22 14:52:08 +00:00
zzz
cca5bef8c1 propagate from branch 'i2p.i2p' (head 79d0ad4538a0adc4ced6ac26cb725abe3d5ccee3)
to branch 'i2p.i2p.zzz.test2' (head 73032545b42f6f9caffffca08d0a8b97f5cf7e3a)
2014-07-22 14:38:28 +00:00
zzz
ce4874d825 better logging of reseed su3 errors 2014-07-21 20:05:05 +00:00
9b408b67ef Adding Matt's SU3 reseed key. 2014-07-21 18:07:02 +00:00
zzz
c3bf100082 readme_fr.html thx hummingbird 2014-07-21 13:24:13 +00:00
zzz
b282ccd890 increment error count on exception 2014-07-21 13:23:14 +00:00
f38b741813 Adding sindu's reseed key. ( i2p-netdb.innovatio.no ) 2014-07-21 01:47:37 +00:00
3a899d52d1 Don't grab the ClientApp if we don't need to 2014-07-19 23:55:43 +00:00
zzz
a2567b0ee2 * SusiMail: Better error message on decode fail
http://forum.i2p/viewtopic.php?t=11469
2014-07-19 16:31:59 +00:00
zzz
4b0019c732 * SAM: Add support for RAW on the bridge socket in v3 (ticket #1334)
log fixes
2014-07-19 15:43:51 +00:00
zzz
5d21738410 * i2psnark: Don't prefer leeches during end game, to
prevent slowdowns or stalls
2014-07-19 12:48:16 +00:00
zzz
df81006b42 javadoc 2014-07-19 12:40:23 +00:00
zzz
2c7006e9bd Streaming; Disable fail-fast for now. It's failing on leaseset lookup
far too often. Need to fix that first.
2014-07-19 12:39:37 +00:00
b1caa8d5a3 fix URL in initialNews: It's i2p-projekt not i2p-project
(thanks to SeekingFor for the heads-up)
2014-07-15 23:46:08 +00:00
zzz
8b2ffada10 - fix test
- final
- last week's history
2014-07-15 14:30:19 +00:00
0998738e94 Updated history 2014-07-15 12:59:56 +00:00
c04062bbdf Forgot to update @since 2014-07-15 12:58:58 +00:00
0c7a3a3a39 Stubs for I2CP connections over Unix domain sockets 2014-07-15 12:54:22 +00:00
zzz
f364a83f4f mtn.i2p-projekt.i2p 2014-07-14 20:40:36 +00:00
zzz
9dabc75866 * SU3File: Disable the X.509 CN checking of local certs on Android,
as the javax.naming classes are not available.
   Any issues with local certs will be discovered in non-Android testing.
2014-07-13 13:29:55 +00:00
zzz
2c185ea76c * Datagrams:
- Redefine the repliable datagram signature for non-DSA_SHA1 sig types;
    was the sig of the SHA-256 of the payload, now the sig of the payload itself.
    This is an incompatible change but nobody is yet using the new
    sig types for datagram applications.
  - Don't pollute the hash cache with hashes of payloads
  - Check for too-big datagrams
  - Remove assertion check
  - Cleanups
2014-07-11 19:31:44 +00:00
zzz
39e859c368 javadoc 2014-07-11 19:29:44 +00:00
2cfe5e678a propagate from branch 'i2p.i2p' (head e02e6d733a703970e20e732e5156cbabc394e88e)
to branch 'i2p.i2p.str4d.eddsa' (head 3910d01bed7c5a216f52bfd1d9fd96b59f058745)
2014-07-10 09:29:34 +00:00
bb00e91672 propagate from branch 'i2p.i2p' (head e02e6d733a703970e20e732e5156cbabc394e88e)
to branch 'i2p.i2p.str4d.test2' (head aad766aaf6f0a2563069c6f19c38b33ae6c49ad8)
2014-07-10 09:28:25 +00:00
zzz
d48991f71f Crypto: Move TransientSessionKeyManager from core to router.
I2PAppContext will return the dummy SessionKeyManager which
is sufficient for non-tag uses (e.g. Bote).
Client use of end-to-end encryption using SessionTags was
disabled in release 0.6, 2005-07-27.
2014-07-09 13:52:26 +00:00
zzz
dfbe3c4eb1 signing key type check 2014-07-09 13:29:52 +00:00
zzz
b8170a544b add reseed cert 2014-07-09 13:27:57 +00:00
4e7f92ec89 Removing certificate + added it to delete list 2014-07-09 00:46:18 +00:00
292683268b Thanks for the past support in reseeding pkol!
Removing reseed host after request.


From: pkol <pkol@mail.i2p>
To: Meeh <meeh@mail.i2p>
Subject: Reseed server shutdown
X-Mailer: smtp.postman.i2p - Official I2P Mailer

Hi meeh,

I wanted to announce the discontinuation of my reseed server
(reseed.pkol.de) at the end of July/beginning of August.

Thanks for your support during the initial setup.

Cheers
pkol
2014-07-09 00:29:59 +00:00
zzz
dc14abd4d3 BFNS: Trim whitespace from hosts.txt when importing
DataStructureImpl: Throw unique exception on bad base 64
2014-07-05 21:58:48 +00:00
zzz
dd782f08f7 hosts.txt: Remove trailing whitespace causing test failure 2014-07-05 21:44:23 +00:00
zzz
d57dc9a8a2 * Reseed: Check su3 version as date code 2014-07-05 19:15:26 +00:00
zzz
4e463d57ce * Reseed: Send If-Modified-Since in fetches
* EepGet: Fixes for adding etag or lastmod headers before fetch
2014-07-05 18:41:09 +00:00
zzz
e0c0cc8b63 Avoid publishing null IP when using forced address config 2014-07-05 17:02:44 +00:00
zzz
cc50d47376 log warning on very low MTU 2014-07-05 17:01:29 +00:00
zzz
4da7548caa * Reseed:
- Fix URLs without trailing /
   - Cleanups of su3 code
2014-07-05 13:39:51 +00:00
zzz
91a676cb36 public constructors for SKM 2014-07-05 13:37:53 +00:00
zzz
48a32fb3b8 spacing 2014-07-05 13:37:35 +00:00
zzz
845b45a57d javadoc 2014-07-05 13:36:29 +00:00
zzz
7b7a620999 * Console: Add event log viewer (ticket #1117) 2014-07-03 13:13:57 +00:00
zzz
82217d5ebc increase default refresh on graphs page 2014-07-03 13:08:24 +00:00
zzz
b95ec70d7d Console: Check wrapper version before calling WrapperManager.getProperties() 2014-07-03 13:07:41 +00:00
zzz
aa3d3670a4 * PrivateKeyFile: Check for key type mismatch 2014-07-03 13:06:21 +00:00
zzz
8198c83982 * Base64:
- Catch numerous decoding errors that were previously misdecoded (ticket #1318)
  - Improve decoding efficiency, reduce copies
  - encode(String) now uses UTF-8 encoding
  - decode() now accepts short strings without trailing '='
  - whitespace in decode will now cause an error, was previously ignored
  - Cleanups
2014-07-03 13:03:56 +00:00
75ff7987b8 re-enable reseed.pkol.de:443 (ticket #1326) as it seems to be working again 2014-07-02 22:02:27 +00:00
9c87685c02 fix date in history.txt 2014-07-02 13:57:24 +00:00
ce2bb85440 Update Java Service Wrapper to v3.5.25
- Windows: x86 and x64 versions self-compiled with VS2010 in
  Windows 7. The icon has been changed from Tanuki's default to Itoopie.
- Linux ARMv6: Compiled on a RaspberryPi using gcc 4.6.3-14+rpi1,
  Oracle Java 1.7.0+update40 and stripped
- All other binaries are from the "community edition" deltapack offered by
  Tanuki.
2014-07-02 13:54:47 +00:00
43fdff2292 postinstall: remove some redundancy, update comments 2014-07-02 13:51:17 +00:00
zzz
06525adf3d Chinese eepsite help from xkimo 2014-06-30 13:23:06 +00:00
zzz
cff4210dfd merge of 'a88d14e53014d9ab4a5d6e156e3abe2e496284c2'
and 'bcf2bb5bf040195d80e26c4bf643ba0df8386f8a'
2014-06-29 11:44:37 +00:00
zzz
d855c5de50 * NetDB: Add more su3 checks
* SU3File: Improve CLI help
2014-06-29 11:43:57 +00:00
f1a738340f checkcerts.sh: remove unnecessary echos 2014-06-29 11:37:24 +00:00
9827c48527 checkremotecerts.sh: support for ports 2014-06-29 11:27:57 +00:00
367d68e552 Adding three reseed hosts, all with reseed-v2 support
* uk.reseed.i2p2.no
* us.reseed.i2p2.no
* jp.reseed.i2p2.no
2014-06-29 02:15:26 +00:00
1498ed361e Added my reseed key 2014-06-29 02:13:02 +00:00
zzz
91bc16ce05 * NetDB: Fix handling reseed URLs with ports (ticket #1278)
by fixing the dup host check
2014-06-29 00:44:31 +00:00
861a1e26d7 merge of '2542a527f53e4df3896ae26f5b0cf7d0a45128ff'
and '4944f31a9bec7dcacd3a97f6e451fd4eaf5f4096'
2014-06-28 21:58:50 +00:00
a5b2f9a5e9 temporarily disable reseed.pkol.de:443 (ticket #1326) 2014-06-28 21:55:24 +00:00
9550484037 checkremotecerts.sh: fix regex so that commented out hosts are not matched
(//" was needed and  // " would pass through)
2014-06-28 21:51:09 +00:00
b33284bb8e added echelon su3 reseed cert 2014-06-28 20:01:03 +00:00
zzz
ce2694e8fb * NetDB: Add support for reseeding with su3 files (ticket #934) 2014-06-28 19:37:59 +00:00
44073732e2 build.xml: copy built binaries to build/ in the build* targets
This will hopefully make it easier for apps to use bits of I2P as build-deps.
2014-06-28 16:51:38 +00:00
zzz
fef591412e SAM: Cherrypick from patch in ticket #1318:
- Add SIGNATURE_TYPE support to GENERATE and CREATE
   - Don't NPE checking dest+privkeys
   - Simplify HELLO checking
   - Don't require two params in HELLO message
   - Make MIN parameter optional too
   - Version checking fixes
   - Bump version to 3.1, only visible if requested
   - Cleanups, javadocs
2014-06-28 14:14:39 +00:00
f191e50b14 Custom target so I2P-Bote can be built against source 2014-06-28 05:57:34 +00:00
zzz
3379432e5f SAM: Cherrypick from patch in ticket #1318:
- Check for extra bytes in private key string
   - checkPrivateDestination() returns boolean instead of throws
2014-06-27 21:05:54 +00:00
zzz
bb9129b61b SAM: Cherrypick from patch in ticket #1318:
- Fix empty properties check
   - Overrides
   - Statics
2014-06-27 20:53:01 +00:00
zzz
0fc3029aaa SAM:
Version handling (ticket #1318)
   - MAX param now optional
   - 1-digit versions now accepted for MIN and MAX
   - Use VersionComparator for version tests
   - Don't require a minor version of 0
   - Fix empty properties check
   - Overrides
   - Prep for version 3.1
  Throw exception on null option key (ticket #1325)
2014-06-27 20:36:34 +00:00
zzz
d8c8586ccf SAM: No synch needed for finals;
Move fields to top
2014-06-27 16:53:05 +00:00
zzz
38a4728283 SAM: Use SAMHandler.writeString() where possible,
Use DataHelper.getASCII() for byte conversion
2014-06-27 16:46:57 +00:00
zzz
7888705b01 final 2014-06-27 16:31:24 +00:00
zzz
31938f49d6 SAM: Fix checkPrivateDestination() for key certs (ticket #1318) 2014-06-27 16:19:07 +00:00
zzz
c95ed2ea96 SAM: Rename exceptions, make serialVersionUID private,
add new SAMException constructor
2014-06-27 16:15:22 +00:00
zzz
b5ed247a53 SAM: more Log conditionals, javadocs 2014-06-27 15:55:12 +00:00
zzz
22aff49747 SAM: Log conditionals, javadocs 2014-06-27 15:53:16 +00:00
zzz
e4430f05e4 2 more pkg private 2014-06-27 15:32:56 +00:00
zzz
1047691c64 SAM: Make all classes package private except the SAMBridge entry point 2014-06-27 15:26:44 +00:00
zzz
f3180b3f6f SAM client logging cleanup 2014-06-27 15:14:21 +00:00
zzz
616866cc9e Build: Move remaining jars to Java 6, as we will require
API 9 in the next Android release.
2014-06-27 13:57:43 +00:00
2ef203246b Routerconsole build script fixes 2014-06-26 22:37:42 +00:00
58512b8230 build.xml: add new macros for use in the release target
Also move away from using external binaries when an ant task can do the job.
2014-06-26 20:01:07 +00:00
zzz
ca4555c496 lint redundant cast all over 2014-06-26 15:26:58 +00:00
zzz
bc99bc7206 javadoc fixes 2014-06-26 12:51:33 +00:00
367ab28706 Corrected contents of i2p.jar router.jar utility.jar 2014-06-26 03:26:32 +00:00
8de0c0bd88 Correct Jar/War split for addressbook, snark and i2ptunnel 2014-06-26 00:00:38 +00:00
zzz
8f2dc67430 - Fix files not found in listing at top level of torrent
- Fix loading of files outside of snark dir
2014-06-25 13:58:34 +00:00
aa3ac75470 Gradle test config improvements 2014-06-25 02:50:24 +00:00
f6108b51a2 Missing Gradle wrapper 2014-06-25 02:07:00 +00:00
3c8862763b Gradle build scripts for remaining apps 2014-06-25 02:04:06 +00:00
bab02a62e9 Gradle wrapper and instructions 2014-06-24 23:41:55 +00:00
d97c9876e8 desktopgui and systray build scripts, fixed routerconsole 2014-06-24 23:26:51 +00:00
61285435e8 Fixed deprecation 2014-06-24 23:16:47 +00:00
8ea4d893f6 BOB and SAM build scripts 2014-06-24 22:59:23 +00:00
593904cc44 Started build script for routerconsole, broken 2014-06-24 22:48:05 +00:00
zzz
1420c773a6 * Streaming; Drop the preliminary channel implementations,
as added by 'dream' in late 2011. Testing couldn't have happened,
   as they don't work and can't ever work as designed.
   Channels must have underlying file descriptors unless you implement
   your own Selector and that would probably require JNI.
   See http://zzz.i2p/topics/1229 for details.
   Also http://stackoverflow.com/questions/911780/how-do-i-define-my-own-selectablechannel
2014-06-24 12:49:18 +00:00
957eb1f7ab Jetty build.gradle 2014-06-24 11:25:02 +00:00
7ca735bfb2 Gradle build scripts for ministreaming and streaming 2014-06-24 05:37:53 +00:00
0919fa06f6 Don't set version (so .jars don't contain version) 2014-06-24 05:36:49 +00:00
da777c1d7d Initial set of Gradle build scripts for core and router 2014-06-24 05:18:16 +00:00
0305274a13 Updated ignores for Gradle 2014-06-24 05:08:26 +00:00
888ef37808 propagate from branch 'i2p.i2p' (head 5a3ad2a39b0e0f06e70cb8b4d4f7b1d6461afc1a)
to branch 'i2p.i2p.str4d.eddsa' (head b2a13496a248ebfdac0aa3a8528a27ceff091b6b)
2014-06-24 02:14:05 +00:00
zzz
690b40ed77 * Tunnels: Reject participating tunnels when hidden (ticket #1314) 2014-06-23 20:23:32 +00:00
zzz
986de4c1d6 Streaming: Fix connection error message 2014-06-23 20:12:12 +00:00
zzz
01da32364f Streaming: Bundle I2PSocketException messages for translation 2014-06-23 20:10:11 +00:00
zzz
8b1abc08db Add Destination.toBase32() 2014-06-23 20:06:03 +00:00
69e56f8f6b 'Home': (temporarily?) disable salt.i2p.
At this point it's been offline for a month with no sign of returning.
2014-06-23 08:19:30 +00:00
b611d0238a build.xml: minor tweaks to comments, indentation 2014-06-22 00:45:50 +00:00
zzz
c987a9735d fixup after prop 2014-06-21 13:16:38 +00:00
zzz
3b9549c2c1 propagate from branch 'i2p.i2p' (head 1f9b91f318a0f2369243844a3cf7f485528492d7)
to branch 'i2p.i2p.zzz.snarkconfig' (head 37b27b6d354d62487294fd9276504b98a23f1057)
2014-06-21 13:02:22 +00:00
zzz
2dcc9b7a1e i2psnark:
- Display webapp name in html title (ticket #1311)
  - Use tracker from magnet link in display (ticket #1313)
  - Clarify auto-start (ticket #1293)
  - Include tracker in magnet link on details page (ticket #964)
  - Recognize .azw4 extension as ebook
  - Cleanups
2014-06-21 02:30:25 +00:00
zzz
3e54b5d544 New Spanish eepsite help page from 'lati2p' 2014-06-19 01:13:17 +00:00
zzz
8845ce6e1c Findbugs all over:
- Serializable
 - hashCode()
 - Make DataStructureImpl Serializable (removed from DataStructure in 2005)
2014-06-15 16:14:13 +00:00
ff189e796c slackbuild: minor changes to the comments 2014-06-14 09:15:55 +00:00
89c07ac969 slackbuild: remove gettext as a run-time requirement as it's not *strictly* req'd 2014-06-14 09:15:14 +00:00
a8e878f894 SlackBuild: version extraction using awk (thanks 'ihavei2p') (ticket #1310) 2014-06-14 00:08:49 +00:00
1f8f3eb4d9 Fix up the included SlackBuild (ticket #1310) 2014-06-13 22:44:42 +00:00
zzz
8fd2a05bf9 duh 2014-06-13 22:12:38 +00:00
zzz
002d057c92 findbugs all over 2014-06-13 21:37:18 +00:00
ab44488e4c i2prouter: don't use uname -p to determine the arch
- This came from the script from Tanuki but it does return useful information
  (as far as its use in the script) in my testing. uname -m is better for our
  needs. (The problem is only seen on certain CPUs when *all* available wrapper
  binaries are present and the script tries to resolve the correct binary to use..
2014-06-13 20:55:36 +00:00
653ffbc82e build.xml: add jbigi-linux-x86-only target 2014-06-13 20:28:02 +00:00
zzz
95fd0291e3 * Tunnels: Don't get stuck only building tunnels for an empty pool (ticket #1300) 2014-06-13 13:40:52 +00:00
zzz
2a269ff1a9 * Transports: Disallow Carrier Grade NAT (RFC 6598) addresses 2014-06-13 13:39:15 +00:00
zzz
83ccfb4596 * i2psnark: Fix NPE when fetching invalid torrent (ticket #1307) 2014-06-13 13:38:30 +00:00
e968828916 i2prouter: add amdfx* as an x64 CPU / move ldd check 2014-06-12 00:41:14 +00:00
ed85a2b82b Executables get 755, not 744
While this may be the primary cause of the problem mentioned in ticket #1310,
plenty of other fixes/changes will be forthcoming.
2014-06-11 19:27:54 +00:00
e692e21dc9 updates to SlackBuild READMEs 2014-06-11 19:24:58 +00:00
zzz
662fe3ebc2 * i2psnark: Fix decoding of negative numbers (ticket #1307) 2014-06-10 19:54:05 +00:00
zzz
1bf8fd92e4 * NewsFetcher: Only treat correct status codes as success
The last-modified date was getting updated even when
   the server returned e.g. 503, preventing routers from
   getting the latest file on a subsequent fetch.
2014-06-10 19:52:55 +00:00
zzz
4dd8a6421a Tomcat: Bundle a stripped tomcat-coyote.jar with the utils
required to precompile jsps with tags (SusiDNS and Bote).
As of 6.0.39, these utils are required but they are not bundled
in the Tomcat deployer package, the main package is required.
This checkin has only the classes required from the jar.
2014-06-10 00:17:19 +00:00
zzz
884b285bf5 * Jetty 8.1.15.v20140411
* Tomcat 6.0.41
2014-06-09 20:39:49 +00:00
zzz
cb340152df * i2psnark:
- Linkify all announce URLs on details page
   - Sanitize announce URLs
2014-06-09 14:14:01 +00:00
zzz
299a44e7eb i2psnark: display peer version when available 2014-06-07 17:07:44 +00:00
zzz
40e5bcbdbb * NetDB: Reduce negative lookup cache time
* OCMOSJ:
   - Increase timeout if we must lookup leaseset
 * Streaming:
   - Shorter expire time in TCBCache
   - Don't fail a connection once it is up
   - Log tweaks
2014-06-07 13:23:38 +00:00
zzz
d328e78727 * SusiMail: Extend times on background checker (still disabled by default) 2014-06-07 13:17:40 +00:00
zzz
1bcb9b24b6 * Console: Fix NPE in summary bar 2014-06-07 13:16:19 +00:00
zzz
3c1c130bf0 * i2psnark: Fix errors when checking read-only files 2014-06-07 13:15:13 +00:00
zzz
df3442563c * Eepsite: Updated French help page (thx hummingbird) 2014-06-07 13:13:33 +00:00
zzz
331b1fa742 fix test breakage 2014-06-01 18:04:04 +00:00
zzz
b97a53177e * i2psnark:
- Store seed/leech status in DHT tracker (ticket #1280)
   - Increase max received DHT nodes (Vuze sends more than K)
   - Recognize not-registered message from diftracker
   - Fix bug in DHT unannounce()
2014-06-01 17:13:00 +00:00
zzz
633b71ba19 history for prop, -2 2014-05-31 16:58:05 +00:00
zzz
f3dd42143d cleanups 2014-05-29 12:44:27 +00:00
zzz
7c79f5d5e5 propagate from branch 'i2p.i2p.zzz.test2' (head 9aee013cf961ba795a6b5333481634c52d43abc5)
to branch 'i2p.i2p' (head e439e67c49695a624fabdf6f3cd1a8f7a3fd7ea5)
2014-05-29 12:31:49 +00:00
zzz
af5c0bd8a7 Console, i2psnark, susimail: Recognize emacs-w3m as a text-mode browser
As reported at http://zzz.i2p/topics/1630
untested
2014-05-28 21:25:35 +00:00
c07bfe34ab s/www\.i2p2\.i2p/i2p-projekt.i2p/g 2014-05-27 12:55:53 +00:00
49681415e2 Change "view source" link from Trac to Github. 2014-05-27 12:54:46 +00:00
190e8c01b7 update irc servers mentioned in the router console
- remove freshcoffee, add dg and echelon
2014-05-27 12:48:01 +00:00
zzz
6ae86f7d81 * i2psnark: Support ports in announce URLs, 2nd try (ticket #1283) 2014-05-27 12:06:59 +00:00
0aeb3ca75e s/i2plugins/plugins/ since i2plugins hasn't existed for years 2014-05-26 14:28:41 +00:00
1d3e12abb7 router console: fix links to i2p project pages
Some pages, such as Arabic linked to the German version.
Most pages mentioned "i2p-projekt and its mirror i2p-projekt.i2p"
2014-05-26 14:27:55 +00:00
5e8428ef6c router console: s;forum\.i2p2\.de;forum.i2p;g 2014-05-26 14:18:59 +00:00
19e3064529 remove #i2p-help from the router console (merged into #i2p) 2014-05-26 14:10:47 +00:00
f9dbd74ad8 update links to syndie to point to its eepsite 2014-05-26 13:59:22 +00:00
zzz
ff837cf66e i2ptunnel: Define standard tunnel properties and types in one place 2014-05-26 13:36:41 +00:00
zzz
e0914c358e susimail: fix NPE (ticket #1296) 2014-05-25 23:17:19 +00:00
zzz
0e9bb23c7b i2psnark:
- Respond to get_peers with an empty peers list instead of
    a nodes list if the requester was the only peer (ticket #1279)
  - Fix sendError() (still unused)
2014-05-25 21:41:43 +00:00
zzz
7ff5d36f07 i2psnark DHT tweaks (ticket #1281)
- Extend DHT tracker expire time from 45m to 3h
  - Extend DHT announce interval from 10m to 40m
  - Increase announces from 1 peer to 4
2014-05-25 20:38:39 +00:00
zzz
5a3eab0c7c i2psnark:
- Change "private" value in infohash from string to number,
    to match what everybody else does
  - Send seed/leech status in DHT announces (ticket #1280)
2014-05-25 19:41:01 +00:00
zzz
c28f707f55 cleanup 2014-05-25 19:23:04 +00:00
zzz
ef96c88719 HTTP Client:
- Add GUI options for user-agent, referer, accept
  - Fix SSL (initial socket data in I2PTunnelRunner)
  - Disable SSL to i2p addresses by default, add GUI option
  - Fix NPE in error handler
2014-05-25 19:17:36 +00:00
faa2435e33 checkremotecerts: fail if CN doesn't match
Since all reseed hosts now have proper certificates with matching CNs, I'm
making this script enforce a stricter policy, requiring matching CNs.
2014-05-24 13:13:35 +00:00
0537a221d3 temporarily disabling uk.reseed.i2p2.no 2014-05-24 10:08:58 +00:00
99c5a1978f merge of 'be06d7987687efb0d6b027f04a2efbf702218677'
and 'f6541fdc88966f2e0e510c2291b33cf716a3a62a'
2014-05-22 18:09:55 +00:00
zzz
d106f483a1 0.9.13 2014-05-22 14:59:02 +00:00
dee84e70ae Eclipse project for entire routerconsole dir 2014-05-22 01:51:05 +00:00
09995b77b4 Eclipse project for entire installer dir 2014-05-21 02:02:36 +00:00
06894f9f0b Export jstl.jar and standard.jar in Eclipse 2014-05-20 21:34:45 +00:00
zzz
73943b1a08 javadocs 2014-05-20 13:23:31 +00:00
zzz
b573dab05f javadocs 2014-05-20 13:22:07 +00:00
zzz
a766eca283 Crypto: Don't start YK thread in constructor (ticket #973) 2014-05-20 13:14:55 +00:00
zzz
a65edbef92 SSU: Fix peer test deadlock (ticket #1286) 2014-05-20 12:35:48 +00:00
zzz
7479aa235e fixes after review 2014-05-20 12:03:19 +00:00
zzz
4167cd955b Console: Cheap workaround for old wrappers (ticket #1285) 2014-05-18 23:24:03 +00:00
zzz
d1bd893a7b * I2PTunnel:
- Display custom error pages for I2PSocketExceptions (ticket #788)
   - Tag I2PSocketException text for translation (no bundles yet)
   - Move methods from superclasses to I2PTunnelHTTPClientBase
   - Fix connect client error pages, but they aren't displayed anyway
   - Don't start I2PTunnelRunner threads in constructor (ticket #973)
   - Synch close() in I2PTunnelServer
   - Cleanups and javadocs
2014-05-18 21:13:22 +00:00
zzz
2467856011 * Streaming: Cleanup, don't fail hard on no tunnels (ticket #788) 2014-05-18 00:44:51 +00:00
zzz
d32b4e9f24 * I2CP: Per-message status codes back through streaming (ticket #788)
- New I2PSessionException
   - Streaming PacketQueue requests status for SYNs on outbound conns
   - PacketQueue throws I2PSessionException in streams
2014-05-18 00:05:13 +00:00
zzz
1acd5caaa8 * HTTP client: Fix 'connection reset' browser messages
after an error in the first line (ticket #1277)
   - A SocketException is an IOE
   - out can't be null
2014-05-17 23:44:16 +00:00
zzz
f69b757305 * i2psnark: Support ports in announce URLs (ticket #1283) 2014-05-17 22:10:10 +00:00
d2db41bc89 remove cert from delete list 2014-05-16 14:04:45 +00:00
f3b4377ee1 re-add netdb.i2p2.no.crt 2014-05-16 13:58:51 +00:00
551a8091a9 GeoIP db updates; Japanese Susimail translation, -21-rc 2014-05-15 23:22:40 +00:00
f994590ad7 Translation updates
sk, ja, de, fr, it zh, nl, uk, nb
2014-05-15 23:14:38 +00:00
zzz
8371b8f806 * I2CP: Client-side prep for asynch status for sent messages (ticket #788)
- Clean up and reuse MessageState for asynch notification
   - New I2PSession sendMessage() method and listener
   - Move VerifyUsage from SimpleScheduler to SimpleTimer2 for efficiency
   - Fix up javadocs
2014-05-15 20:11:21 +00:00
5d04f8db89 checkremotecerts.sh fix test logic
Script would return 0 even connecting to the remote host failed.
2014-05-15 03:38:29 +00:00
06de347373 -20-rc 2014-05-14 14:18:24 +00:00
2bf2eb482e update outbound UA to match TBB's 2014-05-14 14:14:23 +00:00
zzz
a93666cd36 * I2CP: Prep for per-message reliability settings (ticket #788)
Router side:
     Store message nonce in ClientMessage, so we may send
     a MessageStatusMessage with a failure code to the client
     without sending an ACCEPTED MessageStatusMessage first.
     All MessageStatusMessages sent in response to outbound messages will now have a valid nonce.
2014-05-14 13:49:42 +00:00
zzz
dbb7eb3d88 * I2CP: Prep for per-message reliability settings (ticket #788)
Add bounds checks for flags
2014-05-14 12:15:57 +00:00
zzz
39169f0450 reveal key cert settings in i2ptunnel 2014-05-14 12:13:43 +00:00
zzz
df71308664 Susimail: Don't let an exception on one mail break others 2014-05-13 21:36:06 +00:00
zzz
e393f82eb7 * i2psnark: Escaping fixes on details page 2014-05-13 21:35:12 +00:00
zzz
8480a204ea * BOB, SAM, i2psnark: Fix datagram NPE (ticket #1275)
This could only happen on an extremely overloaded router.
2014-05-13 18:45:54 +00:00
zzz
197be5f60f * SusiMail: AIOOBE fix 3nd try (ticket #1269) 2014-05-13 18:39:56 +00:00
zzz
5621e9b390 * SusiMail: AIOOBE fix 2nd try (ticket #1269) 2014-05-12 20:46:30 +00:00
485d785e0b merge of 'dcf98ef995380862d3e668685caaa0acd403f068'
and 'f9fdb1592f632ef5de78e3dc7dac3f75ce4e3c39'
2014-05-10 15:38:20 +00:00
8d71d496be new self signed certificate which fits to the host name reseed.i2p.projekt.de 2014-05-10 15:21:54 +00:00
zzz
738bae46d2 * SusiMail:
- Remove deleted messages from memory too
   - Disable delete button when really-delete button shown
2014-05-10 14:47:46 +00:00
zzz
d519228efb change exception type 2014-05-10 14:44:09 +00:00
zzz
72c404c4d4 * NTCP: Fix NPE (ticket #996)
(hopefully)
2014-05-10 14:42:13 +00:00
zzz
d2e3547a2e * Crypto: JVM AES only faster for larger data size 2014-05-09 19:13:28 +00:00
zzz
8d9790fd77 * CPUID:
- Add hasAES()
   - Fix bugs in unused hasSSE3(), hasSSE41(), hasSSE42()
 * Crypto: Use JVM AES when faster
 * SystemVersion: Add isJava7() and isX86()
2014-05-09 15:28:54 +00:00
zzz
cd91a6b2a4 * SusiMail: Add more locking (ticket #1269) 2014-05-09 12:15:12 +00:00
zzz
e165c1805d unnecessary cast 2014-05-09 12:14:19 +00:00
292b0a81c0 remove debugging cruft 2014-05-09 10:33:01 +00:00
b9e9c07d95 checkremotecerts.sh: clean-ups, compatibility updates
It now works with either gnutls or openssl, and both gnutls v2 and gnutls v3.
2014-05-09 10:21:15 +00:00
837bf9eafe add i2pdocs.str4d.i2p to hosts.txt
It's linked on the website but wasn't in any of the default lists.
2014-05-09 10:11:22 +00:00
zzz
cfdbef05c5 set GPG key ID in release target 2014-05-08 19:23:15 +00:00
47b10e9771 checkremotecerts.sh: explicit check that cert exists 2014-05-08 17:56:37 +00:00
1b5a2ddef3 updated cert for ieb9oopo per email in ticket #1266 2014-05-08 17:55:41 +00:00
c161649ed5 Add script to check reseeder host certificate validity 2014-05-08 13:31:32 +00:00
c9b5c03e1b remove certs that are no longer used 2014-05-08 12:47:46 +00:00
c4c04d7ec5 rename i2pproject cert
The other self-signed certs are named after the host that they're being used
for. Maintaining this naming scheme will make automated testing easier.
2014-05-08 12:46:44 +00:00
b4e03fa969 Removing netdb.i2p2.* certs
These have not been used for some time. netdb.i2p2.no is using an *.i2p2.de
cert from Commodo.
2014-05-08 12:45:31 +00:00
zzz
1cdcf1cb0a i2ptunnel: Display warning for duplicate client ports (ticket #1265) 2014-05-07 16:00:38 +00:00
zzz
56b6992ca8 i2psnark: Add log message if directory does not exist (ticket #1263) 2014-05-07 15:58:24 +00:00
zzz
2beaea4a86 Tunnels: Revert expl. OB default back to 2 + 0-1 for now 2014-05-07 14:50:45 +00:00
zzz
2dc97b160a i2psnark: Allow click on entire table cell for viewing torrent details 2014-05-07 14:48:42 +00:00
zzz
a014918c0d Transports: Use constant time method for HMAC verification 2014-05-07 14:47:15 +00:00
zzz
fb9a4eb87a SSU: Extend establishment phase retx timeout 2014-05-07 14:43:46 +00:00
zzz
cd83c48526 DSAEngine: Minor cleanup 2014-05-07 14:41:28 +00:00
zzz
5b2766ddfb Data: Use Arrays.equals() directly, same as DataHelper.eq() 2014-05-07 14:40:03 +00:00
zzz
f912b01137 Fix console getting disabled when saving client config (ticket #1260)
Router: Add warning at startup if console is disabled
2014-05-07 14:36:41 +00:00
zzz
b0db4e4fff * SusiMail:
- Don't fetch headers from folder sorters
   - Update debug setting when saving config
2014-05-07 14:34:51 +00:00
zzz
649f76fb06 add hiddengate.i2p 2014-05-07 14:33:20 +00:00
zzz
91408cbdce SigUtil: Catch EdDSA IAE
SU3File: Hide EdDSA and unavailable sig types from help text
2014-05-05 19:49:24 +00:00
97c1ba2d02 merge of '477b2b4e4f6f8a2e406fb9729cd603d8caeadb40'
and 'ef12e90467e2bdbf5e64a9e55230ce56121d7347'
2014-05-04 14:52:06 +00:00
zzz
284802bfa5 add caching of EdDSA keys 2014-05-04 14:09:02 +00:00
zzz
48b6e0693e finals 2014-05-02 19:43:21 +00:00
zzz
67ea2f3717 SusiMail: Remove dups in war 2014-05-01 17:05:57 +00:00
zzz
e9e535cb94 * SusiMail:
- Move js to resources
   - js for delete boxes in folder view
2014-05-01 14:34:02 +00:00
zzz
7822b5c3ac SusiMail: header padding 2014-05-01 13:13:20 +00:00
zzz
767bd05ce1 SusiMail: new sorter base class 2014-05-01 13:02:44 +00:00
zzz
36ebe19cd7 SusiMail po update for TX 2014-05-01 12:04:10 +00:00
zzz
943ea957a2 * Plugins: Retry deletion at restart if it fails (ticket #1257) 2014-04-30 14:22:25 +00:00
zzz
04a3673366 remove UTF8 in commented-out test 2014-04-30 11:28:13 +00:00
zzz
1dfbe73b73 * SusiMail:
- Add print css
   - Add some divs
   - Hide header and footer in mobile css
   - Fix 'from' address in compose
   - Boolean config parse cleanup
   - Config textarea row count
2014-04-29 19:50:28 +00:00
zzz
87889bb322 * UDP:
- Locking fixes on peer testing
   - More locking fixes on rebuilding address
   - Slow down peer test frequency, esp. when firewalled
* Transports:
   - Deprecate unused recheckReachability()
2014-04-27 18:46:11 +00:00
zzz
aa0616d7c5 * UDP:
- Locking fixes on rebuilding address
   - Don't rapidly churn address when we don't have enough introducers
2014-04-27 15:47:43 +00:00
zzz
611ff6357e * NTCP: Remove published NTCP address if SSU becomes firewalled,
to fix the "Firewalled with NTCP enabled" message
2014-04-27 15:01:01 +00:00
zzz
91d7a0ab98 * SusiMail:
- Add locking for disk cache
   - Remove cancel button from login page
   - New configuration page
   - Move set page form to configuration page
   - Theme and folder js enhancements
   - Wrench icon from Silk, same license as the others
2014-04-27 14:57:28 +00:00
zzz
f5661da595 * Router: Set killVMOnEnd before runRouter() (for azi2phelper)
* RoutingKeyGenerator: Don't assume UTC (for azi2phelper)
2014-04-27 14:53:15 +00:00
d867f9f36e Fix for SigType.isAvailable() 2014-04-27 01:56:01 +00:00
55d92fc9f2 Support "raw" EdDSA signatures (in reality they are double-hashed) 2014-04-26 13:03:38 +00:00
2e2d3c39e6 Added Ed25519-SHA-512 to I2PTunnel advanced UI 2014-04-26 12:11:02 +00:00
3cd01acb73 Fixed Ed25519-SHA-512 algorithm name 2014-04-26 12:10:18 +00:00
02c0ddb3d3 Generalized to support any EdDSA parameter spec 2014-04-26 11:59:16 +00:00
ce397f5858 Added EdDSA support (directly, not using Provider) 2014-04-26 11:24:31 +00:00
zzz
3f56ce206d * SusiMail:
- Subject sort enhancements
   - Tag Re: and Fwd:
2014-04-25 20:05:23 +00:00
zzz
8a2308b411 * SusiMail:
- Send delete to server for mails already downloaded
   - Fix idle closer waiting for deletions
   - Add tooltips for icons
   - Add new options to properties resource
   - Add feedback when reload config button pushed (ticket #1158)
   - Reset page size when config reloaded
   - Remove max page size limit
   - Show page nav buttons on bottom too if page is big
   - Set title to subject on message view
   - Log tweaks
2014-04-25 18:47:47 +00:00
zzz
04cabf40b5 * SusiMail:
- Move delete and confirmation button in folder view to bottom left,
     page size form to bottom right
   - Attachment finals and cleanup
   - Increase max size for full download again
   - Fix repeated re-saves of mail to disk
   - Enable auto-deletion of downloaded mails
   - Consolidate check box processing
   - Button spacing tweaks
2014-04-25 16:11:35 +00:00
zzz
4e0c4f6f98 * SusiMail:
- Tweak sort button display based on current sort
   - Secondary sort based on date
   - Ignore "Re:" in subject sort
2014-04-25 14:09:28 +00:00
zzz
75bd235eb2 * SusiMail:
- Add raw attachment download method
   - Display image attachments inline
   - Don't rezip certain attachment types, just offer link
   - Handle attachment sending directly, don't put ref in session
2014-04-25 13:04:04 +00:00
zzz
05236b093a * SusiMail:
- Fix sorting buttons, broken by POST check
2014-04-25 04:15:50 +00:00
zzz
260ebe512c * SusiMail:
- Add icon for new mail
     (from Silk icons, same license as others)
   - Attachment logic tweak
2014-04-25 04:09:14 +00:00
zzz
c2dab16c8c * SusiMail:
- Add icons for attachments and spam
     (from Silk icons, same license as others)
   - Add checks for POST for XSS prevention
2014-04-25 03:42:18 +00:00
zzz
945d455f33 * SusiMail:
- Different colors for new mail and spam
2014-04-24 21:33:43 +00:00
zzz
c8f8f6ff34 * SusiMail:
- Add background mail checker, not yet enabled
   - Add idle timeout connection closer
   - Rely on idle checker for most delayed deletions
   - Cleanup resources better when shutting down session
   - Don't add deleted mails to folder, caused errors after deletions
   - Set socket soTimeouts so things don't hang forever
   - Display errors after check mail button pushed
   - More IOE debug logging
2014-04-24 20:54:22 +00:00
zzz
0d4f597a59 SusiDNS: Fix subscription edit page, thx bubbles 2014-04-24 14:26:21 +00:00
zzz
775047fbc2 * SusiMail:
- Fix HeaderLine decoder going past the headers,
     which was causing corruption in forwarded mails
   - More efficient output buffer allocation in HeaderLine decoder
2014-04-24 01:25:50 +00:00
zzz
1e4b43314c * SusiMail:
- Fix fetching of new mail
   - More Folder cleanup
   - Prep for not leaving on server
   - Prep for background checker
2014-04-23 22:46:57 +00:00
zzz
b365817c99 * SusiMail:
- Queue deletions for a delayed background thread
   - Synch all folder access
   - NPE fixes
   - Javadoc fixes
2014-04-23 19:40:57 +00:00
zzz
bbb04774d1 compile fix 2014-04-22 20:52:08 +00:00
zzz
1823e5e641 * SusiMail:
- Load all mails from disk at startup
   - Add offline mode
   - MailCache now has the total UIDL view
   - Copy silk folder icon from snark to console for use by susimail
2014-04-22 20:01:24 +00:00
zzz
4d2dc1c8e8 * SusiMail:
- Show sender name in folder view
   - Add support for configured sender name
   - Add HTML escaping of '&'
   - Fix Folder sorting so UP is up and DOWN is down
   - Use replace() instead of replaceAll() where appropriate
   - Fix capture by show page after back button
2014-04-22 18:45:09 +00:00
zzz
6986f90bf8 * SusiMail:
- Fix encoding in sent mails on non-UTF8 platforms (thx cryptosynthesis)
   - Clean up all other getBytes() calls
   - Tweak spacing on up buttons
2014-04-22 11:48:45 +00:00
zzz
b43ebd2486 * SusiMail:
- Add persistent cache
   - Remove ID sorter
   - Mail size getter/setter
   - Set mail size when setting body
   - Only send CAPA once
   - Tagged string tweaks
2014-04-22 11:18:56 +00:00
611f991fdd Added a security provider for I2P-internal crypto 2014-04-22 07:20:30 +00:00
zzz
7bf3ea5200 * SusiMail:
- Pipeline all deletes and quit
   - Don't reconnect after delete and quit
   - Verify connected before each POP3 operation
   - Null check in comparators
   - Don't clear messages if a reconnection fails
   - Use locale-based sorting for strings
   - Increase limit for full fetch again
   - Increase default page size back again
2014-04-21 23:00:46 +00:00
490727b401 fix i2ptunnel 2014-04-21 20:59:29 +00:00
zzz
49f4f3398d * SusiMail:
- Add MailPart constructor, make fields final
   - Add ReadBuffer constructor, make fields final
   - Move decoding to MailPart method
   - Setters/getters for Mail header, body, part
   - Classes package private
   - Finals, constructors
2014-04-21 20:17:08 +00:00
b84682fdc9 * findbugs: mostly stream closure fixes in router, apps, core 2014-04-21 10:54:52 +00:00
zzz
b9491b269b * SusiMail:
- Pipeline initial fetch of messages, huge speedup
2014-04-20 22:22:22 +00:00
zzz
b70cbb28b2 * SusiMail:
- Send CAPA
   - Pipeline STAT, UIDL, and LIST
2014-04-20 19:31:28 +00:00
zzz
673c14287a * SusiMail:
- Rework in POP3 in prep for more pipelining
2014-04-20 18:38:54 +00:00
zzz
b4a0ffdbbd * SusiMail:
- Don't require an attachment to be "uploaded" to send it
   - Move delete attachment button, hide if no attachments
   - Icon for delete attachment button
   - Fix html error in bccToSelf input
2014-04-20 17:12:21 +00:00
zzz
3b2e5bded2 * SusiMail:
- Don't store encoding class names in config
   - New susimail.debug setting in config
   - Use DataHelper to load config file
   - Close any open POP3 socket when session is unbound
   - Don't keep returning user to compose page (ticket #1252)
   - Add javascript capture of back button from compose page
2014-04-20 15:19:30 +00:00
67eb3cc140 unblocking USERS (ticket #1249) and various safe Inspircd commands 2014-04-20 11:53:39 +00:00
zzz
5a683149ab * SusiMail:
- New reply button icon (from Silk, same license as the others)
   - Save BCC-to-self preference in the session
   - Tweak the BCC-to-self layout
   - Fix date format in reply
2014-04-20 02:45:01 +00:00
zzz
b75ad1ca5a * SusiMail:
- Use pipelining in SMTP
   - Rewrite SMTP response processing
   - Translate SMTP error messages
   - Right-justify msg size in folder view
   - String.compareTo() cleanup
2014-04-20 01:26:11 +00:00
zzz
552ab31559 Console: Remove the classpath workarounds for SusiMail,
since it isn't using the jetty classes any more
2014-04-19 20:46:31 +00:00
zzz
4abfde4047 SusiMail:
- CSS padding in inputs
   - Flush writes in SMTP
   - Don't wait for SMTP response after QUIT
   - Translate the "login failed" message
   - Show "no messages" in folder view if none
   - Message view attachment cleanups
   - Fix the message view layout in CSS
   - Pipeline USER and PASS to save a round-trip at startup
   - Better synchronization in POP3
   - Properly de-byte-stuff in POP3
   - Flush writes in POP3 for speedup
   - Remove unnecessary caching in POP3, this is handled in MailCache
   - More efficient handling of POP3 server responses
   - Remove 60s timeout for fetching a message,
     so retrieval of large messages doesn't fail
   - Don't allow line breaks in date/time or size in folder view
   - Use DataHelper.formatSize2() for message size
   - Identify susimail log messages in wrapper
   - Debug log tweaks
2014-04-19 20:44:50 +00:00
zzz
6ecfedba37 SusiMail:
- Increase max size of mails that are fetched in full,
     previous limit was so small it never happened.
   - Move page nav to top of folder view, hide if only one page
   - Put message nav buttons on second line
   - Refuse to send mail with no "to"
   - Reduce default page size as it slows startup
   - Remove unnecessary casts
   - Right justify some input fields
2014-04-19 16:57:56 +00:00
zzz
43883a90d2 SusiMail: Successfully extend session expiration (ticket #1253)
by renaming the cookie, so we don't have a common session ID
with the base context and get it expired there.
2014-04-18 21:32:45 +00:00
zzz
3930113f00 I2PTunnel IRC Client: Prevent AIOOBE (ticket #1254) 2014-04-18 16:44:39 +00:00
zzz
029198c213 * SusiMail:
- Don't force reconnection on folder view (ticket #1253)
   - Only show logout button on folder view
   - Switch subject and date headers on message view
   - Button theme tweaks
   - Debug logging
   - Fix NPE when RELEASE=false
   - Synch tweaks
   - hellip
   - Footer tweak
2014-04-18 16:43:07 +00:00
zzz
493788f4f8 merge of '9f159df098940fb0feecf6eae0c990c62736bb9c'
and 'ba82e9e4c57bd8d9f567c9252fe7b5815972e370'
2014-04-18 01:50:14 +00:00
zzz
028776de88 * SusiMail:
- Extend session expiration (ticket #1253)
   - Handle non-UTF8 encoding on header lines (ticket #508)
   - Display dates in current locale and time zone
   - Display sender name on message view
   - Remove sort-by-ID buttons
   - Hide "reload config" button unless config file is present
   - Increase default page size
   - Add dependency tracking to build
2014-04-18 01:48:03 +00:00
705de68aa3 allow PROTOCTL and LINKS through the filter.
http://www.unrealircd.com/files/docs/technical/protoctl.txt

We already allow /MAP and /LINKS is pretty much the same.
2014-04-18 01:46:19 +00:00
zzz
eb96a74e32 configclients: Don't allow console disable 2014-04-18 01:14:23 +00:00
zzz
614f34c6b4 Stats: clean up addRateData() calls 2014-04-17 18:58:38 +00:00
zzz
f77a3c7f56 NTCP: Log tweaks to help on ticket #996 2014-04-17 18:54:58 +00:00
zzz
6de81d41d2 SSU: SessionRequest replay prevention (ticket #1212)
NTCP: Just use first 8 bytes of Hx^Hi for replay check
2014-04-17 18:52:40 +00:00
zzz
7ac9dc5542 Tunnels: Increase OBEP throttle limit for now 2014-04-17 18:50:24 +00:00
zzz
2195c2fe98 SusiMail: Button styling for prev,next,list 2014-04-17 18:48:52 +00:00
zzz
3f35e927dd SusiMail:
- Initializer cleanup, finals
   - Escape "--" inside HTML comments
   - Log errors to router log too
   - Notes on ticket #508 header line issues
2014-04-17 18:48:07 +00:00
zzz
5ec659513b SusiDNS:
- Move some methods to BaseBean
   - Locking on config file accesses
   - Remove static log and context
2014-04-17 18:39:52 +00:00
zzz
1039a4b7a0 i2psnark: Randomize announce list order and limit size 2014-04-17 18:36:37 +00:00
zzz
88899c1233 clean up unused router stuff 2014-04-06 18:28:34 +00:00
d429514a3a debian: remove dep on ${misc:Depends}
This causes the 'i2p' package to force the version of i2p-router to match.
2014-04-06 16:04:17 +00:00
zzz
b2c6fcbb73 merge of '0c93d925b9ac38f2475b39aa2b80eaa1454214d6'
and '97ec023f8ba85ebdabe5ee0bd3f9e107710f170f'
2014-04-06 15:19:30 +00:00
zzz
3b1e030b39 NetDB: Iterative search improvements
- Pass DSRM hashes through IMD to ILJ for client tunnels too
- Query unknown DRSM hashes in ILJ without looking up
  when using client tunnels; look up after querying
  when using expl. tunnels to speed things up
- Don't look up banlisted hashes
- Check 'from' hash in DSRM against list of peers sent to
- Don't query an unknown peer through a zero-hop OB tunnel
- Log tweaks
Extend expiration of returned message in IMD
2014-04-06 15:18:16 +00:00
zzz
e097a1caeb NetDB: Skip LS verifies when shutting down
remove unneeded null check
2014-04-06 15:15:23 +00:00
d6b09f8bab don't check launch4j xml 2014-04-06 14:36:36 +00:00
zzz
6d46344171 drop launch4j demos, docs, and source 2014-04-06 14:03:43 +00:00
zzz
24e807b238 Skip key cert LS verifies for floodfills that don't support them
Fix continuation after skipping key cert LS stores for floodfills
that don't support them; ditto big leasesets
2014-04-05 14:05:40 +00:00
zzz
fdf6f5d51f -2 2014-04-05 12:59:11 +00:00
zzz
4b938a02e7 log tweak 2014-04-05 12:33:53 +00:00
zzz
44a5740a04 Add server option for unique local address per-client
as suggested in https://lists.torproject.org/pipermail/tor-dev/2014-March/006576.html
2014-04-05 12:30:58 +00:00
zzz
8d73b2e838 Fix changing outproxy without stopping tunnel (ticket #1164) 2014-04-05 12:24:50 +00:00
zzz
e1fc6893b4 SocketErrorListener callback is unimplemented 2014-04-05 12:18:14 +00:00
7487ab8848 i2ptunnel: remove extraneous '>' from editClient 2014-04-02 01:25:47 +00:00
e675416b8c debian: re-enable javadocs pkgs, bump changelog 2014-04-01 21:27:49 +00:00
24a133fe67 add .pc/ to .*ignore 2014-04-01 21:22:41 +00:00
zzz
0570feda6f * NetDB: Handle RI response from non-floodfill router down a client tunnel 2014-04-01 13:05:51 +00:00
zzz
b206665c72 TunnelPoolSettings constructor tweak 2014-04-01 13:03:40 +00:00
zzz
8a6fb132f5 * Console: Fix summary bar html when displaying an update constraint 2014-04-01 13:01:13 +00:00
zzz
6992ca8b98 build path update 2014-04-01 13:00:28 +00:00
zzz
fd916a7646 test script updates 2014-04-01 12:59:27 +00:00
zzz
90cd68900e 0.9.12 2014-03-31 12:43:15 +00:00
zzz
3f865edb4f Convert pt_BR getopt translation from ISO-8859-15 to escaped UTF-8 2014-03-31 12:36:50 +00:00
2e8681de2c getopt translations 2014-03-28 20:23:53 +00:00
zzz
2d85b98c20 * i2ptunnel.config: Remove irc.freshcoffee.i2p
* NetDbRenderer: Adjust debug floodfill estimate
 * StatManager: Don't start thread for an empty config
 * StatisticsManager: Don't publish client tunnel stats
 * Log tweaks
2014-03-28 14:01:39 +00:00
d28d6efb79 geoip updates 2014-03-28 12:21:52 +00:00
43d84a5f07 fr, nb, and ru translation updates 2014-03-28 12:21:32 +00:00
e4d57f62bb merge of '1202f5d3645add930a96dfa77cd2b2ebfb56ca95'
and '5c131297d763f8953029fea257681d55f2103aaa'
2014-03-24 11:57:46 +00:00
a974268e7b postinstall: fix freebsd x86 wrapper path
Spotted in the FreeBSD Port (http://svnweb.freebsd.org/ports/head/security/i2p/files/patch-installer__resources__postinstall.sh?view=markup)
2014-03-24 11:57:04 +00:00
zzz
1695af7011 belated jisko.i2p 2014-03-23 20:44:47 +00:00
682c4cd0b8 remove extraneous '>' from editServer 2014-03-23 18:33:29 +00:00
0f6d039391 Console: Handle stopping plugin ClientApps 2014-03-23 10:55:00 +00:00
d6233a8798 add *.torrent to .gitignore 2014-03-21 11:35:37 +00:00
4f12e81dbb build: add -pre-release target, add addt'l files to distclean
Moving the pre-release checks to a new target (to be run at the very start of
"release")
2014-03-21 11:35:04 +00:00
ab612d0088 cleanup of *clean targets, remove more generated files in distclean 2014-03-19 22:00:43 +00:00
3fa7bb9dc5 mtn-ignore: ignore .torrent 2014-03-19 21:59:27 +00:00
22b3d4d70b translation updates 2014-03-16 23:56:43 +00:00
zzz
bd6c588c74 * SSU: Fix corruption of introducer keys 2014-03-16 18:27:46 +00:00
zzz
6c202e8f1d fix router identity test broken by previous checkin 2014-03-15 19:40:41 +00:00
zzz
24e6750529 * Certificate: Fix null cert hash code
* Hash: Cleanup of cached hash
* NetDB: Randomize returned DSM timestamp
2014-03-15 18:43:42 +00:00
af7ce8e18e remove extraneous <a> tag
(fixing my mistake)
2014-03-15 13:47:53 +00:00
zzz
c73f0eeeb5 more Jetty classpath cleanup 2014-03-13 13:58:50 +00:00
zzz
c68769cf7f MultiMap: Cleanups, javadocs after review 2014-03-13 13:57:10 +00:00
zzz
3e639a319d SAM:
- Classes static/private
 - Fields private/final
 - Remove unused fields
 - Remove shadowing fields
 - Remove dup method overrides
 - Remove static Logs
 - Remove unnecessary field initialization
 - Atomics
 - Findbugs
2014-03-13 12:22:04 +00:00
zzz
1bbb79f5b1 log tweaks 2014-03-13 12:17:34 +00:00
84e6991374 Add .su3 to .mtn-ignore, create new .gitignore file 2014-03-13 11:27:37 +00:00
5d1796bb6f Debian: Remove service directory when package is purged
This was in the 0.9.11 packages but not checked into mtn.
2014-03-13 02:31:23 +00:00
bfba732f76 Debian: Add systemd support (ticket #1208)
Currently just for Debian unstable and Ubuntu Saucy and newer.
2014-03-13 02:29:41 +00:00
zzz
738c5ed14e Streaming: Workaround for jwebcache and i2phex (ticket #1231) 2014-03-12 16:02:23 +00:00
zzz
beed080390 anoncoin.i2p 2014-03-12 15:21:17 +00:00
zzz
3624d66c12 send message on HTTP Server OOM 2014-03-12 15:18:41 +00:00
zzz
2cca2781fd * Streaming: Track recently closed connections (ticket #1161)
Consolidate and synchronize code for selecting a random stream ID
2014-03-12 12:39:53 +00:00
zzz
31d485299c log tweak 2014-03-12 12:36:00 +00:00
zzz
a39f667c2f set BAOS size 2014-03-12 12:35:29 +00:00
zzz
5283fc923e * Wrapper: Fix failed restarts on ARM (ticket #1230);
extend shutdown timeouts for all archs.
2014-03-12 12:33:36 +00:00
zzz
c57552f4e9 * Console: Handle ISO-639-2 language codes (ticket #1229) 2014-03-12 12:29:38 +00:00
zzz
96b4c6b219 findbugs sam/bob 2014-03-12 12:27:23 +00:00
zzz
51911bd9a8 fix jetty deprecations 2014-03-12 12:25:30 +00:00
zzz
1f5926e4e9 * PeerManager: Restore profileOrganizer.sameCountryBonus advanced config,
inadvertently removed in 0.9.10
2014-03-08 16:03:35 +00:00
zzz
d6a02a13ad * Router:
- Look for DeliveryStatusMessages beyond the message expiration,
     so we don't throw out a tagset that gets acked late
   - Allow re-adding of a "failed" tagset to the SKM
   - Extend max message age in MessageValidator
   - Remove unused and confusing timeout param when registering a selector
   - Log tweaks, javadocs, cleanups
2014-03-07 14:17:11 +00:00
e282491798 merge of '10a291d2283174a7527515a7448d220d5023ffc0'
and '6ace0f7ffbda402db7e1af21a74ca29ad54829c2'
2014-03-07 08:35:12 +00:00
2b0dfed012 Fixed Android API version detection, load cacerts dir for API >= 14 2014-03-07 08:27:14 +00:00
zzz
9d80aff977 * GarlicClove, CloveSet, GarlicMessageParser:
- Cleanup, reduce object churn, comment out unused code
   - Limit max cloves to 32
2014-03-06 19:31:09 +00:00
zzz
a0724dc009 * Router: Encrypt DeliveryStatusMessages sent in garlics (ticket #1217) 2014-03-06 16:21:36 +00:00
zzz
8c820bb237 clean up build classpath (ticket #1165) 2014-03-06 06:03:58 +00:00
zzz
3fdc964eac javadoc fixes 2014-03-05 16:53:04 +00:00
zzz
597662d0dc * Transports: Don't send a duplicate store of our RI at
start of a connection (ticket #1187)
 * NTCP:
   - Lower send priority of the RI at exchange
   - Bob will now send his RI even if he doesn't have Alice's
   - Send RI again sooner on long-lived connections
2014-03-05 16:32:04 +00:00
17c80c29e6 Updated history.txt 2014-03-05 03:35:52 +00:00
5d0bfc63fa Updated readme.html files for new website paths 2014-03-05 03:34:53 +00:00
0c449f8b8e susimail: Removed remaining Jetty dependencies in susimail (ticket #1165)
Thanks for the patch, wockenfuss!
2014-03-05 03:02:08 +00:00
36b6baa33e Updated .mtn-ignore 2014-03-05 02:58:07 +00:00
2c049878c6 Enable addressbook.jar building (for I2P-Android) 2014-03-03 03:49:48 +00:00
zzz
81c58c1796 log tweak 2014-03-01 13:13:52 +00:00
zzz
36a3edf612 - DatabaseStoreMessage: Don't instantiate an ArrayList unless we need it
- Overrides in GarlicConfig/PGC for efficiency and clarity
 - Check for valid ID in DeliveryStatusMessage
 - Misc. log tweaks, javadocs, cleanups
2014-02-27 13:37:11 +00:00
zzz
4b6fd3d387 format tweak 2014-02-24 14:06:24 +00:00
zzz
f777696e14 finals, volatiles, cleanups 2014-02-24 14:02:48 +00:00
zzz
c9c181c14a * NetDB: Slow down router refresh after startup to reduce load
on exploratory tunnels
2014-02-24 14:01:35 +00:00
zzz
a62b7a4374 * Tunnels: Rate-limit connections at the OBEP (ticket #1134) 2014-02-24 14:00:39 +00:00
zzz
9d7a9c9895 * NTCP:
- Add check for replayed session requests (ticket #1212)
   - Disable inbound check connection
   - Reduce object churn in EstablishmentManager
   - Don't pollute Hash cache in EstablishmentManager
   - addRateData() cleanup
2014-02-24 13:54:52 +00:00
zzz
5d6a1c5e35 reduce log level 2014-02-24 13:52:44 +00:00
zzz
c48266fdc4 * Transports: Use SigUtil.rectify() in DH 2014-02-24 13:51:20 +00:00
zzz
895d54d36d minor cleanup 2014-02-24 13:46:07 +00:00
ba0e1a3aa9 * I2PTunnel: add 'irc.dg.i2p' to the default IRC2P tunnel (for more information, see http://echelon.i2p/docs/IRC2p/irc2p_userguide.txt) 2014-02-23 21:38:12 +00:00
6ec665db50 Br. Portugese, French, Japanese, Polish translation updates 2014-02-23 16:54:49 +00:00
7f4c52cf42 remove #i2p-help from initialNews 2014-02-23 16:40:28 +00:00
37728e38c9 (hopefully) langbox fixes 2014-02-22 23:58:25 +00:00
zzz
18b4a2427b * I2CP Client: Generate revocation key of same type as signing key
* i2ptunnel: Only offer Sig options that are available in the JVM
 * LeaseSet: Add check for SigTYpe mismatch
 * SigType: Add isAvailable()
2014-02-21 17:47:30 +00:00
zzz
3102970540 * RouterAddress: Restore storage of expiration and use in signature
calculation, broken in 0.9.3, in anticipation of using it someday
2014-02-21 14:57:28 +00:00
zzz
c679091afd target build property 2014-02-21 13:59:27 +00:00
zzz
91cdf85772 * Router: Allow null args to main() (broke Android) 2014-02-20 14:08:05 +00:00
zzz
aab8b10adf * i2ptunnel: Add inproxy block option to HTTP server 2014-02-20 14:07:02 +00:00
5bcfe1ec72 don't link to docs.i2p2.de in the router console
docs.i2p2.de was last updated in October of 2010!
2014-02-18 19:51:35 +00:00
zzz
4209c291ba * history for prop, -9 (ticket #1090) 2014-02-17 14:18:18 +00:00
zzz
7c5dc7fa55 propagate from branch 'i2p.i2p.zzz.jetty8' (head 0a03ce60906c508b08cc84b3044954844a6ee157)
to branch 'i2p.i2p' (head d99392e09883a92b99a316b4deed0586dcf4ea5b)
2014-02-17 14:01:13 +00:00
zzz
c6dfb8744a Jetty 8.1.14 jars 2014-02-17 13:58:19 +00:00
zzz
6e0ca92041 * getopt fix for PrivateKeyFile -t sigtype, busted in prop
* history for prop, -8
2014-02-17 13:39:32 +00:00
zzz
2f7eb56790 propagate from branch 'i2p.i2p.zzz.ecdsa' (head e83bcdc842f5995d310a4295147f9326a993e010)
to branch 'i2p.i2p' (head 4983f716f8740bc7ddfae5561a562a0d42a815ae)
2014-02-17 13:29:41 +00:00
zzz
8c98ef7328 update version 2014-02-17 13:14:23 +00:00
zzz
45997fd1d5 * SSU:
- Restrict authentication with Bob's intro key to session created packet
2014-02-17 13:05:17 +00:00
zzz
6a3e5ec620 * SSU:
- Use session key for relay request/response if available (ticket #1206)
   - Remove packetAuthTime stats
   - Misc. cleanups and logging
2014-02-17 12:56:08 +00:00
zzz
18cbf3d253 * HMAC:
- Replace BC MD5 with JVM version, refactor I2PHMAC to use
     MessageDigest instead of BC Digest (ticket #1189)
   - Use JVM HmacSHA256 instead of I2PHMAC for Syndie since it is standard
2014-02-17 12:03:22 +00:00
zzz
4df6a6f47b min java version for izpack 2014-02-16 22:31:17 +00:00
5542406f3d Merge pull request from https://github.com/i2p/i2p.i2p/pull/1 2014-02-16 11:28:48 +00:00
zzz
a9fceae181 * I2CP:
- Add session limit, add new status code for refused
   - Ramdomize session ID, prevent dups
   - Make session IDs immutable
2014-02-14 17:05:32 +00:00
zzz
c79ff0dc09 minor cleanups 2014-02-14 17:02:14 +00:00
zzz
e2fc5c6957 * Tunnels: Change expl. OB default to 3+0 2014-02-13 15:46:34 +00:00
zzz
5667a6647f * Router: Convert to getopt (ticket #1173) 2014-02-13 14:43:23 +00:00
zzz
b70d616083 update links 2014-02-12 23:06:30 +00:00
75fa2b1809 typo fix 2014-02-12 21:38:42 +00:00
zzz
66d9017d58 fix PingTest 2014-02-11 19:45:52 +00:00
53efb7119a merge of '12c51adcf9862cc57488b27ec00002b1bb399294'
and 'b870e2fda1291f95ae4e6e35cc5ded300578d92b'
2014-02-11 14:15:35 +00:00
8b946bb56b Remove mention of Pebble in the router console for reasons noted in ticket #865 2014-02-11 14:15:04 +00:00
zzz
8ed34e3edf * HTTP client proxy: Don't flush after headers for a POST,
so the POST data is included in the SYN packet,
   to improve speed and reliability of small POSTs
2014-02-11 13:44:37 +00:00
d8fef53aef i2prouter: - note FBSD10 workaround in ticket #1118
- remove tanuki's script version checks
2014-02-11 01:54:45 +00:00
zzz
6af82f2a9a history for prop, -2 2014-02-10 20:32:20 +00:00
zzz
36b2547ca4 propagate from branch 'i2p.i2p.zzz.test2' (head 7db2f2b73bc7c44b4be1077185314201c5b0bfe6)
to branch 'i2p.i2p' (head ea9844ecc27e816a09cf5d9b36c10ee2c3d1bcc9)
2014-02-10 18:46:38 +00:00
zzz
72e96cdd23 remove concatentation within appends 2014-02-10 18:33:32 +00:00
zzz
a2ba9bbdb1 * Checklist updates
* Console:
   - Don't reset graph settings when clicking restart or shutdown on graphs page
   - Don't recommend guest login on trac, it's disabled
   - Catch and remove corrupt jrb file (ticket #1186)
   - Always set default language on /configui
 * Readme: Update links
 * Transports: Reduce target connection count again to reduce
               tunnel reject rate further
2014-02-10 14:22:43 +00:00
f6d9a6917f Removed a comment line from french translation 2014-02-09 20:27:42 +00:00
zzz
2e91890401 Javadoc fixes to correct release number
Remove unused lock object
 Add irc.dg.i2p
 0.9.11
2014-02-08 18:09:46 +00:00
zzz
1956068698 * Addressbook:
- Rewrite subscriptions.txt to convert to new default URL
   - Static method call cleanups
2014-02-08 16:02:50 +00:00
zzz
855cae0a45 propagate from branch 'i2p.i2p' (head eac6caabd2ea6731ee27111f0dbadf5afcd3695b)
to branch 'i2p.i2p.zzz.test2' (head 911a8782667d878dd7a2976c7fb10d481d80e023)
2014-02-07 16:33:59 +00:00
zzz
ef3a12f01a * UpdateManager:
- Convert to RouterApp and remove update hooks from context
     (ticket #1185)
2014-02-07 15:40:23 +00:00
zzz
37bf750ab9 * I2PTunnel:
- Convert to getopt (ticket #1173)
   - Add more argument sanity checking
   - Add a usage output
2014-02-07 14:24:09 +00:00
zzz
090a790a9d * Services:
- Move backup news to psi.i2p
   - Move default addressbook subscription to i2p-projekt.i2p
   - Remove www.i2p2.i2p from default update lists
   - Add psi.i2p to hosts.txt
   - Update links on help pages to avoid redirects on new website
     and select the correct language
 * SusiDNS: Fix whitespace issues
2014-02-07 12:52:54 +00:00
8ef3bb3d82 version number fix 2014-02-06 18:50:54 +00:00
388019249d -10-rc
Debian changelog update, Korean debconf translation, history.txt update
2014-02-06 18:45:11 +00:00
91d1364832 February 2014 geoip db updates 2014-02-06 18:43:45 +00:00
2ec1d8484f Brazilian Portuguese, Danish, French, Japanese, Polish, Russian, Ukrainian 2014-02-06 18:32:23 +00:00
zzz
9a01fdf57c * PrivateKeyFile:
- Convert to getopt (ticket #1173)
   - New option -e for hashcash effort, instead of -h with optional arg
   - Stub out -t option, to be propped from ecdsa branch
   Will require manual merge with ecdsa branch...
2014-02-06 15:30:03 +00:00
zzz
deec84713f * EepHead, PartialEepGet, SSLEepGet:
- Convert to getopt (ticket #1173)
 * EepHead, PartialEepGet:
   - New option -c for clearnet (no proxy), same as -p:0
   - New option -o, same as EepGet
   - Proxy option -p with host name arg only (no ':') now allowed
   - Add proxy auth support with -u and -x options (ticket #1173)
 * EepGet:
   - Catch error in -h option
   - Cleanups
2014-02-06 14:18:51 +00:00
zzz
0d028122a6 * EepGet:
- Support Digest proxy authentication(ticket #1173)
   - Move authentication parsing method from I2PTunnelHTTPClientBase
2014-02-06 01:29:46 +00:00
zzz
4998f86efe * EepGet:
- Convert to getopt (ticket #1173)
   - New option -c for clearnet (no proxy), same as -p:0
   - Proxy option -p with host name arg only (no ':') now allowed
   - Proxy password option is now -x, not the second arg to -u
   - Prompt for proxy password if not supplied in options
   - Line length option is now -l, not the second arg to -m
   - Error on nonproxied .onion hosts
   - Update man page, sort options (ticket #1173)
2014-02-05 16:10:56 +00:00
zzz
839bd51bc8 javadoc fix 2014-02-05 14:46:23 +00:00
zzz
936f2bb317 combine help strings 2014-02-04 14:32:36 +00:00
zzz
0cd774273c * I2Ping:
- Convert to getopt (ticket #1173)
   - Add support for from/to ports
2014-02-04 14:11:09 +00:00
zzz
fe391ff29f Convert all jars and wars to compile to 1.6 target,
except for the following which are used by android,
to maintain compatibility with very old phones, for now:

	addressbook.war
	BOB.jar
	i2p.jar
	i2ptunnel.jar
	mstreaming.jar
	router.jar
	streaming.jar
2014-02-03 23:59:48 +00:00
zzz
001b127258 * Jetty:
- Update to Jetty 8.x, Servlet 3.0, JSP 2.2
   - Require Java 6
   - Use Servlet and JSP jars from Jetty instead of Tomcat
   - Tomcat remains at 6.0.37 supporting Servlet 2.5 / JSP 2.1
   - Remove Jetty dependency in console error pages
   - Build files for Jetty 8.1.14
   - Doc updates
   - Delete Jetty 7.6.14
   - Jetty 8.1.14 not yet checked in,
     waiting to see if a new version is released soon,
     but build will download it for testing
2014-02-03 23:24:45 +00:00
zzz
7c00a5165f Build: Honor require.gettext=false for i2prouter translations 2014-02-03 20:43:02 +00:00
zzz
e1c3e2c1c7 * Getopt bundle fixes for Java Properties standard:
Fix comment lines
   Encoding conversion to UTF-8 with escapes
   Add unicode escapes for all chars over 0x7f
   Change Transifex type to PROPERTIES
   Also:
    - Remove BOMs
    - Remove \r
    - Remove blank lines
   Encodings were as follows:
     cs: marked ISO-8859-2
     pl: marked ISO-8859-2, possibly corrupt, ?? in two strings
     de, es, fr: marked ISO-8859-1
     hu: detected as ISO-8859-2
     it: apparently ISO-8859-1
     ja: Unicode escaped already
     nb, nl: ASCII
     ro: marked ISO-8859-2 but actually UTF-8
     zh: detected as GB2312 w/ CRLF
     zh_TW: UTF-8 w/ BOM w/ CRLF
2014-02-02 21:05:14 +00:00
zzz
e9b3577eec snark: cache PeerID.toString() 2014-02-02 17:19:06 +00:00
zzz
3622501471 * Streaming:
- Set ports on many packets that were missing them
   - Use connection throttling methods on pings too (ticket #1142)
   - Add methods to set ports on pings
   - Argument checking on ping methods
2014-02-02 16:47:29 +00:00
zzz
b7207fd29f Use getopt lib in SU3File (ticket #1173) 2014-02-02 15:14:00 +00:00
zzz
4dc1241d2f Add lightweight getopt command line parsing lib
(ticket #1173)
This is Java getopt 1.0.14 (released 2012/02/08)
Source was retrieved from https://github.com/arenn/java-getopt
Previous version 1.0.13 (released 2006/08/29)
is available at http://www.urbanophile.com/arenn/hacking/getopt/
Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com),
LGPL v2.
Include the small translation files, add to build.xml and to .tx/config
Fixes:
  Simplified Chinese
    MessagesBundle_chs.properties renamed to MessagesBundle_zh.properties
  Traditional Chinese
    MessagesBundle_cht.properties renamed to MessagesBundle_zh_TW.properties
  Norwegian Bokmaal
    MessagesBundle_no.properties renamed to MessagesBundle_nb.properties
2014-02-02 15:12:44 +00:00
zzz
c59603d31b fix swapped Dutch and Norwegian on /configui 2014-02-02 14:39:41 +00:00
zzz
3ab149a399 streaming javadoc fixes 2014-02-01 12:37:45 +00:00
zzz
99f28519fb * SOCKS: Remove static logs 2014-01-31 18:38:15 +00:00
zzz
05aa88b4e8 * /logs: Fix encoding of wrapper log section (ticket #1193)
- remove a cast in FileUtil
2014-01-31 18:34:27 +00:00
zzz
887f953efb * NetDB: Fix cases where corrupt RouterInfo files were not deleted (ticket #1190) 2014-01-31 18:32:22 +00:00
zzz
5e16c42e4e * InboundMessageDistributor: Set reply flag on LeaseSets 2014-01-30 13:02:16 +00:00
2cea7cdb30 fix 2014-01-29 21:41:52 +00:00
e60da8e8ff Added new https reseed, i2p-netdb.innovatio.no (Sindu) 2014-01-29 19:45:10 +00:00
zzz
be12995753 * Tunnels: Change expl. IB default to 2 + 0-1 2014-01-28 22:50:51 +00:00
zzz
c30419107f * /configclients: Add link to plugins.i2p; don't show delete button for console 2014-01-28 22:48:52 +00:00
zzz
2cacded182 datagram sigtype bugfix 2014-01-28 22:40:36 +00:00
zzz
ec22a1dafc - Only store LS with more than 6 leases to routers that support it 2014-01-28 22:35:33 +00:00
434bf13be9 * I2PSnark: Make 'kitty.png' transparent. 2014-01-28 21:11:39 +00:00
236df32f30 volatiles 2014-01-28 17:42:14 +00:00
zzz
28575dbdae * Key certs:
- Hide setting in i2ptunnel edit pages unless advanced user
  - Only store LS with key certs to routers that support it
2014-01-28 14:21:54 +00:00
zzz
5b9d669d79 * I2CP: Use client tunnels for b32 lookups (ticket #1166)
- convert some calls to use getDestHash()
   - javadocs
2014-01-28 13:27:44 +00:00
zzz
b2f4fde7e5 history for prop, -6 2014-01-27 18:50:44 +00:00
zzz
9eefe1e935 propagate from branch 'i2p.i2p.zzz.i2cp' (head d4ac8162a4ba299ac912640f19076c3c90afdc67)
to branch 'i2p.i2p' (head adc5102c93383e01c74b87f04449dc9c307f6e75)
2014-01-27 16:47:22 +00:00
zzz
b91f041ad7 I2CP:
- Add missing session ID assignments in HostLookup/Reply constructors
2014-01-27 16:38:00 +00:00
zzz
ba96f72899 help tweak 2014-01-27 16:37:39 +00:00
5d322245d8 Ticket #1183 - move message serialization later in the SSU pipeline 2014-01-27 14:47:58 +00:00
zzz
47712a39ac i2psnark:
- Support arbitrary location for torrent data. Save location in
   per-torrent config file. TODO: Fix torrent browse pages
   (ticket #1028)
 - Enhance idle shutdown message
 - Javadocs
2014-01-27 13:41:38 +00:00
zzz
6b16907e40 * i2ptunnel HTTP Proxy: Fix default enable for outproxy plugin 2014-01-27 13:32:24 +00:00
zzz
18146daad8 i2psnark:
- Add missing nonce protection for file priority setting
 - Add torrent mime type
 - String append cleanup
2014-01-26 14:26:16 +00:00
zzz
0c326f989e Remove outproxy hook vestiges in context, history for prop, -3 2014-01-25 18:23:46 +00:00
zzz
e0a499dd0f propagate from branch 'i2p.i2p.zzz.outproxy' (head 02da481346e0bf35b289f00b32f50871da202afb)
to branch 'i2p.i2p' (head eb2820957208e17c76e8c10a2c36e59e0da61895)
2014-01-25 18:16:38 +00:00
zzz
0f862124fe - Tweak display name of HTTP client tunnel
- Show outproxy plugin status on i2ptunnel index page
2014-01-25 17:56:35 +00:00
zzz
d00be4ceee update error pages for HTTPS 2014-01-25 15:52:04 +00:00
zzz
ec8354860e * NetDB: Fix NPE after client shutdown (ticket #1174) 2014-01-25 15:08:56 +00:00
zzz
f9144f2fbf * StatisticsManager: Lower frequency for publishing stats again 2014-01-25 15:07:57 +00:00
zzz
5d2ff5e648 * Installer: Update links
* Update release checklist
2014-01-25 15:06:51 +00:00
zzz
ce475d2cd6 sort imports 2014-01-25 15:05:43 +00:00
zzz
72bd1fe91b * i2psnark: Lower threshold for auto-stop
* Update: All updates via torrent
2014-01-25 14:58:34 +00:00
747d833392 Fix 2014-01-25 00:59:42 +00:00
3427464de6 Move OutNetMessage buffer preparation to the Writer threads
(Ticket #1184)
 Up version to -1
2014-01-25 00:46:30 +00:00
zzz
9ca625a64e - Fix up the header processing for SSL thru HTTP proxy
- Fix the CONNECT line output
- Set use-plugin default to true
- Log tweaks
- rename a variable
2014-01-24 16:52:29 +00:00
9e87fd9b13 Sync fix for NTCPConnection._currentOutbound 2014-01-24 15:35:55 +00:00
zzz
5b6ed48ec0 0.9.10 2014-01-22 01:30:33 +00:00
zzz
96f6865835 bump for review 2014-01-21 00:51:08 +00:00
fa50f9f246 * Adding http(s) uk.reseed.i2p2.no (Meeh)
* Adding http i2p-netdb.innovatio.no (Sindu)
2014-01-21 00:00:27 +00:00
538b4b10d7 Translation updates from Transifex 2014-01-20 17:00:24 +00:00
bdb3e26d07 geoip (v4 and v6) updates 2014-01-20 16:17:32 +00:00
ec87600e80 Chinese language update 2014-01-20 16:13:31 +00:00
zzz
0624f46e67 * Console: Change www.i2p2.i2p links to i2p-projekt.i2p
* Reseed: Remove netdb.i2p2.de
2014-01-20 15:52:14 +00:00
ece1198dd4 Fixed NPE 2014-01-15 02:31:07 +00:00
a83c88e886 propagate from branch 'i2p.i2p' (head 4b264686657ff54a00224313e00de68d37edbd31)
to branch 'i2p.i2p.unittests' (head 63cf9916eca4b38ab0707cd781c308312e27d75f)
2014-01-14 05:09:31 +00:00
zzz
8bbab31872 * NetDB: Fix handling of DSM down client tunnels 2014-01-12 19:21:52 +00:00
zzz
8c6922ac5f * NetDB: Fix handling of DSRM down client tunnels
ISJ log tweak
2014-01-12 15:24:13 +00:00
zzz
6b67f399f6 * NetDB:
- Reduce min part tunnels for ffs to 35
   - Use client tunnels for LS lookups from OCMOSJ (ticket #1166)
2014-01-12 01:10:38 +00:00
a9598633b3 Missing file from BOB logging fix 2014-01-11 17:14:09 +00:00
1fb2672b67 BOB: Pass through I2CP host/port (ticket #827) 2014-01-11 04:30:59 +00:00
4308ce6347 Fixed logging for BOB-one.jar 2014-01-11 01:56:47 +00:00
32b095efbd BOB: Implement ClientApp interface (ticket #347) 2014-01-10 21:11:55 +00:00
zzz
eb4bdfcefb add i2pjump 2014-01-10 16:31:39 +00:00
fc6554cabc typo fix (a03adeb0, part 2) 2014-01-10 11:44:37 +00:00
058590f69b Fixed language names in routerconsole 2014-01-10 06:15:17 +00:00
zzz
576984badc I2CP:
- Add SessionID to HostLookup/Reply messages, for future
    use when we have multiple sessions
  - New SessionID constructor w/ value
  - Throw IAE on invalid SessionID values
  - Bump all comments from 0.9.10 to 0.9.11
2014-01-10 02:24:15 +00:00
9825fcf97b update of en source files, bump build 2014-01-09 19:33:54 +00:00
1ed96d72b2 i2prouter translation updates 2014-01-09 19:24:45 +00:00
a29935abb3 New Brazilian Portuguese translation
- New translation from Transifex
- Update langbox widths
2014-01-09 19:24:11 +00:00
e92a5da5a5 tx: update hostname in config, add pt_BR 2014-01-09 19:21:38 +00:00
f08e0299ef Updated translations from Transifex 2014-01-09 19:17:38 +00:00
zzz
9757435b09 NewsFetcher: Delay news fetch on new installs (ticket #1153) 2014-01-09 14:03:49 +00:00
zzz
80fadb4580 Kad: Fix NPE when removing yourself 2014-01-09 12:27:18 +00:00
8658c23974 susimail: Fixed pagination with zero entries (ticket #1168) 2014-01-09 04:31:30 +00:00
0264cc9030 susimail: UTF-8 support from wockenfuss (ticket #508) 2014-01-09 03:34:45 +00:00
bd5b6b32b5 Updated history 2014-01-09 03:33:57 +00:00
dc0a1281bf Migrated overlap fix from Fux (ticket #773) 2014-01-09 03:10:50 +00:00
zzz
c20c697126 RouterAppManager: Allow registration of untracked ClientApps,
required for orchid plugin
2014-01-08 15:17:09 +00:00
zzz
44e7110c9a Fix StandardServerSocket.isClosed() and close()
thx cacapo
ref: http://zzz.i2p/topics/1547
2014-01-08 00:32:51 +00:00
zzz
c860c49c6b Add jisko.i2p to home page
Icon source: http://jisko.i2p/wiki/File:Jisko_console_icon.png
Icon license: Copyleft: This work of art is free; you can redistribute it and/or modify it.
ref: http://zzz.i2p/topics/1539
2014-01-08 00:30:28 +00:00
zzz
b16e66d39a Add GUI outproxy plugin enable setting for all tunnel proxies
(only implemented in HTTP)
More SSL support in I2PTunnelHTTPClient
  - Add separate config for SSL outproxy
2014-01-06 16:56:00 +00:00
3b06f0b83c Change the test url to www.i2p-projekt.i2p 2014-01-06 16:06:20 +00:00
zzz
0bc6c23ac9 Remove outproxy hook in context, use ClientAppManager:
- Add clientAppManager() to I2PAppContext so it can be used there
  - Add routerAppManager() to RouterContext for convenience inside router

Start of SSL support in I2PTunnelHTTPClient
  - Add initialSocketData support back to I2PTunnelOutproxyRunner
  - Works for orchid (and in-net?)
  - TODO Doesn't work for in-net proxy
  - Need separate config for SSL proxy
2014-01-06 13:57:45 +00:00
zzz
17e63b054c add sigtype to i2ptunnel client gui too 2014-01-05 16:38:39 +00:00
zzz
0fae0640d6 missing file 2014-01-05 02:55:46 +00:00
zzz
d054e12952 New interface and context hooks for in-jvm outproxy
Support in HTTP client proxy
All preliminary, maybe better to use ClientAppManager?
2014-01-05 00:52:00 +00:00
dc60c2b478 * Console: Change /configclients 'advanced warning' to include 'toopie, no red 2014-01-04 23:40:41 +00:00
zzz
b59aa1fb69 move I2PSocketOptionsImpl from mini to impl 2014-01-04 22:10:10 +00:00
54a21bfa7b Fix compilation of non-JUnit tests (disabled by default) 2014-01-04 19:57:47 +00:00
50f55877f8 make public method protected 2014-01-04 19:56:55 +00:00
f9ff262318 Fix junit tests for streaming, thank you zab (and thank you zzz) for helping out. 2014-01-04 19:45:52 +00:00
91ba76f2a6 merge of '1fd43bf251a91d33bb1ea9b06f2b35a40be3b9c9'
and '766a92b57cdf82d3b1d1e3a71ef2a3109e883add'
2014-01-04 17:41:15 +00:00
ec97bc2f81 Stab at fixing streaming tests.
Add javadoc package.html
Fix import order
2014-01-04 17:39:32 +00:00
zzz
fba209ca7d restore method used by bote 2014-01-04 17:32:38 +00:00
zzz
b91b242a1a bump 2014-01-04 16:54:12 +00:00
zzz
38186c8f75 TunnelPoolSettings:
Split out the defaults for expl/client IB/OB.
  Client default now 3 hops.
  Expl default still 2 hops, with OB Expl + 0-1,
  en route to 3+0.
2014-01-04 16:48:45 +00:00
zzz
1b3aefbbce PeerManager: Remove small same-country bonus
This was done back when we were desperate for
 build improvement but it's bad for anonymity
 and probably a little slow also
2014-01-04 16:43:54 +00:00
zzz
c03511b971 exception causes 2014-01-04 16:40:06 +00:00
zzz
78e7599a8a better wording 2014-01-04 16:39:10 +00:00
zzz
dc871cf1eb XSS 2014-01-04 16:38:05 +00:00
e98b9d0af5 bump for testing 2014-01-04 14:27:51 +00:00
2a09d5baa6 * Streaming: Move streaming to new package (ticket #1135) 2014-01-04 14:09:33 +00:00
zzz
41e071efe5 * Key cert GUI support:
- Add setting in i2ptunnel server edit page
  - Comment out cert setting on i2ptunnel server edit page
  - Show key type on susidns details page
  - Show key type on LS debug page
2014-01-03 15:31:08 +00:00
zzz
e8e239616f * Crypto: More implementation for key certs
- Support i2cp.destination.sigType option in TunnelController and
    I2PSocketManagerFactory
  - Fixup of Destination.create() and Destination.size()
  - Add generic off/len methods in DSAEngine, needed for streaming
  - Fixup of sign/verify in streaming Packet
  - Javadocs
2014-01-03 00:22:44 +00:00
1feb317f8b typo 2013-12-25 09:39:19 +00:00
09668453d0 * Console: Add 'advanced warning' to /confgiclients
* SOCKS5Server: Remove redundant, commented out line from my previous findbugs
2013-12-25 09:37:46 +00:00
zzz
5842e25205 Initial support for key certificates and arbitrary types and lengths
of signing keys and signatures in RouterIdentities and Destinations.
Untested, not even for regressions, except with command line
using PrivateKeyFile.
Based on preliminary spec at http://zzz.i2p/topics/1442?page=1#p7524
Not done:
 - Transport handshake signing
 - Configuration of default type
 - Specification of type in options to I2PSocketManagerFactory
 - Specification of type in i2ptunnel
 - Fix up caching of SigningPublicKey and P256 key cert
 - Any non-default crypto type in the key cert
 - Documentation
2013-12-24 16:41:05 +00:00
zzz
a2e7fa8b7b another minor dir listing speedup 2013-12-22 14:23:01 +00:00
zzz
30ccf1b334 i2psnark:
- Refactor file deletion in prep for better file name handling (ticket #571)
 - Don't use canonical files in directory listings,
   for speed and to avoid file comparison problems (tickets #1079, #1148)
 - Set base file/dir in Storage constructor, make final,
   in prep for arbitrary locations (ticket #1028)
2013-12-22 13:52:35 +00:00
zzz
5219791673 I2CP:
- Add support for b64 conversion in destLookup()
  - Catch invalid message length sooner
I2Ping:
  - Extend I2PTunnelClientBase so non-shared-client,
    I2CP options, and other features will work
  - Fixes for fields and threading
Streaming:
  - Send LS with ping (broken since 0.9.2)
  - Set the NO_ACK flag on pings and pongs
2013-12-21 18:10:59 +00:00
zzz
bf485d8bce history update and date fixes 2013-12-21 18:01:04 +00:00
zzz
cc97a19d3c I2CP:
- Add support for hostname lookups over I2CP with new
    HostLookup and HostReply messages.
  - Move username / password from CreateSession
    to GetDate for early authentication;
    this is an incompatible chage.
    Outside router context with authentication enabled,
    new clients will not work with old routers.
    Early authentication is not yet enforced, enable with
    i2cp.strictAuth=true. Will change default to true in a later release.
  - Block all actions before authentication.
  - Better disconnect messages to clients for diagnostics
  - Improve lookup command, add auth command in i2ptunnel CLI for testing
  - Don't start ClientWriterRunner thread in constructor
  - Don't flush in ClientWriterRunner unless necessary
  - Send GetDate even in SimpleSession outside of RouterContext
  - Improve SetDate wait logic to reduce locks and break out when
    Disconnect received
  - Add Disconnect handler to SimpleSession
  - I2Ping cleanups
  - Javadocs
2013-12-21 00:21:48 +00:00
zzz
38c02b44b9 Streaming: final, volatile, logging 2013-12-19 12:24:51 +00:00
zzz
04a596899a NetDB: Fixes for ExpireRoutersJob
- Don't expire if too few routers
  - Don't expire if net is disconnected
  - Don't run in VMCommSystem
2013-12-19 12:23:29 +00:00
zzz
ee1ed1bb82 Nice message during graceful shutdown
May need to tweak the wording
2013-12-19 12:20:32 +00:00
zzz
2b39d28e99 fix comment 2013-12-19 12:16:39 +00:00
zzz
01b153488a i2psnark:
- Move config file and DHT persistence file to a config dir
   - Move per-torrent configuration from "zmeta" in the main config file
     to a per-torrent config file (ticket #1132)
   - Split timestamp and bitfield into separate configs
   - Fix misspelling of autoStart config
   - Remove two unused SnarkManager methods
2013-12-16 16:12:32 +00:00
zzz
8cb503d8bb EepGet: Allow override of the User-Agent
i2psnark: Set User-Agent
2013-12-15 15:16:54 +00:00
zzz
efff25a87c NetDB:
- Just before midnight, flood to new location too so lookups
   don't fail after keyspace rotation (ticket #510)
 - Refactor RoutingKeyGenerator and UpdateRoutingKeyModifierJob
   in support of the above
 - Display next key on LS debug page
2013-12-14 14:38:00 +00:00
zzz
6e2583ad92 NetDB:
- Increase new kad size to K=24, B=4
 - Fix router count by counting in the data store, not the kbuckets
 - Randomize the order we load router infos at startup so we
   don't bias the kbuckets
2013-12-13 17:50:39 +00:00
zzz
af84bcf945 i2ptunnel:
- Show destination for persistent client key only if available;
   show b32 for the key as well
2013-12-13 17:45:35 +00:00
zzz
3dc429415b use advanced setting to show LS debug 2013-12-13 17:31:13 +00:00
zzz
ec9dd25631 sort i2ptunnel CLI help for sanity 2013-12-13 17:30:18 +00:00
zzz
2bda87d5a7 comment out main 2013-12-13 17:29:43 +00:00
a7a816e0a7 wrapper: 3.5.23 updates for win64 2013-12-10 23:23:06 +00:00
zzz
3d9d722cee history for props, -1 2013-12-10 11:39:45 +00:00
zzz
289a8e7b40 merge of '3f93d2c09c89b5c68487c33fd700ef7c2feeeb61'
and 'b2c58f8462ab5c08682b711436c387b421bdd0c2'
2013-12-10 11:11:08 +00:00
7d3aa33c25 Fixed type argument problem causing infinite recursion 2013-12-10 05:55:19 +00:00
zzz
0db1314595 propagate from branch 'i2p.i2p.zzz.netdbkad' (head bc7310e940f01e68bd6be0ed0681eb624dada332)
to branch 'i2p.i2p' (head 98569f30891693e6888913f50b88d1f37969fe45)
2013-12-10 02:31:08 +00:00
zzz
68641626aa propagate from branch 'i2p.i2p.zzz.test2' (head ec8e362ce8b93280b518c599a3cc075b89085d2b)
to branch 'i2p.i2p' (head c9b1eef91f61f4482ad11c4f2b2d01be67a17ad2)
2013-12-10 02:26:32 +00:00
zzz
5b9fb403c9 Jetty 7.6.14.v20131031 2013-12-10 02:26:00 +00:00
a4114b96fd Deprecation warning fixes 2013-12-09 20:45:11 +00:00
de184ed139 propagate from branch 'i2p.i2p.str4d.cleanup' (head 736423cc308e964bab55068e625f8a1852932ec5)
to branch 'i2p.i2p' (head 0ac335d5dc4ccaeb113af4fb5c0e993a6f42fdbe)
2013-12-09 19:51:39 +00:00
zzz
04c342ec6a PrivateKeyFile: Fix ISE (ticket #1145)
broken in 0.9.9
2013-12-09 16:38:00 +00:00
zzz
27ce28027d i2ptunnel: Disable streaming pings for clients (ticket #1142)
i2psnark: Disable streaming pings (ticket #1142)
2013-12-09 16:11:53 +00:00
zzz
f8a54bde19 0.9.9 2013-12-07 15:30:29 +00:00
zzz
3acfdbe8f7 i2ptunnel IRC client: Do not filter server PING or client PONG (ticket #1141) 2013-12-06 15:26:12 +00:00
zzz
d9fed57c89 more finals 2013-12-05 16:25:16 +00:00
zzz
46e7e9be82 finals 2013-12-05 16:21:36 +00:00
zzz
d87d4eb232 I2CP: Disconnect client on attempt to publish invalid leaseset 2013-12-05 16:14:51 +00:00
zzz
88ea451f81 propagate from branch 'i2p.i2p' (head 2634e424f06e58231c47f1ec318e9ae21c94a8b3)
to branch 'i2p.i2p.zzz.test2' (head 68ca880caf69a06c0fd01fc70675df795aef1de2)
2013-12-05 16:07:32 +00:00
822ec4aa53 Debian: patch refresh 2013-12-04 18:46:28 +00:00
zzz
7b0b07933f finals 2013-12-04 14:21:03 +00:00
zzz
7fe8573df4 i2psnark ConnectionAcceptor:
- Fix ConnectionAcceptor not restarting after tunnel
    restart, preventing incoming connections
  - locking tweaks
  - cleaner reschedule tweaks
  - don't store server socket locally
  - constructor tweaks / finals
  - Stop acceptor when tunnel disconnects
  - javadocs
2013-12-04 14:17:38 +00:00
c180292358 Style fix: leave brackets around for() one-liners 2013-12-04 03:51:02 +00:00
a3fa48dcbe Removed dead code 2013-12-04 03:50:26 +00:00
zzz
445e4301d5 bump for review 2013-12-01 21:27:43 +00:00
736da22bba update geoip from maxmind's 2013-11-05 db 2013-12-01 20:15:32 +00:00
f29c64cd70 merge of '37bb29ce149260c55fb90ec8e56262262382fd9d'
and 'c4f7358a50c9982c5d63e9e5201f4e3f9562422f'
2013-12-01 20:13:49 +00:00
aa4b4b9d2b French, Italian, Romanian, Spanish, and Swedish translation updates 2013-12-01 20:09:16 +00:00
1112fc8544 Yes it's deprecated, it should still use proper generics 2013-11-30 12:52:50 +00:00
9b361ac445 Fixed history. Last commit was actually blocking "X-Powered-By". Oops. 2013-11-28 21:12:35 +00:00
0ff423fc57 I2PTunnel: Don't send 'X-Forwarded-For' on HTTP server tunnels for anonymity reasons (reported by 'trixie' on IRC). 2013-11-28 21:03:19 +00:00
efe3bd2c05 Use for each when Iterator not needed 2013-11-28 11:56:54 +00:00
f112baac48 propagate from branch 'i2p.i2p' (head cbfe85d22c4d0b05c901db3fa751b57889d9b2d6)
to branch 'i2p.i2p.str4d.cleanup' (head 94fe1764f50b459da18222434034ad46d604c7a1)
2013-11-28 11:12:41 +00:00
707f616498 Changes from -rc diff review 2013-11-28 11:10:57 +00:00
ed2feb3ff7 Core: findbugs 2013-11-27 23:22:49 +00:00
a17b1b99c0 Moved StatLogSplitter to i2p.scripts/java-utils 2013-11-27 22:48:46 +00:00
27bc32f2f3 Core: findbugs exclusions (for use in Eclipse or Jenkins) 2013-11-27 11:17:17 +00:00
b535054e13 generics 2013-11-27 11:14:16 +00:00
97a9a6090a Use copy constructor instead of clone() 2013-11-27 01:55:29 +00:00
8b8e2c88c1 type argument 2013-11-27 01:55:14 +00:00
9d7ee30c15 More cleanups 2013-11-27 01:42:34 +00:00
4ee144533a Another warning suppression to be removed at Java6 2013-11-27 01:25:20 +00:00
0f2a983bb7 i2psnark: type arguments, warning suppression (to be removed at Java6) 2013-11-27 01:11:48 +00:00
8fd2f9090e propagate from branch 'i2p.i2p' (head 7903431c2a396fceb1e0428b2be3dde03ba24635)
to branch 'i2p.i2p.str4d.cleanup' (head cfbae7380c3fa106f578d5de399701cfb72d5747)
2013-11-27 00:57:19 +00:00
8770d7eae0 i2psnark: Comparable type arguments 2013-11-26 21:09:36 +00:00
c59ef24acf i2psnark: more type arguments 2013-11-26 20:16:45 +00:00
85aa2fb083 i2psnark: MetaInfo type arguments (thx zzz) 2013-11-26 19:54:53 +00:00
zzz
434b9fa0d1 GeoIP: Thread the periodic lookup so it doesn't clog the timer queue 2013-11-26 16:28:24 +00:00
zzz
56116ad8c2 PeerManager: Thread the periodic reorg so it doesn't clog the timer queue 2013-11-26 15:51:00 +00:00
zzz
c0ef19a281 i2psnark: Fix mixed public/private tracker detection
(thx str4d)
2013-11-26 03:07:21 +00:00
9804e5b7d9 i2psnark: more type arguments 2013-11-26 01:34:08 +00:00
2f33186e58 i2psnark: type arguments, unused imports, for each 2013-11-26 00:20:03 +00:00
0347c56c96 Deprecation fixes 2013-11-25 23:29:48 +00:00
e77409e57a Close resources 2013-11-25 23:14:09 +00:00
615ba94559 propagate from branch 'i2p.i2p' (head d12a1fd746cd9314de5de5e1000c02cf4c59100d)
to branch 'i2p.i2p.str4d.cleanup' (head e20c143dd50a9c802999068a95e12198b07e4c36)
2013-11-25 22:36:27 +00:00
ce0596d5b1 Reseed: Listen to "Require SSL" config option 2013-11-25 21:11:56 +00:00
35b6926e4f Ticket #1047 : Do not adjust window on receiving dups. 2013-11-25 19:21:27 +00:00
zzz
76925fa3bd console: add debug link if advanced config is set 2013-11-25 15:59:34 +00:00
zzz
dbdf36d85c Update: Increase torrent from 30% to 60% 2013-11-25 15:34:49 +00:00
zzz
60aa8c57a4 I2PTunnel: Fix a shared client configured with i2cp.newDestOnResume
not restarting correctly, caused by previous checkin
2013-11-24 23:42:53 +00:00
zzz
001070f677 fix setting of BC_AVAILABLE thx str4d 2013-11-24 23:42:13 +00:00
c6f2d4948b Class generics 2013-11-24 23:41:06 +00:00
zzz
8699c82614 Kad unit tests:
- Port KBSTest from i2p.zzz.kademlia branch
  - Fix RandomTrimmer so it always returns true, so it may be used
    as the trimmer in the unit tests
2013-11-24 23:39:47 +00:00
zzz
1d7eedd463 Kad unit tests:
- Move KBucketSetTest to new directory
  - Fix testSelf() as new implementation will never include myself
  - Delete KBucketImplTest, not applicable/useful now
  Next todo: port KBSTest from i2p.zzz.kademlia branch
2013-11-24 21:58:42 +00:00
zzz
796a231f54 NetDB:
- Move net.i2p.kademlia package from i2psnark to core, and convert
    netdb to use it.
  - Delete old implementation in netdb
  - Fixups in netdb for generics
  - Add debug output to /debug

  This is the next step in the development plan, in which we previously:
    - Copied the code from netdb to the i2p.zzz.kademlia branch, fixed it,
      and made it generic for hash size (June 2012);
    - Moved it from the i2p.zzz.kademlia branch to the i2p.i2p.zzz.dhtsnark
      branch, and implemented KRPC with it (June 2012);
    - Propped it from i2p.i2p.zzz.dhtsnark to trunk for 0.9.2 (July-Sept. 2012);
    - Proved it out in 0.9.2 - 0.9.9 (Oct. 2012 - Nov. 2013)

  The plan was to maintain the KBucketSet public methods throughout the development
  so we could drop the new version back into netdb, so here we drop it in.

  Setting of K=16, B=3 is just an initial guess, to be reviewed.
  This moves about 18 KB from i2psnark.jar to i2p.jar and removes about 12 KB from router.jar.
  Unit test fixup: todo.
2013-11-24 16:38:51 +00:00
e1fcad686c propagate from branch 'i2p.i2p' (head 72c44737466e553fec443a79fffa7636894fe383)
to branch 'i2p.i2p.str4d.cleanup' (head 5a2425d7523b732840e55039f88cea5699f1aa83)
2013-11-24 01:20:11 +00:00
zzz
ffa03f2b83 IterativeSearchJob:
- Recheck completion status just before sending out a wrapped message
 - log tweaks
2013-11-23 17:56:40 +00:00
zzz
54fb91ba8e I2PTunnel: Call destroySocketManager() when replacing
a client socket manager configured with i2cp.newDestOnResume,
  or a shared client.
  This prevents lots of orphaned StreamingTimer threads.
  There are still cases where these threads may stick around,
  when a tunnel is stopped but not restarted. We don't know in
  some cases when a tunnel could be restarted and when it can't.
  destroySocketManager() should always be called when discarding a
  SocketManager but i2ptunnel doesn't do that now. More to do,
  but this fixes the most common case of leaked threads.
  Related tickets: ##642 #961
2013-11-23 17:54:01 +00:00
zzz
e498e2113f Snark: make a set of the default trackers so the config array
can be private and the lookup for the form is more efficient.
2013-11-23 14:45:38 +00:00
zzz
f42ac71fe0 UDP PeerState findbugs volatile/atomic/synch 2013-11-23 14:37:33 +00:00
zzz
74f2fd06cc Deprecate Signature.FAKE_SIGNATURE 2013-11-23 14:33:58 +00:00
zzz
143a0dfc47 Transport: Reduce target connections from 60% to 45% of limit.
This will improve network capacity.
   Apparent problems with lower limits were actually due to
   unrelated bugs that were fixed by 0.9.8.1-22.
   This can go lower still; I've been testing 33% without issues.
2013-11-23 14:29:23 +00:00
fdb0097934 Temporarily moved old help.jsp translations back 2013-11-23 11:44:07 +00:00
0dde4162e6 susimail: Fix NPE when deleting last message (ticket #414) 2013-11-23 04:24:30 +00:00
zzz
844bae18ba fixup after prop 2013-11-22 22:19:06 +00:00
zzz
9e4d5c0e61 propagate from branch 'i2p.i2p' (head da40262a8b7685de3877c1d7d6d16a155caa9e7c)
to branch 'i2p.i2p.zzz.test2' (head 6263bb149b8301059d0471bcc1d47caeca660f4e)
2013-11-22 17:29:45 +00:00
zzz
9b8d3eb688 Startup:
Wait a while and recheck if a recent ping file is there,
    so that a crashed router doesn't prevent a restart (ticket #633)
2013-11-22 17:27:49 +00:00
8478bfbddc BOB: for each 2013-11-22 11:46:39 +00:00
d6bb5f6a4d i2ptunnel: type arguments 2013-11-22 11:41:12 +00:00
e9fec9354b ministreaming: type arguments 2013-11-22 11:37:44 +00:00
f9f0e6d0a2 SAM: for each 2013-11-22 11:36:26 +00:00
3bc0be1cbe susidns: type arguments, for each 2013-11-22 11:25:22 +00:00
8d826cee93 susimail:
- Generics in Folder
- for each
- type arguments
2013-11-22 11:18:41 +00:00
e853d9a40b Router: more type arguments, for each 2013-11-22 10:16:34 +00:00
15bf94b479 Core: type arguments 2013-11-22 09:34:42 +00:00
6314f33d8f desktopgui: unused imports 2013-11-22 04:25:48 +00:00
5fa0376f58 SAM: type arguments, unused imports 2013-11-22 04:22:14 +00:00
552dd189a5 streaming: type arguments, unused imports 2013-11-22 04:18:26 +00:00
57144f3e6a Added Eclipse projects for SAM and streaming 2013-11-22 03:58:02 +00:00
zzz
0454639db8 bump -30-rc 2013-11-21 23:02:21 +00:00
c32b451733 i2psnark: type arguments, unused imports 2013-11-21 12:43:45 +00:00
2f4765665d routerconsole: type arguments, unused imports 2013-11-21 11:31:50 +00:00
bff79cdae8 susimail: type arguments 2013-11-21 10:49:15 +00:00
4bddf8ae0b susidns: type arguments, unused imports 2013-11-21 10:17:35 +00:00
ae79deff39 net.i2p.jetty.*: type arguments, unused imports 2013-11-21 10:13:34 +00:00
e3aeb267f8 Eclipse classpath consolidation 2013-11-21 09:38:09 +00:00
c5c26c440d Eclipse Ant builders for core, router and jettylib 2013-11-21 09:11:42 +00:00
77971624b4 Created Eclipse project for installer/resources
Reverts a change in 7fe82070
This project can be added to the classpath of a JUnit runner
2013-11-21 08:54:42 +00:00
f5621c5082 Converted lib Eclipse project to standard folder 2013-11-21 08:52:04 +00:00
3fa7fe9733 Updated routerconsole Eclipse classpath 2013-11-21 08:40:05 +00:00
c97d07e10a org.cybergarage.*: more type arguments 2013-11-21 06:08:41 +00:00
567c328331 org.cybergarage.*: type arguments, unused imports 2013-11-21 05:58:54 +00:00
3aa982529e org.xlattice.crypto.*: type arguments 2013-11-21 05:56:14 +00:00
0c07f9ff96 More type arguments in UDPTransport 2013-11-21 05:23:35 +00:00
f0055ccbfe Made type argument for Transport.getClockSkews() consistent 2013-11-21 02:27:53 +00:00
693cc828c2 Type arguments in OutNetMessage 2013-11-21 02:27:03 +00:00
688dd23111 gnu.crypto.prng.*: type arguments 2013-11-21 02:18:59 +00:00
e38db5eb44 i2ptunnel: type arguments, unused imports 2013-11-20 23:36:39 +00:00
817f531619 merge of '743aa294fa15c3243bb6ad56d4de64f5eff15051'
and '85fa37bf6c3090c0d4c10f4b7b2d679549090c37'
2013-11-20 23:15:31 +00:00
53623da2eb addressbook: type arguments, unused imports 2013-11-20 23:14:40 +00:00
4910266d9b merge of '63ea1d70b3fd3886a050d7b196cd7ae261844164'
and '6a57f7039fe5697b9770d642ac1d4653e4b9878c'
2013-11-20 23:10:52 +00:00
24ae66df6d Core JUnit tests: type arguments, unused imports 2013-11-20 23:06:17 +00:00
228bd980db Router JUnit tests: type arguments, unused imports 2013-11-20 22:47:14 +00:00
f161a2dfc9 BOB: NamedDB accesses are synchronized, correct findbugs fix is to remove volatile 2013-11-20 22:12:44 +00:00
abe1dc676e Dead code, type arguments 2013-11-20 22:05:37 +00:00
zzz
9de57a5d5a log tweak; bump -29-rc 2013-11-20 21:16:13 +00:00
2cc742c3ed Fixed stupid pasting bug 2013-11-20 19:54:10 +00:00
5bcfe025d5 fix build 2013-11-20 15:40:21 +00:00
6dc6ca7713 avoid <? extends Object> generics 2013-11-20 15:11:35 +00:00
eabcc96a99 remove useless string 2013-11-20 14:52:44 +00:00
28b6675979 findbugs BOB/SAM. more to do. 2013-11-20 12:02:44 +00:00
413ad6b0e6 BOB findbugs 2013-11-20 09:56:57 +00:00
a7a7e96188 Findbugs in imported core code 2013-11-20 09:15:12 +00:00
796dbc5d2e Fixed bug hidden by Set<RouterInfo> -> Set -> Set<Hash> unchecked conversion 2013-11-20 04:18:15 +00:00
c86845078c Reverted change in net.i2p.router.Router 2013-11-20 04:06:59 +00:00
89dcceefee Core: type arguments, unused imports 2013-11-20 04:02:28 +00:00
bacce17990 Router: type arguments, unused imports 2013-11-20 02:46:24 +00:00
e61e950713 update patch / update debian changelog 2013-11-20 00:50:39 +00:00
244209d3b7 Translation updates, addition of Japanese language
-28
2013-11-19 23:59:46 +00:00
zzz
dbe0a8240e Translations:
- Add support for country variants (ticket #1133)
  - Refactor data in ConfigUIHelper
Config files: Allow empty values
2013-11-18 23:18:46 +00:00
zzz
7e3e08532f more static atomics 2013-11-17 15:03:10 +00:00
zzz
1d4190734d Findbugs all over
- volatile -> atomic
 - unused code and fields
 - closing streams
 - hashCode / equals
 - known non-null
 - Number.valueOf
 - new String
 Still avoiding SAM, BOB, SusiMail
2013-11-16 13:22:05 +00:00
zzz
96cf1d60c2 * Jetty: Fix eepsite and webapp cache control directives.
Eepsite fix for new installs only.
  Fix i2psnark BasicServlet javadoc about param prefix.
  (ticket #1128)
2013-11-15 18:51:14 +00:00
3aa33378c1 i2prouter: s/3\.5\.20/3.5.22/g 2013-11-15 01:02:37 +00:00
747bd0c5a3 Update Java Service Wrapper to v3.5.22
- Windows: Self-compiled with VS2010 in Windows 7. The icon has been
  changed from Tanuki's default to Itoopie.
- Linux ARMv6: Compiled on a RaspberryPi using gcc 4.6.3-14+rpi1,
  Icedtea6 6b27-1.12.5-1+rpi1 and stripped
- All other binaries are from the "community edition" deltapack offered by
  Tanuki.
2013-11-15 01:01:49 +00:00
zzz
ea7b42810f * InboundMessageDistributor:
- Put garlicked DSM messages in the InNetMessagePool instead of handling directly,
     so the IterativeSearchJob will see the response and declare success.
     Only affected LS lookups as we do not request encrypted replies for RI lookups.
     Similar to the fix for verifies 6dc5bed94321ae2b290cfe351511d18465e08f91
     This bug was causing initial lookups to fail but subsequent ones to succeed.
     Broken since 0.9.7 when encrypted replies was introduced.
     Ticket #1125
2013-11-14 17:39:31 +00:00
zzz
19022baa27 log tweaks, final 2013-11-14 17:36:57 +00:00
e8248f5005 volatile 2013-11-14 15:18:46 +00:00
f8178b7165 ticket #1125: revert previous change as it is not relevant
to test failure
2013-11-13 11:43:24 +00:00
79b5d9748d patch refresh 2013-11-13 01:03:19 +00:00
zzz
b53ed94e8f Findbugs:
- Fix several 'increment of volatile is not atomic' all over
    Remaining: UDP PeerState.java, to be checked in separately
  - Comment out all of unused MessageStateMonitor
2013-11-12 19:28:23 +00:00
zzz
df84a2fcd0 save server status text to return to user 2013-11-12 19:19:21 +00:00
25e7dea370 merge of '4f6d64a50c7c5c27682914984831fc581724659d'
and 'e5def490e4eba793ca0d2bcb739771dcdf8c0242'
2013-11-11 23:49:02 +00:00
90919ebf6b Make ObjectCounter Serializable 2013-11-11 23:48:15 +00:00
zzz
76078deb3f handle numeric private value in metainfo 2013-11-11 23:24:14 +00:00
1b95a03d2e merge of '3a7591d75dacb165b1b1d26c6bdd94184076fb03'
and 'ba02b6daf2d660339ff05cfe0479344391e6e34f'
2013-11-10 23:27:39 +00:00
108039de08 partial revert of 6df9f4e154d148867ee158cbe9e9acf3fb73d680 2013-11-10 23:00:57 +00:00
addd2e6d6a merge of '3f85581f65aedde0f96729d197aaab223174f2e4'
and '6df9f4e154d148867ee158cbe9e9acf3fb73d680'
2013-11-10 22:22:10 +00:00
5c38d5a6c9 Findbugs: More findbugs fixes. Including but not limited to: null check fixes and some synchronization 2013-11-10 22:20:13 +00:00
zzz
69489dd19e use DataHelper.skip() in a few more places 2013-11-10 22:20:06 +00:00
zzz
3fce0e8e45 xlattice findbugs 2013-11-10 22:19:45 +00:00
35fb332c2c moar test cases 2013-11-10 21:13:42 +00:00
zzz
1b5309be05 junit test for new DataHelper.skip() 2013-11-10 20:42:24 +00:00
zzz
d2a1025b3f about 20 findbugs fixes all over 2013-11-10 20:07:46 +00:00
0a8f79f0e3 Findbugs: A stab at squashing some issues across the board. Probably more to follow. 2013-11-10 19:04:57 +00:00
zzz
18e4c2ac63 log tweak 2013-11-10 15:34:44 +00:00
zzz
90c2e08489 Streaming:
- Fix uncaught exception when log level = WARN, broken in -23
2013-11-10 15:32:54 +00:00
zzz
598ef67c4e Tunnel fragments:
- more checks, don't allow fragment #0 in follow-on fragment
  - Set message ID in constructor
2013-11-10 15:27:28 +00:00
zzz
1b9d870b91 i2psnark: Don't announce more than torrent size as downloaded amount 2013-11-10 15:20:07 +00:00
zzz
68f67b7c8e UPnP:
(ticket #1123)
 - Add new config i2np.upnp.ignore to specify UDNs of ignored devices
 - Add display of ignored devices on /peers
2013-11-10 15:17:42 +00:00
d2f0c251c0 use four digit umask in wrapper.config
According to http://wrapper.tanukisoftware.com/doc/english/prop-umask.html the
umask is a four digit number.
2013-11-09 16:19:33 +00:00
zzz
2b2f34b3f1 A better killyourtv.i2p icon
New icon from FatCow, licensed as specified in our docs.
   ref: http://zzz.i2p/topics/1492
2013-11-08 18:28:35 +00:00
zzz
4e680479da Home page: replace all default eepsite icons.
New icons from FatCow, licensed as specified in our docs.
   ref: http://zzz.i2p/topics/1492
2013-11-08 15:26:32 +00:00
zzz
d1b93e0705 DeliveryInstructions:
- Comment out unused encryption fields to save space
  - New static immutable LOCAL instruction to reduce object churn
2013-11-08 14:39:43 +00:00
zzz
4382def62f log tweak 2013-11-08 14:35:28 +00:00
zzz
952a56c537 JobQueue: Log a warning if a job is scheduled too far in the future,
to catch bugs like the one in -7 where requeue() is called
          with an absolute time instead of a delay
2013-11-08 14:34:33 +00:00
zzz
67aead214b Tunnel Endpoints:
- Reject type 3 (undefined) delivery instructions at both OBEP and IBEP,
     would be treated as LOCAL
   - Reject type 0 (LOCAL) delivery instructions at OBEP, no current usage,
     would cause NPE if handled
2013-11-08 14:31:14 +00:00
zzz
50f45a50a7 minor optimization 2013-11-08 14:24:06 +00:00
6b326c3705 merge of '15e16e2fd4c5be75a63b28616b413a8d1e13e1d6'
and '2449ac4142097e34b7ad4c4c4cb16c163a786a16'
2013-11-07 20:39:59 +00:00
919ec3af01 work on failing JUnit test 2013-11-07 20:38:52 +00:00
ca5a301a4f i2prouter: create i2p.dir.config with umask from wrapper.config 2013-11-07 19:56:01 +00:00
zzz
ae76a6ee1a findbugs correctness fixes, all over the place 2013-11-07 19:20:25 +00:00
zzz
5cbecb3599 log IP change in event log 2013-11-07 13:13:21 +00:00
zzz
5a34e1de4f * NetDB: Fix RI publish interval, broken in -7 2013-11-07 12:31:46 +00:00
zzz
c810694e07 * i2psnark: Fix file links, broken in -12 (ticket #1114) 2013-11-07 12:29:05 +00:00
zzz
ca866d48e6 * Logging: Track duplicates across flush interval (ticket #1110) 2013-11-07 12:23:37 +00:00
f1e77499e2 allow webapps.config to be 'preseeded' with values 2013-11-04 22:05:22 +00:00
zzz
9007db1485 Expire wasUnreachable entries, so inbound tunnel build failures don't escalate
and the peer doesn't have a severe penalty in the CapacityCalculator forever.
This may fix the tunnel build problems that started in -10. Or not.
2013-11-03 15:26:21 +00:00
zzz
85c998e500 HTTP proxy: Fix addressbook name on redirect page 2013-11-03 15:04:37 +00:00
zzz
8296f8229e + * NetDB: Allow store of leaseset as long as one lease has not expired 2013-11-03 15:01:31 +00:00
zzz
059ae3a80e - Add network status to event log 2013-11-03 15:00:00 +00:00
67e242c441 Debian patch refresh and readme file update 2013-11-02 17:31:31 +00:00
zzz
e23f3b4875 comments 2013-11-02 14:10:06 +00:00
zzz
06ea9af733 i2psnark: Log name of offending file causing IOException (ticket #1099) 2013-11-02 14:09:00 +00:00
zzz
884818f518 log tweaks, generics 2013-11-02 13:58:12 +00:00
zzz
3f39bd0f7b remove unused static log 2013-11-02 13:53:42 +00:00
48cce6435b routerconsole war dies with .jsp files in a subdir 2013-11-01 11:00:37 +00:00
zzz
777e08c8b6 * Transport: Fix GeoIPv6 (ticket #1096)
due to int/long problem, they were being corrupted
   and then looked up as IPv4
2013-11-01 01:44:29 +00:00
zzz
8c4b0b7c00 merge of '0af9bde8ae97c3b08f2c934236532121ce135817'
and 'b324a96172089b549e53fb1c0c2a01807fe64699'
2013-10-31 21:30:02 +00:00
zzz
dae8b25374 Transports:
- Increase threshold for idle timeout reduction from 33% to 60%.
   This was reduced from 75% to 33% in -10 and it caused significant
   tunnel build problems, for reasons that aren't entirely clear.
 - Don't change the SSU idle timeout quicker when firewalled.
 - log tweaks
2013-10-31 21:27:26 +00:00
2ae293444e Split routerconsole help into several files (no frontend change)
The old full-page translations of help.jsp are deprecated. The help text will
be tagged for translation on Transifex.
2013-10-31 21:22:24 +00:00
zzz
0f11d3566a log tweaks 2013-10-31 21:15:09 +00:00
zzz
fa70d439c3 minor optimization 2013-10-31 21:08:02 +00:00
zzz
0010581405 TunnelPoolSettings:
- Make dest hash final
 - Ensure allowZeroHop is always true for exploratory
2013-10-31 21:07:11 +00:00
zzz
1d659e4f8a i2psnark: Always verify file lengths at startup (ticket #1099) 2013-10-31 21:02:59 +00:00
509f00c5e2 Override toString() 2013-10-30 18:09:40 +00:00
aeb3241abb * i2psnark: Start torrents by default (ticket #1072) 2013-10-29 23:05:50 +00:00
zzz
8909df3c88 * i2psnark: Fix start and start-all buttons on text-mode browsers
and Opera (ticket #1093)
2013-10-29 21:49:20 +00:00
zzz
1cffcae36b merge of '2c288e0ac5d4a6039b3f08e6bbae9439bb038955'
and 'fa8975b2dbcb60d5f181bc21fc1245d5f82baef0'
2013-10-29 21:04:40 +00:00
zzz
d2ee5b96ad Log tweaks and minor cleanups, -15 2013-10-29 21:03:20 +00:00
zzz
0506a5915b * Tunnels:
- Build a new exploratory fallback tunnel in the BuildExecutor
     loop if we run out.
   - Don't use closest expl. tunnel as the paired tunnel for a build,
     use a random one instead (partially back out change from -12)
   - Log tweaks
2013-10-29 21:01:53 +00:00
zzz
91ef3fd0bc * InboundMessageDistributor:
- Don't discard an encrypted DSRM received
     down a tunnel, just strip the hashes like we do for unencrypted
   - Send a store of our own encrypted LS received down a tunnel to
     the InNetMessagePool so the FloodfillVerifyStoreJob will see it.
 * NetDB: Fix LS store verifies with encrypted replies
   by storing the tagset with the correct SKM for the inbound tunnel used.
   Broken since 0.9.7 when it was introduced.
2013-10-29 20:57:00 +00:00
79f5484f87 Fix history. 2013-10-29 20:38:32 +00:00
6afd2c4b97 * Adding no.i2p registrar 2013-10-29 00:05:06 +00:00
zzz
06b09f89de add SU3File bulksign CLI 2013-10-28 23:22:17 +00:00
zzz
bd0eee6aa9 * configstats: Page will now always reflect results of a previous
change, by querying the config instead of StatSummarizer to
   determine if a stat is graphed.
  - Don't append to a string in a loop
  - parseConfig() return a Set instead of List to avoid O(n**2) behavior
    when deteriming config changes
2013-10-28 21:48:02 +00:00
5bc13c16dc merge of '40e39576b76cc1261e0eda2c63a052544021f2e3' and '81c0ce21efaae02bbc2b5d3ce4e25b2d315dc2eb' 2013-10-28 20:09:57 +00:00
626daeb86e * I2PTunnel: Enable persistent keying for SOCKS tunnels (ticket #1088) 2013-10-28 19:15:46 +00:00
zzz
a92913da4c * Streaming:
- Ensure minimum randomized initial conn throttle period
   - Change order of throttle checks again
   - Don't continue throttle checks if throttled
2013-10-28 17:59:50 +00:00
zzz
f0f363e8c3 * Streaming: Fix instantiation failure with blacklist entries,
caused by bad fix for ticket #1070
2013-10-27 17:09:29 +00:00
zzz
7839c0fec3 * Tunnels:
- Don't use fallback expl. tunnels as the paired tunnel
     for a client tunnel build.
     This will cause more client tunnel breakage but it's
     really bad to use a zero-hop for this.
   - Fix selection of an expl. tunnel close to a hash
   - Don't update build generation stat if the generation failed
   - log tweaks
2013-10-26 20:52:56 +00:00
zzz
4d24d65c1f * Profiles: Ensure we select random peers even before the first reorganization -
we were picking the not-failing peers in-order for early expl. tunnel builds
2013-10-26 20:47:41 +00:00
zzz
ddf761b1f8 * Streaming: Randomize end of first conn limit period
to prevent correlation
2013-10-26 20:45:30 +00:00
zzz
2814fe75b1 sort custom options 2013-10-26 20:44:19 +00:00
zzz
7316c82ef3 * i2psnark: Display base name, not torrent file name (ticket #985) 2013-10-26 20:42:16 +00:00
zzz
e04646bd37 finals 2013-10-26 14:21:53 +00:00
zzz
8f8022347d * I2PTunnel HTTPServer:
New POST limiter
2013-10-26 14:21:26 +00:00
acc0ab66a3 My RSA 4096 pubkey for update signing 2013-10-26 11:25:07 +00:00
zzz
5a6acf1d85 * Router: Only log pingfile error once (ticket #1086) 2013-10-25 19:55:09 +00:00
zzz
ca45194c30 * Streaming:
- Check blacklist/whitelist before connection limits, so
     a blacklisted peer does not increment the counters
   - Don't increment total throttle if peer is throttled
   - Fix blacklist NPE after config change (ticket #1070)
2013-10-25 14:09:02 +00:00
zzz
102506ebe8 * Transports: Reduce connection idle time sooner 2013-10-25 14:05:50 +00:00
zzz
d06f1c4a30 /confighome: Remove config when restoring default so user will again see changes from updates 2013-10-24 21:46:03 +00:00
zzz
c732c1c038 I2PTunnel: Catch unchecked exceptions in server accept loop (ticket #1070) 2013-10-24 20:56:37 +00:00
zzz
4aa1bba575 * NetDB:
- We don't verify RI stores any more, so save RI-last-published time when we store it.
2013-10-24 20:54:21 +00:00
zzz
9d3925eb20 * i2psnark:
- Drop incoming connections on HTTP port
   - Define port 6881 in one place
   - Don't let random DHT port be 6881
   - Exception tweak
2013-10-24 20:52:37 +00:00
zzz
80fdf4e917 * I2PTunnel - fix anonymity characterization in dropdowns
(2 hops is not high anonymity)
2013-10-24 19:18:53 +00:00
zzz
35a86e603b * I2PTunnel standard, HTTP, and IRC servers:
Route connections to specific targets based on incoming I2P port
   with custom option targetForPort.xxxx=myserver:yyyy
   This allows multiple services on a single server tunnel (ticket #1066)
2013-10-24 11:38:28 +00:00
zzz
8f7b31aed3 * I2PTunnel standard and IRC clients:
- Allow host:port targets; set defaults in i2ptunnel.config (ticket #1066)
   - Don't fail start if hostname is unresolvable; retry at connect time (ticket #946)
   - Output IRC message on connect fail
   - Update target list on-the-fly when configuration changes
2013-10-23 20:20:54 +00:00
zzz
0f5a0b6b1b * NetDB:
- Increase RI publish interval to reduce the connection load on ffs
   - Save RI-last-published time; check it before publishing
   - Minor cleanups
2013-10-23 14:56:27 +00:00
zzz
4cf3906ed2 * Home page:
- Add salt.i2p. Icon from efkt, free to use.
   - Change icon for stats.i2p. Icon from Fat Cow, see license info in LICENSES.txt
2013-10-23 12:41:36 +00:00
zzz
57875586cf reduce same-country bonus, less countries 2013-10-19 22:10:03 +00:00
zzz
ad8ec011d0 more transport categories 2013-10-19 22:09:23 +00:00
zzz
0d93b86a56 sfv mime type 2013-10-19 22:09:07 +00:00
zzz
63712002e2 merge of '4eee3780cfb882747ad68e39ac08b721f91c48a7'
and 'cca89ae05036ab7a2fe0080fdd1cfac19968246a'
2013-10-19 21:27:59 +00:00
zzz
67af1a17c1 - Don't display UPnP info on peers page in Android
to prevent crash
2013-10-19 21:26:23 +00:00
zzz
9cac546547 add IPv6 categories to /netdb transport chart 2013-10-19 16:37:13 +00:00
zzz
3ffb321f46 * NetDB: Reinstate ExpireRoutersJob 2013-10-19 14:51:11 +00:00
zzz
14ea6d8d0a delay multiple ExploreJobs slightly 2013-10-19 14:47:27 +00:00
zzz
8e0dbf31ba * NetDB (ticket #1076)
- Reduce flood redundancy from 4 to 3
   - Reduce min part. tunnels for ff from 100 to 50
2013-10-19 14:45:52 +00:00
zzz
5187bf1eae * I2PTunnelHTTPServer: Start timer before reading the first line (ticket #1071) 2013-10-19 14:40:34 +00:00
zzz
99471d8e1b css tweak to fix i2ptunnel ssl box layout on firefox 2013-10-19 14:37:28 +00:00
zzz
012e999354 fix unit tests broken by previous checkin 2013-10-18 19:58:39 +00:00
zzz
bdd9900d0d * OutNetMessage: Remove setters, make fields final 2013-10-18 18:42:48 +00:00
zzz
c71b485083 mark ipv6 only as experimental on /confignet 2013-10-18 18:38:39 +00:00
zzz
a78d34ab4b * I2PTunnel SSL cleanup, log SSL exceptions as errors to help find cert problems 2013-10-18 18:37:25 +00:00
zzz
255ebe7efb * Streaming: Throw IOE if socket is closed (ticket #1077),
never return null from stream getters
2013-10-17 13:39:00 +00:00
zzz
5f7a761e42 * I2CP: Move SSL client socket code to util,
move cert location to certificates/i2cp.
 * I2PTunnel: Support SSL for connection to local server
   for Standard, HTTP, and IRC server tunnels.
   Put server cert in certificates/i2ptunnel if necessary.
2013-10-17 13:22:17 +00:00
zzz
09548358fa increase translate initial map size, clear on exit 2013-10-17 11:17:58 +00:00
zzz
df381c37ff 3gp mime type 2013-10-17 11:15:20 +00:00
31e96b416d Update Trac links: s|http://trac\.i2p2\.de|https://trac.i2p2.de|g 2013-10-16 23:12:11 +00:00
53b0f7b579 french updates 2013-10-16 23:11:06 +00:00
zzz
45deaa3a87 * open4you icon and text
from hosting@mail.i2p
   image free to use
2013-10-14 20:06:57 +00:00
zzz
0c8eabcdf6 merge of '2bb222d33ec817b78fcf506c32da44d10b1eff3b'
and '59e86e3176465259a67927b042c1307cd0a94aa4'
2013-10-14 17:10:55 +00:00
zzz
f9571740ae address check cleanup 2013-10-14 17:02:08 +00:00
zzz
eb2af2b5fd * ClientManager: Remove setters, make all fields final 2013-10-14 17:01:32 +00:00
zzz
ded00300b4 javadoc fixes 2013-10-14 17:00:14 +00:00
zzz
811819af69 * Tests:
- Fix LogSettingsTest broken by recent LogManager changes
   - Remove empty LogSettings.java
2013-10-14 16:58:50 +00:00
1804c852bb French language translation updates from Transifex 2013-10-14 15:43:39 +00:00
zzz
3ec602865d * Translations: Move country names to a new resource bundle 2013-10-14 15:29:12 +00:00
zzz
0c0a25b038 merge of 'ad0ab5020bb253c5233ac2f036c0cf4f40001d51'
and 'bc7c0fa32e955a7d8185456815652d4baab500ae'
2013-10-13 19:38:48 +00:00
zzz
208192f445 * I2CP: Fix bug in handling external I2CP clients, introduced in -2
by the immutable destination patch
2013-10-13 19:33:04 +00:00
d0f635e30c ticket #1062 - count duplicate packets towards RTT if we have
never sampled it
2013-10-13 17:05:59 +00:00
zzz
20b2f7dcb1 fix date, restore tunnel length changed in previous checkin 2013-10-13 12:03:57 +00:00
zzz
cf66951818 cleanup after prop, history for prop, -2 2013-10-13 11:55:23 +00:00
zzz
c6f41cc8fa crypto cleanup 2013-10-13 11:53:43 +00:00
zzz
45a579403a propagate from branch 'i2p.i2p.zzz.test2' (head 5c1b78bd78845b0c8b90fbb60412c68e7dc4f3e6)
to branch 'i2p.i2p' (head 8bdc25c8e6f40491f20b533d94eacab012adba35)
2013-10-13 11:48:12 +00:00
zzz
74a57abfb4 Streaming:
- Make I2PSocketFull.close() nonblocking; it will now cause any user-side
     writes blocked in I/O (Connection.packetSendChoke()) to throw
     an exception (tickets #629, #1041)
   - Don't ignore InterruptedExceptions; throw InterruptedIOException
   - Back out static disconnect exception
   - MessageInputStream locking fixes
   - Cleanups
 I2PSnark:
   - Close socket before closing output stream to avoid blocking in
     Peer.disconnect(), and prevent Peer.disconnect() loop
2013-10-12 17:39:49 +00:00
zzz
380783c1ba Snark DHT:
- Combine getPeers and announce into a single method, as we must announce to
     the closest from the getPeers, not the closest from the kbuckets
   - Stop getPeers when nothing closer is found
2013-10-09 21:09:34 +00:00
c8843a736d make _ackSinceCongestion atomic 2013-10-09 14:08:44 +00:00
e69fefda62 cleanup: remove boolean parameter that is always true 2013-10-09 14:06:16 +00:00
513da3b743 cleanup: remove no-op invocation 2013-10-09 14:04:34 +00:00
zzz
7513d42e9e Snark DHT:
- Increase dest lookup and search timeouts
   - Increase max search depth
   - Loop tracker client faster when in magnet mode
   - Loop tracker client faster if DHT announce fails
   - Don't return an empty peers list if we only know about the requestor
   - volatiles, log tweaks
   - Major fixes of getPeers() to follow
2013-10-09 13:06:47 +00:00
zzz
8872437caf Another snark refactoring bug, log tweaks 2013-10-08 01:17:36 +00:00
712c77a4b6 add my "su3" certificate 2013-10-08 00:17:41 +00:00
zzz
38cef14cf4 synch cleanup thx zab 2013-10-07 19:26:33 +00:00
zzz
05c3b0d391 Fix bug causing writes past end of file, introduced in refactoring, not in trunk 2013-10-07 15:47:44 +00:00
zzz
854090e9d8 - Console: Set per-connector acceptors back to 1, Jetty default changed to 2? 2013-10-07 14:51:49 +00:00
zzz
f035815f7a - Don't truncate initial news header if it appears in summary bar
(unlikely as we don't show the "hide news" button for initial news)
     Also prevent string IOOBE
2013-10-07 14:45:11 +00:00
zzz
df4302dda0 * Update:
- Thread news fetcher so it doesn't clog the scheduler
2013-10-07 14:43:18 +00:00
zzz
31f117e74c * Data Structures:
- Make Destination and RouterIdentity keys and cert immutable
   - Add Destination cache
2013-10-07 13:04:01 +00:00
zzz
890f40b2ac more log tweaks 2013-10-07 12:11:42 +00:00
zzz
3ac8083faf log tweaks 2013-10-07 12:10:10 +00:00
zzz
249319f76f * Disallow 2001:db8::/32 (RFC 3849) addresses 2013-10-07 11:22:54 +00:00
zzz
efe87060b4 add missing start.jar thx kytv 2013-10-06 22:55:59 +00:00
zzz
afe3ff57cf history for prop, -1 2013-10-06 17:13:29 +00:00
zzz
6bb1505d3b propagate from branch 'i2p.i2p.zzz.ecdsa' (head 1dd9522809f801ca68dd331cfba1c5c914dc1481)
to branch 'i2p.i2p' (head a1c2ba4663abc7470f427c6a14854707d58b486a)


 Prop from branch i2p.i2p.zzz.ecdsa:
 * Build:
   - Generate su3 file in release target
   - Add zzz's new RSA 4096 pubkey cert for updates
   - Fix checkcerts.sh
 * Console: Move advanced setting to HelperBase
 * DSAEngine changes:
   - Implement raw sign/verify for other SigTypes
   - Add sign/verify methods using Java keys
 * ECDSA Support:
   - Add ECConstants which looks for named curves and falls back to
     explicitly defining the curves
   - Add support for ECDSA to SigType, DSAEngine and KeyGenerator
   - Attempt to add BC as a Provider
   - genSpec: fallback to BC provider
 * EepGet:
   - Fix non-proxied PartialEepGet
   - Prevent non-proxied eepget for an I2P host
 * KeyGenerator changes:
   - Generate key pairs for all supported SigTypes
   - KeyPairGen: Catch ProviderException, fallback to BC provider
   - Add KeyGenerator main() tests
 * KeyRing and DirKeyRing added: simple backend for storing X.509 certs
 * KeyStoreUtil added:
   - Consolidate KeyStore code from SSLEepGet, I2CPSSLSocketFactory,
     SSLClientListenerRunner, and RouterConsoleRunner into new
     KeyStoreUtil and CertUtil classes in net.i2p.crypto (ticket #744)
   - Change default to RSA 2048 (ticket #1017)
   - Set file modes on written keys
   - Overwrite check in createKeys()
   - New getCert(), getKey()
   - Extend keygen max wait
   - Read back private key to verify after keygen
   - Validate cert after reading from file
   - Validate CN in cert
   - Specify cert signature algorithm when generating keys
 * NativeBigInteger: Tweak to prevent early context instantiation
 * RSA support added: constants, parameters, sig types, support in DSAEngine, KeyGenerator, SigUtil
 * SHA1Hash: Add no-arg constructor
 * SigType changes:
   - Add parameters (curve specs) to SigTypes
   - Add getHashInstance()
   - Add RSA, fix ECDSA
   - Renumber, rename, comment out types that are too short.
 * SigUtil added:
   - Converters from Java formats (ASN.1, X.509, PKCS#8)
     to I2P formats for Signatures and SigningKeys
   - Move ASN.1 converter from DSAEngine to SigUtil, generalize
     for variable length, add support for longer sequences,
     add more sanity checks, add more exceptions
   - Move I2P-to-Java DSA key conversion from DSAEngine to SigUtil
   - Add Java-to-I2P DSA key conversion
   - Add Java key import
   - New split() and combine() methods
 * SSLEepGet: Move all certificates to certificates/ssl, in preparation
   for other certificate uses by SU3File
 * SU3File changes:
   - Support all SigTypes
   - Implement keygen
   - Readahead to get sigtype on verify, as we need the hash type
   - Enum for content type
   - Add unknown content type, make default
   - Fix NPE if private key not found or sign fails
   - Store generated keys in keystore, and get private key from keystore
     for signing, in Java format
   - Use Java keys to sign and verify so we don't
     lose the key parameters in the conversion to I2P keys
   - Type checking of Java private key vs. type when signing
   - Use certs instead of public keys for verification
   - Fix arg processing
   - Improve validate-without-extract
   - New extract command
   - Change static fields to avoid early context init
   - Reduce PRNG buffer size for faster signing
 * Update: Preliminary work for su3 router updates:
   - New ROUTER_SIGNED_SU3 UpdateType
   - Add support for torrent and HTTP
   - Refactor UpdateRunners to return actual UpdateType
   - Deal with signed/su3 conflicts
   - Verify and extract su3 files.
   - Stub out support for clearnet su3 updating
   - New config for proxying news, separate from proxying update
   - PartialEepGet and SSLEepGet tweaks to support clearnet update
   - Remove proxy, key, and url config from /configupdate
   - More URI checks in UpdateRunner
   - Add https support for news fetch
   - Add su3 mime type
   - Reset found version in update loop so we don't fetch from
     the next host too.
   - Prevent NPE on version after SSL fetch
2013-10-06 17:09:56 +00:00
zzz
a1c8e3eae3 reduce search limit 2013-10-06 17:08:51 +00:00
zzz
aa171bbaa6 less scary message 2013-10-06 17:07:56 +00:00
zzz
845b70fe0c add missing sidebar 2013-10-06 17:07:27 +00:00
zzz
82b1eb7c18 * Update:
- Check proxy setting before calling runner for method
2013-10-06 16:39:30 +00:00
zzz
4bd27ea1d3 * Update:
- Reset found version in update loop so we don't fetch from
     the next host too.
   - Prevent NPE on version after SSL fetch
   - Fix su3 version check
 * EepGet:
   - Fix non-proxied PartialEepGet
   - Prevent non-proxied eepget for an I2P host
   - Fail if no hostname in URL
2013-10-06 16:02:33 +00:00
zzz
d0f6be3161 fix cert dir 2013-10-06 01:15:40 +00:00
zzz
7764257e41 more synching for coherence 2013-10-06 00:43:12 +00:00
zzz
af0e72ac4d * SSU: More efficient ImboundMessageState
(reduce ByteArray[] size where possible)
2013-10-05 18:38:55 +00:00
zzz
0534440695 - Treat 6bone 3ffe::/16 as local 2013-10-05 14:04:40 +00:00
zzz
c2fa2d0c5b * Logging:
- Require strict match of class name component
   - parseLimits() cleanup
2013-10-05 13:07:33 +00:00
zzz
887017b54c * Transport: Treat more IPs as local
25/8 - Hamachi (moved from 5/8 Nov. 2012)
   2620:9b::/32 - Hamachi
   0::/8 - Includes IPv4 compatibility addresses ::xxxx:xxxx
2013-10-05 12:56:39 +00:00
zzz
3a4f5a2f1b jetty 7.6.13.v20130916 2013-10-04 23:43:38 +00:00
zzz
3fb4643742 - Add https support for news fetch 2013-10-04 20:28:43 +00:00
zzz
a5e3bc9b85 Update:
- New config for proxying news, separate from proxying update
 - Default logic cleanup
2013-10-04 20:21:54 +00:00
zzz
8a0c3f10f4 Update:
- Stub out support for clearnet su3 updating
 - PartialEepGet and SSLEepGet tweaks to support clearnet update
 - Remove proxy, key, and url config from /configupdate
 - More URI checks in UpdateRunner
 - Add su3 mime type
 - Move advanced setting to HelperBase
2013-10-04 19:06:39 +00:00
zzz
e1d808a284 add msg when stopping tunnel on idle 2013-10-04 16:50:37 +00:00
zzz
e755051ebe * i2psnark:
- Add torrent auto-stop support; enable for update file
   - Add tunnel auto-close when no torrents are running
   - Log/msg tweaks on add/create failures
2013-10-04 16:40:14 +00:00
zzz
d7c3ffa4de 0.9.8.1 2013-10-02 14:14:18 +00:00
zzz
cba3b249dd * Startup: Fix rekeying on Windows (tickets #1056, 1057) 2013-10-01 14:22:17 +00:00
zzz
32f250003e NBI: Tweak to prevent early context instantiation 2013-09-30 19:25:21 +00:00
zzz
e004b0e6e9 Build:
- Generate su3 file in release target
  - Add my new RSA 4096 pubkey cert for updates
  - Fix checkcerts.sh
2013-09-30 19:21:25 +00:00
zzz
a5c5917a5f add key length to RSA SigType names 2013-09-30 17:13:35 +00:00
cbd24946b6 refresh patch, en po 2013-09-30 16:33:01 +00:00
zzz
9b4842931a 0.9.8 2013-09-30 12:57:13 +00:00
zzz
e04cf132cc HTTPServer: Log tweak for better diagnosis of delays 2013-09-29 16:40:50 +00:00
zzz
7d237b4cf6 Watchdog: Format messages better 2013-09-29 16:38:57 +00:00
zzz
3cbfd09722 Console: Tag strings on /jobs (ticket #969) 2013-09-29 16:36:32 +00:00
zzz
0ae774dd68 bump for review 2013-09-28 12:00:20 +00:00
zzz
2884df873e * Streaming: Major rework of connection disconnect process. Tickets 1040-1042.
- Prevent multiple calls or reentrancy in disconnect() (ticket #1041)
   - Implement processing of close to skip TIME-WAIT, and
     wait for all packets to be acked (not just the CLOSE) before
     doing so, if possible (ticket #1042)
   - Don't call disconnect() or disconnectComplete() from I2PSocketFull.destroy()
     so retransmissions and acks can still happen (removes some close loops)
   - Don't call disconnect() until we have both sent and received a CLOSE (ticket #1040)
   - Don't reset the connection from CPH just because we sent a CLOSE
     and it was acked (ticket #1040)
   - Ack packets even if we sent a CLOSE  (ticket #1040)
   - Retransmit CLOSE if not acked (ticket #1040)
   - Send received packets to the MessageInputStream even if we haven't received a SYN
   - Don't call MessageInputStream.messageReceived() for ack-only packets, that was pointless
   - Don't send a RESET after timeout of an outbound connection
   - Work around bugs on other end by limiting retransmission of CLOSE packets
   - Make _isInbound final
   - More cleanups, javadocs, log tweaks
2013-09-28 11:47:47 +00:00
d4d1424c4f update debian changelog 2013-09-27 20:15:02 +00:00
33827f9aaf switch from elipsis to three "."s 2013-09-27 20:14:36 +00:00
zzz
30a666c833 Streaming: Don't queue a message for an unknown connection on the SYN queue
if it has a send ID set, it must be for a recently closed connection
2013-09-27 01:50:38 +00:00
zzz
9a00621fa4 log tweaks 2013-09-27 01:48:12 +00:00
46bc479884 update geoip based on Maxmind GeoLite Country database from 2013-09-03 2013-09-26 21:47:53 +00:00
6ab6abf4dd French, German, Russian, and Swedish translation updates from Transifex 2013-09-26 21:47:06 +00:00
zzz
0c6a9ff2a0 proof delimiter tweak 2013-09-25 23:13:42 +00:00
zzz
aefc5b5317 javadoc fix 2013-09-25 17:42:37 +00:00
zzz
25682fdea7 log tweaks, javadoc 2013-09-25 17:42:13 +00:00
zzz
9318099845 * Streaming:
- Cleanups
   - Remove setCloseReceivedOn(), unused outside Connection
   - OR the isFlagSet parameter instead of multiple calls
   - Remove acked packets from _outboundPackets inside synced iterator
   - Short-circuit _outboundPackets iterator if empty
   - Small optimization if not logging in ConnectionPacketHandler
   - Stub out processing of close ack (ticket #1042)
2013-09-24 16:01:20 +00:00
zzz
fdf38a952d atomic default value cleanup 2013-09-24 14:45:30 +00:00
zzz
fb40ab1f00 * Streaming: Atomics for close/reset send/receive
so we only do things once. (Ticket #1041)
2013-09-24 14:01:48 +00:00
zzz
3499ed7bb0 * Streaming: Consolidate scheduling of DisconnectEvent, and ensure
we only do it once. (Ticket #1041)
2013-09-24 13:22:46 +00:00
zzz
b05906a3c2 SigType: Renumber, comment out all the types that are
too short or for testing. Turn off debug logging.
2013-09-24 12:55:22 +00:00
zzz
61d5f46295 * Streaming: Fix active stream counting so it doesn't count streams
that are closed and in TIME-WAIT state. Also, break out of the
   counting loop as soon as we know the answer. (Ticket #1039)
2013-09-24 12:40:35 +00:00
zzz
9ebfccd8f6 * Console: Add /proof page which can copied to prove you run a router 2013-09-23 16:39:40 +00:00
zzz
4fb3e86e4d Truncate and linkify magnet link in summary bar update message 2013-09-23 12:13:44 +00:00
zzz
837517e94e Update: Verify and extract su3 files.
untested...
2013-09-22 19:19:36 +00:00
zzz
f47ec65b8f Update: Preliminary work for su3 router updates:
- new ROUTER_SIGNED_SU3 UpdateType
   - Add support for torrent and HTTP
   - Refactor UpdateRunners to return actual UpdateType
   - Deal with signed/su3 conflicts
   - unpack/verify stubbed only
2013-09-22 18:03:56 +00:00
zzz
6fede7f524 log tweaks 2013-09-22 14:13:50 +00:00
zzz
bd0c18b2e3 * Console: Implement webapp state detection and stop button for webapps
on /configclients (Ticket #1025)
2013-09-21 16:11:55 +00:00
zzz
fba596c78c geoipv6 Sept 19 2013 from Maxmind 2013-09-21 12:30:06 +00:00
61f2b49022 another extraneous script name 2013-09-20 23:09:27 +00:00
e71a1a5c4d remove extraneous script name 2013-09-20 23:07:11 +00:00
683ce3254f testscripts build target: check shell scripts for validity
(also adding missing shebang lines)
2013-09-20 22:32:05 +00:00
df555731c4 minor script changes
- mbuild.sh: don't require bash
- Slackware/i2p/doinst.sh: add bash shebang
2013-09-20 22:17:48 +00:00
641fc0cae9 fix langbox alignment, bump build number 2013-09-20 21:06:57 +00:00
5ab1d6896a jbigi scripts: look in /usr/local (for *BSD) 2013-09-20 19:39:25 +00:00
zzz
0ae2d92fcd * Update: Support notification of updates that cannot be downloaded
due to "constraints". Add constraint checks for java version,
   router version, configuration, and base permissions. (ticket #1024)
2013-09-20 18:56:54 +00:00
zzz
26c8201e03 spellcheck off 2013-09-20 18:42:51 +00:00
37521c69a2 look for openjdk6 in OpenBSD if v7 isn't available 2013-09-20 18:33:11 +00:00
43383a5b3c changes to fix compilation on OpenBSD 2013-09-20 10:44:56 +00:00
bfea3e4dd6 translation updates from Transifex 2013-09-20 10:43:13 +00:00
35b02a52e1 redirect output of which command to /dev/null 2013-09-20 02:00:41 +00:00
8e3e566915 typo fix 2013-09-20 01:45:09 +00:00
968b9a0304 fix previous check-in 2013-09-20 01:38:20 +00:00
c97f0f3d22 OpenBSD compilation fix: set JAVAC in bundle targets if javac not found and require.gettext is set to true
This solves the following problem which was found on OpenBSD:

bundle:
     [exec] Generating net.i2p.desktopgui.messages_ar ResourceBundle...
     [exec] ERROR - msgfmt failed on locale/messages_ar.po, not updating translations
     [exec] msgfmt: Java compiler not found, try installing gcj or set $JAVAC
     [exec] msgfmt: compilation of Java class failed, please try --verbose or set $JAVAC
     [exec] 9 translated messages.


In OpenBSD 5.4, neither java nor javac are in the PATH.
2013-09-20 01:21:43 +00:00
65b1124d81 various updates to i2prouter
- check status of i2psvc with ldd
- only warn about libiconv in FreeBSD if the package isn't installed. In recent
  versions of FreeBSD, OpenJDK depends on libiconv so it should always be
  available.
2013-09-19 20:56:56 +00:00
zzz
89034e1f9d SU3File:
- Fix arg processing again
   - Change static fields to avoid early context init
   - Reduce PRNG buffer size for faster signing
2013-09-19 15:21:53 +00:00
zzz
9f2fa6a8be fix arg processing 2013-09-19 13:59:39 +00:00
zzz
19cf8787d8 - Allow getRawAlgo() for public keys
- SU3File better arg processing, implement content type arg
   - Type checking of Java private key vs. type when signing
   - Add unknown content type, make default
2013-09-18 16:53:38 +00:00
zzz
a80c34c1df * i2psnark:
- Refactor Storage file data structures
   - Sort files when creating torrents
2013-09-18 15:41:10 +00:00
zzz
ab8900f910 * I2PTunnelHTTPServer: Don't thread a receiver for GET or HEAD 2013-09-18 15:39:12 +00:00
zzz
ce2d0b0e12 - Revert expl. default back to 2 hops, wait for next release
- Eepsite index.html better help on redirects
   - Remove exotrack (again)
2013-09-17 13:53:20 +00:00
zzz
87d98781a9 Read back private key to verify after keygen
Validate cert after reading from file
   Validate CN in cert
   Javadoc fixes
2013-09-16 15:48:54 +00:00
zzz
79dc95dd66 Fix RSA_SHA384
Fix DSAEngine for RSA
   Fix KeyGenerator for RSA
   New split() and combine() methods in SigUtil
   Fix private key conversions for RSA
2013-09-15 16:49:59 +00:00
zzz
c6533202f7 Add RSAConstants
Specify RSA parameters
  Add RSA sig types
  Specify cert signature algorithm when generating keys
  Extend keygen max wait
  Catch NPE if sign fails in SU3File
  Fix signature conversion for RSA
  Fix public key conversion for RSA
2013-09-15 15:12:07 +00:00
zzz
b5dc9bc0ba DSAEngine: Add sign/verify methods using Java keys
SU3File: Use Java keys to sign and verify so we don't
           lose the key parameters in the conversion to I2P keys
2013-09-14 15:53:08 +00:00
zzz
79891c6677 open4you.i2p 2013-09-14 15:28:36 +00:00
zzz
68aa1aea8e stub out RSA 2013-09-13 15:26:38 +00:00
zzz
4ffaf4128e SU3File:
- enum for content type
  - fix NPE if private key not found
  - use certs instead of public keys for verification
  - improve validate-without-extract
  - new extract command
2013-09-13 13:02:37 +00:00
zzz
801ca47a0c add Koblitz curves for testing 2013-09-13 00:49:10 +00:00
zzz
43f5062169 SSLEepGet: Move all certificates to certificates/ssl, in preparation
for other certificate uses by SU3File
2013-09-12 21:47:25 +00:00
zzz
7ab4dd7f4b KeyStoreUtil:
- Overwrite check in createKeys()
  - New getCert(), getKey()
  SU3File:
  - Store generated keys in keystore
  - Get private key for signing from keystore
2013-09-12 20:22:30 +00:00
zzz
71c0104236 Add base algorithm type in prep for RSA 2013-09-12 18:23:28 +00:00
zzz
a608d21571 KeyStore: change keygen default to RSA 2048 (ticket #1017)
fix key length setting
2013-09-12 14:55:16 +00:00
zzz
935ddaa0b2 fix default expiration 2013-09-12 14:41:25 +00:00
zzz
945e7b75fd Crypto - prep for using certificates in SU3File:
Consolidate KeyStore code from SSLEepGet, I2CPSSLSocketFactory,
  SSLClientListenerRunner, and RouterConsoleRunner into new
  KeyStoreUtil and CertUtil classes in net.i2p.crypto (ticket #744)
2013-09-12 14:27:16 +00:00
5e90780590 jbigi/jcpuid build scripts: Look for OpenJDK7 in kFreeBSD (it has landed in Debian testing) 2013-09-11 14:04:58 +00:00
zzz
a8a21ea7ce propagate from branch 'i2p.i2p' (head 6667c4a9f9fcc0705e407006d1933dd31942ffb2)
to branch 'i2p.i2p.zzz.ecdsa' (head bf746450400fc5ffa0e727ed0cd6a3966f6ce51f)
2013-09-10 13:03:40 +00:00
zzz
23444e4b81 * Router: Log new router hash in event log after rekeying 2013-09-10 12:25:24 +00:00
zzz
a3ea1f9429 remove static log 2013-09-10 12:23:45 +00:00
zzz
78d4b6d8a7 - Simple DirKeyRing backend for testing 2013-09-09 19:46:24 +00:00
zzz
3e3399adc6 - Add Java key import to SigUtil
- Import priv key to SU3File in Java encoded format instead of I2P format
  - New KeyRing stub
2013-09-09 00:49:14 +00:00
zzz
1e554dd0fe - Move I2P-to-Java DSA key conversion from DSAEngine to SigUtil
- Add Java-to-I2P DSA key conversion to SigUtil
  - Export keys from SU3File in Java encoded format instead of I2P format
2013-09-08 21:47:48 +00:00
388e7088e1 Updating cert for reseed.info 2013-09-08 16:14:53 +00:00
e65289cd0d Document logCloseLoop() methods 2013-09-08 15:23:09 +00:00
c4d68a8352 minor cleanup 2013-09-08 15:21:25 +00:00
7be0a93251 Use AtomicBoolean to prevent multiple close()-s 2013-09-08 13:18:47 +00:00
175f47293a Ticket #1012 - remove nested locking on close() and
finishInboundEstablishment()
2013-09-08 13:13:14 +00:00
zzz
27936fce04 cache key conversion 2013-09-08 13:06:30 +00:00
592680302f make the logCloseLoop() methods members of the Log class
so they can be used everywhere
2013-09-08 12:55:05 +00:00
zzz
55318cf14b Crypto: Set file modes on written keys; don't overwrite existing files 2013-09-08 11:57:15 +00:00
zzz
83ead0c304 - SU3File: Readahead to get sigtype on verify, as we need the hash type 2013-09-07 20:24:40 +00:00
zzz
38ec55bc72 - DSAEngine: Implement raw ECDSA sign/verify
- SU3File: Implement keygen
2013-09-07 19:37:02 +00:00
zzz
c4f97ed65e - DSAEngine: Start of support for signing hashes with other SigTypes
- KeyGenerator: Measure sign and verify separately in test
 - SU3File: Start to support other SigTypes
 - SigType: Add getHashInstance(), fix hash length for ECDSA_SHA256_P192
 - SHA1Hash: Add no-arg constructor
2013-09-07 18:12:19 +00:00
zzz
78a426e9ac * Crypto: Don't use "short exponent" on faster platforms.
Rebuild router identity if key length doesn't match setting.
   This affects RI and LS encryption keys, and DH and YK.
   Faster = 64 bit with working jbigi, non-ARM, non-GNU (for now)
   Override default with crypto.elGamal.useLongKey=true/false
   LS key is built at client startup (Dest key unused)
   This will churn most of the RIs at the release.
 * SystemVersion: Add isARM()
2013-09-07 13:43:28 +00:00
zzz
928b4bbbe5 - genSpec: fallback to BC provider 2013-09-06 13:53:15 +00:00
zzz
d27c465371 - KeyPairGen: Catch ProviderException, fallback to BC provider 2013-09-06 13:30:47 +00:00
zzz
4d62f63c71 * Start of ECDSA branch:
- Add ECConstants which looks for named curves and falls back to
     explicitly defining the curves
   - Add SigUtil with converters from Java formats (ASN.1, X.509,
     PKCS#8) to I2P formats for Signatures and SigningKeys
   - Move ASN.1 converter from DSAEngine to SigUtil, generalize
     for variable length, add support for longer sequences,
     add more sanity checks, add more exceptions
   - Attempt to add BC as a Provider
   - Add parameters (curve specs) to SigTypes
   - Add support for ECDSA to DSAEngine and KeyGenerator
   - Add KeyGenerator main() tests
   - More javadocs

  All is Java 1.5 compatible but the actual algorithms, curves,
  and other support aren't necessarily present in any JVM.
  Todo: More tests, more fallbacks for various JVMs
2013-09-06 12:04:22 +00:00
zzz
f4039b085a * Crypto: SigType tweaks, prep for parameters, show type in toString()
* NativeBigInteger: Don't use native for negative arguments, which aren't supported in jbigi.c
2013-09-06 11:40:50 +00:00
53ed10cfc8 typo fix (s/lt/le/) 2013-09-04 01:42:12 +00:00
zzz
0859dbe57f * i2ptunnel: Reduce buffer size and use cache in HTTPServer
* Jetty: Increase maxIdleTime
2013-09-04 00:46:43 +00:00
zzz
42bc4bb1f4 reduce log level 2013-09-03 12:13:07 +00:00
zzz
caead8a3a4 consolidate maxMemory() calls 2013-09-03 11:37:36 +00:00
zzz
7394c7997b change pw restart warning to error so people dont miss it 2013-09-03 10:25:18 +00:00
zzz
0298e4ab4c use different sort for floodfill profiles display 2013-09-01 12:12:40 +00:00
zzz
e3a5cdbbc2 deprecate most of LeaseSetKeys 2013-09-01 12:12:05 +00:00
6ae46abac0 fix ticket number 2013-08-31 18:42:07 +00:00
615a5f3c39 update history 2013-08-31 18:40:39 +00:00
6812dc1db8 Ticket #1007 use only non-retransmitted packets in RTT
sampling.  (RFC 6298)
2013-08-31 18:39:29 +00:00
zzz
41595cafce * Addressbook: Don't write to log file on Android (ticket #859) 2013-08-31 15:35:57 +00:00
zzz
d6c4e411be highlight snark table rows on hover 2013-08-31 15:19:00 +00:00
zzz
6ca797ec1f * Console: Display "accepting tunnels" instead of "rejecting tunnels" after 20 minutes (ticket #902) 2013-08-30 12:07:42 +00:00
zzz
8655988c66 * NTCP: Handle race where peer's NTCP address goes away 2013-08-30 12:01:51 +00:00
zzz
de5f2940ce * SSU, confignet: Add support for specifiying multiple addresses 2013-08-30 10:27:22 +00:00
zzz
1933e6239b * SusiDNS: Don't require last subscription to be terminated by newline (ticket #1000) 2013-08-30 10:21:57 +00:00
zzz
8aec1e2eb6 * Addresses: Treat Teredo addresses 2001:0::/32 as local 2013-08-30 10:20:43 +00:00
def30c5903 javadoc update 2013-08-14 20:29:40 +00:00
193f0bbc42 More elegant 2013-08-11 20:21:06 +00:00
b7a3b7bf05 debian: add missing timestamp to changelog 2013-08-11 17:00:26 +00:00
a2bd45fa9b * Translation updates from Transifex
- French, Portugeuse, Russian, Spanish, and Turkish updates from Transifex
   - Start of Romanian translation from Transifex
   - Update English POs for sending to TX
 * Debian: Update changelog
2013-08-11 16:58:19 +00:00
fd297118f9 fix NPE if stats are not enabled 2013-08-11 11:58:51 +00:00
zzz
7171edad24 Jetty 7.6.12.v20130726 2013-08-11 11:28:33 +00:00
zzz
d8466333f3 more snark mime types 2013-08-11 11:26:57 +00:00
zzz
a5e4d586eb dont display jump server msg if we dont know any 2013-08-11 11:26:40 +00:00
28a1c22438 Update Java Service Wrapper to v3.5.20
- Windows: Self-compiled with VS2010 in Windows 7. The icon has been
      changed from Tanuki's default to Itoopie.
    - Linux ARMv6: Compiled on a RaspberryPi using gcc 4.6.3-14+rpi1,
      Icedtea6 6b27-1.12.5-1+rpi1 and stripped
    - All other binaries are from the "community edition" deltapack offered by
      Tanuki.
2013-08-11 01:26:19 +00:00
74e238322d bump version for testing 2013-08-10 21:53:47 +00:00
1f3227409b Reduce initial ack delay to 1000
Rework the logic for acking duplicate packets
2013-08-10 21:03:05 +00:00
afda1da9c3 volatile 2013-08-10 21:00:09 +00:00
zzz
f2857e8f97 bump after prop 2013-08-10 17:16:50 +00:00
zzz
4802b1e2cd propagate from branch 'i2p.i2p.0971' (head 6cb629b61e0177deda1e539b2f85a2473f3af7fb)
to branch 'i2p.i2p' (head 8e86ef70afbbbbdc2db06cec34f17dedd528c7e7)
2013-08-10 17:06:17 +00:00
0539610219 volatile 2013-08-09 21:06:39 +00:00
870ecb847f Updated Eclipse files 2013-08-04 00:02:22 +00:00
8ba493c60e debian: compress package with xz
All currently supported distros support this format.
2013-08-01 23:29:34 +00:00
f3affff5be Atomic 2013-07-31 16:01:26 +00:00
zzz
5941a52a0d * Tunnels: Extend local expiration of IB tunnels, to allow for
more clock skew and not drop valid messages at their destination
2013-07-30 22:10:02 +00:00
zzz
04e6beb43c javadoc, log, comment, and su3file help tweaks 2013-07-30 22:05:46 +00:00
zzz
1284c7ace0 * i2psnark: Increase max piece size to 4 MB (ticket #993) 2013-07-30 21:50:07 +00:00
63414f0348 Override prepareOutbound() in VerifiedEstablishState 2013-07-30 17:13:34 +00:00
c8f22fdfd0 Adding new reseed host. Thanks to isdf! 2013-07-29 23:01:04 +00:00
zzz
7737bf5212 * GeoIPv6: Fix NPE (ticket #992) 2013-07-29 14:02:08 +00:00
zzz
4340f70d72 * Signatures:
- Prep for new signature algorithms; new SigType enum;
     Signature, SigningPublicKey, SigningPrivateKey store type
   - New Hash384 and Hash512 classes
   - Remove length field in SimpleDataStructure
   - New SU3File generator/verifier/extractor
2013-07-29 13:49:05 +00:00
zzz
6dbd8a6d1a add mobi mime type 2013-07-28 13:21:01 +00:00
zzz
076871fe44 * NetDB: Disable RI verifies for now 2013-07-28 13:02:12 +00:00
zzz
be753d7a1a * Addresses: Treat RFC 4193 addresses fc00::/7 as local 2013-07-28 12:52:41 +00:00
zzz
e3f02553fd javadoc 2013-07-28 12:52:10 +00:00
zzz
767ef8c489 add webm mime type 2013-07-28 12:52:00 +00:00
zzz
482787fbc3 * Transports:
- Really fix IPv6-only option
   - Treat RFC 4193 addresses fc00::/7 as local
   - Log tweaks, javadocs
2013-07-26 22:39:35 +00:00
b2d72f90ce merge of '5ad8235a14f2f52799755969e5c877f4f1c159cc'
and 'f5d75b2ebc648c43182d685f30e96242e43caa69'
2013-07-25 20:08:31 +00:00
dd181a90e1 Fix NPE when cancelling PacketLocal's 2013-07-25 20:07:12 +00:00
zzz
19faa352e3 * Transports:
- Prefer IPv6 by default
   - Fix IPv6-only option
   - Don't try NTCP IPv6 addresses unless we have one
   - Fix non-%16 SSU padding in data and session confirmed packets; enable by default
   - Log tweaks
2013-07-25 18:52:45 +00:00
zzz
ffda7f6326 * Tunnels:
- Make expl. default 3 hops  (ticket #966)
   - Allow expl. fallback up to -2 hops
2013-07-25 18:49:22 +00:00
zzz
8ebacf4c10 log tweak 2013-07-25 18:47:47 +00:00
zzz
a02cc25844 UPnP Fix for devices that return base URLs with trailing '/' (ticket #986) 2013-07-24 18:03:50 +00:00
zzz
8aeca5b433 catch NPE in main when no state table available 2013-07-24 14:24:29 +00:00
zzz
7b4855d7cf * UPnP: main() tweaks for debugging 2013-07-24 12:38:15 +00:00
zzz
803d7ff282 * GeoIP: Fix lookups, broken in IPv6 branch 2013-07-24 12:36:36 +00:00
a1c724f866 reduce initialRTO to 9000 2013-07-23 14:18:51 +00:00
96609e9173 change default loglevel for duplicate close()s to INFO 2013-07-23 14:17:26 +00:00
zzz
f5518739e2 javadoc fixes 2013-07-23 00:49:37 +00:00
zzz
e7c8d28b99 * HashComparator:
- Don't pollute Hash cache with hashes
   - cleanups, less object churn
2013-07-22 23:07:37 +00:00
zzz
dff357a658 unit test compile fix 2013-07-22 15:14:58 +00:00
zzz
cc271de7df * BuildReplyHandler:
- Make non-static
   - Don't pollute Hash cache with build response record hashes
   - Use SimpleByteCache
   - cleanups
2013-07-22 14:25:30 +00:00
zzz
a7485ab5a3 * I2CP:
- Oops, must enforce property length limits even when inside router JVM
     as the properties are serialized for signing.
2013-07-21 20:17:42 +00:00
7133736702 Fix more NPEs ticket #984 2013-07-21 19:41:48 +00:00
2313d82369 toclet #984 : fix deadlock introduced in -4 (ticket #972) 2013-07-21 14:54:36 +00:00
zzz
1b42d99e66 * Console: Fix /peers table summary alignment
* I2CP:
   - Don't NPE when loglevel=warn
   - Don't enforce property length limits when inside router JVM
 * I2PSnark: Log uncaught error in ThreadedStarter to router log
 * I2PThread: Log uncaught error to wrapper log
2013-07-21 14:04:27 +00:00
d709f46183 Update unit test 2013-07-20 18:45:19 +00:00
97c1676bcb Rework locking and state management of NTCP connections
trac ticket #972
	up version to -4
2013-07-20 17:37:46 +00:00
zzz
02b92ac3fe fix compile for test 2013-07-20 13:46:50 +00:00
zzz
29eb1d5dc5 fixup after prop; history for prop; -3 2013-07-20 13:41:31 +00:00
zzz
a87fc68cfd propagate from branch 'i2p.i2p.zzz.ipv6' (head 5c147c6e394fae03752dcf497923a90e3f2db529)
to branch 'i2p.i2p' (head 7af6987d5546664f76589afe0cbeeb780f4b5d58)
2013-07-20 12:59:03 +00:00
zzz
bc1cf64df4 remove extra 2013-07-20 12:35:38 +00:00
zzz
b607d7b223 generic 2013-07-20 12:34:24 +00:00
zzz
4e00eaf9a3 checkpo fix; history for prop; -2 2013-07-20 12:25:31 +00:00
zzz
90cc71d14d propagate from branch 'i2p.i2p.zzz.test2' (head d80f8632ef0a2aa350eee9a38ba6a4c56471f5bc)
to branch 'i2p.i2p' (head e8b712c826e44211217f06eb3a4da2703323a42f)
2013-07-20 11:53:41 +00:00
zzz
554a3a6b0e * PRNG:
- Don't delay the refiller if we need more (don't limit max output)
   - Add FortunaRandomSource.main() to output to stdout for testing e.g. with dieharder
2013-07-19 21:31:25 +00:00
zzz
8505e8a1ca fix streaming property 2013-07-19 21:28:14 +00:00
54ec878698 merge of '90720c051863f44c6386493f3d5df546d988a663'
and 'fa509893effa9445a0833115160aed8fe6fed268'
2013-07-19 00:18:08 +00:00
ea4606fe79 Prepare for merge 2013-07-18 22:45:11 +00:00
96de87fdde compute rttDev in updateRTT 2013-07-18 22:33:23 +00:00
55d571ffec Hardcode TCP constants
Various suggestions by zzz
2013-07-18 22:25:10 +00:00
ae347c4fa1 sync getters 2013-07-18 15:52:40 +00:00
e93beb7c63 Updated .mtn-ignore 2013-07-18 13:48:36 +00:00
018098b8ef better loading from cache 2013-07-18 01:52:46 +00:00
1e2fb4bea5 propagate from branch 'i2p.i2p' (head e301d0499f4c688ed3a5febe30bf8098c7f2cdf9)
to branch 'i2p.i2p.979' (head 2dfdeb022c9495461b2ec1d90f28ef9cd0bd9e22)
2013-07-17 23:04:04 +00:00
171f0d2671 Implement RTT update on first ack 2013-07-17 21:13:19 +00:00
175cb0817e fix bashim in i2prouter 2013-07-17 19:45:43 +00:00
zzz
3b46acc285 * I2CP client session - improvements after review:
- Move more cleanups to finally block
   - Bounded wait
   - Don't ignore InterruptedExceptions, wrap in I2PSessionException and throw
   - More finals
   - Synch tweaks
2013-07-17 18:56:26 +00:00
zzz
d31ce49e77 change resource name 2013-07-17 18:55:12 +00:00
8937c4bf2a Store stdev of rtt in the TCB cache as per RFC 2140 2013-07-17 18:13:42 +00:00
2902a708f9 debian updates
- check script validity in build target
- refresh patch
- changelog update
2013-07-16 22:17:50 +00:00
zzz
c1210b1c04 * Translations:
- Tag initialNews.xml for TranslateReader
   - Drop static translated initialNews pages
   - Add new routerconsole bundle for the news alone, shipped in the jar
   - Use TranslateReader in HTTP proxy for initial news
   - Initial translations created manually from translated xml filesx
   - Add translated proxy error pages and initial news to deletelist.txt
   TODO: ar translation fails checkpo.sh
2013-07-13 23:38:11 +00:00
zzz
71038c311f * Translations:
- New varargs method in Translate
   - New TranslateReader to translate static files on-the-fly using _("") tagging
   - Tag proxy error pages for TranslateReader
   - Drop static translated proxy error pages
   - Add new i2ptunnel bundle for the proxy alone, shipped in the jar
   - Use TranslateReader in HTTP proxy for error pages
   - Move HTTP proxy strings from the web *war) to proxy (jar) bundle so they will be loaded
   - Initial translations created by msgmerge from i2ptunnel and routerconsole po files, un-fuzzied
2013-07-13 19:58:11 +00:00
zzz
70a8ab1d1a * DHSessionKeyBuilder: Fix for session and mac keys if DH key is between 32 and 63 bytes.
Was: NPE. Now: mac key is hash of ssession key. Won't ever happen. (Ticket #963)
   javadocs
2013-07-10 18:59:46 +00:00
zzz
f3c4a26483 * I2CP/I2PTunnel locking fixes (partial fixes for tickets 650. 815, 946, 947, 953):
- I2PSocketManagerFactory: New createDisconnectedManager(), javadocs
   - I2PSessionImpl: Rewrite state management and locking, prevent multiple
     connect() calls, but allow disconnect() to interrupt connect()
   - I2PSimpleSession: Changes to match I2PSessionImpl
   - I2PTunnelServer: Don't connect in constructor, use createDisconnectedManager()
     for a final manager, finals and cleanups
   Lightly tested.
   Todo: I2PTunnelClientBase
2013-07-10 18:54:25 +00:00
zzz
9a1e1a92ca dont use == on doubles 2013-07-10 18:42:13 +00:00
zzz
732eddd1b9 toString() fix (NO_ACK) 2013-07-10 18:14:18 +00:00
zzz
2caa6ad975 * Router I2CP:
- Make classes extensible for router-side test stubs
   - Add router-side local-only test implementation, no full router required.
     Only tested with external clients, probably doesn't work in-JVM.
   - Don't start threads in ClientManager constructor
   - Remove unused Reader param in ClientMessageEventListener methods
   - Cleanups, volatiles, finals, javadocs
2013-07-10 18:12:47 +00:00
zzz
d3e0161a6b * Transports: Consolidate translation methods in super,
ngettext fix for "peers" string
2013-07-10 17:59:10 +00:00
zzz
aabbdc1c1b Hopefully fix SSU NPE (ticket #967) 2013-07-06 13:25:11 +00:00
bcfc7630d1 propagate from branch 'i2p.i2p' (head 166cedda170ef76decb2d53129cfbbf8eba0b7b9)
to branch 'i2p.i2p.unittests' (head 70175d5dae110f7d3efee256c9169e68f4a83d9f)
2013-07-03 10:54:18 +00:00
zzz
3aafea0d98 add ipv6 to /confignet 2013-06-29 15:13:05 +00:00
zzz
79f8e88e5f propagate from branch 'i2p.i2p' (head 2a2c708bf9fee43e69469bdf896dfe489c32bdea)
to branch 'i2p.i2p.zzz.ipv6' (head c33552d7026b0a445d1dd7e138bf454144130eb2)
2013-06-28 16:10:49 +00:00
zzz
34b7081303 change congestion cost increment back to 1 for now 2013-06-14 16:13:20 +00:00
zzz
e0cd71069f propagate from branch 'i2p.i2p' (head 1acb4077a56ccb4079538caa28648e27f0bf5b8b)
to branch 'i2p.i2p.zzz.ipv6' (head f87d396c445dc58e677a56d8ed69544c7f5ecab1)
2013-06-14 14:46:08 +00:00
3b7daafad7 Fill in basic datastructure length tests 2013-06-09 12:21:35 +00:00
zzz
378c5a0d4e propagate from branch 'i2p.i2p' (head fd10b04ca3a6cf66e669bfad32d3011ed9f7e33c)
to branch 'i2p.i2p.zzz.ipv6' (head 6f6e16f14691f359322e665a7ad5ab65cbe1ca5e)
2013-05-29 00:22:15 +00:00
zzz
6c62c1f362 enable IPv6 geoip lookup 2013-05-24 14:11:35 +00:00
zzz
3daf287de8 GeoIPv6:
- Handle gzipped input data in merge tool
  - Add script to generate compressed data
  - Add local additions
  - Add compressed data file, generated from Maxmind data fetched 2013-05-24
  - Include data in installer and updater
  - Update Maxmind license info, now CC-SA 3.0
2013-05-24 13:46:17 +00:00
zzz
9a4cd11748 * SSU: "rectify" IPv4/v6 MTUs differently due to different header size (mod 16)
* Penalize addresses w/o IP in sort
2013-05-21 21:10:23 +00:00
zzz
c0350702fd * RouterAddress:
- Deprecate some setters
  - Add warning about setCost()
  - Change cost storage from int to short
  - Cost range checks
* NTCP:
  - Republish even if only changing cost
* Transports:
  - Sort multiple peer addresses by cost, with adjustment for local IPv6 preference
  - Add default IPv6Config for ease of changing later
2013-05-19 18:36:29 +00:00
zzz
55880844a5 * SSUDemo: Adapt for NTCP testing too
* RouterAddress and RouterInfo toString() cleanups; don't cache RI in _stringified
* NTCP: Fix publishing address when host specified but interface is not
* log tweaks
2013-05-19 15:18:45 +00:00
zzz
729282c0c4 * UDPAddress: Remove dependency in console; make package private 2013-05-18 20:10:10 +00:00
zzz
d603c3b5cd - UDPAddress reduce object churn, check intro key length,
don't look for ihost3, reject ports < 1024, cleanups
2013-05-18 19:58:10 +00:00
zzz
5cda1ec703 - Handle IPv6 in too-close checks 2013-05-18 19:24:16 +00:00
zzz
ec3756a69f * SSUDemo: Use IPv6; don't use System properties 2013-05-18 18:30:38 +00:00
zzz
0b49fa98f9 * SSU: Fixes for i2np.udp.allowLocal, log tweaks, sender/receiver thread name tweaks
* Limit tunnel GW pumper threads when testing
2013-05-18 18:00:17 +00:00
zzz
226c7eb8e3 * SSUDemo: configuration fixes, delete RI on exit, log tweaks 2013-05-18 14:27:11 +00:00
zzz
be262c6a70 * NetDb:
- Add floodfillEnabled() to NetworkDatabaseFacade so callers don't
    have to cast to FNDF, and Dummy NDF will work
  - Remove static FNDF.floodfillEnabled()
* SSUDemo: cleanups
2013-05-17 15:11:23 +00:00
zzz
a374f00613 * Fix UDPEndpointTestStandalone:
- init context
  - Add unit test buildPacket() method to PacketBuilder
  - Fix NPE in MessageHistory
* Minor PacketPusher optimization
2013-05-16 23:08:06 +00:00
zzz
fcdf837f33 * New buildTest and prepTest targets
* Fix UDPEndpoint usage in unit tests:
  - Restore receive()
  - Handle null UDPTransport
* Fix UDPEndpointTestStandalone compilation
2013-05-16 17:57:33 +00:00
zzz
febc0a5237 RouterContext: Fix disabling client manager with i2p.dummyClientFacade=true 2013-05-16 15:35:23 +00:00
zzz
a19140e186 GeoIPv6 2013-05-13 20:43:30 +00:00
zzz
e0b25cdcf9 remove unused method 2013-05-13 20:39:32 +00:00
zzz
e332c8bc27 FloodfillPeerSelector, ProfileOrganizer: Use 8 bytes for IPv6 check
Transports:
- Add IPv6 column on /peers
- Other minor /peers cleanup
2013-05-13 13:57:15 +00:00
zzz
7318632db9 strip scope from returned address strings 2013-05-12 15:23:02 +00:00
zzz
1b38a6478b UPnP:
- Pass device IP back in forward port callback
 - Only declare success if forwarded IP is public

NTCP: Bad bind config not fatal

GeoIP:
 - Use cached IP in RouterAddresses
 - Use both NTCP and SSU addresses
 - Skip IPv6 for now

Blocklist:
 - Add IPv6 in-memory single list
 - Limit in-memory single list size
 - Fix dup check in getAddresses()
2013-05-12 14:44:42 +00:00
zzz
6ceea60c92 addresses:
- blocklist 192.88.88.0/24 6to4 anycast
- invalidate 2002::/16
2013-05-12 00:24:01 +00:00
zzz
fcaebb4416 * Fix UPnP address received before startListening(),
broken by isAlive() check
* log tweakws
2013-05-11 22:11:02 +00:00
zzz
0be3beb30e * SSU fixes for per-address and IPv6 MTU
* MTU.main() print all interfaces
2013-05-11 21:39:25 +00:00
zzz
5e51c6abef * CSFI compile fix
* Start transports in a standard order to make testing easier
* When transports learn of interface addresses before being started, save them
  and use them at startup
* Pick SSU random port before startListening() and have the TransportManager
  pass it to NTCP before starting
* Only restart NTCP after changing addresses when necessary;
  prevent thrashing at startup (ticket #459)
* Only call rebuildRouterInfo() once at startup
* More checking of min/max SSU port config
* Invalid SSU bind config no longer fatal
* Allow "true" for ipv6 config
* log tweaks
* javadocs
2013-05-11 19:22:20 +00:00
zzz
5e953b0857 * Fixes for IPv4 and other breakage after basic testing
* Catch exception from UPnP callback
* Log tweaks
2013-05-10 18:34:02 +00:00
zzz
c76c80043f * NTCP:
- Drop NTCPAddress, just use RouterAddress
  - Drop _myAddress field, use super's currentAddress
2013-05-09 17:32:29 +00:00
zzz
3a49d6d28f * NTCP:
Move SSU address notification handling from CSFI to NTCPTransport
2013-05-09 16:18:58 +00:00
zzz
94e34ff366 RouterAddress:
- Add new constructor
 - Add add getHost() and deepEquals()
 - Compare host string, not IP, in equals()

SSU:
 - Remove all _external* fields; use _currentAddresses in super
 - Big rework of externalAddressReceived(), rebuildExternalAddress(),
   needsRebuild(), and replaceAddress() for multiple addresses and IPv6
 - Add caching in UDPAddress
 - More IPv6 flavors of utility methods
 - Remove two-art replaceAddress()
2013-05-08 16:48:39 +00:00
zzz
af27c76b2c * Only treat IPv6 addresses as valid if we have a public IPv6 address
* SSU Introduction:
 - Document that Alice-Bob RelayRequest/RelayResponse may be IPv4 or IPv6,
   but don't implement IPv6 yet.
   Changes required in IntroductionManager and PacketBuilder to send Alice's
   IPv4 address in the RelayRequest packet over IPv6, and to publish
   IPv6 introducer IPs.
 - Bob-Charlie RelayIntro must be IPv4
 - Only offer/accept relay tags as Bob or Charlie if the Bob-Charlie session is IPv4
 - Alice-Charlie communication must be IPv4
 - javadocs
2013-05-07 22:46:55 +00:00
zzz
60336c9555 - Shuffle SSU addresses before picking one
- Change address sources to enum
2013-05-07 19:49:13 +00:00
zzz
a85b7aa9f8 - Hash IPv6 addresses in IPThrottler
- CSFI: Pass TransportManager instead of CSFI to GetBidsJob;
        remove unused methods
- Add i2np.disable property for testing
2013-05-07 18:22:20 +00:00
zzz
228e6d7d03 fixup after prop 2013-05-06 13:30:11 +00:00
zzz
31531ee882 propagate from branch 'i2p.i2p' (head 17371fd6f9ef94bbb60a66c6bacb6828d6a4cde5)
to branch 'i2p.i2p.zzz.ipv6' (head 065a076899a2581b4196e626f2b0654c3d39518a)
2013-05-06 11:27:10 +00:00
zzz
368c2073b2 - Fix multiple-detection code in externalAddressReceived()
- Synchronize tracking of last IP/port
- Don't accept IPv6 address changes from peers
- Remove unused getLocalAddress()
- Pkg private getLocalPort()

Peer tests:
 - Use only IPv4 peer for Alice and Bob in peer tests; Charlie may be an IPv6 peer.
 - Enforce IPv4 (Alice's) address inside PeerTest packet
2013-05-05 12:08:28 +00:00
zzz
757df8c726 prep for multiple address discovery 2013-05-03 16:34:02 +00:00
zzz
c6121cb31e Prep for multiple SSU sockets:
- Change from single UDPEndpoint to a List of UDPEndpoints
 - Move (single) receive queue from UDPReceiver to PacketHandler
 - Multiple transmit queues (one for each UDPEndpoint/UDPSender),
   select queue in PacketPusher
 - Throw exception on UDPEndpoint.startup() failure
2013-05-03 15:03:55 +00:00
zzz
eecab472eb IPv6 SSU MTU adjustments 2013-05-03 11:27:21 +00:00
zzz
b71631d2ec Fixes to isPubliclyRoutable() based on IPv6 config 2013-05-02 14:12:53 +00:00
zzz
3ec78e27b4 Start new IPv6 branch
- Add new TransportUtil for getting/setting IPv6 config
- Prep for supporting multiple RouterAddresses per-transport
- RouterAddress hashCode/equals tweaks
2013-05-02 12:55:35 +00:00
4147 changed files with 718752 additions and 330441 deletions

67
.editorconfig Normal file
View File

@ -0,0 +1,67 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
indent_style = space
indent_size = 4
[{*.bat,**/*.bat,installer/resources/proxy/*.ht}]
end_of_line = crlf
[**/*.css]
indent_size = 5
[{history.txt,LICENSE.txt}]
indent_size = 3
[**/.project]
indent_style = tab
[README.txt]
indent_style = tab
[apps/BOB/**/*.java]
indent_style = tab
[apps/routerconsole/java/src/com/vuze/plugins/mlab/tools/ndt/swingemu/*.java]
indent_style = tab
[apps/routerconsole/java/src/edu/internet2/ndt/*.java]
indent_style = tab
[apps/routerconsole/jsp/{createreseed.jsp,exportfamily.jsp,flags.jsp,index.jsp,viewhistory.jsp,viewrouterlog.jsp,viewstat.jsp,viewtheme.jsp,viewwrapperlog.jsp}]
insert_final_newline = false
[apps/susimail/**/{*.java,*.js}]
indent_style = tab
[apps/susimail/**/{Attachments.java,MailPart.java,WebMail.java}]
end_of_line = crlf
[core/java/src/com/nettgryppa/**/*.java]
indent_size = 2
[core/java/src/gnu/**/*.java]
indent_size = 2
[core/java/src/gnu/getopt/*.properties]
charset = iso-8859-1
[core/java/src/org/json/simple/**/*.java]
end_of_line = crlf
indent_style = tab
[core/java/src/com/southernstorm/**/*.java]
indent_style = tab
[router/java/src/org/cybergarage/**/*.java]
indent_style = tab
[router/java/src/org/freenetproject/*.java]
indent_style = tab
[router/java/src/com/southernstorm/**/*.java]
indent_style = tab

57
.gitignore vendored Normal file
View File

@ -0,0 +1,57 @@
# Just to try and prevent some noob disasters.
# Use git add -f foo.jar to ignore this ignore list
# generated release files
*.exe
*.[gx]z
*.bz2
*.[rwjt]ar
*.sig
*.su[d23]
*.deb
*.zip
*.torrent
*~
web-fragment.xml
web-out.xml
*.out
# Temporary/build dirs
build/
pkg-temp/
classes/
dist/
/installer/resources/locale/mo
/tmp
/apps/jetty/jettylib
*_jsp.java
*.class
# Debian-related
/debian/copyright
/debian/changelog
.pc/
# Build property overrides
/override.properties
# Reporting
*.fba
sloccount.sc
/reports/
# Don't allow patches
*.(diff|patch)
# but allow debian/patches
!/debian/patches/*.(patch|diff)
# IDE project files
# Eclipse
.classpath
.project
.settings/
# IDEA
*.iml

6
.idea/ant.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?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 Normal file
View File

@ -0,0 +1,41 @@
<?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>

3
.idea/copyright/profiles_settings.xml generated Normal file
View File

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

View File

@ -0,0 +1,9 @@
<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>

22
.idea/libraries/jettylib.xml generated Normal file
View File

@ -0,0 +1,22 @@
<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>

9
.idea/libraries/jrobin_1_5_9_1.xml generated Normal file
View File

@ -0,0 +1,9 @@
<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>

10
.idea/libraries/lib.xml generated Normal file
View File

@ -0,0 +1,10 @@
<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>

9
.idea/libraries/start.xml generated Normal file
View File

@ -0,0 +1,9 @@
<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>

9
.idea/libraries/systray4j.xml generated Normal file
View File

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

9
.idea/libraries/tomcat_coyote_util.xml generated Normal file
View File

@ -0,0 +1,9 @@
<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>

12
.idea/libraries/tomcat_lib.xml generated Normal file
View File

@ -0,0 +1,12 @@
<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>

9
.idea/libraries/wrapper.xml generated Normal file
View File

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

9
.idea/libraries/wrapper_win.xml generated Normal file
View File

@ -0,0 +1,9 @@
<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 Normal file
View File

@ -0,0 +1,57 @@
<?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 Normal file
View File

@ -0,0 +1,80 @@
<?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>

6
.idea/runConfigurations/updater.xml generated Normal file
View File

@ -0,0 +1,6 @@
<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,5 +1,7 @@
# 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$
@ -14,18 +16,75 @@ _jsp\.java$
\.sig$
\.sud$
\.su2$
.\su3$
\.tar$
\.war$
.\deb$
\.zip$
\.torrent$
^\.
^build
^pkg-temp/
~$
/build
/classes/
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
^debian/changelog
^.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

52
.travis.yml Normal file
View File

@ -0,0 +1,52 @@
language: java
jdk:
- oraclejdk9
- openjdk8
matrix:
include:
- jdk: oraclejdk8
addons:
sonarcloud:
organization: "i2p"
- jdk: openjdk7
sudo: required
before_install: # Work around missing crypto in 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
before_install:
- |
if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ]; then
sed -i "1iplugins {\n id 'org.sonarqube' version '2.6.1'\n}\n" build.gradle
fi
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- $HOME/.sonar/cache/
- .gradle
script:
- |
if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ]; then
./gradlew sonarqube codeCoverageReport
else
./gradlew check codeCoverageReport
fi
after_success:
- bash <(curl -s https://codecov.io/bash)
notifications:
irc:
channels:
- "chat.freenode.net#i2p-dev"
on_success: change
on_failure: always

View File

@ -6,18 +6,59 @@ 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.fi = apps/i2ptunnel/locale/messages_fi.po
trans.fr = apps/i2ptunnel/locale/messages_fr.po
trans.hu = apps/i2ptunnel/locale/messages_hu.po
;; Java converts id to in
trans.id = apps/i2ptunnel/locale/messages_in.po
trans.it = apps/i2ptunnel/locale/messages_it.po
trans.ja = apps/i2ptunnel/locale/messages_ja.po
trans.ko = apps/i2ptunnel/locale/messages_ko.po
trans.nb = apps/i2ptunnel/locale/messages_nb.po
trans.nl = apps/i2ptunnel/locale/messages_nl.po
trans.nn = apps/i2ptunnel/locale/messages_nn.po
trans.pl = apps/i2ptunnel/locale/messages_pl.po
trans.pt = apps/i2ptunnel/locale/messages_pt.po
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.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
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]
source_file = apps/i2ptunnel/locale-proxy/messages_en.po
source_lang = en
trans.ar = apps/i2ptunnel/locale-proxy/messages_ar.po
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.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.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
trans.nn = apps/i2ptunnel/locale-proxy/messages_nn.po
trans.pl = apps/i2ptunnel/locale-proxy/messages_pl.po
trans.pt = apps/i2ptunnel/locale-proxy/messages_pt.po
trans.pt_BR = apps/i2ptunnel/locale-proxy/messages_pt_BR.po
trans.ro = apps/i2ptunnel/locale-proxy/messages_ro.po
trans.ru_RU = apps/i2ptunnel/locale-proxy/messages_ru.po
trans.sk = apps/i2ptunnel/locale-proxy/messages_sk.po
trans.sv_SE = apps/i2ptunnel/locale-proxy/messages_sv.po
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
[I2P.routerconsole]
source_file = apps/routerconsole/locale/messages_en.po
@ -32,17 +73,99 @@ trans.et_EE = apps/routerconsole/locale/messages_et.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
;; Java converts id to in
trans.id = apps/routerconsole/locale/messages_in.po
trans.it = apps/routerconsole/locale/messages_it.po
trans.ja = apps/routerconsole/locale/messages_ja.po
trans.ko = apps/routerconsole/locale/messages_ko.po
trans.nb = apps/routerconsole/locale/messages_nb.po
trans.nl = apps/routerconsole/locale/messages_nl.po
trans.pl = apps/routerconsole/locale/messages_pl.po
trans.pt = apps/routerconsole/locale/messages_pt.po
trans.pt_BR = apps/routerconsole/locale/messages_pt_BR.po
trans.ro = apps/routerconsole/locale/messages_ro.po
trans.ru_RU = apps/routerconsole/locale/messages_ru.po
trans.sv_SE = apps/routerconsole/locale/messages_sv.po
trans.tr_TR = apps/routerconsole/locale/messages_tr.po
trans.uk_UA = apps/routerconsole/locale/messages_uk.po
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]
source_file = apps/routerconsole/locale-news/messages_en.po
source_lang = en
trans.ar = apps/routerconsole/locale-news/messages_ar.po
trans.az = apps/routerconsole/locale-news/messages_az.po
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.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 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.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
trans.pl = apps/routerconsole/locale-news/messages_pl.po
trans.pt = apps/routerconsole/locale-news/messages_pt.po
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.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.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]
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.ca = apps/routerconsole/locale-countries/messages_ca.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.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.hr = apps/routerconsole/locale-countries/messages_hr.po
trans.hu = apps/routerconsole/locale-countries/messages_hu.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.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
trans.pl = apps/routerconsole/locale-countries/messages_pl.po
trans.pt = apps/routerconsole/locale-countries/messages_pt.po
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.sq = apps/routerconsole/locale-countries/messages_sq.po
trans.sv_SE = apps/routerconsole/locale-countries/messages_sv.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]
source_file = apps/i2psnark/locale/messages_en.po
@ -50,16 +173,28 @@ source_lang = en
trans.ar = apps/i2psnark/locale/messages_ar.po
trans.cs = apps/i2psnark/locale/messages_cs.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.fi = apps/i2psnark/locale/messages_fi.po
trans.fr = apps/i2psnark/locale/messages_fr.po
trans.hu = apps/i2psnark/locale/messages_hu.po
;; Java converts id to in
trans.id = apps/i2psnark/locale/messages_in.po
trans.it = apps/i2psnark/locale/messages_it.po
trans.ja = apps/i2psnark/locale/messages_ja.po
trans.ko = apps/i2psnark/locale/messages_ko.po
trans.nb = apps/i2psnark/locale/messages_nb.po
trans.nl = apps/i2psnark/locale/messages_nl.po
trans.pl = apps/i2psnark/locale/messages_pl.po
trans.pt = apps/i2psnark/locale/messages_pt.po
trans.pt_BR = apps/i2psnark/locale/messages_pt_BR.po
trans.ro = apps/i2psnark/locale/messages_ro.po
trans.ru_RU = apps/i2psnark/locale/messages_ru.po
trans.sk = apps/i2psnark/locale/messages_sk.po
trans.sv_SE = apps/i2psnark/locale/messages_sv.po
trans.sq = apps/i2psnark/locale/messages_sq.po
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
@ -72,34 +207,61 @@ 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.fi = apps/susidns/locale/messages_fi.po
trans.fr = apps/susidns/locale/messages_fr.po
trans.gl = apps/susidns/locale/messages_gl.po
trans.hu = apps/susidns/locale/messages_hu.po
;; Java converts id to in
trans.id = apps/susidns/locale/messages_in.po
trans.it = apps/susidns/locale/messages_it.po
trans.ja = apps/susidns/locale/messages_ja.po
trans.ko = apps/susidns/locale/messages_ko.po
trans.nl = apps/susidns/locale/messages_nl.po
trans.pl = apps/susidns/locale/messages_pl.po
trans.pt = apps/susidns/locale/messages_pt.po
trans.pt_BR = apps/susidns/locale/messages_pt_BR.po
trans.ro = apps/susidns/locale/messages_ro.po
trans.ru_RU = apps/susidns/locale/messages_ru.po
trans.sv_SE = apps/susidns/locale/messages_sv.po
trans.tr_TR = apps/susidns/locale/messages_tr.po
trans.uk_UA = apps/susidns/locale/messages_uk.po
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]
source_file = apps/desktopgui/locale/messages_en.po
source_lang = en
trans.ar = apps/desktopgui/locale/messages_ar.po
trans.az = apps/desktopgui/locale/messages_az.po
trans.bg = apps/desktopgui/locale/messages_bg.po
trans.ca = apps/desktopgui/locale/messages_ca.po
trans.cs = apps/desktopgui/locale/messages_cs.po
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.fa = apps/desktopgui/locale/messages_fa.po
trans.fi = apps/desktopgui/locale/messages_fi.po
trans.fr = apps/desktopgui/locale/messages_fr.po
trans.gl = apps/desktopgui/locale/messages_gl.po
trans.hu = apps/desktopgui/locale/messages_hu.po
;; Java converts id to in
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.mg = apps/desktopgui/locale/messages_mg.po
trans.nb = apps/desktopgui/locale/messages_nb.po
trans.nl = apps/desktopgui/locale/messages_nl.po
trans.pl = apps/desktopgui/locale/messages_pl.po
trans.pt = apps/desktopgui/locale/messages_pt.po
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.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.tr_TR = apps/desktopgui/locale/messages_tr.po
trans.vi = apps/desktopgui/locale/messages_vi.po
@ -108,50 +270,247 @@ trans.zh_CN = apps/desktopgui/locale/messages_zh.po
[I2P.susimail]
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.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.fi = apps/susimail/locale/messages_fi.po
trans.fr = apps/susimail/locale/messages_fr.po
trans.gl = apps/susimail/locale/messages_gl.po
trans.hu = apps/susimail/locale/messages_hu.po
;; Java converts id to in
trans.id = apps/susimail/locale/messages_in.po
trans.it = apps/susimail/locale/messages_it.po
trans.ja = apps/susimail/locale/messages_ja.po
trans.ko = apps/susimail/locale/messages_ko.po
trans.mg = apps/susimail/locale/messages_mg.po
trans.nb = apps/susimail/locale/messages_nb.po
trans.nl = apps/susimail/locale/messages_nl.po
trans.ru_RU = apps/susimail/locale/messages_ru.po
trans.sv_SE = apps/susimail/locale/messages_sv.po
trans.pl = apps/susimail/locale/messages_pl.po
trans.pt = apps/susimail/locale/messages_pt.po
trans.pt_BR = apps/susimail/locale/messages_pt_BR.po
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.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
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]
source_file = debian/po/templates.pot
source_lang = en
trans.ar = debian/po/ar.po
trans.az = debian/po/az.po
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.fi = debian/po/fi.po
trans.fr = debian/po/fr.po
trans.gl = debian/po/gl.po
trans.id = debian/po/id.po
trans.it = debian/po/it.po
trans.hu = debian/po/hu.po
trans.ja = debian/po/ja.po
trans.ko = debian/po/ko.po
trans.nb = debian/po/nb.po
trans.nl = debian/po/nl.po
trans.pl = debian/po/pl.po
trans.pt = debian/po/pt.po
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.sq = debian/po/sq.po
trans.sv_SE = debian/po/sv.po
trans.uk_UA = debian/po/uk.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]
source_file = installer/resources/locale/po/messages_en.po
source_lang = en
trans.ar = installer/resources/locale/po/messages_ar.po
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.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
trans.it = installer/resources/locale/po/messages_it.po
trans.sv_SE = installer/resources/locale/po/messages_sv.po
trans.ja = installer/resources/locale/po/messages_ja.po
trans.ko = installer/resources/locale/po/messages_ko.po
trans.nb = installer/resources/locale/po/messages_nb.po
trans.nl = installer/resources/locale/po/messages_nl.po
trans.pl = installer/resources/locale/po/messages_pl.po
trans.pt = installer/resources/locale/po/messages_pt.po
trans.pt_BR = installer/resources/locale/po/messages_pt_BR.po
trans.ro = installer/resources/locale/po/messages_ro.po
trans.ru_RU = installer/resources/locale/po/messages_ru.po
trans.sk = installer/resources/locale/po/messages_sk.po
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
[main]
host = http://www.transifex.net
[I2P.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
;; Several getopt translations from Transifex are ISO-8859-1 encoded.
;; So that all our source files are consistently UTF-8 encoded,
;; you may optionally convert them to ASCII with Unicode escapes after downloading.
;; Convert files with:
;; native2ascii -encoding iso-8859-1 foo.properties foo.properties.new
;; Then review that it looks right:
;; native2ascii -reverse -encoding UTF-8 foo.properties.new
;; Then copy it over:
;; mv foo.properties.new foo.properties
;; The following files from Transifex are known to be ISO-8859-1 encoded,
;; and should be escaped using native2ascii after downloading:
;; gl, pt, pt_BR, sq, sv, tr
;;
source_file = core/java/src/gnu/getopt/MessagesBundle.properties
source_lang = en
type = PROPERTIES
trans.ar = core/java/src/gnu/getopt/MessagesBundle_ar.properties
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.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
trans.hu = core/java/src/gnu/getopt/MessagesBundle_hu.properties
;; Java converts id to in
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.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
trans.pt = core/java/src/gnu/getopt/MessagesBundle_pt.properties
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.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
trans.tr_TR = core/java/src/gnu/getopt/MessagesBundle_tr.properties
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]
source_file = apps/ministreaming/locale/messages_en.po
source_lang = en
trans.ar = apps/ministreaming/locale/messages_ar.po
trans.az = apps/ministreaming/locale/messages_az.po
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.fi = apps/ministreaming/locale/messages_fi.po
trans.fr = apps/ministreaming/locale/messages_fr.po
trans.gl = apps/ministreaming/locale/messages_gl.po
;; Java converts id to in
trans.id = apps/ministreaming/locale/messages_in.po
trans.it = apps/ministreaming/locale/messages_it.po
trans.ko = apps/ministreaming/locale/messages_ko.po
trans.nb = apps/ministreaming/locale/messages_nb.po
trans.nl = apps/ministreaming/locale/messages_nl.po
trans.pl = apps/ministreaming/locale/messages_pl.po
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.sv_SE = apps/ministreaming/locale/messages_sv.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
[I2P.manpages]
;;
;; after adding languages here, add to debian/*.manpages also
;;
type = PO
source_file = installer/resources/locale-man/man.pot
source_lang = en
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.fi = installer/resources/locale-man/man_fi.po
trans.fr = installer/resources/locale-man/man_fr.po
trans.id = installer/resources/locale-man/man_id.po
trans.it = installer/resources/locale-man/man_it.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.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
[I2P.eepsite]
;;
;; For any new translations, add links in 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
;;
type = HTML
source_file = installer/resources/eepsite/docroot/help/index.html
source_lang = en
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
;; not yet translated on TX, use old page
;;trans.es = installer/resources/eepsite/docroot/help/index_es.html
trans.fr = installer/resources/eepsite/docroot/help/index_fr.html
;; Java converts id to in
trans.id = installer/resources/eepsite/docroot/help/index_in.html
trans.it = installer/resources/eepsite/docroot/help/index_it.html
;; not yet translated on TX, use old page
;;trans.nl = installer/resources/eepsite/docroot/help/index_nl.html
trans.pl = installer/resources/eepsite/docroot/help/index_nl.html
trans.pt = installer/resources/eepsite/docroot/help/index_nl.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.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
[I2P.readme]
;;
;; Text on /console
;;
type = HTML
source_file = installer/resources/readme/readme.html
source_lang = en
trans.ar = installer/resources/readme/readme_ar.html
trans.de = installer/resources/readme/readme_de.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.tr_TR = installer/resources/readme/readme_tr.html
[main]
host = https://www.transifex.com

14
Docker.entrypoint.sh Normal file
View File

@ -0,0 +1,14 @@
#!/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

7
Docker.expt Normal file
View File

@ -0,0 +1,7 @@
#!/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;}
}

62
Dockerfile Normal file
View File

@ -0,0 +1,62 @@
FROM meeh/java8server:latest
# Docker image based on Alpine with Java.
# We use Oracle Java to run I2P, but uses the openjdk to build it.
MAINTAINER Mikal Villa <mikal@sigterm.no>
ENV GIT_BRANCH="master"
ENV I2P_PREFIX="/opt/i2p"
ENV PATH=${I2P_PREFIX}/bin:$PATH
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
ENV GOSU_VERSION=1.7
ENV GOSU_SHASUM="34049cfc713e8b74b90d6de49690fa601dc040021980812b2f1f691534be8a50 /usr/local/bin/gosu"
RUN mkdir /user && adduser -S -h /user i2p && chown -R i2p:nobody /user
# Adding files first, since Docker.expt is required for installation
ADD Docker.expt /tmp/Docker.expt
ADD Docker.entrypoint.sh /entrypoint.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
#
# 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.
#
# 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" ]

View File

@ -11,8 +11,8 @@ you may use:
lynx http://localhost:7657/
to configure the router.
If you're having trouble, swing by http://forum.i2p/, check the
website at http://www.i2p2.de/, or get on irc://irc.freenode.net/#i2p
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
@ -25,21 +25,25 @@ where there are comments labeled "PORTABLE". Do this before you
run I2P for the first time.
To start I2P:
(*nix): sh i2prouter start
(*nix, BSD, Mac): sh i2prouter start
(win*): I2P.exe
(non-x86 platforms PPC, ARM, etc): sh runplain.sh
(platforms without wrapper support): sh runplain.sh
To stop I2P (gracefully):
lynx http://localhost:7657/summaryframe (click "Shutdown")
or (*nix, BSD, Mac) sh i2prouter graceful
To stop I2P immediately:
sh i2prouter stop
(*nix, BSD, Mac) sh i2prouter stop
To uninstall I2P:
rm -rf $I2PInstallDir ~/.i2p
Supported JVMs:
Windows: Latest available from http://java.com/download (1.5+ supported)
Linux: Latest available from http://java.com/download (1.5+ supported)
FreeBSD: 1.5-compatible (NIO required)
Other operating systems and JVMs: See http://trac.i2p2.de/wiki/java
All platforms: Java 1.7 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
Raspberry Pi: Oracle 8 Early Access https://jdk8.java.net/download.html
PowerPC: IBM SDK 7 http://www.ibm.com/developerworks/java/jdk/linux/download.html
Other operating systems and JVMs: See https://trac.i2p2.de/wiki/java or https://geti2p.net/download

View File

@ -1,11 +1,13 @@
I2P source installation instructions
Prerequisites to build from source:
Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher
Non-linux operating systems and JVMs: See http://trac.i2p2.de/wiki/java
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
Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 1.6
Apache Ant 1.7.0 or higher
The xgettext, msgfmt, and msgmerge tools installed
from the GNU gettext package http://www.gnu.org/software/gettext/
from the GNU gettext package http://www.gnu.org/software/gettext/
Build environment must use a UTF-8 locale.
To build and install I2P from source, you must first build
and package up the appropriate installer by running:
@ -40,29 +42,30 @@ or on Windows, just double-click on i2pinstall.exe.
Or move the i2pupdate.zip file into an existing installation directory and restart.
To start I2P:
(*nix): sh i2prouter start
(*nix, BSD, Mac): sh i2prouter start
(win*): I2P.exe or i2prouter.bat
(non-x86 platforms PPC, ARM, etc): sh runplain.sh
(platforms without wrapper support): sh runplain.sh
To install I2P as a system service:
(*nix) sh i2prouter install
(*nix, BSD, Mac) sh i2prouter install
(win*) install_i2p_service_winnt.bat
To uninstall I2P as a system service:
(*nix) sh i2prouter remove
(*nix, BSD, Mac) sh i2prouter remove
(win*) uninstall_i2p-service_winnt.bat
To stop I2P (gracefully):
lynx http://localhost:7657/summaryframe (click "Shutdown")
or (*nix, BSD, Mac) sh i2prouter graceful
To stop I2P immediately:
sh i2prouter stop
(*nix, BSD, Mac) sh i2prouter stop
To uninstall I2P:
rm -rf $I2PInstallDir ~/.i2p
Supported JVMs:
Windows: Latest available from http://java.com/download (1.5+ supported)
Linux: Latest available from http://java.com/download (1.5+ supported)
FreeBSD: 1.5-compatible (NIO required)
Windows: Latest available from http://java.com/download (1.7+ supported)
Linux: Latest available from http://java.com/download (1.7+ supported)
FreeBSD: 1.7-compatible (NIO required)
Other operating systems and JVMs: See http://trac.i2p2.de/wiki/java

View File

@ -29,17 +29,21 @@ POSSIBILITY OF SUCH DAMAGES.
LICENSES
--------
Core (i2p.jar):
Core API (i2p.jar):
Public domain except as listed below:
ElGamal and DSA code:
Copyright (c) 2003, TheCrypto
See licenses/LICENSE-ElGamalDSA.txt
SHA256 and HMAC-SHA256:
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
AES code:
Copyright (c) 1995-2005 The Cryptix Foundation Limited.
See licenses/LICENSE-Cryptix.txt
@ -54,13 +58,14 @@ Public domain except as listed below:
PRNG:
Copyright (C) 2001, 2002, Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv2.1.txt
See licenses/LICENSE-LGPLv2.1.txt or /usr/share/common-licenses/LGPL-2.1
HashCash code:
Copyright 2006 Gregory Rubin grrubin@gmail.com
See licenses/LICENSE-HashCash.txt
GettextResource from gettext v0.18:
GettextResource from gettext v0.19.8:
(not included in most distribution packages)
Copyright (C) 2001, 2007 Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv2.1.txt
@ -68,31 +73,57 @@ Public domain except as listed below:
Contains some code Copyright 2006 Sun Microsystems, Inc.
See licenses/LICENSE-InstallCert.txt
BlockFile:
Copyright (c) 2006, Matthew Estes
See licenses/LICENSE-BlockFile.txt
SipHashInline:
Copyright 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
See licenses/LICENSE-Apache2.0.txt
Getopt:
(not included in most distribution packages)
Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com)
See licenses/LICENSE-LGPLv2.1.txt
HostnameVerifier:
From Apache HttpClient 4.4.1 and HttpCore 4.4.1
See licenses/LICENSE-Apache2.0.txt
json-simple 1.1.1
(not included in most distribution packages)
See licenses/LICENSE-Apache2.0.txt
Noise library:
Copyright (C) 2016 Southern Storm Software, Pty Ltd.
See licenses/LICENSE-Noise.txt
Router (router.jar):
Public domain except as listed below:
UPnP.java:
From freenet
See licenses/LICENSE-GPLv2.txt
UPnP subsystem (CyberLink) 2.1:
UPnP subsystem (CyberLink) 3.0:
Copyright (C) 2003-2010 Satoshi Konno
See licenses/LICENSE-UPnP.txt
GeoIP: GeoLite databases are licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
This product includes GeoLite data created by MaxMind, available from http://www.maxmind.com/
GeoIP API 1.3.1:
See licenses/LICENSE-LGPLv2.1.txt
GeoIP2-java 2.12.0:
See licenses/LICENSE-Apache2.0.txt
Maxmind-DB-Reader-java 1.2.2:
See licenses/LICENSE-Apache2.0.txt
Noise library:
Copyright (C) 2016 Southern Storm Software, Pty Ltd.
See licenses/LICENSE-Noise.txt
Installer:
(not included in distribution packages)
Launch4j 3.0.1:
(Launch4j is only included in the upstream source package and Windows binaries.
Not applicable for non-Windows binaries or Debian/Launchpad packages.)
Copyright (c) 2004, 2008 Grzegorz Kowal
See licenses/LICENSE-Launch4j.txt (in binary packages)
See installer/lib/launch4j/LICENSE.txt (in source packages)
@ -105,7 +136,7 @@ Installer:
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Commons-Logging.txt
XStream (http://xstream.codehaus.org/)
XStream (http://xstream.github.io/)
Copyright (c) 2003-2004, Joe Walnes
See licenses/LICENSE-XStream.txt
@ -131,120 +162,157 @@ Installer:
See licenses/LICENSE-Apache2.0.txt
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
Java Service Wrapper Community Edition 32-bit 3.5.19:
Copyright (C) 1999-2011 Tanuki Software, Ltd. All Rights Reserved.
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.34:
(not included in most distribution packages)
Copyright (C) 1999-2017 Tanuki Software, Ltd. All Rights Reserved.
See licenses/LICENSE-Wrapper.txt
Jbigi Libraries (jbigi.jar):
JNI code public domain.
JNI code: public domain.
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:
See licenses/LICENSE-GPLv2.txt
Applications:
Addressbook:
Addressbook (addressbook.jar):
Copyright (c) 2004 Ragnarok
See licenses/LICENSE-Addressbook.txt
BlockFile:
Copyright (c) 2006, Matthew Estes
See licenses/LICENSE-BlockFile.txt
BOB:
BOB (BOB.jar):
Copyright (C) sponge
See licenses/COPYING-BOB.txt
I2PSnark:
Desktopgui (desktopgui.jar):
Copyright (c) Mathias De Maré
See licenses/LICENSE-DesktopGUI.txt
Glassfish Standard Tag Library (JSTL) 1.2 (commons-el.jar):
(not included in most distribution packages)
Common Development and Distribution License (CDDL) version 1.0 + GNU General Public License (GPL) version 2
See https://glassfish.dev.java.net/public/CDDL+GPL.html
See licenses/LICENSE-GPLv2.txt
I2PSnark (i2psnark.jar, i2psnark.war):
Copyright (C) 2003 Mark J. Wielaard
GPLv2 (or any later version)
See licenses/LICENSE-GPLv2.txt
Silk icons: See licenses/LICENSE-SilkIcons.txt
I2PTunnel:
I2PTunnel (i2ptunnel.jar, i2ptunnel.war):
(c) 2003 - 2004 mihi
GPLv2 (or any later version) with exception.
See licenses/LICENSE-I2PTunnel.txt
See licenses/LICENSE-GPLv2.txt
I2PTunnel SOCKS Proxy:
Copyright (c) 2004 by human
GPLv2 (or any later version) with exception.
See licenses/LICENSE-I2PTunnel.txt
See licenses/LICENSE-GPLv2.txt
I2PTunnel UDP and Streamr (i2ptunnel.jar):
By welterde.
See licenses/LICENSE-GPLv2.txt
I2PTunnel SOCKS Proxy:
Copyright (c) 2004 by human
GPLv2 (or any later version) with exception.
See licenses/LICENSE-I2PTunnel.txt
See licenses/LICENSE-GPLv2.txt
Imagegen (imagegen.war):
Identicon:
Copyright (c) 2007-2014 Don Park <donpark@docuverse.com>
See licenses/LICENSE-Identicon.txt
RandomArt:
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:
See licenses/LICENSE-Apache2.0.txt
I2PTunnel UDP and Streamr:
By welterde.
See licenses/LICENSE-GPLv2.txt
Jetty 7.6.11.v20130520:
Jetty 9.2.25.v20180606 (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
See licenses/NOTICE-Commons-Logging.txt
JRobin 1.5.9.1:
JRobin 1.6.0-1 (jrobin.jar):
Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor.
Copyright (c) 2011 The OpenNMS Group, Inc.
See licenses/LICENSE-LGPLv2.1.txt
DeallocationHelper:
Copyright (c) 2006-2016 Julien Gouesse
See licenses/LICENSE-GPLv2.txt
Ministreaming Lib:
Ministreaming Lib (mstreaming.jar):
By mihi.
See licenses/LICENSE-BSD.txt
Proxyscript:
Proxyscript (i2pProxy.pac):
(not included in distribution packages)
By Cervantes.
Public domain.
Router console:
Router console (routerconsole.jar, routerconsole.war):
Public domain.
Router Console themes:
Flag icons:
- Jersey and EU flag icons: public domain, courtesy Xrmap flag
collection http://www.arvernes.com/wiki/index.php/Xrmap
- Guernsey and Isle of Man flags from the Open Clip Art Library, released into the public domain
- Curaçao, courtesy of David Benbennick, released into the public domain
- All other flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
Silk icons: See licenses/LICENSE-SilkIcons.txt
FatCow icons: See licenses/LICENSE-FatCowIcons.txt
GeoIP Data:
Copyright (c) 2008 MaxMind, Inc. All Rights Reserved.
See licenses/LICENSE-GeoIP.txt
Fugue Icons: See licenses/LICENSE-FugueIcons.txt
Router Console and I2PSnark themes:
"Man with hat over face" & related images licensed under a Creative Commons 2.0 license.
Original photos by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155
Some images licensed under a Creative Commons 2.0 license.
Silk icons: See licenses/LICENSE-SilkIcons.txt
I2PSnark light theme:
"Creative Commons Cat" licensed under a Creative Commons Attribution 3.0 Unported License.
Original photo by Boaz Arad. http://www.luxphile.com/2011/01/creative-commons-cat.html
Router Console M-Lab subsystem:
Copyright 2010 Vuze, Inc. All rights reserved.
See licenses/LICENSE-GPLv2.txt
SAM:
Router Console NDT subsystem:
Copyright (c) 2003 University of Chicago. All rights reserved.
See licenses/LICENSE-NDT.txt
Notice: I2P has changed specified portions of the Software, including the package edu.internet2.ndt.
SAM (sam.jar):
Public domain.
Streaming Lib:
Streaming Lib (streaming.jar):
Public domain.
SusiDNS:
SusiDNS (susidns.war):
Copyright (C) 2005 <susi23@mail.i2p>
GPLv2 (or any later version)
See licenses/LICENSE-GPLv2.txt
Uses Glassfish Standard Tag Library (JSTL) 1.2:
Common Development and Distribution License (CDDL) version 1.0 + GNU General Public License (GPL) version 2
See https://glassfish.dev.java.net/public/CDDL+GPL.html
See licenses/LICENSE-GPLv2.txt
SusiMail:
SusiMail (susimail.war):
Copyright (C) 2004-2005 <susi23@mail.i2p>
GPLv2 (or any later version)
See licenses/LICENSE-GPLv2.txt
Systray:
Systray (systray.jar):
Public domain.
Bundles systray4j-2.4.1:
See licenses/LICENSE-LGPLv2.1.txt
Tomcat 6.0.37:
Copyright 1999-2013 The Apache Software Foundation
Tomcat 8.5.34 (jasper-runtime.jar):
(not included in most distribution packages)
Copyright 1999-2018 The Apache Software Foundation
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Tomcat.txt
@ -262,9 +330,9 @@ distributions. See the source package for the additional license information.
Copyright (C) sponge
DWTFYWTPL
Desktopgui
Copyright (c) Mathias De Maré
See apps/desktopgui/LICENSE
Gradle wrapper:
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>

80
README.md Normal file
View File

@ -0,0 +1,80 @@
# I2P
This is the source code for the reference Java implementation of I2P.
Latest release: https://geti2p.net/download
## Installing
See INSTALL.txt or https://geti2p.net/download for installation instructions.
## Documentation
https://geti2p.net/how
FAQ: https://geti2p.net/faq
API: http://docs.i2p-projekt.de/javadoc/
or run 'ant javadoc' then start at build/javadoc/index.html
## How to contribute / Hack on I2P
Please check out [HACKING.md](docs/HACKING.md) and other documents in the docs directory.
## Building packages from source
To get development branch from source control: 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
- Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel)
require only Java 1.6
- Apache Ant 1.7.0 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.
### Ant build process
On x86 systems do:
ant pkg
On non-x86, use one of the following instead:
ant installer-linux
ant installer-freebsd
ant installer-osx
Run 'ant' with no arguments to see other build options.
### Gradle build process
Full builds of installers or updates are not yet possible, but the code can be
compiled with:
./gradlew assemble
This will download dependencies over the clearnet by default, including Gradle
itself. To download through a SOCKS proxy (e.g. Tor), add the following lines to
your `~/.gradle/gradle.properties`:
systemProp.socksProxyHost=localhost
systemProp.socksProxyPort=9150
## Contact info
Need help? See the IRC channel #i2p on irc.freenode.net
Bug reports: https://trac.i2p2.de/report/1
Contact information, security issues, press inquiries: https://geti2p.net/en/contact
Twitter: @i2p, @geti2p
## Licenses
See LICENSE.txt

View File

@ -1,9 +1,11 @@
Prerequisites to build from source:
Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher
Non-linux operating systems and JVMs: See http://trac.i2p2.de/wiki/java
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
Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 1.6
Apache Ant 1.7.0 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.
To build:
On x86 systems do:
@ -15,24 +17,43 @@ To build:
ant installer-osx
Run 'ant' with no arguments to see other build options.
See INSTALL.txt or http://www.i2p2.de/download.html for installation instructions.
See INSTALL.txt or https://geti2p.net/download for installation instructions.
Gradle build system:
Full builds are not yet possible, but the command is:
./gradlew assemble
gradlew will download dependencies over the clearnet by default, including
Gradle itself. To download over Tor, create a gradle.properties file
containing:
systemProp.socksProxyHost=localhost
systemProp.socksProxyPort=9150
Documentation:
http://www.i2p2.de/how
API: run 'ant javadoc' then start at build/javadoc/index.html
https://geti2p.net/how
API: http://docs.i2p-projekt.de/javadoc/
or run 'ant javadoc' then start at build/javadoc/index.html
Latest release:
http://www.i2p2.de/download.html
https://geti2p.net/download
To get development branch from source control:
http://www.i2p2.de/newdevelopers.html
https://geti2p.net/newdevelopers
FAQ:
http://www.i2p2.de/faq.html
https://geti2p.net/faq
Need help?
IRC irc.freenode.net #i2p
http://forum.i2p/
Bug reports:
https://trac.i2p2.de/report/1
Contact information, security issues, press inquiries:
https://geti2p.net/en/contact
Twitter:
@i2p, @geti2p
Licenses:
See LICENSE.txt

View File

@ -1,30 +1,70 @@
ou will need atleast monotone > = 0.41 to get the most recent build source
and connect it to an already running i2p router.
Getting the sources
===================
OR:
Monotone
--------
You may download the actual "stable" source from
http://code.google.com/p/i2p/downloads/list
The bleeding-edge source code is available both within and outside of I2P. The
I2P project uses Monotone to maintain the codebase.
You will need to follwing tools to build the i2p and i2p-base packages:
Information on retrieving the source with monotone is available within I2P at
http://i2p-projekt.i2p/monotone and from the internet at https://geti2p.net/monotone.
bash >= 3.1.017
requiredbuilder >= 0.16.3 ( http://www.stabellini.net/requiredbuilder.html )
jre >= 6u11
jdk >= 6u11
apache-ant >= 1.7.1
perl >= 5.10.0
python >= 2.5.2
Monotone 1.0 Slackbuilds are available at http://slackbuilds.org/.
Reccomended:
monotone >= 0.41 ( http://pkgs.dr.ea.ms )
Git
---
See also:
Git is also an option to retrieve the I2P source code. That said, the I2P
Monotone servers are *the* authoritative source.
i2p/readme.txt
Public Git repositories hosting the I2P source and managed by I2P project team members include
AND
- https://github.com/i2p/i2p.i2p
- http://git.repo.i2p/w/i2p.i2p.git (mirrored from Github)
- http://sourceforge.net/p/i2p/code/
i2p-base/readme.txt
for information and handy tips.
Tarball
-------
The latest stable release is always available from the I2P homepage at
https://geti2p.net/get/.
This SlackBuild
===============
Requirements
-------------
The following are needed to build the i2p package:
* jre >= 6
* jdk >= 6
* gettext
* apache-ant >= 1.7.1
If you don't care about bundling the translations, the gettext requirement can
be avoided by adding -Drequire.gettext=false to the ant lines in
i2p/i2p.SlackBuild
A JRE >= v6 is the only requirement to run I2P.
Building
--------
As the root user, run either $I2PSRC/Slackware/i2p/i2p.SlackBuild or `ant slackpkg` to create a package
in $I2PSRC/Slackware/i2p which can be installed using the Slackware packaging tools.
See also
========
Please also take a look at
* i2p/README
* eepget(1)
* i2prouter(1)
* http://i2p-projekt.i2p / https://geti2p.net
for additional information and tips.

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<project basedir="." default="slackpkg">
<target name="slackpkg">
<echo message="Building Slackware package." />
<exec executable="./i2p-base.SlackBuild">
</exec>
</target>
</project>

View File

@ -1,157 +0,0 @@
#!/bin/sh
#
#
# Now in the future we only need to look for '#I2P' and '#/I2P'
# for modifications to rc.local and rc.local_shutdown.
# I was a moron for not doing it this way in the first place :-) -- Sponge
#
#
touch /etc/rc.d/rc.local
touch /etc/rc.d/rc.local_shutdown
echo
echo -n "Check 1: /etc/rc.d/rc.local "
I2PRCA=`grep -c /etc/rc.d/rc.local -e '/etc/rc.d/rc.i2p'`
if [ $I2PRCA -eq 0 ] ; then
echo '#I2P' >> /etc/rc.d/rc.local
echo '( cd /tmp ; rm -Rf i2p-*.tmp )' >> /etc/rc.d/rc.local
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local
echo " sh /etc/rc.d/rc.i2p start" >> /etc/rc.d/rc.local
echo "fi" >> /etc/rc.d/rc.local
echo '#/I2P' >> /etc/rc.d/rc.local
echo "modified."
else
echo -n "looks OK so far,"
# Fix old installs, or where people have modified.
echo -n " Check 1A: "
I2PRCC=`grep -c /etc/rc.d/rc.local -e 'i2p-\*\.tmp'`
if [ $I2PRCC -eq 0 ] ; then
DATA=$(cat /etc/rc.d/rc.local | sed -re 's/if \[ -x \/etc\/rc\.d\/rc\.i2p \] ; then/#I2P\n\( cd \/tmp ; rm -Rf i2p-*.tmp \)\nif \[ -x \/etc\/rc.d\/rc.i2p \] ; then/')
echo "${DATA}" > /etc/rc.d/rc.local
echo -n "additional modifications applied,"
else
echo -n "looks OK so far,"
fi
echo -n " Check 1B: "
I2PRCE=`grep -c /etc/rc.d/rc.local -e 'i2p-\*\.tmp'`
if [ $I2PRCE -eq 0 ] ; then
DATATOP=$(cat /etc/rc.d/rc.local | sed -n '0,/i2p-\*\.tmp/p' | sed '$d' )
DATABOT=$(cat /etc/rc.d/rc.local | sed -n '/i2p-\*\.tmp/,$p' | sed -n '/^fi/,$p' | sed "1d")
echo "${DATATOP}" > /etc/rc.d/rc.local
echo '#I2P' >> /etc/rc.d/rc.local
echo '( cd /tmp ; rm -Rf i2p-*.tmp )' >> /etc/rc.d/rc.local
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local
echo " sh /etc/rc.d/rc.i2p start" >> /etc/rc.d/rc.local
echo "fi" >> /etc/rc.d/rc.local
echo '#/I2P' >> /etc/rc.d/rc.local
echo "${DATABOT}" >> /etc/rc.d/rc.local
echo -n "additional modifications applied,"
else
echo -n "looks ok so far,"
fi
echo -n " Check 1C: "
I2PRCF=`grep -c /etc/rc.d/rc.local -e '#/I2P'`
if [ $I2PRCF -eq 0 ] ; then
DATATOP=$(cat /etc/rc.d/rc.local | sed -n '0,/^#I2P/p' | sed '$d' )
DATABOT=$(cat /etc/rc.d/rc.local | sed -n '/^#I2P/,$p' | sed -n '/^fi/,$p' | sed "1d")
echo "${DATATOP}" > /etc/rc.d/rc.local
echo '#I2P' >> /etc/rc.d/rc.local
echo '( cd /tmp ; rm -Rf i2p-*.tmp )' >> /etc/rc.d/rc.local
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local
echo " sh /etc/rc.d/rc.i2p start" >> /etc/rc.d/rc.local
echo "fi" >> /etc/rc.d/rc.local
echo '#/I2P' >> /etc/rc.d/rc.local
echo "${DATABOT}" >> /etc/rc.d/rc.local
echo -n "additional modifications applied,"
else
echo -n "looks ok so far,"
fi
echo " Done."
fi
echo -n "Check 2: /etc/rc.d/rc.local_shutdown "
I2PRCB=`grep -c /etc/rc.d/rc.local_shutdown -e '/etc/rc.d/rc.i2p'`
if [ $I2PRCB -eq 0 ] ; then
echo "#I2P" >> /etc/rc.d/rc.local_shutdown
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local_shutdown
echo " sh /etc/rc.d/rc.i2p stop" >> /etc/rc.d/rc.local_shutdown
echo "fi" >> /etc/rc.d/rc.local_shutdown
echo "#/I2P" >> /etc/rc.d/rc.local_shutdown
echo "modified."
else
echo -n "looks OK so far,"
# Fix old installs
echo -n " Check 1A: "
I2PRCG=`grep -c /etc/rc.d/rc.local_shutdown -e '#I2P'`
if [ $I2PRCG -eq 0 ] ; then
DATATOP=$(cat /etc/rc.d/rc.local_shutdown | sed -n '0,/^if \[ -x \/etc\/rc\.d\/rc\.i2p \] ; then/p' | sed '$d' )
DATABOT=$(cat /etc/rc.d/rc.local_shutdown | sed -n '/^if \[ -x \/etc\/rc\.d\/rc\.i2p \] ; then/,$p' | sed -n '/^fi/,$p' | sed "1d")
echo "${DATATOP}" > /etc/rc.d/rc.local_shutdown
echo '#I2P' >> /etc/rc.d/rc.local_shutdown
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local_shutdown
echo " sh /etc/rc.d/rc.i2p stop" >> /etc/rc.d/rc.local_shutdown
echo "fi" >> /etc/rc.d/rc.local_shutdown
echo "#/I2P" >> /etc/rc.d/rc.local_shutdown
echo "${DATABOT}" >> /etc/rc.d/rc.local_shutdown
echo -n "additional modifications applied,"
else
echo -n "looks OK so far,"
fi
echo -n " Check 1B: "
I2PRCH=`grep -c /etc/rc.d/rc.local_shutdown -e '#/I2P'`
if [ $I2PRCH -eq 0 ] ; then
DATATOP=$(cat /etc/rc.d/rc.local_shutdown | sed -n '0,/^#I2P/p' | sed '$d' )
DATABOT=$(cat /etc/rc.d/rc.local_shutdown | sed -n '/^#I2P/,$p' | sed -n '/^fi/,$p' | sed "1d")
echo "${DATATOP}" > /etc/rc.d/rc.local_shutdown
echo '#I2P' >> /etc/rc.d/rc.local_shutdown
echo "if [ -x /etc/rc.d/rc.i2p ] ; then" >> /etc/rc.d/rc.local_shutdown
echo " sh /etc/rc.d/rc.i2p stop" >> /etc/rc.d/rc.local_shutdown
echo "fi" >> /etc/rc.d/rc.local_shutdown
echo "#/I2P" >> /etc/rc.d/rc.local_shutdown
echo "${DATABOT}" >> /etc/rc.d/rc.local_shutdown
echo -n "additional modifications applied,"
else
echo -n "looks OK so far,"
fi
echo " Done."
fi
if [ -f /etc/rc.d/rc.i2p ] ; then
if [ -x /etc/rc.d/rc.i2p ] ; then
chmod +x /etc/rc.d/rc.i2p.new
fi
# Hopefully get admin's attention.
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -e "\007" ; sleep 0.3
echo "It apears that you already have /etc/rc.d/rc.i2p"
echo "You should replace it with /etc/rc.d/rc.i2p.new as soon as possible"
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -ne "\007" ; sleep 0.3
echo -e "\007" ; sleep 0.3
else
mv /etc/rc.d/rc.i2p.new /etc/rc.d/rc.i2p
echo
echo "Installation finished. The i2p start/stop script has been"
echo "installed in /etc/rc.d . You should chmod +x"
echo '/etc/rc.d/rc.i2p to start it on boot.'
echo
fi
exit

View File

@ -1,57 +0,0 @@
#!/bin/sh
#
# Heavily based on the Slackware 12.2 SlackBuild
# Slackware build script for I2P
#
# PLEASE READ THIS:
# How to start I2P:
# After installpkg command, doinst.sh will execute a post-installation script
# needed by I2P. After that you have to chmod +x /etc/rc.d/rc.i2p and start
# I2P service with /etc/rc.d/rc.i2p start.
#
# Now tell your browser to user this proxy: localhost on port 4444 and open
# this page: http://localhost:7657/index.jsp
#
# Here you can configure I2P, watch network status and navigate anonimously.
# It's suggested to subscribe to various dns host, like i2host.i2p
# For any additional information, visit i2host.i2p and forum.i2p
#
CWD=$(pwd)
TMP=/tmp
PKG=/$TMP/package-base-i2p
NAME=i2p-base
VERSION=0.0.4
BUILD=1sponge
ARCH=noarch
INSTALL_DIR=opt
# Less than slackware 13?
SLKPLT=$(cat /etc/slackware-version | sed -re "s/(Slackware )([0-9]*)(.*)/\2/")
if [ $SLKPLT -lt 13 ] ; then
EXT=tgz
else
EXT=txz
fi
rm -rf $PKG
mkdir -p $PKG
cd $PKG
chown -R root:root .
mkdir -p $PKG/etc/rc.d
mkdir -p $PKG/install
sed "s|directory|/$INSTALL_DIR/i2p/i2prouter|g" "$CWD/rc.i2p_def" > $PKG/etc/rc.d/rc.i2p.new
chmod 644 $PKG/etc/rc.d/rc.i2p.new
cat "$CWD/doinst.sh" > $PKG/install/doinst.sh
cat "$CWD/slack-desc" > $PKG/install/slack-desc
cd $PKG
#
# Not really that important to exec this
# as there aren't any deps we don't know.
#
# requiredbuilder -v -y -s $CWD $PKG
#
cat "$CWD/slack-required" > $PKG/install/slack-required
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.$EXT

View File

@ -1,68 +0,0 @@
#!/bin/sh
# Start/stop i2p service.
i2p_start() {
# Check if router is up first!
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory status )'" > /dev/null
if [ $? -eq 0 ] ; then {
# I2p is already running, so tell the user.
echo "I2P is already running..."
i2p_status
}
else
{
# Just in-case there are leftover junk in /tmp...
rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping
# Now that all junk is cleaned up, start.
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory start )'"
}
fi
}
i2p_stop() {
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory stop )'"
rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping
}
i2p_restart() {
# We want a FULL cycle here, not the wrappers idea of this!
i2p_stop
i2p_start
}
i2p_status() {
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory status )'"
}
i2p_console() {
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory console )'"
}
i2p_dump() {
/bin/su - -c "/bin/bash -l -c '( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\" ; directory dump )'"
}
case "$1" in
'start')
i2p_start
;;
'stop')
i2p_stop
;;
'restart')
i2p_restart
;;
'status')
i2p_status
;;
'console')
i2p_console
;;
'dump')
i2p_dump
;;
*)
echo "usage $0 start|stop|restart|status|console|dump"
;;
esac

View File

@ -1,10 +0,0 @@
An rc file called rc.i2p has been placed into the /etc/rc.d directory.
If you want to change installation dir, change the variable INSTALL_DIR
on base-i2p.SlackBuild and rebuild the package. You also will need to do the
same for the i2p package.
The install script will insert everything needed into /etc/rc.d/rc.local and
into /etc/rc.d/rc.local_shutdown automatically.
If you want to start I2P at boot you have to chmod +x /etc/rc.d/rc.i2p

View File

@ -1,19 +0,0 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in. You must make
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
base-i2p: base-i2p (I2P anonymizing network base config files)
base-i2p:
base-i2p: I2P is an anonymizing network, offering a simple layer that
base-i2p: identity-sensitive applications can use to securely communicate. All
base-i2p: data is wrapped with several layers of encryption, and the network is
base-i2p: both distributed and dynamic, with no trusted parties.
base-i2p: Many applications are available that interface with I2P, including
base-i2p: mail, peer-peer file sharing, IRC chat, and others.
base-i2p:
base-i2p: This package provides the startup files.
base-i2p:

View File

@ -1 +0,0 @@
bash >= 3.1.017

89
Slackware/i2p/README Normal file
View File

@ -0,0 +1,89 @@
The I2P package will be installed to /opt/i2p.
To install to another location, set the variable INSTALL_DIR in i2p.SlackBuild
and rebuild the package.
Installing and Upgrading:
=========================
I2P has an auto-update function but generally speaking packages are managed by
packaging systems. Changing a package's files outside of the package system can
cause problems. To upgrade when there's a new I2P release, retrieve the new
source, re-run the SlackBuild, then use upgradepkg to update.
To ignore all this and upgrade "in-network", simply change the permissions of the installation
directory (/opt/i2p by default). Something like the following would suffice:
chown -R USERNAME /opt/i2p
Starting and using I2P
======================
Using the initscript
--------------------
To start I2P at boot, set the executable bit on /etc/rc.d/rc.i2p, add this
script to rc.local*, and set the variable "RUN_AS_USER" in /etc/rc.d/rc.i2p.
Optionally, create a new user/group with limited rights to run I2P.
Something like the following would work to start I2P at system boot, running under the
"i2p" account:
echo '[ -x /etc/rc.d/rc.i2p ] && /etc/rc.d/rc.i2p start' >> /etc/rc.d/rc.local
echo '[ -x /etc/rc.d/rc.i2p ] && /etc/rc.d/rc.i2p stop' >> /etc/.rc.d/rc.local_shutdown
sed -i .bak 's/^.*\(RUN_AS_USER\)=.*/\1=i2p/' /etc/rc.d/rc.i2p
chmod 755 /etc/rc.d/rc.i2p
Unless running as a user named "i2psvc", I2P's config directory defaults to
$HOME/.i2p. In the case of the "i2psvc" user, the default config directory is
/var/lib/i2p/i2p-config.
It should not need to be said that using the "root" account is not recommended.
When running using the initscript, I2P will write its logs to /var/log/i2p.
Starting I2P "on-demand"
------------------------
As with a normal installation, I2P can be started with "i2prouter start". The
i2prouter and eepget scripts hve been installed to /usr/bin so they'll be
accessible in the default system PATH.
When running using the i2prouter script, I2P will write its logs to $HOME/.i2p.
Configuring your browser
------------------------
In order to access eepSites (I2P-internal web sites) your web browser needs to
be configured. Set the HTTP Proxy to 127.0.0.1 and port 4444. For more information, see
https://geti2p.net/en/about/browser-config
The I2P router console is reachable at http://127.0.0.1:7657.
Addressbook subscriptions
-------------------------
Please see the FAQs at http://i2p-projekt.i2p/faq or https://geti2p.net/faq for information about
the various addressbook services.
Chatting on IRC
---------------
I2P comes preconfigured with a tunnel pointing to the I2P-only IRC network,
Irc2P. Signing on is easy, just connect to 127.0.0.1 on port 6668. Do not
configure a proxy in your IRC client.
Additional information
======================
Within I2P: http://i2p-projekt.i2p/, http://forum.i2p/, http://zzz.i2p/, http://trac.i2p2.i2p/
On the Internet: https://geti2p.net/, https://trac.i2p2.de
Manpages: i2prouter(1), eepget(1)

View File

@ -2,7 +2,7 @@
<project basedir="." default="slackpkg">
<target name="slackpkg">
<echo message="Building Slackware package." />
<exec executable="./i2p.SlackBuild">
</exec>
<chmod file="./i2p.Slackbuild" perm="755" />
<exec executable="./i2p.SlackBuild" failifexecutionfails="true" />
</target>
</project>

View File

@ -1,72 +1,60 @@
#!/bin/sh
# Abort on error or unset variables
set -e
set -u
# This is changed by i2p.SlackBuild
INST_DIR=directory
PKGNAME="%pkg"
( cd install
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
if [ ! -r $NEW ]; then
# If we get here there's a flaw in the packaging. We'll just return so that
# we don't emit a spurious error for the user. (It's not the user's problem).
return
fi
echo
for i in *.config ; {
if [ -f $INST_DIR/$i ] ; then
echo "Please check ${INST_DIR}${i}, as there is a new version."
cp $i $INST_DIR/$i.new
else
cp $i $INST_DIR/$i
fi
# If this file doesn't exist yet, drop the .new extension.
if [ ! -r $OLD ]; then
mv $NEW $OLD
return
elif [ "$(md5sum $OLD | cut -d' ' -f1)" = "$(md5sum $NEW | cut -d' ' -f1)" ]; then
# If there are no differences in the files, remove the file with the .new extension.
rm $NEW
return
fi
# Alert the admin if they differ, but let's not be terribly obnoxious about it.
echo "WARNING: The files $OLD and $NEW differ." >&2
}
)
# Unlike previous versions of the package, we install i2prouter and eepget to /usr/bin
# to make them available within the system PATH.
( cd $INST_DIR
if [ -f blocklist.txt ] ; then
echo "Please check ${INST_DIR}blocklist.txt, as there is a new version."
else
mv blocklist.txt.new blocklist.txt
fi
)
# Users might still want to /opt/i2p/i2prouter or /opt/i2p/eepget so we'll create symlinks
# in the installation directory.
ln -sf /usr/bin/eepget $INST_DIR
ln -sf /usr/bin/i2prouter $INST_DIR
(cd /usr/doc/$PKGNAME; ln -sf $INST_DIR/history.txt changelog)
( cd $INST_DIR/eepsite
if [ -f jetty.xml ] ; then
echo "Please check ${INST_DIR}/eepsite, as there are new files."
else
find $PKG/$INSTALL_DIR/i2p -name "*.xml.new" -exec sh -c 'mv "$0" "${0/.new}"' {} \;
fi
)
( cd $INST_DIR/eepsite/docroot
if [ -f index.html ] ; then
rm index.html.new
else
mv index.html.new index.html
fi
if [ -f favicon.ico ] ; then
rm favicon.ico.new
else
mv favicon.ico.new favicon.ico
fi
)
echo
echo "FINISHING I2P INSTALLATION. PLEASE WAIT."
cd $INST_DIR
OS_ARCH=`uname -m`
X86_64=`echo "$OS_ARCH" | grep x86_64`
if [ "X$X86_64" = "X" ]; then
wrapperpath="./lib/wrapper/linux"
if $(uname -m | grep -q '64'); then
(cd $INST_DIR; ln -sf i2psvc-linux-x86-64 i2psvc)
else
wrapperpath="./lib/wrapper/linux64"
(cd $INST_DIR; ln -sf i2psvc-linux-x86-32 i2psvc)
fi
cp $wrapperpath/libwrapper.so ./lib/
cp $wrapperpath/wrapper.jar ./lib/
cp $wrapperpath/i2psvc .
rm -rf ./lib/wrapper
chmod 744 ./i2psvc
echo
echo "Installation finished."
echo
config /etc/rc.d/rc.i2p.new
config $INST_DIR/wrapper.config.new
exit
if [ -e /var/log/packages/i2p-base* ]; then
echo "Warning: This package supersedes the 'i2p-base' package." >&2
echo
echo "You may want to 'removepkg i2p-base'" >&2
echo "and check the contents of /etc/rc.d/rc.local*" >&2
echo "for correctness" >&2
fi
# Remove extraneous 'sh' from sponge's set-up
sed -i 's|sh /etc/rc\.d/rc\.i2p|/etc/rc.d/rc.i2p|g' /etc/rc.d/rc.local*

View File

@ -3,135 +3,124 @@
# Heavily based on the Slackware 12.2 SlackBuild
# Slackware build script for I2P
#
# PLEASE READ THIS:
# Probably you will never have to update I2P packages with upgradepkg,
# just because I2P has an auto-update function.
# Really you should not ever use any "upgrade" method.
#
# The correct way to upgrade is to:
# 1: install the upgrade
# 2: remove the old package
#
# It is a terrible shame that upgradepkg doesn't do this, infact,
# it would actually be the correct way for *any* package!
# Packages are generally prohibited from being updated outside
# of the package manager; this I2P SlackBuild is no different.
#
# If you'd like to use the I2P "in-network" updates anyway, you'll need to
# grant the user that I2P will run as write permission to the installation directory
# (/opt/i2p by default).
#
# For safety's sake, a user's I2P config files will *never* be overwritten by any upgrade method.
# In the future this SlackBuild may alert when a default config file is updated.
##
BUILD=1sponge
# Make sure makepkg and friends can be found
PATH=$PATH:/sbin
# abort on error and unset variables (same as set -e and set -u, respectively)
set -o errexit
set -o nounset
if [ $(id -ur) -ne 0 ]; then
echo "ERROR: SlackBuilds require root access." >&2
exit 1
fi
BUILD=1kytv
# INSTALL_DIR is referenced from /, don't prefix it with a '/'
INSTALL_DIR=opt
NAME=i2p
ARCH=noarch
# Less than slackware 13?
SLKPLT=$(cat /etc/slackware-version | sed -re "s/(Slackware )([0-9]*)(.*)/\2/")
if [ $SLKPLT -lt 13 ] ; then
EXT=tgz
else
EXT=txz
fi
#
# This mess is here due to the totally moronic way i2p does versioning.
# We correct it here.
#
ROUTER=$(echo -ne "_")$(cat ../../router/java/src/net/i2p/router/RouterVersion.java | grep -e "public final static long BUILD" | cut -f2 -d"=" | cut -f1 -d";" | sed -re "s/ //g")
if [ "$ROUTER" == "_" ] ; then
ROUTER="_0"
fi
#
# That was the easy one, now for the tough one.
#
CORE=$(cat ../../core/java/src/net/i2p/CoreVersion.java | grep -e "public final static String VERSION" | cut -f2 -d'"' | sed -re "s/ //g")
CORE1=$(echo -n $CORE.x.x | sed -re "s/(.*)\.(.*)\.(.*)\.(.*)/\1/")
CORE2=$(echo -n $CORE.x | sed -re "s/(.*)\.(.*)\.(.*)\.(.*)/\1/")
if [ "$CORE.x.x" == "$CORE1" ] ; then
CORE=$(echo -ne $CORE".0.0")
fi
if [ "$CORE.x" == "$CORE2" ] ; then
CORE=$(echo -ne $CORE".0")
fi
VERSION=$(echo $CORE$ROUTER)
#
# Whew!
# OK, let's build i2p
#
CWD=$(pwd)
CWD=$(readlink -m $(dirname $0))
I2PSRC=$(readlink -m $CWD/../../)
TMP=/tmp
PKG=$TMP/package-i2p
rm -rf $PKG
mkdir -p $PKG
cd $CWD/../../
if [ -e "/etc/slackware-version" ]; then
# Older than Slackware 13?
SLACKVER=$(sed -e "s/Slackware\s\+\([0-9]\+\)\.\?\([0-9]\+\)\?/\1/" /etc/slackware-version)
if [ $SLACKVER -lt 13 ] ; then
EXT=tgz
else
EXT=txz
fi
else
echo "ERROR: This script is only intended for use on Slackware systems.">&2
exit 1
fi
# Extract version strings
I2PBUILD=$(sed -e '/^.\+long\s\+BUILD/!d' -e 's/^.\+long\s\+BUILD\s\+=\s\+\([0-9]\+\);/\1/' $I2PSRC/router/java/src/net/i2p/router/RouterVersion.java)
# Thanks to user "ihavei2p" for the second awk statement
# If the version is x.y, it'll be set to x.y.0. Otherwise the version string will be unchanged
CORE=$(awk -F'"' '/static\s+String\s+VERSION/{print $2}' $I2PSRC/core/java/src/net/i2p/CoreVersion.java | \
awk -F. '{ if (NF > 3) { print; exit } else if ($3 == "") { $3=0; print $1"."$2"."$3 } else print }')
VERSION="${CORE}_${I2PBUILD}"
[ -d $PKG ] && rm -rf $PKG
mkdir -p $PKG/$INSTALL_DIR $PKG/install
cd "$I2PSRC"
ant distclean
#ant dist
ant tarball
ant jbigi-linux-x86-only preppkg-unix
tar xjvf i2p.tar.bz2 -C $TMP
chown -R root:root $I2PSRC/pkg-temp
cp -a $I2PSRC/pkg-temp $PKG/$INSTALL_DIR/i2p
cd $TMP/i2p
chown -R root:root .
mkdir -p $PKG/$INSTALL_DIR/
cp -a ../i2p $PKG/$INSTALL_DIR/
mkdir -p $PKG/install
#############################################################################
# Preconfigureation to make package smaller, and...
# we keep as much as reasonable in the installation directory.
# This makes the install map fairly well to the standard installation.
# It also makes it easier to find the log and pid files!
#############################################################################
# $INSTALL_DIR is used by this SlackBuild.
# [%$]INSTALL_PATH , [%$]SYSTEM_java_io_tmpdir, and [%$]USER_HOME have the correct paths set
# by the IzPack installer.
cd $PKG/$INSTALL_DIR/i2p
for file in wrapper.config eepget i2prouter runplain.sh; do
sed -i "s|[%$]INSTALL_PATH|/$INSTALL_DIR/i2p|g;s|[$%]SYSTEM_java_io_tmpdir|$TMP|g;s/[%$]USER_HOME/\$HOME/g" $file
done
mv wrapper.config wrapper.config.new
# wrapper.config $INSTALL_PATH and $SYSTEM_java_io_tmpdir
sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" wrapper.config > a
sed "s|\$SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > wrapper.config
# eepget %INSTALL_PATH
sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" eepget > a
rm eepget
mv a eepget
# runplain.sh %INSTALL_PATH and %SYSTEM_java_io_tmpdir
sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" runplain.sh > a
sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > runplain.sh
# i2prouter %INSTALL_PATH and %SYSTEM_java_io_tmpdir
sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" i2prouter > a
rm i2prouter
mv a i2prouter
sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" i2prouter > a
sed "s|#ALLOW_ROOT=true|ALLOW_ROOT=true|g" a > i2prouter
install -d $PKG/usr/bin
install -d $PKG/usr/doc/$NAME-$VERSION
install -d $PKG/etc/rc.d
mv licenses LICENSE.txt -t $PKG/usr/doc/$NAME-$VERSION
chmod 744 ./i2prouter
chmod 744 ./osid
chmod 744 ./runplain.sh
chmod 744 ./eepget
chmod 744 ./scripts/i2pbench.sh
chmod 744 ./scripts/i2ptest.sh
rm -Rf ./lib/*.dll ./*.bat ./*.exe ./installer ./icons ./a postinstall.sh
# runplain.sh will live in the installation directory. eepget and i2prouter will go to /usr/bin
# with symlinks in INST_DIR (created in doinst.sh)
install -m755 i2prouter $PKG/usr/bin
install -m755 eepget $PKG/usr/bin
chmod 755 ./runplain.sh
mv $PKG/$INSTALL_DIR/i2p/*.config $PKG/install
mv $PKG/$INSTALL_DIR/i2p/blocklist.txt $PKG/$INSTALL_DIR/i2p/blocklist.txt.new
find $PKG/$INSTALL_DIR/i2p -name "*.xml" -exec mv {} {}.new \;
mv $PKG/$INSTALL_DIR/i2p/eepsite/docroot/index.html $PKG/$INSTALL_DIR/i2p/eepsite/docroot/index.html.new
mv $PKG/$INSTALL_DIR/i2p/eepsite/docroot/favicon.ico $PKG/$INSTALL_DIR/i2p/eepsite/docroot/favicon.ico.new
sed "s|directory|/$INSTALL_DIR/i2p/|g" $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
if [ $INSTALL_DIR != 'opt' ]; then
sed "s|\(The I2P package\)\s\+will be\s\+\(installed to\).+|\1 has been \2 $INSTALL_DIR/i2p|g" $CWD/README > $PKG/usr/doc/$NAME-$VERSION/README
else
sed "s|will be installed|has been installed|" $CWD/README > $PKG/usr/doc/$NAME-$VERSION/README
fi
install -d $PKG/usr/man/man1
gzip -9 man/*.1
install -m644 man/*.1.gz $PKG/usr/man/man1
rm -rf ./man
# We install all x86 wrapper binaries.
# The i2prouter script will try to determine the OS (linux), the bits (32 VS 64) and should be able
# to figure out the correct wrapper binary to use.
# However: In case the i2prouter script's detection fails, "$INST_DIR/i2psvc" will point to
# what 'we' think the correct binary is.
#
# A good reason for installing all binaries: in case the user, for whatever reason, switches from an
# x64 JRE to an x86 JRE, I2P should continue to work without needing to be reinstalled.
install -m755 $I2PSRC/installer/lib/wrapper/linux/i2psvc ./i2psvc-linux-x86-32
install -m644 $I2PSRC/installer/lib/wrapper/linux/libwrapper.so ./lib/libwrapper-linux-x86-32.so
install -m755 $I2PSRC/installer/lib/wrapper/linux64/i2psvc ./i2psvc-linux-x86-64
install -m644 $I2PSRC/installer/lib/wrapper/linux64/libwrapper.so ./lib/libwrapper-linux-x86-64.so
install -m644 $I2PSRC/installer/lib/wrapper/all/wrapper.jar ./lib/wrapper.jar
install -m644 $I2PSRC/build/jbigi.jar $PKG/$INSTALL_DIR/i2p/lib/jbigi.jar
rm -f ./postinstall.sh ./osid ./INSTALL-*.txt
sed "s|directory|/$INSTALL_DIR/i2p|" $CWD/doinst.sh > $PKG/install/doinst.sh
sed -i "s|%pkg|$NAME-$VERSION|" $PKG/install/doinst.sh
sed "s|%INST_DIR|/$INSTALL_DIR/i2p|" $CWD/rc.i2p> $PKG/etc/rc.d/rc.i2p.new
cp $CWD/slack-desc $PKG/install/slack-desc
cd $PKG
#
# requiredbuilder messes up REALLY bad, and thinks java is perl?!
# It also did not catch the shell requirements! BOOOOOOOOOOO! HISSSSSSSS!
#
# requiredbuilder -v -y -s $CWD $PKG
#
cat $CWD/slack-required > $PKG/install/slack-required
cp $CWD/slack-required $PKG/install/slack-required
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.$EXT

185
Slackware/i2p/rc.i2p Normal file
View File

@ -0,0 +1,185 @@
#!/bin/sh
# Abort on errors
set -e
##
# This *must* be configured. Set this to the user that will run I2P.
# Note: If you don't want I2P to start automatically at boot,
# use "i2prouter start" as a non-root user to start I2P.
#RUN_AS_USER=
##
##
# Set the locale as desired.
# Note: this is not the same as the language shown in the I2P router console.
# This affects the locale used in wrapper.log. For best results, use a
# unicode enabled locale. This is especially important for foreign language torrents.
#
# If not set the user's configured locale will be used.
#RCLOCALE=
##
#####################################################
# Nothing below this point should need to be edited #
#####################################################
# %INST_DIR is set by i2p.SlackBuild
INSTALL_DIR="%INST_DIR"
# Make sure the package is installed and that the wrapper can be found
[ -d $INSTALL_DIR ] && [ -x $INSTALL_DIR/i2psvc ] || (echo "The I2P package is not installed" >&2 ; exit 1)
if [ -z $RUN_AS_USER ]; then
echo "ERROR: RUN_AS_USER not configured in $0" >&2
exit 1
fi
if [ $(id -ur) -ne 0 ]; then
echo 'ERROR: You must be root to start this service.' >&2
echo
exit 1
fi
if [ -z $RCLOCALE ]; then
if [ ! $(locale -a |grep -q "en_US\.utf8") ]; then
RCLOCALE="en_US.utf8"
fi
fi
# Abort this script if any referenced variables haven't been set
set -u
if $(uname -m |grep -q '64'); then
BITS='64'
else
BITS=''
fi
PATH="$PATH:/usr/lib$BITS/java/bin:/usr/lib$BITS/java/jre/bin"
RUN=/var/run/i2p
PIDFILE="$RUN/i2p.pid"
WRAPPER_CONF="$INSTALL_DIR/wrapper.config"
WRAPPERLOG=/var/log/i2p/wrapper.log
I2PTEMP="/tmp/i2p-daemon"
DESC="The I2P daemon"
JAVABINARY=$(awk -F'=' '/^ *wrapper\.java\.command/{print $2}' "$WRAPPER_CONF")
if [ ! $(which $JAVABINARY 2>/dev/null) ]; then
for rc in /etc/profile.d/*jdk*.sh /etc/profile.d/*java*.sh; do
[ -r $rc ] && . $rc
done
if [ ! $(which $JAVABINARY 2>/dev/null) ]; then
echo "ERROR: Cannot find java. Please set the path to java in $WRAPPER_CONF" >&2
exit 1
fi
fi
JAVA=$(which $JAVABINARY 2>/dev/null)
I2P_ARGS="$WRAPPER_CONF \
wrapper.java.additional.1=-DloggerFilenameOverride=/var/log/i2p/log-router-@.txt \
wrapper.java.additional.10=-Dwrapper.logfile=$WRAPPERLOG \
wrapper.java.additional.11=-Di2p.dir.pid=$RUN \
wrapper.java.additional.12=-Di2p.dir.temp=$I2PTEMP \
wrapper.java.command=$JAVA \
wrapper.logfile=$WRAPPERLOG \
wrapper.pidfile=$PIDFILE \
wrapper.daemonize=TRUE"
LC_ALL=$RCLOCALE
LANG=$RCLOCALE
export LC_ALL LANG
is_running() {
if [ -r $PIDFILE ]; then
PID="$(cat ${PIDFILE})" 2>/dev/null 2>&1
if ! kill -0 $PID >/dev/null 2>&1; then
rm "$PIDFILE"
return 1
else
return 0
fi
else
return 1
fi
}
start() {
if is_running; then
echo "ERROR: $DESC is already running." >&2
fi
for DIR in $RUN $I2PTEMP; do
test -d $DIR && rm -rf $DIR
mkdir -p $DIR
chown -R $RUN_AS_USER $DIR
done
[ -d /var/log/i2p ] || mkdir /var/log/i2p
chown -R $RUN_AS_USER /var/log/i2p
echo -n "Starting $DESC..."
TZ=UTC su $RUN_AS_USER -c "$INSTALL_DIR/i2psvc $I2P_ARGS"
is_running
echo "[pid: $PID]"
}
stop(){
if is_running; then
echo -n "Stopping $DESC [pid: $PID] (this could take a while)."
kill "$PID" >/dev/null 2>&1
while kill -0 "$PID" > /dev/null 2>&1; do
echo -n .
sleep 1
done
rm -rf "$RUN" "$I2PTEMP"
echo done.
return 0
else
echo "$DESC is not running." >&2
return 1
fi
}
# Unset +u to allow the 'usage' text to be displayed
set +u
case "$1" in
start)
start
;;
status)
if is_running; then
echo "$DESC is running [pid: $PID]" >&2
else
echo "$DESC is not running." >&2
fi
;;
stop)
stop
;;
graceful)
if is_running; then
kill -HUP $PID
echo "Graceful shutdown of $DESC initiated." >&2
echo "This may take up to 11 minutes." >&2
fi
;;
dump)
if is_running; then
kill -3 $PID
echo "Threads dumped to $WRAPPERLOG" >&2
else
echo "$DESC is not running." >&2
fi
;;
restart)
if is_running; then
stop
start
else
echo "$DESC is not running." >&2
fi
;;
*)
echo "usage: $0 start|stop|status|restart|graceful|dump"
;;
esac

View File

@ -1,47 +0,0 @@
Building:
The i2p package will be installed in /opt/i2p
If you want to change installation dir, change the variable INSTALL_DIR
on i2p.SlackBuild and rebuild the package. You will also need to do the same
in the base-i2p package.
Installation and Upgrade:
Probably you will never have to update i2p packages. However if you do,
be sure to installpkg first, then removepkg or custom config files can
be lost with upgradepkg. I2P has an auto-update function. However using
installpkg then removepkg lowers the demand on the I2P network as a
whole, and is by far faster.
After installpkg command, doinst.sh will execute a postinstallation script
needed by I2P. Be sure to also install the base-i2p package.
Optional:
chmod +x /etc/rc.d/rc.i2p only if you want it to start on boot and stop on
shutdown.
How to start I2P:
Start I2P service with-
sh /etc/rc.d/rc.i2p start
Now tell your browser to user this proxy: localhost on port 4444 and open
this page: http://localhost:7657/index.jsp
Here you can configure I2P, watch network status and navigate anonimously.
It's suggested to subscribe to various addressbook hosts so that you can
get to the many available eepsites and other service on I2P. These are not
set up by default for security reasons.
Please see the faqs on http://www.i2p2.i2p/ or http://www.i2p2.de/ on how
to subscribe to the various addressbook services.
To stop I2P:
/etc/rc.d/rc.i2p stop
For any additional information:
Within I2P- http://www.i2p2.i2p/, http://forum.i2p/, http://zzz.i2p
Internet (not reccomended!) - http://www.i2p2.de/, http://forum.i2p2.de/

View File

@ -6,7 +6,7 @@
# leave one space after the ':'.
|-----handy-ruler----------------------------------------------------------|
i2p: i2p (an anonymizing network)
i2p: I2P (an anonymizing network)
i2p:
i2p: I2P is an anonymizing network, offering a simple layer that
i2p: identity-sensitive applications can use to securely communicate. All
@ -14,6 +14,6 @@ i2p: data is wrapped with several layers of encryption, and the network is
i2p: both distributed and dynamic, with no trusted parties.
i2p: Many applications are available that interface with I2P, including
i2p: mail, peer-peer file sharing, IRC chat, and others.
i2p: WARNING: To upgrade installpkg FIRST _THEN_ removepkg.
i2p: For more information, see: http://www.i2p2.de/
i2p:
i2p: For more information, see: https://geti2p.net/
i2p:

View File

@ -1,4 +1 @@
jre >= 5
i2p-base >= 0.0.1
bash >= 3.1.017
jre >= 6

View File

@ -66,7 +66,7 @@ public class Main {
}
static void wrtxt(OutputStream CMDout, String s) throws IOException {
CMDout.write(s.getBytes());
CMDout.write(DataHelper.getUTF8(s));
CMDout.write('\n');
CMDout.flush();
}

View File

@ -63,7 +63,7 @@ public class Main {
}
static void wrtxt(OutputStream CMDout, String s) throws IOException {
CMDout.write(s.getBytes());
CMDout.write(DataHelper.getUTF8(s));
CMDout.write('\n');
CMDout.flush();
}

12
apps/BOB/build.gradle Normal file
View File

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

View File

@ -48,8 +48,9 @@ javac.classpath=\
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.version=1.7
javac.source=${javac.version}
javac.target=${javac.version}
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\

View File

@ -15,6 +15,8 @@
*/
package net.i2p.BOB;
import static net.i2p.app.ClientAppState.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@ -25,13 +27,18 @@ 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.Log;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.I2PAppThread;
import net.i2p.util.PortMapper;
import net.i2p.util.SimpleTimer2;
/**
@ -105,57 +112,80 @@ import net.i2p.util.SimpleTimer2;
*
* @author sponge
*/
public class BOB {
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";
private static NamedDB database;
private static Properties props = new Properties();
private static AtomicBoolean spin = new AtomicBoolean(true);
/** 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 static AtomicBoolean lock = new AtomicBoolean(false);
private final AtomicBoolean lock = new AtomicBoolean(false);
// no longer used.
// private static int maxConnections = 0;
/**
* Log a warning
*
* @param arg
*/
public static void info(String arg) {
System.out.println("INFO:" + arg);
(new Log(BOB.class)).info(arg);
}
private final I2PAppContext _context;
private final Logger _log;
private final ClientAppManager _mgr;
private final String[] _args;
private volatile ClientAppState _state = UNINITIALIZED;
/**
* Log a warning
*
* @param arg
*/
public static void warn(String arg) {
System.out.println("WARNING:" + arg);
(new Log(BOB.class)).warn(arg);
}
/**
* Log an error
*
* @param arg
*/
public static void error(String arg) {
System.out.println("ERROR: " + arg);
(new Log(BOB.class)).error(arg);
}
private volatile ServerSocket listener;
private volatile Thread _runner;
/**
* Stop BOB gracefully
* @deprecated unused
*/
public static void stop() {
spin.set(false);
@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();
}
/**
@ -163,129 +193,172 @@ public class BOB {
*
* @param args
*/
public static void main(String[] args) {
database = new NamedDB();
ServerSocket listener = null;
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.
SimpleScheduler Y1 = SimpleScheduler.getInstance();
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
i = Y1.hashCode();
i = Y2.hashCode();
Log _log = new Log(BOB.class);
try {
{
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
try {
FileInputStream fi = new FileInputStream(cfg);
props.load(fi);
fi.close();
} catch (FileNotFoundException fnfe) {
warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.");
warn(fnfe.toString());
save = true;
} catch (IOException ioe) {
warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.");
warn(ioe.toString());
}
{
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(_context.getConfigDir(), configLocation);
}
// 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, "7654");
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", "1");
save = true;
}
if (!props.containsKey("outbound.length")) {
props.setProperty("outbound.length", "1");
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(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
try {
warn("Writing new defaults file " + cfg.getAbsolutePath());
FileOutputStream fo = new FileOutputStream(cfg);
props.store(fo, cfg.getAbsolutePath());
fo.close();
} catch (IOException ioe) {
error("IOException on BOB config file " + cfg.getAbsolutePath() + ", " + ioe);
}
}
i = 0;
boolean g = false;
spin.set(true);
FileInputStream fi = null;
try {
info("BOB is now running.");
listener = new ServerSocket(Integer.parseInt(props.getProperty(PROP_BOB_PORT)), 10, InetAddress.getByName(props.getProperty(PROP_BOB_HOST)));
Socket server = null;
listener.setSoTimeout(500); // .5 sec
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 Thread(conn_c);
t.setName("BOB.DoCMDS " + i);
t.start();
i++;
}
}
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) {
error("IOException on socket listen: " + ioe);
ioe.printStackTrace();
_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 {
info("BOB is now shutting down...");
_log.info("BOB is now shutting down...");
_context.portMapper().unregister(PortMapper.SVC_BOB);
// Clean up everything.
try {
listener.close();
@ -296,28 +369,33 @@ public class BOB {
// We could order them to stop, but that could cause nasty issues in the locks.
visitAllThreads();
database.getReadLock();
int all = database.getcount();
database.releaseReadLock();
NamedDB nickinfo;
for (i = 0; i < all; i++) {
database.getReadLock();
nickinfo = (NamedDB) database.getnext(i);
nickinfo.getReadLock();
if (nickinfo.get(P_RUNNING).equals(Boolean.TRUE) && nickinfo.get(P_STOPPING).equals(Boolean.FALSE) && nickinfo.get(P_STARTING).equals(Boolean.FALSE)) {
nickinfo.releaseReadLock();
database.releaseReadLock();
database.getWriteLock();
nickinfo.getWriteLock();
nickinfo.add(P_STOPPING, new Boolean(true));
nickinfo.releaseWriteLock();
database.releaseWriteLock();
} else {
nickinfo.releaseReadLock();
database.releaseReadLock();
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();
}
info("BOB is now stopped.");
changeState(STOPPED);
_log.info("BOB is now stopped.");
}
}
@ -369,4 +447,86 @@ public class BOB {
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
}

File diff suppressed because it is too large Load Diff

View File

@ -18,11 +18,12 @@ 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.Log;
import net.i2p.util.I2PAppThread;
/**
* Listen on I2P and connect to TCP
@ -31,25 +32,23 @@ import net.i2p.util.Log;
*/
public class I2Plistener implements Runnable {
private NamedDB info, database;
private Log _log;
public I2PSocketManager socketManager;
public I2PServerSocket serverSocket;
private AtomicBoolean lives;
private final NamedDB info, database;
private final Logger _log;
private final I2PServerSocket serverSocket;
private final AtomicBoolean lives;
/**
* Constructor
* @param SS
* @param S
* @param S unused
* @param info
* @param database
* @param _log
*/
I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) {
I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
this.socketManager = S;
this.serverSocket = SS;
this.lives = lives;
}
@ -80,7 +79,7 @@ public class I2Plistener implements Runnable {
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}

View File

@ -19,19 +19,22 @@ 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->TCP
* Process I2P-&gt;TCP
*
* @author sponge
*/
public class I2PtoTCP implements Runnable {
private I2PSocket I2P;
private NamedDB info, database;
private final NamedDB info, database;
private Socket sock;
private AtomicBoolean lives;
private final AtomicBoolean lives;
/**
* Constructor
@ -53,8 +56,8 @@ public class I2PtoTCP implements Runnable {
}
private void runlock() {
database.releaseReadLock();
info.releaseReadLock();
database.releaseReadLock();
}
/**
@ -75,23 +78,15 @@ public class I2PtoTCP implements Runnable {
die:
{
try {
try {
rlock();
} catch (Exception e) {
break die;
}
rlock();
try {
host = info.get("OUTHOST").toString();
port = Integer.parseInt(info.get("OUTPORT").toString());
tell = info.get("QUIET").equals(Boolean.FALSE);
} catch (Exception e) {
runlock();
break die;
}
try {
} finally {
runlock();
} catch (Exception e) {
break die;
}
sock = new Socket(host, port);
sock.setKeepAlive(true);
@ -104,15 +99,15 @@ public class I2PtoTCP implements Runnable {
if (tell) {
// tell who is connecting
out.write(I2P.getPeerDestination().toBase64().getBytes());
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 Thread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB");
t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
// Fire!
t.start();
q.start();

View File

@ -15,7 +15,7 @@
*/
package net.i2p.BOB;
import java.util.Enumeration;
import java.util.Map;
import java.util.Properties;
/**
@ -39,10 +39,8 @@ public class Lifted {
*
**/
public static void copyProperties(Properties src_prop, Properties dest_prop) {
for (Enumeration propertyNames = src_prop.propertyNames();
propertyNames.hasMoreElements();) {
Object key = propertyNames.nextElement();
dest_prop.put(key, src_prop.get(key));
for (Map.Entry<Object, Object> e : src_prop.entrySet()) {
dest_prop.put((String)e.getKey(), (String)e.getValue());
}
}
}

View File

@ -0,0 +1,44 @@
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

@ -21,10 +21,13 @@ 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;
/**
@ -35,18 +38,18 @@ import net.i2p.util.Log;
*/
public class MUXlisten implements Runnable {
private NamedDB database, info;
private Log _log;
private I2PSocketManager socketManager;
private ByteArrayInputStream prikey;
private final NamedDB database, info;
private final Logger _log;
private final I2PSocketManager socketManager;
private final ByteArrayInputStream prikey;
private ThreadGroup tg;
private String N;
private ServerSocket listener = null;
private int backlog = 50; // should this be more? less?
boolean go_out;
boolean come_in;
private AtomicBoolean lock;
private AtomicBoolean lives;
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.
@ -57,93 +60,104 @@ public class MUXlisten implements Runnable {
* @throws net.i2p.I2PException
* @throws java.io.IOException
*/
MUXlisten(AtomicBoolean lock, NamedDB database, NamedDB info, Log _log) throws I2PException, IOException, RuntimeException {
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 {
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);
this.database.getWriteLock();
this.info.getWriteLock();
this.info.add("STARTING", new Boolean(true));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
this.database.getReadLock();
this.info.getReadLock();
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");
Properties Q = new Properties();
Lifted.copyProperties(R, Q);
this.database.releaseReadLock();
this.info.releaseReadLock();
this.database.getReadLock();
this.info.getReadLock();
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());
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 + "]");
}
}
this.database.releaseReadLock();
this.info.releaseReadLock();
if (this.come_in) {
this.listener = new ServerSocket(port, backlog, host);
}
socketManager = I2PSocketManagerFactory.createManager(prikey, Q);
socketManager = I2PSocketManagerFactory.createManager(
prikey, i2cpHost, i2cpPort, Q);
} catch (IOException e) {
// Something went bad.
this.database.getWriteLock();
this.info.getWriteLock();
this.info.add("STARTING", new Boolean(false));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
throw new IOException(e.toString());
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
throw e;
} catch (RuntimeException e) {
// Something went bad.
this.database.getWriteLock();
this.info.getWriteLock();
this.info.add("STARTING", new Boolean(false));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
throw new RuntimeException(e);
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
throw e;
} catch (Exception e) {
// Something else went bad.
this.database.getWriteLock();
this.info.getWriteLock();
this.info.add("STARTING", new Boolean(false));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
wlock();
try {
this.info.add("STARTING", Boolean.FALSE);
} finally {
wunlock();
}
e.printStackTrace();
throw new RuntimeException(e);
}
}
private void rlock() throws Exception {
private void rlock() {
database.getReadLock();
info.getReadLock();
}
private void runlock() throws Exception {
database.releaseReadLock();
private void runlock() {
info.releaseReadLock();
database.releaseReadLock();
}
private void wlock() throws Exception {
private void wlock() {
database.getWriteLock();
info.getWriteLock();
}
private void wunlock() throws Exception {
private void wunlock() {
info.releaseWriteLock();
database.releaseWriteLock();
}
@ -157,24 +171,19 @@ public class MUXlisten implements Runnable {
Thread t = null;
Thread q = null;
try {
wlock();
try {
wlock();
try {
info.add("RUNNING", new Boolean(true));
info.add("RUNNING", Boolean.TRUE);
} catch (Exception e) {
lock.set(false);
wunlock();
return;
}
} catch (Exception e) {
lock.set(false);
return;
}
try {
} finally {
wunlock();
} catch (Exception e) {
lock.set(false);
return;
}
lives.set(true);
lock.set(false);
@ -190,32 +199,28 @@ public class MUXlisten implements Runnable {
// I2P -> TCP
SS = socketManager.getServerSocket();
I2Plistener conn = new I2Plistener(SS, socketManager, info, database, _log, lives);
t = new Thread(tg, conn, "BOBI2Plistener " + N);
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 Thread(tg, conn, "BOBTCPlistener " + N);
q = new I2PAppThread(tg, conn, "BOBTCPlistener " + N);
q.start();
}
wlock();
try {
wlock();
try {
info.add("STARTING", new Boolean(false));
info.add("STARTING", Boolean.FALSE);
} catch (Exception e) {
wunlock();
break quit;
}
} catch (Exception e) {
break quit;
}
try {
} finally {
wunlock();
} catch (Exception e) {
break quit;
}
boolean spin = true;
while (spin && lives.get()) {
@ -224,21 +229,17 @@ public class MUXlisten implements Runnable {
} catch (InterruptedException e) {
break quit;
}
rlock();
try {
rlock();
try {
spin = info.get("STOPPING").equals(Boolean.FALSE);
} catch (Exception e) {
runlock();
break quit;
}
} catch (Exception e) {
break quit;
}
try {
} finally {
runlock();
} catch (Exception e) {
break quit;
}
}
} // die
@ -258,16 +259,16 @@ public class MUXlisten implements Runnable {
try {
wlock();
try {
info.add("STARTING", new Boolean(false));
info.add("STOPPING", new Boolean(true));
info.add("RUNNING", new Boolean(false));
info.add("STARTING", Boolean.FALSE);
info.add("STOPPING", Boolean.TRUE);
info.add("RUNNING", Boolean.FALSE);
} catch (Exception e) {
lock.set(false);
wunlock();
return;
}
wunlock();
} catch (Exception e) {
} finally {
wunlock();
}
// Start cleanup.
while (!lock.compareAndSet(false, true)) {
@ -309,15 +310,15 @@ public class MUXlisten implements Runnable {
try {
wlock();
try {
info.add("STARTING", new Boolean(false));
info.add("STOPPING", new Boolean(false));
info.add("RUNNING", new Boolean(false));
info.add("STARTING", Boolean.FALSE);
info.add("STOPPING", Boolean.FALSE);
info.add("RUNNING", Boolean.FALSE);
} catch (Exception e) {
lock.set(false);
wunlock();
return;
}
wunlock();
} finally {
wunlock();
}
} catch (Exception e) {
}

View File

@ -15,7 +15,6 @@
*/
package net.i2p.BOB;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer2;
/**
@ -31,12 +30,10 @@ public class Main {
*/
public static void main(String[] args) {
// THINK THINK THINK THINK THINK THINK
SimpleScheduler Y1 = SimpleScheduler.getInstance();
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
BOB.main(args);
Y2.stop();
Y1.stop();
}
}

View File

@ -15,6 +15,12 @@
*/
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
*
@ -22,130 +28,62 @@ package net.i2p.BOB;
*/
public class NamedDB {
private volatile Object[][] data;
private volatile int index, writersWaiting, readers;
private final Map<String, Object> data;
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(false);
/**
* make initial NULL object
*
*/
public NamedDB() {
this.data = new Object[1][2];
this.index = this.writersWaiting = this.readers = 0;
this.data = new HashMap<String, Object>();
}
synchronized public void getReadLock() {
while ((writersWaiting != 0)) {
try {
wait();
} catch (InterruptedException ie) {
}
}
readers++;
public void getReadLock() {
lock.readLock().lock();
}
synchronized public void releaseReadLock() {
readers--;
notifyAll();
public void releaseReadLock() {
lock.readLock().unlock();
}
synchronized public void getWriteLock() {
writersWaiting++;
while (readers != 0 && writersWaiting != 1) {
try {
wait();
} catch (InterruptedException ie) {
}
}
public void getWriteLock() {
lock.writeLock().lock();
}
synchronized public void releaseWriteLock() {
writersWaiting--;
notifyAll();
public void releaseWriteLock() {
lock.writeLock().unlock();
}
/**
* Find objects in the array, returns it's index or throws exception
* @param key
* @return an objects index
* @throws ArrayIndexOutOfBoundsException when key does not exist
*/
public int idx(Object key) throws ArrayIndexOutOfBoundsException {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return i;
}
}
throw new ArrayIndexOutOfBoundsException("Can't locate key for index");
}
/**
* Delete an object from array if it exists
* Delete an object if it exists
*
* @param key
*/
public void kill(Object key) {
int i, j, k, l;
Object[][] olddata;
int didsomething = 0;
try {
k = idx(key);
} catch (ArrayIndexOutOfBoundsException b) {
return;
}
olddata = new Object[index + 2][2];
// copy to olddata, skipping 'k'
for (i = 0, l = 0; l < index; i++, l++) {
if (i == k) {
l++;
didsomething++;
}
for (j = 0; j < 2; j++) {
olddata[i][j] = data[l][j];
}
}
index -= didsomething;
data = olddata;
public void kill(String key) {
data.remove(key);
}
/**
* Add object to the array, deletes the old one if it exists
* Add object, deletes the old one if it exists
*
* @param key
* @param val
*/
public void add(Object key, Object val) {
Object[][] olddata;
int i, j;
i = 0;
kill(key);
olddata = new Object[index + 2][2];
// copy to olddata
for (i = 0; i < index; i++) {
for (j = 0; j < 2; j++) {
olddata[i][j] = data[i][j];
}
}
data = olddata;
data[index++] = new Object[]{key, val};
public void add(String key, Object val) {
data.put(key, val);
}
/**
* Get the object, and return it, throws RuntimeException
* Get the object, and return it, throws RuntimeException if not found
*
* @param key
* @return Object
* @throws java.lang.RuntimeException
* @param key non-null
* @return Object non-null
* @throws java.lang.RuntimeException if not found
*/
public Object get(Object key) throws RuntimeException {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return data[i][1];
}
}
public Object get(String key) throws RuntimeException {
Object rv = data.get(key);
if (rv != null)
return rv;
throw new RuntimeException("Key not found");
}
@ -155,33 +93,14 @@ public class NamedDB {
* @param key
* @return true if an object exists, else returns false
*/
public boolean exists(Object key) {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return true;
}
}
return false;
public boolean exists(String key) {
return data.containsKey(key);
}
/**
*
* @param i index
* @return an indexed Object
* @throws java.lang.RuntimeException
* @since 0.9.29 replaces getcount() and getnext(int)
*/
public Object getnext(int i) throws RuntimeException {
if (i < index && i > -1) {
return data[i][1];
}
throw new RuntimeException("No more data");
}
/**
* @return the count of how many objects
*/
public int getcount() {
return index;
public Collection<Object> values() {
return data.values();
}
}

View File

@ -27,9 +27,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
public class TCPio implements Runnable {
private InputStream Ain;
private OutputStream Aout;
private AtomicBoolean lives;
private final InputStream Ain;
private final OutputStream Aout;
private final AtomicBoolean lives;
/**
* Constructor
@ -116,7 +116,6 @@ public class TCPio implements Runnable {
Aout.close();
} catch (IOException ex) {
}
return;
}
}
}

View File

@ -20,9 +20,10 @@ 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.Log;
import net.i2p.util.I2PAppThread;
/**
* Listen on TCP port and connect to I2P
@ -31,12 +32,11 @@ import net.i2p.util.Log;
*/
public class TCPlistener implements Runnable {
private NamedDB info, database;
private Log _log;
public I2PSocketManager socketManager;
public I2PServerSocket serverSocket;
private ServerSocket listener;
private AtomicBoolean lives;
private final NamedDB info, database;
private final Logger _log;
private final I2PSocketManager socketManager;
private final ServerSocket listener;
private final AtomicBoolean lives;
/**
* Constructor
@ -45,7 +45,7 @@ public class TCPlistener implements Runnable {
* @param database
* @param _log
*/
TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) {
TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
@ -77,7 +77,7 @@ public class TCPlistener implements Runnable {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}

View File

@ -24,39 +24,37 @@ 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.i2ptunnel.I2PTunnel;
import net.i2p.I2PAppContext;
import net.i2p.util.I2PAppThread;
/**
*
* Process TCP->I2P
* Process TCP-&gt;I2P
*
* @author sponge
*/
public class TCPtoI2P implements Runnable {
private I2PSocket I2P;
private NamedDB info, database;
private Socket sock;
private I2PSocketManager socketManager;
private AtomicBoolean lives;
private final Socket sock;
private final I2PSocketManager socketManager;
private final AtomicBoolean lives;
/**
* Constructor
* @param i2p
* @param socket
* param info
* param database
* @param info unused
* @param database unused
*/
TCPtoI2P(I2PSocketManager i2p, Socket socket, NamedDB info, NamedDB database, AtomicBoolean lives) {
this.sock = socket;
this.info = info;
this.database = database;
this.socketManager = i2p;
this.lives = lives;
}
@ -70,12 +68,10 @@ public class TCPtoI2P implements Runnable {
* @throws IOException
*/
private static String lnRead(InputStream in) throws IOException {
String S;
StringBuilder builder = new StringBuilder();
int b;
char c;
S = new String();
while (true) {
b = in.read();
if (b == 13) {
@ -87,9 +83,9 @@ public class TCPtoI2P implements Runnable {
break;
}
c = (char) (b & 0x7f); // We only care about ASCII
S = new String(S + c);
builder.append(c);
}
return S;
return builder.toString();
}
/**
@ -101,22 +97,12 @@ public class TCPtoI2P implements Runnable {
*/
private void Emsg(String e, OutputStream out) throws IOException {
// Debugging System.out.println("ERROR TCPtoI2P: " + e);
out.write("ERROR ".concat(e).getBytes());
out.write("ERROR ".concat(e).getBytes("UTF-8"));
out.write(13);
out.write(10);
out.flush();
}
private void rlock() {
database.getReadLock();
info.getReadLock();
}
private void runlock() {
info.releaseReadLock();
database.releaseReadLock();
}
/**
* TCP stream to I2P stream thread starter
*
@ -160,8 +146,8 @@ public class TCPtoI2P implements Runnable {
// 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 Thread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB");
t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
// Fire!
t.start();
q.start();

View File

@ -34,15 +34,18 @@ import net.i2p.util.Log;
* The skeletal frame is here, just needs to be finished.
*
* @author sponge
* @deprecated incomplete, unused
*/
@Deprecated
public class UDPIOthread implements I2PSessionListener, Runnable {
private NamedDB info;
private Log _log;
private Socket socket;
private final NamedDB info;
private final Log _log;
private final Socket socket;
private DataInputStream in;
private DataOutputStream out;
private I2PSession _session;
private final I2PSession _session;
// FIXME never set
private Destination _peerDestination;
private boolean up;
@ -58,7 +61,6 @@ public class UDPIOthread implements I2PSessionListener, Runnable {
this._log = _log;
this.socket = socket;
this._session = _session;
}
/**
@ -106,8 +108,10 @@ public class UDPIOthread implements I2PSessionListener, Runnable {
// _log.debug("Message available: id = " + msgId + " size = " + size);
try {
byte msg[] = session.receiveMessage(msgId);
out.write(msg);
out.flush();
if (msg != null) {
out.write(msg);
out.flush();
}
} catch (I2PSessionException ise) {
up = false;
} catch (IOException ioe) {

View File

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

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<project name="addressbook" default="war" basedir=".">
<project name="addressbook" default="all" basedir=".">
<property name="src" value="java/src"/>
<property name="build" value="build"/>
@ -7,6 +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" />
<target name="all" depends="jar, emptyWar"/>
<target name="init">
<mkdir dir="${build}"/>
@ -31,59 +34,45 @@
<!-- Depend on classes instead of jars where available -->
<classpath>
<pathelement location="../../core/java/build/obj" />
<pathelement location="../jetty/jettylib/javax.servlet.jar" />
</classpath>
</depend>
</target>
<target name="compile" depends="init, depend">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
<target name="compile" depends="init, depend, warUpToDate">
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
<pathelement location="../../core/java/build/i2p.jar" />
<pathelement location="../jetty/jettylib/javax.servlet.jar" />
</classpath>
</javac>
</target>
<!-- unused for now, as we oddly ship addressbook as a .war -->
<target name="jar" depends="compile, changes">
<jar basedir="${build}" destfile="${dist}/${jar}">
<!-- set if unset -->
<property name="workspace.changes" value="" />
<manifest>
<attribute name="Main-Class" value="addressbook.Daemon"/>
<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}" />
</manifest>
</jar>
</target>
<target name="war" depends="compile, changes, warUpToDate" unless="war.uptodate">
<mkdir dir="${dist}/tmp"/>
<mkdir dir="${dist}/tmp/WEB-INF"/>
<mkdir dir="${dist}/tmp/WEB-INF/classes"/>
<copy todir="${dist}/tmp/WEB-INF/classes">
<fileset dir="${build}"/>
</copy>
<!-- set if unset -->
<property name="workspace.changes.tr" value="" />
<war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}">
<jar basedir="${build}" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="net.i2p.addressbook.Daemon"/>
<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}" />
<attribute name="X-Compile-Source-JDK" value="${javac.version}" />
<attribute name="X-Compile-Target-JDK" value="${javac.version}" />
</manifest>
</war>
<delete dir="${dist}/tmp"/>
</jar>
</target>
<target name="emptyWar" depends="init">
<jar destfile="${dist}/${war}" >
<manifest>
<attribute name="Note" value="Intentionally empty" />
</manifest>
</jar>
</target>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="${dist}/${war}">

View File

@ -27,8 +27,10 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Pattern;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.util.EepGet;
import net.i2p.util.SecureFile;
@ -37,18 +39,40 @@ import net.i2p.util.SecureFile;
* destinations. AddressBooks can be created from local and remote files, merged
* together, and written out to local files.
*
* Methods are NOT thread-safe.
*
* @author Ragnarok
*
*/
class AddressBook {
class AddressBook implements Iterable<Map.Entry<String, HostTxtEntry>> {
private final String location;
/** either addresses or subFile will be non-null, but not both */
private final Map<String, String> addresses;
private final Map<String, HostTxtEntry> addresses;
private final File subFile;
private boolean modified;
private static final boolean DEBUG = false;
private static final int MIN_DEST_LENGTH = 516;
private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100; // longer than any known cert type for now
/**
* 5-67 chars lower/upper case
*/
private static final Pattern HOST_PATTERN =
Pattern.compile("^[0-9a-zA-Z\\.-]{5,67}$");
/**
* 52 chars lower/upper case
* Always ends in 'a' or 'q'
*/
private static final Pattern B32_PATTERN =
Pattern.compile("^[2-7a-zA-Z]{51}[aAqQ]$");
/** not a complete qualification, just a quick check */
private static final Pattern B64_PATTERN =
Pattern.compile("^[0-9a-zA-Z~-]{" + MIN_DEST_LENGTH + ',' + MAX_DEST_LENGTH + "}={0,2}$");
/**
* Construct an AddressBook from the contents of the Map addresses.
*
@ -56,7 +80,7 @@ class AddressBook {
* A Map containing human readable addresses as keys, mapped to
* base64 i2p destinations.
*/
public AddressBook(Map<String, String> addresses) {
public AddressBook(Map<String, HostTxtEntry> addresses) {
this.addresses = addresses;
this.subFile = null;
this.location = null;
@ -86,7 +110,7 @@ class AddressBook {
new File("addressbook.tmp").delete();
}
*/
static final long MAX_SUB_SIZE = 3 * 1024 * 1024l; //about 5,000 hosts
static final long MAX_SUB_SIZE = 5 * 1024 * 1024l; //about 8,000 hosts
/**
* Construct an AddressBook from the Subscription subscription. If the
@ -107,10 +131,11 @@ class AddressBook {
* @param proxyPort port number of proxy
*/
public AddressBook(Subscription subscription, String proxyHost, int proxyPort) {
Map<String, String> a = null;
Map<String, HostTxtEntry> a = null;
File subf = null;
File tmp = null;
try {
File tmp = SecureFile.createTempFile("addressbook", null, I2PAppContext.getGlobalContext().getTempDir());
tmp = SecureFile.createTempFile("addressbook", null, I2PAppContext.getGlobalContext().getTempDir());
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);
@ -120,11 +145,13 @@ class AddressBook {
subscription.setLastFetched(I2PAppContext.getGlobalContext().clock().now());
subf = tmp;
} else {
a = Collections.EMPTY_MAP;
a = Collections.emptyMap();
tmp.delete();
}
} catch (IOException ioe) {
a = Collections.EMPTY_MAP;
if (tmp != null)
tmp.delete();
a = Collections.emptyMap();
}
this.addresses = a;
this.subFile = subf;
@ -144,23 +171,40 @@ class AddressBook {
*/
public AddressBook(File file) {
this.location = file.toString();
Map<String, String> a;
Map<String, HostTxtEntry> a;
try {
a = ConfigParser.parse(file);
a = HostTxtParser.parse(file);
} catch (IOException exp) {
a = new HashMap();
a = new HashMap<String, HostTxtEntry>();
}
this.addresses = a;
this.subFile = null;
}
/**
* Test only.
*
* @param testsubfile path to a file containing the simulated fetch of a subscription
* @since 0.9.26
*/
public AddressBook(String testsubfile) {
this.location = testsubfile;
this.addresses = null;
this.subFile = new File(testsubfile);
}
/**
* Return an iterator over the addresses in the AddressBook.
* @since 0.8.7
*/
public Iterator<Map.Entry<String, String>> iterator() {
if (this.subFile != null)
return new ConfigIterator(this.subFile);
public Iterator<Map.Entry<String, HostTxtEntry>> iterator() {
if (this.subFile != null) {
try {
return new HostTxtIterator(this.subFile);
} catch (IOException ioe) {
return new HostTxtIterator();
}
}
return this.addresses.entrySet().iterator();
}
@ -201,12 +245,9 @@ class AddressBook {
return "Map containing " + this.addresses.size() + " entries";
}
private static final int MIN_DEST_LENGTH = 516;
private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100; // longer than any known cert type for now
/**
* Do basic validation of the hostname
* hostname was already converted to lower case by ConfigParser.parse()
* hostname was already converted to lower case by HostTxtParser.parse()
*/
public static boolean isValidKey(String host) {
return
@ -220,9 +261,10 @@ class AddressBook {
host.indexOf("..") < 0 &&
// IDN - basic check, not complete validation
(host.indexOf("--") < 0 || host.startsWith("xn--") || host.indexOf(".xn--") > 0) &&
host.replaceAll("[a-z0-9.-]", "").length() == 0 &&
HOST_PATTERN.matcher(host).matches() &&
// Base32 spoofing (52chars.i2p)
(! (host.length() == 56 && host.substring(0,52).replaceAll("[a-z2-7]", "").length() == 0)) &&
// We didn't do it this way, we use a .b32.i2p suffix, but let's prohibit it anyway
(! (host.length() == 56 && B32_PATTERN.matcher(host.substring(0,52)).matches())) &&
// ... or maybe we do Base32 this way ...
(! host.equals("b32.i2p")) &&
(! host.endsWith(".b32.i2p")) &&
@ -246,7 +288,7 @@ class AddressBook {
(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.replaceAll("[a-zA-Z0-9~-]", "").length() == 0
B64_PATTERN.matcher(dest).matches()
;
}
@ -260,22 +302,32 @@ class AddressBook {
* An AddressBook to merge with.
* @param overwrite True to overwrite
* @param log
* The log to write messages about new addresses or conflicts to.
* The log to write messages about new addresses or conflicts to. May be null.
*
* @throws IllegalStateException if this was created with the Subscription constructor.
*/
public void merge(AddressBook other, boolean overwrite, Log log) {
if (this.addresses == null)
throw new IllegalStateException();
for (Iterator<Map.Entry<String, String>> iter = other.iterator(); iter.hasNext(); ) {
Map.Entry<String, String> entry = iter.next();
String otherKey = entry.getKey();
String otherValue = entry.getValue();
Iterator<Map.Entry<String, HostTxtEntry>> iter = other.iterator();
try {
merge2(other, iter, overwrite, log);
} finally {
if (iter instanceof HostTxtIterator)
((HostTxtIterator) iter).close();
}
}
if (isValidKey(otherKey) && isValidDest(otherValue)) {
private void merge2(AddressBook other, Iterator<Map.Entry<String, HostTxtEntry>> iter, boolean overwrite, Log log) {
while(iter.hasNext()) {
Map.Entry<String, HostTxtEntry> entry = iter.next();
String otherKey = entry.getKey();
HostTxtEntry otherValue = entry.getValue();
if (isValidKey(otherKey) && isValidDest(otherValue.getDest())) {
if (this.addresses.containsKey(otherKey) && !overwrite) {
if (DEBUG && log != null &&
!this.addresses.get(otherKey).equals(otherValue)) {
!this.addresses.get(otherKey).equals(otherValue.getDest())) {
log.append("Conflict for " + otherKey + " from "
+ other.location
+ ". Destination in remote address book is "
@ -308,7 +360,7 @@ class AddressBook {
throw new IllegalStateException();
if (this.modified) {
try {
ConfigParser.write(this.addresses, file);
HostTxtParser.write(this.addresses, file);
} catch (IOException exp) {
System.err.println("Error writing addressbook " + file.getAbsolutePath() + " : " + exp.toString());
}
@ -328,8 +380,26 @@ class AddressBook {
this.write(new File(this.location));
}
@Override
protected void finalize() {
delete();
/****
public static void main(String[] args) {
String[] tests = { "foo.i2p",
"3bnipzzu67cdq2rcygyxz52xhvy6ylokn4zfrk36ywn6pixmaoza.b32.i2p",
"9rhEy4dT9fMlcSOhDzfWRxCV2aen4Zp4eSthOf5f9gVKMa4PtQJ-wEzm2KEYeDXkbM6wEDvMQ6ou4LIniSE6bSAwy7fokiXk5oabels-sJmftnQWRbZyyXEAsLc3gpJJvp9km7kDyZ0z0YGL5tf3S~OaWdptB5tSBOAOjm6ramcYZMWhyUqm~xSL1JyXUqWEHRYwhoDJNL6-L516VpDYVigMBpIwskjeFGcqK8BqWAe0bRwxIiFTPN6Ck8SDzQvS1l1Yj-zfzg3X3gOknzwR8nrHUkjsWtEB6nhbOr8AR21C9Hs0a7MUJvSe2NOuBoNTrtxT76jDruI78JcG5r~WKl6M12yM-SqeBNE9hQn2QCHeHAKju7FdRCbqaZ99IwyjfwvZbkiYYQVN1xlUuGaXrj98XDzK7GORYdH-PrVGfEbMXQ40KLHUWHz8w4tQXAOQrCHEichod0RIzuuxo3XltCWKrf1xGZhkAo9bk2qXi6digCijvYNaKmQdXZYWW~RtAAAA",
"6IZTYacjlXjSAxu-uXEO5oGsj-f4tfePHEvGjs5pu-AMXMwD7-xFdi8kdobDMJp9yRAl96U7yLl~0t9zHeqqYmNeZnDSkTmAcSC2PT45ZJDXBobKi1~a77zuqfPwnzEatYfW3GL1JQAEkAmiwNJoG7ThTZ3zT7W9ekVJpHi9mivpTbaI~rALLfuAg~Mvr60nntZHjqhEZuiU4dTXrmc5nykl~UaMnBdwHL4jKmoN5CotqHyLYZfp74fdD-Oq4SkhuBhU8wkBIM3lz3Ul1o6-s0lNUMdYJq1CyxnyP7jeekdfAlSx4P4sU4M0dPaYvPdOFWPWwBuEh0pCs5Mj01B2xeEBhpV~xSLn6ru5Vq98TrmaR33KHxd76OYYFsWwzVbBuMVSd800XpBghGFucGw01YHYsPh3Afb01sXbf8Nb1bkxCy~DsrmoH4Ww3bpx66JhRTWvg5al3oWlCX51CnJUqaaK~dPL-pBvAyLKIA5aYvl8ca66jtA7AFDxsOb2texBBQAEAAcAAA==",
"te9Ky7XvVcLLr5vQqvfmOasg915P3-ddP3iDqpMMk7v5ufFKobLAX~1k-E4WVsJVlkYvkHVOjxix-uT1IdewKmLd81s5wZtz0GQ3ZC6p0C3S2cOxz7kQqf7QYSR0BrhZC~2du3-GdQO9TqNmsnHrah5lOZf0LN2JFEFPqg8ZB5JNm3JjJeSqePBRk3zAUogNaNK3voB1MVI0ZROKopXAJM4XMERNqI8tIH4ngGtV41SEJJ5pUFrrTx~EiUPqmSEaEA6UDYZiqd23ZlewZ31ExXQj97zvkuhKCoS9A9MNkzZejJhP-TEXWF8~KHur9f51H--EhwZ42Aj69-3GuNjsMdTwglG5zyIfhd2OspxJrXzCPqIV2sXn80IbPgwxHu0CKIJ6X43B5vTyVu87QDI13MIRNGWNZY5KmM5pilGP7jPkOs4xQDo4NHzpuJR5igjWgJIBPU6fI9Pzq~BMzjLiZOMp8xNWey1zKC96L0eX4of1MG~oUvq0qmIHGNa1TlUwBQAEAAEAAA==",
"(*&(*&(*&(*",
"9rhEy4dT9fMlcSOhDzfWRxCV2aen4Zp4eSthOf5f9gVKMa4PtQJ-wEzm2KEYeDXkbM6wEDvMQ6ou4LIniSE6bSAwy7fokiXk5oabels-sJmftnQWRbZyyXEAsLc3gpJJvp9km7kDyZ0z0YGL5tf3S~OaWdptB5tSBOAOjm6ramcYZMWhyUqm~xSL1JyXUqWEHRYwhoDJNL6-L516VpDYVigMBpIwskjeFGcqK8BqWAe0bRwxIiFTPN6Ck8SDzQvS1l1Yj-zfzg3X3gOknzwR8nrHUkjsWtEB6nhbOr8AR21C9Hs0a7MUJvSe2NOuBoNTrtxT76jDruI78JcG5r~WKl6M12yM-SqeBNE9hQn2QCHeHAKju7FdRCbqaZ99IwyjfwvZbkiYYQVN1xlUuGaXrj98XDzK7GORYdH-PrVGfEbMXQ40KLHUWHz8w4tQXAOQrCHEichod0RIzuuxo3XltCWKrf1xGZhkAo9bk2qXi6digCijvYNaKmQdXZYWW~RtAAA",
"6IZTYacjlXjSAxu-uXEO5oGsj-f4tfePHEvGjs5pu-AMXMwD7-xFdi8kdobDMJp9yRAl96U7yLl~0t9zHeqqYmNeZnDSkTmAcSC2PT45ZJDXBobKi1~a77zuqfPwnzEatYfW3GL1JQAEkAmiwNJoG7ThTZ3zT7W9ekVJpHi9mivpTbaI~rALLfuAg~Mvr60nntZHjqhEZuiU4dTXrmc5nykl~UaMnBdwHL4jKmoN5CotqHyLYZfp74fdD-Oq4SkhuBhU8wkBIM3lz3Ul1o6-s0lNUMdYJq1CyxnyP7jeekdfAlSx4P4sU4M0dPaYvPdOFWPWwBuEh0pCs5Mj01B2xeEBhpV~xSLn6ru5Vq98TrmaR33KHxd76OYYFsWwzVbBuMVSd800XpBghGFucGw01YHYsPh3Afb01sXbf8Nb1bkxCy~DsrmoH4Ww3bpx66JhRTWvg5al3oWlCX51CnJUqaaK~dPL-pBvAyLKIA5aYvl8ca66jtA7AFDxsOb2texBBQAEAAcAAA===",
"!e9Ky7XvVcLLr5vQqvfmOasg915P3-ddP3iDqpMMk7v5ufFKobLAX~1k-E4WVsJVlkYvkHVOjxix-uT1IdewKmLd81s5wZtz0GQ3ZC6p0C3S2cOxz7kQqf7QYSR0BrhZC~2du3-GdQO9TqNmsnHrah5lOZf0LN2JFEFPqg8ZB5JNm3JjJeSqePBRk3zAUogNaNK3voB1MVI0ZROKopXAJM4XMERNqI8tIH4ngGtV41SEJJ5pUFrrTx~EiUPqmSEaEA6UDYZiqd23ZlewZ31ExXQj97zvkuhKCoS9A9MNkzZejJhP-TEXWF8~KHur9f51H--EhwZ42Aj69-3GuNjsMdTwglG5zyIfhd2OspxJrXzCPqIV2sXn80IbPgwxHu0CKIJ6X43B5vTyVu87QDI13MIRNGWNZY5KmM5pilGP7jPkOs4xQDo4NHzpuJR5igjWgJIBPU6fI9Pzq~BMzjLiZOMp8xNWey1zKC96L0eX4of1MG~oUvq0qmIHGNa1TlUwBQAEAAEAAA==",
"x"
};
for (String s : tests) {
test(s);
}
}
public static void test(String s) {
System.out.println(s + " valid host? " + isValidKey(s) + " valid dest? " + isValidDest(s));
}
****/
}

View File

@ -1,145 +0,0 @@
/*
* Copyright (c) 2004 Ragnarok
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.i2p.addressbook;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
/**
* A class to iterate through a hosts.txt or config file without
* reading the whole thing into memory.
* Keys are always converted to lower case.
*
* Callers should iterate all the way through or call close()
* to ensure the underlying stream is closed.
*
* @since 0.8.7
*/
class ConfigIterator implements Iterator<Map.Entry<String, String>> {
private BufferedReader input;
private ConfigEntry next;
/**
* A dummy iterator in which hasNext() is always false.
*/
public ConfigIterator() {}
/**
* An iterator over the key/value pairs in the file.
*/
public ConfigIterator(File file) {
try {
FileInputStream fileStream = new FileInputStream(file);
input = new BufferedReader(new InputStreamReader(fileStream));
} catch (IOException ioe) {}
}
public boolean hasNext() {
if (input == null)
return false;
if (next != null)
return true;
try {
String inputLine = input.readLine();
while (inputLine != null) {
inputLine = ConfigParser.stripComments(inputLine);
String[] splitLine = inputLine.split("=");
if (splitLine.length == 2) {
next = new ConfigEntry(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
return true;
}
inputLine = input.readLine();
}
} catch (IOException ioe) {}
try { input.close(); } catch (IOException ioe) {}
input = null;
next = null;
return false;
}
public Map.Entry<String, String> next() {
if (!hasNext())
throw new NoSuchElementException();
Map.Entry<String, String> rv = next;
next = null;
return rv;
}
public void remove() {
throw new UnsupportedOperationException();
}
public void close() {
if (input != null) {
try { input.close(); } catch (IOException ioe) {}
}
}
@Override
protected void finalize() {
close();
}
/**
* The object returned by the iterator.
*/
private static class ConfigEntry implements Map.Entry<String, String> {
private final String key;
private final String value;
public ConfigEntry(String k, String v) {
key = k;
value = v;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
public String setValue(String v) {
throw new UnsupportedOperationException();
}
public int hashCode() {
return key.hashCode() ^ value.hashCode();
}
public boolean equals(Object o) {
if (!(o instanceof Map.Entry))
return false;
Map.Entry e = (Map.Entry) o;
return key.equals(e.getKey()) && value.equals(e.getValue());
}
}
}

View File

@ -29,12 +29,13 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import net.i2p.data.DataHelper;
import net.i2p.util.SecureFile;
import net.i2p.util.SecureFileOutputStream;
import net.i2p.util.SystemVersion;
@ -43,8 +44,7 @@ import net.i2p.util.SystemVersion;
* Utility class providing methods to parse and write files in config file
* format, and subscription file format.
*
* TODO: Change file encoding from default to UTF-8?
* Or switch to the DataHelper loadProps/storeProps methods?
* TODO: switch to the DataHelper loadProps/storeProps methods?
*
* @author Ragnarok
*/
@ -64,10 +64,11 @@ class ConfigParser {
if (inputLine.startsWith(";")) {
return "";
}
if (inputLine.split("#").length > 0) {
return inputLine.split("#")[0];
int hash = inputLine.indexOf('#');
if (hash >= 0) {
return inputLine.substring(0, hash);
} else {
return "";
return inputLine;
}
}
@ -86,20 +87,23 @@ class ConfigParser {
* if the BufferedReader cannot be read.
*
*/
public static Map<String, String> parse(BufferedReader input) throws IOException {
Map<String, String> result = new HashMap();
String inputLine;
inputLine = input.readLine();
while (inputLine != null) {
inputLine = ConfigParser.stripComments(inputLine);
String[] splitLine = inputLine.split("=");
if (splitLine.length == 2) {
result.put(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
private static Map<String, String> parse(BufferedReader input) throws IOException {
try {
Map<String, String> result = new HashMap<String, String>();
String inputLine;
while ((inputLine = input.readLine()) != null) {
inputLine = stripComments(inputLine);
if (inputLine.length() == 0)
continue;
String[] splitLine = DataHelper.split(inputLine, "=", 2);
if (splitLine.length == 2) {
result.put(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
}
}
inputLine = input.readLine();
return result;
} finally {
try { input.close(); } catch (IOException ioe) {}
}
input.close();
return result;
}
/**
@ -112,15 +116,21 @@ class ConfigParser {
* @throws IOException
* if file cannot be read.
*/
public static Map<String, String> parse(File file) throws IOException {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
Map<String, String> rv = ConfigParser.parse(input);
public static Map<String, String> parse(File file) throws IOException {
FileInputStream fileStream = null;
try {
fileStream.close();
} catch (IOException ioe) {}
return rv;
fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream, "UTF-8"));
Map<String, String> rv = parse(input);
return rv;
} finally {
if (fileStream != null) {
try {
fileStream.close();
} catch (IOException ioe) {}
}
}
}
/**
@ -133,11 +143,13 @@ class ConfigParser {
* @throws IOException
* if file cannot be read.
*/
public static Map<String, String> parse(String string) throws IOException {
/****
public static Map<String, String> parse(String string) throws IOException {
StringReader stringReader = new StringReader(string);
BufferedReader input = new BufferedReader(stringReader);
return ConfigParser.parse(input);
return parse(input);
}
****/
/**
* Return a Map using the contents of the File file. If file cannot be read,
@ -150,10 +162,10 @@ class ConfigParser {
* @return A Map containing the key, value pairs from file, or if file
* cannot be read, map.
*/
public static Map<String, String> parse(File file, Map<String, String> map) {
Map<String, String> result;
public static Map<String, String> parse(File file, Map<String, String> map) {
Map<String, String> result;
try {
result = ConfigParser.parse(file);
result = parse(file);
for (Map.Entry<String, String> entry : map.entrySet()) {
if (!result.containsKey(entry.getKey()))
result.put(entry.getKey(), entry.getValue());
@ -161,7 +173,7 @@ class ConfigParser {
} catch (IOException exp) {
result = map;
try {
ConfigParser.write(result, file);
write(result, file);
} catch (IOException exp2) {
}
}
@ -177,19 +189,21 @@ class ConfigParser {
* @throws IOException
* if input cannot be read.
*/
public static List<String> parseSubscriptions(BufferedReader input)
private static List<String> parseSubscriptions(BufferedReader input)
throws IOException {
List<String> result = new LinkedList();
String inputLine = input.readLine();
while (inputLine != null) {
inputLine = ConfigParser.stripComments(inputLine).trim();
if (inputLine.length() > 0) {
result.add(inputLine);
try {
List<String> result = new ArrayList<String>(4);
String inputLine;
while ((inputLine = input.readLine()) != null) {
inputLine = stripComments(inputLine).trim();
if (inputLine.length() > 0) {
result.add(inputLine);
}
}
inputLine = input.readLine();
return result;
} finally {
try { input.close(); } catch (IOException ioe) {}
}
input.close();
return result;
}
/**
@ -201,15 +215,21 @@ class ConfigParser {
* @throws IOException
* if file cannot be read.
*/
public static List<String> parseSubscriptions(File file) throws IOException {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
List<String> rv = ConfigParser.parseSubscriptions(input);
private static List<String> parseSubscriptions(File file) throws IOException {
FileInputStream fileStream = null;
try {
fileStream.close();
} catch (IOException ioe) {}
return rv;
fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream, "UTF-8"));
List<String> rv = parseSubscriptions(input);
return rv;
} finally {
if (fileStream != null) {
try {
fileStream.close();
} catch (IOException ioe) {}
}
}
}
/**
@ -221,11 +241,13 @@ class ConfigParser {
* @throws IOException
* if string cannot be read.
*/
/****
public static List<String> parseSubscriptions(String string) throws IOException {
StringReader stringReader = new StringReader(string);
BufferedReader input = new BufferedReader(stringReader);
return ConfigParser.parseSubscriptions(input);
return parseSubscriptions(input);
}
****/
/**
* Return a List using the contents of the File file. If file cannot be
@ -234,18 +256,30 @@ class ConfigParser {
*
* @param file
* A File to attempt to parse.
* @param list list of files to parse
* @param list The default subscriptions to be saved and returned if the file cannot be read
* @return A List consisting of one element for each line in file, or if
* file cannot be read, list.
*/
public static List<String> parseSubscriptions(File file, List<String> list) {
List<String> result;
try {
result = ConfigParser.parseSubscriptions(file);
result = parseSubscriptions(file);
// Fix up files that contain the old default
// which was changed in 0.9.11
if (result.remove(Daemon.OLD_DEFAULT_SUB)) {
for (String sub : list) {
if (!result.contains(sub))
result.add(sub);
}
try {
writeSubscriptions(result, file);
// TODO log
} catch (IOException ioe) {}
}
} catch (IOException exp) {
result = list;
try {
ConfigParser.writeSubscriptions(result, file);
writeSubscriptions(result, file);
} catch (IOException exp2) {
}
}
@ -263,12 +297,15 @@ class ConfigParser {
* @throws IOException
* if the BufferedWriter cannot be written to.
*/
public static void write(Map<String, String> map, BufferedWriter output) throws IOException {
for (Map.Entry<String, String> entry : map.entrySet()) {
output.write(entry.getKey() + '=' + entry.getValue());
output.newLine();
private static void write(Map<String, String> map, BufferedWriter output) throws IOException {
try {
for (Map.Entry<String, String> entry : map.entrySet()) {
output.write(entry.getKey() + '=' + entry.getValue());
output.newLine();
}
} finally {
try { output.close(); } catch (IOException ioe) {}
}
output.close();
}
/**
@ -285,12 +322,11 @@ class ConfigParser {
* @throws IOException
* if file cannot be written to.
*/
public static void write(Map<String, String> map, File file) throws IOException {
public static void write(Map<String, String> map, File file) throws IOException {
boolean success = false;
if (!isWindows) {
File tmp = SecureFile.createTempFile("temp-", ".tmp", file.getAbsoluteFile().getParentFile());
ConfigParser
.write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8")));
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8")));
success = tmp.renameTo(file);
if (!success) {
tmp.delete();
@ -299,8 +335,7 @@ class ConfigParser {
}
if (!success) {
// hmm, that didn't work, try it the old way
ConfigParser
.write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
}
}
@ -315,13 +350,16 @@ class ConfigParser {
* @throws IOException
* if output cannot be written to.
*/
public static void writeSubscriptions(List<String> list, BufferedWriter output)
private static void writeSubscriptions(List<String> list, BufferedWriter output)
throws IOException {
for (String s : list) {
output.write(s);
output.newLine();
try {
for (String s : list) {
output.write(s);
output.newLine();
}
} finally {
try { output.close(); } catch (IOException ioe) {}
}
output.close();
}
/**
@ -335,9 +373,9 @@ class ConfigParser {
* @throws IOException
* if output cannot be written to.
*/
public static void writeSubscriptions(List<String> list, File file)
private static void writeSubscriptions(List<String> list, File file)
throws IOException {
ConfigParser.writeSubscriptions(list, new BufferedWriter(
writeSubscriptions(list, new BufferedWriter(
new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
}

View File

@ -23,32 +23,45 @@ package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.client.naming.NamingService;
import net.i2p.client.naming.SingleFileNamingService;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
import net.i2p.util.OrderedProperties;
import net.i2p.util.SecureDirectory;
import net.i2p.util.SystemVersion;
/**
* Main class of addressbook. Performs updates, and runs the main loop.
* As of 0.9.30, package private, run with DaemonThread.
*
* @author Ragnarok
*
*/
public class Daemon {
class Daemon {
public static final String VERSION = "2.0.4";
private static final Daemon _instance = new Daemon();
private volatile boolean _running;
private static final boolean DEBUG = false;
// If you change this, change in SusiDNS SubscriptionBean also
private static final String DEFAULT_SUB = "http://i2p-projekt.i2p/hosts.txt";
/** @since 0.9.12 */
static final String OLD_DEFAULT_SUB = "http://www.i2p2.i2p/hosts.txt";
/** Any properties we receive from the subscription, we store to the
* addressbook with this prefix, so it knows it's part of the signature.
* This is also chosen so that it can't be spoofed.
*/
private static final String RCVD_PROP_PREFIX = "=";
private static final boolean MUST_VALIDATE = false;
/**
* Update the router and published address books using remote data from the
@ -76,10 +89,9 @@ public class Daemon {
*/
public static void update(AddressBook master, AddressBook router,
File published, SubscriptionList subscriptions, Log log) {
Iterator<AddressBook> iter = subscriptions.iterator();
while (iter.hasNext()) {
for (AddressBook book : subscriptions) {
// yes, the EepGet fetch() is done in next()
router.merge(iter.next(), false, log);
router.merge(book, false, log);
}
router.write();
if (published != null) {
@ -118,106 +130,584 @@ public class Daemon {
// This also has the advantage of not flushing the NamingService's LRU cache.
String nsClass = router.getClass().getSimpleName();
boolean isTextFile = nsClass.equals("HostsTxtNamingService") || nsClass.equals("SingleFileNamingService");
Set<String> knownNames = null;
Set<String> knownNames;
if (isTextFile) {
// load the hostname set
Properties opts = new Properties();
opts.setProperty("file", "hosts.txt");
knownNames = router.getNames(opts);
} else {
knownNames = null;
}
NamingService publishedNS;
if (published != null) {
publishedNS = new SingleFileNamingService(I2PAppContext.getGlobalContext(), published.getAbsolutePath());
} else {
publishedNS = null;
}
NamingService publishedNS = null;
Iterator<AddressBook> iter = subscriptions.iterator();
while (iter.hasNext()) {
// yes, the EepGet fetch() is done in next()
long start = System.currentTimeMillis();
AddressBook sub = iter.next();
long end = System.currentTimeMillis();
AddressBook addressbook = iter.next();
// SubscriptionIterator puts in a dummy AddressBook with no location if no fetch is done
if (DEBUG && log != null && sub.getLocation() != null)
log.append("Fetch of " + sub.getLocation() + " took " + (end - start));
start = end;
if (DEBUG && log != null && addressbook.getLocation() != null) {
long end = System.currentTimeMillis();
log.append("Fetch of " + addressbook.getLocation() + " took " + (end - start));
}
Iterator<Map.Entry<String, HostTxtEntry>> iter2 = addressbook.iterator();
try {
update(router, knownNames, publishedNS, addressbook, iter2, log);
} finally {
if (iter2 instanceof HostTxtIterator)
((HostTxtIterator) iter2).close();
addressbook.delete();
}
} // subscriptions
subscriptions.write();
}
/**
* @param knownNames only non-null if router book is a text file
* @param publishedNS only non-null if we have a published address book
* @since 0.9.33 split out from above
*/
private static void update(NamingService router, Set<String> knownNames,
NamingService publishedNS, AddressBook addressbook,
Iterator<Map.Entry<String, HostTxtEntry>> iter, Log log) {
long start = DEBUG ? System.currentTimeMillis() : 0;
int old = 0, nnew = 0, invalid = 0, conflict = 0, total = 0;
for (Iterator<Map.Entry<String, String>> eIter = sub.iterator(); eIter.hasNext(); ) {
Map.Entry<String, String> entry = eIter.next();
int deleted = 0;
while(iter.hasNext()) {
Map.Entry<String, HostTxtEntry> entry = iter.next();
total++;
// may be null for 'remove' entries
String key = entry.getKey();
boolean isKnown;
Destination oldDest = null;
if (isTextFile) {
if (knownNames == null) {
// load the hostname set
Properties opts = new Properties();
opts.setProperty("file", "hosts.txt");
knownNames = router.getNames(opts);
}
isKnown = knownNames.contains(key);
// NOT set for text file NamingService
Destination oldDest;
if (knownNames != null) {
oldDest = null;
isKnown = key != null ? knownNames.contains(key) : false;
} else {
oldDest = router.lookup(key);
oldDest = key != null ? router.lookup(key) : null;
isKnown = oldDest != null;
}
try {
if (!isKnown) {
if (AddressBook.isValidKey(key)) {
Destination dest = new Destination(entry.getValue());
Properties props = new Properties();
props.setProperty("s", sub.getLocation());
HostTxtEntry he = entry.getValue();
Properties hprops = he.getProps();
boolean mustValidate = MUST_VALIDATE || hprops != null;
String action = hprops != null ? hprops.getProperty(HostTxtEntry.PROP_ACTION) : null;
if (key == null && !he.hasValidRemoveSig()) {
if (log != null) {
log.append("Bad signature of action " + action + " for key " +
hprops.getProperty(HostTxtEntry.PROP_NAME) +
". From: " + addressbook.getLocation());
}
invalid++;
} else if (key != null && mustValidate && !he.hasValidSig()) {
if (log != null) {
log.append("Bad signature of action " + action + " for key " + key +
". From: " + addressbook.getLocation());
}
invalid++;
} else if (action != null || !isKnown) {
if (key != null && AddressBook.isValidKey(key)) {
Destination dest = new Destination(he.getDest());
Properties props = new OrderedProperties();
props.setProperty("s", addressbook.getLocation());
boolean allowExistingKeyInPublished = false;
if (mustValidate) {
// sig checked above
props.setProperty("v", "true");
}
if (hprops != null) {
// merge in all the received properties
for (Map.Entry<Object, Object> e : hprops.entrySet()) {
// Add prefix to indicate received property
props.setProperty(RCVD_PROP_PREFIX + e.getKey(), (String) e.getValue());
}
}
if (action != null) {
// Process commands. hprops is non-null.
// Must handle isKnown in each case.
if (action.equals(HostTxtEntry.ACTION_ADDDEST)) {
// Add an alternate destination (new crypto) for existing hostname
// Requires new NamingService support if the key exists
String polddest = hprops.getProperty(HostTxtEntry.PROP_OLDDEST);
if (polddest != null) {
Destination pod = new Destination(polddest);
List<Destination> pod2 = router.lookupAll(key);
if (pod2 == null) {
// we didn't know it before, so we'll add it
// check inner sig anyway
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
} else if (pod2.contains(dest)) {
// we knew it before, with the same dest
old++;
continue;
} else if (pod2.contains(pod)) {
// checks out, so verify the inner sig
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
// TODO Requires NamingService support
// if (isTextFile), do we replace or not? check sigType.isAvailable()
boolean success = router.addDestination(key, dest, props);
if (log != null) {
if (success)
log.append("Additional address for " + key +
" added to address book. From: " + addressbook.getLocation());
else
log.append("Failed to add additional address for " + key +
" From: " + addressbook.getLocation());
}
// now update the published addressbook
// ditto
if (publishedNS != null) {
// FIXME this fails, no support in SFNS
success = publishedNS.addDestination(key, dest, props);
if (log != null && !success)
log.append("Add to published address book " + publishedNS.getName() + " failed for " + key);
}
nnew++;
continue;
} else {
// mismatch, disallow
logMismatch(log, action, key, pod2, he.getDest(), addressbook);
invalid++;
continue;
}
} else {
logMissing(log, action, key, addressbook);
invalid++;
continue;
}
} else if (action.equals(HostTxtEntry.ACTION_ADDNAME)) {
// Add an alias for an existing hostname, same dest
if (isKnown) {
// could be same or different dest
old++;
continue;
}
String poldname = hprops.getProperty(HostTxtEntry.PROP_OLDNAME);
if (poldname != null) {
List<Destination> pod = router.lookupAll(poldname);
if (pod == null) {
// we didn't have the old one, so we'll add the new one
} else if (pod.contains(dest)) {
// checks out, so we'll add the new one
} else {
// mismatch, disallow
logMismatch(log, action, key, pod, he.getDest(), addressbook);
invalid++;
continue;
}
} else {
logMissing(log, action, key, addressbook);
invalid++;
continue;
}
} else if (action.equals(HostTxtEntry.ACTION_ADDSUBDOMAIN)) {
// add a subdomain with verification
if (isKnown) {
old++;
continue;
}
String polddest = hprops.getProperty(HostTxtEntry.PROP_OLDDEST);
String poldname = hprops.getProperty(HostTxtEntry.PROP_OLDNAME);
if (polddest != null && poldname != null) {
// check for valid subdomain
if (!AddressBook.isValidKey(poldname) ||
key.indexOf('.' + poldname) <= 0) {
if (log != null)
log.append("Action: " + action + " failed because" +
" old name " + poldname +
" is invalid" +
". From: " + addressbook.getLocation());
invalid++;
continue;
}
Destination pod = new Destination(polddest);
List<Destination> pod2 = router.lookupAll(poldname);
if (pod2 == null) {
// we didn't have the old name
// check inner sig anyway
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
} else if (pod2.contains(pod)) {
// checks out, so verify the inner sig
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
} else {
// mismatch, disallow
logMismatch(log, action, key, pod2, polddest, addressbook);
invalid++;
continue;
}
} else {
logMissing(log, action, key, addressbook);
invalid++;
continue;
}
} else if (action.equals(HostTxtEntry.ACTION_CHANGEDEST)) {
// change destination on an existing entry
// This removes all previous destinations under that hostname,
// is this what we want?
String polddest = hprops.getProperty(HostTxtEntry.PROP_OLDDEST);
if (polddest != null) {
Destination pod = new Destination(polddest);
List<Destination> pod2 = router.lookupAll(key);
if (pod2 == null) {
// we didn't have the old name
// check inner sig anyway
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
} else if (pod2.contains(dest)) {
// we already have the new dest
old++;
continue;
} else if (pod2.contains(pod)) {
// checks out, so verify the inner sig
if (!he.hasValidInnerSig()) {
logInner(log, action, key, addressbook);
invalid++;
continue;
}
if (log != null) {
if (pod2.size() == 1)
log.append("Changing destination for " + key +
". From: " + addressbook.getLocation());
else
log.append("Replacing " + pod2.size() + " destinations for " + key +
". From: " + addressbook.getLocation());
}
allowExistingKeyInPublished = true;
props.setProperty("m", Long.toString(I2PAppContext.getGlobalContext().clock().now()));
} else {
// mismatch, disallow
logMismatch(log, action, key, pod2, polddest, addressbook);
invalid++;
continue;
}
} else {
logMissing(log, action, key, addressbook);
invalid++;
continue;
}
} else if (action.equals(HostTxtEntry.ACTION_CHANGENAME)) {
// Delete old name, replace with new
// This removes all previous destinations under that hostname,
// is this what we want?
if (isKnown) {
old++;
continue;
}
String poldname = hprops.getProperty(HostTxtEntry.PROP_OLDNAME);
if (poldname != null) {
List<Destination> pod = router.lookupAll(poldname);
if (pod == null) {
// we didn't have the old name
} else if (pod.contains(dest)) {
// checks out, so we'll delete it
if (knownNames != null)
knownNames.remove(poldname);
boolean success = router.remove(poldname, dest);
if (success)
deleted++;
if (log != null) {
if (success)
log.append("Removed: " + poldname +
" to be replaced with " + key +
". From: " + addressbook.getLocation());
else
log.append("Remove failed for: " + poldname +
" to be replaced with " + key +
". From: " + addressbook.getLocation());
}
// now update the published addressbook
if (publishedNS != null) {
success = publishedNS.remove(poldname, dest);
if (log != null && !success)
log.append("Remove from published address book " + publishedNS.getName() + " failed for " + poldname);
}
} else {
// mismatch, disallow
logMismatch(log, action, key, pod, he.getDest(), addressbook);
continue;
}
} else {
logMissing(log, action, key, addressbook);
invalid++;
continue;
}
} else if (action.equals(HostTxtEntry.ACTION_REMOVE) ||
action.equals(HostTxtEntry.ACTION_REMOVEALL)) {
// w/o name=dest handled below
if (log != null)
log.append("Action: " + action + " with name=dest invalid" +
". From: " + addressbook.getLocation());
invalid++;
continue;
} else if (action.equals(HostTxtEntry.ACTION_UPDATE)) {
if (isKnown) {
allowExistingKeyInPublished = true;
props.setProperty("m", Long.toString(I2PAppContext.getGlobalContext().clock().now()));
}
} else {
if (log != null)
log.append("Action: " + action + " unrecognized" +
". From: " + addressbook.getLocation());
invalid++;
continue;
}
} // action != null
boolean success = router.put(key, dest, props);
if (log != null) {
if (success)
log.append("New address " + key +
" added to address book. From: " + sub.getLocation());
" added to address book. From: " + addressbook.getLocation());
else
log.append("Save to naming service " + router + " failed for new key " + key);
}
// now update the published addressbook
if (published != null) {
if (publishedNS == null)
publishedNS = new SingleFileNamingService(I2PAppContext.getGlobalContext(), published.getAbsolutePath());
success = publishedNS.putIfAbsent(key, dest);
if (!success) {
try {
log.append("Save to published address book " + published.getCanonicalPath() + " failed for new key " + key);
} catch (IOException ioe) {}
if (publishedNS != null) {
if (allowExistingKeyInPublished)
success = publishedNS.put(key, dest, props);
else
success = publishedNS.putIfAbsent(key, dest, props);
if (log != null && !success) {
log.append("Save to published address book " + publishedNS.getName() + " failed for new key " + key);
}
}
if (isTextFile)
if (knownNames != null) {
// keep track for later dup check
knownNames.add(key);
}
nnew++;
} else if (key == null) {
// 'remove' actions
// isKnown is false
if (action != null) {
// Process commands. hprops is non-null.
if (action.equals(HostTxtEntry.ACTION_REMOVE)) {
// delete this entry
String polddest = hprops.getProperty(HostTxtEntry.PROP_DEST);
String poldname = hprops.getProperty(HostTxtEntry.PROP_NAME);
if (polddest != null && poldname != null) {
Destination pod = new Destination(polddest);
List<Destination> pod2 = router.lookupAll(poldname);
if (pod2 != null && pod2.contains(pod)) {
if (knownNames != null && pod2.size() == 1)
knownNames.remove(poldname);
boolean success = router.remove(poldname, pod);
if (success)
deleted++;
if (log != null) {
if (success)
log.append("Removed: " + poldname +
" as requested" +
". From: " + addressbook.getLocation());
else
log.append("Remove failed for: " + poldname +
" as requested" +
". From: " + addressbook.getLocation());
}
// now update the published addressbook
if (publishedNS != null) {
success = publishedNS.remove(poldname, pod);
if (log != null && !success)
log.append("Remove from published address book " + publishedNS.getName() + " failed for " + poldname);
}
} else if (pod2 != null) {
// mismatch, disallow
logMismatch(log, action, key, pod2, polddest, addressbook);
invalid++;
} else {
old++;
}
} else {
logMissing(log, action, "delete", addressbook);
invalid++;
}
} else if (action.equals(HostTxtEntry.ACTION_REMOVEALL)) {
// delete all entries with this destination
String polddest = hprops.getProperty(HostTxtEntry.PROP_DEST);
// oldname is optional, but nice because not all books support reverse lookup
if (polddest != null) {
Destination pod = new Destination(polddest);
String poldname = hprops.getProperty(HostTxtEntry.PROP_NAME);
if (poldname != null) {
List<Destination> pod2 = router.lookupAll(poldname);
if (pod2 != null && pod2.contains(pod)) {
if (knownNames != null)
knownNames.remove(poldname);
boolean success = router.remove(poldname, pod);
if (success)
deleted++;
if (log != null) {
if (success)
log.append("Removed: " + poldname +
" as requested" +
". From: " + addressbook.getLocation());
else
log.append("Remove failed for: " + poldname +
" as requested" +
". From: " + addressbook.getLocation());
}
// now update the published addressbook
if (publishedNS != null) {
success = publishedNS.remove(poldname, pod);
if (log != null && !success)
log.append("Remove from published address book " + publishedNS.getName() + " failed for " + poldname);
}
} else if (pod2 != null) {
// mismatch, disallow
logMismatch(log, action, key, pod2, polddest, addressbook);
invalid++;
} else {
old++;
}
}
// reverse lookup, delete all
List<String> revs = router.reverseLookupAll(pod);
if (revs != null) {
for (String rev : revs) {
if (knownNames != null)
knownNames.remove(rev);
boolean success = router.remove(rev, pod);
if (success)
deleted++;
if (log != null) {
if (success)
log.append("Removed: " + rev +
" as requested" +
". From: " + addressbook.getLocation());
else
log.append("Remove failed for: " + rev +
" as requested" +
". From: " + addressbook.getLocation());
}
// now update the published addressbook
if (publishedNS != null) {
success = publishedNS.remove(rev, pod);
if (log != null && !success)
log.append("Remove from published address book " + publishedNS.getName() + " failed for " + rev);
}
}
}
} else {
logMissing(log, action, "delete", addressbook);
invalid++;
}
} else {
if (log != null)
log.append("Action: " + action + " w/o name=dest unrecognized" +
". From: " + addressbook.getLocation());
invalid++;
}
continue;
} else {
if (log != null)
log.append("No action in command line" +
". From: " + addressbook.getLocation());
invalid++;
continue;
}
} else if (log != null) {
log.append("Bad hostname " + key + " from "
+ sub.getLocation());
log.append("Bad hostname " + key + ". From: "
+ addressbook.getLocation());
invalid++;
}
/****
} else if (false && DEBUG && log != null) {
// lookup the conflict if we haven't yet (O(n**2) for text file)
if (isTextFile)
oldDest = router.lookup(key);
if (oldDest != null && !oldDest.toBase64().equals(entry.getValue())) {
log.append("Conflict for " + key + " from "
+ sub.getLocation()
log.append("Conflict for " + key + ". From: "
+ addressbook.getLocation()
+ ". Destination in remote address book is "
+ entry.getValue());
conflict++;
} else {
old++;
}
****/
} else {
old++;
}
} catch (DataFormatException dfe) {
if (log != null)
log.append("Invalid b64 for " + key + " From: " + sub.getLocation());
log.append("Invalid b64 for " + key + " From: " + addressbook.getLocation());
invalid++;
}
total++;
}
} // entries
if (DEBUG && log != null && total > 0) {
log.append("Merge of " + sub.getLocation() + " into " + router +
log.append("Merge of " + addressbook.getLocation() + " into " + router +
" took " + (System.currentTimeMillis() - start) + " ms with " +
total + " total, " +
nnew + " new, " +
old + " old, " +
deleted + " deleted, " +
invalid + " invalid, " +
conflict + " conflicts");
}
sub.delete();
}
/** @since 0.9.26 */
private static void logInner(Log log, String action, String name, AddressBook addressbook) {
if (log != null) {
log.append("Action: " + action + " failed because" +
" inner signature for key " + name +
" failed" +
". From: " + addressbook.getLocation());
}
}
/** @since 0.9.26 */
private static void logMissing(Log log, String action, String name, AddressBook addressbook) {
if (log != null) {
log.append("Action: " + action + " for " + name +
" failed, missing required parameters" +
". From: " + addressbook.getLocation());
}
}
/** @since 0.9.26 */
private static void logMismatch(Log log, String action, String name, List<Destination> dests,
String olddest, AddressBook addressbook) {
if (log != null) {
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));
if (i != sz - 1)
buf.append(", ");
}
log.append("Action: " + action + " failed because" +
" destinations for " + name +
" (" + buf + ')' +
" do not include" +
" (" + olddest.substring(0, 6) + ')' +
". From: " + addressbook.getLocation());
}
subscriptions.write();
}
/**
@ -232,16 +722,12 @@ public class Daemon {
File published = null;
boolean should_publish = Boolean.parseBoolean(settings.get("should_publish"));
if (should_publish)
published = new File(home, settings
.get("published_addressbook"));
File subscriptionFile = new File(home, settings
.get("subscriptions"));
published = new File(home, settings.get("published_addressbook"));
File subscriptionFile = new File(home, settings.get("subscriptions"));
File logFile = new File(home, settings.get("log"));
File etagsFile = new File(home, settings.get("etags"));
File lastModifiedFile = new File(home, settings
.get("last_modified"));
File lastFetchedFile = new File(home, settings
.get("last_fetched"));
File lastModifiedFile = new File(home, settings.get("last_modified"));
File lastFetchedFile = new File(home, settings.get("last_fetched"));
long delay;
try {
delay = Long.parseLong(settings.get("update_delay"));
@ -250,14 +736,15 @@ public class Daemon {
}
delay *= 60 * 60 * 1000;
List<String> defaultSubs = new LinkedList();
List<String> defaultSubs = new ArrayList<String>(4);
// defaultSubs.add("http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/hosts.txt");
defaultSubs.add("http://www.i2p2.i2p/hosts.txt");
defaultSubs.add(DEFAULT_SUB);
SubscriptionList subscriptions = new SubscriptionList(subscriptionFile,
etagsFile, lastModifiedFile, lastFetchedFile, delay, defaultSubs, settings
.get("proxy_host"), Integer.parseInt(settings.get("proxy_port")));
Log log = new Log(logFile);
etagsFile, lastModifiedFile, lastFetchedFile,
delay, defaultSubs, settings.get("proxy_host"),
Integer.parseInt(settings.get("proxy_port")));
Log log = SystemVersion.isAndroid() ? null : new Log(logFile);
// If false, add hosts via naming service; if true, write hosts.txt file directly
// Default false
@ -315,14 +802,35 @@ public class Daemon {
* others are ignored.
*/
public static void main(String[] args) {
_instance.run(args);
Daemon daemon = new Daemon();
if (args.length > 0 && args[0].equals("test"))
daemon.test(args);
else
daemon.run(args);
}
/** @since 0.9.26 */
public static void test(String[] args) {
Properties ctxProps = new Properties();
String PROP_FORCE = "i2p.naming.blockfile.writeInAppContext";
ctxProps.setProperty(PROP_FORCE, "true");
I2PAppContext ctx = new I2PAppContext(ctxProps);
NamingService ns = getNamingService("hosts.txt");
File published = new File("test-published.txt");
Log log = new Log(new File("test-log.txt"));
SubscriptionList subscriptions = new SubscriptionList("test-sub.txt");
update(ns, published, subscriptions, log);
ctx.logManager().flush();
}
/**
* @param args may be null
*/
public void run(String[] args) {
_running = true;
String settingsLocation = "config.txt";
File homeFile;
if (args.length > 0) {
if (args != null && args.length > 0) {
homeFile = new SecureDirectory(args[0]);
if (!homeFile.isAbsolute())
homeFile = new SecureDirectory(I2PAppContext.getGlobalContext().getRouterDir(), args[0]);
@ -330,7 +838,7 @@ public class Daemon {
homeFile = new SecureDirectory(System.getProperty("user.dir"));
}
Map<String, String> defaultSettings = new HashMap();
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");
@ -386,14 +894,14 @@ public class Daemon {
* Call this to get the addressbook to reread its config and
* refetch its subscriptions.
*/
public static void wakeup() {
synchronized (_instance) {
_instance.notifyAll();
public void wakeup() {
synchronized (this) {
notifyAll();
}
}
public static void stop() {
_instance._running = false;
public void stop() {
_running = false;
wakeup();
}
}

View File

@ -25,6 +25,7 @@ import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.NamingServiceUpdater;
import net.i2p.util.I2PAppThread;
/**
* A thread that waits five minutes, then runs the addressbook daemon.
@ -32,9 +33,10 @@ import net.i2p.client.naming.NamingServiceUpdater;
* @author Ragnarok
*
*/
public class DaemonThread extends Thread implements NamingServiceUpdater {
public class DaemonThread extends I2PAppThread implements NamingServiceUpdater {
private String[] args;
private final String[] args;
private final Daemon daemon;
/**
* Construct a DaemonThread with the command line arguments args.
@ -43,6 +45,7 @@ public class DaemonThread extends Thread implements NamingServiceUpdater {
*/
public DaemonThread(String[] args) {
this.args = args;
daemon = new Daemon();
}
/* (non-Javadoc)
@ -55,18 +58,28 @@ public class DaemonThread extends Thread implements NamingServiceUpdater {
//} catch (InterruptedException exp) {
//}
I2PAppContext.getGlobalContext().namingService().registerUpdater(this);
Daemon.main(this.args);
I2PAppContext.getGlobalContext().namingService().unregisterUpdater(this);
try {
if (args != null && args.length > 0 && args[0].equals("test"))
daemon.test(args);
else
daemon.run(args);
} finally {
I2PAppContext.getGlobalContext().namingService().unregisterUpdater(this);
}
}
public void halt() {
Daemon.stop();
daemon.stop();
interrupt();
}
/**
* The NamingServiceUpdater interface
* @param options ignored
* The NamingServiceUpdater interface.
* While this may be called directly, the recommended way
* is to call I2PAppContext.namingService().requestUpdate(Properties)
* which will call this.
*
* @param options ignored, may be null
* @since 0.8.7
*/
public void update(Properties options) {

View File

@ -0,0 +1,149 @@
/*
* Copyright (c) 2004 Ragnarok
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.i2p.addressbook;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.data.DataHelper;
/**
* A class to iterate through a hosts.txt or config file without
* reading the whole thing into memory.
* Keys are always converted to lower case.
*
* Callers should iterate all the way through or call close()
* to ensure the underlying stream is closed.
*
* This is not used for config files.
* It is only used for subscriptions.
*
* @since 0.8.7, renamed from ConfigIterator in 0.9.26
*/
class HostTxtIterator implements Iterator<Map.Entry<String, HostTxtEntry>>, Closeable {
private BufferedReader input;
private MapEntry next;
/**
* A dummy iterator in which hasNext() is always false.
*/
public HostTxtIterator() {}
/**
* An iterator over the key/value pairs in the file.
*/
public HostTxtIterator(File file) throws IOException {
FileInputStream fileStream = new FileInputStream(file);
input = new BufferedReader(new InputStreamReader(fileStream, "UTF-8"));
}
public boolean hasNext() {
if (input == null)
return false;
if (next != null)
return true;
try {
String inputLine;
while ((inputLine = input.readLine()) != null) {
HostTxtEntry he = HostTxtParser.parse(inputLine, true);
if (he == null)
continue;
next = new MapEntry(he.getName(), he);
return true;
}
} catch (IOException ioe) {}
try { input.close(); } catch (IOException ioe) {}
input = null;
next = null;
return false;
}
/**
* 'remove' entries will be returned with a null key,
* and the value will contain a null name, null dest,
* and non-null props.
*/
public Map.Entry<String, HostTxtEntry> next() {
if (!hasNext())
throw new NoSuchElementException();
Map.Entry<String, HostTxtEntry> rv = next;
next = null;
return rv;
}
public void remove() {
throw new UnsupportedOperationException();
}
public void close() {
if (input != null) {
try { input.close(); } catch (IOException ioe) {}
}
}
/**
* The object returned by the iterator.
*/
private static class MapEntry implements Map.Entry<String, HostTxtEntry> {
private final String key;
private final HostTxtEntry value;
public MapEntry(String k, HostTxtEntry v) {
key = k;
value = v;
}
public String getKey() {
return key;
}
public HostTxtEntry getValue() {
return value;
}
public HostTxtEntry setValue(HostTxtEntry v) {
throw new UnsupportedOperationException();
}
public int hashCode() {
return key.hashCode() ^ value.hashCode();
}
public boolean equals(Object o) {
if (!(o instanceof Map.Entry))
return false;
@SuppressWarnings("unchecked")
Map.Entry<Object, Object> e = (Map.Entry<Object, Object>) o;
return key.equals(e.getKey()) && value.equals(e.getValue());
}
}
}

View File

@ -0,0 +1,294 @@
package net.i2p.addressbook;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.data.DataHelper;
import net.i2p.util.SecureFile;
import net.i2p.util.SecureFileOutputStream;
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
*/
class HostTxtParser {
private static final boolean isWindows = SystemVersion.isWindows();
/**
* Return a Map using the contents of BufferedReader input. input must have
* a single key, value pair on each line, in the format: key=value. Lines
* starting with '#' or ';' are considered comments, and ignored. Lines that
* are obviously not in the format key=value are also ignored.
* The key is converted to lower case.
*
* Returned map will not contain null ("remove") entries.
*
* @param input
* A BufferedReader with lines in key=value format to parse into
* a Map.
* @return A Map containing the key, value pairs from input.
* @throws IOException
* if the BufferedReader cannot be read.
*
*/
private static Map<String, HostTxtEntry> parse(BufferedReader input) throws IOException {
try {
Map<String, HostTxtEntry> result = new HashMap<String, HostTxtEntry>();
String inputLine;
while ((inputLine = input.readLine()) != null) {
HostTxtEntry he = parse(inputLine, false);
if (he == null)
continue;
result.put(he.getName(), he);
}
return result;
} finally {
try { input.close(); } catch (IOException ioe) {}
}
}
/**
* Return a HostTxtEntry from the contents of the inputLine.
*
* @param inputLine key=value[#!k1=v1#k2=v2...]
* @param allowCommandOnly if true, a line starting with #! will return
* a HostTxtEntry with a null name and dest and non-null props.
* If false, these lines will return null.
* @return null if no entry found or on error
*/
public static HostTxtEntry parse(String inputLine, boolean allowCommandOnly) {
if (inputLine.startsWith(";"))
return null;
int comment = inputLine.indexOf('#');
String kv;
String sprops;
if (comment >= 0) {
int shebang = inputLine.indexOf(HostTxtEntry.PROPS_SEPARATOR);
if (shebang == comment && shebang + 2 < inputLine.length()) {
if (comment == 0 && !allowCommandOnly)
return null;
sprops = inputLine.substring(shebang + 2);
} else {
if (comment == 0)
return null;
sprops = null;
}
kv = inputLine.substring(0, comment);
} else {
sprops = null;
kv = inputLine;
}
String name, dest;
if (comment != 0) {
// we have a name=dest
String[] splitLine = DataHelper.split(kv, "=", 2);
if (splitLine.length < 2)
return null;
name = splitLine[0].trim().toLowerCase(Locale.US);
dest = splitLine[1].trim();
if (name.length() == 0 || dest.length() == 0)
return null;
} else {
// line starts with #!, rv will contain props only
name = null;
dest = null;
}
HostTxtEntry he;
if (sprops != null) {
try {
he = new HostTxtEntry(name, dest, sprops);
} catch (IllegalArgumentException iae) {
return null;
}
} else {
he = new HostTxtEntry(name, dest);
}
return he;
}
/**
* Return a Map using the contents of the File file. See parse(BufferedReader)
* for details of the input format.
*
* Returned map will not contain null ("remove") entries.
*
* @param file
* A File to parse.
* @return A Map containing the key, value pairs from file.
* @throws IOException
* if file cannot be read.
*/
public static Map<String, HostTxtEntry> parse(File file) throws IOException {
FileInputStream fileStream = null;
try {
fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream, "UTF-8"));
Map<String, HostTxtEntry> rv = parse(input);
return rv;
} finally {
if (fileStream != null) {
try {
fileStream.close();
} catch (IOException ioe) {}
}
}
}
/**
* Return a Map using the contents of the File file. If file cannot be read,
* use map instead, and write the result to where file should have been.
*
* Returned map will not contain null ("remove") entries.
*
* @param file
* A File to attempt to parse.
* @param map
* A Map containing values to use as defaults.
* @return A Map containing the key, value pairs from file, or if file
* cannot be read, map.
*/
public static Map<String, HostTxtEntry> parse(File file, Map<String, HostTxtEntry> map) {
Map<String, HostTxtEntry> result;
try {
result = parse(file);
for (Map.Entry<String, HostTxtEntry> entry : map.entrySet()) {
if (!result.containsKey(entry.getKey()))
result.put(entry.getKey(), entry.getValue());
}
} catch (IOException exp) {
result = map;
try {
write(result, file);
} catch (IOException exp2) {
}
}
return result;
}
/**
* Write contents of Map map to BufferedWriter output. Output is written
* with one key, value pair on each line, in the format: key=value.
*
* @param map
* A Map to write to output.
* @param output
* A BufferedWriter to write the Map to.
* @throws IOException
* if the BufferedWriter cannot be written to.
*/
private static void write(Map<String, HostTxtEntry> map, BufferedWriter output) throws IOException {
try {
for (Map.Entry<String, HostTxtEntry> entry : map.entrySet()) {
entry.getValue().write(output);
}
} finally {
try { output.close(); } catch (IOException ioe) {}
}
}
/**
* Write contents of Map map to the File file. Output is written
* with one key, value pair on each line, in the format: key=value.
* Write to a temp file in the same directory and then rename, to not corrupt
* simultaneous accesses by the router. Except on Windows where renameTo()
* will fail if the target exists.
*
* @param map
* A Map to write to file.
* @param file
* A File to write the Map to.
* @throws IOException
* if file cannot be written to.
*/
public static void write(Map<String, HostTxtEntry> map, File file) throws IOException {
boolean success = false;
if (!isWindows) {
File tmp = SecureFile.createTempFile("temp-", ".tmp", file.getAbsoluteFile().getParentFile());
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8")));
success = tmp.renameTo(file);
if (!success) {
tmp.delete();
//System.out.println("Warning: addressbook rename fail from " + tmp + " to " + file);
}
}
if (!success) {
// hmm, that didn't work, try it the old way
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
}
}
/**
* Usage: HostTxtParser [-q] validate example.i2p=b64dest[#!key1=val1#key2=val2]
*/
public static void main(String[] args) throws Exception {
boolean quiet = false;
if (args.length > 0 && args[0].equals("-q")) {
quiet = true;
args = java.util.Arrays.copyOfRange(args, 1, args.length);
}
if (args.length != 2 || !args[0].equals("validate")) {
System.err.println("Usage: HostTxtParser validate example.i2p=b64dest[#!key1=val1#key2=val2]");
System.exit(1);
}
HostTxtEntry e = parse(args[1].trim(), false);
if (e == null) {
if (!quiet)
System.err.println("Bad format");
System.exit(2);
}
if (!e.hasValidSig()) {
if (!quiet)
System.err.println("Bad signature");
System.exit(3);
}
Properties p = e.getProps();
if (p != null) {
if (p.containsKey(HostTxtEntry.PROP_ACTION) ||
p.containsKey(HostTxtEntry.PROP_OLDDEST) ||
p.containsKey(HostTxtEntry.PROP_OLDNAME) ||
p.containsKey(HostTxtEntry.PROP_OLDSIG)) {
if (!e.hasValidSig()) {
if (!quiet)
System.err.println("Bad inner signature");
System.exit(4);
}
}
}
if (!quiet)
System.err.println("Good signature for " + e.getName());
System.exit(0);
}
/****
public static void test(String[] args) throws Exception {
File f = new File("tmp-hosts.txt");
Map<String, HostTxtEntry> map = parse(f);
for (HostTxtEntry e : map.values()) {
System.out.println("Host: " + e.getName() +
"\nDest: " + e.getDest() +
"\nAction: " + (e.getProps() != null ? e.getProps().getProperty("action") : "(none)") +
"\nValid Inner? " + e.hasValidInnerSig() +
"\nValid? " + e.hasValidSig() +
'\n');
}
}
****/
}

View File

@ -23,8 +23,9 @@ package net.i2p.addressbook;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Date;
/**
@ -35,7 +36,7 @@ import java.util.Date;
*/
class Log {
private File file;
private final File file;
/**
* Construct a Log instance that writes to the File file.
@ -56,8 +57,8 @@ class Log {
public void append(String entry) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(this.file,
true));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(this.file,
true), "UTF-8"));
String timestamp = new Date().toString();
bw.write(timestamp + " -- " + entry);
bw.newLine();
@ -73,7 +74,9 @@ class Log {
*
* @return The File that the log is writing to.
*/
/****
public File getFile() {
return this.file;
}
****/
}

View File

@ -1,96 +0,0 @@
/*
* Copyright (c) 2004 Ragnarok
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.i2p.addressbook;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* A wrapper for addressbook to allow it to be started as a web application.
*
* This was a GenericServlet, we make it an HttpServlet solely to provide a hook
* for SusiDNS to wake us up when the subscription list changes.
*
* @author Ragnarok
*
*/
public class Servlet extends HttpServlet {
private DaemonThread thread;
//private String nonce;
//private static final String PROP_NONCE = "addressbook.nonce";
/**
* Hack to allow susidns to kick the daemon when the subscription list changes.
* URL must be /addressbook/ with wakeup param set, and nonce param set from system property.
*
* (non-Javadoc)
* see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
*/
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
//System.err.println("Got request nonce = " + request.getParameter("nonce"));
//if (this.thread != null && request.getParameter("wakeup") != null &&
// this.nonce != null && this.nonce.equals(request.getParameter("nonce"))) {
// //System.err.println("Sending interrupt");
// this.thread.interrupt();
// // no output
//} else {
PrintWriter out = response.getWriter();
out.write("I2P addressbook OK");
//}
}
/* (non-Javadoc)
* @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
*/
@Override
public void init(ServletConfig config) {
try {
super.init(config);
} catch (ServletException exp) {
System.err.println("Addressbook init exception: " + exp);
}
//this.nonce = "" + Math.abs((new Random()).nextLong());
// put the nonce where susidns can get it
//System.setProperty(PROP_NONCE, this.nonce);
String[] args = new String[1];
args[0] = config.getInitParameter("home");
this.thread = new DaemonThread(args);
this.thread.setDaemon(true);
this.thread.setName("Addressbook");
this.thread.start();
//System.out.println("INFO: Starting Addressbook " + Daemon.VERSION);
//System.out.println("INFO: config root under " + args[0]);
}
@Override
public void destroy() {
this.thread.halt();
super.destroy();
}
}

View File

@ -29,10 +29,8 @@ package net.i2p.addressbook;
*/
class Subscription {
private String location;
private final String location;
private String etag;
private String lastModified;
private long lastFetched;
@ -41,14 +39,15 @@ class Subscription {
* was last read at the time represented by etag and lastModified.
*
* @param location
* A String representing a url to a remote address book.
* A String representing a url to a remote address book. Non-null.
* @param etag
* The etag header that we recieved the last time we read this
* subscription.
* The etag header that we received the last time we read this
* subscription. May be null.
* @param lastModified
* the last-modified header we recieved the last time we read
* this subscription.
* @param lastFetched when the subscription was last fetched (Java time, as a String)
* the last-modified header we received the last time we read
* this subscription. May be null.
* @param lastFetched when the subscription was last fetched (Java time, as a String).
* May be null.
*/
public Subscription(String location, String etag, String lastModified, String lastFetched) {
this.location = location;
@ -71,7 +70,7 @@ class Subscription {
}
/**
* Return the etag header that we recieved the last time we read this
* Return the etag header that we received the last time we read this
* subscription.
*
* @return A String containing the etag header.
@ -91,7 +90,7 @@ class Subscription {
}
/**
* Return the last-modified header that we recieved the last time we read
* Return the last-modified header that we received the last time we read
* this subscription.
*
* @return A String containing the last-modified header.

View File

@ -26,6 +26,8 @@ import java.util.Iterator;
import java.util.List;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.HostTxtEntry;
import net.i2p.util.PortMapper;
/**
* An iterator over the subscriptions in a SubscriptionList. Note that this iterator
@ -36,9 +38,9 @@ import net.i2p.I2PAppContext;
*/
class SubscriptionIterator implements Iterator<AddressBook> {
private Iterator<Subscription> subIterator;
private String proxyHost;
private int proxyPort;
private final Iterator<Subscription> subIterator;
private final String proxyHost;
private final int proxyPort;
private final long delay;
/**
@ -69,11 +71,17 @@ class SubscriptionIterator implements Iterator<AddressBook> {
* Yes, the EepGet fetch() is done in here in next().
*
* see java.util.Iterator#next()
* @return an AddressBook (empty if the minimum delay has not been met)
* @return non-null AddressBook (empty if the minimum delay has not been met,
* or there is no proxy tunnel, or the fetch otherwise fails)
*/
public AddressBook next() {
Subscription sub = this.subIterator.next();
if (sub.getLastFetched() + this.delay < I2PAppContext.getGlobalContext().clock().now()) {
if (sub.getLocation().startsWith("file:")) {
// test only
return new AddressBook(sub.getLocation().substring(5));
} else if (sub.getLastFetched() + this.delay < I2PAppContext.getGlobalContext().clock().now() &&
I2PAppContext.getGlobalContext().portMapper().getPort(PortMapper.SVC_HTTP_PROXY) >= 0 &&
!I2PAppContext.getGlobalContext().getBooleanProperty("i2p.vmCommSystem")) {
//System.err.println("Fetching addressbook from " + sub.getLocation());
return new AddressBook(sub, this.proxyHost, this.proxyPort);
} else {
@ -81,7 +89,7 @@ class SubscriptionIterator implements Iterator<AddressBook> {
// DataHelper.formatDuration(I2PAppContext.getGlobalContext().clock().now() - sub.getLastFetched()) +
// " ago but the minimum delay is " +
// DataHelper.formatDuration(this.delay));
return new AddressBook(Collections.EMPTY_MAP);
return new AddressBook(Collections.<String, HostTxtEntry>emptyMap());
}
}

View File

@ -23,8 +23,9 @@ package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@ -34,19 +35,15 @@ import java.util.Map;
* @author Ragnarok
*
*/
class SubscriptionList {
class SubscriptionList implements Iterable<AddressBook> {
private List<Subscription> subscriptions;
private File etagsFile;
private File lastModifiedFile;
private File lastFetchedFile;
private final List<Subscription> subscriptions;
private final File etagsFile;
private final File lastModifiedFile;
private final File lastFetchedFile;
private final long delay;
private String proxyHost;
private int proxyPort;
private final String proxyHost;
private final int proxyPort;
/**
* Construct a SubscriptionList using the urls from locationsFile and, if
@ -69,7 +66,7 @@ class SubscriptionList {
public SubscriptionList(File locationsFile, File etagsFile,
File lastModifiedFile, File lastFetchedFile, long delay, List<String> defaultSubs, String proxyHost,
int proxyPort) {
this.subscriptions = new LinkedList();
this.subscriptions = new ArrayList<Subscription>(4);
this.etagsFile = etagsFile;
this.lastModifiedFile = lastModifiedFile;
this.lastFetchedFile = lastFetchedFile;
@ -84,17 +81,17 @@ class SubscriptionList {
try {
etags = ConfigParser.parse(etagsFile);
} catch (IOException exp) {
etags = new HashMap();
etags = Collections.<String, String>emptyMap();
}
try {
lastModified = ConfigParser.parse(lastModifiedFile);
} catch (IOException exp) {
lastModified = new HashMap();
lastModified = Collections.<String, String>emptyMap();
}
try {
lastFetched = ConfigParser.parse(lastFetchedFile);
} catch (IOException exp) {
lastFetched = new HashMap();
lastFetched = Collections.<String, String>emptyMap();
}
for (String location : locations) {
this.subscriptions.add(new Subscription(location, etags.get(location),
@ -103,6 +100,24 @@ class SubscriptionList {
}
}
/**
* Testing only.
*
* @param hoststxt path to a local file used as the test 'subscription' input
* @since 0.9.26
*/
public SubscriptionList(String hoststxt) {
File dummy = new File("/dev/null");
this.etagsFile = dummy;
this.lastModifiedFile = dummy;
this.lastFetchedFile = dummy;
this.delay = 0;
this.proxyHost = "127.0.0.1";
this.proxyPort = 4444;
Subscription sub = new Subscription("file:" + hoststxt, null, null, null);
this.subscriptions = Collections.singletonList(sub);
}
/**
* Return an iterator over the AddressBooks represented by the Subscriptions
* in this SubscriptionList.
@ -121,9 +136,10 @@ class SubscriptionList {
* won't be read back correctly; the '=' should be escaped.
*/
public void write() {
Map<String, String> etags = new HashMap();
Map<String, String> lastModified = new HashMap();
Map<String, String> lastFetched = new HashMap();
int sz = subscriptions.size();
Map<String, String> etags = new HashMap<String, String>(sz);
Map<String, String> lastModified = new HashMap<String, String>(sz);
Map<String, String> lastFetched = new HashMap<String, String>(sz);
for (Subscription sub : this.subscriptions) {
if (sub.getEtag() != null) {
etags.put(sub.getLocation(), sub.getEtag());
@ -131,13 +147,16 @@ class SubscriptionList {
if (sub.getLastModified() != null) {
lastModified.put(sub.getLocation(), sub.getLastModified());
}
lastFetched.put(sub.getLocation(), "" + sub.getLastFetched());
lastFetched.put(sub.getLocation(), Long.toString(sub.getLastFetched()));
}
try {
ConfigParser.write(etags, this.etagsFile);
} catch (IOException exp) {}
try {
ConfigParser.write(lastModified, this.lastModifiedFile);
} catch (IOException exp) {}
try {
ConfigParser.write(lastFetched, this.lastFetchedFile);
} catch (IOException exp) {
}
} catch (IOException exp) {}
}
}

View File

@ -0,0 +1,11 @@
<html>
<body>
<p>
The addressbook application, which fetches hosts.txt files from subscription URLs via
HTTP and adds new hosts to the local database.
While implemented as a webapp, this application contains no user interface.
May also be packaged as a jar, as is done for Android.
The webapp named 'addressbook' in the console is actually SusiDNS.
</p>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -36,8 +36,8 @@ import java.io.IOException;
import java.io.RandomAccessFile;
public class RAIFile implements RandomAccessInterface, DataInput, DataOutput {
private File f;
private RandomAccessFile delegate;
private final File f;
private final RandomAccessFile delegate;
private final boolean r, w;
public RAIFile(RandomAccessFile file) throws FileNotFoundException {

View File

@ -28,9 +28,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.io;
import java.io.Closeable;
import java.io.IOException;
public interface RandomAccessInterface {
public interface RandomAccessInterface extends Closeable {
public long getFilePointer() throws IOException;
public long length() throws IOException;
public int read() throws IOException;

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.io;
public interface Serializer {
public byte[] getBytes(Object o);
public Object construct(byte[] b);
public interface Serializer<T> {
public byte[] getBytes(T o);
public T construct(byte[] b);
}

View File

@ -0,0 +1,669 @@
/*
Copyright (c) 2006, Matthew Estes
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Metanotion Software nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.io.block;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
import net.metanotion.io.RAIFile;
import net.metanotion.io.RandomAccessInterface;
import net.metanotion.io.Serializer;
import net.metanotion.io.data.IdentityBytes;
import net.metanotion.io.data.IntBytes;
import net.metanotion.io.data.StringBytes;
import net.metanotion.io.data.UTF8StringBytes;
import net.metanotion.io.block.index.BSkipList;
import net.metanotion.io.block.index.BSkipSpan;
import net.metanotion.util.skiplist.SkipIterator;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
/**
* On-disk format:
* Magic number (6 bytes)
* Version major/minor (2 bytes)
* file length (long)
* free list start (unsigned int)
* is mounted (unsigned short) 0 = no, 1 = yes
* span size (unsigned short)
* block size (unsigned int)
*
* Metaindex skiplist is on page 2
*
* Pages are 1 KB and are numbered starting from 1.
* e.g. the Metaindex skiplist is at offset 1024 bytes
*/
public class BlockFile implements Closeable {
public static final int PAGESIZE = 1024;
public static final long OFFSET_MOUNTED = 20;
public final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
public final RandomAccessInterface file;
private static final int MAJOR = 0x01;
private static final int MINOR = 0x02;
private static final int MIN_MAJOR = 0x01;
private static final int MIN_MINOR = 0x01;
// I2P changed magic number, format changed, magic numbers now on all pages
private static final long MAGIC_BASE = 0x3141de4932500000L; // 0x3141de I 2 P 00 00
private static final long MAGIC = MAGIC_BASE | (MAJOR << 8) | MINOR;
private long magicBytes = MAGIC;
public static final int MAGIC_CONT = 0x434f4e54; // "CONT"
public static final int METAINDEX_PAGE = 2;
/** 2**32 pages of 1024 bytes each, more or less */
private static final long MAX_LEN = (2l << (32 + 10)) - 1;
/** new BlockFile length, containing a superblock page and a metaindex page. */
private long fileLen = PAGESIZE * 2;
private int freeListStart = 0;
private int mounted = 0;
public int spanSize = 16;
/** I2P was the file locked when we opened it? */
private final boolean _wasMounted;
private final BSkipList<String, Integer> metaIndex;
private boolean _isClosed;
/** cached list of free pages, only valid if freListStart > 0 */
private FreeListBlock flb;
private final HashMap<String, BSkipList> openIndices = new HashMap<String, BSkipList>();
private void mount() throws IOException {
file.seek(BlockFile.OFFSET_MOUNTED);
mounted = 1;
file.writeShort(mounted);
}
private void writeSuperBlock() throws IOException {
file.seek(0);
file.writeLong( magicBytes);
file.writeLong( fileLen);
file.writeInt( freeListStart);
file.writeShort(mounted);
file.writeShort(spanSize);
// added in version 1.2
file.writeInt(PAGESIZE);
}
private void readSuperBlock() throws IOException {
file.seek(0);
magicBytes = file.readLong();
fileLen = file.readLong();
freeListStart = file.readUnsignedInt();
mounted = file.readUnsignedShort();
spanSize = file.readUnsignedShort();
// assume 1024 page size
}
/**
* Run an integrity check on the blockfile and all the skiplists in it.
*
* WARNING:
* This only works on skiplists using UTF8StringBytes as a key
* serializer, unless the exception has been coded in bfck below.
* Will CORRUPT other skiplists.
*/
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("Usage: BlockFile file");
return;
}
boolean init = !(new File(args[0])).exists();
RAIFile raif = null;
BlockFile bf = null;
try {
raif = new RAIFile(new File(args[0]), true, true);
bf = new BlockFile(raif, init);
bf.bfck(true);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bf != null) try { bf.close(); } catch (IOException ioe) {}
if (raif != null) try { raif.close(); } catch (IOException ioe) {}
}
}
/**
* Write bytes
* This will allocate additional continuation pages as necessary.
*
* @param data data to write
* @param page current page
* @param curPageOff in (current) and out (new) parameter at index 0
* @param nextPage in (current) and out (new) parameter at index 0
* @return current page
*/
public int writeMultiPageData(byte[] data, int page, int[] curPageOff, int[] nextPage) throws IOException {
int pageCounter = curPageOff[0];
int curNextPage = nextPage[0];
int curPage = page;
int dct = 0;
while(dct < data.length) {
int len = PAGESIZE - pageCounter;
if(len <= 0) {
if(curNextPage==0) {
curNextPage = this.allocPage();
BlockFile.pageSeek(this.file, curNextPage);
this.file.writeInt(MAGIC_CONT);
this.file.writeInt(0);
BlockFile.pageSeek(this.file, curPage);
this.file.skipBytes(4); // skip magic
this.file.writeInt(curNextPage);
}
BlockFile.pageSeek(this.file, curNextPage);
curPage = curNextPage;
int magic = this.file.readInt();
if (magic != MAGIC_CONT)
throw new IOException("Bad SkipSpan continuation magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage);
curNextPage = this.file.readUnsignedInt();
pageCounter = BSkipSpan.CONT_HEADER_LEN;
len = PAGESIZE - pageCounter;
}
this.file.write(data, dct, Math.min(len, data.length - dct));
pageCounter += Math.min(len, data.length - dct);
dct += Math.min(len, data.length - dct);
}
nextPage[0] = curNextPage;
curPageOff[0] = pageCounter;
return curPage;
}
/**
* Read bytes
*
* @param arr fill this array fully with data
* @param page current page
* @param curPageOff in (current) and out (new) parameter at index 0
* @param nextPage in (current) and out (new) parameter at index 0
* @return current page
*/
public int readMultiPageData(byte[] arr, int page, int[] curPageOff, int[] nextPage) throws IOException {
int pageCounter = curPageOff[0];
int curNextPage = nextPage[0];
int curPage = page;
int dct = 0;
while(dct < arr.length) {
int len = PAGESIZE - pageCounter;
if(len <= 0) {
if (curNextPage <= 0)
throw new IOException("not enough pages to read data still need " + (arr.length - dct));
BlockFile.pageSeek(this.file, curNextPage);
int magic = this.file.readInt();
if (magic != MAGIC_CONT)
throw new IOException("Bad SkipSpan continuation magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage);
curPage = curNextPage;
curNextPage = this.file.readUnsignedInt();
pageCounter = BSkipSpan.CONT_HEADER_LEN;
len = PAGESIZE - pageCounter;
}
int res = this.file.read(arr, dct, Math.min(len, arr.length - dct));
if(res == -1) { throw new IOException(); }
pageCounter += Math.min(len, arr.length - dct);
dct += res;
}
nextPage[0] = curNextPage;
curPageOff[0] = pageCounter;
return curPage;
}
/**
* Skip length bytes
* The same as readMultiPageData() without returning a result
*
* @param length number of bytes to skip
* @param page current page
* @param curPageOff in (current) and out (new) parameter at index 0
* @param nextPage in (current) and out (new) parameter at index 0
* @return current page
*/
public int skipMultiPageBytes(int length, int page, int[] curPageOff, int[] nextPage) throws IOException {
int pageCounter = curPageOff[0];
int curNextPage = nextPage[0];
int curPage = page;
int dct = 0;
while(dct < length) {
int len = PAGESIZE - pageCounter;
if(len <= 0) {
if (curNextPage <= 0)
throw new IOException("not enough pages to skip");
BlockFile.pageSeek(this.file, curNextPage);
int magic = this.file.readInt();
if (magic != MAGIC_CONT)
throw new IOException("Bad SkipSpan continuation magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage);
curPage = curNextPage;
curNextPage = this.file.readUnsignedInt();
pageCounter = BSkipSpan.CONT_HEADER_LEN;
len = PAGESIZE - pageCounter;
}
int res = Math.min(len, length - dct);
this.file.skipBytes(res);
pageCounter += res;
dct += res;
}
nextPage[0] = curNextPage;
curPageOff[0] = pageCounter;
return curPage;
}
/** Use this constructor with a readonly RAI for a readonly blockfile */
public BlockFile(RandomAccessInterface rai) throws IOException { this(rai, false); }
/** RAF must be writable */
public BlockFile(RandomAccessFile raf) throws IOException { this(new RAIFile(raf), false); }
/** RAF must be writable */
public BlockFile(RandomAccessFile raf, boolean init) throws IOException { this(new RAIFile(raf), init); }
/** File must be writable */
public BlockFile(File f, boolean init) throws IOException { this(new RAIFile(f, true, true), init); }
/** Use this constructor with a readonly RAI and init = false for a readonly blockfile */
public BlockFile(RandomAccessInterface rai, boolean init) throws IOException {
if(rai==null) { throw new NullPointerException(); }
file = rai;
if(init) {
file.setLength(fileLen);
writeSuperBlock();
BSkipList.init(this, METAINDEX_PAGE, spanSize);
}
readSuperBlock();
if(magicBytes != MAGIC) {
if ((magicBytes & MAGIC_BASE) == MAGIC_BASE) {
long major = (magicBytes >> 8) & 0xff;
long minor = magicBytes & 0xff;
if (major < MIN_MAJOR ||
(major == MIN_MAJOR && minor < MIN_MINOR))
throw new IOException("Expected " + MAJOR + '.' + MINOR +
" but got " + major + '.' + minor);
} else {
throw new IOException("Bad magic number");
}
}
_wasMounted = mounted != 0;
if (_wasMounted)
log.warn("Warning - file was not previously closed");
if(fileLen != file.length())
throw new IOException("Expected file length " + fileLen +
" but actually " + file.length());
if (rai.canWrite())
mount();
metaIndex = new BSkipList<String, Integer>(spanSize, this, METAINDEX_PAGE, new StringBytes(), new IntBytes());
}
/**
* I2P was the file locked when we opened it?
* @since 0.8.8
*/
public boolean wasMounted() {
return _wasMounted;
}
/**
* Go to any page but the superblock.
* Page 1 is the superblock, must use file.seek(0) to get there.
* @param page &gt;= 2
*/
public static void pageSeek(RandomAccessInterface file, int page) throws IOException {
if (page < METAINDEX_PAGE)
throw new IOException("Negative page or superblock access attempt: " + page);
file.seek((page - 1L) * PAGESIZE );
}
public int allocPage() throws IOException {
if(freeListStart != 0) {
try {
if (flb == null)
flb = new FreeListBlock(file, freeListStart);
if(!flb.isEmpty()) {
if (log.shouldLog(Log.DEBUG))
log.debug("Alloc from " + flb);
return flb.takePage();
} else {
if (log.shouldLog(Log.DEBUG))
log.debug("Alloc returning empty " + flb);
freeListStart = flb.getNextPage();
writeSuperBlock();
int rv = flb.page;
flb = null;
return rv;
}
} catch (IOException ioe) {
log.error("Discarding corrupt free list block page " + freeListStart, ioe);
freeListStart = 0;
}
}
long offset = file.length();
fileLen = offset + PAGESIZE;
file.setLength(fileLen);
writeSuperBlock();
return (int) ((offset / PAGESIZE) + 1);
}
/**
* Add the page to the free list. The file is never shrunk.
* TODO: Reclaim free pages at end of file, or even do a full compaction.
* Does not throw exceptions; logs on failure.
*/
public void freePage(int page) {
if (page <= METAINDEX_PAGE) {
log.error("Bad page free attempt: " + page);
return;
}
try {
if(freeListStart == 0) {
freeListStart = page;
FreeListBlock.initPage(file, page);
writeSuperBlock();
if (log.shouldLog(Log.DEBUG))
log.debug("Freed page " + page + " as new FLB");
return;
}
try {
if (flb == null)
flb = new FreeListBlock(file, freeListStart);
if(flb.isFull()) {
// Make the free page a new FLB
if (log.shouldLog(Log.DEBUG))
log.debug("Full: " + flb);
FreeListBlock.initPage(file, page);
if(flb.getNextPage() == 0) {
// Put it at the tail.
// Next free will make a new FLB at the head,
// so we have one more FLB than we need.
flb.setNextPage(page);
} else {
// Put it at the head
flb = new FreeListBlock(file, page);
flb.setNextPage(freeListStart);
freeListStart = page;
writeSuperBlock();
}
if (log.shouldLog(Log.DEBUG))
log.debug("Freed page " + page + " to full " + flb);
return;
}
flb.addPage(page);
if (log.shouldLog(Log.DEBUG))
log.debug("Freed page " + page + " to " + flb);
} catch (IOException ioe) {
log.error("Discarding corrupt free list block page " + freeListStart, ioe);
freeListStart = page;
FreeListBlock.initPage(file, page);
writeSuperBlock();
flb = null;
}
} catch (IOException ioe) {
log.error("Error freeing page: " + page, ioe);
}
}
/**
* Open a skiplist if it exists.
* Returns null if the skiplist does not exist.
* Empty skiplists are not preserved after close.
*
* If the file is writable, this runs an integrity check and repair
* on first open.
*
* @return null if not found
*/
@SuppressWarnings("unchecked")
public <K extends Comparable<? super K>, V> BSkipList<K, V> getIndex(String name, Serializer<K> key, Serializer<V> val) throws IOException {
// added I2P
BSkipList<K, V> bsl = (BSkipList<K, V>) openIndices.get(name);
if (bsl != null)
return bsl;
Integer page = metaIndex.get(name);
if (page == null) { return null; }
bsl = new BSkipList<K, V>(spanSize, this, page.intValue(), key, val, true);
if (file.canWrite()) {
log.info("Checking skiplist " + name + " in blockfile " + file);
if (bsl.bslck(true, false))
log.logAlways(Log.WARN, "Repaired skiplist " + name + " in blockfile " + file);
else
log.info("No errors in skiplist " + name + " in blockfile " + file);
}
openIndices.put(name, bsl);
return bsl;
}
/**
* Create and open a new skiplist if it does not exist.
* Throws IOException if it already exists.
*
* @throws IOException if already exists or other errors
*/
public <K extends Comparable<? super K>, V> BSkipList<K, V> makeIndex(String name, Serializer<K> key, Serializer<V> val) throws IOException {
if(metaIndex.get(name) != null) { throw new IOException("Index already exists"); }
int page = allocPage();
metaIndex.put(name, Integer.valueOf(page));
BSkipList.init(this, page, spanSize);
BSkipList<K, V> bsl = new BSkipList<K, V>(spanSize, this, page, key, val, true);
openIndices.put(name, bsl);
return bsl;
}
/**
* Delete a skiplist if it exists.
* Must be open. Throws IOException if exists but is closed.
* Broken before 0.9.26.
*
* @throws IOException if it is closed.
*/
public void delIndex(String name) throws IOException {
if (metaIndex.get(name) == null)
return;
BSkipList bsl = openIndices.get(name);
if (bsl == null)
throw new IOException("Cannot delete closed skiplist, open it first: " + name);
bsl.delete();
openIndices.remove(name);
metaIndex.remove(name);
}
/**
* Close a skiplist if it is open.
*
* Added I2P
*/
public void closeIndex(String name) {
BSkipList bsl = openIndices.remove(name);
if (bsl != null)
bsl.flush();
}
/**
* Reformat a skiplist with new Serializers if it exists.
* The skiplist must be closed.
* Throws IOException if the skiplist is open.
* The skiplist will remain closed after completion.
*
* @throws IOException if it is open or on errors
* @since 0.9.26
*/
public <K extends Comparable<? super K>, V> void reformatIndex(String name, Serializer<K> oldKey, Serializer<V> oldVal,
Serializer<K> newKey, Serializer<V> newVal) throws IOException {
if (openIndices.containsKey(name))
throw new IOException("Cannot reformat open skiplist " + name);
BSkipList<K, V> old = getIndex(name, oldKey, oldVal);
if (old == null)
return;
long start = System.currentTimeMillis();
String tmpName = "---tmp---" + name + "---tmp---";
BSkipList<K, V> tmp = getIndex(tmpName, newKey, newVal);
if (tmp != null) {
log.logAlways(Log.WARN, "Continuing on aborted reformat of list " + name);
} else {
tmp = makeIndex(tmpName, newKey, newVal);
}
// It could be much more efficient to do this at the
// SkipSpan layer but that's way too hard.
final int loop = 32;
List<K> keys = new ArrayList<K>(loop);
List<V> vals = new ArrayList<V>(loop);
while (true) {
SkipIterator<K, V> iter = old.iterator();
for (int i = 0; iter.hasNext() && i < loop; i++) {
try {
keys.add(iter.nextKey());
vals.add(iter.next());
} catch (NoSuchElementException nsee) {
throw new IOException("Unable to reformat corrupt list " + name, nsee);
}
}
// save state, as deleting corrupts the iterator
boolean done = !iter.hasNext();
for (int i = 0; i < keys.size(); i++) {
tmp.put(keys.get(i), vals.get(i));
}
for (int i = keys.size() - 1; i >= 0; i--) {
old.remove(keys.get(i));
}
if (done)
break;
keys.clear();
vals.clear();
}
delIndex(name);
closeIndex(name);
closeIndex(tmpName);
Integer page = metaIndex.get(tmpName);
metaIndex.put(name, page);
metaIndex.remove(tmpName);
if (log.shouldWarn())
log.warn("reformatted list: " + name + " in " +
(System.currentTimeMillis() - start) + "ms");
}
/**
* Closes all open skiplists and then the blockfile itself.
*
* Note (I2P)
* Does NOT close the RAF / RAI.
*/
public void close() throws IOException {
// added I2P
if (_isClosed)
return;
_isClosed = true;
metaIndex.close();
for (BSkipList bsl : openIndices.values()) {
bsl.close();
}
// Unmount.
if (file.canWrite()) {
file.seek(BlockFile.OFFSET_MOUNTED);
file.writeShort(0);
}
}
/**
* Run an integrity check on the blockfile and all the skiplists in it
* @return true if the levels were modified.
*/
public boolean bfck(boolean fix) {
if (log.shouldLog(Log.INFO)) {
log.info("magic bytes " + magicBytes);
log.info("fileLen " + fileLen);
log.info("freeListStart " + freeListStart);
log.info("mounted " + mounted);
log.info("spanSize " + spanSize);
log.info("Metaindex");
log.info("Checking meta index in blockfile " + file);
}
boolean rv = metaIndex.bslck(fix, true);
if (rv) {
if (log.shouldLog(Log.WARN))
log.warn("Repaired meta index in blockfile " + file);
} else {
if (log.shouldLog(Log.INFO))
log.info("No errors in meta index in blockfile " + file);
}
int items = 0;
for (SkipIterator iter = metaIndex.iterator(); iter.hasNext(); ) {
String slname = (String) iter.nextKey();
Integer page = (Integer) iter.next();
if (log.shouldLog(Log.INFO))
log.info("List " + slname + " page " + page);
try {
// This uses IdentityBytes, so the value class won't be right, but at least
// it won't fail the out-of-order check
boolean fail;
if (slname.equals("%%__REVERSE__%%")) {
Serializer<Integer> keyser = new IntBytes();
fail = getIndex(slname, keyser, new IdentityBytes()) == null;
} else {
Serializer<String> keyser = new UTF8StringBytes();
fail = getIndex(slname, keyser, new IdentityBytes()) == null;
}
if (fail) {
log.error("Can't find list? " + slname);
continue;
}
// The check is now done in getIndex(), no need to do here...
// but we can't get the return value of the check here.
items++;
} catch (IOException ioe) {
log.error("Error with list " + slname, ioe);
}
}
log.info("Checked meta index and " + items + " skiplists");
if(freeListStart != 0) {
try {
if (flb == null)
flb = new FreeListBlock(file, freeListStart);
flb.flbck(true);
} catch (IOException ioe) {
log.error("Free list error", ioe);
}
} else {
if (log.shouldLog(Log.INFO))
log.info("No freelist");
}
return rv;
}
}

View File

@ -0,0 +1,439 @@
/*
Copyright (c) 2006, Matthew Estes
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Metanotion Software nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.io.block.index;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import net.metanotion.io.block.BlockFile;
import net.metanotion.util.skiplist.SkipList;
import net.metanotion.util.skiplist.SkipLevels;
import net.metanotion.util.skiplist.SkipSpan;
import net.i2p.util.Log;
/**
* On-disk format:
*<pre>
* Magic number (long)
* max height (unsigned short)
* non-null height (unsigned short)
* span page (unsigned int)
* height number of level pages (unsigned ints)
*</pre>
*
* Always fits on one page.
*/
public class BSkipLevels<K extends Comparable<? super K>, V> extends SkipLevels<K, V> {
private static final long MAGIC = 0x42534c6576656c73l; // "BSLevels"
static final int HEADER_LEN = 16;
public final int levelPage;
public final int spanPage;
public final BlockFile bf;
private final BSkipList<K, V> bsl;
private boolean isKilled;
// the level pages, passed from the constructor to initializeLevels(),
// NOT kept up to date
private final int[] lps;
/**
* Non-recursive initializer initializeLevels()
* MUST be called on the first BSkipLevel in the skiplist
* after the constructor, unless it's a new empty
* level and init() was previously called.
*/
@SuppressWarnings("unchecked")
public BSkipLevels(BlockFile bf, int levelPage, BSkipList<K, V> bsl) throws IOException {
this.levelPage = levelPage;
this.bf = bf;
this.bsl = bsl;
BlockFile.pageSeek(bf.file, levelPage);
long magic = bf.file.readLong();
if (magic != MAGIC)
throw new IOException("Bad SkipLevels magic number 0x" + Long.toHexString(magic) + " on page " + levelPage);
bsl.levelHash.put(Integer.valueOf(this.levelPage), this);
int maxLen = bf.file.readUnsignedShort();
int nonNull = bf.file.readUnsignedShort();
if(maxLen < 1 || maxLen > MAX_SIZE || nonNull > maxLen)
throw new IOException("Invalid Level Skip size " + nonNull + " / " + maxLen);
spanPage = bf.file.readUnsignedInt();
bottom = bsl.spanHash.get(Integer.valueOf(spanPage));
if (bottom == null) {
// FIXME recover better?
bf.log.error("No span found in cache???");
throw new IOException("No span found in cache???");
}
this.levels = (BSkipLevels<K, V>[]) new BSkipLevels[maxLen];
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Reading New BSkipLevels with " + nonNull + " / " + maxLen + " valid levels page " + levelPage +
" in skiplist " + bsl);
// We have to read now because new BSkipLevels() will move the file pointer
lps = new int[nonNull];
for(int i = 0; i < nonNull; i++) {
lps[i] = bf.file.readUnsignedInt();
}
}
/**
* Non-recursive initializer.
* MUST be called on the first BSkipLevel in the skiplist
* after the constructor, unless it's a new empty
* level and init() was previously called.
* Only call on the first skiplevel in the list!
*
* @since 0.9.20
*/
public void initializeLevels() {
List<BSkipLevels<K, V>> toInit = new ArrayList<BSkipLevels<K, V>>(32);
List<BSkipLevels<K, V>> nextInit = new ArrayList<BSkipLevels<K, V>>(32);
initializeLevels(toInit);
while (!toInit.isEmpty()) {
for (BSkipLevels<K, V> bsl : toInit) {
bsl.initializeLevels(nextInit);
}
List<BSkipLevels<K, V>> tmp = toInit;
toInit = nextInit;
nextInit = tmp;
nextInit.clear();
}
}
/**
* Non-recursive initializer.
* MUST be called after constructor.
*
* @param nextInit out parameter, next levels to initialize
* @since 0.9.20
*/
private void initializeLevels(List<BSkipLevels<K, V>> nextInit) {
boolean fail = false;
for(int i = 0; i < lps.length; i++) {
int lp = lps[i];
if(lp != 0) {
levels[i] = bsl.levelHash.get(Integer.valueOf(lp));
if(levels[i] == null) {
try {
BSkipLevels<K, V> lev = new BSkipLevels<K, V>(bf, lp, bsl);
levels[i] = lev;
nextInit.add(lev);
} catch (IOException ioe) {
bf.log.error("Corrupt database, bad level " + i +
" at page " + lp, ioe);
levels[i] = null;
fail = true;
continue;
}
}
K ourKey = key();
K nextKey = levels[i].key();
if (ourKey != null && nextKey != null &&
ourKey.compareTo(nextKey) >= 0) {
bf.log.warn("Corrupt database, level out of order " + this +
' ' + print() +
" i = " + i + ' ' + levels[i]);
// This will be fixed in blvlfix() via BlockFile.getIndex()
//levels[i] = null;
//fail = true;
}
// TODO also check that the level[] array is not out-of-order
} else {
if (bf.log.shouldLog(Log.WARN))
bf.log.warn(this + " i = " + i + " of " +
lps.length + " / " + levels.length +
" valid levels but page is zero");
levels[i] = null;
fail = true;
}
}
if (fail && bf.file.canWrite()) {
// corruption is actually fixed in blvlfix() via BlockFile.getIndex()
// after instantiation is complete
bf.log.error("Repairing corruption of " + this +
' ' + print());
flush();
// if the removed levels have no other links to them, they and their data
// are lost forever, but the alternative is infinite loops / stack overflows
// in SkipSpan.
}
}
public static void init(BlockFile bf, int page, int spanPage, int maxHeight) throws IOException {
BlockFile.pageSeek(bf.file, page);
bf.file.writeLong(MAGIC);
bf.file.writeShort((short) maxHeight);
bf.file.writeShort(0);
bf.file.writeInt(spanPage);
}
@Override
public void flush() {
if (isKilled) {
bf.log.error("Already killed!! " + this, new Exception());
return;
}
try {
BlockFile.pageSeek(bf.file, levelPage);
bf.file.writeLong(MAGIC);
bf.file.writeShort((short) levels.length);
int i = 0;
for( ; i < levels.length; i++) {
if(levels[i] == null)
break;
}
bf.file.writeShort(i);
bf.file.writeInt(((BSkipSpan<K, V>) bottom).page);
for(int j = 0; j < i; j++) {
bf.file.writeInt(((BSkipLevels<K, V>) levels[j]).levelPage);
}
} catch (IOException ioe) { throw new RuntimeException("Error writing to database", ioe); }
}
@Override
public void killInstance() {
if (isKilled) {
bf.log.error("Already killed!! " + this, new Exception());
return;
}
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Killing " + this + ' ' + print() /* , new Exception() */ );
isKilled = true;
bsl.levelHash.remove(Integer.valueOf(levelPage));
bf.freePage(levelPage);
}
@Override
public SkipLevels<K, V> newInstance(int levels, SkipSpan<K, V> ss, SkipList<K, V> sl) {
try {
BSkipSpan<K, V> bss = (BSkipSpan<K, V>) ss;
BSkipList<K, V> bsl = (BSkipList<K, V>) sl;
int page = bf.allocPage();
BSkipLevels.init(bf, page, bss.page, levels);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("New BSkipLevels height " + levels + " page " + page);
return new BSkipLevels<K, V>(bf, page, bsl);
// do not need to call initLevels() here
} catch (IOException ioe) { throw new RuntimeException("Error creating database page", ioe); }
}
/**
* Run an integrity check on the skiplevels from the first,
* or just fix it if fix == true.
* Only call from the first level.
* @return true if the levels were modified.
*/
@Override
public boolean blvlck(boolean fix) {
if (fix)
return blvlfix();
return blvlck(fix, 0, null);
}
/**
* Fix the levels.
* Only call from the first level.
* Primarily to fix nulls in levels caused by previous SkipLevels bug.
* This should handle dups and loops and out-of-order levels too,
* but those may cause problems before this in the constructor.
* This is fast enough to call every time the skiplist is opened.
* @return true if the levels were modified.
* @since 0.8.8
*/
private boolean blvlfix() {
TreeSet<SkipLevels<K, V>> lvls = new TreeSet<SkipLevels<K, V>>(new LevelComparator<K, V>());
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Starting level search");
getAllLevels(this, lvls);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Finished level search, found " + lvls.size() + " levels");
if (!this.equals(lvls.last())) {
bf.log.error("First level is out of order! " + print());
// TODO switch stack and other fields for the skiplist - hard to test
}
// traverse the levels, back-to-front
boolean rv = false;
SkipLevels<K, V> after = null;
for (SkipLevels<K, V> lv : lvls) {
boolean modified = false;
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Checking " + lv.print());
if (after != null) {
int min = Math.min(after.levels.length, lv.levels.length);
for (int i = 0; i < min; i++) {
SkipLevels<K, V> cur = lv.levels[i];
if (cur != after) {
if (cur != null)
bf.log.warn("Level " + i + " was wrong, fixing for " + lv.print());
else
bf.log.warn("Level " + i + " was null, fixing for " + lv.print());
lv.levels[i] = after;
modified = true;
}
}
} else {
// last one
for (int i = 0; i < lv.levels.length; i++) {
if (lv.levels[i] != null) {
lv.levels[i] = null;
bf.log.warn("Last level " + i + " was non-null, fixing for " + lv.print());
modified = true;
}
}
}
if (modified) {
lv.flush();
rv = true;
}
after = lv;
}
if (bf.log.shouldLog(Log.INFO))
bf.log.info("Checked " + lvls.size() + " levels");
return rv;
}
/**
* Breadth-first, sortof
* We assume everything is findable from the root level
* @param l non-null
* @param lvlSet out parameter, the result
* @since 0.8.8
*/
private void getAllLevels(SkipLevels<K, V> l, Set<SkipLevels<K, V>> lvlSet) {
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("GAL " + l.print());
// Do level 0 without recursion, on the assumption everything is findable
// from the root
SkipLevels<K, V> cur = l;
while (cur != null && lvlSet.add(cur)) {
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Adding " + cur.print());
if (!cur.equals(this) && cur.key() == null && bf.log.shouldLog(Log.WARN))
bf.log.debug("Null KEY!!! " + cur.print());
cur = cur.levels[0];
}
// If there were no nulls at level 0 in the middle,
// i.e. there are no problems, this won't find anything
for (int i = 1; i < l.levels.length; i++) {
SkipLevels<K, V> lv = l.levels[i];
if (lv != null && !lvlSet.contains(lv))
getAllLevels(lv, lvlSet);
}
}
/**
* For sorting levels in blvlfix()
* Sorts in REVERSE order.
* @since 0.8.8
*/
private static class LevelComparator<K extends Comparable<? super K>, V> implements Comparator<SkipLevels<K, V>>, Serializable {
public int compare(SkipLevels<K, V> l, SkipLevels<K, V> r) {
K lk = l.key();
K rk = r.key();
if (lk == null && rk == null)
return 0;
if (lk == null)
return 1;
if (rk == null)
return -1;
// reverse!
return rk.compareTo(lk);
}
}
/*
* Recursively walk through the levels at level 0
* This needs work.
*/
@Override
@SuppressWarnings("unchecked")
public boolean blvlck(boolean fix, int width, SkipLevels<K, V>[] prevLevels) {
bf.log.warn(" Skip level at width " + width);
bf.log.warn(" levels " + this.levels.length);
bf.log.warn(" first key " + this.key());
bf.log.warn(" spanPage " + this.spanPage);
bf.log.warn(" levelPage " + this.levelPage);
SkipLevels<K, V> higher = null;
for (int i = levels.length - 1; i >= 0; i--) {
if (levels[i] != null) {
bf.log.info(" level " + i + " -> " + levels[i].key() + " ");
if (higher != null) {
if (higher.key().compareTo(key()) < 0)
bf.log.warn(" Higher level has lower key " + higher.key());
}
} else {
bf.log.info(" level " + i + " empty");
if (higher != null)
bf.log.warn(" Higher level is not empty, key is " + higher.key());
}
}
if (prevLevels != null) {
int min = Math.min(prevLevels.length, levels.length);
for (int i = 0; i < min; i++) {
if (prevLevels[i] == this) {
prevLevels[i] = levels[i];
} else if (prevLevels[i] != null) {
// skipping over us
bf.log.warn(" Previous levels is non-null " + prevLevels[i].key() + " but not pointing to us at level " + i);
// replace so we only get one error
prevLevels[i] = levels[i];
} else {
// dead end in the middle
if (levels[i] != null) {
bf.log.warn(" Previous levels is null but we are non-null " + levels[i].key() + " at level " + i);
// replace so we only get one error
prevLevels[i] = levels[i];
}
}
}
} else {
prevLevels = (SkipLevels<K, V>[]) new SkipLevels[levels.length];
System.arraycopy(levels, 0, prevLevels, 0, levels.length);
}
if (levels[0] != null)
levels[0].blvlck(fix, width + 1, prevLevels);
return false;
}
@Override
public String toString() {
String rv = "BSLevel height: " + levels.length + " page: " + levelPage + " span: " + bottom +
" in skiplist " + bsl;
if (isKilled)
rv += " KILLED";
return rv;
}
}

View File

@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.io.block.index;
import java.io.Closeable;
import java.io.IOException;
import java.util.HashMap;
@ -50,7 +51,7 @@ import net.i2p.util.Log;
*
* Always fits on one page.
*/
public class BSkipList extends SkipList {
public class BSkipList<K extends Comparable<? super K>, V> extends SkipList<K, V> implements Closeable {
private static final long MAGIC = 0x536b69704c697374l; // "SkipList"
public int firstSpanPage = 0;
public int firstLevelPage = 0;
@ -58,16 +59,16 @@ public class BSkipList extends SkipList {
public final BlockFile bf;
private boolean isClosed;
final HashMap<Integer, BSkipSpan> spanHash = new HashMap();
final HashMap<Integer, SkipLevels> levelHash = new HashMap();
final HashMap<Integer, BSkipSpan<K, V>> spanHash = new HashMap<Integer, BSkipSpan<K, V>>();
final HashMap<Integer, SkipLevels<K, V>> levelHash = new HashMap<Integer, SkipLevels<K, V>>();
private final boolean fileOnly;
public BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer key, Serializer val) throws IOException {
public BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer<K> key, Serializer<V> val) throws IOException {
this(spanSize, bf, skipPage, key, val, false);
}
public BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer key, Serializer val, boolean fileOnly) throws IOException {
public BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer<K> key, Serializer<V> val, boolean fileOnly) throws IOException {
if(spanSize < 1) { throw new RuntimeException("Span size too small"); }
this.skipPage = skipPage;
@ -82,14 +83,18 @@ public class BSkipList extends SkipList {
size = bf.file.readUnsignedInt();
int spans = bf.file.readInt();
int levelCount = bf.file.readInt();
// two byte spansize as of version 1.2, ignore for now
// int ss = bf.file.readUnsignedShort(); if (ss > 0) ...
//System.out.println(size + " " + spans);
this.fileOnly = fileOnly;
if (fileOnly)
first = new IBSkipSpan(bf, this, firstSpanPage, key, val);
first = new IBSkipSpan<K, V>(bf, this, firstSpanPage, key, val);
else
first = new BSkipSpan(bf, this, firstSpanPage, key, val);
stack = new BSkipLevels(bf, firstLevelPage, this);
first = new BSkipSpan<K, V>(bf, this, firstSpanPage, key, val);
BSkipLevels<K, V> bstack = new BSkipLevels<K, V>(bf, firstLevelPage, this);
bstack.initializeLevels();
stack = bstack;
int total = 0;
for (BSkipSpan ss : spanHash.values()) {
total += ss.nKeys;
@ -99,7 +104,8 @@ public class BSkipList extends SkipList {
if (bf.file.canWrite() &&
(levelCount != levelHash.size() || spans != spanHash.size() || size != total)) {
if (bf.log.shouldLog(Log.WARN))
bf.log.warn("On-disk counts were " + levelCount + " / " + spans + " / " + size + ", correcting");
bf.log.warn("On-disk counts were " + levelCount + " levels / " + spans +
" spans / " + size + " entries, correcting to " + total + " entries");
size = total;
flush();
}
@ -146,7 +152,6 @@ public class BSkipList extends SkipList {
curLevel.killInstance();
curLevel = nextLevel;
}
stack.killInstance();
SkipSpan curSpan = first;
while(curSpan != null) {
@ -171,6 +176,8 @@ public class BSkipList extends SkipList {
bf.file.writeInt(0);
bf.file.writeInt(1);
bf.file.writeInt(1);
// added in version 1.2
bf.file.writeShort(spanSize);
BSkipSpan.init(bf, firstSpan, spanSize);
BSkipLevels.init(bf, firstLevel, firstSpan, 4);
}
@ -193,33 +200,36 @@ public class BSkipList extends SkipList {
}
@Override
public SkipIterator iterator() {
public SkipIterator<K, V> iterator() {
if (!this.fileOnly)
return super.iterator();
return new IBSkipIterator(first, 0);
return new IBSkipIterator<K, V>(first, 0);
}
@Override
public SkipIterator min() {
/****
//@Override
public SkipIterator<K, V> min() {
return iterator();
}
@Override
public SkipIterator max() {
//@Override
public SkipIterator<K, V> max() {
if (!this.fileOnly)
return super.max();
SkipSpan ss = stack.getEnd();
return new IBSkipIterator(ss, ss.nKeys - 1);
SkipSpan<K, V> ss = stack.getEnd();
return new IBSkipIterator<K, V>(ss, ss.nKeys - 1);
}
****/
/** find */
@Override
public SkipIterator find(Comparable key) {
public SkipIterator<K, V> find(K key) {
if (!this.fileOnly)
return super.find(key);
int[] search = new int[1];
SkipSpan ss = stack.getSpan(stack.levels.length - 1, key, search);
SkipSpan<K, V> ss = stack.getSpan(stack.levels.length - 1, key, search);
if(search[0] < 0) { search[0] = -1 * (search[0] + 1); }
return new IBSkipIterator(ss, search[0]);
return new IBSkipIterator<K, V>(ss, search[0]);
}
/**

View File

@ -59,19 +59,19 @@ import net.i2p.util.Log;
* next overflow page (unsigned int)
*</pre>
*/
public class BSkipSpan extends SkipSpan {
public class BSkipSpan<K extends Comparable<? super K>, V> extends SkipSpan<K, V> {
protected static final int MAGIC = 0x5370616e; // "Span"
protected static final int HEADER_LEN = 20;
public static final int CONT_HEADER_LEN = 8;
protected final BlockFile bf;
private final BSkipList bsl;
private final BSkipList<K, V> bsl;
protected int page;
protected int overflowPage;
protected int prevPage;
protected int nextPage;
protected Serializer keySer;
protected Serializer valSer;
protected int nextPage = 0;
protected Serializer<K> keySer;
protected Serializer<V> valSer;
// I2P
protected int spanSize;
@ -88,11 +88,11 @@ public class BSkipSpan extends SkipSpan {
}
@Override
public SkipSpan newInstance(SkipList sl) {
public SkipSpan<K, V> newInstance(SkipList<K, V> sl) {
try {
int newPage = bf.allocPage();
init(bf, newPage, bf.spanSize);
return new BSkipSpan(bf, (BSkipList) sl, newPage, keySer, valSer);
return new BSkipSpan<K, V>(bf, (BSkipList<K, V>) sl, newPage, keySer, valSer);
} catch (IOException ioe) { throw new RuntimeException("Error creating database page", ioe); }
}
@ -237,7 +237,8 @@ public class BSkipSpan extends SkipSpan {
//bsl.flush();
}
private static void load(BSkipSpan bss, BlockFile bf, BSkipList bsl, int spanPage, Serializer key, Serializer val) throws IOException {
private static <X extends Comparable<? super X>, Y> void load(BSkipSpan<X, Y> bss, BlockFile bf, BSkipList<X, Y> bsl,
int spanPage, Serializer<X> key, Serializer<Y> val) throws IOException {
loadInit(bss, bf, bsl, spanPage, key, val);
bss.loadData();
}
@ -246,7 +247,8 @@ public class BSkipSpan extends SkipSpan {
* I2P - first half of load()
* Only read the span headers
*/
protected static void loadInit(BSkipSpan bss, BlockFile bf, BSkipList bsl, int spanPage, Serializer key, Serializer val) throws IOException {
protected static <X extends Comparable<? super X>, Y> void loadInit(BSkipSpan<X, Y> bss, BlockFile bf, BSkipList<X, Y> bsl,
int spanPage, Serializer<X> key, Serializer<Y> val) throws IOException {
if (bss.isKilled)
throw new IOException("Already killed!! " + bss);
bss.page = spanPage;
@ -285,11 +287,12 @@ public class BSkipSpan extends SkipSpan {
* Load the whole span's keys and values into memory
* @param flushOnError set to false if you are going to flush anyway
*/
@SuppressWarnings("unchecked")
protected void loadData(boolean flushOnError) throws IOException {
if (isKilled)
throw new IOException("Already killed!! " + this);
this.keys = new Comparable[this.spanSize];
this.vals = new Object[this.spanSize];
this.keys = (K[]) new Comparable[this.spanSize];
this.vals = (V[]) new Object[this.spanSize];
int ksz, vsz;
int curPage = this.page;
@ -327,7 +330,7 @@ public class BSkipSpan extends SkipSpan {
break;
}
// System.out.println("i=" + i + ", Page " + curPage + ", offset " + pageCounter[0] + " ksz " + ksz + " vsz " + vsz);
this.keys[i] = (Comparable) this.keySer.construct(k);
this.keys[i] = this.keySer.construct(k);
this.vals[i] = this.valSer.construct(v);
// Drop bad entry without throwing exception
if (this.keys[i] == null || this.vals[i] == null) {
@ -377,30 +380,31 @@ public class BSkipSpan extends SkipSpan {
}
}
protected BSkipSpan(BlockFile bf, BSkipList bsl) {
protected BSkipSpan(BlockFile bf, BSkipList<K, V> bsl) {
this.bf = bf;
this.bsl = bsl;
}
public BSkipSpan(BlockFile bf, BSkipList bsl, int spanPage, Serializer key, Serializer val) throws IOException {
public BSkipSpan(BlockFile bf, BSkipList<K, V> bsl, int spanPage, Serializer<K> key, Serializer<V> val) throws IOException {
this.bf = bf;
this.bsl = bsl;
BSkipSpan.load(this, bf, bsl, spanPage, key, val);
this.next = null;
this.prev = null;
BSkipSpan bss = this;
BSkipSpan<K, V> bss = this;
// findbugs ok (set in load() above)
int np = nextPage;
while(np != 0) {
BSkipSpan temp = bsl.spanHash.get(Integer.valueOf(np));
BSkipSpan<K, V> temp = bsl.spanHash.get(Integer.valueOf(np));
if(temp != null) {
bss.next = temp;
break;
}
bss.next = new BSkipSpan(bf, bsl);
bss.next = new BSkipSpan<K, V>(bf, bsl);
bss.next.next = null;
bss.next.prev = bss;
bss = (BSkipSpan) bss.next;
bss = (BSkipSpan<K, V>) bss.next;
BSkipSpan.load(bss, bf, bsl, np, key, val);
np = bss.nextPage;
@ -410,15 +414,15 @@ public class BSkipSpan extends SkipSpan {
bss = this;
np = prevPage;
while(np != 0) {
BSkipSpan temp = bsl.spanHash.get(Integer.valueOf(np));
BSkipSpan<K, V> temp = bsl.spanHash.get(Integer.valueOf(np));
if(temp != null) {
bss.prev = temp;
break;
}
bss.prev = new BSkipSpan(bf, bsl);
bss.prev = new BSkipSpan<K, V>(bf, bsl);
bss.prev.next = bss;
bss.prev.prev = null;
bss = (BSkipSpan) bss.prev;
bss = (BSkipSpan<K, V>) bss.prev;
BSkipSpan.load(bss, bf, bsl, np, key, val);
np = bss.prevPage;

View File

@ -41,9 +41,9 @@ import net.metanotion.util.skiplist.SkipSpan;
If the caller does not iterate all the way through, the last span
will remain in memory.
*/
public class IBSkipIterator extends SkipIterator {
public class IBSkipIterator<K extends Comparable<? super K>, V> extends SkipIterator<K, V> {
public IBSkipIterator(SkipSpan ss, int index) {
public IBSkipIterator(SkipSpan<K, V> ss, int index) {
super(ss, index);
}
@ -53,8 +53,8 @@ public class IBSkipIterator extends SkipIterator {
* @throws RuntimeException on IOE
*/
@Override
public Object next() {
Object o;
public V next() {
V o;
if(index < ss.nKeys) {
if (ss.vals == null) {
try {
@ -90,7 +90,7 @@ public class IBSkipIterator extends SkipIterator {
* @throws RuntimeException on IOE
*/
@Override
public Comparable nextKey() {
public K nextKey() {
if(index < ss.nKeys) {
if (ss.keys == null) {
try {
@ -110,7 +110,7 @@ public class IBSkipIterator extends SkipIterator {
* @throws RuntimeException on IOE
*/
@Override
public Object previous() {
public V previous() {
if(index > 0) {
index--;
} else if(ss.prev != null) {

View File

@ -54,21 +54,22 @@ import net.i2p.util.Log;
*
* @author zzz
*/
public class IBSkipSpan extends BSkipSpan {
public class IBSkipSpan<K extends Comparable<? super K>, V> extends BSkipSpan<K, V> {
private Comparable firstKey;
private K firstKey;
@Override
public SkipSpan newInstance(SkipList sl) {
@SuppressWarnings("unchecked")
public SkipSpan<K, V> newInstance(SkipList<K, V> sl) {
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Splitting page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
try {
int newPage = bf.allocPage();
init(bf, newPage, bf.spanSize);
SkipSpan rv = new IBSkipSpan(bf, (BSkipList) sl, newPage, keySer, valSer);
SkipSpan<K, V> rv = new IBSkipSpan<K, V>(bf, (BSkipList<K, V>) sl, newPage, keySer, valSer);
// this is called after a split, so we need the data arrays initialized
rv.keys = new Comparable[bf.spanSize];
rv.vals = new Object[bf.spanSize];
rv.keys = (K[]) new Comparable[bf.spanSize];
rv.vals = (V[]) new Object[bf.spanSize];
return rv;
} catch (IOException ioe) { throw new RuntimeException("Error creating database page", ioe); }
}
@ -125,7 +126,7 @@ public class IBSkipSpan extends BSkipSpan {
pageCounter[0] +=4;
byte[] k = new byte[ksz];
curPage = this.bf.readMultiPageData(k, curPage, pageCounter, curNextPage);
this.firstKey = (Comparable) this.keySer.construct(k);
this.firstKey = this.keySer.construct(k);
if (this.firstKey == null) {
bf.log.error("Null deserialized first key in page " + curPage);
repair(1);
@ -160,7 +161,7 @@ public class IBSkipSpan extends BSkipSpan {
/**
* Linear search through the span in the file for the value.
*/
private Object getData(Comparable key) throws IOException {
private V getData(K key) throws IOException {
seekData();
int curPage = this.page;
int[] curNextPage = new int[1];
@ -194,7 +195,7 @@ public class IBSkipSpan extends BSkipSpan {
break;
}
//System.out.println("i=" + i + ", Page " + curPage + ", offset " + pageCounter[0] + " ksz " + ksz + " vsz " + vsz);
Comparable ckey = (Comparable) this.keySer.construct(k);
K ckey = this.keySer.construct(k);
if (ckey == null) {
// skip the value and keep going
curPage = this.bf.skipMultiPageBytes(vsz, curPage, pageCounter, curNextPage);
@ -213,7 +214,7 @@ public class IBSkipSpan extends BSkipSpan {
lostEntries(i, curPage);
break;
}
Object rv = this.valSer.construct(v);
V rv = this.valSer.construct(v);
if (rv == null) {
bf.log.error("Null deserialized value in entry " + i + " page " + curPage +
" key=" + ckey);
@ -252,11 +253,11 @@ public class IBSkipSpan extends BSkipSpan {
*****/
}
private IBSkipSpan(BlockFile bf, BSkipList bsl) {
private IBSkipSpan(BlockFile bf, BSkipList<K, V> bsl) {
super(bf, bsl);
}
public IBSkipSpan(BlockFile bf, BSkipList bsl, int spanPage, Serializer key, Serializer val) throws IOException {
public IBSkipSpan(BlockFile bf, BSkipList<K, V> bsl, int spanPage, Serializer<K> key, Serializer<V> val) throws IOException {
super(bf, bsl);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("New ibss page " + spanPage);
@ -265,24 +266,24 @@ public class IBSkipSpan extends BSkipSpan {
this.next = null;
this.prev = null;
IBSkipSpan bss = this;
IBSkipSpan temp;
IBSkipSpan<K, V> bss = this;
IBSkipSpan<K, V> temp;
int np = nextPage;
while(np != 0) {
temp = (IBSkipSpan) bsl.spanHash.get(Integer.valueOf(np));
temp = (IBSkipSpan<K, V>) bsl.spanHash.get(Integer.valueOf(np));
if(temp != null) {
bss.next = temp;
break;
}
bss.next = new IBSkipSpan(bf, bsl);
bss.next = new IBSkipSpan<K, V>(bf, bsl);
bss.next.next = null;
bss.next.prev = bss;
Comparable previousFirstKey = bss.firstKey;
bss = (IBSkipSpan) bss.next;
K previousFirstKey = bss.firstKey;
bss = (IBSkipSpan<K, V>) bss.next;
BSkipSpan.loadInit(bss, bf, bsl, np, key, val);
bss.loadFirstKey();
Comparable nextFirstKey = bss.firstKey;
K nextFirstKey = bss.firstKey;
if (previousFirstKey == null || nextFirstKey == null ||
previousFirstKey.compareTo(nextFirstKey) >= 0) {
// TODO remove, but if we are at the bottom of a level
@ -299,20 +300,20 @@ public class IBSkipSpan extends BSkipSpan {
bss = this;
np = prevPage;
while(np != 0) {
temp = (IBSkipSpan) bsl.spanHash.get(Integer.valueOf(np));
temp = (IBSkipSpan<K, V>) bsl.spanHash.get(Integer.valueOf(np));
if(temp != null) {
bss.prev = temp;
break;
}
bss.prev = new IBSkipSpan(bf, bsl);
bss.prev = new IBSkipSpan<K, V>(bf, bsl);
bss.prev.next = bss;
bss.prev.prev = null;
Comparable nextFirstKey = bss.firstKey;
bss = (IBSkipSpan) bss.prev;
K nextFirstKey = bss.firstKey;
bss = (IBSkipSpan<K, V>) bss.prev;
BSkipSpan.loadInit(bss, bf, bsl, np, key, val);
bss.loadFirstKey();
Comparable previousFirstKey = bss.firstKey;
K previousFirstKey = bss.firstKey;
if (previousFirstKey == null || nextFirstKey == null ||
previousFirstKey.compareTo(nextFirstKey) >= 0) {
// TODO remove, but if we are at the bottom of a level
@ -330,7 +331,7 @@ public class IBSkipSpan extends BSkipSpan {
* Does not call super, we always store first key here
*/
@Override
public Comparable firstKey() {
public K firstKey() {
return this.firstKey;
}
@ -339,13 +340,13 @@ public class IBSkipSpan extends BSkipSpan {
* This is called only via SkipList.find()
*/
@Override
public SkipSpan getSpan(Comparable key, int[] search) {
public SkipSpan<K, V> getSpan(K key, int[] search) {
try {
seekAndLoadData();
} catch (IOException ioe) {
throw new RuntimeException("Error reading database", ioe);
}
SkipSpan rv = super.getSpan(key, search);
SkipSpan<K, V> rv = super.getSpan(key, search);
this.keys = null;
this.vals = null;
return rv;
@ -355,7 +356,7 @@ public class IBSkipSpan extends BSkipSpan {
* Linear search if in file, Binary search if in memory
*/
@Override
public Object get(Comparable key) {
public V get(K key) {
try {
if (nKeys == 0) { return null; }
if (this.next != null && this.next.firstKey().compareTo(key) <= 0)
@ -370,13 +371,13 @@ public class IBSkipSpan extends BSkipSpan {
* Load whole span from file, do the operation, flush out, then null out in-memory data again.
*/
@Override
public SkipSpan put(Comparable key, Object val, SkipList sl) {
public SkipSpan<K, V> put(K key, V val, SkipList<K, V> sl) {
try {
seekAndLoadData();
} catch (IOException ioe) {
throw new RuntimeException("Error reading database", ioe);
}
SkipSpan rv = super.put(key, val, sl);
SkipSpan<K, V> rv = super.put(key, val, sl);
// flush() nulls out the data
return rv;
}
@ -385,7 +386,7 @@ public class IBSkipSpan extends BSkipSpan {
* Load whole span from file, do the operation, flush out, then null out in-memory data again.
*/
@Override
public Object[] remove(Comparable key, SkipList sl) {
public Object[] remove(K key, SkipList<K, V> sl) {
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Remove " + key + " in " + this);
if (nKeys <= 0)

View File

@ -35,11 +35,11 @@ import net.metanotion.io.Serializer;
* Will never return null.
* Added by I2P.
*/
public class IdentityBytes implements Serializer {
public class IdentityBytes implements Serializer<byte[]> {
/** @return byte[] */
public byte[] getBytes(Object o) { return (byte[])o; }
public byte[] getBytes(byte[] o) { return o; }
/** @return b */
public Object construct(byte[] b) { return b; }
public byte[] construct(byte[] b) { return b; }
}

View File

@ -30,10 +30,10 @@ package net.metanotion.io.data;
import net.metanotion.io.Serializer;
public class IntBytes implements Serializer {
public byte[] getBytes(Object o) {
public class IntBytes implements Serializer<Integer> {
public byte[] getBytes(Integer o) {
byte[] b = new byte[4];
int v = ((Integer) o).intValue();
int v = o.intValue();
b[0] = (byte)(0xff & (v >> 24));
b[1] = (byte)(0xff & (v >> 16));
b[2] = (byte)(0xff & (v >> 8));
@ -41,11 +41,11 @@ public class IntBytes implements Serializer {
return b;
}
public Object construct(byte[] b) {
public Integer construct(byte[] b) {
int v = (((b[0] & 0xff) << 24) |
((b[1] & 0xff) << 16) |
((b[2] & 0xff) << 8) |
(b[3] & 0xff));
return new Integer(v);
return Integer.valueOf(v);
}
}

View File

@ -32,14 +32,14 @@ import java.io.UnsupportedEncodingException;
import net.metanotion.io.Serializer;
public class StringBytes implements Serializer {
public byte[] getBytes(Object o) {
public class StringBytes implements Serializer<String> {
public byte[] getBytes(String o) {
try {
return ((String) o).getBytes("US-ASCII");
return o.getBytes("US-ASCII");
} catch (UnsupportedEncodingException uee) { throw new Error("Unsupported Encoding"); }
}
public Object construct(byte[] b) {
public String construct(byte[] b) {
try {
return new String(b, "US-ASCII");
} catch (UnsupportedEncodingException uee) { throw new Error("Unsupported Encoding"); }

View File

@ -35,14 +35,14 @@ import net.metanotion.io.Serializer;
/**
* Added by I2P
*/
public class UTF8StringBytes implements Serializer {
public byte[] getBytes(Object o) {
public class UTF8StringBytes implements Serializer<String> {
public byte[] getBytes(String o) {
try {
return ((String) o).getBytes("UTF-8");
return o.getBytes("UTF-8");
} catch (UnsupportedEncodingException uee) { throw new Error("Unsupported Encoding"); }
}
public Object construct(byte[] b) {
public String construct(byte[] b) {
try {
return new String(b, "UTF-8");
} catch (UnsupportedEncodingException uee) { throw new Error("Unsupported Encoding"); }

View File

@ -39,12 +39,13 @@ import java.util.NoSuchElementException;
To be clear, this is an iterator through the values.
To get the key, call nextKey() BEFORE calling next().
*/
public class SkipIterator implements ListIterator {
protected SkipSpan ss;
public class SkipIterator<K extends Comparable<? super K>, V> implements ListIterator<V> {
protected SkipSpan<K, V> ss;
protected int index;
protected SkipIterator() { }
public SkipIterator(SkipSpan ss, int index) {
public SkipIterator(SkipSpan<K, V> ss, int index) {
if(ss==null) { throw new NullPointerException(); }
this.ss = ss;
this.index = index;
@ -59,8 +60,8 @@ public class SkipIterator implements ListIterator {
* @return the next value, and advances the index
* @throws NoSuchElementException
*/
public Object next() {
Object o;
public V next() {
V o;
if(index < ss.nKeys) {
o = ss.vals[index];
} else {
@ -83,7 +84,7 @@ public class SkipIterator implements ListIterator {
* @return the key for which the value will be returned in the subsequent call to next()
* @throws NoSuchElementException
*/
public Comparable nextKey() {
public K nextKey() {
if(index < ss.nKeys) { return ss.keys[index]; }
throw new NoSuchElementException();
}
@ -98,7 +99,7 @@ public class SkipIterator implements ListIterator {
* @return the previous value, and decrements the index
* @throws NoSuchElementException
*/
public Object previous() {
public V previous() {
if(index > 0) {
index--;
} else if(ss.prev != null) {
@ -111,9 +112,9 @@ public class SkipIterator implements ListIterator {
// Optional methods
public void add(Object o) { throw new UnsupportedOperationException(); }
public void add(V o) { throw new UnsupportedOperationException(); }
public void remove() { throw new UnsupportedOperationException(); }
public void set(Object o) { throw new UnsupportedOperationException(); }
public void set(V o) { throw new UnsupportedOperationException(); }
public int nextIndex() { throw new UnsupportedOperationException(); }
public int previousIndex() { throw new UnsupportedOperationException(); }

View File

@ -28,12 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.util.skiplist;
import java.io.Flushable;
import net.metanotion.io.block.BlockFile;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
public class SkipLevels {
public class SkipLevels<K extends Comparable<? super K>, V> implements Flushable {
/** We can't have more than 2**32 pages */
public static final int MAX_SIZE = 32;
@ -43,12 +45,15 @@ public class SkipLevels {
* The "bottom" level is the direct pointer to a SkipSpan.
*/
// levels is almost final
public SkipLevels[] levels;
public SkipLevels<K, V>[] levels;
// bottom is final
public SkipSpan bottom;
public SkipSpan<K, V> bottom;
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
public SkipLevels newInstance(int levels, SkipSpan ss, SkipList sl) { return new SkipLevels(levels, ss); }
public SkipLevels<K, V> newInstance(int levels, SkipSpan<K, V> ss, SkipList<K, V> sl) {
return new SkipLevels<K, V>(levels, ss);
}
public void killInstance() { }
public void flush() { }
@ -57,10 +62,11 @@ public class SkipLevels {
/*
* @throws IllegalArgumentException if size too big or too small
*/
public SkipLevels(int size, SkipSpan span) {
@SuppressWarnings("unchecked")
public SkipLevels(int size, SkipSpan<K, V> span) {
if(size < 1 || size > MAX_SIZE)
throw new IllegalArgumentException("Invalid Level Skip size");
levels = new SkipLevels[size];
levels = (SkipLevels<K, V>[]) new SkipLevels[size];
bottom = span;
}
@ -90,14 +96,14 @@ public class SkipLevels {
return buf.toString();
}
public SkipSpan getEnd() {
public SkipSpan<K, V> getEnd() {
for(int i=(levels.length - 1);i>=0;i--) {
if(levels[i] != null) { return levels[i].getEnd(); }
}
return bottom.getEnd();
}
public SkipSpan getSpan(int start, Comparable key, int[] search) {
public SkipSpan<K, V> getSpan(int start, K key, int[] search) {
for(int i=Math.min(start, levels.length - 1);i>=0;i--) {
if((levels[i] != null) && (levels[i].key().compareTo(key) <= 0)) {
return levels[i].getSpan(i,key,search);
@ -106,9 +112,9 @@ public class SkipLevels {
return bottom.getSpan(key, search);
}
public Comparable key() { return bottom.firstKey(); }
public K key() { return bottom.firstKey(); }
public Object get(int start, Comparable key) {
public V get(int start, K key) {
for(int i=Math.min(start, levels.length - 1);i>=0;i--) {
if((levels[i] != null) && (levels[i].key().compareTo(key) <= 0)) {
return levels[i].get(i,key);
@ -124,16 +130,17 @@ public class SkipLevels {
* and the deleted SkipLevels is taller than this SkipLevels.
* rv is null if no object was removed.
*/
public Object[] remove(int start, Comparable key, SkipList sl) {
@SuppressWarnings("unchecked")
public Object[] remove(int start, K key, SkipList<K, V> sl) {
Object[] res = null;
SkipLevels slvls = null;
SkipLevels<K, V> slvls = null;
for(int i = Math.min(start, levels.length - 1); i >= 0; i--) {
if(levels[i] != null) {
int cmp = levels[i].key().compareTo(key);
if((cmp < 0) || ((i==0) && (cmp <= 0))) {
res = levels[i].remove(i, key, sl);
if((res != null) && (res[1] != null)) {
slvls = (SkipLevels) res[1];
slvls = (SkipLevels<K, V>) res[1];
if(levels.length >= slvls.levels.length) {
res[1] = null;
}
@ -157,7 +164,7 @@ public class SkipLevels {
// if the returned SkipSpan was already copied to us
boolean isFirst = sl.first == bottom;
if (isFirst && levels[0] != null) {
SkipSpan ssres = (SkipSpan)res[1];
SkipSpan<K, V> ssres = (SkipSpan<K, V>)res[1];
if (bottom.firstKey().equals(ssres.firstKey())) {
// bottom copied the next span to itself
if (_log.shouldLog(Log.INFO)) {
@ -169,7 +176,7 @@ public class SkipLevels {
_log.info("FIXUP TIME");
}
SkipLevels replace = levels[0];
SkipLevels<K, V> replace = levels[0];
for (int i = 0; i < levels.length; i++) {
if (levels[i] == null)
break;
@ -195,11 +202,11 @@ public class SkipLevels {
if((bottom.nKeys == 0) && (sl.first != bottom)) {
// from debugging other problems
if (res == null) {
_log.warn("WTF killing with no return value " + print());
_log.warn("killing with no return value " + print());
} else if (res[1] == null) {
_log.warn("WTF killing with no return value 1 " + print());
_log.warn("killing with no return value 1 " + print());
} else if (res[1] != this) {
_log.warn("WTF killing with return value not us " + res[1] + ' ' + print());
_log.warn("killing with return value not us " + res[1] + ' ' + print());
}
this.killInstance();
}
@ -211,12 +218,12 @@ public class SkipLevels {
* and the new level is taller than our level;
* else null if it went in an existing level or the new level is our height or less.
*/
public SkipLevels put(int start, Comparable key, Object val, SkipList sl) {
public SkipLevels<K, V> put(int start, K key, V val, SkipList<K, V> sl) {
boolean modified = false;
for(int i = Math.min(start, levels.length - 1); i >= 0; i--) {
// is key equal to or after the start of the level?
if((levels[i] != null) && (levels[i].key().compareTo(key) <= 0)) {
SkipLevels slvls = levels[i].put(i, key, val, sl);
SkipLevels<K, V> slvls = levels[i].put(i, key, val, sl);
if(slvls != null) {
for (int j = i + 1; j < Math.min(slvls.levels.length, levels.length); j++) {
// he points to where we used to point
@ -241,11 +248,11 @@ public class SkipLevels {
return null;
}
}
SkipSpan ss = bottom.put(key,val,sl);
SkipSpan<K, V> ss = bottom.put(key,val,sl);
if(ss!=null) {
int height = sl.generateColHeight();
if(height != 0) {
SkipLevels slvls = this.newInstance(height, ss, sl);
SkipLevels<K, V> slvls = this.newInstance(height, ss, sl);
for(int i=0;i<(Math.min(height,levels.length));i++) {
// he points to where we used to point
// and we now point to him
@ -265,6 +272,6 @@ public class SkipLevels {
}
public boolean blvlck(boolean fix) { return false; }
public boolean blvlck(boolean fix, int width, SkipLevels[] prevLevels) { return false; }
public boolean blvlck(boolean fix, int width, SkipLevels<K, V>[] prevLevels) { return false; }
}

View File

@ -28,19 +28,20 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.util.skiplist;
import java.io.Flushable;
import java.util.Random;
import net.i2p.util.RandomSource;
//import net.metanotion.io.block.BlockFile;
public class SkipList {
public class SkipList<K extends Comparable<? super K>, V> implements Flushable, Iterable<V> {
/** the probability of each next higher level */
protected static final int P = 2;
private static final int MIN_SLOTS = 4;
// these two are really final
protected SkipSpan first;
protected SkipLevels stack;
protected SkipSpan<K, V> first;
protected SkipLevels<K, V> stack;
// I2P mod
public static final Random rng = RandomSource.getInstance();
@ -56,8 +57,8 @@ public class SkipList {
public SkipList(int span) {
if(span < 1 || span > SkipSpan.MAX_SIZE)
throw new IllegalArgumentException("Invalid span size");
first = new SkipSpan(span);
stack = new SkipLevels(1, first);
first = new SkipSpan<K, V>(span);
stack = new SkipLevels<K, V>(1, first);
//rng = new Random(System.currentTimeMillis());
}
@ -94,14 +95,15 @@ public class SkipList {
return max;
}
public void put(Comparable key, Object val) {
@SuppressWarnings("unchecked")
public void put(K key, V val) {
if(key == null) { throw new NullPointerException(); }
if(val == null) { throw new NullPointerException(); }
SkipLevels slvls = stack.put(stack.levels.length - 1, key, val, this);
SkipLevels<K, V> slvls = stack.put(stack.levels.length - 1, key, val, this);
if(slvls != null) {
// grow our stack
//BlockFile.log.info("Top level old hgt " + stack.levels.length + " new hgt " + slvls.levels.length);
SkipLevels[] levels = new SkipLevels[slvls.levels.length];
SkipLevels<K, V>[] levels = (SkipLevels<K, V>[]) new SkipLevels[slvls.levels.length];
for(int i=0;i < slvls.levels.length; i++) {
if(i < stack.levels.length) {
levels[i] = stack.levels[i];
@ -115,12 +117,13 @@ public class SkipList {
}
}
public Object remove(Comparable key) {
@SuppressWarnings("unchecked")
public V remove(K key) {
if(key == null) { throw new NullPointerException(); }
Object[] res = stack.remove(stack.levels.length - 1, key, this);
if(res != null) {
if(res[1] != null) {
SkipLevels slvls = (SkipLevels) res[1];
SkipLevels<K, V> slvls = (SkipLevels<K, V>) res[1];
for(int i=0;i < slvls.levels.length; i++) {
if(stack.levels[i] == slvls) {
stack.levels[i] = slvls.levels[i];
@ -129,7 +132,7 @@ public class SkipList {
stack.flush();
}
flush();
return res[0];
return (V) res[0];
}
return null;
}
@ -138,6 +141,7 @@ public class SkipList {
* dumps all the skip levels
* @deprecated goes to System.out
*/
@Deprecated
public void printSL() {
System.out.println("List size " + size);
System.out.println(stack.printAll());
@ -147,34 +151,36 @@ public class SkipList {
* dumps all the data
* @deprecated goes to System.out
*/
@Deprecated
public void print() {
System.out.println("List size " + size);
System.out.println(first.print());
}
public Object get(Comparable key) {
public V get(K key) {
if(key == null) { throw new NullPointerException(); }
return stack.get(stack.levels.length - 1, key);
}
public SkipIterator iterator() { return new SkipIterator(first, 0); }
public SkipIterator<K, V> iterator() { return new SkipIterator<K, V>(first, 0); }
public SkipIterator min() { return new SkipIterator(first, 0); }
/****
public SkipIterator<K, V> min() { return new SkipIterator<K, V>(first, 0); }
public SkipIterator max() {
SkipSpan ss = stack.getEnd();
return new SkipIterator(ss, ss.nKeys - 1);
public SkipIterator<K, V> max() {
SkipSpan<K, V> ss = stack.getEnd();
return new SkipIterator<K, V>(ss, ss.nKeys - 1);
}
****/
/** @return an iterator where nextKey() is the first one greater than or equal to 'key' */
public SkipIterator find(Comparable key) {
public SkipIterator<K, V> find(K key) {
int[] search = new int[1];
SkipSpan ss = stack.getSpan(stack.levels.length - 1, key, search);
SkipSpan<K, V> ss = stack.getSpan(stack.levels.length - 1, key, search);
if(search[0] < 0) { search[0] = -1 * (search[0] + 1); }
return new SkipIterator(ss, search[0]);
return new SkipIterator<K, V>(ss, search[0]);
}
// Levels adjusted to guarantee O(log n) search
// This is expensive proportional to the number of spans.
public void balance() {

View File

@ -28,18 +28,20 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.metanotion.util.skiplist;
import java.io.Flushable;
//import net.metanotion.io.block.BlockFile;
public class SkipSpan {
public class SkipSpan<K extends Comparable<? super K>, V> implements Flushable {
/** This is actually limited by BlockFile.spanSize which is much smaller */
public static final int MAX_SIZE = 256;
public int nKeys = 0;
public Comparable[] keys;
public Object[] vals;
public SkipSpan next, prev;
public K[] keys;
public V[] vals;
public SkipSpan<K, V> next, prev;
public SkipSpan newInstance(SkipList sl) { return new SkipSpan(keys.length); }
public SkipSpan<K, V> newInstance(SkipList<K, V> sl) { return new SkipSpan<K, V>(keys.length); }
public void killInstance() { }
public void flush() { }
@ -48,11 +50,12 @@ public class SkipSpan {
/*
* @throws IllegalArgumentException if size too big or too small
*/
@SuppressWarnings("unchecked")
public SkipSpan(int size) {
if(size < 1 || size > MAX_SIZE)
throw new IllegalArgumentException("Invalid span size " + size);
keys = new Comparable[size];
vals = new Object[size];
keys = (K[]) new Comparable[size];
vals = (V[]) new Object[size];
}
/** dumps all the data from here to the end */
@ -68,7 +71,7 @@ public class SkipSpan {
return buf.toString();
}
private int binarySearch(Comparable key) {
private int binarySearch(K key) {
int high = nKeys - 1;
int low = 0;
int cur;
@ -87,12 +90,12 @@ public class SkipSpan {
return (-1 * (low + 1));
}
public SkipSpan getEnd() {
public SkipSpan<K, V> getEnd() {
if(next == null) { return this; }
return next.getEnd();
}
public SkipSpan getSpan(Comparable key, int[] search) {
public SkipSpan<K, V> getSpan(K key, int[] search) {
if(nKeys == 0) {
search[0] = -1;
return this;
@ -109,7 +112,7 @@ public class SkipSpan {
return this;
}
public Object get(Comparable key) {
public V get(K key) {
if(nKeys == 0) { return null; }
if(keys[nKeys - 1].compareTo(key) < 0) {
if(next == null) { return null; }
@ -136,8 +139,8 @@ public class SkipSpan {
nKeys++;
}
private void split(int loc, Comparable key, Object val, SkipList sl) {
SkipSpan right = newInstance(sl);
private void split(int loc, K key, V val, SkipList<K, V> sl) {
SkipSpan<K, V> right = newInstance(sl);
if(this.next != null) { this.next.prev = right; }
right.next = this.next;
@ -173,7 +176,7 @@ public class SkipSpan {
/**
* @return the new span if it caused a split, else null if it went in this span
*/
private SkipSpan insert(int loc, Comparable key, Object val, SkipList sl) {
private SkipSpan<K, V> insert(int loc, K key, V val, SkipList<K, V> sl) {
sl.addItem();
if(nKeys == keys.length) {
// split.
@ -191,7 +194,7 @@ public class SkipSpan {
/**
* @return the new span if it caused a split, else null if it went in an existing span
*/
public SkipSpan put(Comparable key, Object val, SkipList sl) {
public SkipSpan<K, V> put(K key, V val, SkipList<K, V> sl) {
if(nKeys == 0) {
sl.addItem();
keys[0] = key;
@ -244,7 +247,7 @@ public class SkipSpan {
* rv[1] is the deleted SkipSpan if the removed object was the last in the SkipSpan.
* rv is null if no object was removed.
*/
public Object[] remove(Comparable key, SkipList sl) {
public Object[] remove(K key, SkipList<K, V> sl) {
if(nKeys == 0) { return null; }
if(keys[nKeys - 1].compareTo(key) < 0) {
if(next == null) { return null; }
@ -268,7 +271,7 @@ public class SkipSpan {
nKeys = next.nKeys;
//BlockFile.log.error("Killing next span " + next + ") and copying to this span " + this + " in remove of " + key);
// Make us point to next.next and him point back to us
SkipSpan nn = next.next;
SkipSpan<K, V> nn = next.next;
next.killInstance();
if (nn != null) {
nn.prev = this;
@ -309,7 +312,7 @@ public class SkipSpan {
}
/** I2P */
public Comparable firstKey() {
public K firstKey() {
return keys[0];
}
}

View File

@ -1,17 +1,17 @@
package net.i2p.client.naming;
package net.i2p.router.naming;
import junit.framework.TestCase;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
@ -23,7 +23,8 @@ public class BlockfileNamingServiceTest extends TestCase {
List<String> _names;
File hostsTxt, routerDir;
public void setUp() throws Exception {
@SuppressWarnings({ "unchecked", "rawtypes" })
public void setUp() throws Exception {
I2PAppContext ctx = new I2PAppContext();
routerDir = ctx.getRouterDir();
@ -32,7 +33,7 @@ public class BlockfileNamingServiceTest extends TestCase {
Properties props = new Properties();
assertNotNull("test classpath not set correctly",is);
DataHelper.loadProps(props, is, true);
_names = new ArrayList(props.keySet());
_names = new ArrayList<String>((Set<String>) (Set) props.keySet()); // TODO-Java6: s/keySet()/stringPropertyNames()/
Collections.shuffle(_names);
is.close();

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