Compare commits

..

1015 Commits

Author SHA1 Message Date
zzz
746bad3c30 remove jetty fixes from release target 2010-06-07 12:57:10 +00:00
zzz
5bbd61b75c 0.7.14 2010-06-07 12:18:43 +00:00
zzz
27eb7e46d0 tweak 2 2010-06-06 20:38:19 +00:00
zzz
c20bef3731 tweaks after review 2010-06-06 20:36:54 +00:00
dev
fc60768a66 prevent an NPE in case the connection is gone already(but that should not happen?) 2010-06-06 15:49:29 +00:00
zzz
2024fb1b65 * Netdb:
- Use new receivedAsReply flag in LeaseSet to mark
        those received as response to a query
      - Mark which methods in FloodfillPeerSelector may return
        our own hash
      - Redefine selectNearest() so it may return our own hash,
        so it can be used for closeness measurement
      - Redefine findNearestRouters() to return Hashes
        instead of RouterInfos
      - Fix LeaseSet response decisions for floodfills, based
        on partial keyspace and closeness measurements
      - List only count of published leasesets in netdb
2010-06-05 01:10:56 +00:00
zzz
617ca79b8f conn throttler fix when only total configured 2010-06-05 01:07:29 +00:00
zzz
7bfb5b1bf4 readme cleanup 2010-06-04 12:18:57 +00:00
walking
8d73529fa4 po revise 2010-06-04 03:46:52 +00:00
dev
a19d04d3ba merge of '4002ce96746459cd6ab6f91f16795bdbe3165644'
and 'db4aaff4718328041f29e6166333139f845406cd'
2010-06-03 23:13:35 +00:00
dev
a9c7748a52 minor code style updates to ntcp EventPumper 2010-06-03 23:13:13 +00:00
zzz
41e4e952b7 * Update: Fix multiple updates after manually
starting update - caused by refreshing summary bar
      (thx 'backup'!)
2010-06-03 16:53:55 +00:00
zzz
c0b0b5e4c5 Add min delay after startup before fetching news 2010-06-03 16:51:37 +00:00
forget
e424479e7e peers.jsp:
Show definitions panel if any transport is enabled (was: only for UDP). 
  Use div.wideload for the whole page (was: only for transports and broken if only one of them enabled).
2010-06-03 08:35:14 +00:00
dream
a8804f3093 merge of 'bdef8183da2c97dd55e2c2fad915537640e0f404'
and 'f908793c77bb4bd3d5fa3dd71bed704f32404fd0'
2010-06-03 07:21:52 +00:00
dream
6479a24bb7 merge of '0bd9edccbe59dc0c8dddee2b45cde1af0f8551f2'
and '779311c9e2df158049abc2e0f56e4e9fcb071142'
2010-06-03 06:27:12 +00:00
dream
8b372ad306 Fixed build.sh
jbigi's build.sh had a number of failed assumptions as per where I2P and JAVA_HOME were which needed to be removed and a warning put in their place. A better solution would be to have some way to search for JAVA_HOME and I2P in common locations, but at least this solution works if you do it manually:

I2P=~i2p JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.20 sh build.sh dynamic

thank zzz for prodding me to do this
2010-06-03 03:35:46 +00:00
forget
86791a2f1b Russian translation updated (descriptions for the stats that are graphed by default) 2010-06-03 03:22:35 +00:00
zzz
7cf0aad388 * UDP: Fix a bug from a blank i2np.udp.host config
causing frequent RouterInfo updates and incorrect
      addition of introducers, caused by config.jsp handling
2010-06-02 18:20:13 +00:00
zzz
c5ea51beec * graphs.jsp: Tag some more 2010-06-02 18:16:43 +00:00
zzz
7cc8e51d73 * Update: Change default update URLs to .su2 for pack200 2010-06-02 18:13:45 +00:00
zzz
75ba58d68c * Translation: Set xgettext add-comments option 2010-06-02 18:12:46 +00:00
zzz
cd35b219db * i2psnark:
- More listing fixes (more thanks to 'backup')
      - Start end game a little sooner
2010-06-01 22:19:10 +00:00
zzz
4a863f8ce7 comment 2010-06-01 14:02:21 +00:00
zzz
24264548a6 * Installer: Disable pack200 in updater again, doesn't work
on Java 1.5
    * Remove jetty from updater - it's been in for a few
      releases, and i2psnark now has its own listHTML method
2010-06-01 14:01:21 +00:00
zzz
f9e4b1a56b snark css tweak 2010-06-01 13:57:39 +00:00
zzz
13b54b864e * i2psnark:
- More listing fixes
      - Revert choker change
      thx 'backup' !
2010-06-01 13:56:53 +00:00
walking
05d45fe945 po update 2010-05-29 07:18:56 +00:00
forget
2781f6035a Russian translation updated for ngettext (plural forms) strings 2010-05-27 17:59:57 +00:00
zzz
dc3378d084 * Translate: Add GNU ngettext (plurals) support 2010-05-27 00:38:32 +00:00
zzz
9132e94143 * i2psnark: Listing fixes and cleanups; icons on front page; tweak bw choker again 2010-05-26 14:28:46 +00:00
forget
b61e2aa73c Russian translation updated 2010-05-26 04:37:28 +00:00
forget
7fdbae3b0f Tagged "bytes remaining" 2010-05-26 04:37:03 +00:00
dev
4dc6fc3b5d merge of '20f5a25a77de641ddf49c4d47d4ede923b59bfa3'
and '7dfc6bc466e7b6ee3212af949a08c51d4e3dd3db'
2010-05-25 19:08:31 +00:00
dev
618275b1f9 merge of '13c351b9c26b147632b40df8c0e8d9ca7d2d4485'
and 'b281a23e2f1719a388abed362ec3653f63e6769b'
2010-05-25 19:07:13 +00:00
dev
7a1111d845 updated history 2010-05-25 19:06:15 +00:00
zzz
3af356840e -11 2010-05-25 18:31:09 +00:00
zzz
911a278926 snark listing icons and cleanups 2010-05-25 13:08:34 +00:00
dev
014063700f merge of '82b66240733c560b038d4874d1630bf59f5fbe1a'
and 'd6f8e674646687b5efb03d09b6cdca57c6bd8f50'
2010-05-23 19:52:49 +00:00
dev
f7c0db0454 -10 2010-05-23 19:52:06 +00:00
zzz
a534d25d82 -10 2010-05-23 19:18:50 +00:00
zzz
bcf3e4a2d3 merge of '200dbdfc1dba31eb7abc6bb3403ac77cc9072c94'
and '56425d32b819bb74fe3abb999e7e3763814533ac'
2010-05-23 19:17:50 +00:00
dev
0cdfbd9803 merge of '01deefdd2f5a2b8f21fd3e97d1a6bd0dd66fecab'
and '1a75d8e703883bde472616a9def0b27bb64b7815'
2010-05-23 18:08:26 +00:00
dev
a3e5654d86 merge of '03e8a3d066ce112bb4ddaa98c0387dfefde94a0e'
and '751ff97c62634ee13a8f8baf3d7947e373d5368a'
2010-05-23 17:05:15 +00:00
dev
2f9364db2b fixed a major bug in the datagram dissector, improved performance a little bit and added a utility method to get the already calculated hash of the payload 2010-05-23 17:04:37 +00:00
zzz
5d7c9ebf82 * i2psnark:
- Choke slower when at bandwidth limit
      - Fix completion % for small files
      - Use Random from context
2010-05-23 16:18:10 +00:00
zzz
48da98d0e4 * NewsFetcher:
- Add backup URL
      - Change to 0 retries (was 2)
2010-05-23 16:15:37 +00:00
dev
55e994ac3c merge of '751ff97c62634ee13a8f8baf3d7947e373d5368a'
and 'ddc06f282f1b88e164c208509d818e3ed701143e'
2010-05-23 16:06:20 +00:00
dev
6d46a21f9f implemented WEBIRC support in the I2PTunnel IRC server 2010-05-23 16:04:22 +00:00
dream
fdc83484fd NTCP bind interface
Adding support for binding to a specific IP in the NTCP configuration. Uses new config option i2np.ntcp.bindAddress.
2010-05-22 16:50:39 +00:00
zzz
6786817fff -9 2010-05-21 17:34:30 +00:00
zzz
b77cd0db15 show completion status in listing 2010-05-21 15:07:34 +00:00
zzz
20bef76878 * i2psnark:
- Spiff up dir listings
      - Urlify some messages
      - Only go into end game at the end
      - Bye Bart Bye
2010-05-21 04:38:49 +00:00
zzz
7a30490482 more validation 2010-05-19 18:55:53 +00:00
zzz
3bc2e469cc remove unnecessaary initializers from constructors 2010-05-16 18:08:24 +00:00
zzz
d770d3c6da border-radius thx dr. 2010-05-16 17:11:40 +00:00
zzz
339a001592 never used 2010-05-16 13:16:05 +00:00
zzz
ace57a96a9 translate log priorities 2010-05-15 15:42:20 +00:00
zzz
2c26b8d422 * Hash: Move caching XOR methods only used by KBucket into netdb 2010-05-15 14:21:31 +00:00
zzz
e1eafa2394 * Eepsite: Set no-cache in redirecting page 2010-05-15 14:19:41 +00:00
zzz
39cb51c9eb snark css tweaks 2010-05-15 14:18:54 +00:00
zzz
fa5016ab04 javadoc fix 2010-05-15 14:17:54 +00:00
zzz
b134ef1a74 * Console:
- Tag text in graphs
      - Move SummaryRenderer to its own file
2010-05-15 14:17:17 +00:00
zzz
234dff888d Try to prevent ZipErrors after plugin update 2010-05-13 17:04:16 +00:00
zzz
a08c15a3ee leaseset debug tweak 2010-05-13 17:02:32 +00:00
zzz
cfa894e7b6 peer id tweak 2010-05-13 17:01:30 +00:00
zzz
d6c8e64575 throttle fix 2010-05-10 16:21:20 +00:00
zzz
dc91580e30 fixes from DataHelper.eq() deprecation 2010-05-10 15:58:53 +00:00
zzz
7ec1dd7a98 netdb.jsp leaseset debug 2010-05-10 15:22:10 +00:00
zzz
82f3f7506c * NetDB:
- Handle old and duplicate stores more efficiently
      - Have DataStore put() return success
2010-05-10 15:00:13 +00:00
zzz
e26df1c26b * LeaseSet: Add receivedAsReply() methods in preparation for
some netdb changes
2010-05-10 14:52:53 +00:00
zzz
aea77cf225 * NetDB: Move getDistance() to its own class 2010-05-10 14:50:55 +00:00
zzz
a1e3ef9c5c cleanup fail output on peers.jsp 2010-05-10 14:26:19 +00:00
zzz
7aece71342 cleanup 2010-05-10 14:24:47 +00:00
zzz
bdbde54f04 * Router: Add router.forceBandwidthClass advanced config for testing 2010-05-10 14:23:25 +00:00
zzz
157e035710 summary bar tweaks 2010-05-10 14:22:37 +00:00
zzz
97d9a3a4e5 show monthly bw estimate 2010-05-10 14:21:48 +00:00
zzz
cb7f111ade * UDP: To help limit connections, don't offer to introduce
when floodfill
2010-05-10 14:20:27 +00:00
zzz
35f670706a * TunnelPoolManager: Concurrent 2010-05-10 14:18:15 +00:00
zzz
3fac888fe5 * DataHelper: Deprecate inefficient eq() methods 2010-05-10 14:17:05 +00:00
zzz
d843646b4f * Streaming: Add support for connection throttling 2010-05-10 14:15:31 +00:00
zzz
c2b73d9fb5 * i2psnark:
- Add tunnel config dropdowns
      - Comment out old proxy stuff
2010-05-10 14:13:55 +00:00
sponge
9da95b8165 PluginStarter: If there is some delay, there may be a really good reason for it.
Loading a class would be one of them!
    So we do a quick check first, If it bombs out, we delay and try again.
    If it bombs after that, then we throw the ClassNotFoundException.
2010-05-10 07:27:34 +00:00
zzz
5bcd8efe14 2 transport test classes out 2010-05-06 13:21:30 +00:00
walking
027a1d748d merge of '19b2cad8459bddf9473031504b0f30aa3aad97e3'
and '5fc11615066ab7c27262a8670b7713405d25424c'
2010-05-06 04:15:34 +00:00
walking
6d6e012c19 adapt to the change in build.xml 2010-05-06 03:59:23 +00:00
zzz
a8db6b007f * Plugins:
- Set classpath for specific client only, not for the whole JVM
      - Use ConfigDir() not AppDir()
2010-05-05 19:34:03 +00:00
zzz
f3576e54c6 throw IllegalStateException rather than NPE if no context 2010-05-05 18:44:12 +00:00
zzz
0325f6c4d2 more isEmpty and a static 2010-05-05 18:43:33 +00:00
zzz
8225ce063a * Console: Print stack trace if exception on startup 2010-05-05 17:50:28 +00:00
zzz
c2c379c994 * i2psnark: Skip 'the' when sorting snarks 2010-05-05 17:45:52 +00:00
zzz
7344c2af47 * I2PTunnelHTTPClient: Reject 192.168.* 2010-05-05 17:34:24 +00:00
zzz
f484ea8c64 * EepGet: Limit max times to fail completely even if numRetries is higher 2010-05-05 17:27:20 +00:00
zzz
ac790492eb * build.xml: Create packed sud in release 2010-05-05 16:55:00 +00:00
zzz
9ac5fb4890 * RouterInfo: Clean up use of sortStructures() 2010-05-05 16:54:28 +00:00
zzz
2baee7413c * Replace size() <= 0 with isEmpty() everywhere, ditto > 0 -> !isEmpty() 2010-05-05 16:51:54 +00:00
walking
16bec08f09 merge of '03068a89c26b0986a8bf2b6f36cb478f565664eb'
and 'c3c31953c884c3aafb142e05c2dbef2809516d9c'
2010-05-03 16:44:06 +00:00
walking
afb3c76922 - rewrite portable targets
pkg-portable-clean
	preppkg-portable-win32-jbigi
	preppkg-portable-linux-jbigi
	preppkg-portable-basic
	preppkg-portable-win32
	pkg-portable-win32
- add windoz support to target pack200
2010-05-03 16:42:45 +00:00
z3d
2f526b35e8 merge of '77299d7d613df0c3d1308d1056facc243ef693bb'
and 'a088711b406a5c062940ebbdd1709aa891283d74'
2010-05-02 16:43:46 +00:00
walking
2dc32aa310 fix name "preppkg-linux-only" 2010-05-02 13:04:40 +00:00
zzz
10e669165a Fix plugin version check bug 2010-05-02 12:19:17 +00:00
zzz
b6cb90d731 * ByteCache:
- Add a per-cache stat
      - Limit each cache based on max memory
      - Disable in UDP MessageReceiver
      - Add clearAll() method to be called when under
        severe memory pressure; call from Router
2010-05-02 12:14:14 +00:00
zzz
949a8901fb comment out mains 2010-05-02 12:11:20 +00:00
walking
d608f450af return what is taken a way ;) 2010-05-02 11:30:31 +00:00
z3d
e0a1341901 Adjust dimensions of installer splash graphic: was 171x275, now 171x270. 2010-04-30 10:26:54 +00:00
z3d
2cfb03f17d New installer splash graphic. 2010-04-30 09:30:01 +00:00
z3d
4dd0f51da4 merge of '6b54027d89ac66a5b395118365de13f5ab61bcaf'
and 'b915692e91863a7122937dbd0bad366bf38a7dfc'
2010-04-30 09:26:43 +00:00
dev
d65a3e54a2 update checklist 2010-04-28 17:53:18 +00:00
walking
c212eacf19 - add new target: pkg-portable-win32 (must run buildSmall first)
- add configs/win batchfiles to installer/resources/portable

* currently only pkg-portable-win32 on win32 available
need linuxers to write target preppkg-portable-nix/pkg-portable-linux
and enable pkg-portable-win32 on linux (i doubt anyone need it ?)
shell scripts should goto installer/resources/portable/configs/linux/
2010-04-27 15:01:03 +00:00
zzz
46f341d782 peers.jsp: cleanup and tag 2010-04-27 12:55:37 +00:00
zzz
ab4ff5548d fix reseed tips links 2010-04-27 12:54:07 +00:00
zzz
d4713e1e6c every body needs some <body> 2010-04-27 12:53:16 +00:00
zzz
8a3a1466c9 * i2psnark: Serve downloaded files from the servlet rather
than with a file: link
2010-04-27 12:52:17 +00:00
zzz
a5af9dc973 * Jetty: Backport directory listing bugfix from jetty 6 2010-04-27 12:51:14 +00:00
zzz
049a083e42 0.7.13 2010-04-27 01:43:35 +00:00
zzz
9683a110d6 plugin cleanups 2010-04-23 16:28:14 +00:00
zzz
c44698f61a comments 2010-04-23 16:27:56 +00:00
zzz
106bccda0e log compress errors 2010-04-21 17:41:14 +00:00
zzz
b1aafa5aaf increase buf size for extraction 2010-04-21 17:06:54 +00:00
zzz
e2e43cd534 * EepGet: Don't convert a MalformedURLException into
an IOE so we recognize it when it's throuwn
2010-04-21 17:05:39 +00:00
zzz
43b4fe8300 * ReusableGZIPStreams:
- Concurrent
      - Workaround for Apache Harmony 5.0M13 Deflater bug
2010-04-21 17:04:53 +00:00
zzz
7c3e4fd947 reduce floodfill max conns slightly; fix clients start button 2010-04-18 23:06:04 +00:00
zzz
9916ef4d3d IRC links on readmes and initialNews 2010-04-18 19:57:42 +00:00
zzz
ad4da54bc4 I2PTunnelServer: Log incoming connections with net.i2p.i2ptunnel.I2PTunnelServer=INFO 2010-04-18 15:22:33 +00:00
sponge
2415c5a38b * BOB early session destroy to speed up tunnel tare-down. 2010-04-16 19:38:40 +00:00
HungryHobo
ecbc0a2a2d Show the start button when a plugin is not running, and the stop button when a plugin is running. 2010-04-16 03:58:48 +00:00
zzz
10d37a9be5 log tweaks 2010-04-15 18:16:00 +00:00
zzz
590d2e4639 Floodfills: Increase max to 100 (was 60) and min to 60 (was 45) 2010-04-15 18:14:21 +00:00
zzz
806a07acc5 Limit max length in readline() 2010-04-15 18:13:51 +00:00
zzz
8258cdd6cf Limit max header lines 2010-04-15 18:13:30 +00:00
sponge
2fcee6e87a I2PTunnelHTTPClient: Test for "http://:/" and output error page.
This avoids an ArrayIndexOutOfBoundsException, which can eventually
cause the eepproxy to stop functioning.
2010-04-15 06:38:35 +00:00
zzz
27587e83c8 add test 2010-04-12 22:26:54 +00:00
zzz
a0d6741ff5 fix wrong prefix for startOnLoad in plugin webapps.config 2010-04-12 21:11:22 +00:00
zzz
63562ddd48 * i2ptunnel: Implement access lists for TCP servers.
Enter b32 or b64 hash or dest into list box, and
      check enable for whitelist. Uncheck enable and enter
      i2cp.enableBlackList=true in advanced i2cp options for
      blacklist. Todo: make black/whitelists radio buttons.
2010-04-12 19:18:21 +00:00
zzz
aac96b15b0 * configstats.jsp: Fix full stats checkbox default 2010-04-12 19:12:04 +00:00
zzz
0f502b4229 * LogManager: Concurrent 2010-04-12 19:10:11 +00:00
zzz
a916f970b1 * i2psnark: - Concurrent, limit, display, log tweaks 2010-04-12 19:07:53 +00:00
zzz
7f2d0acc3b merge of 'b12b7f42f59f400abd7032f3f2bffba289f3ec7a'
and 'b5a86744c2877d9d738a2fdd2b99970a0160e062'
2010-04-10 16:06:14 +00:00
zzz
8b6751f419 Streaming:
Fix the window size increment logic so it does it much more often.
The code increased the window size by MSS * MSS / N, like
in RFC 2581, but it did it only once every N,
so that was like MSS * MSS / N**2.
Now do it all the time, except for isolated packets like keepalives
that aren't using more than one message of the window.
Seems to speed up outbound significantly, without any
noticable increase in stream.sendsBeforeAck.
2010-04-10 15:42:08 +00:00
zzz
70e9cf5838 add comments about the null privkey bug 2010-04-10 15:41:42 +00:00
zzz
24020302fd cleanup 2010-04-10 15:29:16 +00:00
zzz
d7e2f39d25 * Startup:
- Don't die horribly if there is a router.info file
        but no router.keys file
        http://forum.i2p/viewtopic.php?t=4424
      - Log tweaks
2010-04-10 15:28:31 +00:00
zzz
89d0d7b266 Disconnect seeds that connect to a seed 2010-04-10 15:26:23 +00:00
zzz
e3c222b5c1 Lower per-torrent conn limits for large pieces 2010-04-10 15:25:57 +00:00
forget
a199015bc9 Russian translation updated (trac.i2p2.i2p link) 2010-04-08 09:57:32 +00:00
zzz
23617f7b30 dont set stats off, defaults to off anyway 2010-04-07 23:22:48 +00:00
zzz
f5f02236df toString() for logging 2010-04-07 23:21:45 +00:00
zzz
ad76bc378c * OCMOSJ:
- Increase min timeout
      - Logging tweaks
2010-04-07 23:20:42 +00:00
zzz
570d8d15af * Key Manager: Hopefully avoid some races at startup
http://forum.i2p/viewtopic.php?t=4424
2010-04-07 23:19:24 +00:00
zzz
e254c5f31a * Streaming:
- Detect and drop dup SYNs rather than create
        a duplicate connection - will hopefully fix
        "Received a syn with the wrong IDs"
      - Send reset for a SYN ACK with the wrong IDs
      - Don't send a reset to a null dest
      - Logging tweaks
      - Cleanups
2010-04-07 23:18:58 +00:00
zzz
2a92be5946 * Console:
- More HTML transitional fixes
      - Standardize on 'save' to the right of 'cancel'
2010-04-05 13:34:45 +00:00
zzz
caab860351 - Add tooltip support for plugin links
- Make target=_blank for plugin links
2010-04-05 13:22:16 +00:00
z3d
32861b7ce9 merge of '44418e8f7048de3ac06833176b607d55afc94bdd'
and '6cd2f8bb60720e3aeeb500d67b3f162f2831c3fa'
2010-04-05 12:26:28 +00:00
z3d
a08802c4b6 Fix the errant horizontal rule in the console news section (classic/midnight). 2010-04-04 11:32:28 +00:00
z3d
6b51be6fae Fix the errant horizontal rule issue in the console news section (classic/midnight). 2010-04-04 05:46:07 +00:00
zzz
5b5c975884 turned the knob the wrong way before 2010-04-02 13:10:08 +00:00
zzz
605dfec5e7 dont call exit 2010-03-31 18:33:40 +00:00
zzz
71aa0cfba7 * FloodfillPeerSelector: Adjust rankings to try to
improve LeaseSet lookups
2010-03-31 18:33:08 +00:00
zzz
55e45c4274 * HostsTxtNamingService: Don't load the whole hosts.txt
into memory for every lookup
2010-03-31 18:32:16 +00:00
zzz
8c880b2518 prep for a windows-only pkg 2010-03-29 21:21:56 +00:00
zzz
c43b16cfbb * configclients.jsp:
- Always show start button for webapps and plugins
    * configclients.jsp, configupdate.jsp:
      - Fix submission when entering CR in a text box
    * Plugins:
      - Stop all plugins at shutdown
      - Log tweaks
    * WebApps:
      - Remove the WAC after stopping it
      - Stop a WAC before starting it to prevent dups
2010-03-29 21:20:48 +00:00
zzz
394903a8f0 - Implement destroy() in i2psnark to prevent dups 2010-03-29 21:14:35 +00:00
zzz
e31c0636ab - Implement destroy() in addressbook to prevent dups 2010-03-29 21:13:45 +00:00
zzz
e9fe80f8e5 * HTTPResponseOutputStream: More static 2010-03-29 21:12:51 +00:00
zzz
7671550a9f * EepGet: Don't retry after a MalformedURLException 2010-03-29 21:12:04 +00:00
zzz
83d24fa90d -2 2010-03-25 20:26:28 +00:00
zzz
3e2956da3f * netdb.jsp: Tag transport properties 2010-03-25 20:25:03 +00:00
zzz
cf3fd01012 * Plugins: Remove final check and install console
messages after a while
2010-03-25 20:23:32 +00:00
zzz
319071c73b Add new reseed host
thx merd@mail.i2p
2010-03-25 19:09:30 +00:00
zzz
ab8d9bb79b * PrivateKeyFile: Add b32 output 2010-03-25 19:07:35 +00:00
zzz
25eaf8cad7 fix dup anchor 2010-03-25 19:06:47 +00:00
zzz
c8f97d9c73 * i2psnark:
- Send numwant=0 if we don't need peers
      - Report returned complete and incomplete counts
        if higher than peer count
      - Allow missing peer list
      - Log tweaks
2010-03-25 19:05:45 +00:00
zzz
d3f1fe1c30 * Console: Sort plugin links in summary bar 2010-03-25 19:04:45 +00:00
zzz
5fb01a01af history for prop, -1 2010-03-18 15:55:42 +00:00
zzz
617d1cd648 propagate from branch 'i2p.i2p.zzz.test' (head c295ab421dd719cfe0e273268b5b4e48505e4f61)
to branch 'i2p.i2p' (head 995914d8e049d9bb695fd25e4cf5be860cd4e487)
2010-03-18 15:49:03 +00:00
zzz
f672193fcf enable VTBM 2010-03-18 15:48:40 +00:00
zzz
d3c490e9d7 bold the rest of the update msg 2010-03-18 12:32:28 +00:00
zzz
2e8fd23f2b concurrent 2010-03-18 12:32:01 +00:00
zzz
3eef403b04 concurrent 2010-03-18 12:31:44 +00:00
zzz
f3b78fc82f post-release cost cleanup 2010-03-17 22:05:45 +00:00
zzz
80654b2732 Discard at IBGW based on router clock not system clock 2010-03-17 17:00:35 +00:00
zzz
05597ae914 disable i2ptunnel nonce checking if console password is set 2010-03-17 16:23:20 +00:00
zzz
0f1eb464e8 add reseed host thx mathiasdm 2010-03-17 16:22:11 +00:00
zzz
8745ffd42f * config.jsp: Set burst to +10% for 20s by default,
to fix bug where the burst stays high when limits
      are reduced.
2010-03-17 16:18:25 +00:00
zzz
db99e98658 display transport cost 2010-03-17 16:15:52 +00:00
zzz
9f1a663f63 typo fix thx duck 2010-03-16 13:52:57 +00:00
zzz
db0b3da446 snark up bw tracking tweak 2010-03-16 13:32:34 +00:00
zzz
5d22d41201 pack200 for installer (-3.3MB) 2010-03-16 12:38:07 +00:00
zzz
b397de1d54 link to trac 2010-03-16 12:37:32 +00:00
dev
4bda79b263 merge of '7e9ec9156e65514e00e0d9f82be002cf9aadac5f'
and '9df57c2abc8e859828f9edf80e9d104fd6bf6729'
2010-03-15 19:01:28 +00:00
dev
697a9dbd06 merge of '59ab6afe6ba2e217124fe55e8d854d0e04b965c4'
and '6cf70779bcd05bcf782d6d7bb8d131ce8d71426f'
2010-03-15 19:01:07 +00:00
dev
accaabcfde added c.netdb.i2p2.de to the reseed sites 2010-03-15 19:01:03 +00:00
zzz
5026cbdc8d 0.7.12 2010-03-15 18:03:46 +00:00
zzz
16a14d4ebd * Clients:
- Negative delay means run immediately and inline
      - Add methods to test class and run inline,
        to propagate errors to the console
      - Add javadoc for clients.config format
      - Use new methods for plugins
2010-03-15 16:19:19 +00:00
zzz
c151352910 cleanup 2010-03-15 16:15:23 +00:00
zzz
52e2aaa20d javadoc cleanup after review 2010-03-15 14:34:25 +00:00
zzz
9df87ba167 partial fix for i2ptunnel nonce troubles 2010-03-13 20:33:48 +00:00
zzz
b80f70fc54 dont yell so loud 2010-03-13 16:04:32 +00:00
zzz
939cdb019b log tweak 2010-03-13 15:00:47 +00:00
zzz
fde36fe238 flip backwards arraycopy args 2010-03-13 14:59:54 +00:00
forget
116be93160 Russian translation updated (snark file open error message, reseed messages, SOCKS IRC proxy) 2010-03-13 09:57:55 +00:00
zzz
40e820cabb * UDP:
- Big refactor of several classes for concurrent,
        elimination of several locks
      - Reduce max number of resent acks in a packet to
        lower overhead
      - Take incoming messages from the head of the queue,
        not sure why taking them from the tail "reduces latency"
      - Java 5 cleanup
2010-03-09 20:44:46 +00:00
zzz
d79387bd92 * TunnelGatewayPumper: Refactor for concurrent 2010-03-09 20:43:30 +00:00
zzz
05f2a62cbb * Job Queue:
- Replace some locks with concurrent
      - Change job ID to a long so it won't wrap
      - Remove some unused stats
      - Java 5 and debug cleanup
2010-03-09 17:32:29 +00:00
zzz
78a965dc90 * FIFOBandwidthRefiller:
- Replace global counters with atomics
      - Use lockless shortcut methods to grant
        requests if we can satisfy immediately
2010-03-09 17:10:18 +00:00
zzz
5b603d6627 cleanups and comments 2010-03-08 22:17:46 +00:00
zzz
e93d2046d3 Remove some unused stats 2010-03-08 22:15:42 +00:00
zzz
995871db8a more java 5 cleanups 2010-03-08 22:13:43 +00:00
zzz
501535f196 Java 5 cleanups 2010-03-08 22:07:52 +00:00
zzz
91e854e99c * Peer Manager:
- Replace some locks with concurrent
      - Switch back to fast version of getPeersByCapability()
      - Java 5 cleanup
2010-03-08 22:02:42 +00:00
zzz
9b05d8e774 * ByteCache:
- Remove some locks with concurrent
2010-03-08 21:32:14 +00:00
zzz
e70793c3bc propagate from branch 'i2p.i2p' (head b7a8a00272124eec0d149224af58bd144358c009)
to branch 'i2p.i2p.zzz.test' (head a4d67a357c36f4e94718bf237a7af96b8617a4a7)
2010-03-08 20:04:55 +00:00
zzz
abb2603bea one more unused class 2010-03-08 20:04:35 +00:00
HungryHobo
c91218be27 Add i2pbote.net to the list of reseed hosts 2010-03-08 05:14:26 +00:00
zzz
9eab44128a * Random: Remove and deprecate some old classses 2010-03-08 00:48:56 +00:00
zzz
f98101afa6 * i2psnark: Better track outgoing bandwidth by incrementing
counter before the blocking write
2010-03-08 00:45:08 +00:00
zzz
4fae7a8cb6 * Floodfills: Increase max to 60 (was 28) and min to 45 (was 20) 2010-03-08 00:44:40 +00:00
zzz
26cf1922db * Reseeder: Reduce max response size to 1MB (was 8MB) 2010-03-08 00:44:15 +00:00
neutron
c087b0695f An update of the network configuration page in the messages_fr.po file. 2010-03-06 13:22:49 +00:00
zzz
16930d2004 merge of '18a87911d2a41f5a1fa0f5019d9bcd7249731338'
and '1d260b764d0fde4b8df67bdb23320b85e6944721'
2010-03-05 15:56:57 +00:00
zzz
33939e7cfb translate country names on flag popups 2010-03-05 15:56:17 +00:00
zzz
e759ef5865 tag console reseed messages 2010-03-05 15:36:24 +00:00
zzz
2be1b1ece4 couple of tags 2010-03-05 15:27:32 +00:00
walking
1820a29aed translation update 2010-03-05 15:14:43 +00:00
zzz
ee9f85d53c rename getString() since it was getting tagged 2010-03-05 14:44:50 +00:00
zzz
afbb1dbe86 compile fix 2010-03-05 14:44:18 +00:00
zzz
9244bd6b0f * I2PSOCKSIRCTunnel:
- New, for filtering IRC client traffic when using SOCKS
    * I2PTunnelIRCClient:
      - Make filter classes static and public for use by SOCKS
      - Eliminate redundant case conversion
      - Pass ISON message through (jIRCii uses it for pings)
      - Switch back to StringBuffer since it's used by 2 threads
      - Set daemon on filter threads
    * SOCKS5Server:
      - Fix handling of multiple authentication methods
2010-03-05 14:04:32 +00:00
zzz
6bb4403207 updates after trying SDK 2.1 2010-03-05 13:48:26 +00:00
walking
24ebd503d4 susidns translation 2010-03-05 13:39:37 +00:00
forget
285a5eed35 Russian translation updated (job queue link, address helper conflict message) 2010-03-04 13:04:01 +00:00
zzz
26aebe6a0f * Console:
- Add link to jobs.jsp on configservice.jsp
      - Add plugin disableStop support
2010-03-02 22:54:32 +00:00
zzz
ca9f174171 * Context: Add boolean getProperty methods 2010-03-02 22:52:26 +00:00
zzz
ffbced22b3 * LoadClientAppsJob:
- Fix unquoted arg after quoted arg
      - Logging cleanup
2010-03-02 22:51:53 +00:00
zzz
45ca459ceb * HTTP Proxy:
- Fix address helper conflicts caused by last checkin
      - Use B32 instead of random hostname for conflict link
2010-03-02 22:50:46 +00:00
HungryHobo
5a539f0619 merge of '98497fef229d3e37922d4c09cb52e043b01647ee'
and 'de5aa1476c5d447deb031032dbfbc921114dfbd6'
2010-02-27 18:03:05 +00:00
HungryHobo
c6cef72cb7 Fix: webapps keep asking for the router console password even after the user entered it 2010-02-27 18:02:56 +00:00
zzz
8081d053cc Prevent UDP startup NPE http://zzz.i2p/topics/571 2010-02-27 14:38:52 +00:00
zzz
efdc8e5df0 * HTTP Proxy:
- Put B32 instead of B64 in Host: header, saves 450 bytes
      - Eliminate some redundant lookups
      - Fix http://i2p/b64/ and /eepproxy/site/ requests
      - Disallow a port specified for an i2p address
      - Cleanup and comments
2010-02-27 01:16:39 +00:00
zzz
b4911a2b2f support plugin themes 2010-02-26 16:58:01 +00:00
zzz
7b70210c9a * UDP Transport:
- Replace the unused-since-2006 TimedWeightedPriorityMessageQueue
        with DummyThrottle
      - Don't instantiate and start TWPMQ Cleaner and OutboundRefiller
        threads, part of priority queues unused since 0.6.1.11
      - Don't instantiate and start UDPFlooder, it is for testing only
2010-02-26 16:54:41 +00:00
zzz
e3353df8bb * NTCP Transport:
- Replace lists with concurrent queues in EventPumper
        and NTCPConnection to remove global locks
      - Java 5 cleanup
2010-02-26 16:52:09 +00:00
zzz
25285fc059 remove jobs link from summary bar 2010-02-26 16:47:41 +00:00
zzz
7720f71e44 * eepsite: Add some help to index.html 2010-02-26 16:46:12 +00:00
zzz
1657ac5357 * netdb: Fix NPE after OOM http://trac.i2p2.i2p/ticket/38 2010-02-26 16:45:34 +00:00
zzz
299214aa1d * i2psnark:
- Fix NPE after create file failure
      - Sanitize more characters in file names
2010-02-26 16:44:49 +00:00
forget
5fd4488e08 Russian translation updated (delete confirmation, non-i2p trackers warning) 2010-02-23 08:49:37 +00:00
zzz
87fcaf2651 * Unzip: Any files in the zip with a .jar.pack or .war.pack extension
will be transparently unpacked with unpack200. Savings is about 60%.
      Someday we will do this for suds, but we can do it for xpi2ps now.
    * build: Add updater200 target
2010-02-23 02:44:47 +00:00
zzz
f6b9cf6f21 * configclients.jsp:
- Add js delete confirm
      - Remove delete button for webapps
    * i2psnark:
      - Ignore a non-i2p tracker in a torrent rather than deleting
        the torrent, thus "converting" a torrent to in-netowrk use
        via the open trackers
      - Add js delete confirm
2010-02-22 18:17:11 +00:00
zzz
eae18e61b7 unhide plugins, fix d/l status display 2010-02-19 14:42:43 +00:00
zzz
96735f2543 make file box bigger 2010-02-19 14:40:57 +00:00
forget
54459d3b5c Russian translation updated (plugin support) 2010-02-18 21:16:15 +00:00
zzz
82444f9e7b move getConsoleServer() method 2010-02-18 16:33:47 +00:00
zzz
3d8365a473 * HTTP Proxy: Fix blank page instead of error page for eepsite unreachable 2010-02-18 16:32:44 +00:00
zzz
e2dc9715d2 * Transport:
- Fix recognition of IP change when not firewalled
      - Require consecutive identical results from two peers before changing IP
2010-02-18 16:31:57 +00:00
zzz
d4f1230b37 better error message when finding HTML instead of metainfo 2010-02-17 19:56:54 +00:00
zzz
7701693d37 * Plugins:
- Fix plugin start button
      - Change signer prop to match docs
      - Tweaks
2010-02-17 18:12:46 +00:00
zzz
b6704fce4e javadoc fix 2010-02-17 18:11:16 +00:00
zzz
39a68d4a2b slew tweak 2010-02-17 18:10:45 +00:00
zzz
94633899d7 CLI exit 1 on error for ease of use in scripts 2010-02-17 18:10:20 +00:00
zzz
c45bc1554f move to i2p.scripts 2010-02-17 18:08:54 +00:00
forget
789c8edc45 Russian translation updated (plugin support) 2010-02-15 20:53:49 +00:00
zzz
e0b44f43e3 history for 3 props, -1 2010-02-15 16:37:22 +00:00
zzz
b45069e377 propagate from branch 'i2p.i2p.zzz.VTBM' (head fb6ef5bc51e18536bc1611a483e9be804084e37b)
to branch 'i2p.i2p' (head c9f5d7378a6028393fe560739ec02f5f87f50f80)
2010-02-15 16:22:20 +00:00
zzz
c3a156ce4b propagate from branch 'i2p.i2p.zzz.plugin' (head fafcd8c8c41873b4d106a9e06504dd7b48109ad8)
to branch 'i2p.i2p' (head 7eafbe18b0a1e26f09b9488d374f5fed4c278a78)
2010-02-15 16:21:15 +00:00
zzz
ee5cc099ed propagate from branch 'i2p.i2p.zzz.test' (head 0914f799641c6ec04dbe40f325f8368403167885)
to branch 'i2p.i2p' (head f3d096929c21753a2117f93d7550b751b021c2a7)
2010-02-15 16:17:40 +00:00
zzz
f189587153 log tweak 2010-02-15 16:16:03 +00:00
zzz
a1fb5ef6ed verify that signing key name matches 2010-02-15 16:12:49 +00:00
zzz
8c2550c39a * Streaming: MessageOutputStream logging tweaks 2010-02-15 16:10:41 +00:00
zzz
abd96a920f 0.7.11 2010-02-15 12:43:28 +00:00
zzz
1d3f0fe96c * Transport:
- Update addressses before publishing
      - Increment address cost if near capacity
      - Synchronize notifyReplaceAddress()
2010-02-15 04:08:02 +00:00
zzz
49a6cdbda6 - Clear the geoip negative cache periodically 2010-02-14 01:17:19 +00:00
zzz
2700028da7 * Transport: Adjust bids based on address cost
- More finals
2010-02-13 15:16:12 +00:00
sponge
51a1564566 Fix addWebApplications API goofup, Bump BOB version, which I forgot to do. 2010-02-13 13:46:10 +00:00
zzz
bd068058c3 * Floodfills: Increase max to 28 (was 15) and min to 20 (was 10) 2010-02-13 12:02:33 +00:00
neutron
4591f77928 A few minor updates 2010-02-13 10:51:00 +00:00
zzz
4f70a7d0fe * Clock:
- getFramedAveragePeerClockSkew() now returns a long (ms);
        was a Long (s)
      - Implement NTP-style clock slewing so the clock is adjusted
        gradually
      - Implement clock strata so we prefer better clocks
      - Implement a timestamper in the transport so we will periodically
        update the clock even if NTP is not working
        This allows the router to converge the clock instead of simply
        hoping the first connected peer is correct.
      - Slow down NTP attempts after several consecutive failures
2010-02-13 01:20:23 +00:00
sponge
6d67848096 org.mortbay.jetty.Server modified method to accept Attributes for batch webapp launches via addWebApplications(). 2010-02-12 22:15:59 +00:00
zzz
c145ed103a merge of '5a88275dbd49dfde016676939fb28b1387447216'
and 'b4afc02ff8ecaf95f621169763cfa99e3f309102'
2010-02-11 23:02:03 +00:00
zzz
f265db4037 fix stop button; catch and log exceptions better 2010-02-11 21:41:54 +00:00
zzz
62308f26bc * Plugins:
- Fix classpath setting for webapps
      - Implement uninstall args in clients.config
2010-02-11 19:18:26 +00:00
forget
2b4b47eff6 Russian translation updated (readonly install directory message) 2010-02-10 20:30:51 +00:00
zzz
04ae0e2610 * I2PTunnelRunner: Flush initial data, for some reason it wasn't
getting flushed ever in some cases.
2010-02-10 20:17:31 +00:00
zzz
cada9fae44 flush requests in I2PTunelRunner 2010-02-10 20:13:07 +00:00
zzz
949aea951e * Plugins:
- Hook up update/delete/check/save buttons
      - Implement delete
      - Hide unless router.enablePlugins=true
2010-02-10 19:09:35 +00:00
zzz
cfc49ab261 * Plugins:
- Check plugin key against all installed plugins
      - Reword some error messages
    * VersionComparator: add '-' and '_' as valid separators
      to better support plugin and java version checking
2010-02-10 15:35:00 +00:00
zzz
0e853a3119 fix missing readme files in debian 2010-02-10 13:45:31 +00:00
zzz
a0cad7e8e9 -10 2010-02-10 12:58:45 +00:00
zzz
880f1866dc take version number off jrobin jar so we can overwrite if we upgrade 2010-02-10 12:06:30 +00:00
zzz
05d22344b5 * Izpack: Add 64-bit windows dll so installer doesn't die trying to add shortcuts 2010-02-10 11:49:21 +00:00
zzz
7212f855d8 Upgrade to launch4j 3.0.1 2008-07-20.
The license is BSD for launch4j and MIT for the wrapper code in head/

Changelog is in installer/lib/launch4j/web/changelog.html
Hopefully this will fix installs for 64-bit JRE on 64-bit windows.

The previous version was 2.0-RC3 2005-08-13.
The previous license was GPLv2 for launch4j and LGPLv2.1 for the wrapper code in head/

The bin/ld.exe and bin/windres.exe files were contributed by
i2p users in 2005 so the i2p installer could be built on windows.

They have not been updated for 3.0.1, so pkg builds on windows
will presumably still get 2.0-RC3.
2010-02-09 17:21:48 +00:00
zzz
54171e4be2 ... and more 2010-02-08 23:37:31 +00:00
zzz
a820c01ba5 strip HTML from fields 2010-02-08 23:28:09 +00:00
zzz
9d1ae891bb check for mismatched versions 2010-02-08 22:50:30 +00:00
zzz
2df7247e83 fix start webapp, add stop webapp 2010-02-08 22:19:59 +00:00
zzz
a109ebef28 stop button 2010-02-08 20:57:30 +00:00
zzz
c0135b592d plugin stopper 2010-02-08 20:37:49 +00:00
zzz
b7a0aeea34 plugin buttons 2010-02-08 19:04:46 +00:00
zzz
66375e25c6 start of a plugin version checker 2010-02-08 18:45:53 +00:00
zzz
85482a67f5 plugin description on configclients 2010-02-08 16:15:23 +00:00
zzz
d7e90969d0 delete jettylib on distclean to ensure we get the new jetty 2010-02-07 20:16:18 +00:00
zzz
9012baf51e plugin links 2010-02-07 19:01:06 +00:00
zzz
3c8355790f load translation bundles in plugins 2010-02-07 18:18:31 +00:00
zzz
e9f1da85e4 classpath for plugins 2010-02-07 17:13:44 +00:00
zzz
58adccfd4a start of a plugin starter 2010-02-07 13:32:49 +00:00
zzz
040f3e016e move jrobin from routerconsole.jar to its own jar 2010-02-06 20:48:14 +00:00
zzz
505d5f5cae * Plugins: New plugin downloader/installer
* configclients.jsp: Use new WebAppStarter so webapps that are
      started later also get the temp dir, password, and classpath
      configuration just like if they were started at the beginning
    * configupdate.jsp: Delay after checking for update so the
      summary bar will have buttons.
2010-02-06 20:25:13 +00:00
zzz
2a99e2a295 -9 2010-02-06 18:55:11 +00:00
zzz
49fae646e2 merge of '9e658a1b1e62b486a399a162ceb27fe3461a9eb0'
and 'fe3561146f8172bdb86292eade40a031b7dee4fb'
2010-02-06 18:53:18 +00:00
zzz
f7780b6745 * TrustedUpdate:
- Allow method to check if we know about a key
      - Add method to extract without verifying
2010-02-06 18:47:08 +00:00
zzz
7a59d15e9c - Pull jstl.jar and standard.jar out of susidns.war (-300KB someday)
- Remove duplicate classes from i2psnark.war (100KB)
2010-02-06 18:44:29 +00:00
zzz
9b141bd9dd * Webapps: Allow additions to a webapp classpath. This will let us:
- Pull jstl.jar and standard.jar out of susidns.war
      - Remove 100KB of duplicate classes from i2psnark.war
      - Add classpaths for plugins
2010-02-06 18:40:55 +00:00
echelon
d0d062b6f4 No more port 8887 in de troubleshoot 2010-02-06 16:52:16 +00:00
zzz
375118fe02 Refactor and tag update status messages 2010-02-05 21:12:10 +00:00
zzz
7b59ceb4ae Add transmission ID 2010-02-05 20:02:23 +00:00
zzz
3aebe45a7d refactor the storage of signing keys 2010-02-05 19:19:33 +00:00
zzz
7c236c0fa0 Console: Fix saving update keys, was broken in 0.7.10 2010-02-05 19:18:26 +00:00
zzz
7a7e650ca0 news.xml: Wrap i2p version tags in XML comment 2010-02-05 19:18:06 +00:00
zzz
7a32f8efd6 Try yet again to prevent two NTCP pumpers 2010-02-05 19:17:46 +00:00
zzz
2f8b55ceda propagate from branch 'i2p.i2p' (head d84bac5f340fb1f9f4826a3326847a84cf32b1a1)
to branch 'i2p.i2p.zzz.test' (head c055e344e2d86aa417bb248bb0a6c54ba3b2f52d)
2010-02-05 00:31:33 +00:00
zzz
b77be20cc1 set up transport cost constants 2010-02-05 00:31:00 +00:00
zzz
101135a99a fix sending of stopped events to the tracker 2010-02-04 14:47:15 +00:00
zzz
746c1bd628 * NetDb: Lower min RouterInfo expiration to 2.5h (was 3h)
* i2psnark debug logging tweak
2010-02-03 14:21:55 +00:00
zzz
b0502b1873 Fix several VTBM read/write bugs after testing 2010-02-03 14:16:05 +00:00
zzz
6801fc667a - Hide update buttons and update config if install dir is readonly or if configured 2010-02-02 15:25:26 +00:00
zzz
794db19b6d javadoc 2010-02-02 15:19:17 +00:00
zzz
d4637818be - Show yellow star if no outbound tunnels 2010-02-02 15:18:22 +00:00
zzz
33b7dca782 * i2psnark: Don't prefer to opportunistically unchoke unchoking peers when not interested 2010-02-02 15:14:44 +00:00
zzz
d7015cf2e6 disable sending VTBMs 2010-02-01 14:46:00 +00:00
zzz
5689fa8512 propagate from branch 'i2p.i2p' (head 2b1a99ea78270f80514ced3860a7d54cc3f2e309)
to branch 'i2p.i2p.zzz.VTBM' (head 155eea7b96fa5ce48faec385242e0b6eb232b0dd)
2010-02-01 14:39:16 +00:00
zzz
25e51a945c - Fix first hop expiration for Build Messages, was way too long
- Randomize Build Message expiration to make it harder to guess hop position
      - Save expired tunnel build configs for a while, so that we will still use the tunnel
        and update peer stats if the reply comes in late
      - Don't update our own profile for Tunnel Build Replies
2010-02-01 14:17:11 +00:00
zzz
bfd1306a56 fix for missing tgz build error 2010-01-31 20:26:57 +00:00
zzz
839986db22 * I2NP: Add UnknownI2NPMessage so we can route unknown message types 2010-01-31 16:31:36 +00:00
zzz
ed443fe0d6 jetty 5.1.15 2010-01-31 05:06:50 +00:00
sponge
390981e10c Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream.
Fix setkeys bug in DoCMDS, forgot to create the object before calling t's methods, which threw an NPE.
2010-01-30 05:26:30 +00:00
zzz
56b3e6a993 * Tunnel Building:
- Add getRecordCount() to TunnelBuildMessage and TunnelBuildReplyMessage
        so they can be extended.
      - New I2NP Messages VariableTunnelBuildMessage and VariableTunnelBuildReplyMessage,
        which contain the number of request slots in them.
      - Convert all static assumptions of 8 slots to getRecordCount()
      - Use the new VTBM if all hops in the tunnel and the OBEP or IBGW of the reply tunnel
        support it, and the tunnel is 4 hops or shorter.
      - Reply to a VTBM with a VTBRM of the same size
      - Make BuildReplyHandler static
      - Convert the currentlyBuilding List to a ConcurrentHashMap to speed reply lookups
        and eliminate a global lock; don't put fallback tunnels in there
      - Add new tunnel.corruptBuildReply stat
      - Various cleanups and javadoc

    Tested as compatible with current network, new messages untested.
2010-01-29 19:22:10 +00:00
zzz
f86f2701ff - Speed up some hashcode() and equals()
- Cleanup and javadoc
2010-01-29 13:57:57 +00:00
zzz
63d3685652 * Jetty: Turn on checkAliases 2010-01-29 13:55:16 +00:00
zzz
0a93466999 - Add basic DOS prevention for lookups
- Move flood throttle check so we don't throttle ourselves
2010-01-29 13:53:14 +00:00
zzz
81664bc776 - Don't update unused lease fail stats 2010-01-29 13:47:50 +00:00
zzz
6d60a6f833 - Don't store over client tunnels to pre-0.7.10 floodfills 2010-01-29 13:42:42 +00:00
zzz
4186894a39 * build.xml: Add a debian-source target
* Startup: Disable browser launch for debian daemon
2010-01-29 13:41:40 +00:00
walking
cfeafacd07 update the pos 2010-01-29 09:26:02 +00:00
dev
9c2edf5c6a update history 2010-01-28 20:06:16 +00:00
dev
72396f0f96 merge of '3679ca64eea825719eb0d26b285091a9e81107f3'
and '36fc8877438b0f8fa6220cd52459497af5a2eed6'
2010-01-28 20:05:12 +00:00
dev
45388b0d48 added an getTargetAddresses(transportStyle) method to the RouterInfo structure 2010-01-28 20:05:03 +00:00
zzz
a8ae36c403 fixup 2010-01-26 20:05:03 +00:00
zzz
164b39d8df * I2NP: Various cleanup and bulletproofing 2010-01-26 19:59:39 +00:00
zzz
ccc95087a1 shrink the stats.jsp dropdown 2010-01-26 19:56:36 +00:00
zzz
b97f4f8bd7 try to silence log errors at shutdown 2010-01-26 19:53:25 +00:00
zzz
76c1f47b20 * Profiles: Fix lack of profiles at router startup, especially for new routers 2010-01-26 19:52:06 +00:00
zzz
ce74e49236 * Clock: Don't refuse to update because of peer skew the first time 2010-01-26 19:49:35 +00:00
zzz
977d39aeb1 minor license updates 2010-01-26 19:49:21 +00:00
zzz
a821ea2752 take non-linux stuff out of debian jbigi.jar 2010-01-26 16:25:03 +00:00
zzz
b97197c0fa * Debian: Fixup, update, enhance dream's scripts
* build.xml: Speed up sponge's distclean additions
2010-01-26 15:21:41 +00:00
zzz
474691927a fix date 2010-01-24 15:41:33 +00:00
zzz
81dcbedd17 * Transport clock skews:
- Store and report UDP clock skews even for large values, so
        a badly skewed local clock will be reported to the console
      - Don't shitlist for NTCP clock skew if we don't know what time it is
      - If NTP hasn't worked yet, have NTCP or SSU update the clock one time
      - Include failed clock skew in NTCP skew vector if there aren't many connections
      - Don't include NTCP clock skews for non-established connections
      - Fix framed clock skew frame size
      - Report framed clock skew even if for only one peer, if NTP hasn't worked yet
      - Don't log RRD errors after clock adjustment
      - Reduce min skew for console warning to 30s (was 45s)
      - More Java 5 cleanups
2010-01-24 15:38:44 +00:00
zzz
4f5cfdee57 adjust welt reseed hostname 2010-01-24 15:35:02 +00:00
zzz
2c7725a8e4 cleanups 2010-01-24 15:34:40 +00:00
zzz
0ba6482da5 -1 2010-01-24 02:42:06 +00:00
zzz
4c1fd67925 propagate from branch 'i2p.i2p.zzz.test' (head 9b243b031d937eaefcd4c15ae61bb4fa280d78f3)
to branch 'i2p.i2p' (head 9383c447b12abf45f80bd0059f719acfce4c70a3)
2010-01-24 02:37:55 +00:00
zzz
25683cc0de merge of '338745763da1ce77c8adc9f889449dc14451f3fb'
and 'ba40565ead71f8ce02500978ca95ca90340a294d'
2010-01-24 02:37:21 +00:00
zzz
087fd5a909 * NetDb:
- Move stat initialization, reduce number of rates
      - Add basic DOS prevention by not flooding if stores are too-frequent
2010-01-24 02:36:42 +00:00
zzz
fdfbab850a minor cleanups 2010-01-24 02:16:36 +00:00
zzz
f1c50b7fc3 * Clock:
- Don't let a client update the router clock
      - Restore and enhance vanished clock error log message
2010-01-24 02:14:39 +00:00
zzz
959bf4a7f4 limit max graph size 2010-01-24 02:11:55 +00:00
zzz
5dda915467 * Startup:
- Enable multiple parallel job runners much sooner to speed startup
      - Rearrange the startup order to get the long jobs started sooner
      - Don't allow the netDb readin job to clog the job queue
2010-01-23 19:12:37 +00:00
zzz
66d8fd6c2a * ProfileOrganizer:
- Limit High Cap to 75 max
      - Reduce max lock wait time
      - More cleanup
2010-01-23 03:40:56 +00:00
forget
06efe306c3 Deutsch eepsite help text updated to the latest version by zzz (October'2009). Fixed i2host.i2p url typo. 2010-01-22 17:04:59 +00:00
dev
15d1b005f5 merge of '120e01fdee48c2f8652e8314f3dcfb5655a3b7b1'
and 'e30d2f11dde010812b8a5607e5407e37d745700d'
2010-01-22 15:27:01 +00:00
zzz
7efab75c3c 0.7.10 2010-01-21 19:44:49 +00:00
zzz
a9e4248c93 Increase ff count; -6 2010-01-21 14:22:32 +00:00
zzz
5338dc5540 * Properties: Don't play games with \r and \n on load/save,
it was causing fatal issues on DOS if your username started
      with r or n
2010-01-21 14:19:38 +00:00
zzz
09d3dc8e90 * Logs: Don't be quite so noisy in the wrapper log if we
can't open the router log
2010-01-21 14:18:31 +00:00
zzz
3bf95e566c * I2PTunnelServer: Fix bug preventing connection retries
at startup from working
2010-01-21 14:17:37 +00:00
zzz
958a5a3c4e * eepget.bat: Add to pkg 2010-01-21 14:17:10 +00:00
forget
7b48f6387f build.xml tweaks for batch copying the eepsite.help 2010-01-21 13:22:15 +00:00
forget
fcd2cdb136 merge of '4755aa75bada4925580e70471d2cbe82d52f4e1e'
and 'af16732f69734b702b887071df3348e77d3c7c97'
2010-01-21 12:15:43 +00:00
forget
6b59356bc5 disapproval of revision 'df747c3515cd167431e6e003a732943e35aef79d' 2010-01-21 12:14:11 +00:00
z3d
1c7f098d9b Add missing index_na.html to our eepsite stash. 2010-01-21 11:46:52 +00:00
forget
103c15f000 Russian translation updated to dr|z3d's template, links to the Russian page moved to the alphabetically sorted position 2010-01-21 08:53:31 +00:00
forget
0fd55f8b07 Added: missing non-translated welcome page from dr|z3d's template. 2010-01-21 08:50:54 +00:00
forget
511c1e7b9d Re-added: docroot location on Windows (from October'2009 version by zzz) 2010-01-21 08:50:36 +00:00
z3d
7df3bde2ce Add Russian to the eepsite index; prettify the Russian index with the new css. Minor tweaks to the css. 2010-01-21 08:18:55 +00:00
z3d
25e6b6e6c4 Add a note to history.txt re eespite changes. 2010-01-21 08:00:37 +00:00
z3d
cb81f2c9ba Updated eepsite indexes with the new layout + pagetemplate.html 2010-01-21 07:46:03 +00:00
z3d
6c25f0fd16 Build.xml mods to accomodate new eepsite structure. 2010-01-21 07:21:01 +00:00
z3d
934f3d1814 Move robots.txt to eepsite.help dir; add redirecting index.html 2010-01-21 02:52:04 +00:00
z3d
e883fd6b1b Let's mirror the actual eepsite contents in the installer.. 2010-01-21 02:48:49 +00:00
z3d
e3b300e978 Add graphical resources to eepsite. 2010-01-21 02:08:55 +00:00
z3d
03a9f69739 Move Russian eepsite index to our new eepsite.help dir. 2010-01-21 00:49:56 +00:00
z3d
be2dca8ee7 merge of '6dbc656c7ca49810cd09d02d8ddafdc9e083d12e'
and 'efdeefc134243f15d893f98dcbe275657fcc807a'
2010-01-19 11:38:49 +00:00
sponge
5c595ef289 * Firewall fix for NTCP, where firewalls will forget a NAT relationship
on a stream... AKA setting keepalive. This should fix the stuck NTCP
      issue that has been bothing zzz for years.
    * Set keepalive on BOB connections too, since this will assist closing
      the connections in the event of a crash on a client.
2010-01-19 08:54:40 +00:00
z3d
d9534e5f23 First stage of eepsite starter page rejig. 2010-01-18 21:13:29 +00:00
forget
00fa3806d8 Russian translation update (Share ratio, HTTP bidir, Add Client, ...) 2010-01-18 19:28:32 +00:00
forget
6c5ef9acdc Added: Russian translation 2010-01-18 19:27:59 +00:00
zzz
2db5914ba0 Save graph settings when changed 2010-01-18 17:39:12 +00:00
zzz
35a0dafb83 * Reseed: Support SSL and proxies 2010-01-18 15:42:50 +00:00
zzz
5f12688a90 * Console: Add a tunnel share ratio estimate 2010-01-18 14:57:03 +00:00
zzz
f8d9af871a javadoc 2010-01-18 14:54:59 +00:00
zzz
08a2b4bbf0 * graphs.jsp: Remove jrobin sig, set lower limit to 0 2010-01-18 14:54:32 +00:00
zzz
27a5793fd0 * configclients.jsp: Fix add-new-client feature
* Translate: Catch empty string
2010-01-18 14:51:39 +00:00
neutron
b1151f82b5 Messages_fr.po update 2010-01-17 21:11:20 +00:00
zzz
b6332f8313 history for prop, -3 2010-01-17 13:50:16 +00:00
zzz
e036cd4332 propagate from branch 'i2p.i2p.zzz.test' (head dc29b32afe515f704985a4f92cda6e28a65ccdc5)
to branch 'i2p.i2p' (head fb38016f22528778128e22269b8f256c8c640466)
2010-01-17 13:42:33 +00:00
zzz
174fedc2e6 - Flood even if the entry was received via a garlic message
- Encrypt stores only if floodfill supports it
2010-01-17 02:45:55 +00:00
zzz
4803e60db4 Limit fast tier to 30 max 2010-01-16 23:23:58 +00:00
zzz
abb62b93e3 store to a different ff after verify fail 2010-01-16 18:59:00 +00:00
zzz
95bb322cd7 Clock: Change a CRIT to an ERROR, lower threshold for changing from 10s to 5s 2010-01-16 18:58:02 +00:00
zzz
670b4033cb Add a small number of ms (0-300) that increases as we approach the expire time.
Since the earliest date functions as a version number,
this will force the floodfill to flood each new version;
otherwise it won't if the earliest time hasn't changed.
2010-01-16 17:06:20 +00:00
zzz
715ae13997 dont log a RI DSM down a client tunnel as an error, just silently drop, as probably the result of a FVSJ 2010-01-16 17:06:01 +00:00
zzz
77b88ab59d * NetDb Stores and Verifies:
- Do LS stores and verifies through client tunnels
        to prevent correlation by the OBEP or FF
      - Encrypt LS stores to prevent snooping by the OBEP
      - Encrypt LS and RI verifies to prevent snooping by the OBEP
      - Extend verify delay and timeout
      - Reenable RI verifies
      - Disallow simultaneous verifies for the same key
      - Don't resend on verify timeout; try a different peer instead
      - Adjust ff selection criteria
2010-01-15 21:37:41 +00:00
zzz
64235bd745 * NetDb Lookups: Don't try to send a RI lookup to itself through a zero-hop tunnel 2010-01-15 15:16:58 +00:00
sponge
0a1960461a Fully clean up I2PTunnel. No more lint issues, should compile 100% clean.
Dropped unused class BufferLogger from I2PTunnel as it is not used anylonger.
2010-01-15 03:32:35 +00:00
sponge
11249657ac Clean up reverse connection ability, remove some annoyingly redundent code.
Place all settings in the console. It works!
2010-01-14 05:45:01 +00:00
zzz
188ac4f730 SSLEepGet 2010-01-13 22:33:43 +00:00
sponge
865116b3f4 merge of '1f636df6ff10db350d6b020b2e06daf842fb23e1'
and '5e5df32501efc3a7548958249e5bd99acf8edd8f'
2010-01-13 14:38:01 +00:00
zzz
9f28c06e9e 0.7.9, and:
* I2CP: Clean up resources on 5-minute leaseset timeout at startup
    * Increase max floodfills to 9 (was 6)
    * Temporarily disable routerInfo floodfill verifies
    * Fix .fr eepsite index css
    * Javdoc tweaks
2010-01-12 18:48:47 +00:00
zzz
3cd6520758 logging and javadoc tweaks 2010-01-10 22:01:00 +00:00
zzz
da1a50bfeb * VersionComparator: Move from TrustedUpdate.java to util 2010-01-10 16:42:21 +00:00
zzz
9ec79f50fa * I2CP: Clean up resources on 5-minute leaseset timeout at startup 2010-01-10 16:38:34 +00:00
sponge
b15392ea85 Insert reverse connection ability into the http server code so that
seedless can start to get worked on. It's disabled by default.
2010-01-10 11:23:20 +00:00
zzz
b8339e72b0 tweaks; include new translated eepsite pages in pkg; -18-rc 2010-01-09 14:26:01 +00:00
forget
6eaec7fd44 Russian translation update 2010-01-09 03:01:04 +00:00
forget
9e8f2ce771 Russian translation: Router console (969/969), router help page, eepsite help page 2010-01-09 02:58:49 +00:00
forget
e8e6f6f531 Tagged missing strings. 2010-01-08 15:57:48 +00:00
forget
f16ba8ee06 Tagged missing strings. Retagged (merged) couple strings to have 1 string per sentence instead of translating them chunk by chunk while their internal punctuation marks were outside of the translation scope. 2010-01-08 15:46:22 +00:00
zzz
76f11859b2 hide add button when editing 2010-01-06 21:33:53 +00:00
zzz
5be21a19db support add, delete,edit of clients 2010-01-06 21:24:08 +00:00
zzz
043359dd40 propagate from branch 'i2p.i2p' (head dbcd208a02bbecfe924e13a7d71297ece3f01ef3)
to branch 'i2p.i2p.zzz.test' (head 9eee20312852c80ca6c8e079174578a335edbe6d)
2010-01-06 17:16:18 +00:00
zzz
1b95b00b44 prevent more than one zero-hop tunnel in a leaseset 2010-01-06 17:16:00 +00:00
zzz
eaaf6af31d javadoc and logging tweaks; bring back i2ptunnel link to summary bar 2010-01-06 14:52:53 +00:00
walking
d8d50aaf41 Snark font color fix 2010-01-03 14:12:48 +00:00
sponge
5fcddd581e Fix one last stupid mistake in build.xml, my fault. 2010-01-02 22:58:50 +00:00
walking
f1a9613a92 merge of '4259744a4e2a56c50c62c34ecc3340120b48a427'
and 'd548b2a3c95f98dd3296cdd891e03e7c2936e61e'
2010-01-02 16:55:58 +00:00
walking
a2ce10759c po update 2010-01-02 16:55:15 +00:00
sponge
5065aec773 Fix NB 6.8 goofyness... 'till ant 1.7.1 or > is needed, stay with NB 6.5,
as the newer ones place a check for 1.7.1. We require 1.7.0
2010-01-02 14:59:50 +00:00
sponge
25fc64933a Fix build.xml target for justBOB and fix Main build.xml so that it actually
deletes backup files and add a few extra types that should be commonly 
needed... atleast by me.
2010-01-02 14:34:20 +00:00
forget
bbdd54efc8 Russian translation: Error pages (9/9) 2010-01-02 07:57:03 +00:00
forget
92597baab9 Russian translation updated: I2PTunnel (138/138) 2010-01-02 07:56:35 +00:00
forget
62786dcc09 Tagged couple of messages required for error pages (previously marked as fixme's) 2010-01-02 07:49:42 +00:00
walking
c012e5bf17 tagging and translation 2010-01-02 05:43:50 +00:00
zzz
5ed29b6c27 laptop mode 2010-01-02 02:46:23 +00:00
zzz
2d5decd943 save refresh setting 2010-01-02 02:43:18 +00:00
zzz
9d167dc83a path fix 2010-01-02 02:40:58 +00:00
zzz
afe8394658 optimize URL encoder 2010-01-02 02:40:12 +00:00
zzz
72db6d1a08 alignment fix 2010-01-02 02:39:24 +00:00
zzz
9d0e300924 css update for readability 2010-01-02 02:38:35 +00:00
sponge
4f548b7b27 Added a target to generate a stand-alone BOB jar file. 2010-01-01 21:28:28 +00:00
forget
cbd50372e4 Fixed: braceless if (where it proved to be harmful) 2010-01-01 17:33:55 +00:00
zzz
3caee8bc71 i2ptunnel java tagging and fixups 2010-01-01 14:58:21 +00:00
walking
6c64faf0ba translation 2010-01-01 14:31:06 +00:00
forget
65290f1ed7 Russian translation update/reworded 2009-12-31 21:00:17 +00:00
walking
498af5d203 i2ptunnel\jsp tagging and translation 2009-12-31 13:10:33 +00:00
zzz
883b53de0a cleanups, javadoc 2009-12-30 22:38:37 +00:00
zzz
cefc1f130d * NetDb: Fix exploration by adding a null hash to mean
"don't give me floodfills"
    * PeerSelector: Downgrade floodfills with high fail rate
2009-12-30 22:36:53 +00:00
zzz
b2a137c5bc make BuildResponseRecord static 2009-12-30 22:33:26 +00:00
zzz
62f056f884 remove more unused logs 2009-12-30 22:28:07 +00:00
zzz
3944ea53d2 make the message box big enough that we dont need a scrollbar 2009-12-30 22:26:36 +00:00
zzz
d372ea753f fallback to external socket 2009-12-30 22:26:02 +00:00
zzz
2528cd205d javadoc 2009-12-30 22:25:34 +00:00
zzz
afd54fc212 logs.jsp tweak 2009-12-30 22:25:21 +00:00
walking
8e7a9fc513 update translation 2009-12-27 05:43:25 +00:00
zzz
acb75f4212 oops 2009-12-26 20:37:05 +00:00
zzz
c40b56c19d -12 2009-12-26 20:28:11 +00:00
zzz
98027a06ec javadoc 2009-12-26 20:26:47 +00:00
zzz
d92dfec1bf * UDP: Bid lower than NTCP when we need introducers and don't
have enough; was preventing firewalled routers from
      being reachable
2009-12-26 20:25:32 +00:00
zzz
72a588bfbf * Tunnels
- More code to detect improper reuse of cached objects
        after release
      - Don't pass a msg with a failed IV on to
        the FragmentHandler at the OBEP
      - More cleanups and comments
2009-12-26 20:20:11 +00:00
zzz
213bc4bb71 - Prevent release of TunnelDataMessage cached ByteArray,
as it may be reused if retried in another transport;
        a nasty bug causing corrupt messages
      - Lots of code to detect improper reuse of cached objects
        after release
2009-12-26 20:12:43 +00:00
zzz
1a01aa0ae4 - Code to detect improper reuse of cached objects
after release
      - Prevent race with released resources in UDP OutboundMessageState;
        a nasty bug causing corrupt messages
      - More cleanups and comments
2009-12-26 20:05:41 +00:00
zzz
0b0e3fffe4 various cleanups, javadocs, logging 2009-12-26 20:00:47 +00:00
zzz
1fc32c5e6f more logs.jsp tagging 2009-12-26 19:54:27 +00:00
walking
ba9f05ca06 translation update 2009-12-26 09:55:16 +00:00
zzz
629d12ade1 * Tunnels:
- Do RED dropping before the IBGW fragmenter, not after
      - Change batch time to 250ms for IBGWs (was 100ms)
      - Change batch time to 150ms for exploratory OBGWs (was 100ms)
      - Start a new message in the fragmenter if almost full
      - Fix a major, longstanding synchronization bug in the FragmentHandler
        which led to corrupt messages at the endpoints
      - More cleanups and comments
2009-12-22 15:08:10 +00:00
zzz
08929752a6 move SubmitMessageHistoryJob to test 2009-12-22 15:02:28 +00:00
zzz
aaa5b4ca86 oops 2009-12-20 15:05:58 +00:00
zzz
8d7e84494b -10 2009-12-20 15:00:19 +00:00
zzz
99df95697a merge of '5cbdacfbeb8f09f9ac497016e429eaf6fe7225c6'
and 'dae5a2b76e24fc3215d46d5b96ea0f547c83f63c'
2009-12-20 14:52:57 +00:00
zzz
a877b21839 more comments and cleanup 2009-12-20 14:50:41 +00:00
forget
3f267693d2 Russian translation update/reworded: I2PSnark, SusiDNS 2009-12-20 07:11:39 +00:00
zzz
30b7dbf1f7 Tunnel fragmenter cleanup, prep for enhancements 2009-12-19 22:20:58 +00:00
forget
f32d162b62 Russian translation update: SusiDNS (83/83) 2009-12-19 18:23:18 +00:00
forget
126fa320e5 susidns UTF-8 fixes for POST requests (yep, blame tagged 'action' parameters) 2009-12-19 18:16:28 +00:00
zzz
ecae0b055d schedule the outbound rather than sleep the thread for 3 seconds 2009-12-19 18:15:21 +00:00
zzz
9bf22fb0d3 stats.jsp tagging 2009-12-19 17:41:47 +00:00
zzz
2a1d358141 * Profile, DBHistory:
- Tweak the rate periods
      - Add a global fail rate stat
      - Increase the HashMap sizes
2009-12-19 17:10:39 +00:00
zzz
579b450029 clean up context usage 2009-12-19 16:56:38 +00:00
zzz
72eafe0920 * Tunnels: Reduce the drop probability for TunnelBuildMessages at the OBEP 2009-12-19 16:54:59 +00:00
zzz
f226392c9d static access fix 2009-12-19 16:53:49 +00:00
zzz
2cd5c209f5 unused cleanup 2009-12-19 16:52:49 +00:00
zzz
f0d444b32e add to javadoc and adjust logging 2009-12-19 16:52:18 +00:00
zzz
4baff9fbab * Router: Move some more threads to I2PAppThread so an OOM won't crash the router 2009-12-19 16:49:55 +00:00
zzz
8e656427d8 * Console:
- Fix status to show a disconnected network error rather than
        clock skew or UDP error when disconnected
      - Use peer clock skew rather than clock offset for determining
        whether to display clock skew error, i.e. display what matters
    * Transport: Rework peer clock skew method to always return a value
      by falling back to router clock offset;
      Fix possible AIOOBE and divide by zero; remove logging;
      reduce min number of peers
2009-12-19 16:47:18 +00:00
zzz
aaa7302e80 clarify table headings 2009-12-19 16:40:57 +00:00
zzz
33407fd5be reduce delays (cuts 10s from router startup 2009-12-19 16:39:50 +00:00
zzz
513b93f789 no room for cows 2009-12-19 16:39:06 +00:00
zzz
08e54c515e add isRouterContext() method 2009-12-19 16:37:44 +00:00
zzz
55682810b1 doc updates 2009-12-19 16:35:15 +00:00
walking
ec893d09d0 as promised. translation done. Snark still needs review. 2009-12-18 08:27:17 +00:00
zzz
f9b745a671 * Log:
- Close old file on rotate
      - Buffer writes
      - Write in UTF-8
2009-12-18 00:04:16 +00:00
zzz
43b71a263c * Tunnel building:
- Increase timeout to 13s (was 10s)
      - Fix tunnel.buildReplyTooSlow stat
      - Tweak logging
      - Prioritize expl. builds over client builds
      - Code cleanups
2009-12-17 23:45:20 +00:00
zzz
5c4672d1e3 drop another unused class 2009-12-17 15:49:17 +00:00
zzz
7ca8e0c3a1 fix spacing in update section 2009-12-17 14:02:02 +00:00
zzz
b530316850 * I2CP:
- Move client-side writes to their own thread
      - Reenable InternalSockets
2009-12-17 01:05:29 +00:00
zzz
fa92beae5a more cleanup and tagging; remove untranslatable button images; add button css 2009-12-16 17:29:28 +00:00
zzz
f58f703ecb add some newlines to the source 2009-12-16 17:26:49 +00:00
zzz
6b83fc6b3b InNetMessagePool cleanup 2009-12-16 17:25:09 +00:00
zzz
cdb390f7ce fix bundle script 2009-12-16 17:23:52 +00:00
zzz
7b1caac9ac cleanup and tag susidns jsps 2009-12-15 17:25:01 +00:00
zzz
cec75fa60e fix i2ptunnel bundles 2009-12-15 01:51:56 +00:00
zzz
eb23306b12 configurable jump list 2009-12-15 01:48:57 +00:00
zzz
43f6813609 snark start/stop fix, action cleanups 2009-12-15 01:47:24 +00:00
zzz
ea36b7b153 susidns UTF-8 fixes 2009-12-15 01:46:10 +00:00
zzz
448ff4d398 better error msg on sud copy fail 2009-12-15 01:45:15 +00:00
zzz
e16227211f remove unused logs 2009-12-15 01:44:20 +00:00
zzz
e07e329c26 Tunnels: static fix, synchronization fix, deprecate setPairedTunnel() 2009-12-15 01:41:43 +00:00
forget
a3d79aaa4e Russian translation: I2PSnark (140/140), SusiDNS (1/1), I2PTunnel (3/3) 2009-12-14 20:15:16 +00:00
zzz
3fa9ae0b82 * Find ResourceBundles in wars
* Fix restart from config.jsp if no wrapper
    * i2psnark: Elaborate popups
2009-12-13 15:47:51 +00:00
dev
7feed50af4 -5 2009-12-13 09:26:10 +00:00
dev
0c0eb5765d merge of '306029c0c1bb9b7d62fcfdaeddd47bff7db82f66'
and 'c14952061dd61ddd6638f0a3655dd818f0a3db8e'
2009-12-13 09:25:09 +00:00
dev
e87ff25ef6 fix NPE 2009-12-13 09:24:25 +00:00
walking
21e09cb0a5 no more 8887 2009-12-13 07:35:30 +00:00
walking
04d54607ae merge of '63c4c4c5586988695f01b6e845851bad2196b89a'
and 'db28ef1a2085d0585cc3606f1e614467913f758b'
2009-12-13 06:39:08 +00:00
walking
ad8bfbdaab merge of 'afee8fe3ed03c61266ad369b5ce5408382948977'
and 'cec49ea3b0b9120ba6e58435852fb18c06912c55'
2009-12-13 06:39:05 +00:00
walking
aca815c4aa snark rough translation (i am not a bt guy, so need review and refine) 2009-12-13 06:38:39 +00:00
russiansponsor
24683c19a4 Added messages_ru.po with 100% fuzzy translations. Awaiting review by native. 2009-12-12 18:18:46 +00:00
dev
6b8dffc401 -4 2009-12-12 17:51:01 +00:00
dev
c4bb84058a sort peers per country 2009-12-12 17:49:54 +00:00
zzz
c3dc76e35f disable internal sockets until I can fix the borkenness 2009-12-12 01:36:57 +00:00
zzz
993fa5c210 fix all summary bar relative links 2009-12-11 19:03:30 +00:00
zzz
1cec793217 add missing file, prop history, -2 2009-12-11 18:26:53 +00:00
zzz
6029e1a291 * Fragmenter: Pull the new comments, new stats, and
debug log fix from i2p.i2p.zzz.batch in - but not the
      batching mods, which need a fresh look.
2009-12-11 18:00:34 +00:00
zzz
7cc75c0cb9 html fix 2009-12-11 00:42:25 +00:00
zzz
e5248b09ab add 2-param method, tag the java messages, fix the buttons, clean up add and create forms 2009-12-10 18:08:50 +00:00
zzz
c39f047703 pretty much the last of the tags 2009-12-10 14:52:09 +00:00
zzz
4562254862 propagate from branch 'i2p.i2p' (head f672021bb9871a728005be3bd9581710738b9e5f)
to branch 'i2p.i2p.zzz.test' (head e115e218dbb666839e69fa1e1ba7378554b9874f)
2009-12-10 13:34:05 +00:00
zzz
8116d88aaf translation build fixups 2009-12-10 02:12:18 +00:00
zzz
14362630d7 translation support 2009-12-10 01:54:49 +00:00
zzz
9af796a10a translation support 2009-12-10 01:06:55 +00:00
zzz
eeb884e8ce more tags 2009-12-09 23:36:18 +00:00
zzz
02baf905c6 more tagging 2009-12-09 21:22:06 +00:00
zzz
df7029d2c2 translation support and initial tagging 2009-12-09 20:54:10 +00:00
zzz
c22b7568b1 * Translation: Move code from routerconsole to core,
to support translation of other webapps
2009-12-09 14:07:16 +00:00
walking
73537d27d0 bump as requested 2009-12-08 15:27:14 +00:00
walking
449d7ab589 typo 2009-12-08 14:53:25 +00:00
zzz
0ddef91e16 more last-minute tweaks 2009-12-08 13:33:42 +00:00
zzz
b205af5a0d 0.7.8 2009-12-08 12:22:56 +00:00
zzz
1e32170df2 move hosts.txt; do distclean in apps/jetty 2009-12-08 01:20:13 +00:00
zzz
f446a5f1fc * Misc. cleanups after review, prep for release 2009-12-08 00:41:58 +00:00
zzz
fb21fb25ee * I2PTunnel:
- Switch all I2PThreads to I2PAppThreads
      - Run an InternalSocket as well for the HTTP Proxy
    * EepGet: Use InternalSocket
    * Console: Change "depth" to "length"
2009-12-07 21:25:27 +00:00
zzz
deae0e8856 truncate the history in the updater 2009-12-07 21:24:03 +00:00
zzz
1cd54dc12e * netdb.jsp: Fix bug caused by XSS fix
* Translations: drop ru until after release
2009-12-06 21:42:28 +00:00
zzz
8ebc8bd209 merge of '07a757695fb1dc6eb2cfda52c8fc38aee4e61f53'
and 'a85053bedf64d2793ad1f55f396390baf09edcc1'
2009-12-06 21:35:02 +00:00
russiansponsor
9d11866f86 Removed Russian .po file. A native Russian speaker is working
on a translation of the router console for the next version 
of I2P. Update the readme files to include a Russian flag.
2009-12-06 21:15:12 +00:00
zzz
2c456c291a remove jsps from war 2009-12-06 17:44:53 +00:00
zzz
c5b3c2f430 add restart msg as requested by dr|z3d 2009-12-06 15:17:47 +00:00
zzz
e46e747ac0 add the anchor 2009-12-06 15:16:52 +00:00
zzz
e1a88c9426 drop 6 unused classes 2009-12-06 15:07:03 +00:00
echelon
23d3c33a12 Update to german console translation 2009-12-06 11:49:43 +00:00
russiansponsor
ec8130f443 Improved readme_ru.html translation.
All strings in messages_ru.po translated roughly.
A few words in messages_ru.po edited for excessive length.
2009-12-06 03:54:21 +00:00
echelon
4b7aeb8418 update to german translation, need more work 2009-12-05 23:21:29 +00:00
echelon
18a0f01f8b corrected typo 2009-12-05 22:15:05 +00:00
echelon
df2e639692 first rough translation into german 2009-12-05 20:41:20 +00:00
zzz
708b3a662c * Build: Fix poupdate dependency
* Console: Add Russian option
2009-12-05 17:19:23 +00:00
zzz
4fee7844f8 merge of 'd34b6676e413f6e88f9e145f8ddde79a66ce6bb1'
and 'da507e67b02527a43e8cca4b5b20c2de18a3142c'
2009-12-05 17:06:34 +00:00
russiansponsor
891416e6b9 Added Russian localization files 2009-12-05 16:47:02 +00:00
sponge
978cd2c484 * BOB: fix a critical bug causing ghosts on probes and remove unused code. 2009-12-05 13:26:40 +00:00
neutron
c88c905926 rev 2009-12-04 21:27:59 +00:00
zzz
bda4eb830e prevent accept() hang on internal socket 2009-12-04 11:16:43 +00:00
zzz
f5c1acc749 Fix potential XSS holes 2009-12-04 00:27:05 +00:00
zzz
c4e6148b9f config cleanup, more HTML transitional fixes 2009-12-04 00:22:46 +00:00
zzz
43029de2f3 point to translated pages on www.i2p2.i2p 2009-12-04 00:22:12 +00:00
zzz
7262c014c0 * I2CP: Implement an internal "socket" class that
allows clients in the same JVM to connect to the
      router without going through the kernel
2009-12-04 00:20:43 +00:00
zzz
9f7bd99051 fix popup based on torrent type 2009-12-02 16:50:42 +00:00
zzz
9e4f04cc18 fix exception text 2009-12-02 16:50:15 +00:00
neutron
454b2c8941 An updated (yet incomplete) version of messages_fr.po 2009-11-30 20:46:23 +00:00
zzz
4c812c7bff * HTTP Proxy: Don't send proxy.i2p to the naming service,
it was making the error pages load slowly
2009-11-29 18:49:28 +00:00
zzz
f95b5324e0 profiles.jsp: Hide non-ff from ff table 2009-11-29 18:48:03 +00:00
zzz
64ee1b313b Comment out unused stuff better 2009-11-29 18:47:34 +00:00
zzz
1ca651e803 Fix an error message 2009-11-29 18:47:12 +00:00
zzz
f3a88398f2 Fix the default inbound burst 2009-11-29 18:46:48 +00:00
zzz
412d641eb6 fix pathspec 2009-11-29 18:40:20 +00:00
zzz
d7d058e772 addressbook servlet cleanup 2009-11-29 17:58:24 +00:00
sponge
278b917494 net.i2p.router.transport.udp deadwood code cleanup.
documented rare NPE in InboundEstablishState.java.
2009-11-29 15:02:50 +00:00
zzz
4b6989ef7b * Addressbook, susidns: Rework addressbook into a
HttpServlet, so susidns can kick it when the subscription
      list changes
2009-11-28 17:08:02 +00:00
zzz
c10ea84ade * NamingServices
- Move default reverseLookup to base class
      - Deprecate unused services
2009-11-28 14:37:07 +00:00
sponge
0642fa8093 * Improvement to BOB's TCPio to hopefully lower load average. It seems
to be helping a little when stress-tested with Robert.
2009-11-28 13:53:34 +00:00
zzz
2db7c2bdd8 new 2009-11-28 13:38:35 +00:00
zzz
8682e7deb5 cache the hash of the Hash 2009-11-27 16:29:15 +00:00
zzz
ea0747171f * NetDb:
- Switch from ArrayList to ConcurrentHashSet in
        KBucketImpl to reduce chance of deadlock;
        remove periodic shuffling of the bucket,
        needs to be addressed elsewhere
2009-11-27 14:39:53 +00:00
zzz
13349777ad propagate from branch 'i2p.i2p' (head f42d02067d4fb58b86ffb79222a285f26c3a2628)
to branch 'i2p.i2p.zzz.test' (head 2ceb319557032e54cc8ace070515c6d540e0a7a4)
2009-11-27 13:26:52 +00:00
zzz
ab0a5a06af add basic no-webapp handler 2009-11-27 13:26:38 +00:00
z3d
6371f66677 Midnight console theme tweaks. 2009-11-27 12:03:56 +00:00
zzz
105524d9c0 remove another 8887 reference 2009-11-24 20:22:31 +00:00
zzz
95e0492b32 * Profiles: Record successes in the DB fail rate
too, so we can calculate a percentage
    * profiles.jsp:
      - Change fail rate from count to percent
      - Hide standard profiles by default
2009-11-24 20:20:30 +00:00
zzz
234c084c2a * OrderedProperties: Vastly implify, use in i2psnark 2009-11-24 20:15:29 +00:00
zzz
94faf74aa4 * Streaming:
- When an "immediate" ack is requested, do it within
        250 ms (was 2000)
      - Request immediate acks when < 1/3 of window remains,
        or when < 3 packets remain in window,
        and every 8 packets (was when < 2 packets in window remain)
      - Change requested delay to RTT/2 (was RTO/2)
      - Log cleanup and javadoc
2009-11-24 20:12:27 +00:00
zzz
e78dd1fdc3 remove unused Logs from DataStructures 2009-11-24 20:08:58 +00:00
zzz
38045d876d fix paths so poedit source viewer works 2009-11-22 13:07:34 +00:00
zzz
8433724452 * Netdb Floodfill rework part 4 of N: Search closest-to-the-key 2009-11-21 13:50:39 +00:00
zzz
e9f9e0dabb - Adjust response time limit 2009-11-21 13:47:51 +00:00
zzz
6bdf750c19 javadoc 2009-11-21 13:45:40 +00:00
zzz
647a09b5b9 - Put closest-to-the-key in explore don't-include-list
- Use facade's peer selector for exploration rather than
        instantiating a new one
2009-11-21 13:41:48 +00:00
zzz
6144bfb437 Comment out test code 2009-11-21 13:35:52 +00:00
zzz
88dbd7710a * Routerconsole build: rename include files so they aren't
compiled and bundled separately (~15KB)
2009-11-21 13:33:57 +00:00
zzz
26a71232f0 add popups on flags 2009-11-21 13:32:32 +00:00
zzz
f58a1768b9 Nov 17 09 geoip 2009-11-21 02:14:58 +00:00
dev
125e6581e0 moved the file to the i2p.scripts branch 2009-11-20 22:30:03 +00:00
walking
54105086ad pass the first following parameter as PARAS
add messages_{langcode}.only support to only update for a specified language
2009-11-18 16:45:42 +00:00
walking
3674ac2922 rev 2009-11-18 15:08:16 +00:00
walking
18c023e6f7 merge of '6c2ef00502207c28f02c90cef00b19d75f09d9a4'
and 'de35fdcdc8943537c71571c5c9d8320a24768cdf'
2009-11-18 15:05:14 +00:00
zzz
312ba2599f - Note failed floods in the profile
- Reduce max flood
2009-11-18 14:24:38 +00:00
zzz
746dc6f884 - Adjust criteria for following DSRM 2009-11-18 14:20:43 +00:00
zzz
edd4d4c114 - Floodfill rework part 3 of N: Send closest-to-the-key in DSRM replies 2009-11-18 14:18:16 +00:00
zzz
56e0c3e047 * Build: Don't update the po files by default, add new
target "poupdate" to do that.
2009-11-18 14:16:36 +00:00
walking
1e83d1b304 small revision 2009-11-18 10:01:20 +00:00
z3d
74aa84b183 merge of '369305db0cea95e8bd0990de7462340cac75a1f9'
and 'f58179e91c798b6d06faf4fbcf2ee6bf106475de'
2009-11-17 19:59:43 +00:00
z3d
168c213288 Some string mods and tagging and so forth; "midnight" console theme futzage. 2009-11-17 19:55:51 +00:00
neutron
d268a3852c A first incomplete French version of the router console translation file messages_fr.po 2009-11-16 21:36:46 +00:00
dev
01e87438c3 merge of '18a7dd067a56c2552cf30f4a045628f91c360c80'
and 'd6b8e99c4aee82652446fe759f45f27e0da9fbc0'
2009-11-16 19:45:10 +00:00
dev
060f4e6632 disapproval of revision 'd07b92fb678f4dc87b62eaaeab002820b25583b6' 2009-11-16 19:44:54 +00:00
z3d
3df5540a97 Tweaks to client.config tunnel descriptors; more "midnight" theme adjustments. 2009-11-16 19:15:15 +00:00
z3d
30dec5b9f5 merge of '3d1905aaefa398767d0df1945eaaf6d923767405'
and 'd07b92fb678f4dc87b62eaaeab002820b25583b6'
2009-11-16 11:30:19 +00:00
HungryHobo
43b437fc58 Initial checkin of apps/i2pbote/** 2009-11-16 07:28:14 +00:00
zzz
8e889cd292 bye TPB 2009-11-15 23:50:45 +00:00
zzz
eceac6def0 Shitlist: Fix bug from two checkins ago, all were forever 2009-11-15 23:47:01 +00:00
zzz
1e3d6776aa Take two test scripts out of the installer 2009-11-15 23:45:39 +00:00
zzz
784ca67ddf Move class to net.i2p.addressbook 2009-11-15 23:44:20 +00:00
neutron
0f6b49cc31 A new French version of eepsite_index.html 2009-11-15 12:25:03 +00:00
walking
8cede2a2b2 term: Adresses => Transports 2009-11-15 11:00:14 +00:00
walking
38ed04bbd8 trans 2009-11-15 06:02:07 +00:00
zzz
c393e70ca9 * HTTP Proxy:
- Add support for error page translations
      - Add support for external pages for all errors
      - Fix lack of \r in error page headers
      - HTML transitional fixes
      - Cleanups
2009-11-14 15:05:44 +00:00
zzz
1c25c0f408 * UDP PeerTestManager: Throw in some synchronization to try to fix stuck tests 2009-11-14 15:00:28 +00:00
walking
b7ebce48ee the only tool that once successfully resume a download from an eepproxy ;-) 2009-11-13 05:41:14 +00:00
walking
d6814a0489 merge of '177b5d58442cfa7d68c6a9adce7f40e681c6cd41'
and 'd1762684a780fa61d199e583bd9442b1e2a2af6e'
2009-11-13 05:28:51 +00:00
z3d
6f24c74f8c More "midnight" theme finessing. 2009-11-12 19:07:05 +00:00
walking
d8389dcc46 stop duplicating, use "source bundle-messages.sh" 2009-11-12 14:07:15 +00:00
walking
9f939553ee rev 2009-11-12 14:04:40 +00:00
z3d
529988f394 merge of '1dad9833f19c3370d3f1db58bc580c5b8c21c961'
and 'aaedb6e8d35bd3cca935c418a7fdcd2895bf2067'
2009-11-12 13:25:08 +00:00
z3d
9f46aa1e18 Fixes and tweaks for "midnight" console theme. 2009-11-12 11:04:28 +00:00
walking
418c1b6f96 shared tunnels for _(name) 2009-11-12 03:17:33 +00:00
walking
8056fb9502 rev 2009-11-12 03:14:31 +00:00
z3d
ab2e21147f Tweaks to "midnight" console theme. 2009-11-12 00:01:57 +00:00
zzz
6c00bb20b6 * Console: Some colon cleansing
* Shitlist: Move HTML renderer to router console,
      add cause parameter for ease of translation,
      tag all causes
2009-11-11 20:28:13 +00:00
zzz
573ac357d8 ff ranking tweaks so they arent all bad 2009-11-11 20:24:59 +00:00
walking
5b139f9246 more translation and possiblely all has been done. 2009-11-11 15:56:57 +00:00
z3d
76d75b712e Updates to "midnight" console theme. 2009-11-11 09:03:19 +00:00
zzz
8bc2fd7e42 3rd time... 2009-11-10 21:27:01 +00:00
zzz
4533a86712 -15 2009-11-10 20:39:09 +00:00
zzz
a6239e2ce3 merge of '2232dc91d5c2e9f60934f66bc11519f49399cc5b'
and 'a831cd0f05f3dcf5d877ff68b14fef2497cde44a'
2009-11-10 20:14:16 +00:00
zzz
1f8e61f480 verify using closest-to-the-key 2009-11-10 20:11:08 +00:00
zzz
c40f845279 fix good/bad calculation 2009-11-10 19:02:59 +00:00
zzz
aa74962263 * DataHelper: Fix broken byte[] compareTo() used by XORComparator,
was not doing unsigned comparisons!
    * Floodfill rework part 2 of N:
      Store closest to the key, subject to last failed
      lookup and store stats.
    * FloodfillPeerSelector: Use standard XORComparator
      instead of messing with BigInteger
    * FloodfillVerifyStoreJob: Set correct timeout for
      requeued store job
    * KNDF: Rework getPeerTimout() to use 1 day averages,
      and lower the min, max, and multiplication factor.
    * Publish jobs: Lengthen timeout to 90s (was 30s for
      routerinfos and 60s for leasesets)
    * StoreJob: Limit max peer timeout to 15s for direct stores
2009-11-10 18:24:15 +00:00
zzz
42cbd6c12b console tweaks 2009-11-10 14:45:53 +00:00
zzz
ee51f69a5a * Addressbook, NamingService: Allow 516 byte dests
that end with AA but not AAAA, so we can permit
      non-null zero-length certs.
2009-11-10 14:44:40 +00:00
z3d
0fb6e9cf6c Minor tweaks to console_big.css in classic & midnight following feedback from "walking". 2009-11-10 14:16:54 +00:00
zzz
e02845076d * Netdb StoreJob, FloodfillVerifyStoreJob:
- Fix bug where reply selector wasn't registered for
        routerinfo stores, so we didn't get stats, and
        we kept retrying. This also prevented verification
        and profile updates for routerinfo stores.
        This bug was introduced 4 years ago by the change to
        store routerinfos directly.
      - Add dbStoreSuccessful() to profile, and have FVSJ
        call it or dbStoreFailed() as appropriate to give
        credit or blame to the floodfill we stored to.
      - Don't let FVSJ verify using the peer we stored to
2009-11-10 01:24:39 +00:00
zzz
2dc3798116 drop 2 extra lines only in the iframe 2009-11-10 01:23:14 +00:00
z3d
fa252f5e8f Retrofit "dr|z3d" to history.txt for latest updates. 2009-11-09 18:28:01 +00:00
z3d
580b9b450f Add "midnight" theme to the installer manifest; bump to -14. 2009-11-09 18:00:08 +00:00
z3d
f0730cd1c8 Introducing a new console theme, "midnight". Lightweight midnight blue theme, IE compatible. 2009-11-09 17:49:17 +00:00
zzz
b045fb3a45 * FloodOnlySearchJob:
- Fix up field hiding and duplicate overrides
      - Other javadoc and java 5 improvements
2009-11-09 17:23:22 +00:00
z3d
6c64111d7e Further tweaks to console_big.css for the classic theme. 2009-11-09 17:21:24 +00:00
zzz
37a2ccca95 * Streaming: Fix unused resend delay field in the packet header,
it is defined as seconds and we were not dividing by 1000,
      so we were truncating 1000 to one byte which equals 232.
2009-11-09 17:21:17 +00:00
zzz
b4615edfcc * UDP:
- Better handle a test reply from bob with a 0-length IP
      - Add config options for min and max random port
2009-11-09 17:16:51 +00:00
zzz
6019cf8148 * Console:
- Tag tunnel status
2009-11-09 17:15:19 +00:00
zzz
e3d945201b - Add transport table to netdb.jsp 2009-11-09 17:11:20 +00:00
zzz
05b17e5a00 * i2psnark:
- Reject torrents with too many pieces
      - Reject torrents with a single file named *.torrent
      - Increase max piece size to 2MB (was 1MB), but reduce
        max number of connections to lessen ooms
2009-11-09 17:09:53 +00:00
z3d
13b3edfb07 merge of '8c614ff109c2cc345b90363355950ab46989dab8'
and 'e635717562ad75828dfc6ca42abf1f5593d71ba0'
2009-11-09 04:07:51 +00:00
z3d
f61372b2fd Streamlined & tweaked console_big.css for our Chinese friend(s). 2009-11-09 04:07:05 +00:00
walking
f85d8f7060 tag a link in confstathandler
update zh.po
2009-11-08 13:15:48 +00:00
zzz
a0b4b7db86 * Console:
- countries.txt: Convert to mixed case, include in update
      - netdb.jsp: Hide all routers by default, sort and tag country names
      - oldstats.jsp: Move to stats.jsp
      - profiles.jsp: Show new DBH times instead of counts
    * Profiles:
      - Track last good and bad lookup times
        and last good and bad store times,
        to prep for floodfill changes
      - Don't reset last-heard-about at router startup
    * Checklist and Android readme fixups
2009-11-07 19:32:00 +00:00
walking
827a92ef2f bundle-messag windows hack 2009-11-05 13:35:33 +00:00
walking
625d76b914 + --from-code=UTF-8 2009-11-05 02:12:02 +00:00
walking
a1de894b64 zh.po regenerate/rev 2009-11-05 01:06:52 +00:00
zzz
413ab6d7e4 -12 2009-11-04 16:12:59 +00:00
zzz
a3b1c79006 merge of '0d58ec9e2b160029e92a584b0c707ffdf4f25c7e'
and 'd4e270a4df0c8134d7bac1585e30ef8ddef37f85'
2009-11-04 16:06:46 +00:00
zzz
5a7d3ba4c8 move things to installer/resources; fix initial news 2009-11-04 15:36:13 +00:00
zzz
8a1db31184 reduce max msg delay 2009-11-04 12:54:02 +00:00
sponge
5190b2db1f Fixups to Slackware scripts 2009-11-04 10:27:02 +00:00
zzz
820c573476 tags 2009-11-03 20:37:21 +00:00
zzz
ab40454bce reduce the routerinfo expiration a little 2009-11-03 17:38:11 +00:00
walking
b65865b854 tagged "Redraw"
two translation revision
2009-11-03 15:17:14 +00:00
zzz
a5772e62c3 flags 2009-11-02 18:52:42 +00:00
zzz
9976bea03f * Profiles:
- Remove the almost-unused send and receive size RateStats;
        this also reduces the effective time for isActive()
      - Only store DB history on-demand to save space;
        fix up resulting NPEs
2009-11-02 16:50:28 +00:00
zzz
7997aeaca5 adjust the help due to random port 2009-11-02 16:46:07 +00:00
zzz
ba95084d27 bold the transport 2009-11-02 16:45:23 +00:00
zzz
e952e91b54 tagging 2009-11-02 16:45:04 +00:00
zzz
da21c0ddb7 * UDP: Pick a random port on first install or bind failure -
No more port 8887 to prevent easy state-level blocking
2009-11-02 16:43:04 +00:00
zzz
0133711c3b code cleanup 2009-11-02 16:41:01 +00:00
z3d
6eae2cd460 Console_big.css tweaks. 2009-11-01 23:54:55 +00:00
walking
9314eebc4f trans rev 2009-11-01 03:51:07 +00:00
zzz
428cbdce2a * Console:
- More tagging
      - Show user-installed themes on configui.jsp
      - Fix reseed button spacing
    * GraphHelper cleanup
    * Susidns: add link to subscription faq
2009-10-31 18:18:36 +00:00
walking
7594c4383b tagged one more string 2009-10-31 17:01:46 +00:00
walking
e2f6911e9f closed an open <a> tag 2009-10-31 04:09:25 +00:00
zzz
9cdae03069 evict another test class 2009-10-30 17:52:58 +00:00
walking
06946f026e merge of '6416a3499b7666362959e13c5996a3c925a80b60'
and 'd36896148eb8067f68c653029fe60c09564a2bd8'
2009-10-30 14:05:45 +00:00
walking
d43dac5c04 more tagging and trans
term rev [not failing] -> [Standard]
1 string(notice) with link still left in confstats
2009-10-30 14:04:58 +00:00
zzz
b4d83b18fa tag and script fixups 2009-10-29 23:22:51 +00:00
walking
f9424dbd6d tag and trans
convert append(""+""+"") to append().append().append()
2009-10-29 09:03:32 +00:00
zzz
e5212937af * Console:
- Remove limiter status from peers.jsp
      - Fix UPnP status header
2009-10-28 22:12:10 +00:00
zzz
aeb6635e71 * Console:
- Rewrite TrustedUpdate version comparator, use for netdb version table
        so 0.7.10 will be sorted correctly
      - Reduce netdb.jsp memory usage
      - More tagging fixups
      - configclients.jsp fixup for "Web console"
2009-10-28 18:26:50 +00:00
zzz
e94b478317 * NetDb:
- Generate new RI immediately at startup
      - Try again to not publish RI until we have been up a few minutes
2009-10-28 18:18:21 +00:00
walking
88216de42c revise pos. and button names in readme 2009-10-28 16:12:17 +00:00
walking
1fcf707bb2 revise v1 2009-10-28 03:41:41 +00:00
z3d
5101486fe7 Tweak to classic theme, somewhere. 2009-10-27 19:39:45 +00:00
z3d
7ae4d0e981 merge of '54ec7a68eb12d95085a669bc5320e332f98f95b9'
and 'c145f6f7910b49e65fbbd9ab94a06893d620dbba'
2009-10-27 18:30:31 +00:00
z3d
c644c128c0 merge of '41f3b25fb9d92bf586913d80bc8174fd07567236'
and 'aaac66c060e4f5e3892662cb387e4f0bc6b67ce8'
2009-10-27 16:05:00 +00:00
walking
2603f6fe45 summarybar tagging 2009-10-27 13:35:27 +00:00
z3d
957a296ca9 Correct the misalignment of the local destinations list in dark theme. 2009-10-27 12:38:51 +00:00
z3d
e4f44fa1e9 Classic theme override for Chinese and other "big" charactersets (sidepanel). 2009-10-27 12:31:24 +00:00
walking
2b469567bb more tag and more translate 2009-10-27 11:11:51 +00:00
zzz
a2d90eebea * Console:
- Don't save config when checking for updates on configupdate.jsp
      - Rework ConfigRestartBean and tag
      - More tag fixups
      - Add lang=xx for testing
      - Add file for additional tagged strings
2009-10-26 21:48:46 +00:00
zzz
850a8da0a9 propagate from branch 'i2p.i2p.zzz.test' (head 16046dc1b2fd2a8b10de465cf238233f5d6954af)
to branch 'i2p.i2p' (head f222777c65da9e465bbf717582b4384d31848e07)
2009-10-26 15:20:30 +00:00
zzz
ac6d711a99 * Console:
- Add parameterized tag
      - Refactor confignav.jsp to java and tag
      - Start tagging profiles.jsp
2009-10-26 14:24:25 +00:00
zzz
5aa254a178 add comments 2009-10-26 14:18:57 +00:00
walking
ad396adf39 merge of 'a45e1691786f0464f669fdeaa493cf76601879e4'
and 'bc220af9e0a1d5d674d89c215300b311a77e6ab6'
2009-10-26 11:01:58 +00:00
walking
05cce164f7 all tagged all java except :
- summerbar related files since drz is working on it
- string requiring word reordering
- string with link in the middle
- string which looks unusual
- string found not in router console source
update the POs
2009-10-26 10:53:53 +00:00
walking
935b69bc71 Tagged buttons and message on conf- Net,Service,Update,Client
update Translation
2009-10-26 02:21:15 +00:00
dev
61f800999a some more updates to the code_swarm script 2009-10-25 15:52:23 +00:00
dev
9833743eb9 clean up codeswarm script 2009-10-24 16:00:37 +00:00
dev
ac65bc7302 merge of '42bb0b558f03e9a0de9116377c2e229d57da8ef3'
and 'e14fbe535deef3e6b734ad65bfb4ea32b58b85fe'
2009-10-24 15:59:24 +00:00
dev
b36f207bb2 small utility script for codeswarm 2009-10-24 15:59:15 +00:00
walking
e87a7c7bb4 add classic\console_big.css for reference only :)
add tag several missing strings in config.jsp
update the POs.
2009-10-24 12:46:01 +00:00
walking
7e5128bb85 ConfigServices.jsp fix, update the POs 2009-10-24 08:48:06 +00:00
walking
0a178ec35e keep tagging tagging tagging t.. plus updated pos 2009-10-24 06:10:40 +00:00
zzz
a5cd0bdd3f - Rename cssHelper to intl for ease of tagging
- configui.jsp post-prop fixup
2009-10-23 13:55:44 +00:00
zzz
9cbf9d0422 propagate from branch 'i2p.i2p.zzz.test' (head 2baf6dba31abb4ce4b51c8eba75b9338ee7c4998)
to branch 'i2p.i2p' (head ef05271bc6288f9ea7a52c966c8a238c9f4bdfe3)
2009-10-23 13:40:11 +00:00
walking
097a05aab9 static content tagging (not finished yet)|update zh.po 2009-10-23 13:00:38 +00:00
walking
0e5b2598fb Update the POs 2009-10-23 06:24:27 +00:00
walking
4f492e33e6 Tagged ConfigKeyring/ConfigAdv (<input> not touched, Keyring needs word reordering not fully tagged) 2009-10-23 05:32:47 +00:00
walking
1828b2bd17 tagged Configupdate/Tunnels (code inside <input> not touched!) 2009-10-23 05:07:16 +00:00
zzz
0c74e640df * Console:
- Don't hide link to configui.jsp for IE any more
      - Add lang selection on configui.jsp
      - Tag strings in configui.jsp
      - Load console_big.css if lang == zh
      - Add _x() tag for static iniitializers
      - HTML transitional input tags
2009-10-22 22:25:53 +00:00
zzz
ffd2721627 javadoc 2009-10-22 22:22:38 +00:00
zzz
f6ce4cb29f * Update: Better error message when .sud file not found or truncated
http://forum.i2p/viewtopic.php?t=3979
      The bug with the file going to the wrong place was fixed a couple months ago.
2009-10-22 22:21:55 +00:00
zzz
4863ef3360 * Certificate: Fix the (apparently unused) readBytes(byte[], int) method
for a null certificate - http://zzz.i2p/topics/388 - thanks HungryHobo
2009-10-22 22:20:50 +00:00
z3d
9f7807ee10 Classic theme: div.joblog h3 tweak to avoid breakage in logs and jobs pages. 2009-10-22 15:51:33 +00:00
z3d
b2285b0beb merge of '4cf77c9e1533ff7c4920a9d18ace7575a99d0bbc'
and '4e2465fc8dfc40cf276310eb917c3cef184db5cb'
2009-10-22 11:47:26 +00:00
z3d
8e4f4f82a8 UI layout cleanups and finessing. 2009-10-22 11:33:02 +00:00
walking
db2158d4c1 translation revision 2009-10-22 07:42:47 +00:00
z3d
1c461bbeda Catch an errant <hr> in jobs.jsp; "backport" vertical sidebar space savings to classic theme. 2009-10-22 01:29:56 +00:00
z3d
0757f4f309 merge of '14fd58d7e574b7ae755514ce48508d9080b269d8'
and 'b09bd2e70d37e27a7f6e51afa4f1ae2d2298d30c'
2009-10-22 00:49:48 +00:00
z3d
a2f287cdfe Tidyups & more vertical spatial effiencies in the sidebar. 2009-10-22 00:23:17 +00:00
walking
1ef448d518 chinese translation for the zh.po 2009-10-21 17:10:27 +00:00
z3d
f44b1a35bc Sidepanel space efficiencies; "paperclips" for index.jsp links; fix news.xml link. 2009-10-21 16:34:43 +00:00
zzz
26f02a4771 -4 2009-10-20 16:35:13 +00:00
zzz
dc3c730937 propagate from branch 'i2p.i2p.zzz.test' (head efc35e19029b7d92265f25eb024114737b6545e1)
to branch 'i2p.i2p' (head bbf149917e39bdd2f53246c238d440369498ae09)
2009-10-20 16:01:13 +00:00
zzz
77d45e7a3a stub for windows gettext script 2009-10-20 16:00:57 +00:00
zzz
45a59f009b add a common method for title formatting and translation 2009-10-20 12:12:26 +00:00
zzz
dc6d6ead69 fix bundle caching 2009-10-20 11:27:40 +00:00
zzz
27693826a2 summary bar post-refactor fixups 2009-10-19 21:40:14 +00:00
zzz
8a647b42d5 javadoc update 2009-10-19 21:38:37 +00:00
zzz
eba9f3c03b drop msgs expiring too far in the future 2009-10-19 21:37:59 +00:00
zzz
eacf46b367 remove some remnants of the pre-0.6.1.30 tunnel build method 2009-10-19 18:45:39 +00:00
zzz
83cacaad05 * summarynoframe.jsp:
- Refactor to SummaryBarRenderer (saves 100KB)
      - Add translate tags
      - Use context RNG for nonces
      - Transitional HTML style for input tags
2009-10-19 13:49:47 +00:00
zzz
cf10451d14 po script update, dont include java files in war 2009-10-19 13:37:13 +00:00
z3d
44069645df New formatting for news.xml; elliptical UI enhancements. 2009-10-19 12:34:19 +00:00
zzz
4497463778 * Router Console translation infrastructure:
- Persistent lang setting with routerconsole.lang=xx
      - Loading any page with ?lang=xx changes the persistent setting
      - Add a custom Jetty handler to load foo_xx.jsp if it
        exists for language xx. This is for jsp files with lots
        of text in them. Otherwise use inline translate methods.
        Not for included jsps.
      - Add a script to create and update messages_xx.po translation
        files, and create ResourceBundles from them
      - Add class to translate strings from cached ResourceBundles
      - Add translate wrappers to HelperBase, FormHandler, and *Renderer,
        so calls can be made from both jsp and java files
      - Add two example translations on configupdate.jsp - one in
        the jsp itself and one in the helper.
      - This is for strings in routerconsole only. Will be expanded
        to other webapps and the router later.
2009-10-18 14:06:07 +00:00
zzz
10b84418c3 move TunnelPoolManager renderStatusHTML to routerconsole 2009-10-17 23:49:59 +00:00
z3d
fadda4ceec More UI whitespace cleanups and other miscellaneous UI goodness. 2009-10-17 23:34:38 +00:00
zzz
011a32f741 move NetDb renderStatusHTML() to routerconsole 2009-10-17 23:16:53 +00:00
z3d
10bb3c100e Add some link bullet point graphics. 2009-10-17 07:08:36 +00:00
z3d
2738d5851d More UI whitespace removals and optimizations. 2009-10-17 07:04:40 +00:00
zzz
219095404a dont dump the whole JVM if we cant open the log file 2009-10-17 02:22:35 +00:00
zzz
001c361338 MessageHistory cleanups 2009-10-17 02:21:38 +00:00
zzz
e21a172e95 javadoc fix 2009-10-17 02:21:08 +00:00
z3d
4651b7007b Bump to -2. 2009-10-16 20:29:29 +00:00
z3d
5b4be5ba1b merge of '74266b0afe4ef1abef923c8389fb47263b9a39e1'
and '9a62d1aa11b74d835ec795c0a303bf5c2ebc2793'
2009-10-16 20:16:29 +00:00
z3d
9c2c90c0b1 Whitespace removals. 2009-10-16 20:01:18 +00:00
zzz
bdd0c3f961 -1 2009-10-16 15:08:27 +00:00
zzz
b7013361c2 propagate from branch 'i2p.i2p.zzz.test' (head 584fab1afc347099ea2fcbdcafa4a3dc4214d7dc)
to branch 'i2p.i2p' (head eb7f635432246f567a88babf08323105f364c80e)
2009-10-16 14:56:19 +00:00
zzz
f73b3e522b * NetDb: Rework part 1 of N:
- Flood only to those closest to the key
      - Java 5 fixups
2009-10-16 13:50:06 +00:00
zzz
fa6d17a1b8 * ProfileOrganizerRenderer:
- Move to routerconsole
      - Write directly to Writer for speed
2009-10-15 22:42:22 +00:00
z3d
c3e646ca22 Bump to -1, belatedly; more aesthetic nudges. 2009-10-14 17:25:29 +00:00
zzz
fdc9e11fb4 add TPB to i2psnark 2009-10-14 16:52:46 +00:00
zzz
a1ec838282 * oldconsole.jsp: Remove almost all of it, tweaks for tino
* Router: add router.hideFloodfillParticipant option for testing
2009-10-14 16:20:00 +00:00
zzz
7da46517ae slow down the volunteers again 2009-10-14 13:51:48 +00:00
zzz
d8e2939307 post-release cleanup 2009-10-13 14:13:16 +00:00
zzz
8cad72c654 two more test classes out of the lib 2009-10-13 14:12:00 +00:00
z3d
2cfc2bb60d merge of '11e1fae0346ea92d16925d6766a3d161ea7285c7'
and 'ca71a7d5f75cc879cfd2ba742bcc1d9baa6f9099'
2009-10-13 00:09:04 +00:00
z3d
1811e3b9cd Whitespace rationalization; theme enhancements; draft itoopie graphic for proxy errors. 2009-10-12 23:55:21 +00:00
zzz
960cd18d0a 0.7.7 2009-10-12 01:27:29 +00:00
zzz
405b85c4b4 Cleanups after review and prep for release 2009-10-11 22:51:43 +00:00
z3d
92e323df51 merge of 'd203ac237f3507d4d4e4ac35692ac8e1c7afbd2c'
and 'f9fb6fe4c42fe93b267d23014e9277aec85820be'
2009-10-10 15:16:45 +00:00
z3d
3f2c34903d Updated readme_zh.html, thanks to "walking". 2009-10-10 15:13:39 +00:00
zzz
3c260aa333 fix rare ElGamal AIOOBE 2009-10-09 16:00:38 +00:00
zzz
da41f3a93b fix NTCP rate formatting 2009-10-09 15:59:51 +00:00
zzz
aeb711acde merge of 'd14138bee147039ed42a30254eb29e75c42c1ae2'
and 'f513d5843ba7ec1c5fb1de267d196ed59df37018'
2009-10-09 14:12:25 +00:00
z3d
a46ee9a5b2 Increment version to 0.7.6-25. 2009-10-09 14:01:18 +00:00
zzz
088f9558ec fix persistent client key on split directories - thanks user! 2009-10-09 13:56:34 +00:00
zzz
376d61c155 docs 2009-10-09 13:55:15 +00:00
zzz
285a2b92e5 Drop unused ConfigConsole*. Password implementation should merge code into ConfigUI*. 2009-10-09 13:54:51 +00:00
z3d
8939c573ea Update readmes to include pastebin and echelon's software archive; minor
layout tweak for English readme.
2009-10-09 13:52:36 +00:00
z3d
3839d9873a Minor theme updates; lose whitespace in config.jsp; add license for SilkIcons. 2009-10-09 00:45:33 +00:00
zzz
116762ebce doc and eepsite index updates 2009-10-07 17:12:00 +00:00
zzz
7dd8f00e95 remove UDP port number from thread names for better thread dump anonymity 2009-10-07 17:09:53 +00:00
dev
29a3db4b5c merge of '10cb3e6e3bbb0dac3121e53e10232efe27200229'
and 'd5b1ef74ebfbd8e8c1cd1d51c74e6ec542940ca3'
2009-10-07 15:00:17 +00:00
z3d
5d95907996 Near invisible to the naked eye tweak to dark theme; modest aesthetic tweak to debug.jsp, with apologies to zzz. :) 2009-10-05 19:42:36 +00:00
z3d
2f940d01b6 Modify build.xml to remove reference to defCon1. 2009-10-05 11:45:21 +00:00
z3d
517e170b88 Lose the defunct defCon1 theme, remove the rogue i2plogo.png. 2009-10-05 05:03:32 +00:00
z3d
b27fbb9b8e More minor theme embellishments. 2009-10-04 18:02:28 +00:00
zzz
9b97d32ea8 fix snark npe caused by last checkin 2009-10-04 14:06:14 +00:00
zzz
d4f3952a90 merge of 'de249007f709f415ccb2f090ef084b27be21cbec'
and 'e922f8bd0916c3caf7c241cc5950083486a1ef97'
2009-10-04 13:34:13 +00:00
z3d
f7840652ed Flag adjustment for homepage in classic theme. 2009-10-03 18:43:56 +00:00
dev
08634c1ff6 merge of '054daeda4eca6a485cd4de94e3ab4b59c93e3a08'
and 'b0854af170b1973f5dd1fb73c7266f35942cfc41'
2009-10-03 18:12:05 +00:00
dev
dec4205890 * added paste.i2p2.i2p to readme[LANG=EN]
* added paste.i2p2.i2p to readme[LANG=DE]
2009-10-03 18:11:58 +00:00
dev
b49ab59e3b merge of '1e5ca44c3d69e2a7712396e0ea4f43f05a201f14'
and 'afad15f1e34ff7456efc1b53fb8d8b11df49e57e'
2009-10-03 18:07:38 +00:00
dev
7e1171ec9f merge of '6199603651b9fab5b9659f927bce9edfff2221d8'
and 'aff8790819defcbd74113acc5dc7e024daad5462'
2009-10-03 18:07:02 +00:00
dev
3eae787957 merge hosts.txt with i2p.www 2009-10-03 18:06:50 +00:00
z3d
9ecba4fc5e Drop i2psnark.png 2009-10-03 17:48:01 +00:00
z3d
4fb9eef198 Light theme tweaks. 2009-10-03 17:45:01 +00:00
z3d
49ecfd8224 Theme tweaks. 2009-10-03 14:24:28 +00:00
z3d
09a2854b8b Theme stuff and lose excess. 2009-10-03 07:41:57 +00:00
z3d
82976e609f merge of '41b07fbbaf6d101843800351ffbd1ec5628d4667'
and 'd4ad945d65ad61b0d56ec3cfd1d5f03c6d023002'
2009-10-02 16:28:50 +00:00
z3d
b2d6b60300 Make spaces between divs in dark theme more consistent. 2009-10-02 15:41:38 +00:00
zzz
90737493e6 -21-rc 2009-10-02 15:20:50 +00:00
zzz
fe3abc79d6 fix changing opentracker list 2009-10-02 15:12:24 +00:00
zzz
9931112387 * Tunnel IVValidator: Increase size of bloom filter
for high-bw routers (>= 512KBps share bw) to reduce
      false positive rate. Adds 2MB heap for >= 512KBps routers
      and 6MB for >= 1536KBps.
2009-10-02 03:14:16 +00:00
zzz
1cd646afe2 SusiDNS: HTML transitional fixes, might help opera 2009-10-02 03:12:09 +00:00
zzz
0d262d28b7 propagate from branch 'i2p.i2p.zzz.test' (head a6c2e5692419553edb1079eb25feee51bdd0e3fa)
to branch 'i2p.i2p' (head 70c7015adc1e76f29e33788e2e262f0db5fd91a0)
2009-10-01 18:31:44 +00:00
zzz
f33e950780 comment cleanup 2009-10-01 18:22:54 +00:00
zzz
7094489536 fix OCMOSJ SKM NPE 2009-10-01 18:19:02 +00:00
zzz
2dd650df01 propagate from branch 'i2p.i2p.zzz.test3' (head 459a56e53d8d694591071574e87474b5e95d6494)
to branch 'i2p.i2p' (head ffa1aab7aa8e75d75c183fd6f76140f7d840a6ae)
2009-10-01 18:18:23 +00:00
sponge
7e8037979f * fixups to SlackBuilds. requiredbuilder does the wrong thing, and
thinks that java is perl! This isn't really a big deal,
      the file format is simple enough and the requirements are known.
2009-09-21 08:54:41 +00:00
zzz
3a1c042cd2 gcj makefile fixups 2009-09-16 14:51:39 +00:00
zzz
ca81c35b3d static tweaks 2009-09-16 14:50:52 +00:00
zzz
6a2dfff34d one more test class out of the lib 2009-09-16 14:49:12 +00:00
BlubMail
5eccc01de6 merge of '1d77e0a89198e422acfb66d9310fad7b0b290e38'
and '5271eb82ac21ebc1a96dd31c462a14e2aaa0c89e'
2009-09-13 16:33:32 +00:00
mkvore-commit
1850e893e9 removes a bug in SAM v1 and v2 (introduced when merging with v3) 2009-09-07 17:33:29 +00:00
BlubMail
2341793546 writeString(String str): synchronize using socket write lock to prevent split SAM messages 2009-09-06 00:43:45 +00:00
zzz
1f1d089fda Move FloodSearchJob to its own file, history for two props, -19 2009-09-04 19:58:15 +00:00
zzz
5372a50bcc propagate from branch 'i2p.i2p.zzz.test3' (head f18425568ef4ef20f5054f6fb133cf217bfab485)
to branch 'i2p.i2p' (head 36f4774eb9dd538b3a7c314de79a6fb3bc4df813)
2009-09-04 15:14:36 +00:00
zzz
83588d9b98 propagate from branch 'i2p.i2p.zzz.test' (head 350d5a26c305a3178c851c60451ad9e72d7d82a7)
to branch 'i2p.i2p' (head 869d178de23c9945a98da66013e642b9aa435e28)
2009-09-04 15:14:22 +00:00
zzz
58e960ceb5 Fix inbound tunnel tests by using the correct SKM 2009-09-04 14:20:20 +00:00
zzz
de07705671 deliver more tags as the available number gets low 2009-09-02 15:02:19 +00:00
sponge
49ff3cfbf3 * Small logic fix for dr|z3d 2009-09-02 00:08:03 +00:00
zzz
e392469835 TunnelDispatcher cleanup 2009-09-01 14:51:11 +00:00
zzz
7745bd89a9 * configkeyring.jsp: Add delete and cancel buttons 2009-09-01 14:50:22 +00:00
zzz
01bed932c7 * Logging: Fix directory for rotated log 2009-09-01 14:47:16 +00:00
zzz
157190757b * SessionKeyManager:
- Fix TagSet hashCode
      - More synchronization
2009-09-01 13:47:27 +00:00
zzz
e0f1047d72 * SessionKeyManager, OCMOSJ, Garlic:
- Enable per-client SessionKeyManagers for better anonymity
      - tagsDelivered() now means tags are sent, not acked.
      - OCMOSJ uses the new TagSetHandle object returned from tagsDelivered()
        to call tagsAcked() or failTags() as appropriate.
      - Assume tags delivered on an established session to
        reduce streaming lib stalls caused by massive tag deliveries;
        should increase throughput and window sizes on long-lived streams
      - Unacked tagsets on a new session are stored on a separate list
      - Don't kill an OB Session just because it's temporarily out of tags
      - Increase min tag threshold to 30 (was 20) due to new speculative
        tags delivered scheme, and to increase effective max window
      - More Java 5 and dead code cleanups, and more comments and javadoc,
        debug logging cleanups
2009-08-30 16:27:03 +00:00
zzz
15f0cda41f cleanup of things moved to GarlicMessageReceiver long ago 2009-08-30 16:21:38 +00:00
zzz
9a95122c7c new disable tunnel tests option 2009-08-30 16:13:46 +00:00
zzz
d868f7c02a propagate from branch 'i2p.i2p' (head 5b1c8cca17ce959d164a3d3d95453124211fb41d)
to branch 'i2p.i2p.zzz.test' (head e118104e3601f3c56d3a84594fb35de6d902da8f)
2009-08-30 16:06:46 +00:00
zzz
5ca2f306b8 consume sessiontag after failed tunnel test 2009-08-30 16:05:33 +00:00
zzz
c714c1a0c9 instantiate per-client SKM 2009-08-30 16:05:12 +00:00
zzz
e6e6c00497 tostring updates for debugging 2009-08-30 16:04:50 +00:00
zzz
62a3da2fa6 javadoc updates for SKM changes 2009-08-30 16:04:28 +00:00
z3d
f1f97e8ec5 New default light header logo until we rig them by theme. 2009-08-28 03:44:56 +00:00
z3d
6c361679c6 merge of '1b1c377c45e8746e4e04afc47cde55a03b859f32'
and '6869519b0cd38f4bc366d0277c5dc4e924348e66'
2009-08-28 03:16:12 +00:00
z3d
ae89d2f2ab Rejig netdb.jsp into tables; sidepanel logo refresh. 2009-08-28 03:12:23 +00:00
zzz
8053fb5eae prop history, -18 2009-08-27 19:59:11 +00:00
zzz
ebf5eb6e20 propagate from branch 'i2p.i2p.zzz.test3' (head 75804c9355329ab942a5e2e8ecc91e2ec1eb9d33)
to branch 'i2p.i2p' (head 33e55422045b9b3c8ae410162f5cca3eb9baae49)
2009-08-27 19:55:56 +00:00
zzz
2e2bff3f0a fix the favicon again 2009-08-27 19:43:57 +00:00
zzz
a3f290e4d8 * Tunnel:
- Adjust the random drop probability for the message size
2009-08-27 19:31:24 +00:00
zzz
e0dd1f13e3 keep publishing leaseset if we are restarting, to minimize downtime 2009-08-27 15:29:23 +00:00
zzz
787def6a1c * Tunnel:
- Adjust the random drop probability for the message size
2009-08-27 15:27:46 +00:00
zzz
1f5d7d7b5b dont reopen tunnel to say goodbye to tracker 2009-08-27 15:08:21 +00:00
zzz
4bc5215833 fix /i2p/B64 handling 2009-08-27 15:07:48 +00:00
zzz
7736545f5b speed up data hashcodes 2009-08-27 03:53:41 +00:00
zzz
1ecf4377c6 * Client:
- Fail if no date handshake after 30s or no leaseset
        after 5m, rather than hanging forever.
2009-08-27 03:52:14 +00:00
zzz
593d4dc508 * DecayingBloomFilter:
- Replace with new DecayingHashSet for 3 of 4 uses,
        and also in the 4th if the router is low-bandwidth.
        Saves 8 MB heap.
2009-08-26 22:22:47 +00:00
zzz
93d366fea1 * Tunnel: Concurrentify HashSetIVValidator 2009-08-26 22:18:15 +00:00
zzz
7973f2e8b9 * DataHelper: Fix byte array hashcode for small arrays 2009-08-26 22:17:29 +00:00
zzz
bb14fa0b4e * Console: Prevent OOMs in NewsFetcher or StatsSummarizer from
killing the router
2009-08-26 22:16:29 +00:00
zzz
95aba0c537 * EepGet, I2PSnark:
- New I2PSocketEepGet fetches through existing tunnels
        rather than through the proxy
      - Use new eepget for i2psnark
      - Add a fake user agent for non-proxied fetches
      - Cleanups
2009-08-26 22:15:32 +00:00
zzz
df4143f036 * NetDb:
- oops, store leaseset locally even when shutting down
        (fix -16)
      - Java 5 cleanups
    * PRNG:
      - Rename config option to prng.buffers (was router.prng.buffers)
      - Change the default from 16 to 2 for I2PAppContext (saves 3.5MB)
    * TunnelPool:
      - Don't test tunnels when shutting down
      - Less rates
      - Java 5 cleanups
2009-08-25 13:12:24 +00:00
dev
ed0575e937 update launchpad and freshmeat too 2009-08-24 20:51:09 +00:00
zzz
456ed0aab4 history for 2 props, -17 2009-08-24 00:28:49 +00:00
zzz
47c8389419 propagate from branch 'i2p.i2p.zzz.test3' (head e19da9b978ed2ec03adb0e326fff6870746cc4fc)
to branch 'i2p.i2p' (head 179b9a7974d64853c0c91924a5ad86e8b04ee7ba)
2009-08-24 00:08:30 +00:00
zzz
51fd4d70da cleanup 2009-08-24 00:08:19 +00:00
zzz
79e32231fb propagate from branch 'i2p.i2p.zzz.test' (head b1e81b14fbaafdc188ae4d312f843c38b65cc310)
to branch 'i2p.i2p' (head 010351f9470b0e699e17447c87daf6c67e5e5dcc)
2009-08-24 00:06:48 +00:00
zzz
80f9f857e5 more HTML fixup 2009-08-23 17:42:04 +00:00
zzz
5a4c2de425 * Message, I2PSession, SessionKeyManager, Console:
Prep for SessionKeyManager work in the router -
      Fix up SKM renderStatusHTML(); add debug.jsp to see it;
      Redefine getClientSessionKeyManager();
      More cleanups
2009-08-23 16:12:09 +00:00
zzz
7e547743c7 * Message: Move 2 unused classes out of the router lib (~15KB)
(more SKM prep)
2009-08-23 12:29:34 +00:00
zzz
3f3d43df41 * Streaming, I2PSession:
Prep for SessionKeyManager work in the router -
      Comment out, deprecate, and javadoc for unused keys and tags,
      they are vestiges of end-to-end crypto
2009-08-22 22:55:37 +00:00
z3d
0cc72a49c8 "page or resource" indication on 404 console error page. 2009-08-22 17:42:15 +00:00
zzz
35c9e99914 - Throw 403 instead of 404 from flags.jsp and viewstat.jsp
so we don't render error.jsp
2009-08-22 16:23:15 +00:00
z3d
2e4bd1e440 Polish the console 404 error messages. 2009-08-22 12:15:19 +00:00
zzz
22c0b8e524 * profiles.jsp: Bulletproofing, less memory usage
* Updates: Verify zip at startup before extracting
    * Wrapper: Take a couple fields out of the log so it's narrower
2009-08-21 23:36:21 +00:00
zzz
faeb58f7e2 * ClientManager:
- Prevent client destination theft by rejecting duplicates
      - Java 5 cleanups
2009-08-21 15:40:26 +00:00
zzz
cdc184c5e5 * HTTP Proxy: Get mime type right for .ico
* DataHelper: Cleanup
2009-08-21 15:37:13 +00:00
z3d
2f9a4f0fa5 Slight margin adjustments for the light theme. 2009-08-21 00:27:32 +00:00
zzz
37437da34d * I2CP: Fix the SessionConfig serializer in DataHelper,
so that UTF-8 tunnel names are not corrupted by
      I2CP and can be displayed on the console
    * Fix UTF-8 form submission on console and i2ptunnel
2009-08-20 22:22:07 +00:00
zzz
6d3a5856b4 options cleanup on configtunnels.jsp 2009-08-20 15:43:27 +00:00
z3d
4d4538a346 Space efficiency drive for light console theme. 2009-08-20 15:24:14 +00:00
zzz
327102a254 * Console:
- Put favicon on every page
      - Make every page UTF-8
2009-08-20 14:35:32 +00:00
zzz
3602eb14f5 kill deprecation warnings 2009-08-20 14:35:07 +00:00
z3d
cf82b51a1f Rename I2PTunnel Webmanager to I2P Tunnels Manager on edit client/server tunnels pages. 2009-08-20 12:10:18 +00:00
z3d
412d3bc2f8 merge of '1a3fcced1ae28b24a35236271c526379db98613f'
and 'a95bd8209bbd14b8c0a590ba071ecf5a0191644d'
2009-08-20 10:25:42 +00:00
z3d
4735508a0a I2PSnark. 2009-08-20 10:21:25 +00:00
zzz
9225d01b29 * Fix broken 'check for update' button on configupdate.jsp
* history for prop from test3, -16
2009-08-20 04:13:39 +00:00
zzz
7782970d51 propagate from branch 'i2p.i2p.zzz.test3' (head d65e8465671ba0b8f6f013b56045bf867e10a78e)
to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)
2009-08-19 23:44:19 +00:00
zzz
6f053287d5 * Update:
- Fix problems where a requested unsigned update would actually
        kick off a signed update
      - Fix problem when policy set to notify, and clicking
        check for update, incorrectly causing unsigned update download
        and bad messages
      - Verify zip integrity of unsigned updates
      - Move zip files to router dir, not base dir
      - More tweaks and cleanup
2009-08-19 20:20:25 +00:00
z3d
7a88f59f08 Optimize space layout on i2psnark ui. 2009-08-19 18:39:30 +00:00
z3d
d56aae8913 Minor changes to the I2PSnark UI. 2009-08-19 18:28:44 +00:00
z3d
a309a14396 Fixes for config page ui issues. 2009-08-19 17:05:59 +00:00
z3d
b80cbbdd4a Return of the mia <hr>'s. 2009-08-19 16:57:47 +00:00
zzz
5bc2dab1d2 * profiles.jsp:
- Rename the Failing column
      - Reduce the time cutoff again to 90m (was 2h)
2009-08-19 15:26:35 +00:00
sponge
8bbe7fabb3 Java code to set Router Console password for dr|z3d 2009-08-19 10:31:51 +00:00
zzz
c537d160a6 * XmlPull: Remove, unused.
Somehow, when I implemented UPnP, I thought it was required,
      but it isn't. ~50KB
2009-08-18 21:54:14 +00:00
zzz
475187fcbc * Stats:
- Fix BufferedStatsLog so it works at all
      - Don't instantiate BufferedStatsLog unless stats.logFilters
        property is defined (restart now required to enable logging)
        This eliminates the StatLogWriter thread and a decent
        amount of memory.
      - Move two CLI classes out of the lib
      - Commment out places where getStatLog() isn't checked for null
      - Cleanups
2009-08-18 20:33:15 +00:00
zzz
a379e36e24 more UTF-8 configs 2009-08-18 14:46:29 +00:00
zzz
a9054a3cab * Transports: Lower conn limit factor to 50 (was 60) 2009-08-18 14:44:57 +00:00
z3d
ea7a9c259f Remove extra whitespace in English readme; fix a couple of validation errors. 2009-08-18 12:45:33 +00:00
z3d
2cba48d4d7 Update history.txt to reflect latest changes. 2009-08-18 02:46:08 +00:00
z3d
42b79c5a20 Work on the classic theme i2ptunnels look and feel, mostly. 2009-08-18 02:38:00 +00:00
zzz
be9523f1e4 * Config files: Add some encoding help
* DataHelper, Router:
      - Save config files in UTF-8 rather than the default encoding,
        since we read them in UTF-8
    * jetty.xml: Change encoding to UTF-8
    * logs.jsp: Add system encoding
    * NTCP: Clean up clock skew shitlist message
    * Shitlist: Clean up expire message
    * WorkingDir: Ensure modified files are processed with UTF-8 encoding
2009-08-17 22:14:39 +00:00
z3d
6a8dd0f053 Revert xhtml regressions in i2ptunnel code; fixes for various validation issues. 2009-08-17 20:17:30 +00:00
z3d
1b63aa411b Replace all <hr /> and <br /> with <hr> and <br> whilst we're in html4 transitional. 2009-08-17 14:35:18 +00:00
z3d
33a7f3351b Start of validation cleanup. 2009-08-17 13:24:08 +00:00
z3d
f7af5e1329 Remove right justification on status stars. 2009-08-17 02:19:04 +00:00
z3d
3a9a029d70 Sidepanel fixes. Bumped to -14. 2009-08-17 02:13:10 +00:00
z3d
0aaacc86e2 Dark theme and ieshim.css tweaks; minor sidepanel mods. 2009-08-16 15:45:07 +00:00
z3d
1b8b7b741c Revert <br>'s to <hr>'s in sidepanel, remove tunnel status from table; fixes Opera display issue. Reported and partially fixed by sponge. 2009-08-15 20:19:39 +00:00
zzz
66831c619b cleanups 2009-08-15 19:51:55 +00:00
zzz
30628fb5f9 more clean targets 2009-08-15 19:51:13 +00:00
sponge
064ff8a7d2 2009-08-15 sponge
* Merge in dr|z3d and my own html fixes for router console java and jsp
      files so that Opera (and now IE?) doesn't puke anymore on the missing
      and misplaced HTML tags.
    * Optimized all jsp files so that they are shorter to save space, which
      is then used to fix the broken HTML. We should break even space-wise.
    * Bump to -13.
2009-08-15 16:28:24 +00:00
sponge
9a18955de3 merge of '522de7791fdad000d42bb5a01f139d913e74d7ef'
and 'ef33b50138594ef55a1dbcd6c77a3d3afeb22ff6'
2009-08-15 16:22:38 +00:00
sponge
35da3f3334 HTML bugfixes in routerconsole pages. 2009-08-15 16:08:33 +00:00
z3d
335d45f03e Fix borked snarkmanager.java before anyone notices. 2009-08-15 01:12:26 +00:00
z3d
c466cd77ad Add some <centre> tags to our router restart/shutdown event notices. 2009-08-14 21:40:45 +00:00
z3d
d998e2e9bb Theme tweaks, minor textual edits and a whole lot less. 2009-08-14 21:00:22 +00:00
zzz
0a20315280 * configpeer.jsp: Limit max displayed banned IPs
* jobs.jsp: Cleanup
    * eepsite_index_de.html: localhost -> 127.0.0.1
    * readme*html: localhost -> 127.0.0.1
2009-08-14 17:39:05 +00:00
zzz
01753f5aea * Ministreaming: Cleanups, deprecation, move demos out of the lib 2009-08-14 04:36:06 +00:00
zzz
bcd22cfbf3 * Console cleanups
* Router: Don't do some things when we are shutting down
    * VMCommSystem fixups
2009-08-14 01:52:47 +00:00
zzz
7e039d0339 tweak 2009-08-13 22:21:49 +00:00
zzz
ab08ac70aa * I2PTunnel:
- Make IRC Proxy non-shared, delayed-start, close-on-idle
        for new users, for the anonymity benefits (see "Shared Clients,
        Correlation and Collusion" http://zzz.i2p/topics/217 )
      - Remove "experimental" flag on new client options
    * configclients.jsp: Add full path to config file
    * Add some path help in some config files
2009-08-13 22:14:07 +00:00
zzz
5decf3cd7a Dont show firewall warning unless its for real 2009-08-13 18:46:14 +00:00
zzz
5c6d757e35 add size total 2009-08-13 18:25:45 +00:00
zzz
4b75be804f flags for leases 2009-08-13 15:35:37 +00:00
zzz
6515e6ee17 merge strings for efficiency 2009-08-13 15:21:22 +00:00
zzz
55e8583663 unused code out 2009-08-13 15:15:41 +00:00
sponge
3fbff71861 2009-08-11 sponge
* Code Janitor time! Many fixes and documenting fixes that should be
      done in the future. for the most part, this is a general code cleanup.
    * On smaller/embedded systems, the "final" keyword cleanups will have
      more of an impact than on larger systems.
    * Document missing hashCode() methods.
    * Unhide more variables to make code easier to read.
2009-08-11 21:58:56 +00:00
z3d
e5eea47b66 Lose the _blank targets on integrated console pages; yellow/green indicators in sidepanel. 2009-08-11 21:29:43 +00:00
zzz
b10b0e8f57 client/server icon selection, history for triple prop, -11 2009-08-11 16:22:43 +00:00
zzz
631a367b1c propagate from branch 'i2p.i2p.zzz.test3' (head d847100f901613ad765312ac9fed6d578d08d907)
to branch 'i2p.i2p' (head 63ce4ace08b7b7ba01531f0951ffc47ed57411a6)
2009-08-11 16:11:45 +00:00
zzz
8ea279fbe2 post-prop fixup 2009-08-11 16:09:44 +00:00
zzz
089572befd propagate from branch 'i2p.i2p.zzz.test2' (head 63cdcb547c0d33cd3c3c899b168ffab9f7ed2ebe)
to branch 'i2p.i2p' (head 52964ce47701fd8838e3f9c84af29d2463c83bc7)
2009-08-11 16:04:36 +00:00
zzz
0f96b9569a propagate from branch 'i2p.i2p.zzz.android' (head ad3a2f8952b533fbbae2868097f6a20d525e07bf)
to branch 'i2p.i2p' (head 2c89302763aa8dcb1a59e3e1f83fd653e01c15a5)
2009-08-11 15:57:38 +00:00
zzz
d1114666de fix comment 2009-08-11 15:37:12 +00:00
z3d
f676abc0d4 Fix regression in classic theme that broke the proxy error pages. 2009-08-11 14:50:12 +00:00
z3d
3492b7219b .10 2009-08-11 10:50:29 +00:00
z3d
a12ae6e399 Ongoing overhaul of the sidepanel. 2009-08-11 10:45:20 +00:00
zzz
9b2e18a65b * NetDb stats: Hide part. tunnel total events, effective next release 2009-08-10 19:11:21 +00:00
zzz
c52ccf7eef comment out dead oldconsole code 2009-08-10 17:48:16 +00:00
zzz
1282434684 * Move StatsGenerator from router to routerconsole
* Move the unused AdminManager from router to the apps directory
2009-08-09 19:33:15 +00:00
zzz
4e844187f7 revert another change from when this branch had reseed changes 2009-08-09 15:34:26 +00:00
zzz
ccd67d658d propagate from branch 'i2p.i2p' (head 12e0efc6ee1b41bd216403b5ac11facb9c70b1fb)
to branch 'i2p.i2p.zzz.android' (head a519611a2637a052eff6b9b8d9363b3fe0550840)
2009-08-09 14:35:41 +00:00
zzz
62383819cb propagate from branch 'i2p.i2p' (head 6ab0f64b9f4992591ed989f8d89a859fc3ceaeaf)
to branch 'i2p.i2p.zzz.android' (head e02886e19d254dac40a7f775e102e60560efe5e5)
2009-08-09 14:34:21 +00:00
zzz
3febcf6043 * Updater:
- Add new unsigned update option, triggered by
        last-modified date, using the new EepHead.
        Buttons still are not hidden after download complete.
      - Make the .sud updater use the temp dir when proxied
      - Several cleanups
2009-08-09 14:28:20 +00:00
zzz
a431137f45 comments 2009-08-09 14:21:47 +00:00
z3d
5a6e14b9df Add a static image to the local destinations list to indicate server/client
status of local destinations; zzz to add server/client logic.
;
2009-08-09 10:50:54 +00:00
zzz
536bc3112f add comment 2009-08-08 18:53:26 +00:00
z3d
81b2e6b789 Fix a sidebar regression. 2009-08-08 18:03:05 +00:00
zzz
4cf376ec1d Rename the shitlist and blocklist 2009-08-08 17:14:30 +00:00
zzz
d3a0c91398 more possible bork prevention 2009-08-08 17:11:05 +00:00
z3d
43140d3efd Overhaul of sidepanel layout, with concommitant tweaks and fudges to the css. 2009-08-08 15:34:58 +00:00
zzz
3dd3bf829d propagate from branch 'i2p.i2p' (head 6ab0f64b9f4992591ed989f8d89a859fc3ceaeaf)
to branch 'i2p.i2p.zzz.test2' (head 3e85c6cfff244d09df42d967d3a3cdf77053890d)
2009-08-08 14:30:07 +00:00
zzz
bdcad06ece EepHead 2009-08-08 14:29:18 +00:00
zzz
69fdfb0635 -8 2009-08-07 18:36:09 +00:00
zzz
55a8002b9c propagate from branch 'i2p.i2p.zzz.test3' (head 1f086d33dd3479afceb025d2da7956d7470fb3e5)
to branch 'i2p.i2p' (head 6959293ce260b9da4d61776717c02e20a0c7b2dd)
2009-08-07 18:30:04 +00:00
z3d
e36f9b2273 UI enhancements. 2009-08-07 18:19:42 +00:00
zzz
70ae99f31a fix broken persistent key storage 2009-08-07 17:03:26 +00:00
zzz
15565ca09c more hellips 2009-08-07 16:17:52 +00:00
zzz
f188e02a5d move css include up to possibly reduce servlet borkage 2009-08-07 15:49:36 +00:00
zzz
4d005349a7 * I2PTunnel:
- Move the privkey files from the app dir to the
        config dir, in preparation for splitting the two
        dirs by default
2009-08-06 18:59:06 +00:00
zzz
c65a97882e * Eepsite:
- Quote the jetty.xml path in clients.config,
        and adjust the migration function, to fix the
        eepsite-won't-start bug on windows
2009-08-05 19:18:17 +00:00
zzz
cf880548d9 * HTTP Proxy:
- Restore the localhost error message
      - Catch 127.0.0.1:xxxx addresses too
2009-08-05 19:15:03 +00:00
zzz
b5876e7f04 * Router: Move the WorkingDir class from i2p.jar to router.jar 2009-08-05 17:08:04 +00:00
z3d
2436ea1131 More classic/ieshim futzing. 2009-08-03 23:10:53 +00:00
z3d
5395b6829a Ongoing betterment of the classic theme. 2009-08-03 22:07:34 +00:00
zzz
c3af134a5b - Remove UTC time from summary bar
- Increase skew warning threshold to 3s (was 100ms)
2009-08-03 20:02:28 +00:00
z3d
cce72a5f1b More classic manoeuvres 2009-08-03 19:09:21 +00:00
z3d
32c143f8d7 More classic tweaks. 2009-08-03 18:17:11 +00:00
z3d
895cb1f2e5 More ieshim.css goodness. 2009-08-03 15:48:17 +00:00
zzz
7986f5646e truncate long dest names 2009-08-03 15:29:35 +00:00
z3d
59a5776f9d More Classic theme tweaks. 2009-08-03 15:28:49 +00:00
z3d
fc8c0ccfe1 Minor classic theme tweakage. 2009-08-03 15:00:15 +00:00
z3d
0930ead814 Ongoing Classic theme renovations. 2009-08-03 14:45:44 +00:00
zzz
b5a17637cb * Wrapper:
- Extend timeout to 20s (was 5s)
      - Shorten ping interval to 5m (was 10m)
2009-08-03 14:18:55 +00:00
z3d
460c8a319f Extensive overhaul of the classic theme; css hacks for IE! 2009-08-03 13:24:55 +00:00
zzz
7aa051ef4f add custom error page 2009-08-02 20:12:16 +00:00
z3d
c7c132c0ac More classic theme tweaks, I2PSnark UI fixes, and enhanced proxy error messages for classic. 2009-08-02 19:05:40 +00:00
zzz
d84b1125eb * Timestamper: Don't start thread if not enabled 2009-08-02 16:16:57 +00:00
zzz
8d4a1899f2 * Streaming: New option i2p.streaming.answerPings (default true) 2009-08-02 14:51:06 +00:00
z3d
3a0cdf1388 More IE overflow fixes; remove max-width from i2psnark css. 2009-08-02 13:57:29 +00:00
zzz
d8d76fd327 * Ministreaming:
- Make getInt() static
      - Move the big TestSwarm class out of the lib
2009-08-02 13:37:23 +00:00
z3d
abf7296de1 Fix for IE overflow issue; classic theme enhanced; more UI enhancements. 2009-08-02 12:57:50 +00:00
zzz
316c20ee44 Dont count yourself as a known peer 2009-08-02 11:54:14 +00:00
zzz
13e8c95667 Hide update button when shutting down 2009-08-01 17:42:27 +00:00
zzz
a14ad423a6 formatDuration tweak 2009-08-01 17:22:57 +00:00
zzz
e1a5d5e19a post-release cleanup 2009-08-01 14:43:04 +00:00
z3d
6e29eddaa7 More UI layout tweak & fixes to config page(s). 2009-08-01 04:14:05 +00:00
z3d
65ae26a961 More UI layout enhancements to the config pages. 2009-08-01 03:28:42 +00:00
z3d
1afd946a94 Close quotes on div to ensure buttons align to the right in configui.jsp. 2009-08-01 01:36:59 +00:00
z3d
d6820634ac Further enhancements to the configuration pages. 2009-08-01 01:15:12 +00:00
z3d
95dd744633 Give the radio and checkbox icons some breathing space. 2009-07-31 19:40:05 +00:00
z3d
219af36090 Ensure all buttons in dark theme have consistent font size. 2009-07-31 19:20:07 +00:00
z3d
24e83398ba UI fixes: text boxes, buttons, radio/checkbox width. Enhanced /peers.jsp. 2009-07-31 19:15:35 +00:00
zzz
4172ed21a9 take jetty back out of the updater 2009-07-31 17:56:02 +00:00
zzz
1cba7b8ec1 * Core:
- Catch unzip fd leaks on error
      - Move 2 test classes out of the lib
2009-07-31 17:55:38 +00:00
zzz
0bef85277e try to automate the release process 2009-07-31 02:36:15 +00:00
z3d
2f4c428316 merge of '2cffbafe300f5dce55a82db20e2bf8f61ae8717f'
and 'b4f1b960a7d1bf1a3d5baaf9ddea72625177726a'
2009-07-30 23:13:10 +00:00
z3d
4de0b73cd8 Ongoing UI enhancements; peers.jsp gets some love. 2009-07-30 23:10:48 +00:00
zzz
2e5caac8bf - Update to Android 1.5 SDK
- Fix RouterContext problem
2009-07-03 22:13:18 +00:00
zzz
7972c0c862 - Fix another Mac class problem
- Change to RouterLaunch main so we get a wrapper.log
2009-06-29 17:42:13 +00:00
zzz
3fee5a3781 more cleanup, set dirs 2009-06-29 16:51:19 +00:00
zzz
db45e74fcc Cleanup after prop from i2p.i2p:
- Remove I2PFile, FileStreamFactory hacks
- Remove custom reseed stuff
2009-06-29 14:51:02 +00:00
zzz
206e45b9e8 propagate from branch 'i2p.i2p' (head 44eff3cb8553cf29a7e4eb6c02f624648f91b124)
to branch 'i2p.i2p.zzz.android' (head 66bd014debdd51906e18555d12906ee20c016ef6)
2009-06-29 14:04:49 +00:00
zzz
5022575429 - Deal with conflicting bouncycastle libs take #2
- Disable NTCP
- Shuffle the startup/shutdown tasks some
2009-03-13 21:49:27 +00:00
zzz
b8f22bf3bf - Add FileStreamFactory and I2PFile to deal with the problems from
the code CWD is / but the only writable directory is
  /data/data/net.i2p.router/files/ - still a ton of places to be
  fixed, will be fixed up as things get working
- Load some config files from resources at startup
- Fix up logging
- Add reseed capability, by copying some code over from routerconsole
- Deal with conflicting bouncycastle libs
2009-03-13 18:56:16 +00:00
zzz
5a8b3eb8f3 Move HMac to I2PHMac, as jrandom implemented changes that make it
incompatible with the HMac in the android libraries.
2009-03-13 18:27:29 +00:00
zzz
d26ac84126 two memory savers 2009-03-12 18:22:49 +00:00
zzz
82045b3fde android logging 2009-03-10 22:30:33 +00:00
zzz
14ce5a2432 hello world 2009-03-10 05:20:48 +00:00
1037 changed files with 89577 additions and 37125 deletions

View File

@@ -3,9 +3,10 @@ Headless I2P installation instructions
1) java -jar i2pinstall.exe -console (you've already done this)
This will run the installer in text mode, including running the postinstall.sh
script, which will start the router and launch a browser.
script. After that, you may run 'sh i2prouter start'
which will start the router and attempt to launch a browser.
If you do not have an X server running, the browser launch will fail, and
If you do not have an X server running, the browser launch will probably fail, and
you may use:
lynx http://localhost:7657/index.jsp
to configure the router.
@@ -13,6 +14,16 @@ to configure the router.
If you're having trouble, swing by http://forum.i2p2.de/, check the
website at http://www.i2p2.de/, 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
when I2P is run for the first time. It also creates files in the system
temporary directory specified by the Java Virtual Machine.
To change the location of these directories, or to configure I2P to
put all files in this directory (the so-called "portable" configuration),
edit the files i2prouter (Linux) and wrapper.config (Linux and Windows)
where there are comments labeled "PORTABLE". Do this before you
run I2P for the first time.
To run I2P explicitly:
(*nix): sh i2prouter start
(win*): I2P.exe

View File

@@ -1,10 +1,17 @@
I2P source installation instructions
Prerequisites to build from source:
Java SDK (preferably Sun) 1.5.0 or higher (1.6 recommended)
Apache Ant 1.7.0 or higher
Optional, For multilanguage support: The xgettext, msgfmt, and msgmerge tools installed
from the GNU gettext package http://www.gnu.org/software/gettext/
To build and install I2P from source, you must first build
and package up the appropriate installer by running:
ant pkg
This will produce a few key files:
* install.jar: the GUI and console installer
* i2pinstall.exe: the GUI and console installer wrapped for cross-platform execution
@@ -18,9 +25,6 @@ Or run the GUI installer:
Or move the update file into an existing installation directory and restart.
You will need to have ant installed from http://ant.apache.org/
(1.7.0 or newer)
Supported JVMs:
Windows: Latest available from http://java.sun.com/ (1.5+ supported)
Linux: Latest available from http://java.sun.com/ (1.5+ supported)

View File

@@ -64,6 +64,9 @@ Public domain except as listed below:
Copyright 2006 Gregory Rubin grrubin@gmail.com
See licenses/LICENSE-HashCash.txt
GettextResource from gettext v0.18:
Copyright (C) 2001, 2007 Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv2.1.txt
Router:
@@ -76,16 +79,14 @@ Public domain except as listed below:
Copyright (C) 2003-2006 Satoshi Konno
See licenses/LICENSE-UPnP.txt
XMLPull library used by UPnP:
See licenses/LICENSE-Apache2.0.txt
GeoIP data free to use, courtesy http://ip-to-country.webhosting.info/
Installer:
Launch4j 2.0.RC3:
Copyright (C) 2005 Grzegorz Kowal
See licenses/LICENSE-GPLv2.txt
Launch4j 3.0.1:
Copyright (c) 2004, 2008 Grzegorz Kowal
See licenses/LICENSE-Launch4j.txt (in binary packages)
See installer/lib/launch4j/LICENSE.txt (in source packages)
The following projects are used by Launch4j...
MinGW binutils (http://www.mingw.org/)
@@ -141,6 +142,7 @@ Applications:
I2PSnark:
Copyright (C) 2003 Mark J. Wielaard
See licenses/LICENSE-GPLv2.txt
Silk icons: See licenses/LICENSE-SilkIcons.txt
I2PTunnel:
(c) 2003 - 2004 mihi
@@ -178,6 +180,7 @@ Applications:
Router console:
Public domain.
Flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
Silk icons: See licenses/LICENSE-SilkIcons.txt
GeoIP Data:
Copyright (c) 2003 Direct Information Pvt. Ltd. All Rights Reserved.
@@ -210,6 +213,9 @@ The following applications and libraries are not used or bundled in
binary packages, therefore the licenses are not included in binary
distributions. See the source package for the additional license information.
Admin Manager:
Public domain
Atalk:
Public domain

View File

@@ -5,7 +5,7 @@
GCJ=gcj #/usr/local/gcc-4.0.2/bin/gcj
EXTRA_LD_PATH= #/usr/local/gcc-4.0.2/lib
ANT=ant #/opt/apache-ant-1.6.5/bin/ant
ANT_TARGET=buildclean
ANT_TARGET=build2
NATIVE_DIR=native
##
@@ -24,20 +24,22 @@ JAR_BASE=i2p.jar mstreaming.jar streaming.jar
JAR_CLIENTS=i2ptunnel.jar sam.jar
JAR_ROUTER=router.jar
JAR_JBIGI=jbigi.jar
JAR_XML=xml-apis.jar resolver.jar xercesImpl.jar
JAR_CONSOLE=\
i2psnark.jar \
javax.servlet.jar \
commons-el.jar \
commons-logging.jar \
jasper-runtime.jar \
ant-apache-bcel.jar \
ant.jar \
jasper-compiler.jar \
org.mortbay.jetty.jar \
routerconsole.jar
JAR_SUCKER=jdom.jar rome-0.7.jar sucker.jar
LIBI2P_JARS=${JAR_BASE} ${JAR_CLIENTS} ${JAR_ROUTER} ${JAR_JBIGI}
LIBSAM_JARS=${JAR_BASE} sam.jar
LIBROUTER_JARS=i2p.jar ${JAR_ROUTER} ${JAR_JBIGI}
LIBCONSOLE_JARS=${LIBROUTER_JARS} ${JAR_CONSOLE}
LIBSNARK_JARS=${LIBROUTER_JARS} i2psnark.jar
# update:
# similar error with gcj 4.3.3.
#
# unfortunately, its not quite ready for most end users, as the
# ${JAR_CONSOLE} fails to compile with:
# org/apache/commons/logging/impl/LogKitLogger.java: In class 'org.apache.commons.logging.impl.LogKitLogger':
@@ -95,7 +97,36 @@ native_shared: libi2p.so
@echo " i2ptunnel will, so it will start all the proxies defined in i2ptunnel.config"
libi2p.so:
@echo "* Building libi2p.so"
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/libi2p.so ${LIBI2P_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/libi2p.so
@echo "* libi2p.so built"
@echo "* Building $@"
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBI2P_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
sam: jars libi2psam.so
libi2psam.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBSAM_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
router: jars libi2prouter.so
libi2prouter.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBROUTER_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"
console: jars libi2pconsole.so
# doesn't work, see above
libi2pconsole.so:
@echo "* Building $@"
@rm -f ${NATIVE_DIR}/$@
@(cd build ; time ${GCJ} ${OPTIMIZE} -fPIC -fjni -shared -o ../${NATIVE_DIR}/$@ ${LIBCONSOLE_JARS} ; cd .. )
@ls -l ${NATIVE_DIR}/$@
@echo "* $@ built"

View File

@@ -1,11 +1,13 @@
Prerequisites to build from source:
Java SDK (preferably Sun) 1.5.0 or higher (1.6 recommended)
Apache Ant 1.7.0 or higher
Optional, For multilanguage support: The xgettext, msgfmt, and msgmerge tools installed
from the GNU gettext package http://www.gnu.org/software/gettext/
To build:
ant pkg
Run 'ant' with no arguments to see other build options.
See http://www.i2p2.de/download.html for installation instructions.
See INSTALL.txt or http://www.i2p2.de/download.html for installation instructions.
Documentation:
http://www.i2p2.de/

View File

@@ -1,43 +1,155 @@
#!/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
I2PRCA=`grep -c /etc/rc.d/rc.local -e i2p`
I2PRCB=`grep -c /etc/rc.d/rc.local_shutdown -e i2p`
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 "/etc/rc.d/rc.local modified."
echo '#/I2P' >> /etc/rc.d/rc.local
echo "modified."
else
echo "/etc/rc.d/rc.local looks OK"
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 "/etc/rc.d/rc.local_shutdown modified."
echo "#/I2P" >> /etc/rc.d/rc.local_shutdown
echo "modified."
else
echo "/etc/rc.d/rc.local_shutdown looks OK"
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
echo
# 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 may wish to replace it with /etc/rc.d/rc.i2p.new"
echo
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 on /etc/rc.d directory. You should chmod +x"
echo "installed in /etc/rc.d . You should chmod +x"
echo '/etc/rc.d/rc.i2p to start it on boot.'
echo
fi

View File

@@ -1,42 +1,57 @@
#!/bin/sh
# Heavily based on the Slackware 12.1 SlackBuild
# Slackware build script for i2p
#
# 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 have an auto-update function.
# How to start i2p:
# After installpkg command, doinst.sh will execute a postinstallation 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.
# 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.
#
# 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
rm -rf $PKG
mkdir -p $PKG
# put here installation dir, without first and last /
# es: usr/local
NAME=i2p-base
VERSION=0.0.1
BUILD=1sim
VERSION=0.0.2
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
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
sed "s|directory|/$INSTALL_DIR/i2p/|g" $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cat "$CWD/doinst.sh" > $PKG/install/doinst.sh
cat "$CWD/slack-desc" > $PKG/install/slack-desc
cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.tgz
#
# 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

@@ -9,6 +9,22 @@ i2p_stop() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory stop )"
}
i2p_restart() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory restart)"
}
i2p_status() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory status )"
}
i2p_console() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory console )"
}
i2p_dump() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory dump )"
}
case "$1" in
'start')
i2p_start
@@ -17,11 +33,19 @@ case "$1" in
i2p_stop
;;
'restart')
i2p_stop
i2p_start
i2p_restart
;;
'status')
i2p_status
;;
'console')
i2p_console
;;
'dump')
i2p_dump
;;
*)
echo "usage $0 start|stop|restart"
echo "usage $0 start|stop|restart|status|console|dump"
;;
esac

View File

@@ -1,28 +1,35 @@
#!/bin/sh
# Heavily based on the Slackware 12.1 SlackBuild
# Slackware build script for i2p
#
# 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 have an auto-update function.
# How to start i2p:
# After installpkg command, doinst.sh will execute a postinstallation 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
# 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!
#
#
BUILD=1sim
# put here installation dir, without first and last /
# eg: usr/local
BUILD=1sponge
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.
@@ -113,5 +120,11 @@ sed "s|directory|/$INSTALL_DIR/i2p/|g" $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.tgz
#
# requiredbuilder fucks 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
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.$EXT

View File

@@ -1,2 +1,4 @@
glibc >= 2.7-i486-17 | glibc-solibs >= 2.7-i486-17
perl >= 5.10.0-i486-1
jre >= 5
i2p-base >= 0.0.1
bash >= 3.1.017

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.router"
android:versionCode="1"
android:versionName="1.0.0">
<uses-permission android:name="android.permission.INTERNET" />
<!-- 3 = 1.5, 2 = 1.1, 1 = 1.0; would probably work with 1 but don't have a 1.0 SDK to test against -->
<uses-sdk android:minSdkVersion="2" />
<application android:label="@string/app_name">
<activity android:name=".I2PAndroid"
android:label="@string/app_name"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

38
android/README.txt Normal file
View File

@@ -0,0 +1,38 @@
These instructions are for a recent Android SDK (1.6 or later)..
Should also still work with a 1.5 SDK.
The build file is not compatible with the 1.1 SDK any more.
#Download the SDK from http://developer.android.com/sdk/index.html
#Unzip the android SDK in ../../
#So then the android tools will be in ../../android-sdk-linux_86/tools/
#
# now go to the available packages tab, check the box and click refresh,
# and download an SDK Platform
# Since I2P is configured to run on 1.1 or higher
# (API 2) download that one. Otherwise you must change the
# target in default.properties from android-2 to andriod-x
# where x is the API version.
# create a file local.properties with the following line:
# sdk-location=/path/to/your/android-sdk-linux_86
#then build the android apk file:
ant debug
# Create the android 1.1 (API 2) virtual device
# (don't make a custom hardware profile)
# A AVD created with the 1.5 SDK will not work with the newer tools
../../android-sdk-linux_86/tools/android create avd --name i2p --target 2
#then run the emulator:
../../android-sdk-linux_86/tools/emulator -avd i2p &
#then wait a couple minutes until the emulator is up
#then install the I2P app
ant install
#then run the debugger
../../android-sdk-linux_86/tools/ddms &
#to rebuild and reinstall to emulator:
ant reinstall

356
android/build.xml Normal file
View File

@@ -0,0 +1,356 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name=".I2PAndroid" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contain the path to the SDK. It should *NOT* be checked in in Version
Control Systems. -->
<property file="local.properties"/>
<!-- The build.properties file can be created by you and is never touched
by the 'android' tool. This is the place to change some of the default property values
used by the Ant rules.
Here are some properties you may want to change/update:
application-package
the name of your application package as defined in the manifest. Used by the
'uninstall' rule.
source-folder
the name of the source folder. Default is 'src'.
out-folder
the name of the output folder. Default is 'bin'.
Properties related to the SDK location or the project target should be updated
using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your application and
should be checked in in Version Control Systems.
-->
<property file="build.properties"/>
<!-- The default.properties file is created and updated by the 'android' tool, as well
as ADT.
This file is an integral part of the build system for your application and
should be checked in in Version Control Systems. -->
<property file="default.properties"/>
<!-- Custom Android task to deal with the project target, and import the proper rules.
This requires ant 1.6.0 or above. -->
<path id="android.antlibs">
<pathelement path="${sdk-location}/tools/lib/anttasks.jar" />
<pathelement path="${sdk-location}/tools/lib/sdklib.jar" />
<pathelement path="${sdk-location}/tools/lib/androidprefs.jar" />
<pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" />
<pathelement path="${sdk-location}/tools/lib/jarutils.jar" />
</path>
<taskdef name="setup"
classname="com.android.ant.SetupTask"
classpathref="android.antlibs"/>
<!-- Execute the Android Setup task that will setup some properties specific to the target,
and import the rules files.
To customize the rules, copy/paste them below the task, and disable import by setting
the import attribute to false:
<setup import="false" />
This will ensure that the properties are setup correctly but that your customized
targets are used.
-->
<setup import="false" />
<!--
================================================================================
New I2P rules
================================================================================
-->
<target name="buildrouter" depends="dirs" >
<!-- build router and core -->
<ant dir=".." target="buildrouter" />
<!-- router -->
<copy file="../build/router.jar" todir="${external-libs-folder}" />
<!-- core -->
<mkdir dir="tmp" />
<unjar src="../build/i2p.jar" dest="tmp/" />
<delete file="tmp/net/i2p/util/LogWriter.class" />
<!-- org.bouncycastle.crypto already in android
but we need a little trickery because our HMac is incompatible...
and the libs aren't in the SDK to compile against??? -->
<jar destfile="${external-libs-folder}/crypto.jar" >
<fileset dir="tmp/" >
<include name="org/bouncycastle/crypto/Digest.class" />
<include name="org/bouncycastle/crypto/Mac.class" />
<include name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
<include name="org/bouncycastle/crypto/digests/MD5Digest.class" />
</fileset>
</jar>
<delete>
<fileset dir="tmp/" >
<include name="org/bouncycastle/crypto/Digest.class" />
<include name="org/bouncycastle/crypto/Mac.class" />
<include name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
<include name="org/bouncycastle/crypto/digests/MD5Digest.class" />
</fileset>
</delete>
<!--
<delete dir="tmp/org/bouncycastle/" />
<delete file="tmp/net/i2p/crypto/HMACGenerator.class" />
-->
<delete file="tmp/org/bouncycastle/" />
<!-- lots of unneeded stuff could be deleted here -->
<jar destfile="${external-libs-folder}/i2p.jar" basedir="tmp/" />
<!-- some resources -->
<mkdir dir="res/drawable/" />
<copy file="../installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
<copy file="../installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
</target>
<target name="hackcleanup">
<delete file="${external-libs-folder}/crypto.jar" />
</target>
<!-- fix for property name change sometime after SDK 1.5 -->
<property name="android-jar" value="${android.jar}" />
<property name="android-aidl" value="${android.aidl}" />
<!--
================================================================================
From here down copied from SDK platforms/android-1.1/templates/android_rules.xml
and then modified
================================================================================
-->
<!--
This rules file is meant to be imported by the custom Ant task:
com.android.ant.AndroidInitTask
The following properties are put in place by the importing task:
android-jar, android-aidl, aapt, aidl, and dx
Additionnaly, the task sets up the following classpath reference:
android.target.classpath
This is used by the compiler task as the boot classpath.
-->
<!-- Custom tasks -->
<taskdef name="aaptexec"
classname="com.android.ant.AaptExecLoopTask"
classpathref="android.antlibs"/>
<taskdef name="apkbuilder"
classname="com.android.ant.ApkBuilderTask"
classpathref="android.antlibs"/>
<!-- Properties -->
<property name="android-tools" value="${sdk-location}/tools" />
<!-- Input directories -->
<property name="source-folder" value="src" />
<property name="gen-folder" value="gen" />
<property name="resource-folder" value="res" />
<property name="asset-folder" value="assets" />
<property name="source-location" value="${basedir}/${source-folder}" />
<!-- folder for the 3rd party java libraries -->
<property name="external-libs-folder" value="libs" />
<!-- folder for the native libraries -->
<property name="native-libs-folder" value="libs" />
<!-- Output directories -->
<property name="gen-folder" value="gen" />
<property name="out-folder" value="bin" />
<property name="out-classes" value="${out-folder}/classes" />
<property name="out-classes-location" value="${basedir}/${out-classes}"/>
<!-- out folders for a parent project if this project is an instrumentation project -->
<property name="main-out-folder" value="../${out-folder}" />
<property name="main-out-classes" value="${main-out-folder}/classes"/>
<!-- Intermediate files -->
<property name="dex-file" value="classes.dex" />
<property name="intermediate-dex" value="${out-folder}/${dex-file}" />
<!-- dx does not properly support incorrect / or \ based on the platform
and Ant cannot convert them because the parameter is not a valid path.
Because of this we have to compute different paths depending on the platform. -->
<condition property="intermediate-dex-location"
value="${basedir}\${intermediate-dex}"
else="${basedir}/${intermediate-dex}" >
<os family="windows"/>
</condition>
<!-- The final package file to generate -->
<property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
<!-- Tools -->
<condition property="exe" value=".exe" else=""><os family="windows"/></condition>
<property name="adb" value="${android-tools}/adb${exe}"/>
<!-- rules -->
<!-- Create the output directories if they don't exist yet. -->
<target name="dirs">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${resource-folder}" />
<mkdir dir="${external-libs-folder}" />
<mkdir dir="${gen-folder}" />
<mkdir dir="${out-folder}" />
<mkdir dir="${out-classes}" />
</target>
<!-- Generate the R.java file for this project's resources. -->
<target name="resource-src" depends="dirs">
<echo>Generating R.java / Manifest.java from the resources...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg path="${gen-folder}" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource-folder}" />
<arg value="-I" />
<arg path="${android-jar}" />
</exec>
</target>
<!-- Generate java classes from .aidl files. -->
<target name="aidl" depends="dirs">
<echo>Compiling aidl files into Java classes...</echo>
<apply executable="${aidl}" failonerror="true">
<arg value="-p${android-aidl}" />
<arg value="-I${source-folder}" />
<arg value="-o${gen-folder}" />
<fileset dir="${source-folder}">
<include name="**/*.aidl"/>
</fileset>
</apply>
</target>
<!-- Compile this project's .java files into .class files. -->
<!-- I2P add buildrouter -->
<target name="compile" depends="buildrouter, resource-src, aidl">
<javac encoding="ascii" target="1.5" debug="true" extdirs=""
destdir="${out-classes}"
bootclasspathref="android.target.classpath">
<src path="${source-folder}" />
<src path="${gen-folder}" />
<classpath>
<fileset dir="${external-libs-folder}" includes="*.jar"/>
<pathelement path="${main-out-classes}"/>
</classpath>
</javac>
</target>
<!-- Convert this project's .class files into .dex files. -->
<!-- I2P add hackcleanup -->
<target name="dex" depends="compile, hackcleanup">
<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
<apply executable="${dx}" failonerror="true" parallel="true">
<!-- I2P this is a bad sign that we need this -->
<arg value="-JXmx256m" />
<arg value="--dex" />
<arg value="--output=${intermediate-dex-location}" />
<arg path="${out-classes-location}" />
<fileset dir="${external-libs-folder}" includes="*.jar"/>
</apply>
</target>
<!-- Put the project's resources into the output package file
This actually can create multiple resource package in case
Some custom apk with specific configuration have been
declared in default.properties.
-->
<target name="package-resources">
<echo>Packaging resources</echo>
<aaptexec executable="${aapt}"
command="package"
manifest="AndroidManifest.xml"
resources="${resource-folder}"
assets="${asset-folder}"
androidjar="${android-jar}"
outfolder="${out-folder}"
basename="${ant.project.name}" />
</target>
<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
basename="${ant.project.name}"
signed="true"
verbose="false">
<file path="${intermediate-dex}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
<nativefolder path="${native-libs-folder}" />
</apkbuilder>
</target>
<!-- Package the application without signing it.
This allows for the application to be signed later with an official publishing key. -->
<target name="release" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
basename="${ant.project.name}"
signed="false"
verbose="false">
<file path="${intermediate-dex}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
<nativefolder path="${native-libs-folder}" />
</apkbuilder>
<echo>All generated packages need to be signed with jarsigner before they are published.</echo>
</target>
<!-- Install the package on the default emulator -->
<target name="install" depends="debug">
<echo>Installing ${out-debug-package} onto default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="install" />
<arg path="${out-debug-package}" />
</exec>
</target>
<target name="reinstall" depends="debug">
<echo>Installing ${out-debug-package} onto default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="install" />
<arg value="-r" />
<arg path="${out-debug-package}" />
</exec>
</target>
<!-- Uinstall the package from the default emulator -->
<target name="uninstall">
<echo>Uninstalling ${application-package} from the default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="uninstall" />
<arg path="${application-package}" />
</exec>
</target>
<target name="help">
<!-- displays starts at col 13
|13 80| -->
<echo>Android Ant Build. Available targets:</echo>
<echo> help: Displays this help.</echo>
<echo> debug: Builds the application and sign it with a debug key.</echo>
<echo> release: Builds the application. The generated apk file must be</echo>
<echo> signed before it is published.</echo>
<echo> install: Installs the debug package onto a running emulator or</echo>
<echo> device. This can only be used if the application has </echo>
<echo> not yet been installed.</echo>
<echo> reinstall: Installs the debug package on a running emulator or</echo>
<echo> device that already has the application.</echo>
<echo> The signatures must match.</echo>
<echo> uninstall: uninstall the application from a running emulator or</echo>
<echo> device.</echo>
</target>
</project>

View File

@@ -0,0 +1,11 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-2

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, I2PAndroid"
/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/i2plogo"
/>
</LinearLayout>

View File

@@ -0,0 +1,3 @@
logger.defaultLevel=INFO
logger.record.net.i2p.router.transport.FIFOBandwidthRefiller=ERROR
logger.record.net.i2p.stat.Rate=ERROR

View File

@@ -0,0 +1,22 @@
# initial router.config
# temp directory
i2p.dir.temp=/data/data/net.i2p.router/files/tmp
i2p.dir.pid=/data/data/net.i2p.router/files/tmp
# save memory
prng.buffers=2
router.decayingBloomFilterM=20
stat.full=false
i2np.udp.maxConnections=30
# no I2CP
i2p.dummyClientFacade=true
# for now
#i2np.ntcp.enable=false
#
# UDP crashes the JVM, don't know why
#
i2np.udp.enable=false
# no COMM at all!!!
#i2p.vmCommSystem=true
# not on android
i2np.upnp.enable=false
routerconsole.geoip.enable=false

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">I2PAndroid</string>
</resources>

View File

@@ -0,0 +1,142 @@
package net.i2p.router;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.List;
import net.i2p.router.Router;
import net.i2p.router.RouterLaunch;
// import net.i2p.util.NativeBigInteger;
public class I2PAndroid extends Activity
{
static Context _context;
private static final String DIR = "/data/data/net.i2p.router/files";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_context = this; // Activity extends Context
debugStuff();
initialize();
// 300ms per run
// 5x slower than java on my server and 50x slower than native on my server
// NativeBigInteger.main(null);
}
public void onRestart()
{
System.err.println("onRestart called");
super.onRestart();
}
public void onStart()
{
System.err.println("onStart called");
super.onStart();
RouterLaunch.main(null);
System.err.println("Router.main finished");
}
public void onResume()
{
System.err.println("onResume called");
super.onResume();
}
public void onPause()
{
System.err.println("onPause called");
super.onPause();
}
public void onStop()
{
System.err.println("onStop called");
super.onStop();
// from routerconsole ContextHelper
List contexts = RouterContext.listContexts();
if ( (contexts == null) || (contexts.isEmpty()) )
throw new IllegalStateException("No contexts. This is usually because the router is either starting up or shutting down.");
RouterContext ctx = (RouterContext)contexts.get(0);
// shutdown() doesn't return so use shutdownGracefully()
ctx.router().shutdownGracefully(Router.EXIT_HARD);
System.err.println("shutdown complete");
}
public void onDestroy()
{
System.err.println("onDestroy called");
super.onDestroy();
}
public static Context getContext() {
return _context;
}
private void debugStuff() {
System.err.println("java.io.tmpdir" + ": " + System.getProperty("java.io.tmpdir"));
System.err.println("java.vendor" + ": " + System.getProperty("java.vendor"));
System.err.println("java.version" + ": " + System.getProperty("java.version"));
System.err.println("os.arch" + ": " + System.getProperty("os.arch"));
System.err.println("os.name" + ": " + System.getProperty("os.name"));
System.err.println("os.version" + ": " + System.getProperty("os.version"));
System.err.println("user.dir" + ": " + System.getProperty("user.dir"));
System.err.println("user.home" + ": " + System.getProperty("user.home"));
System.err.println("user.name" + ": " + System.getProperty("user.name"));
}
private void initialize() {
// Until we can edit the router.config on the device,
// copy it from the resource every time.
// File f = new I2PFile("router.config");
// if (!f.exists()) {
copyResourceToFile(R.raw.router_config, "router.config");
copyResourceToFile(R.raw.logger_config, "logger.config");
copyResourceToFile(R.raw.blocklist_txt, "blocklist.txt");
// }
// Set up the locations so Router and WorkingDir can find them
System.setProperty("i2p.dir.base", DIR);
System.setProperty("i2p.dir.config", DIR);
System.setProperty("wrapper.logfile", DIR + "/wrapper.log");
}
private void copyResourceToFile(int resID, String f) {
InputStream in = null;
FileOutputStream out = null;
System.err.println("Creating file " + f + " from resource");
byte buf[] = new byte[4096];
try {
// Context methods
in = getResources().openRawResource(resID);
out = openFileOutput(f, 0);
int read = 0;
while ( (read = in.read(buf)) != -1)
out.write(buf, 0, read);
} catch (IOException ioe) {
} catch (Resources.NotFoundException nfe) {
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (out != null) try { out.close(); } catch (IOException ioe) {}
}
}
}

View File

@@ -0,0 +1,163 @@
package net.i2p.util;
/*
* public domain
*
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
/**
* bridge to android logging
*
* @author zzz
*/
class LogWriter implements Runnable {
private final static long CONFIG_READ_ITERVAL = 10 * 1000;
private long _lastReadConfig = 0;
private long _numBytesInCurrentFile = 0;
private OutputStream _currentOut; // = System.out
private int _rotationNum = -1;
private String _logFilenamePattern;
private File _currentFile;
private LogManager _manager;
private boolean _write;
private LogWriter() { // nop
}
public LogWriter(LogManager manager) {
_manager = manager;
}
public void stopWriting() {
_write = false;
}
public void run() {
_write = true;
try {
while (_write) {
flushRecords();
rereadConfig();
}
System.err.println("Done writing");
} catch (Exception e) {
System.err.println("Error writing the logs: " + e.getMessage());
e.printStackTrace();
}
}
public void flushRecords() { flushRecords(true); }
public void flushRecords(boolean shouldWait) {
try {
List records = _manager._removeAll();
if (records == null) return;
for (int i = 0; i < records.size(); i++) {
LogRecord rec = (LogRecord) records.get(i);
writeRecord(rec);
}
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (shouldWait) {
try {
synchronized (this) {
this.wait(10*1000);
}
} catch (InterruptedException ie) { // nop
}
}
}
}
public String currentFile() {
return _currentFile != null ? _currentFile.getAbsolutePath() : "uninitialized";
}
private void rereadConfig() {
long now = Clock.getInstance().now();
if (now - _lastReadConfig > CONFIG_READ_ITERVAL) {
_manager.rereadConfig();
_lastReadConfig = now;
}
}
private void writeRecord(LogRecord rec) {
if (rec.getThrowable() == null)
log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage());
else
log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage(), rec.getThrowable());
}
public void log(int priority, Class src, String name, String threadName, String msg) {
if (src != null) {
String tag = src.getName();
int dot = tag.lastIndexOf(".");
if (dot >= 0)
tag = tag.substring(dot + 1);
android.util.Log.println(toAndroidLevel(priority),
tag,
'[' + threadName + "] " + msg);
} else if (name != null)
android.util.Log.println(toAndroidLevel(priority),
name,
'[' + threadName + "] " + msg);
else
android.util.Log.println(toAndroidLevel(priority),
threadName, msg);
}
public void log(int priority, Class src, String name, String threadName, String msg, Throwable t) {
if (src != null) {
String tag = src.getName();
int dot = tag.lastIndexOf(".");
if (dot >= 0)
tag = tag.substring(dot + 1);
android.util.Log.println(toAndroidLevel(priority),
tag,
'[' + threadName + "] " + msg +
' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
} else if (name != null)
android.util.Log.println(toAndroidLevel(priority),
name,
'[' + threadName + "] " + msg +
' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
else
android.util.Log.println(toAndroidLevel(priority),
threadName,
msg + ' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
}
private static int toAndroidLevel(int level) {
switch (level) {
case Log.DEBUG:
return android.util.Log.DEBUG;
case Log.INFO:
return android.util.Log.INFO;
case Log.WARN:
return android.util.Log.WARN;
case Log.ERROR:
case Log.CRIT:
default:
return android.util.Log.ERROR;
}
}
private static final String replace(String pattern, int num) {
char c[] = pattern.toCharArray();
StringBuffer buf = new StringBuffer();
for (int i = 0; i < c.length; i++) {
if ( (c[i] != '#') && (c[i] != '@') )
buf.append(c[i]);
else
buf.append(num);
}
return buf.toString();
}
}

View File

@@ -71,4 +71,44 @@
nbproject/build-impl.xml file.
-->
<target depends="jar" description="Build BOB into a SINGLE JAR." name="onejar">
<!-- Make needed working dirs -->
<mkdir dir="${dist.dir}/lib" />
<mkdir dir="${dist.dir}/classes" />
<!-- Copy jars -->
<copy todir="${dist.dir}/lib" flatten="true" >
<path>
<pathelement path="${javac.classpath}" />
</path>
</copy>
<copy todir="${dist.dir}/lib" file="../../installer/lib/jbigi/jbigi.jar" />
<!-- Extract the classes inside the jar files -->
<unjar dest="${dist.dir}/classes" >
<fileset dir="${dist.dir}/lib" >
<include name="**/*.jar" />
</fileset>
</unjar>
<!-- Recombine the classes into a new jar file -->
<jar jarfile="${dist.dir}/lib/all-in-one.jar" >
<fileset dir="${dist.dir}/classes" />
</jar>
<!-- Clean up work area -->
<delete dir="${dist.dir}/classes" followsymlinks="false" includeemptydirs="true"/>
<!-- Make the single jar file -->
<jar jarfile="dist/BOB-one.jar" >
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="${dist.dir}/lib/all-in-one.jar" excludes="**/META-INF/*" />
<manifest>
<attribute name="Main-Class" value="net.i2p.BOB.Main" />
</manifest>
</jar>
<!-- Clean up the fake jar file -->
<delete file="${dist.dir}/lib/all-in-one.jar" />
</target>
</project>

View File

@@ -3,5 +3,6 @@ do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
jaxbwiz.endorsed.dirs=/usr/local/netbeans-6.8/ide12/modules/ext/jaxb/api
jaxws.endorsed.dir=/usr/local/netbeans-6.5/java2/modules/ext/jaxws21/api:/usr/local/netbeans-6.5/ide10/modules/ext/jaxb/api
user.properties.file=/root/.netbeans/6.5/build.properties

View File

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

View File

@@ -1,5 +1,6 @@
application.homepage=http://bob.i2p/
application.title=BOB
application.vendor=root
application.vendor=Sponge
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=8
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=8
@@ -11,6 +12,7 @@ build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
@@ -23,6 +25,7 @@ debug.test.classpath=\
dist.dir=dist
dist.jar=${dist.dir}/BOB.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
file.reference.build-javadoc=../../i2p.i2p/build/javadoc
file.reference.i2p.jar=../../core/java/build/i2p.jar
@@ -33,7 +36,7 @@ file.reference.router.jar=../../router/java/build/router.jar
file.reference.streaming.jar=../streaming/java/build/streaming.jar
file.reference.wrapper.jar=../../installer/lib/wrapper/linux/wrapper.jar
includes=**
jar.compress=false
jar.compress=true
javac.classpath=\
${file.reference.router.jar}:\
${file.reference.i2ptunnel.jar}:\
@@ -63,8 +66,9 @@ javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
jnlp.codebase.type=local
jnlp.codebase.url=file:/root/NetBeansProjects/i2p.i2p/apps/BOB/dist/
jnlp.codebase.url=file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/dist
jnlp.descriptor=application
jnlp.enabled=false
jnlp.offline-allowed=false

View File

@@ -256,11 +256,13 @@ public class BOB {
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;

View File

@@ -50,7 +50,7 @@ public class DoCMDS implements Runnable {
// FIX ME
// I need a better way to do versioning, but this will do for now.
public static final String BMAJ = "00", BMIN = "00", BREV = "08", BEXT = "";
public static final String BMAJ = "00", BMIN = "00", BREV = "0C", BEXT = "";
public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT;
private Socket server;
private Properties props;
@@ -691,6 +691,7 @@ public class DoCMDS implements Runnable {
try {
prikey = new ByteArrayOutputStream();
prikey.write(net.i2p.data.Base64.decode(Arg));
d = new Destination();
d.fromBase64(Arg);
} catch (Exception ex) {
Arg = "";

View File

@@ -60,20 +60,9 @@ public class I2Plistener implements Runnable {
this._log = _log;
this.socketManager = S;
this.serverSocket = SS;
// tgwatch = 1;
this.lives = lives;
}
private void rlock() throws Exception {
database.getReadLock();
info.getReadLock();
}
private void runlock() throws Exception {
database.releaseReadLock();
info.releaseReadLock();
}
/**
* Simply listen on I2P port, and thread connections
*
@@ -83,34 +72,31 @@ public class I2Plistener implements Runnable {
I2PSocket sessSocket = null;
int conn = 0;
try {
die:
{
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
g = false;
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
} catch (I2PException e) {
// bad shit
System.out.println("Exception " + e);
if (g) {
g = false;
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);
t.start();
}
}
} catch (I2PException e) {
// bad shit
System.out.println("Exception " + e);
}
} finally {
try {

View File

@@ -102,6 +102,7 @@ public class I2PtoTCP implements Runnable {
break die;
}
sock = new Socket(host, port);
sock.setKeepAlive(true);
// make readers/writers
in = sock.getInputStream();
out = sock.getOutputStream();

View File

@@ -104,10 +104,10 @@ public class MUXlisten implements Runnable {
this.database.releaseReadLock();
this.info.releaseReadLock();
socketManager = I2PSocketManagerFactory.createManager(prikey, Q);
if (this.come_in) {
this.listener = new ServerSocket(port, backlog, host);
}
socketManager = I2PSocketManagerFactory.createManager(prikey, Q);
// I2PException, IOException, RuntimeException
// To bad we can't just catch and enumerate....
// } catch (I2PException e) {
@@ -141,8 +141,6 @@ public class MUXlisten implements Runnable {
this.info.add("STARTING", new Boolean(false));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
// throw new Exception(e);
// Debugging, I guess.
e.printStackTrace();
throw new RuntimeException(e);
}
@@ -313,6 +311,19 @@ public class MUXlisten implements Runnable {
} catch (InterruptedException ex) {
}
// Hopefully nuke stuff here...
{
String boner = tg.getName();
try {
_log.warn("destroySocketManager " + boner);
socketManager.destroySocketManager();
_log.warn("destroySocketManager Successful" + boner);
} catch (Exception e) {
// nop
_log.warn("destroySocketManager Failed" + boner);
_log.warn(e.toString());
}
}
// zero out everything.
try {
wlock();

View File

@@ -78,16 +78,20 @@ public class TCPio implements Runnable {
* --Sponge
*
* Tested with 128 bytes, and there was no performance gain.
* 8192 bytes did lower load average across many connections.
* Should I raise it higer? The correct thing to do would be to
* override... perhaps use NTCP, but I2P's streaming lib lacks
* anything NTCP compatable.
*
* --Sponge
*/
int b;
byte a[] = new byte[1];
byte a[] = new byte[8192];
try {
try {
while (lives.get()) {
b = Ain.read(a, 0, 1);
b = Ain.read(a, 0, 8192);
if (b > 0) {
Aout.write(a, 0, b);
} else if (b == 0) {

View File

@@ -64,16 +64,6 @@ public class TCPlistener implements Runnable {
this.lives = lives;
}
private void rlock() throws Exception {
database.getReadLock();
info.getReadLock();
}
private void runlock() throws Exception {
database.releaseReadLock();
info.releaseReadLock();
}
/**
* Simply listen on TCP port, and thread connections
*
@@ -81,30 +71,28 @@ public class TCPlistener implements Runnable {
public void run() {
boolean g = false;
int conn = 0;
Socket server = null;
try {
die:
{
try {
Socket server = new Socket();
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
try {
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
server.setKeepAlive(true);
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
} catch (IOException ioe) {
}
} catch (IOException ioe) {
}
} finally {
try {

View File

@@ -146,8 +146,14 @@ public class TCPtoI2P implements Runnable {
input = line.toLowerCase();
Destination dest = null;
if (input.endsWith(".i2p")) {
dest = I2PTunnel.destFromName(input);
line = dest.toBase64();
try {
dest = I2PTunnel.destFromName(input);
line = dest.toBase64();
} catch (NullPointerException npe) {
// Could not find the destination!?
Emsg("Can't find destination: " + input, out);
return;
}
}
dest = new Destination();
dest.fromBase64(line);

View File

@@ -1,63 +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 addressbook;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* A wrapper for addressbook to allow it to be started as a web application.
*
* @author Ragnarok
*
*/
public class Servlet extends GenericServlet {
/* (non-Javadoc)
* @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
*/
public void service(ServletRequest request, ServletResponse response) {
}
/* (non-Javadoc)
* @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
*/
@Override
public void init(ServletConfig config) {
try {
super.init(config);
} catch (ServletException exp) {
}
String[] args = new String[1];
args[0] = config.getInitParameter("home");
DaemonThread thread = new DaemonThread(args);
thread.setDaemon(true);
thread.setName("Addressbook");
thread.start();
System.out.println("INFO: Starting Addressbook " + Daemon.VERSION);
System.out.println("INFO: config root under " + args[0]);
}
}

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;
@@ -193,7 +193,8 @@ public class AddressBook {
(! host.endsWith(".router.i2p")) &&
(! host.endsWith(".console.i2p")) &&
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AAAA")) ||
// null cert ends with AAAA but other zero-length certs would be AA
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AA")) ||
(dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
dest.replaceAll("[a-zA-Z0-9~-]", "").length() == 0
;

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -39,6 +39,9 @@ import java.util.Map;
* 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?
*
* @author Ragnarok
*/
public class ConfigParser {

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.util.HashMap;
@@ -39,6 +39,7 @@ import net.i2p.I2PAppContext;
public class Daemon {
public static final String VERSION = "2.0.3";
private static final Daemon _instance = new Daemon();
private boolean _running;
/**
* Update the router and published address books using remote data from the
@@ -126,6 +127,7 @@ public class Daemon {
}
public void run(String[] args) {
_running = true;
String settingsLocation = "config.txt";
File homeFile;
if (args.length > 0) {
@@ -166,7 +168,7 @@ public class Daemon {
// Static method, and redundent Thread.currentThread().sleep(5*60*1000);
} catch (InterruptedException ie) {}
while (true) {
while (_running) {
long delay = Long.parseLong((String) settings.get("update_delay"));
if (delay < 1) {
delay = 1;
@@ -179,6 +181,8 @@ public class Daemon {
}
} catch (InterruptedException exp) {
}
if (!_running)
break;
settings = ConfigParser.parse(settingsFile, defaultSettings);
}
}
@@ -192,4 +196,9 @@ public class Daemon {
_instance.notifyAll();
}
}
public static void stop() {
_instance._running = false;
wakeup();
}
}

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
/**
* A thread that waits five minutes, then runs the addressbook daemon.
@@ -51,4 +51,9 @@ public class DaemonThread extends Thread {
//}
Daemon.main(this.args);
}
}
public void halt() {
Daemon.stop();
interrupt();
}
}

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.BufferedWriter;
import java.io.File;

View File

@@ -0,0 +1,96 @@
/*
* 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

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
/**
* A subscription to a remote address book.

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.util.Iterator;
import java.util.List;

View File

@@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;

View File

@@ -6,11 +6,17 @@
<web-app>
<servlet>
<servlet-name>addressbook</servlet-name>
<servlet-class>addressbook.Servlet</servlet-class>
<servlet-class>net.i2p.addressbook.Servlet</servlet-class>
<init-param>
<param-name>home</param-name>
<param-value>./addressbook</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
<servlet-mapping>
<servlet-name>addressbook</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

View File

@@ -1 +1,7 @@
# NOTE: This I2P config file must use UTF-8 encoding
#
# If you have a 'split' directory installation, with configuration
# files in ~/.i2p (Linux) or %APPDATA%\I2P (Windows), be sure to
# edit the file in the configuration directory, NOT the install directory.
#
i2psnark.dir=i2psnark

View File

@@ -0,0 +1,17 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

View File

@@ -37,7 +37,7 @@
</javac>
</target>
<target name="jar" depends="builddep, compile">
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class">
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class">
<manifest>
<attribute name="Main-Class" value="org.klomp.snark.Snark" />
<attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" />
@@ -51,12 +51,45 @@
- So we must continue to duplicate everything in the war.
<classes dir="./build/obj" includes="**/I2PSnarkServlet*.class" />
-->
<target name="war" depends="jar">
<war destfile="../i2psnark.war" webxml="../web.xml">
<classes dir="./build/obj" includes="**/*.class" excludes="**/RunStandalone.class" />
<target name="war" depends="jar, bundle">
<war destfile="../i2psnark.war" webxml="../web.xml" basedir="../" includes="_icons/*" >
<!-- include only the web stuff, as of 0.7.12 the router will add i2psnark.jar to the classpath for the war -->
<classes dir="./build/obj" includes="**/web/*.class" />
</war>
</target>
<target name="bundle" depends="compile">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="false" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
</exec>
</target>
<target name="poupdate" depends="compile">
<!-- Update the messages_*.po files. -->
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="true" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<arg value="-p" />
</exec>
</target>
<target name="standalone" depends="standalone_prep">
<zip destfile="i2psnark-standalone.zip">
<zipfileset dir="./dist/" prefix="i2psnark/" />
@@ -95,9 +128,7 @@
<delete dir="./dist" />
</target>
<target name="cleandep" depends="clean">
<ant dir="../../ministreaming/java/" target="distclean" />
</target>
<target name="distclean" depends="clean">
<ant dir="../../ministreaming/java/" target="distclean" />
</target>
</project>

View File

@@ -0,0 +1,26 @@
@echo off
set Callfrom=%cd%
set Paras=%1
rem before calling make sure you have msys and mingw 's "bin" path
rem in your current searching path
rem type "set path" to check
if not exist ..\locale\*.only goto updateALL
rem put a messages_xx.only(eg messages_zh.only) into locale folder
rem this script will only touch the po file(eg zh) you specified, leaving other po files untact.
for %%i in (..\locale\*.only) do set PO=%%~ni
echo [Notice] Yu choose to Ony update the choosen file: %PO%.po
for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po-
call sh --login %cd%\bmsg.sh
for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po
goto end
:updateALL
call sh --login %cd%\bmsg.sh
:end
echo End of Message Bundling

View File

@@ -0,0 +1,85 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
#
# usage:
# bundle-messages.sh (generates the resource bundle from the .po file)
# bundle-messages.sh -p (updates the .po file from the source tags, then generates the resource bundle)
#
# zzz - public domain
#
CLASS=org.klomp.snark.web.messages
TMPFILE=build/javafiles.txt
export TZ=UTC
if [ "$1" = "-p" ]
then
POUPDATE=1
fi
# add ../java/ so the refs will work in the po file
JPATHS="../java/src"
for i in ../locale/messages_*.po
do
# get language
LG=${i#../locale/messages_}
LG=${LG%.po}
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
find $JPATHS -name *.java -newer $i > $TMPFILE
fi
if [ -s build/obj/org/klomp/snark/web/messages_$LG.class -a \
build/obj/org/klomp/snark/web/messages_$LG.class -nt $i -a \
! -s $TMPFILE ]
then
continue
fi
if [ "$POUPDATE" = "1" ]
then
echo "Updating the $i file from the tags..."
# extract strings from java and jsp files, and update messages.po files
# translate calls must be one of the forms:
# _("foo")
# _x("foo")
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean poupdate.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ --keyword=_x \
-o ${i}t
if [ $? -ne 0 ]
then
echo 'Warning - xgettext failed, not updating translations'
rm -f ${i}t
break
fi
msgmerge -U --backup=none $i ${i}t
if [ $? -ne 0 ]
then
echo 'Warning - msgmerge failed, not updating translations'
rm -f ${i}t
break
fi
rm -f ${i}t
# so we don't do this again
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
done
rm -f $TMPFILE
# todo: return failure
exit 0

View File

@@ -7,7 +7,6 @@ package org.klomp.snark;
import java.util.Arrays;
import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.client.I2PSessionException;
import net.i2p.client.I2PClient;
import net.i2p.client.I2PSession;

View File

@@ -137,6 +137,7 @@ public class BitField
return count >= size;
}
@Override
public String toString()
{
// Not very efficient

View File

@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
@@ -36,7 +37,7 @@ import net.i2p.util.Log;
*/
public class ConnectionAcceptor implements Runnable
{
private Log _log = new Log(ConnectionAcceptor.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ConnectionAcceptor.class);
private I2PServerSocket serverSocket;
private PeerAcceptor peeracceptor;
private Thread thread;

View File

@@ -4,7 +4,6 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -17,16 +16,19 @@ import net.i2p.I2PException;
import net.i2p.client.I2PSession;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketEepGet;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
import net.i2p.data.Hash;
import net.i2p.util.ConcurrentHashSet;
import net.i2p.util.EepGet;
import net.i2p.util.FileUtil;
import net.i2p.util.Log;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer;
import net.i2p.util.Translate;
/**
* I2P specific helpers for I2PSnark
@@ -43,10 +45,10 @@ public class I2PSnarkUtil {
private int _proxyPort;
private String _i2cpHost;
private int _i2cpPort;
private Map _opts;
private Map<String, String> _opts;
private I2PSocketManager _manager;
private boolean _configured;
private Set _shitlist;
private final Set<Hash> _shitlist;
private int _maxUploaders;
private int _maxUpBW;
private int _maxConnections;
@@ -63,9 +65,9 @@ public class I2PSnarkUtil {
_context = ctx;
_log = _context.logManager().getLog(Snark.class);
_opts = new HashMap();
setProxy("127.0.0.1", 4444);
//setProxy("127.0.0.1", 4444);
setI2CPConfig("127.0.0.1", 7654, null);
_shitlist = new HashSet(64);
_shitlist = new ConcurrentHashSet();
_configured = false;
_maxUploaders = Snark.MAX_TOTAL_UPLOADERS;
_maxUpBW = DEFAULT_MAX_UP_BW;
@@ -83,6 +85,7 @@ public class I2PSnarkUtil {
* host for no proxying)
*
*/
/*****
public void setProxy(String host, int port) {
if ( (host != null) && (port > 0) ) {
_shouldProxy = true;
@@ -95,6 +98,7 @@ public class I2PSnarkUtil {
}
_configured = true;
}
******/
public boolean configured() { return _configured; }
@@ -126,7 +130,7 @@ public class I2PSnarkUtil {
public String getI2CPHost() { return _i2cpHost; }
public int getI2CPPort() { return _i2cpPort; }
public Map getI2CPOptions() { return _opts; }
public Map<String, String> getI2CPOptions() { return _opts; }
public String getEepProxyHost() { return _proxyHost; }
public int getEepProxyPort() { return _proxyPort; }
public boolean getEepProxySet() { return _shouldProxy; }
@@ -185,18 +189,15 @@ public class I2PSnarkUtil {
/** connect to the given destination */
I2PSocket connect(PeerID peer) throws IOException {
Hash dest = peer.getAddress().calculateHash();
synchronized (_shitlist) {
if (_shitlist.contains(dest))
throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are shitlisted");
}
if (_shitlist.contains(dest))
throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are shitlisted");
try {
I2PSocket rv = _manager.connect(peer.getAddress());
if (rv != null) synchronized (_shitlist) { _shitlist.remove(dest); }
if (rv != null)
_shitlist.remove(dest);
return rv;
} catch (I2PException ie) {
synchronized (_shitlist) {
_shitlist.add(dest);
}
_shitlist.add(dest);
SimpleScheduler.getInstance().addEvent(new Unshitlist(dest), 10*60*1000);
throw new IOException("Unable to reach the peer " + peer + ": " + ie.getMessage());
}
@@ -205,7 +206,7 @@ public class I2PSnarkUtil {
private class Unshitlist implements SimpleTimer.TimedEvent {
private Hash _dest;
public Unshitlist(Hash dest) { _dest = dest; }
public void timeReached() { synchronized (_shitlist) { _shitlist.remove(_dest); } }
public void timeReached() { _shitlist.remove(_dest); }
}
/**
@@ -231,7 +232,13 @@ public class I2PSnarkUtil {
if (rewrite)
fetchURL = rewriteAnnounce(url);
//_log.debug("Rewritten url [" + fetchURL + "]");
EepGet get = new EepGet(_context, _shouldProxy, _proxyHost, _proxyPort, retries, out.getAbsolutePath(), fetchURL);
//EepGet get = new EepGet(_context, _shouldProxy, _proxyHost, _proxyPort, retries, out.getAbsolutePath(), fetchURL);
// Use our tunnel for announces and .torrent fetches too! Make sure we're connected first...
if (!connected()) {
if (!connect())
return null;
}
EepGet get = new I2PSocketEepGet(_context, _manager, retries, out.getAbsolutePath(), fetchURL);
if (get.fetch()) {
_log.debug("Fetch successful [" + url + "]: size=" + out.length());
return out;
@@ -327,6 +334,11 @@ public class I2PSnarkUtil {
return rv;
}
/** @param ot non-null */
public void setOpenTrackerString(String ot) {
_opts.put(PROP_OPENTRACKERS, ot);
}
public String getOpenTrackerString() {
String rv = (String) _opts.get(PROP_OPENTRACKERS);
if (rv == null)
@@ -345,7 +357,7 @@ public class I2PSnarkUtil {
while (tok.hasMoreTokens())
rv.add(tok.nextToken());
if (rv.size() <= 0)
if (rv.isEmpty())
return null;
return rv;
}
@@ -390,4 +402,37 @@ public class I2PSnarkUtil {
break;
}
}
private static final String BUNDLE_NAME = "org.klomp.snark.web.messages";
/** lang in routerconsole.lang property, else current locale */
public String getString(String key) {
return Translate.getString(key, _context, BUNDLE_NAME);
}
/**
* translate a string with a parameter
* This is a lot more expensive than getString(s, ctx), so use sparingly.
*
* @param s string to be translated containing {0}
* The {0} will be replaced by the parameter.
* Single quotes must be doubled, i.e. ' -> '' in the string.
* @param o parameter, not translated.
* To tranlslate parameter also, use _("foo {0} bar", _("baz"))
* Do not double the single quotes in the parameter.
* Use autoboxing to call with ints, longs, floats, etc.
*/
public String getString(String s, Object o) {
return Translate.getString(s, o, _context, BUNDLE_NAME);
}
/** {0} and {1} */
public String getString(String s, Object o, Object o2) {
return Translate.getString(s, o, o2, _context, BUNDLE_NAME);
}
/** ngettext @since 0.7.14 */
public String getString(int n, String s, String p) {
return Translate.getString(n, s, p, _context, BUNDLE_NAME);
}
}

View File

@@ -110,6 +110,7 @@ class Message
dos.write(data, off, len);
}
@Override
public String toString()
{
switch (type)

View File

@@ -30,6 +30,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.i2p.I2PAppContext;
import net.i2p.crypto.SHA1;
import net.i2p.data.Base64;
import net.i2p.util.Log;
@@ -47,7 +48,7 @@ import org.klomp.snark.bencode.InvalidBEncodingException;
*/
public class MetaInfo
{
private static final Log _log = new Log(MetaInfo.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(MetaInfo.class);
private final String announce;
private final byte[] info_hash;
private final String name;
@@ -345,6 +346,7 @@ public class MetaInfo
return length;
}
@Override
public String toString()
{
return "MetaInfo[info_hash='" + hexencode(info_hash)

View File

@@ -106,6 +106,7 @@ public class Peer implements Comparable
/**
* Returns the String representation of the peerID.
*/
@Override
public String toString()
{
if (peerID != null)
@@ -125,6 +126,7 @@ public class Peer implements Comparable
/**
* The hash code of a Peer is the hash code of the peerID.
*/
@Override
public int hashCode()
{
return peerID.hashCode() ^ (2 << _id);
@@ -134,6 +136,7 @@ public class Peer implements Comparable
* Two Peers are equal when they have the same PeerID.
* All other properties are ignored.
*/
@Override
public boolean equals(Object o)
{
if (o instanceof Peer)
@@ -385,6 +388,7 @@ public class Peer implements Comparable
* Sets whether or not we are interested in pieces from this peer.
* Defaults to false. When interest is true and this peer unchokes
* us then we start downloading from it. Has no effect when not connected.
* @deprecated unused
*/
public void setInteresting(boolean interest)
{

View File

@@ -28,6 +28,7 @@ import java.io.OutputStream;
import java.io.SequenceInputStream;
import java.util.Iterator;
import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
@@ -41,7 +42,7 @@ import net.i2p.util.Log;
*/
public class PeerAcceptor
{
private static final Log _log = new Log(PeerAcceptor.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerAcceptor.class);
private final PeerCoordinator coordinator;
final PeerCoordinatorSet coordinators;

View File

@@ -26,6 +26,8 @@ import java.util.List;
import java.util.Random;
import java.util.TimerTask;
import net.i2p.I2PAppContext;
/**
* TimerTask that checks for good/bad up/downloader. Works together
* with the PeerCoordinator to select which Peers get (un)choked.
@@ -43,7 +45,7 @@ class PeerCheckerTask extends TimerTask
this.coordinator = coordinator;
}
private Random random = new Random();
private static final Random random = I2PAppContext.getGlobalContext().random();
public void run()
{
@@ -105,15 +107,15 @@ class PeerCheckerTask extends TimerTask
peer.resetCounters();
_util.debug(peer + ":", Snark.DEBUG);
_util.debug(" ul: " + upload/KILOPERSECOND
+ " dl: " + download/KILOPERSECOND
_util.debug(" ul: " + upload*1024/KILOPERSECOND
+ " dl: " + download*1024/KILOPERSECOND
+ " i: " + peer.isInterested()
+ " I: " + peer.isInteresting()
+ " c: " + peer.isChoking()
+ " C: " + peer.isChoked(),
Snark.DEBUG);
// Choke half of them rather than all so it isn't so drastic...
// Choke a percentage of them rather than all so it isn't so drastic...
// unless this torrent is over the limit all by itself.
boolean overBWLimitChoke = upload > 0 &&
((overBWLimit && random.nextBoolean()) ||

View File

@@ -23,11 +23,12 @@ package org.klomp.snark;
import java.io.DataInputStream;
import java.io.IOException;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
class PeerConnectionIn implements Runnable
{
private Log _log = new Log(PeerConnectionIn.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerConnectionIn.class);
private final Peer peer;
private final DataInputStream din;
@@ -129,7 +130,7 @@ class PeerConnectionIn implements Runnable
din.readFully(bitmap);
ps.bitfieldMessage(bitmap);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Received bitmap from " + peer + " on " + peer.metainfo.getName() + ": size=" + (i-1) + ": " + ps.bitfield);
_log.debug("Received bitmap from " + peer + " on " + peer.metainfo.getName() + ": size=" + (i-1) /* + ": " + ps.bitfield */ );
break;
case 6:
piece = din.readInt();

View File

@@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.i2p.I2PAppContext;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.SimpleScheduler;
@@ -33,7 +34,7 @@ import net.i2p.util.SimpleTimer;
class PeerConnectionOut implements Runnable
{
private Log _log = new Log(PeerConnectionOut.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerConnectionOut.class);
private final Peer peer;
private final DataOutputStream dout;
@@ -41,7 +42,7 @@ class PeerConnectionOut implements Runnable
private boolean quit;
// Contains Messages.
private List sendQueue = new ArrayList();
private final List sendQueue = new ArrayList();
private static long __id = 0;
private long _id;
@@ -141,7 +142,7 @@ class PeerConnectionOut implements Runnable
it.remove();
}
}
if (m == null && sendQueue.size() > 0) {
if (m == null && !sendQueue.isEmpty()) {
m = (Message)sendQueue.remove(0);
SimpleTimer.getInstance().removeEvent(m.expireEvent);
}
@@ -151,7 +152,11 @@ class PeerConnectionOut implements Runnable
{
if (_log.shouldLog(Log.DEBUG))
_log.debug("Send " + peer + ": " + m + " on " + peer.metainfo.getName());
m.sendMessage(dout);
// This can block for quite a while.
// To help get slow peers going, and track the bandwidth better,
// move this _after_ state.uploaded() and see how it works.
//m.sendMessage(dout);
lastSent = System.currentTimeMillis();
// Remove all piece messages after sending a choke message.
@@ -159,9 +164,22 @@ class PeerConnectionOut implements Runnable
removeMessage(Message.PIECE);
// XXX - Should also register overhead...
if (m.type == Message.PIECE)
state.uploaded(m.len);
// Don't let other clients requesting big chunks get an advantage
// when we are seeding;
// only count the rest of the upload after sendMessage().
int remainder = 0;
if (m.type == Message.PIECE) {
if (m.len <= PeerState.PARTSIZE) {
state.uploaded(m.len);
} else {
state.uploaded(PeerState.PARTSIZE);
remainder = m.len - PeerState.PARTSIZE;
}
}
m.sendMessage(dout);
if (remainder > 0)
state.uploaded(remainder);
m = null;
}
}

View File

@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Random;
import java.util.Timer;
import net.i2p.I2PAppContext;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
@@ -37,7 +38,7 @@ import net.i2p.util.Log;
*/
public class PeerCoordinator implements PeerListener
{
private final Log _log = new Log(PeerCoordinator.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerCoordinator.class);
final MetaInfo metainfo;
final Storage storage;
final Snark snark;
@@ -96,7 +97,7 @@ public class PeerCoordinator implements PeerListener
// Install a timer to check the uploaders.
// Randomize the first start time so multiple tasks are spread out,
// this will help the behavior with global limits
Random r = new Random();
Random r = I2PAppContext.getGlobalContext().random();
timer.schedule(new PeerCheckerTask(_util, this), (CHECK_PERIOD / 2) + r.nextInt((int) CHECK_PERIOD), CHECK_PERIOD);
}
@@ -236,10 +237,24 @@ public class PeerCoordinator implements PeerListener
{
synchronized(peers)
{
return !halted && peers.size() < _util.getMaxConnections();
return !halted && peers.size() < getMaxConnections();
}
}
/**
* Reduce max if huge pieces to keep from ooming when leeching
* @return 512K: 16; 1M: 11; 2M: 6
*/
private int getMaxConnections() {
int size = metainfo.getPieceLength(0);
int max = _util.getMaxConnections();
if (size <= 512*1024 || completed())
return max;
if (size <= 1024*1024)
return (max + max + 2) / 3;
return (max + 2) / 3;
}
public boolean halted() { return halted; }
public void halt()
@@ -257,7 +272,7 @@ public class PeerCoordinator implements PeerListener
peerCount = 0;
}
while (removed.size() > 0) {
while (!removed.isEmpty()) {
Peer peer = (Peer)removed.remove(0);
peer.disconnect();
removePeerFromPieces(peer);
@@ -294,7 +309,7 @@ public class PeerCoordinator implements PeerListener
peer.disconnect(false); // Don't deregister this connection/peer.
}
// This is already checked in addPeer() but we could have gone over the limit since then
else if (peers.size() >= _util.getMaxConnections())
else if (peers.size() >= getMaxConnections())
{
if (_log.shouldLog(Log.WARN))
_log.warn("Already at MAX_CONNECTIONS in connected() with peer: " + peer);
@@ -350,7 +365,7 @@ public class PeerCoordinator implements PeerListener
peersize = peers.size();
// This isn't a strict limit, as we may have several pending connections;
// thus there is an additional check in connected()
need_more = (!peer.isConnected()) && peersize < _util.getMaxConnections();
need_more = (!peer.isConnected()) && peersize < getMaxConnections();
// Check if we already have this peer before we build the connection
Peer old = peerIDInList(peer.getPeerID(), peers);
need_more = need_more && ((old == null) || (old.getInactiveTime() > 8*60*1000));
@@ -378,7 +393,7 @@ public class PeerCoordinator implements PeerListener
if (peer.isConnected())
_log.info("Add peer already connected: " + peer);
else
_log.info("Connections: " + peersize + "/" + _util.getMaxConnections()
_log.info("Connections: " + peersize + "/" + getMaxConnections()
+ " not accepting extra peer: " + peer);
}
return false;
@@ -405,7 +420,7 @@ public class PeerCoordinator implements PeerListener
count++;
if (uploaders < maxUploaders)
{
if (!peer.isChoked())
if (peer.isInteresting() && !peer.isChoked())
interested.add(unchokedCount++, peer);
else
interested.add(peer);
@@ -413,7 +428,7 @@ public class PeerCoordinator implements PeerListener
}
}
while (uploaders < maxUploaders && interested.size() > 0)
while (uploaders < maxUploaders && !interested.isEmpty())
{
Peer peer = (Peer)interested.remove(0);
if (_log.shouldLog(Log.DEBUG))
@@ -474,6 +489,13 @@ public class PeerCoordinator implements PeerListener
return false;
}
/**
* This should be somewhat less than the max conns per torrent,
* but not too much less, so a torrent doesn't get stuck near the end.
* @since 0.7.14
*/
private static final int END_GAME_THRESHOLD = 8;
/**
* Returns one of pieces in the given BitField that is still wanted or
* -1 if none of the given pieces are wanted.
@@ -507,6 +529,11 @@ public class PeerCoordinator implements PeerListener
//Only request a piece we've requested before if there's no other choice.
if (piece == null) {
// AND if there are almost no wanted pieces left (real end game).
// If we do end game all the time, we generate lots of extra traffic
// when the seeder is super-slow and all the peers are "caught up"
if (wantedPieces.size() > END_GAME_THRESHOLD)
return -1; // nothing to request and not in end game
// let's not all get on the same piece
Collections.shuffle(requested);
Iterator it2 = requested.iterator();

View File

@@ -12,7 +12,7 @@ import java.util.Set;
* from it there too)
*/
public class PeerCoordinatorSet {
private Set _coordinators;
private final Set _coordinators;
public PeerCoordinatorSet() {
_coordinators = new HashSet();

View File

@@ -107,6 +107,7 @@ public class PeerID implements Comparable
/**
* The hash code of a PeerID is the exclusive or of all id bytes.
*/
@Override
public int hashCode()
{
return hash;
@@ -127,6 +128,7 @@ public class PeerID implements Comparable
/**
* Two PeerIDs are equal when they have the same id, address and port.
*/
@Override
public boolean equals(Object o)
{
if (o instanceof PeerID)
@@ -171,6 +173,7 @@ public class PeerID implements Comparable
* and address is the base64 dest (was the base64 hash of the dest) which
* should match what the bytemonsoon tracker reports on its web pages.
*/
@Override
public String toString()
{
int nonZero = 0;

View File

@@ -151,7 +151,7 @@ public interface PeerListener
*
* @param state the PeerState for the peer
*/
void savePeerPartial(PeerState state);
void savePeerPartial(PeerState state); /* FIXME Exporting non-public type through public API FIXME */
/**
* Called when a peer has connected and there may be a partially
@@ -161,7 +161,7 @@ public interface PeerListener
*
* @return request (contains the partial data and valid length)
*/
Request getPeerPartial(BitField havePieces);
Request getPeerPartial(BitField havePieces); /* FIXME Exporting non-public type through public API FIXME */
/** Mark a peer's requested pieces unrequested when it is disconnected
* This prevents premature end game

View File

@@ -24,11 +24,12 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
class PeerState
{
private Log _log = new Log(PeerState.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerState.class);
final Peer peer;
final PeerListener listener;
final MetaInfo metainfo;
@@ -152,7 +153,16 @@ class PeerState
// XXX - Check for weird bitfield and disconnect?
bitfield = new BitField(bitmap, metainfo.getPieces());
}
setInteresting(listener.gotBitField(peer, bitfield));
boolean interest = listener.gotBitField(peer, bitfield);
setInteresting(interest);
if (bitfield.complete() && !interest) {
// They are seeding and we are seeding,
// why did they contact us? (robert)
// Dump them quick before we send our whole bitmap
if (_log.shouldLog(Log.WARN))
_log.warn("Disconnecting seed that connects to seeds: " + peer);
peer.disconnect(true);
}
}
void requestMessage(int piece, int begin, int length)
@@ -186,6 +196,7 @@ class PeerState
// Limit total pipelined requests to MAX_PIPELINE bytes
// to conserve memory and prevent DOS
// Todo: limit number of requests also? (robert 64 x 4KB)
if (out.queuedBytes() + length > MAX_PIPELINE_BYTES)
{
if (_log.shouldLog(Log.WARN))

View File

@@ -20,13 +20,20 @@ public class Piece implements Comparable {
return this.peers.size() - ((Piece)o).peers.size();
}
@Override
public boolean equals(Object o) {
if (o == null) return false;
try {
if (o instanceof Piece) {
if (o == null) return false;
return this.id == ((Piece)o).id;
} catch (ClassCastException cce) {
return false;
}
return false;
}
@Override
public int hashCode() {
int hash = 5;
hash = 31 * hash + this.id;
return hash;
}
public int getId() { return this.id; }
@@ -36,6 +43,7 @@ public class Piece implements Comparable {
public boolean isRequested() { return this.requested; }
public void setRequested(boolean requested) { this.requested = requested; }
@Override
public String toString() {
return String.valueOf(id);
}

View File

@@ -51,11 +51,13 @@ class Request
throw new IndexOutOfBoundsException("Illegal Request " + toString());
}
@Override
public int hashCode()
{
return piece ^ off ^ len;
}
@Override
public boolean equals(Object o)
{
if (o instanceof Request)
@@ -67,6 +69,7 @@ class Request
return false;
}
@Override
public String toString()
{
return "(" + piece + "," + off + "," + len + ")";

View File

@@ -28,7 +28,6 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Random;
import java.util.StringTokenizer;
@@ -322,7 +321,7 @@ public class Snark
// sixteen random bytes.
byte snark = (((3 + 7 + 10) * (1000 - 8)) / 992) - 17;
id = new byte[20];
Random random = new Random();
Random random = I2PAppContext.getGlobalContext().random();
int i;
for (i = 0; i < 9; i++)
id[i] = 0;
@@ -619,14 +618,14 @@ public class Snark
command_interpreter = false;
i++;
}
else if (args[i].equals("--eepproxy"))
{
String proxyHost = args[i+1];
String proxyPort = args[i+2];
if (!configured)
util.setProxy(proxyHost, Integer.parseInt(proxyPort));
i += 3;
}
//else if (args[i].equals("--eepproxy"))
// {
// String proxyHost = args[i+1];
// String proxyPort = args[i+2];
// if (!configured)
// util.setProxy(proxyHost, Integer.parseInt(proxyPort));
// i += 3;
// }
else if (args[i].equals("--i2cp"))
{
String i2cpHost = args[i+1];
@@ -735,7 +734,7 @@ public class Snark
//if (debug >= INFO && t != null)
// t.printStackTrace();
stopTorrent();
throw new RuntimeException("die bart die");
throw new RuntimeException(s + (t == null ? "" : ": " + t));
}
/**

File diff suppressed because it is too large Load Diff

View File

@@ -36,6 +36,7 @@ public class SnarkShutdown extends I2PAppThread
private final ShutdownListener listener;
/* FIXME Exporting non-public type through public API FIXME */
public SnarkShutdown(Storage storage,
PeerCoordinator coordinator,
ConnectionAcceptor acceptor,
@@ -49,6 +50,7 @@ public class SnarkShutdown extends I2PAppThread
this.listener = listener;
}
@Override
public void run()
{
//Snark.debug("Shutting down...", Snark.NOTICE);

View File

@@ -46,7 +46,7 @@ public class Storage
private final StorageListener listener;
private I2PSnarkUtil _util;
private BitField bitfield; // BitField to represent the pieces
private /* FIXME final FIXME */ BitField bitfield; // BitField to represent the pieces
private int needed; // Number of pieces needed
private boolean _probablyComplete; // use this to decide whether to open files RO
@@ -57,7 +57,8 @@ public class Storage
/** The default piece size. */
private static final int MIN_PIECE_SIZE = 256*1024;
public static final int MAX_PIECE_SIZE = 1024*1024;
/** note that we start reducing max number of peer connections above 1MB */
public static final int MAX_PIECE_SIZE = 2*1024*1024;
/** The maximum number of pieces in a torrent. */
public static final int MAX_PIECES = 10*1024;
public static final long MAX_TOTAL_SIZE = MAX_PIECE_SIZE * (long) MAX_PIECES;
@@ -285,6 +286,50 @@ public class Storage
return needed == 0;
}
/**
* @param file canonical path (non-directory)
* @return number of bytes remaining; -1 if unknown file
* @since 0.7.14
*/
public long remaining(String file) {
long bytes = 0;
for (int i = 0; i < rafs.length; i++) {
File f = RAFfile[i];
// use canonical in case snark dir or sub dirs are symlinked
String canonical = null;
if (f != null) {
try {
canonical = f.getCanonicalPath();
} catch (IOException ioe) {
f = null;
}
}
if (f != null && canonical.equals(file)) {
if (complete())
return 0;
int psz = metainfo.getPieceLength(0);
long start = bytes;
long end = start + lengths[i];
int pc = (int) (bytes / psz);
long rv = 0;
if (!bitfield.get(pc))
rv = Math.min(psz - (start % psz), lengths[i]);
int pieces = metainfo.getPieces();
for (int j = pc + 1; (((long)j) * psz) < end && j < pieces; j++) {
if (!bitfield.get(j)) {
if (((long)(j+1))*psz < end)
rv += psz;
else
rv += end - (((long)j) * psz);
}
}
return rv;
}
bytes += lengths[i];
}
return -1;
}
/**
* The BitField that tells which pieces this storage contains.
* Do not change this since this is the current state of the storage.
@@ -294,6 +339,18 @@ public class Storage
return bitfield;
}
/**
* The base file or directory name of the data,
* as specified in the .torrent file, but filtered to remove
* illegal characters. This is where the data actually is,
* relative to the snark base dir.
*
* @since 0.7.14
*/
public String getBaseName() {
return filterName(metainfo.getName());
}
/**
* Creates (and/or checks) all files from the metainfo file list.
*/
@@ -419,13 +476,29 @@ public class Storage
}
}
private static final char[] ILLEGAL = new char[] {
'<', '>', ':', '"', '/', '\\', '|', '?', '*',
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 };
/**
* Removes 'suspicious' characters from the give file name.
* Removes 'suspicious' characters from the given file name.
* http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
*/
private static String filterName(String name)
{
// XXX - Is this enough?
return name.replace(File.separatorChar, '_');
if (name.equals(".") || name.equals(" "))
return "_";
String rv = name;
if (rv.startsWith("."))
rv = '_' + rv.substring(1);
if (rv.endsWith(".") || rv.endsWith(" "))
rv = rv.substring(0, rv.length() - 1) + '_';
for (int i = 0; i < ILLEGAL.length; i++) {
if (rv.indexOf(ILLEGAL[i]) >= 0)
rv = rv.replace(ILLEGAL[i], '_');
}
return rv;
}
private File createFileFromNames(File base, List names) throws IOException
@@ -576,6 +649,9 @@ public class Storage
if (rafs == null) return;
for (int i = 0; i < rafs.length; i++)
{
// if we had an IOE in check(), the RAFlock may be null
if (RAFlock[i] == null)
continue;
try {
synchronized(RAFlock[i]) {
closeRAF(i);

View File

@@ -24,6 +24,8 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -31,6 +33,7 @@ import java.util.List;
import java.util.Random;
import java.util.Set;
import net.i2p.I2PAppContext;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
@@ -42,7 +45,7 @@ import net.i2p.util.Log;
*/
public class TrackerClient extends I2PAppThread
{
private static final Log _log = new Log(TrackerClient.class);
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(TrackerClient.class);
private static final String NO_EVENT = "";
private static final String STARTED_EVENT = "started";
private static final String COMPLETED_EVENT = "completed";
@@ -81,6 +84,7 @@ public class TrackerClient extends I2PAppThread
started = false;
}
@Override
public void start() {
if (stop) throw new RuntimeException("Dont rerun me, create a copy");
super.start();
@@ -109,6 +113,7 @@ public class TrackerClient extends I2PAppThread
return !stop && _util.connected();
}
@Override
public void run()
{
String infoHash = urlencode(meta.getInfoHash());
@@ -121,13 +126,19 @@ public class TrackerClient extends I2PAppThread
// followed by the secondary open trackers
// It's painful, but try to make sure if an open tracker is also
// the primary tracker, that we don't add it twice.
// todo: check for b32 matches as well
trackers = new ArrayList(2);
trackers.add(new Tracker(meta.getAnnounce(), true));
String primary = meta.getAnnounce();
if (isValidAnnounce(primary)) {
trackers.add(new Tracker(meta.getAnnounce(), true));
} else {
_log.warn("Skipping invalid or non-i2p announce: " + primary);
}
List tlist = _util.getOpenTrackers();
if (tlist != null) {
for (int i = 0; i < tlist.size(); i++) {
String url = (String)tlist.get(i);
if (!url.startsWith("http://")) {
if (!isValidAnnounce(url)) {
_log.error("Bad announce URL: [" + url + "]");
continue;
}
@@ -136,22 +147,29 @@ public class TrackerClient extends I2PAppThread
_log.error("Bad announce URL: [" + url + "]");
continue;
}
if (meta.getAnnounce().startsWith(url.substring(0, slash)))
if (primary.startsWith(url.substring(0, slash)))
continue;
String dest = _util.lookup(url.substring(7, slash));
if (dest == null) {
_log.error("Announce host unknown: [" + url + "]");
_log.error("Announce host unknown: [" + url.substring(7, slash) + "]");
continue;
}
if (meta.getAnnounce().startsWith("http://" + dest))
if (primary.startsWith("http://" + dest))
continue;
if (meta.getAnnounce().startsWith("http://i2p/" + dest))
if (primary.startsWith("http://i2p/" + dest))
continue;
trackers.add(new Tracker(url, false));
_log.debug("Additional announce: [" + url + "] for infoHash: " + infoHash);
}
}
if (tlist.isEmpty()) {
// FIXME really need to get this message to the gui
stop = true;
_log.error("No valid trackers for infoHash: " + infoHash);
return;
}
long uploaded = coordinator.getUploaded();
long downloaded = coordinator.getDownloaded();
long left = coordinator.getLeft();
@@ -162,10 +180,10 @@ public class TrackerClient extends I2PAppThread
try
{
if (!verifyConnected()) return;
boolean started = false;
boolean runStarted = false;
boolean firstTime = true;
int consecutiveFails = 0;
Random r = new Random();
Random r = I2PAppContext.getGlobalContext().random();
while(!stop)
{
try
@@ -178,7 +196,7 @@ public class TrackerClient extends I2PAppThread
if (firstTime) {
delay = r.nextInt(30*1000);
firstTime = false;
} else if (completed && started)
} else if (completed && runStarted)
delay = 3*SLEEP*60*1000 + random;
else if (coordinator.trackerProblems != null && ++consecutiveFails < MAX_CONSEC_FAILS)
delay = INITIAL_SLEEP;
@@ -221,7 +239,7 @@ public class TrackerClient extends I2PAppThread
Tracker tr = (Tracker)iter.next();
if ((!stop) && (!tr.stop) &&
(completed || coordinator.needPeers()) &&
(event == COMPLETED_EVENT || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
(event.equals(COMPLETED_EVENT) || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
{
try
{
@@ -237,11 +255,11 @@ public class TrackerClient extends I2PAppThread
tr.consecutiveFails = 0;
if (tr.isPrimary)
consecutiveFails = 0;
started = true;
runStarted = true;
tr.started = true;
Set peers = info.getPeers();
tr.seenPeers = peers.size();
tr.seenPeers = info.getPeerCount();
if (coordinator.trackerSeenPeers < tr.seenPeers) // update rising number quickly
coordinator.trackerSeenPeers = tr.seenPeers;
if ( (left > 0) && (!completed) ) {
@@ -252,6 +270,7 @@ public class TrackerClient extends I2PAppThread
Iterator it = ordered.iterator();
while (it.hasNext()) {
Peer cur = (Peer)it.next();
// FIXME if id == us || dest == us continue;
// only delay if we actually make an attempt to add peer
if(coordinator.addPeer(cur)) {
int delay = DELAY_MUL;
@@ -296,7 +315,7 @@ public class TrackerClient extends I2PAppThread
// we could try and total the unique peers but that's too hard for now
coordinator.trackerSeenPeers = maxSeenPeers;
if (!started)
if (!runStarted)
_util.debug(" Retrying in one minute...", Snark.DEBUG);
} // *** end of while loop
} // try
@@ -311,9 +330,9 @@ public class TrackerClient extends I2PAppThread
try
{
// try to contact everybody we can
// We don't need I2CP connection for eepget
// if (!verifyConnected()) return;
// Don't try to restart I2CP connection just to say goodbye
for (Iterator iter = trackers.iterator(); iter.hasNext(); ) {
if (!_util.connected()) return;
Tracker tr = (Tracker)iter.next();
if (tr.started && (!tr.stop) && tr.trackerProblems == null)
doRequest(tr, infoHash, peerID, uploaded,
@@ -338,7 +357,11 @@ public class TrackerClient extends I2PAppThread
+ "&uploaded=" + uploaded
+ "&downloaded=" + downloaded
+ "&left=" + left
+ ((event != NO_EVENT) ? ("&event=" + event) : "");
+ ((! event.equals(NO_EVENT)) ? ("&event=" + event) : "");
if (left <= 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers())
s += "&numwant=0";
else
s += "&numwant=" + _util.getMaxConnections();
_util.debug("Sending TrackerClient request: " + s, Snark.INFO);
tr.lastRequestTime = System.currentTimeMillis();
@@ -368,8 +391,13 @@ public class TrackerClient extends I2PAppThread
}
/**
* Very lazy byte[] to URL encoder. Just encodes everything, even
* "normal" chars.
* Very lazy byte[] to URL encoder. Just encodes almost everything, even
* some "normal" chars.
* By not encoding about 1/4 of the chars, we make random data like hashes about 16% smaller.
*
* RFC1738: 0-9a-zA-Z$-_.+!*'(),
* Us: 0-9a-zA-Z
*
*/
public static String urlencode(byte[] bs)
{
@@ -377,16 +405,38 @@ public class TrackerClient extends I2PAppThread
for (int i = 0; i < bs.length; i++)
{
int c = bs[i] & 0xFF;
sb.append('%');
if (c < 16)
sb.append('0');
sb.append(Integer.toHexString(c));
if ((c >= '0' && c <= '9') ||
(c >= 'A' && c <= 'Z') ||
(c >= 'a' && c <= 'z')) {
sb.append((char)c);
} else {
sb.append('%');
if (c < 16)
sb.append('0');
sb.append(Integer.toHexString(c));
}
}
return sb.toString();
}
private class Tracker
/**
* @return true for i2p hosts only
* @since 0.7.12
*/
static boolean isValidAnnounce(String ann) {
URL url;
try {
url = new URL(ann);
} catch (MalformedURLException mue) {
return false;
}
return url.getProtocol().equals("http") &&
(url.getHost().endsWith(".i2p") || url.getHost().equals("i2p")) &&
url.getPort() < 0;
}
private static class Tracker
{
String announce;
boolean isPrimary;

View File

@@ -23,6 +23,7 @@ package org.klomp.snark;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -37,6 +38,8 @@ public class TrackerInfo
private final String failure_reason;
private final int interval;
private final Set peers;
private int complete;
private int incomplete;
public TrackerInfo(InputStream in, byte[] my_id, MetaInfo metainfo)
throws IOException
@@ -68,11 +71,26 @@ public class TrackerInfo
throw new InvalidBEncodingException("No interval given");
else
interval = beInterval.getInt();
BEValue bePeers = (BEValue)m.get("peers");
if (bePeers == null)
throw new InvalidBEncodingException("No peer list");
peers = Collections.EMPTY_SET;
else
peers = getPeers(bePeers.getList(), my_id, metainfo);
BEValue bev = (BEValue)m.get("complete");
if (bev != null) try {
complete = bev.getInt();
if (complete < 0)
complete = 0;
} catch (InvalidBEncodingException ibe) {}
bev = (BEValue)m.get("incomplete");
if (bev != null) try {
incomplete = bev.getInt();
if (incomplete < 0)
incomplete = 0;
} catch (InvalidBEncodingException ibe) {}
}
}
@@ -115,6 +133,12 @@ public class TrackerInfo
return peers;
}
public int getPeerCount()
{
int pc = peers == null ? 0 : peers.size();
return Math.max(pc, complete + incomplete - 1);
}
public String getFailureReason()
{
return failure_reason;
@@ -125,12 +149,15 @@ public class TrackerInfo
return interval;
}
@Override
public String toString()
{
if (failure_reason != null)
return "TrackerInfo[FAILED: " + failure_reason + "]";
else
return "TrackerInfo[interval=" + interval
+ (complete > 0 ? (", complete=" + complete) : "" )
+ (incomplete > 0 ? (", incomplete=" + incomplete) : "" )
+ ", peers=" + peers + "]";
}
}

View File

@@ -279,7 +279,9 @@ public class BDecoder
public BEValue bdecodeMap() throws IOException
{
int c = getNextIndicator();
if (c != 'd')
if (c == '<')
throw new InvalidBEncodingException("Expected a .torrent metainfo file but found HTML? Check URL or file!");
else if (c != 'd')
throw new InvalidBEncodingException("Expected 'd', not '"
+ (char)c + "'");
indicator = 0;

View File

@@ -172,13 +172,14 @@ public class BEValue
/** return the untyped value */
public Object getValue() { return value; }
@Override
public String toString()
{
String valueString;
if (value instanceof byte[])
{
byte[] bs = (byte[])value;
// XXX - Stupid heuristic...
// XXX - Stupid heuristic... and not UTF-8
if (bs.length <= 12)
valueString = new String(bs);
else

View File

@@ -58,6 +58,23 @@
<Arg>webapps/i2psnark.war</Arg>
</Call>
<!-- this is so we can find the css -->
<Call name="addContext">
<Arg>
<New class="org.mortbay.http.HttpContext">
<Set name="contextPath">/themes</Set>
<Set name="resourceBase">./docs/themes</Set>
<Call name="addHandler">
<Arg>
<New class="org.mortbay.http.handler.ResourceHandler">
<Set name="redirectWelcome">FALSE</Set>
</New>
</Arg>
</Call>
</New>
</Arg>
</Call>
<!-- =============================================================== -->
<!-- Configure the Other Server Options -->
<!-- =============================================================== -->

View File

@@ -0,0 +1,655 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2psnark package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-10 17:41+0000\n"
"PO-Revision-Date: 2009-10-19 12:50+0000\n"
"Last-Translator: foo <foo@bar>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: German\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:84
#, java-format
msgid "Adding torrents in {0} minutes"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:241
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:243
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:255
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:257
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:301
msgid "Cannot change the I2CP settings while torrents are active"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:307
msgid "Disconnecting old I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:311
#, java-format
msgid "I2CP settings changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:315
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:319
msgid "Unable to reconnect with the old settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:321
msgid "Reconnected on the new I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:332
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:343
msgid "Enabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:345
msgid "Disabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:351
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:353
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:360
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:367
msgid "Configuration unchanged."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:377
#, java-format
msgid "Unable to save the config to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:395
msgid "Connecting to I2P"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:398
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:407
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:446
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:461
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:463
#, java-format
msgid "Torrent added: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:559
#, java-format
msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:562
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:564
#, java-format
msgid "Torrent file \"{0}\" cannot end in '.torrent', deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:566
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:568
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:570
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:571
#, java-format
msgid "Limit is {0}B"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:579
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:595
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:616
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:631
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:664
#, java-format
msgid "Download finished: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:664
#, java-format
msgid "size: {0}B"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
msgid "Unable to connect to I2P!"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:95
msgid "Refresh page"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:97
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
msgid "I2PSnark"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:99
msgid "Forum"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:125
msgid "Status"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:132
msgid "Hide Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:134
msgid "Show Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:138
msgid "Torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:140
msgid "ETA"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:142
msgid "Downloaded"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:144
msgid "Uploaded"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:146
msgid "Down Rate"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:148
msgid "Up Rate"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:155
msgid "Stop all torrents and the I2P tunnel"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:157
msgid "Stop All"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:162
msgid "Start all torrents and the I2P tunnel"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:164
msgid "Start All"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:181
msgid "No torrents loaded."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:186
msgid "Totals"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:188
#, java-format
msgid "{0} torrents"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:191
#, java-format
msgid "{0} connected peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748
msgid "Add torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226
#, java-format
msgid "Torrent file {0} does not exist"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
#, java-format
msgid "Torrent already running: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:238
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:242
#, java-format
msgid "Copying torrent to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:245
#, java-format
msgid "Unable to copy the torrent to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:245
#, java-format
msgid "from {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253
#, java-format
msgid "Fetching {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:257
msgid "Invalid URL - must start with http://"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
msgid "Stop"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:623
msgid "Start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:287
#, java-format
msgid "Starting up torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:325
#, java-format
msgid "Torrent file deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341
#, java-format
msgid "Data file deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
#, java-format
msgid "Data dir deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:359
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "Save configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
msgid "Create torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383
msgid "Error creating torrent - you must select a tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
#, java-format
msgid "Torrent created for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
msgid "Error creating torrent - you must enter a file or directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:412
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:421
msgid "I2P tunnel closed."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:424
msgid "Opening the I2P tunnel and starting all torrents."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:501
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
msgid "Unknown"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:504
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
msgid "TrackerErr"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:506
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:518
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:858
msgid "peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:516
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520
msgid "Seeding"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:522
msgid "Complete"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
msgid "OK"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:531
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
msgid "Stalled"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
msgid "No Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539
msgid "Stopped"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
msgid "View files"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554
msgid "Open file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778
msgid "Tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:579
msgid "Details"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613
msgid "Stop the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:621
msgid "Start the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
msgid "Remove"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634
msgid "Delete the .torrent file and the associated data file(s)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636
msgid "Delete"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679
msgid "Seed"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:697
msgid "Uninteresting"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699
msgid "Choked"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:713
msgid "Uninterested"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715
msgid "Choking"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741
msgid "Add Torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743
msgid "From URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
#, java-format
msgid "Alternately, you can copy .torrent files to {0} ."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769
msgid "Create Torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772
msgid "Data to seed"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776
msgid "File to seed (must be within the specified path)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780
msgid "Select a tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793
msgid "or"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796
msgid "Custom tracker URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816
msgid "Configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
msgid "Data directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
msgid "Directory to store torrents and data"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
msgid "Edit i2psnark.config and restart to change"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
msgid "Auto start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
msgid "If checked, automatically start torrents that are added"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855
msgid "Total uploader limit"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
msgid "Up bandwidth limit"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865
msgid "Half available bandwidth< recommended."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:867
msgid "Configure"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:871
msgid "Use open trackers also"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:875
msgid ""
"If checked, announce torrents to open trackers as well as the tracker listed "
"in the torrent file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879
msgid "Open tracker announce URLs"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:890
msgid "I2CP host"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "I2CP port"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:908
msgid "I2CP options"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966
#, java-format
msgid "Torrent fetched from {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
#, java-format
msgid "Torrent at {0} was not valid"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr ""

View File

@@ -0,0 +1,763 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2psnark package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-27 14:45+0000\n"
"PO-Revision-Date: 2010-05-27 16:54+0000\n"
"Last-Translator: 4get <forget@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Russian\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:87
#, java-format
msgid "Adding torrents in {0} minutes"
msgstr "Торренты будут подгружены через {0} минут(ы)"
#: ../java/src/org/klomp/snark/SnarkManager.java:251
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr "Новое значение лимита количества слотов отдачи: {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:253
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr "Минимально допустимое значение для количества слотов: {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:265
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr "Новое значение лимита скорости отдачи: {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:267
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "Минимально допустимое значение для лимита скорости отдачи: {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:314
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов."
#: ../java/src/org/klomp/snark/SnarkManager.java:320
msgid "Disconnecting old I2CP destination"
msgstr "Рассоединяемся по старому адресу I2CP"
#: ../java/src/org/klomp/snark/SnarkManager.java:324
#, java-format
msgid "I2CP settings changed to {0}"
msgstr "Новые параметры I2CP: {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:328
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам"
#: ../java/src/org/klomp/snark/SnarkManager.java:332
msgid "Unable to reconnect with the old settings!"
msgstr "Не удалось пересоединиться с использованием старых настроек I2CP!"
#: ../java/src/org/klomp/snark/SnarkManager.java:334
msgid "Reconnected on the new I2CP destination"
msgstr "Пересоединились по новому адресу I2CP"
#: ../java/src/org/klomp/snark/SnarkManager.java:345
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr "I2CP-приёмник перезапущен для \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:356
msgid "Enabled autostart"
msgstr "Автостарт включен"
#: ../java/src/org/klomp/snark/SnarkManager.java:358
msgid "Disabled autostart"
msgstr "Автостарт выключен"
#: ../java/src/org/klomp/snark/SnarkManager.java:364
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
#: ../java/src/org/klomp/snark/SnarkManager.java:366
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
#: ../java/src/org/klomp/snark/SnarkManager.java:373
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
#: ../java/src/org/klomp/snark/SnarkManager.java:380
msgid "Configuration unchanged."
msgstr "Настройки не изменились."
#: ../java/src/org/klomp/snark/SnarkManager.java:390
#, java-format
msgid "Unable to save the config to {0}"
msgstr "Не удалось сохранить настройки в {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:408
msgid "Connecting to I2P"
msgstr "Устанавливается соединение с I2P"
#: ../java/src/org/klomp/snark/SnarkManager.java:411
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr "Ошибка соединения с I2P, проверьте настройки I2CP!"
#: ../java/src/org/klomp/snark/SnarkManager.java:420
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr "Ошибка: Не удалось добавить торрент {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:442
#, java-format
msgid "Cannot open \"{0}\""
msgstr "Не удалось открыть \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:455
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only"
msgstr "Внимание: указанные в \"{0}\" не-i2p трекеры будут проигнорированы, будут использоваться только открытые i2p трекеры"
#: ../java/src/org/klomp/snark/SnarkManager.java:457
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!"
msgstr "Внимание: указанные в \"{0}\" не-i2p трекеры будут проигнорированы, однако использование открытых i2p трекеров отключено, Вы должны включить поддержку открытых i2p трекеров перед запуском этого торрента!"
#: ../java/src/org/klomp/snark/SnarkManager.java:476
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr "Торрент в \"{0}\" некорректен"
#: ../java/src/org/klomp/snark/SnarkManager.java:491
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr "Торрент добавлен и запущен: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:493
#, java-format
msgid "Torrent added: \"{0}\""
msgstr "Торрент добавлен: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:590
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr "Слишком много файлов в торренте \"{0}\" ({1}), удаляем его!"
#: ../java/src/org/klomp/snark/SnarkManager.java:592
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", удаляем его!"
#: ../java/src/org/klomp/snark/SnarkManager.java:594
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr "В торренте \"{0}\" не оказалось ни одной части, удаляем его!"
#: ../java/src/org/klomp/snark/SnarkManager.java:596
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr "Слишком много частей в торренте \"{0}\" (наш предел {1}), удаляем его!"
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "Слишком крупные части в торренте \"{0}\" ({1}B), удаляем его."
#: ../java/src/org/klomp/snark/SnarkManager.java:599
#, java-format
msgid "Limit is {0}B"
msgstr "Наш предел {0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:607
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr "Торренты крупнее чем {0}B пока не поддерживается, удаляем \"{1}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:623
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr "Ошибка: Невозможно удалить торрент {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:644
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr "Торрент остановлен: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:659
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr "Торрент удален: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "Download finished: \"{0}\""
msgstr "Завершена загрузка: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "size: {0}B"
msgstr "размер: {0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:720
msgid "Unable to connect to I2P!"
msgstr "Не удалось установить соединение с I2P!"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:169
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "I2PSnark — Анонимный BitTorrent Клиент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:178
msgid "Refresh page"
msgstr "Обновить страницу"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:180
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
msgid "I2PSnark"
msgstr "I2PSnark"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:182
msgid "Forum"
msgstr "Форум"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243
msgid "Status"
msgstr "Статус"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:214
msgid "Hide Peers"
msgstr "спрятать список пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217
msgid "Show Peers"
msgstr "показать список пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
msgid "Torrent"
msgstr "Торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224
msgid "ETA"
msgstr "Осталось"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226
msgid "Downloaded"
msgstr "Получено"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
msgid "Uploaded"
msgstr "Отдано"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
msgid "Down Rate"
msgstr "Скорость загрузки"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
msgid "Up Rate"
msgstr "Скорость отдачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:239
msgid "Stop all torrents and the I2P tunnel"
msgstr "Остановить все торренты и закрыть соединение с I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:241
msgid "Stop All"
msgstr "Остановить все"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
msgid "Start all torrents and the I2P tunnel"
msgstr "Запустить все торренты и открыть соединение с I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:248
msgid "Start All"
msgstr "Запустить все"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:265
msgid "No torrents loaded."
msgstr "Нет загруженных торрентов."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270
msgid "Totals"
msgstr "Всего"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "{0} торрент"
msgstr[1] "{0} торрента"
msgstr[2] "{0} торрентов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "{0} подсоединенный пир"
msgstr[1] "{0} подсоединенных пиров"
msgstr[2] "{0} подсоединенных пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
#, java-format
msgid "Torrent file {0} does not exist"
msgstr "Торрент {0} не существует"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428
#, java-format
msgid "Torrent already running: {0}"
msgstr "Торрент уже запущен: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "Торрент уже в очереди: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
#, java-format
msgid "Copying torrent to {0}"
msgstr "Копируем торрент в: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "Unable to copy the torrent to {0}"
msgstr "Не удалось скопировать торрент в: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "from {0}"
msgstr "из: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
#, java-format
msgid "Fetching {0}"
msgstr "Получение торрента: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341
msgid "Invalid URL - must start with http://"
msgstr "Некорректный URL, должен начинаться с http://"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:371
#, java-format
msgid "Starting up torrent {0}"
msgstr "Запускаем торрент: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:391
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "Удален торрент: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:415
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425
#, java-format
msgid "Data file deleted: {0}"
msgstr "Файл удален: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:417
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "Не удалось удалить файл: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436
#, java-format
msgid "Data dir deleted: {0}"
msgstr "Директория удалена: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
msgid "Error creating torrent - you must select a tracker"
msgstr "Торрент не создан — вы должны указать трекер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:482
#, java-format
msgid "Torrent created for \"{0}\""
msgstr "Создан торрент для \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:485
#, java-format
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:487
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr "Ошибка при создании торрента для: \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
msgid "Error creating torrent - you must enter a file or directory"
msgstr "Торрент не создан — вы должны указать файл или директорию"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr "Останавливаем все торренты и закрываем соединение с I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
msgid "I2P tunnel closed."
msgstr "Соединение с I2P закрыто."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
msgid "Opening the I2P tunnel and starting all torrents."
msgstr "Соединяемся с I2P и запускаем все торренты."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
msgid "Unknown"
msgstr "Неизвестный"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641
msgid "TrackerErr"
msgstr "ОшибкаТрекера"
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:648
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "{0} пир"
msgstr[1] "{0} пира"
msgstr[2] "{0} пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650
msgid "Seeding"
msgstr "Раздается"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
msgid "Complete"
msgstr "Завершен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
msgid "OK"
msgstr "Загружается"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
msgid "Stalled"
msgstr "Простаивает"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
msgid "No Peers"
msgstr "Нет Пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
msgid "Stopped"
msgstr "Остановлен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689
msgid "View files"
msgstr "Открыть директорию"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
msgid "Open file"
msgstr "Открыть файл"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:721
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933
msgid "Tracker"
msgstr "Трекер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:722
msgid "Details"
msgstr "Подробнее"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756
msgid "Stop the torrent"
msgstr "Остановить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758
msgid "Stop"
msgstr "Остановить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764
msgid "Start the torrent"
msgstr "Запустить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766
msgid "Start"
msgstr "Запустить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "Удалить торрент из списка и с диска"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776
#, java-format
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778
msgid "Remove"
msgstr "Удалить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "Удалить торрент и стереть загруженные файлы"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
#, java-format
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
msgid "Delete"
msgstr "Стереть"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
msgid "Seed"
msgstr "Сид"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "Uninteresting (У пира нет нужных нам частей торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "Uninterested (У нас нужных этому пиру частей торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:868
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "Add Torrent"
msgstr "Добавить Торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
msgid "From URL"
msgstr "Из URL"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:902
msgid "Add torrent"
msgstr "Добавить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:905
#, java-format
msgid "Alternately, you can copy .torrent files to the directory {0}."
msgstr "Ну или вы можете скопировать .torrent-файлы в директорию {0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:907
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "Удаление .torrent-файла приведет к остановке торрента."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:924
msgid "Create Torrent"
msgstr "Создать Торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
msgid "Data to seed"
msgstr "Файлы для раздачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:931
msgid "File or directory to seed (must be within the specified path)"
msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935
msgid "Select a tracker"
msgstr "Выбрать трекер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
msgid "or"
msgstr "или"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951
msgid "Specify custom tracker announce URL"
msgstr "Задать URL анонсера вручную"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:954
msgid "Create torrent"
msgstr "Создать торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:972
msgid "Configuration"
msgstr "Настройки"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:975
msgid "Data directory"
msgstr "Директория для файлов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:978
msgid "Directory to store torrents and data"
msgstr "Директория, где будут храниться торренты и загружаемые файлы"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980
msgid "Edit i2psnark.config and restart to change"
msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984
msgid "Auto start"
msgstr "Автозапуск"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
msgid "If checked, automatically start torrents that are added"
msgstr "Автоматически запускать торренты после добавления"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
msgid "Total uploader limit"
msgstr "Ограничение количества слотов отдачи"
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
msgid "peers"
msgstr "пир."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
msgid "Up bandwidth limit"
msgstr "Ограничение скорости отдачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021
msgid "Half available bandwidth recommended."
msgstr "Рекомендуется использовать половину от доступной пропускной способности."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1023
msgid "View or change router bandwidth"
msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027
msgid "Use open trackers also"
msgstr "Дополнительно использовать открытые трекеры"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035
msgid "Open tracker announce URLs"
msgstr "URL открытых трекеров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047
msgid "Inbound Settings"
msgstr "Входящие туннели"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
msgid "Outbound Settings"
msgstr "Исходящие туннели"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
msgid "I2CP host"
msgstr "Адрес I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065
msgid "I2CP port"
msgstr "Порт I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "I2CP options"
msgstr "Параметры I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082
msgid "Save configuration"
msgstr "Сохранить настройки"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "{0} хоп"
msgstr[1] "{0} хопа"
msgstr[2] "{0} хопов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1093
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "{0} туннель"
msgstr[1] "{0} туннеля"
msgstr[2] "{0} туннелей"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107
#, java-format
msgid "1 "
msgid_plural "{0} "
msgstr[0] "{0} "
msgstr[1] "{0} "
msgstr[2] "{0} "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Up to higher level directory"
msgstr "Перейти в директорию уровнем выше"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "File"
msgstr "Файл"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Size"
msgstr "Размер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
msgid "Directory"
msgstr "Директория"
# This debug error message intentionally left in English
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
msgid "Torrent not found?"
msgstr "Torrent not found?"
# This debug error message intentionally left in English
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
msgid "File not found in torrent?"
msgstr "File not found in torrent?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
msgid "complete"
msgstr "скачано"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "bytes remaining"
msgstr "байт осталось"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
#, java-format
msgid "Torrent fetched from {0}"
msgstr "Получен торрент из: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "Торрент полученный из {0} некорректен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1441
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "Не удалось получить торрент из: {0}"
#~ msgid "{0} torrents"
#~ msgstr "{0} торрентов"
#~ msgid "hops"
#~ msgstr "хопа(-ов)"
#~ msgid "tunnels"
#~ msgstr "туннеля(-ей)"
#~ msgid "Bytes"
#~ msgstr "байт"
#~ msgid "Cannot change the I2CP settings while torrents are active"
#~ msgstr "Невозможно изменить настройки I2CP пока есть активные торренты"

View File

@@ -0,0 +1,748 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2psnark package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-29 02:34+0000\n"
"PO-Revision-Date: 2010-05-29 10:55+0800\n"
"Last-Translator: walking <walking@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Chinese\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:87
#, java-format
msgid "Adding torrents in {0} minutes"
msgstr "{0}分钟内完成添加"
#: ../java/src/org/klomp/snark/SnarkManager.java:251
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr "总上传种子数限制已更新为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:253
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr "最低上传种子数限制为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:265
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr "上传带宽限制改为 {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:267
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "最小上传带宽限制为 {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:314
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:320
msgid "Disconnecting old I2CP destination"
msgstr "正在断开旧的I2CP目标"
#: ../java/src/org/klomp/snark/SnarkManager.java:324
#, java-format
msgid "I2CP settings changed to {0}"
msgstr "I2CP设置改为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:328
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "无法通过新设置连接恢复I2CP的旧设置"
#: ../java/src/org/klomp/snark/SnarkManager.java:332
msgid "Unable to reconnect with the old settings!"
msgstr "旧设置也无法连接!"
#: ../java/src/org/klomp/snark/SnarkManager.java:334
msgid "Reconnected on the new I2CP destination"
msgstr "重新连接新I2CP目标"
#: ../java/src/org/klomp/snark/SnarkManager.java:345
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr "\"{0}\"的I2CP监听端口已启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:356
msgid "Enabled autostart"
msgstr "启用自动启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:358
msgid "Disabled autostart"
msgstr "禁用自动启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:364
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr "启用OpenTracker-重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:366
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr "禁用OpenTracker - 重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:373
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr "OpenTracker列表已改变 - 重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:380
msgid "Configuration unchanged."
msgstr "设置未改变"
#: ../java/src/org/klomp/snark/SnarkManager.java:390
#, java-format
msgid "Unable to save the config to {0}"
msgstr "无法保存设置到{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:408
msgid "Connecting to I2P"
msgstr "正在连接到I2P"
#: ../java/src/org/klomp/snark/SnarkManager.java:411
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr "连接I2P时发生错误 - 请检查I2CP设置!"
#: ../java/src/org/klomp/snark/SnarkManager.java:420
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr "错误:无法添加种子{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:442
#, java-format
msgid "Cannot open \"{0}\""
msgstr "无法打开 \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:455
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only"
msgstr "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器文件将仅发布至 I2P 内的 Open Tracker 服务器。"
#: ../java/src/org/klomp/snark/SnarkManager.java:457
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!"
msgstr "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器OpenTracker已禁用启动此种子前您必须启用OpenTracker。"
#: ../java/src/org/klomp/snark/SnarkManager.java:476
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr "无效种子 \"{0}\" "
#: ../java/src/org/klomp/snark/SnarkManager.java:491
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr "已添加并启动种子:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:493
#, java-format
msgid "Torrent added: \"{0}\""
msgstr "已添加种子:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:590
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr "\"{0}\" ({1}) 含有太多文件,删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:592
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!"
#: ../java/src/org/klomp/snark/SnarkManager.java:594
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr "\"{0}\" 中没有数据片,删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:596
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。"
#: ../java/src/org/klomp/snark/SnarkManager.java:599
#, java-format
msgid "Limit is {0}B"
msgstr "限额为 {0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:607
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:623
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr "错误:无法删除种子{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:644
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr "种子已停止:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:659
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr "种子已删除:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "Download finished: \"{0}\""
msgstr "下载已完成:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "size: {0}B"
msgstr "大小:{0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:720
msgid "Unable to connect to I2P!"
msgstr "无法连接至I2P!"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:169
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "I2PSnark - 匿名BitTorrent客户端"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:178
msgid "Refresh page"
msgstr "刷新页面"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:180
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
msgid "I2PSnark"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:182
msgid "Forum"
msgstr "论坛"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243
msgid "Status"
msgstr "状态"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:214
msgid "Hide Peers"
msgstr "隐藏用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217
msgid "Show Peers"
msgstr "显示用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
msgid "Torrent"
msgstr "种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224
msgid "ETA"
msgstr "预计剩余时间"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226
msgid "Downloaded"
msgstr "已下载"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
msgid "Uploaded"
msgstr "已上传"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
msgid "Down Rate"
msgstr "下载速度"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
msgid "Up Rate"
msgstr "上传速度"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:239
msgid "Stop all torrents and the I2P tunnel"
msgstr "停止全部种子及I2P隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:241
msgid "Stop All"
msgstr "停止全部"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
msgid "Start all torrents and the I2P tunnel"
msgstr "启动全部种子及I2P隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:248
msgid "Start All"
msgstr "启动全部"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:265
msgid "No torrents loaded."
msgstr "未载入任何种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270
msgid "Totals"
msgstr "总计"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "{0}个种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "{0}个已连接用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
#, java-format
msgid "Torrent file {0} does not exist"
msgstr "种子文件{0}不存在"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428
#, java-format
msgid "Torrent already running: {0}"
msgstr "种子已启动:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "种子排队中:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
#, java-format
msgid "Copying torrent to {0}"
msgstr "正在复制种子到{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "Unable to copy the torrent to {0}"
msgstr "无法复制种子文件到{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "from {0}"
msgstr "来源{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
#, java-format
msgid "Fetching {0}"
msgstr "正在获取{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341
msgid "Invalid URL - must start with http://"
msgstr "无效链接 - 必须以http:// 开头"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:371
#, java-format
msgid "Starting up torrent {0}"
msgstr "正在启动种子{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:391
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "种子文件已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:415
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425
#, java-format
msgid "Data file deleted: {0}"
msgstr "数据文件已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:417
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "无法删除数据文件:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436
#, java-format
msgid "Data dir deleted: {0}"
msgstr "数据文件夹已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
msgid "Error creating torrent - you must select a tracker"
msgstr "创建种子时发生错误 - 您必须选择一个Tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:482
#, java-format
msgid "Torrent created for \"{0}\""
msgstr "种子创建成功\"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:485
#, java-format
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:487
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr "创建种子时发生错误 \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr "无法为不存在的数据文件创建种子:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
msgid "Error creating torrent - you must enter a file or directory"
msgstr "创建种子时发生错误 - 必须指定文件或文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr "正在停用所有种子并关闭I2P隧道。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
msgid "I2P tunnel closed."
msgstr "I2P隧道已关闭"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
msgid "Opening the I2P tunnel and starting all torrents."
msgstr "正在打开I2P隧道并启动所有种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
msgid "Unknown"
msgstr "未知"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641
msgid "TrackerErr"
msgstr "Tracker错误"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:648
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "{0}个用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650
msgid "Seeding"
msgstr "正做种"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
msgid "Complete"
msgstr "完成"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
msgid "OK"
msgstr "确定"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
msgid "Stalled"
msgstr "等待"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
msgid "No Peers"
msgstr "没有用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
msgid "Stopped"
msgstr "已停用"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689
msgid "View files"
msgstr "浏览文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
msgid "Open file"
msgstr "打开文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:721
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933
msgid "Tracker"
msgstr "Tracker服务器"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:722
msgid "Details"
msgstr "详情"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756
msgid "Stop the torrent"
msgstr "停止种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758
msgid "Stop"
msgstr "停止"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764
msgid "Start the torrent"
msgstr "启动种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766
msgid "Start"
msgstr "启动"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "取消下载任务并删除对应种子文件。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776
#, java-format
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778
msgid "Remove"
msgstr "移除"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "删除种子及所下载的文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
#, java-format
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
msgid "Delete"
msgstr "删除"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
msgid "Seed"
msgstr "种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "无需要部分"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "拒绝请求"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "无需要部分"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:868
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "拒绝请求"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "Add Torrent"
msgstr "添加种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
msgid "From URL"
msgstr "从URL"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:902
msgid "Add torrent"
msgstr "添加种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:905
#, java-format
msgid "Alternately, you can copy .torrent files to the directory {0}."
msgstr "或者您可以将.torrent文件复制到以下目录{0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:907
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "删除种子文件将导致中止该下载任务。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:924
msgid "Create Torrent"
msgstr "创建种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
msgid "Data to seed"
msgstr "做种数据"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:931
msgid "File or directory to seed (must be within the specified path)"
msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935
msgid "Select a tracker"
msgstr "选择一个Tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
msgid "or"
msgstr "或"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951
msgid "Specify custom tracker announce URL"
msgstr "指定Open Tracker发布链接"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:954
msgid "Create torrent"
msgstr "创建种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:972
msgid "Configuration"
msgstr "设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:975
msgid "Data directory"
msgstr "数据文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:978
msgid "Directory to store torrents and data"
msgstr "种子及被做种文件的保存位置。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980
msgid "Edit i2psnark.config and restart to change"
msgstr "编辑 i2psnark.config 并重启Snark后生效"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984
msgid "Auto start"
msgstr "自动启动"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
msgid "If checked, automatically start torrents that are added"
msgstr "选中后Snark将自动启动已添加的所有种子。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
msgid "Total uploader limit"
msgstr "限制总上传种子数为"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
msgid "peers"
msgstr "用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
msgid "Up bandwidth limit"
msgstr "上传带宽限制"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021
msgid "Half available bandwidth recommended."
msgstr "推荐设置为可用带宽的一半。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1023
msgid "View or change router bandwidth"
msgstr "浏览或修改路由器带宽"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027
msgid "Use open trackers also"
msgstr "同时使用OpenTracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035
msgid "Open tracker announce URLs"
msgstr "Open Tracker发布链接"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047
msgid "Inbound Settings"
msgstr "入站设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
msgid "Outbound Settings"
msgstr "出站设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
msgid "I2CP host"
msgstr "I2CP主机"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065
msgid "I2CP port"
msgstr "I2CP端口"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "I2CP options"
msgstr "I2CP选项"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082
msgid "Save configuration"
msgstr "保存设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "{0}跳"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1093
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "{0}隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107
#, java-format
msgid "1 "
msgid_plural "{0} "
msgstr[0] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Up to higher level directory"
msgstr "上一层文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "File"
msgstr "文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Size"
msgstr "大小"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
msgid "Directory"
msgstr "文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
msgid "Torrent not found?"
msgstr "种子未找到"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
msgid "File not found in torrent?"
msgstr "种子中没有发现文件?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
msgid "complete"
msgstr "完成"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "bytes remaining"
msgstr "剩余字节数"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
#, java-format
msgid "Torrent fetched from {0}"
msgstr "从{0}获取种子成功"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "{0}的种子中有错误"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1441
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "从{0}获得种子失败"
#~ msgid "Cannot change the I2CP settings while torrents are active"
#~ msgstr "正在下载/上传无法更改I2CP设置"
#~ msgid "{0} torrents"
#~ msgstr "{0} 个种子"
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
#~ msgstr ""
#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker程序将从Tracker列表中将其删除。"
#~ msgid "Custom tracker URL"
#~ msgstr "自定义TrackerURL"
#~ msgid "Configure"
#~ msgstr "设置"

View File

@@ -0,0 +1,17 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

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