Compare commits

..

515 Commits

Author SHA1 Message Date
zzz
20e152e79a 0.9.7 2013-07-15 14:15:43 +00:00
zzz
1cf9ae381d bump for review 2013-07-13 18:23:09 +00:00
kytv
4cb5a27a05 geoip update from 02-JUL-13 2013-07-11 21:52:00 +00:00
kytv
b0b0124138 Chinese, Russian, Spanish, and Turkish language updates from Transifex 2013-07-11 21:48:05 +00:00
str4d
9e12801503 susimail: Improvements to layout in mobile browsers 2013-07-11 00:19:31 +00:00
zab2
67859f67b0 Make activeResends field atomic 2013-07-09 13:55:09 +00:00
zab2
b486ae5c26 bump for moar testin' 2013-07-07 20:13:42 +00:00
zab2
aab4a3ab44 Change criteria for resending on NACK to match comment 2013-07-07 20:13:11 +00:00
zab2
e9e550fb55 cleanup, sync, more logging 2013-07-07 19:15:08 +00:00
zab2
f80ea386a0 Log errors to logger if available 2013-07-07 17:20:06 +00:00
kytv
7429762d2e bump i2prouter-script version 2013-07-06 23:30:25 +00:00
zzz
3af766bd6e * TunnelPool: Don't reuse peers for exploratory tunnels 2013-07-06 13:18:19 +00:00
kytv
614b8b4cdd Russian and Portuguese translation updates 2013-07-05 22:42:34 +00:00
zab2
bec62c1be7 Remove unused field
Use atomics to manage closed state and IOExceptions
2013-07-05 19:48:31 +00:00
zab2
7f8efca0ba minor cleanup, more to follow 2013-07-05 19:05:54 +00:00
zab2
76de4faf62 better sync 2013-07-05 18:29:00 +00:00
zab2
dfc4948a6f cleanup & sync 2013-07-05 18:21:42 +00:00
zab2
ba0e58e66a fix compilation 2013-07-05 12:53:13 +00:00
zab2
18531f0c09 Log close() loops 2013-07-05 12:43:58 +00:00
zab2
93df048bd6 Cleanups, make I2PSocket a Closeable 2013-07-05 11:54:18 +00:00
kytv
2927382a2b refresh patch 2013-07-04 17:01:42 +00:00
kytv
b4780d16eb updated en (before pushing to tx) & ru (pulled from tx) pofiles 2013-07-04 16:52:00 +00:00
zzz
6f5f4d179b * Streaming:
- Don't stop timers when session disconnects (tickets #644, #810)
   - Throw exception on attempt to use destroyed socket manager
   - Clear TCBShare cache when stopped
   - Javadocs
2013-07-04 14:54:46 +00:00
zzz
b9a5dd48f6 Console: Hide dead tunnel pools on /tunnels 2013-07-03 19:14:21 +00:00
zzz
0db7e2873c * Updater: Fix plugin update checker (ticket #897)
* Utils: Reduce logging in wrapper log when extracting zip files
2013-07-03 17:12:32 +00:00
zzz
b84bfd575f bump 2013-07-03 12:44:19 +00:00
kytv
70bb81bcc3 merge of '3dbb3a0ff30032f71e1ef6dd6d90f3b8117f3cd1'
and 'ccdac8f0911b798c42e9079d47e07c0e7c652815'
2013-07-02 20:08:28 +00:00
kytv
7ebb26b734 refresh patch
This change is required after de-parameterizing the i2prouter script.  I
hardcoded the file name because the $0 variable isn't expanded (because of
single quotes). When using double-quotes (and escaping with back-slashes), the
strings weren't translated. I've decided to de-parameterize until I figure out
what the problem is.
2013-07-02 18:38:35 +00:00
kytv
fb93609d8b merge of '7d480c0749394d3ee1b10c1f714a1be3091596f8'
and '9cb464ed9b358b1e9807792b37f703977d6f5f96'
2013-07-02 18:17:02 +00:00
kytv
eb051d64c7 disapproval of revision 'fd10b04ca3a6cf66e669bfad32d3011ed9f7e33c' 2013-07-02 18:08:52 +00:00
kytv
58bb94a960 French, German, Portuguese, Russian, and Turkish translation updates from transifex 2013-07-02 17:41:27 +00:00
kytv
98d932a0f5 build.xml: minor tweak for jenkins
Jenkins' cobertura plugin wasn't finding the streaming source. This change
should correct that.
2013-07-02 16:58:40 +00:00
zzz
de4b0198b7 javadoc fixes 2013-06-30 17:13:53 +00:00
zzz
570f8526b0 getSession() cannot be null 2013-06-30 17:00:14 +00:00
zzz
d173b79949 drop build request with bad flags 2013-06-30 16:58:57 +00:00
zab2
67f73d7198 wip 2013-06-29 21:22:28 +00:00
zab2
6e36d374ea wip 2013-06-29 21:12:11 +00:00
zab2
740b37b70c wait until client thread finishes before declaring victory 2013-06-29 21:03:19 +00:00
zab2
782e38bdcf add TODO, make server thread daemon 2013-06-29 21:02:30 +00:00
zab2
937404b39c test seems to be hopelessly out of date 2013-06-29 20:35:27 +00:00
zab2
a0bf223031 return the Thread object for join()-ing 2013-06-29 20:34:57 +00:00
zzz
6b15caab4b drop ancient ministreaming doc 2013-06-29 15:14:04 +00:00
zab2
1c68852f45 Finish rename 2013-06-28 22:32:05 +00:00
zab2
4f6065b4fa refactoring most tests
remove standalone test from junit wildcard
2013-06-28 22:27:31 +00:00
zab2
14944982fb Trying to fix the Jenkins build.. 2013-06-28 20:50:38 +00:00
zab2
10bf74e045 add streaming lib tests to the top-level ant targets 2013-06-28 18:48:39 +00:00
zab2
a9d9e6b572 work on test 2013-06-28 18:43:36 +00:00
zab2
bddfe3ed86 Convert most streaming tests to JUnit4 2013-06-28 16:00:47 +00:00
zab2
a308179d81 Fix and junit-ify tests 2013-06-28 15:21:02 +00:00
zab2
f8648ff4c4 Explicitly check the type of I2PSocketManager 2013-06-28 14:56:55 +00:00
zzz
552f91b6b8 dont start thread in constructor 2013-06-28 12:40:09 +00:00
zzz
726eb58724 * i2psnark:
- Show comment metadata on details page
   - Fix rar icon
   - Escape [] in URLs, chrome doesn't do it for us
   - Tweak column spacing
2013-06-28 12:19:56 +00:00
zzz
eb5a23fc5b finals, remove static log 2013-06-28 12:17:19 +00:00
zzz
d4c8e03f86 remove static log 2013-06-28 12:12:37 +00:00
zzz
46d13d2b08 divide by zero check 2013-06-28 12:10:34 +00:00
zzz
003dc37817 merge of 'bde6736c06f94ff24285aeff0a64ec7dc3a52a4b'
and 'f4b18bbf4329a48a182a57db594a58d4a32a9da7'
2013-06-28 12:06:22 +00:00
zzz
847a441d59 disapproval of revision '8611baad56e8e18941721b156256783ba996a3cd'
Revert 8611baad56e8e18941721b156256783ba996a3cd
Don't use intern() on externally-supplied strings
as it could be used to exhaust memory
2013-06-28 12:01:13 +00:00
kytv
a5f3220df0 merge of '6844f955ddd2febe54ce677ef19309712f55113c'
and '8611baad56e8e18941721b156256783ba996a3cd'
2013-06-27 19:23:54 +00:00
zab2
a5df6d419d use String.intern() instead of a homebrew equivalent 2013-06-27 19:04:28 +00:00
meeh
78a25f0b17 Updating certificate on 193.150.121.66. Will reload server to use
the new certificate on the next I2P release day.
2013-06-27 18:42:15 +00:00
meeh
dc7ea9c126 Removing the self-signed certificate. cowpuncher.drollette.com uses
a certificate signed by GlobalSign now.
2013-06-27 18:29:14 +00:00
zab2
70adc4df32 debug log the criteria for FF 2013-06-27 16:16:55 +00:00
kytv
c47f491e2f fail if cert expires within 60 days 2013-06-27 09:53:38 +00:00
zab2
1d9b89db23 volatiles, generics warning cleanup 2013-06-26 21:38:00 +00:00
zab2
ec70f2420c more volatiles 2013-06-26 21:03:18 +00:00
zab2
f525685765 volatiles, finals 2013-06-26 20:43:34 +00:00
zzz
4970fd22dc save a little space by avoiding BigInteger when possible 2013-06-23 17:52:36 +00:00
zzz
ac9392b9e6 * i2psnark: When receiving a metainfo via magnet and saving it to disk,
preserve all non-standard fields (such as those created by Robert) so the
   infohash doesn't change on restart, splitting the swarm.
   (http://zzz.i2p/topics/1327 thx 'backup')
2013-06-23 15:21:40 +00:00
zzz
5ba86ca254 * SSU:
- Pad all messages with random data instead of zeros
   - Implement non-mod-16 padding, disabled for now
2013-06-22 19:09:55 +00:00
zzz
87826daae9 mac static, final 2013-06-22 19:02:59 +00:00
zab2
7df52a155e Run the FloodfillMonitorJob more frequently 2013-06-22 17:17:17 +00:00
zzz
d2184f418f * NetDB: Increase upper limit on ffs again
* SSU: Pad session created message with random data instead of zeros
2013-06-22 13:51:50 +00:00
meeh
f91f81158f * Changing the default connect proxy after h2ik's AWOL. (Last seen 6th March 2013) 2013-06-22 12:05:34 +00:00
zzz
bb100de702 * SSU:
- Ignore padding beyond last multiple of 16 (prep for obfuscation)
  - Comment out xor with 0 (version)
  - Don't need to zero IV buf before overwriting
* AES:
  - Decrypt speedup by XOR in place
  - Log if decrypt not mod 16
2013-06-21 19:21:02 +00:00
zzz
322e76d2a9 speed up XORComparators 2013-06-21 15:13:37 +00:00
zzz
1444f1239f lookup stat tweak 2013-06-21 15:13:16 +00:00
zzz
5bd028bff5 i2psnark: Show start-all button even if tunnel is open,
if at least one torrent is stopped (ticket #808)
2013-06-20 21:21:07 +00:00
zab2
25feb745bc Volatil-ize some fields 2013-06-18 17:09:05 +00:00
zzz
7e0654ae0a * I2CP: Don't send SendMessageEndMessages from client to router if
in fast receive mode and the router doesn't require them.
2013-06-17 19:57:59 +00:00
zzz
00d1b7519f * Streaming: Flush debug pcap stream after closing connection 2013-06-17 19:54:22 +00:00
zzz
faadbf700d debug log tweak 2013-06-17 19:53:01 +00:00
zzz
180d42541a * NetDB:
- Don't instantiate unused success job for republish LS
   - Add debug setting to encrypt RI lookups
2013-06-17 19:47:04 +00:00
zzz
bdc4eff1c4 * NTCP: Extend interval for sending time sync messages,
might help expire idle conns
2013-06-17 19:45:46 +00:00
zzz
fa0b52fc3a * Console: Don't display 'unsupported' message on some config pages when restart/shutdown buttons clicked 2013-06-17 19:43:32 +00:00
zzz
f9f1391057 * SusiMail: Fix classpath problem when started manually (ticket #957)
- Remove a couple of dependencies
   - Add jetty-util.jar to console classpath just in case
2013-06-17 19:39:21 +00:00
zzz
36e898d668 * I2CP: Fix deserialization of new RVLSM; enable by default 2013-06-14 13:34:36 +00:00
zzz
a90827c9b2 * i2psnark: Fix bug creating torrent with a single file in a directory
(thx oskar/Nightweb)
2013-06-14 13:33:49 +00:00
kytv
dd451d3ccd po file fix / add i2prouter script's po files to checkpo.sh 2013-06-14 01:27:58 +00:00
kytv
937f4f2f40 parameterize & refresh patch 2013-06-13 18:48:58 +00:00
dev
e7718b1fba Threaded the calling of runRouter() to improve startup times. 2013-06-13 17:02:53 +00:00
dev
29b599bc8d merge of '80aa8cd653ef7ee96cd6603b9646c53b2ff84760'
and 'da25b770e65a36f3056b905cc6b96be431076a6b'
2013-06-13 15:05:54 +00:00
dev
6bbd34eed9 Fixed MultiRouter. Removed MultiRouterBuilder as it no longer serves any purpose. Added the router.rejectStartupTime property to allow for quicker testing with MultiRouter. 2013-06-13 14:38:13 +00:00
kytv
f939f689fc fix flag alignment 2013-06-13 01:01:08 +00:00
zzz
a48fba0102 * I2PTunnel: Add advanced quantity options 2013-06-12 15:07:39 +00:00
zzz
02923138d0 boom bye bye bad bwoy 2013-06-12 13:45:27 +00:00
zzz
87d142bace comment out main 2013-06-12 13:44:54 +00:00
zzz
933ad52398 * Console: Add missing jetty jars to classpath (ticket #952)
(tested with classpath from 0.7.4 wrapper.config)
 * JettyStart: ditto
 * Remove references to now-unused jars in build.xml files
2013-06-12 13:42:38 +00:00
zab2
9d52ef5fbe Explicit check for empty values 2013-06-11 13:21:49 +00:00
zab2
34748d23be Make TUnnelCreatorConfig._expiration volatile 2013-06-11 12:25:00 +00:00
kytv
15dae0fd92 *REALLY* add the Turkish language 2013-06-10 22:46:56 +00:00
kytv
ccf6cf5e20 TR & FR translation updates from Transifex 2013-06-10 22:22:24 +00:00
zzz
36d4b20bdc * NetDB:
- Let class N routers become floodfill
   - Scale max connections for non-O floodfills
2013-06-10 14:45:45 +00:00
zzz
a70810ffae log tweak 2013-06-10 14:20:33 +00:00
zzz
526df43233 * Transports: Reduce idle timeouts to mitigate conn limit issues 2013-06-10 14:06:43 +00:00
zzz
660be7d579 Installer: Don't install Windows service by default
Causes confusion and multiple instances when users start their own copy too.
2013-06-10 14:04:58 +00:00
zzz
876109d3a5 Fix bug in unused off/len version of siphash 2013-06-10 14:02:39 +00:00
zzz
39493e0f24 final and null check 2013-06-10 14:01:52 +00:00
zzz
62413331da Fix bug in last checkin in unused code
(thx zab)
2013-06-10 14:01:06 +00:00
zzz
68d25afcba * NetDB: Prep for leasesets with different expire times
- Add new I2CP RequestVariableLeaseSetMessage
   - Send RVLSM if client supports it; handle on client side;
     disabled by default for the moment.
   - Add LeaseSet.getLatestLeaseDate()
   - Check latest, not earliest, date too far in future in KNDF.validate()
   - Check latest date too far in past in KNDF.validate()
   - Only check gateway and tunnel ID for equality in OCMOSJ lease caching to reduce churn
   - Split up KNDF.validate(RI) for efficiency, don't need to check
     signature, netid, etc. before lookups, only on store
   - Remove enforeNetID config
   - Fix major bug causing newer leasesets to be treated as older, and not stored or published
   - Increase max adjustment time of earliest lease
   - TransientDataStore cleanups
   - RouterInfo and LeaseSet equals() speedups
2013-06-09 14:42:51 +00:00
zzz
182fe900b8 * BlockfileNamingService:
- Fix bug that kept reverse index from being updated
   - Bump DB version to 3 to trigger repopulation of the reverse index
   - Make metaindex final
   - Add freelist check to the main() test
2013-06-07 17:26:20 +00:00
zzz
0fb4f6ab6a javadocs 2013-06-07 02:03:36 +00:00
zzz
ebc5e72908 remove commented out setter not supported in jetty 7 2013-06-07 02:00:17 +00:00
kytv
081b692736 debian: refresh patch 2013-06-06 17:14:44 +00:00
zzz
e1c68d22a3 - Correct errors in the specification of the BuildResponseRecord.
The first 32 bytes are not random; they are the hash of the following 496 bytes.
- Don't waste entropy on bytes we are going to overwrite in the BRR
2013-06-06 15:24:01 +00:00
zzz
b7dc8f425e * DatabaseLookupMessage: Change format for encrypted reply request
to allow multiple bundled reply tags
2013-06-05 16:44:59 +00:00
zzz
4a65676738 throw ISE if LS changed after being signed 2013-06-05 16:39:50 +00:00
zzz
000ca7c7b7 finals, javadoc fixes 2013-06-05 16:36:23 +00:00
zzz
9386270b57 Save I2CP client version for future reference 2013-06-05 16:33:38 +00:00
zzz
f0886c5f6e drop unused netdb classes 2013-06-05 16:29:49 +00:00
zzz
239cd2b744 debug setting 2013-06-05 16:28:54 +00:00
zzz
db9827779e minor improvement 2013-06-05 16:28:10 +00:00
zzz
905eed6643 cleanups 2013-06-05 16:27:29 +00:00
zab2
5711d96744 propagate from branch 'i2p.i2p' (head a89e68077114f79902a76649affe78e8ab709787)
to branch 'i2p.i2p.729' (head 11fde36281469d5ac8757bca1d7f93f679e0cb74)
2013-06-02 12:41:02 +00:00
zzz
fc2734c484 compile fix 2013-06-01 17:10:32 +00:00
zzz
75261a0ce4 * EepGet: Used cached byte array in uncompressor 2013-06-01 17:00:33 +00:00
zzz
7fc2cd9cde javadoc 2013-06-01 16:59:06 +00:00
zzz
e72a763019 volatile 2013-06-01 16:58:21 +00:00
zzz
ff20174572 * i2psnark:
- Add idle detector, reduce tunnel count when idle (prep for torrent updates)
   - Cancel CoordinatorAcceptor cleaner when halted
   - Make PeerCoordinatorSet an Iterable
   - Reduce max protocol errors to 1
   - Disable unused PeerMonitorTask
2013-06-01 16:57:50 +00:00
zzz
7d08183334 doc fixes 2013-05-31 23:30:12 +00:00
zzz
66f7505baa * configclients.jsp: Allow more hops and tunnels when routerconsole.advanced=true 2013-05-31 23:28:41 +00:00
zzz
e54465b226 * i2psnark: Fix details page on Windows 2013-05-31 23:19:43 +00:00
zzz
78c17ba353 propagate from branch 'i2p.i2p.zzz.test2' (head 4af6fe141f9ba20b1b13fc5f3417146bc96aa035)
to branch 'i2p.i2p' (head 6edfb2af359351aeb5cf198b9ec4524b2b4a45e6)
2013-05-31 22:18:00 +00:00
zzz
bfac9e398d default the wizard to 3 hops also 2013-05-31 22:16:15 +00:00
zzz
eef5661008 * NetDB:
- Fix debug netDb.alwaysQuery setting so it works again, and always
    sends to that router first (move from FNDF to IterativeSearchJob)
  - Don't reuse DLM reply key/tag
  - FloodfillPeerSelector: Note unused kbucket param in javadocs
  - Debug logging for encrypted DSRM/DSM
2013-05-31 16:51:58 +00:00
zzz
4b9a7323ad propagate from branch 'i2p.i2p' (head 04337e47a38298a4035f48b830f6a2532767bd50)
to branch 'i2p.i2p.zzz.test2' (head 052c3194bd75846075a6b64a1f96cdca6eae33b4)
2013-05-30 19:11:02 +00:00
kytv
429ccf21b6 merge of '11286a0edca5afcb38a106793f52422247ae66aa'
and 'ac917c8e012d4f9917afce11433faaf1e6f12c10'
2013-05-30 12:15:47 +00:00
kytv
4805a77d40 -2 2013-05-30 12:06:31 +00:00
kytv
3a707a143d update wrapper to 3.5.19
- Windows: Self-compiled with VS2010 in Windows 7. The icon has been
  changed from Tanuki's default to Itoopie.
- Linux ARMv6: Compiled on a RaspberryPi using gcc 4.6.3-14+rpi1,
  Icedtea6 6b27-1.12.5-1+rpi1 and stripped
- All other binaries are from the "community edition" deltapack offered by
  Tanuki.
2013-05-30 12:04:42 +00:00
str4d
b4264063f4 merge of '57c27fdf450960a6379681666a721f09aadcfbf8'
and 'f99ead1ae78724f35d845623468e9b561d36bf3b'
2013-05-30 05:07:26 +00:00
kytv
535c782b7c Allow normal themes to be used with IE >= 10 2013-05-30 01:39:07 +00:00
zzz
3833ad534f restore exotrack 2013-05-29 19:48:45 +00:00
zzz
3d42946ff5 * Console: Remove I2PDigestAuthenticator workaround, as Jetty 7.6.11 has the fix
* Jetty 7.6.11
 * Tomcat 6.0.37
2013-05-29 16:30:00 +00:00
zzz
a1afa1c1b0 * i2ptunnel: Default to 3 hops (ticket #936) 2013-05-29 16:28:28 +00:00
str4d
8fb65292cf merge of '3adba0cec6f0291ae90747ab22535290e64e6606'
and 'fd10b04ca3a6cf66e669bfad32d3011ed9f7e33c'
2013-05-29 12:49:29 +00:00
str4d
29ce84ff33 disapproval of revision '2fccba5dbe1b538679f15727fd95295842ed8839' 2013-05-29 12:48:11 +00:00
kytv
ca569038e8 parameterize 2013-05-28 10:50:51 +00:00
kytv
4092eba606 checkcerts: look for both *.cert and *.crt 2013-05-28 10:46:41 +00:00
kytv
63e71d8a3d nbi: Add override for x86 Solaris
The jbigi binaries for Pentium II and Pentium III are identical on x86 Solaris.
2013-05-28 10:46:04 +00:00
zab2
278caf72e0 propagate from branch 'i2p.i2p' (head 138d50ea0e969564bef41201439c6a99e2a45fbb)
to branch 'i2p.i2p.729' (head 74c7169e5d428b5aeaf33a401b27c33d3d37907e)
2013-05-28 08:24:22 +00:00
zzz
ff5abfb4b7 0.9.6 2013-05-27 18:17:53 +00:00
zab2
4d6b7556c3 propagate from branch 'i2p.i2p' (head dddff6de3cdc4595886d57b5eceb63747b68c7d7)
to branch 'i2p.i2p.729' (head b0eb76504d798a791853a6d269795018c853eff9)
2013-05-27 10:34:53 +00:00
zzz
e5e7dbbb58 * TunnelPeerSelector: Cleanups 2013-05-26 20:38:31 +00:00
zzz
e394d3d4c5 * DatabaseLookupmessage:
- Add support for requesting an encrypted reply
* NetDB:
  - Add support for encrypted DatabaseSearchReplyMessage and DatabaseStoreMessage
    in response to a DatabaseLookupMessage
* PRNG: Cleanups using Collections.singletonMap()
* Router utils: New RemovableSingletonSet
* TransientSessionKeyManager:
  - Support variable expiration for inbound tag sets
  - Several efficiency improvements
* VersionComparator: Add static method, use most places
2013-05-26 17:25:02 +00:00
zzz
370d9dfea1 -24 2013-05-25 12:12:46 +00:00
kytv
2a00272efe debian: read /etc/default/i2p in /usr/bin/i2prouter
This will allow overrides to be set without editing /usr/bin/i2prouter.

i2prouter may be replaced during upgrades. /etc/default/i2p will only be
changed by debconf (e.g. "dpkg-reconfigure i2p").
2013-05-24 21:30:46 +00:00
zab2
5c4c02161c propagate from branch 'i2p.i2p' (head fd0e22a44acf6b018c394cdd42d75e2d1bdb4986)
to branch 'i2p.i2p.729' (head b5c7b5601c0b0e810ca6d93c1d249fe4e330a352)
2013-05-24 12:20:50 +00:00
kytv
1bd4937a4b geoip.txt update
Based on Maxmind GeoLite Country database from 2013-05-08
2013-05-24 09:13:46 +00:00
kytv
0ac2abd5eb debian: bump changelog version to 0.9.6 2013-05-24 09:10:00 +00:00
meeh
efe5098f24 Disabling HH's server for this version because it's down and I haven't got in contact with him. 2013-05-23 20:03:09 +00:00
zab2
ba859fc9ad propagate from branch 'i2p.i2p' (head e91e8d2eb4c76d5be04e48de9b678cb39b3d0694)
to branch 'i2p.i2p.729' (head c1bf6bf9381192395513aca841d6db507384a9a8)
2013-05-23 09:14:48 +00:00
meeh
c73163f525 merge of '56506455244b72ac03b5a5cb832496e367f454b2'
and '6aeeb6555b2fb4e69f167487ca20b143939c809c'
2013-05-22 19:51:04 +00:00
meeh
bf317f61c5 Updating the certificate for reseed.info 2013-05-22 19:50:02 +00:00
zab2
b1b13c41f0 merge of '9f901bf6cca59e5a24595ef80a2fbb586e259281'
and 'e31714127884dc817acde4cf97cb9c7d8cebc92b'
2013-05-21 19:04:55 +00:00
zab2
47c3a56aca Ticket 928 - prevent a CKE during write 2013-05-21 19:03:58 +00:00
zab2
8acf5f3079 propagate from branch 'i2p.i2p' (head 879c55c825160c979491a99169a173145cf1d7ad)
to branch 'i2p.i2p.729' (head a0ba4c4c989ba71043b9671a56891688be41b50d)
2013-05-21 13:45:26 +00:00
zzz
2f39574123 log tweaks 2013-05-21 13:39:43 +00:00
kytv
8b1ab4b8d2 create ./build when "ant jbigi" is run by itself 2013-05-20 20:31:18 +00:00
zab2
addffcffcb propagate from branch 'i2p.i2p' (head 27ab673e76ed77c38d22c06c807695f792473fb0)
to branch 'i2p.i2p.729' (head d03f39c7afc2214ef8c2f81486d4abc64049e825)
2013-05-17 16:10:34 +00:00
kytv
2e0a1b9a0e German translation updates from tx, updated en po files for pushing to tx 2013-05-15 22:04:43 +00:00
zzz
4fae18a719 * UPnP: Detect devices without port forwarding capability (ticket #930) 2013-05-15 14:21:15 +00:00
zzz
d9beaa7591 * NetDB: Increase floodfill count for good 2013-05-15 14:19:01 +00:00
zzz
2ba5ad558b * i2psnark:
- Adjust target piece size calculation
   - Tweak to make it easier for new peers to connect
2013-05-15 14:18:24 +00:00
kytv
de6bb12b95 debian: refresh patches 2013-05-15 13:39:24 +00:00
kytv
aa2715cced i2prouter: abort immediately if I2P_CONFIG_DIR cannot be created 2013-05-15 13:38:34 +00:00
kytv
b096834a54 installer/resources/i2prouter: various bugfixes
- Explicitly specify shell when RUN_AS_USER is set. This allows I2P to start
  under limited accounts that do not have a defined shell.
- When installing as a service, point out that I2P_CONFIG_DIR may need to be
  set. I2P_CONFIG_DIR defaults to $HOME/.i2p for the user that installed I2P
  and when running as a service this may not be desired.
  (e.g., RUN_AS_USER=i2p & I2P_CONFIG_DIR=/root/.i2p)

(The RUN_AS_USER shell problem was spotted at https://github.com/mattias-ohlsson/i2p/blob/master/i2p.spec)
2013-05-15 13:04:46 +00:00
kytv
c1da7f778b improvements to jbigi scripts
support for Solaris (tested with Solaris 11 x86)

mbuild-all.sh:
- output correctly formatted file names (tested in Solaris x86, FreeBSD (x86 and x64) and Linux (x86 & x64))
- switch from echo -e to the more portable printf
- more error checking, comments

debian/patches: refreshed based on changes to core/c/*
libjcpuid-x86_64-solaris.so: built in solaris 11 x86 with
                             java 1.7.0_07 and gcc 4.5.2, stripped
2013-05-12 00:08:52 +00:00
zab2
3210dd8d3e propagate from branch 'i2p.i2p' (head ea73fc80c4f4d89238aaa52a9189378e40db0b32)
to branch 'i2p.i2p.729' (head 148b359103beb356be4dd6833d4e6325703917d3)
2013-05-11 20:54:22 +00:00
zzz
dca5e9889a finals 2013-05-07 13:49:31 +00:00
zzz
67beebf859 * HandleDatabaseLookupMessageJob: Improve efficiency by only looking up
Hash in the netDb once, then casting to correct type.
   Log cleanups.
2013-05-07 13:37:18 +00:00
zzz
16c8a19be8 * Streaming: Throw chained IOE from streams to get correct location 2013-05-07 13:09:03 +00:00
zzz
0c03b6ba82 i2psnark: More details page fixups;
List directories first
2013-05-06 15:11:02 +00:00
zzz
cd6376e368 remove DOS line endings in jsps 2013-05-06 13:14:44 +00:00
zzz
c26eba9693 * Console: Fix Jetty thread pool policy and thread name 2013-05-06 12:29:18 +00:00
zzz
b7fca3af42 * Transports: Clean up internal/external port confusion (ticket #873)
- Bind SSU to configured internal, not external, port at startup
   - Use only internal ports for UPnP (getRequestedPort() fixups)
   - Don't have NTCP follow frequent SSU port changes
   - Don't use external SSU port for internal NTCP port
   - Display internal SSU port on /confignet
2013-05-06 11:24:02 +00:00
kytv
7527a02c60 build.xml: refactor "noExe check" to remove duplication 2013-05-04 19:00:39 +00:00
zab2
5e734088e3 reduce severity of CancelledKeyExceptions
trac ticket 928
2013-05-03 13:47:10 +00:00
kytv
6265bdf026 merge of '00acf6715c7e3d5519672b335bb833f2f88f5ca1'
and '4790dff566ce61cb8a5bfefa0c423df44a784fa5'
2013-05-02 10:19:17 +00:00
str4d
0d78ddf872 HTML fixes in readme_ar.html 2013-05-01 22:23:42 +00:00
zzz
10efecaa9c * IRC Server tunnel: Reject bad protocols immediately 2013-05-01 20:52:50 +00:00
kytv
689b045a9b html validation fixes
xmllint didn't find these problems (but tidy did).
2013-05-01 19:52:21 +00:00
kytv
7692905ba5 fix viewmtn url
(*sigh*)
2013-05-01 18:07:20 +00:00
kytv
0ef3bb1deb debian: s/UNRELEASED/unstable/ due to updated packages being built 2013-05-01 17:51:17 +00:00
kytv
4c279a192a Switch viewmtn links from zzz's to mine 2013-05-01 17:48:14 +00:00
zzz
af7eaf1f05 * BuildRequestor: Slow down build loop if we have no exploratory tunnels
(ticket #926)
2013-05-01 17:26:07 +00:00
zzz
c198e216fd susidns css tweak 2013-05-01 17:24:09 +00:00
zzz
2325bffbcb enhance main() for debugging 2013-05-01 17:23:50 +00:00
kytv
3d3e05d43d debian: don't ship jasper-compiler.jar anymore
I didn't realize that non-existent jars specified in a classpath is not an
error.
2013-05-01 13:37:15 +00:00
kytv
c62ae69fe5 debian: bump standards version, don't package 'dummy jars'
note: jasper-compiler is kept due to it being referenced at http://www.i2p2.i2p/plugin_spec
2013-04-30 23:26:42 +00:00
str4d
686aa870ea Updates to readme_ar and a CSS tweak from hamada (ticket #489) 2013-04-30 12:35:45 +00:00
zzz
ecac69134d param fix 2013-04-30 01:21:23 +00:00
zzz
8a99be1db3 move page nav 2013-04-29 22:40:49 +00:00
zzz
26f0c98ef8 * Transports:
- Initial prep for multiple addresses per style
   - Simplify NTCP send pool
2013-04-29 18:09:21 +00:00
zab2
5375e425ac minor cleanup 2013-04-29 17:55:27 +00:00
kytv
650b920e11 I2PTunnel: break out of frame when using the "test server bypassing i2p" link 2013-04-29 17:09:25 +00:00
kytv
7a43bd87c2 remove unused param (javadoc fix) 2013-04-29 17:07:08 +00:00
zab2
ebb2f1396b Meeh's patch for trac ticket 729 2013-04-29 16:54:36 +00:00
zzz
3a4ac1fc4e one more param fix; javadoc fix 2013-04-29 11:50:23 +00:00
zzz
188ff3392d * i2psnark: Support HTTP request ranges so in-browser and other http-aware media players work better.
Single range only; no multipart
2013-04-28 16:46:52 +00:00
zzz
0cf7e91475 baseline class from Jetty 7.6.10 2013-04-28 16:44:30 +00:00
zzz
609bbac8d5 * i2psnark:
- Only show lower section on first page
   - Hide peer count if not connected
   - Dir page CSS tweaks
2013-04-28 16:43:40 +00:00
zzz
f4431b8d1e more parameter fixes 2013-04-27 22:34:59 +00:00
zzz
45bf2e0715 more classes pkg private 2013-04-27 22:34:39 +00:00
zzz
d7040a23e4 page count fix and cleanups 2013-04-27 16:08:35 +00:00
zzz
6f8fe0ecac add epub mime type 2013-04-27 14:51:07 +00:00
zzz
7181e3eb87 * i2psnark: Ensure current stats and correct event delivered in announce 2013-04-27 14:34:00 +00:00
zzz
011e91140c * i2psnark: Improve page nav 2013-04-27 13:14:43 +00:00
zzz
0f1224de98 * installer: Fix DOS line endings on misc. files (ticket #872)
* SusiDNS:
   - Trim and sort config form data
   - Fix DOS line endings on config files in Linux (ticket #872)
2013-04-26 20:32:58 +00:00
zzz
2e356172d4 document ignored RouterAddress expiration (ticket #832) 2013-04-26 17:12:37 +00:00
zzz
c6bf9a7cf6 deprecate isJobActive() ticket 670 2013-04-26 16:45:52 +00:00
zzz
0816cfe273 * Plugins: Track pending plugin clients better, don't hold references,
start delayed clients from SimpleTimer2 instead of Job queue (ticket #670)
2013-04-26 16:41:09 +00:00
zzz
1cea18346b * Console: Show log location on /logs even if not opened yet (ticket #905) 2013-04-26 13:36:38 +00:00
zzz
0d4bc500ee * HTTP proxy: Verify nonce count in digest auth 2013-04-26 13:02:56 +00:00
zzz
ff313e0301 * i2psnark: Use smaller piece size for small torrents 2013-04-26 13:01:16 +00:00
kytv
85001d2622 process debian/po/es.po with update-po 2013-04-25 15:10:40 +00:00
kytv
654b240e9d translation updates
* Portuguese, Russian, Spanish, and Swedish translation updates from Transifex
* ant poupdate run for EN for submission to tx
2013-04-25 15:06:27 +00:00
str4d
85f3f5615f Allow the "AUTHENTICATE" command in IRC tunnels (ticket #904) 2013-04-25 05:27:55 +00:00
zzz
813a1981d9 * Console, TunnelControllerGroup: Don't register shutdown hook if ClientAppManager is present
* JettyStart: Fixes for use by plugins
 * RouterAppManager: Add shutdown hook
2013-04-24 15:45:15 +00:00
str4d
57fd46d3a1 Updated i2p.c default classpath with new Jetty jars, fixed separator 2013-04-24 03:53:12 +00:00
str4d
ffbbfdfc0d merge of 'a58d3f77fd66a83579a9978f954077bc0cd3dfed'
and 'c61f304e5ee2d59c51c4e700ab47e61d479257d2'
2013-04-24 03:48:35 +00:00
str4d
31bc67a1cd Added launch.properties for i2pExe based on i2pstandalone.xml and doBuildEXE target 2013-04-24 00:30:39 +00:00
kytv
ec4f2d2100 merge of '3cff53ae6e9e995199ab4c7c4ce5fa78ec417768'
and 'e824a448e5e49d646a33e7be13f648f66b1b6a47'
2013-04-24 00:01:01 +00:00
str4d
5b40914552 Removed some unnecessary code from i2pExe 2013-04-23 21:19:28 +00:00
zab2
e8025f09bd merge of '3c164e606c1ed364a6caf2b5b77abbdf819a2bc7'
and 'ebe0842bec96b1e0ed3b8e0c18d4ea05ba7cb981'
2013-04-23 19:27:52 +00:00
zzz
aa547a1610 * i2ptunnel: Block b32.i2p supercookies 2013-04-23 18:23:38 +00:00
zzz
22025b0c3a * Console: Fix Jetty digest auth bug causing repeated password requests
I2P fixes for out-of-order nonce counts.
   Based on DigestAuthenticator in Jetty 7.6.10.
   Includes the nonce count verification code from Tomcat 7.0.35.
   ref: http://jira.codehaus.org/browse/JETTY-1468 which was closed not-a-bug.
   ref: https://bugs.eclipse.org/bugs/show_bug.cgi?id=336443 in which the
   Jetty implementation was introduced.
2013-04-23 18:22:48 +00:00
zzz
4358d11191 Baseline checkin of DigestAuthenticator from Jetty 7.6.10 before mods 2013-04-23 18:19:49 +00:00
zab2
5fd63c12a8 remove an ifdef that is not relevant to I2P 2013-04-23 18:05:43 +00:00
str4d
37ff4090b4 merge of '97f6b32a68c76e9cbe8832d250144facb6aa729e'
and 'd9b5e2fc62256d9dc0d320fe593d56f0252b7f48'
2013-04-22 20:38:52 +00:00
str4d
9550de6760 disapproval of revision '4747eea80e136e04c9a239f0b6ecd9ef134c4d5a' 2013-04-22 20:37:42 +00:00
kytv
f5838ffefb add new jetty7 jars to the i2p.exe classpath 2013-04-21 20:26:41 +00:00
zzz
2a374c9b22 bump to -12 after prop 2013-04-21 16:07:08 +00:00
zzz
59ba47eca5 propagate from branch 'i2p.i2p.zzz.winfix095' (head 7d31b90b87adb2c0cfb837e5b66cc4c223766331)
to branch 'i2p.i2p' (head b004014ccfbca6241a090d5b47f1228702f4dfcc)
2013-04-21 15:57:22 +00:00
zzz
60d0b2976b * AppManager:Add HTML debug output 2013-04-21 15:41:34 +00:00
zzz
a44e75201f * Streaming: Pcap window size fixes 2013-04-21 15:40:08 +00:00
zzz
eb3de929bf Pluck of 48ac112fe938c8e960413ad60f64d313a1e5c9ac and e415e24aca895c5a1f88380b1a3946e3b49749a9
* Add new *.i2p2.de certificate
* Added backup's ressed server. (Thanks backup!)
* Temporary removing h2ik's server since he's been AWOL since 06-03-2013 and he's reseed server is down.


applied changes from 185bc62d33224812060d2f68266a029935fb710d
             through 48ac112fe938c8e960413ad60f64d313a1e5c9ac

applied changes from 1194eb12084302380b4315b20e5ae0c574ce1be3
             through e415e24aca895c5a1f88380b1a3946e3b49749a9
2013-04-21 13:47:16 +00:00
str4d
d0fa9f8f1e And back to HTTP 403 for Bad URI (we are refusing to fulfill the request) 2013-04-21 13:36:59 +00:00
str4d
a3886b0080 Use HTTP 404 for Bad URI (c/f jetty, lighttpd) 2013-04-21 13:30:22 +00:00
str4d
b872764624 Use HTTP 400 for Bad URI 2013-04-21 13:27:28 +00:00
str4d
075b1fd6f6 Ticket #891 - return "Invalid Request URI" for URIs with illegal characters 2013-04-21 03:20:43 +00:00
zzz
2430e180f3 Add EXTRA version "win1" in prep for Windows-only point release.
We don't want to bump BUILD as it could cause confusion,
and would cause all installs to attempt update via torrent.
2013-04-20 19:07:11 +00:00
zzz
0c22af9578 Convert install.xml to use new utility.jar Main.main()
(ticket #912)
2013-04-20 19:03:38 +00:00
zzz
4976e52389 Pluck of 40d650b134e48bdb0bb636227381c22217365c47
* WorkingDir: Correctly strip DOS line endings while migrating,
              to fix eepsite location on 0.9.5 Windows installs (ticket #919)

applied changes from cc74155815c98674b74cd7d9abb59704005d6b85
             through 40d650b134e48bdb0bb636227381c22217365c47
2013-04-20 18:53:01 +00:00
zzz
88afb23a8c Backport of b6b65cd637f41758bfd38692772ffade3c8cbbbc
Installer: run fixperms.bat all Windows versions except XP/2003.
Wasn't being run on Windows 8.
2013-04-20 18:46:27 +00:00
zzz
a7a0ca87c9 Branch from 0.9.5 release.
Implement new Main wrapper class for utility.jar, to
work around izpack ticket #162 http://jira.codehaus.org/browse/IZPACK-162
which prevents us from specifying a main class as it fails on
Windows installations when a full path including a drive letter is specified
(ticket #912)
2013-04-20 18:42:55 +00:00
kytv
7371718afc Installer: run fixperms.bat all Windows versions except XP/2003. 2013-04-19 13:41:56 +00:00
zzz
1e5ffe636f * Updates:
- Notify manager about all available update methods at once, so the priority
     system works and it doesn't only update via HTTP
   - Start router update download at startup if available
   - Only check plugins when core version increases, not decreases, so we
     don't update plugins when downgrading
   - Limit length of URL shown on summary bar
2013-04-19 11:49:22 +00:00
zzz
ca1e8d09cc debug log 2013-04-19 11:47:05 +00:00
zzz
ddc5e2c23f * WorkingDir: Correctly strip DOS line endings while migrating,
to fix eepsite location on 0.9.5 Windows installs (ticket #919)
2013-04-19 11:44:57 +00:00
zzz
3086fd3ce0 * LogManager: Add support for saving properties added in recent releases 2013-04-19 11:42:32 +00:00
zzz
5ea2832ae0 * AppManager: Register jetty, console, and SAM with manager 2013-04-19 11:41:35 +00:00
zzz
5cb449efed * i2psnark: Disable spellcheck in more form fields 2013-04-19 11:40:36 +00:00
kytv
46f8344d30 Add new *.i2p2.de certificate 2013-04-18 15:51:17 +00:00
zzz
b370fe6838 * SusiMail: Fix loading of Jetty classes 2013-04-18 15:25:33 +00:00
zzz
d6b28a4eb1 * i2ptunnel: Set target=_top in all external links to break out of console iframe 2013-04-18 15:24:46 +00:00
zzz
72ead2bbcc * i2psnark: Fix params after P-R-G 2013-04-18 15:24:01 +00:00
zzz
648701afdd * Eepsite: Fix jetty.xml configuration of ThreadPool 2013-04-17 21:06:52 +00:00
zzz
389f540f44 less dots 2013-04-17 21:04:21 +00:00
echelon
ceda25fb36 added browser http proxy setup to initial news 2013-04-17 18:21:55 +00:00
zzz
c4e2019657 * SusiDNS: Set target=_top in all external links to break out of console iframe 2013-04-17 17:06:34 +00:00
zzz
b64b2629b9 * i2ptunnel: Fix default form action (ticket #882) 2013-04-17 17:04:34 +00:00
zzz
9443a96f0c * Systray: Better detection of 64-bit Windows (tickets #756, #912)
- Don't even instantiate systray unless on 32-bit Windows
2013-04-17 14:49:25 +00:00
zzz
6af73d087b * Console: Better handling of missing font for graphing (ticket #915)
- Remove unused imports
2013-04-17 14:45:24 +00:00
zzz
c61f2af8b3 * SAM: Implement ClientApp interface (ticket #347) 2013-04-16 21:07:00 +00:00
zzz
a3aee79e9c * ClientAppManager: Add method to look up clients by class and args
* Console: Implement stopping of clients using the ClientApp interface
            (ticket #347)
2013-04-16 14:59:18 +00:00
kytv
7d0f626fd5 remove mime types already set by jetty 2013-04-15 21:41:53 +00:00
zzz
e34a98620c merge of '186e5e48c613c85b8e11c61ec920a40837bfae8e'
and '3449c389b42e40b9c9a07848a868bb745c5c4540'
2013-04-15 20:59:28 +00:00
zzz
6c32a05378 2nd instance bootstraps DHT from 1st instance 2013-04-15 20:56:10 +00:00
kytv
ec4c830c09 i2psnark: update mime types 2013-04-15 20:28:22 +00:00
zzz
9e5d809650 trim form values 2013-04-15 20:23:39 +00:00
zzz
1746a81234 update servlet base after changing dir 2013-04-15 18:54:47 +00:00
zzz
efe7a7536d * i2psnark:
- Add data directory configuration to GUI (ticket #768)
   - Add page size configuration to GUI
2013-04-15 18:39:59 +00:00
zzz
11dd7f6b8c * Console: Move from deprecated Jetty SSL methods to SslContextFactory 2013-04-15 15:53:29 +00:00
zzz
e29bb5b88b * i2psnark:
- Mime type fixes
   - Remove web classes from jar
2013-04-15 12:12:35 +00:00
zzz
57b794f72a * Jetty logging: Fix logging using I2PLogger class;
log ignored messages at debug level
2013-04-14 14:02:43 +00:00
zzz
8bfe3f632e * i2psnark:
- Set unique tunnel nickname for additional instances
   - Increase page size to 50
   - Restore 1-arg SnarkManager constructor for compatibility
   - Add note about DHT file w/ multiple instances, to be fixed
   - Log tweak
2013-04-14 14:00:47 +00:00
zzz
21e47e61f0 * Console: Add /graph support for bw.combined, consolidate
rendering code (ticket #890)
2013-04-13 12:13:55 +00:00
zzz
49cc6b5100 * i2psnark:
- Limit number of torrents displayed; add previous/next page buttons
   - Only register one instance with UpdateManager
   - New icons from famfam/silk, same license
2013-04-13 12:12:22 +00:00
kytv
10a42c8b0d debian: add new jetty7 jars to package 2013-04-13 00:23:24 +00:00
zzz
f59ea790ca Javadoc fixups for Jetty 7 2013-04-12 13:53:54 +00:00
zzz
28f1170d95 history for prop, -1 2013-04-10 17:39:27 +00:00
zzz
8eb7cf7bae propagate from branch 'i2p.i2p.zzz.jetty7' (head 12e512b792594fe6a291ad3ab303fca30228391b)
to branch 'i2p.i2p' (head f3775dd82af85ba335258bd9f0fc06131a1daaa9)
2013-04-10 17:24:11 +00:00
zzz
1be0695a21 remove extra semicolon 2013-04-10 17:23:43 +00:00
zzz
65480456cd - I2NP: Ignore unused 7 bits of the Database Lookup Message,
so we can use them later
2013-04-10 17:22:51 +00:00
zzz
5962577b53 - I2NP: Ignore unused 7 bits of the Database Lookup Message,
so we can use them later
2013-04-10 17:06:32 +00:00
zzz
1222776da3 tweak proxy error page 2013-04-10 17:04:07 +00:00
zzz
13633a0532 remove debug id 2013-04-10 17:03:15 +00:00
zzz
1eda9e9053 set ethertype to IPv4 2013-04-10 17:01:54 +00:00
zzz
2557a0bd84 increase threads 2013-04-10 17:00:54 +00:00
str4d
e1c533e9de Fixed path to start.ico 2013-04-08 22:44:58 +00:00
zzz
bb8183d0ee - Backup up more Jetty 6 config files before migration
- Try to avoid zip file closed exceptions
  - Fix jetty.xml, switch from deprecated WebAppDeployer to WebAppProvider
2013-04-08 15:29:02 +00:00
zzz
9478a84af7 - Switch from Jetty 7.6.8 to 7.6.10; check in jars
- Re-enable web downloads for easy jetty updating
  - Add dependency checking in apps/jetty build
  - Other build.xml tweaks
2013-04-07 15:01:02 +00:00
zzz
56eba28a50 propagate from branch 'i2p.i2p' (head d30ab8d5835ca55d63913342f0d28169c88e5d77)
to branch 'i2p.i2p.zzz.jetty7' (head fdd1d82c4bb26ed934170c34dd803c342a183a91)
2013-04-07 13:33:13 +00:00
zzz
f8d323bc7b propagate from branch 'i2p.i2p' (head 5737078c5993e2fcf73520cc610a71125b12520b)
to branch 'i2p.i2p.zzz.jetty7' (head a93a47d79b1db119ec8c62b46a4a4e226043bd17)
2013-04-07 13:20:34 +00:00
str4d
8857fe5550 Set defaults based on installer/i2pstandalone.xml and build.xml/doBuildEXE 2013-04-04 22:25:05 +00:00
str4d
45a38a5425 Only use original argc/v if there are arguments, otherwise use launch.properties or defaults 2013-04-04 22:15:21 +00:00
str4d
7f471910ed Marked Windows-specific code in preparation for a cross-platform binary 2013-04-04 21:51:57 +00:00
str4d
f6190dd82d Get a simple I2P.exe working 2013-04-03 01:55:02 +00:00
str4d
51f072cc72 Migrated limewireExe to i2pExe 2013-04-03 01:52:14 +00:00
str4d
b65898e0dd Ticket #741 - Added limewireExe source 2013-04-03 01:39:33 +00:00
kytv
7b753c9d30 merge of '48ac112fe938c8e960413ad60f64d313a1e5c9ac'
and 'c4b1087c95c82bb9dde50c078a0c2c0e86c562bc'
2013-04-02 22:46:25 +00:00
dev
dc8d70102c merge of '185bc62d33224812060d2f68266a029935fb710d'
and '381b15133084a1b3e1c37f66a62a768fedefd3d4'
2013-04-02 22:12:57 +00:00
dev
2cbb157f2d add lists.i2p2.i2p 2013-04-02 22:10:08 +00:00
meeh
2c47c21038 * Added backup's ressed server. (Thanks backup!)
* Temporary removing h2ik's server since he's been AWOL since 06-03-2013 and he's reseed server is down.
2013-04-01 13:18:47 +00:00
kytv
5904d5764c Debian: update changelog 2013-03-31 12:51:20 +00:00
kytv
d5443a34ea Debian: explicitly set permissions in postinst on /etc/i2p/wrapper.config (fixes #906) 2013-03-31 12:47:53 +00:00
kytv
af79b74c8c checkcerts.sh: cross platform support on *NIX
- function to convert dates to Julian to perform date calculation if GNU date is
  not present.
2013-03-30 21:52:01 +00:00
kytv
bfc327833c checkcerts.sh: add some support for non-Linux systems
Date computations as performed in this script require the use of GNU date,
which is only available by default on Linux systems. With this check-in we
explicitly check for the existence of GNU date before continuing with the date
calculations.

Previous versions of this script relied on 'certtool' to print the expiration
dates but certtool isn't available by default on non-Linux systems either. The
previous check-in added support for using OpenSSL, retaining the old behavior
on non-Linux systems.

(Also a re-arrangement of the date warning logic)
2013-03-30 14:24:59 +00:00
kytv
427abb081c remove debug text 2013-03-30 02:26:37 +00:00
kytv
6992090cda various updates to checkcerts script
- add support for 'openssl'
- parse expiration date, failing if expired or if expires within 30 days
- warn at 60
2013-03-30 02:22:23 +00:00
zzz
9b0c481525 0.9.5 2013-03-08 13:03:50 +00:00
zzz
77cfe0be01 graphs.jsp: Fix saving settings (ticket #857) 2013-03-03 20:32:02 +00:00
kytv
041da814d2 merge of '4482eec8563d6ed220c2042b18fc09164aaa4404'
and 'ce2de3b5c7bc1fcd077ff9d6327eaf24758d2a13'
2013-03-03 18:42:46 +00:00
kytv
7b7f3ea025 update geoip based on the Maxmind GeoLite Country database from 2013-02-19 2013-03-03 17:22:09 +00:00
kytv
53d5c0854f removing email address per request 2013-03-03 17:15:06 +00:00
meeh
b2f1e78d62 Temporary removing ju1c3d's reseed server until it's up and working fine on the new system. 2013-03-03 17:08:26 +00:00
kytv
9ba17d2e90 French, German, Norwegian, Polish, and Portuguese translation updates from tx 2013-02-22 13:20:41 +00:00
kytv
cc18f62fb5 Add new syndie hostnames 2013-02-13 20:50:05 +00:00
kytv
8950cc48a6 Flag of Curaçao, courtesy of David Benbennick, released into the public domain 2013-02-13 20:47:29 +00:00
zzz
51edaed610 NetDB: Randomize delay before floodfill store verify 2013-02-12 14:58:52 +00:00
zzz
3a2accdebb * Update: Bump torrent update to 3% of routers 2013-02-10 16:38:09 +00:00
zzz
6cef4f90e1 * Logs: Again, fix setting log filename (ticket #805) 2013-02-10 16:37:06 +00:00
zzz
f5e416d6bf Wrapper 3.5.17 compiled on Raspberry Pi (ticket #826)
GPLv2
binaries stripped

gcc (Debian 4.6.3-12+rpi1) 4.6.3

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-1+rpi1)
OpenJDK Zero VM (build 20.0-b12, mixed mode)

Processor	: ARMv6-compatible processor rev 7 (v6l)
BogoMIPS	: 697.95
Features	: swp half thumb fastmult vfp edsp java tls 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xb76
CPU revision	: 7

Hardware	: BCM2708
Revision	: 0002
2013-02-10 15:02:04 +00:00
zzz
5eba38a24e * NetDB:
- Encrypt DatabaseLookup messages out exploratory tunnels
     when we already have the RI of the ff
   - Don't use multiple routers from the same /16 in lookups or stores
2013-02-09 19:29:08 +00:00
zzz
7f5d6ca1c7 javadocs 2013-02-09 19:28:12 +00:00
kytv
e4318e95a5 German, Polish, Portuguese, Spanish, and Swedish translation updates from Transifex 2013-02-06 02:39:44 +00:00
str4d
eaa86664bd Fixed SOCKS mapping terminology, bumped history 2013-02-04 11:29:30 +00:00
str4d
5a1053e4fb Allow any domain name to be mapped to an IP
This enables .onion domain names to be accessed by clients that are being
routed through the SOCKS tunnel by e.g. proxychains (assuming that the SOCKS
tunnel has been configured with a SOCKS outproxy that exits into Tor). If the
.onion is not mapped to an IP address, the client would attempt a DNS lookup
which would of course fail to find the .onion.

Clearnet domain names can also be mapped to IPs, but this is irrelevant as DNS
lookups work through SOCKS (via the configured outproxy).
2013-02-04 11:21:26 +00:00
str4d
0052ebf334 Set SOCKS5 addressType to AddressType.DOMAINNAME on a successful mapping 2013-02-04 11:13:23 +00:00
kytv
d9f7b24cc7 use short name for diftracker 2013-01-31 18:18:48 +00:00
kytv
67ca0a4d20 Norwegian translations:
- enable Bokmål in router
- add to tx config
- add Bokmål translations from transifex
2013-01-31 17:51:01 +00:00
kytv
fea91a35f6 fix Norwegian translation, add to tx config 2013-01-31 16:42:57 +00:00
meeh
3214bc4f81 merge of '4e5a2d2f78b9a7603ece4e4b54720e83e062cbf4'
and '8bbaf8414a2475919844450aad53b325ee0f7e84'
2013-01-31 15:40:15 +00:00
zzz
a0befe59c3 * EepGet:
- Fix URL when not proxied to conform to RFC 2616
   - Add port to Host header to conform to RFC 2616
2013-01-31 12:54:23 +00:00
meeh
5f614db59b Adding a new reseed host. http(s)://netdb2.i2p2.no
Using certificate from cacert.org

Thanks to ju1c3d, ju1c3d@mail.i2p
2013-01-30 15:34:28 +00:00
meeh
cc4b03604d Adding Norwegian Bokmål translation to i2ptunnel. 2013-01-29 18:14:34 +00:00
zzz
573692dbdf * Console: Catch IllegalStateException storing nonces (ticket #852) 2013-01-29 13:48:00 +00:00
zzz
78dcfd830c * Translations:
- Use JVM language name if available
  - Correct Estonian language code from ee to et
2013-01-29 13:44:36 +00:00
zzz
95d0dc0419 fix BuildHandler NPE from previous checkin 2013-01-28 12:50:04 +00:00
zzz
9247dc898c * BuildHandler:
- Add early throttler based on previous hop
   - Limit concurrent next-hop lookups
2013-01-27 16:24:29 +00:00
zzz
bd900d8d55 increase ff count 2013-01-27 16:21:09 +00:00
zzz
a9eb48c4c6 javadoc 2013-01-27 16:20:26 +00:00
zzz
8afe7c261f * RandomSource: Seed from SecureRandom too 2013-01-27 16:18:56 +00:00
zzz
543870ff02 change injection errors to warns 2013-01-27 16:17:29 +00:00
str4d
92707efe8a history bump 2013-01-24 00:18:11 +00:00
str4d
42040eb6c8 Added IP -> I2P URL mapping support to SOCKS client tunnels
To use, add custom options to the SOCKS client tunnel like:

ipmapping.127.12.12.12=stats.i2p

Then save and restart the tunnel.
2013-01-24 00:14:03 +00:00
zzz
18e369bcf4 - Use servlet path everywhere, so the war can be renamed
- Use servlet path as base for config file and data directory names,
    so we may have multiple instances running together
  - Don't override service(), use doGet() and doPost() instead
2013-01-23 22:44:52 +00:00
zzz
4ba8f02f59 * Eliminate Jetty dependencies in i2psnark for good.
Required due to webapp classloader changes in Jetty 7,
  we can no longer access or extend Jetty classes.
  - Extend javax HttpServlet instead of Jetty's DefaultServlet
  - Implement BasicServlet to replace functions of DefaultServlet
  - Add MimeTypes implementation to add to servlet's defaults
  - Add local mime.properties file, remove checks in I2PSnarkServlet for those
    we were missing
  - Eliminate all use of Jetty utility classes including MimeType, Resource,
    Buffer, Cache, URIUtil, ...

TODO:
  - Use servlet path everywhere, so the war can be renamed
  - Don't override service()
2013-01-23 20:26:50 +00:00
str4d
a7fc8bdf53 Added a link to the summary bar for mobile users on /home 2013-01-21 08:38:00 +00:00
str4d
3710346764 history 2013-01-21 06:23:19 +00:00
str4d
bb0d2ef17c Added User Agent string for Opera Mobile
On tablets the UA is "Opera Tablet" so tablets will use the desktop console.
2013-01-21 06:01:42 +00:00
str4d
d5a870226c Added option to /configui to force the mobile console to be used 2013-01-21 05:59:53 +00:00
str4d
34aa3ac207 Updated history.txt 2013-01-19 03:51:42 +00:00
str4d
7d38041d23 Tweak so Android tablets use the normal routerconsole 2013-01-19 03:46:38 +00:00
str4d
e643d0a086 Fixed up mobile view of routerconsole with a mobile.css in each theme 2013-01-19 03:42:54 +00:00
kytv
dcd655fa4b * Translations
- Hungrarian, Italian, Portuguese, Russian, and Swedish translation updates
    from Transifex
  - Refresh of **/messages_en.po
2013-01-17 13:14:08 +00:00
zzz
f57f49c3c5 propagate from branch 'i2p.i2p' (head f33e0980fd48ba4acda12d2079f2a4834a710ae4)
to branch 'i2p.i2p.zzz.jetty7' (head bd1a64f7262ad5bbea3529675f1f055b9ad257a8)
2013-01-13 12:38:05 +00:00
zzz
4f146772e7 * I2CP: Failsafe check for delivery job requeueing forever (ticket #819) 2013-01-12 18:18:17 +00:00
zzz
083dffe8ed try again to prevent IllegalStateException on Java 5 2013-01-12 18:17:31 +00:00
zzz
c43a73e756 log and javadoc tweaks 2013-01-12 18:16:38 +00:00
zzz
0c94680a45 * NetDB: Split up files into subdirectories 2013-01-12 18:14:51 +00:00
zzz
832c0ff683 * SAM: Force i2cp.messageReliability=None (ticket #819) 2013-01-12 18:13:59 +00:00
zzz
95b4fe7378 * jobs.jsp: Add table of pending jobs 2013-01-12 18:13:19 +00:00
zzz
ed12bcefdb * EepGet:
- Fix format of last-modified header to use strictest RFC 822
  - Stop immediately if socket connection to proxy fails
  - Don't forget lastModified/etag headers after redirect
  - Note SocketTimeout API breakage for Syndie
2013-01-12 18:12:35 +00:00
kytv
41af00a7d6 don't run gettext if 'require.gettext' is set to false 2013-01-10 16:51:06 +00:00
kytv
e34cd0ba3f merge of '27711f734eca9313f7e0742dc1a6df964b744b86'
and '4d27e2149e5bb50280599426f3884dfcc04f920a'
2013-01-10 15:09:20 +00:00
kytv
18664d39f3 add bumpBuild target 2013-01-10 14:43:15 +00:00
zab
680c31b843 Fix/update/refactor InboundTest 2013-01-07 19:03:30 +00:00
zab
ba5005c467 Fix OutboundGatewayTest
Refactor as much as possible into GatewayTestBase
2013-01-07 18:38:13 +00:00
zab
7a8fde6637 Refactor common code between Inbound and Outbound Gateway tests in a base class
OutboundGatewayTest still fails, investigating...
2013-01-06 23:02:10 +00:00
zab
973e0e7448 Fix/update InboundGatewayTest 2013-01-06 21:42:15 +00:00
kytv
101702552f re-enable DataHelperTest since the jenkins test was a success 2013-01-06 02:41:42 +00:00
kytv
8aa7433a80 merge of '2246f1b81c19ddc2c058e68870f1445b9cca1598'
and '956cf5bff87f174141628efbad07e028e30fc4c9'
2013-01-06 02:24:09 +00:00
kytv
e7d48f1d3c - s/classpath/javac.classpath/ I'm fairly sure that this must have been added
in error.
- add jenkins.cobertura.report target. The jenkins plugin couldn't find the
  sources, so I'm hoping this helps it out.
- add debug lines cobertura needs
2013-01-06 02:22:10 +00:00
zab
7e7a68a61d fix BandwidthLimiterTest 2013-01-05 23:21:04 +00:00
zab
c558f5af85 Update FragmentTest to expect an IAE.
Update {Batched}FragmentTest to JUnit 4
	Use a single instance of I2PAppContext
2013-01-05 23:08:00 +00:00
zab
a33457ff7f Rename BuildMessageTest so it doesn't match the JUnit wildcard.
Add note that the test (most likely) needs to be re-written fom scratch.
2013-01-05 21:52:33 +00:00
kytv
16be8deb00 regex tidying
(fixed version of revision 5135b9e8fb88986fdc130971ebe75c3ab0665dcc)
2013-01-05 20:12:35 +00:00
kytv
dfcf1c1575 disapproval of revision '5135b9e8fb88986fdc130971ebe75c3ab0665dcc' 2013-01-05 16:22:28 +00:00
kytv
d1dc7cd269 tidy up version # regexes 2013-01-05 16:18:41 +00:00
str4d
88c2b3da58 merge of '3c30547c23e641e3cc7a7927d956997c0187aa5c'
and 'd0f6b1e4566b9690b60fa0fb686aadc3ad629a31'
2013-01-05 00:31:14 +00:00
str4d
0bfd747c95 Exclude from router cobertura anything that isn't net.i2p.* 2013-01-05 00:30:37 +00:00
zab
d150403395 Rename a non-junit test so it doesn't fall under the junit wildcard 2013-01-04 23:44:26 +00:00
zab
1939aaca93 Fix test and make it actually test something 2013-01-04 20:57:18 +00:00
zab
d0cb714f69 add installer/resources to the classpath for eclipse and junit task
do not use hardcoded filesystem path in junit test 
	(test still fails for different reason)
2013-01-04 20:17:35 +00:00
zab
54a35df9e9 merge of '3cd63a1366e2ca171fb8c348927047e0c0b7393d'
and 'a461c087d600d3fa0b5da2085d1dd97aff721d44'
2013-01-04 19:31:35 +00:00
zab
b1a29c9514 enable more output for easier debugging of tests 2013-01-04 19:28:37 +00:00
kytv
af21093012 javadoc fixes 2013-01-04 19:20:08 +00:00
zab
cea1b08a98 Update javadoc to specify non-null payload for datagrams 2013-01-04 18:46:00 +00:00
zab
c7f1329c04 get rid of two tests that don't make sense 2013-01-04 18:38:32 +00:00
kytv
a02f9313ff fix javadoc-test target 2013-01-04 02:47:10 +00:00
kytv
5a7d975ed6 speed up datahelper test (thanks zab) 2013-01-04 01:17:29 +00:00
str4d
455618dc26 merge of '9a6aaa59a51ac9c26f4a1a1a1db90feb17819a22'
and 'b5f4c5514ac1fbd9f7b61180c7874ddcac422c11'
2013-01-04 00:36:02 +00:00
str4d
bddfc5b526 Turn BuildMessageTest into a JUnit TestCase 2013-01-04 00:33:03 +00:00
zzz
bcbf7e6270 - Speed up crypto tests, reduce memory usage, use common context 2013-01-04 00:31:28 +00:00
kytv
83886cdcfb merge of '9cd70f6c6a5d8100782f92785a0082b09248e6b0'
and 'e6b29f8caf5730bada39b1296ff3eb3b5f363f0e'
2013-01-04 00:20:03 +00:00
zab
dbfb4cbbbb Remove test that does nothing anyway 2013-01-04 00:19:08 +00:00
kytv
fe477f0a0b merge of '96801f1975a618da3caa8943bc186ad78449ee94'
and 'fa2d2cb834d3792b816984bc44da70ad903e40e8'
2013-01-04 00:10:56 +00:00
str4d
dd24ab6f70 Create a new RouterContext for net.i2p.router.tunnel tests (can't cast I2PAppContext) 2013-01-04 00:07:15 +00:00
zab
47592377f2 Make test expect an UOE 2013-01-03 23:58:18 +00:00
zzz
e3ecc42e88 - Fix delivery instructions test 2013-01-03 23:13:47 +00:00
kytv
999b8d3c68 merge of '7b3e55d16589c2194327677322fca98e2ce056ad'
and '85eec7bc28af462eca4a83562771af846cb2b91c'
2013-01-03 22:58:46 +00:00
kytv
8e5c26270e cross platform unit test hostname faking not relying
on external tools

The original method failed on Archlinux. This should work everywhere.
2013-01-03 22:58:21 +00:00
zab
e67aa430cd merge of '616d36fc49bb03f28c56540cdd475e2f7e9e3663'
and '7a64fceed49d038439e050a81f45b1e6abb2ad19'
2013-01-03 22:55:56 +00:00
zab
8e57a2e386 Fix most of the test cases, reduce the runtime of the test
using LogManager.flush()
2013-01-03 22:55:40 +00:00
zzz
d28184ce72 - Test data strucure equals() for everything except I2CP 2013-01-03 22:05:10 +00:00
kytv
94827d6d55 merge of '4e4692d229faefe5a1a891b9e7e89302117d2970'
and '90cf0bde41018fcb22d53d168c8d6f56294d8660'
2013-01-03 20:12:47 +00:00
kytv
6c676869a0 change an ant 1.8ism to one supported in 1.7 2013-01-03 20:12:18 +00:00
zab
2c8f2ae404 Change the Rate.equals(..) method to work for Rates w/o a parent RateStat
Change the RateStat.equals(..) method to work with deserialized RateStats
	Update and fix the JUnit tests for both
2013-01-03 20:08:54 +00:00
kytv
3eb00c526d remove extranous reference (that I added) to junit; fix a bit more of the
router tests
2013-01-03 19:36:39 +00:00
zzz
83e25ef26c merge of '78c1ef42cf8e75cb54df7c34644855f54428565c'
and 'd37cf6a7b286442b886dbfd6f74ac948eee5b3fc'
2013-01-03 16:11:29 +00:00
zzz
8f4f7a677f - Fix junit path typo
- Fix several router unit test compile errors.
  They all compile now.
- Move SubmitMessageHistoryJob to i2p.scripts, it is not a unit test
2013-01-03 16:10:49 +00:00
kytv
b54c5f8545 renable slow tests
these tests are only slow with cobertura enabled
2013-01-03 14:15:56 +00:00
zzz
17ac0e4b5f - Fix last three I2CP message junit test failures caused by the removal of equals().
- Fix RouterAddress test failure caused by removal of expiration
2013-01-03 12:50:28 +00:00
zzz
4730690978 - Fix most of the I2CP message junit test failures caused by the removal of equals().
Still a few left where the test is overridden.
- Fix DestLookupMessage test failure caused by missing data.
2013-01-03 12:13:48 +00:00
kytv
9d77cd7761 allow setting hamcrest and junit locations with properties
Defaults to the ant library path (the previously hardcoded path) if not set.
2013-01-03 11:53:08 +00:00
kytv
5b81a1a6d5 catch unset classpath prop 2013-01-03 10:43:31 +00:00
kytv
f788ef97de remove cobertura.ser when ant clean is called 2013-01-03 02:43:51 +00:00
zzz
e4ec046363 - Add separate top-level junit.test and scalatest.test targets, so
you can run whichever you have the libs for
 - Add router to test target (if we don't run it, it won't get fixed)
2013-01-02 23:46:14 +00:00
str4d
cdc3682baa Fixes to JUnit tests under net.i2p.router.transport 2013-01-02 22:05:12 +00:00
str4d
dae66d7f73 Updated JUnit tests in net.i2p.router.tunnel - almost all bugs fixed 2013-01-02 21:29:54 +00:00
str4d
d6d1b51970 Set up build.xml test harness to run the JUnit4 tests as well
You will need junit4.jar, hamcrest-core.jar and hamcrest-library.jar in your
Ant library path (probably /usr/share/ant/lib)
2013-01-02 21:06:59 +00:00
zzz
6f301f01dc * Logs: Fix setting log filename (ticket #805) 2013-01-02 14:12:02 +00:00
zzz
71607fff2d javadoc 2013-01-02 14:02:02 +00:00
zzz
6ed602309f - Local mods and wrapper for SipHashInline
- Convert SessionTag.hashCode() to SipHash to prevent collision attacks
     in the SessionKeyManager; cache for speed
2013-01-02 14:01:29 +00:00
zzz
20cc48cd87 SipHash inline implementation and junit test, unmodified.
As pulled from https://github.com/nahi/siphash-java-inline
Last commit was 5be5c84851
2012-11-06

Copyright 2012  Hiroshi Nakamura <nahi@ruby-lang.org>
Apache 2 license

25%-35% faster than reference implementation in my tests.
2013-01-02 13:54:49 +00:00
zzz
f2331b0603 * New getASCII() for use in findbugs cleanups for 7-bit strings
This code was supplied by zab
2013-01-02 13:31:41 +00:00
zzz
8c2ddec400 add shortcut in equals() for speed 2013-01-02 13:27:24 +00:00
zzz
c8e12b9ac9 * Transport: Fix early NPE (ticket #824) 2013-01-02 13:23:23 +00:00
zzz
452d1d01b8 * SAM: Synchronize dissector 2013-01-02 13:21:45 +00:00
zzz
e375ffe8f1 * I2CP:
- Fix leak if nonce = 0 but reliability != none
   - More work on failure codes (ticket #788)
   - Fix race with _finished indication in OCMOSJ
2013-01-02 13:19:40 +00:00
zzz
2ea9fc5d61 I2CP: Remove static logs; Fix thread ID counter 2013-01-02 13:17:02 +00:00
zzz
912e29f8af - Remove unused equals() methods for I2CP message classes,
most did not have hashCode() implementations.
     These are never used as keys in a Set or Map or checked for equality.
     Fixes findbugs issues (ticket #379)
2013-01-02 13:13:35 +00:00
zzz
72054a7d30 reorder synch and loop 2013-01-02 13:08:34 +00:00
kytv
ab2c5ef9bb postinstall: delete both OSX scripts if we're not on OSX 2013-01-01 18:26:08 +00:00
kytv
ab0b4936ec refresh patch 2013-01-01 18:22:18 +00:00
kytv
2dd1aaab63 Update wrapper to v3.6.17 (ticket #826) 2013-01-01 10:39:08 +00:00
kytv
c05cd07ff7 Fixing two potential NPEs found by findbugs 2013-01-01 00:02:18 +00:00
kytv
adfc22499c Remove outdated javadoc reference & explicitly specify locale 2012-12-31 21:45:49 +00:00
kytv
44498ca8c7 installer: extra checks & add to findbugs target 2012-12-31 18:00:42 +00:00
kytv
a40566eefb improve installer javadocs; add minimalist package.html 2012-12-30 00:36:14 +00:00
zzz
77f0dd653a - Fix handling of duplicate participating tunnel IDs
- Reduce chance of generating duplicate IDs for our tunnels
   (ticket #812)
 - Stat cleanup
 - Comment out effectively unused countProactiveDrops()
2012-12-29 13:40:55 +00:00
zzz
8ed70084db catch iterator exception on java 5 2012-12-29 13:31:31 +00:00
zzz
2f4e3862e3 cleanups 2012-12-29 13:23:57 +00:00
zzz
667393e8cf * Javadocs: Fix javax links; add installer utils 2012-12-29 13:19:09 +00:00
zzz
c6dd7b4cc5 * i2psnark: Redirect after post
Button spacing on config form
2012-12-29 13:17:27 +00:00
kytv
db0501f31b explicitly specify encoding 2012-12-29 00:10:38 +00:00
kytv
3be5002f15 ant debian-tarball target: set .sh to mode 755 2012-12-28 21:17:56 +00:00
kytv
4389f277d6 * windows installer fixes / improvements
- move deprecated installer-only classes (Exec, Delete, and Copy) from
    i2p.jar into installer/
  - replace installer/resources/fixpaths.cmd with an improved method in java
  - combine the installer-only utility classes into a single jar and call the
    classes from within izpack
2012-12-28 20:59:17 +00:00
str4d
cf10cb1c09 Fixed out-of-date references to wrapper.jar and jbigi.jar so that the justBOB target works 2012-12-27 11:59:48 +00:00
zzz
38214cf5be * I2CP:
- Prep for delivery of detailed failure codes to the client (ticket #788)
   - Store session ID as an int instead of a long
   - Clean up some duplicate createRateStat calls (ticket #787 comment 2)
   - Other optimizations, cleanups, final
2012-12-26 14:29:49 +00:00
zzz
f4740d2639 * Stats: Clean up some duplicate createRateStat calls (ticket #787 comment 2) 2012-12-26 14:22:30 +00:00
zzz
48309c0f6d * NetDB: Split routerInfo files into subdirectories, disabled for now,
enable with router.networkDatabase.flat=false
2012-12-26 14:19:52 +00:00
zzz
cf1f42ebf8 * Tunnels: Catch rare BuildExecutor IAE only in Java 7 (ticket #811) 2012-12-26 14:16:49 +00:00
zzz
7c8bb0ba69 comment out main 2012-12-26 14:15:19 +00:00
zzz
14eedaa029 * i2psnark: Create torrent form tweaks 2012-12-26 14:14:43 +00:00
kytv
73e25aad76 * Add EOL modifications
- set eol for certain files in installer targets (since editing *.config and *.xml in windows is practically impossible without an externally installed editor such as vim or notepad++ and of course we want people to be able to read the licenses if they desire...etc.)
  - try to prevent user error by ensuring that the proxy/*.ht files have eol set to crlf in the prepConsoleDocs target
2012-12-25 00:13:32 +00:00
kytv
f3f4529d84 use ant features instead of Unix commands where possible in the installer2app target. Also make izpack2app a settable property 2012-12-24 22:09:10 +00:00
kytv
5dbe6294fb debian-binary: don't assume that noAutoDebchange will be set by people that know that debian/changelog needs to be set 2012-12-24 19:55:16 +00:00
kytv
91c9bfed3a add additional arm types to the 'noExe' condition & add reference the cybergarage javadocs revision in history.txt 2012-12-24 19:46:40 +00:00
kytv
420ccad91b javadoc fixes for the upstream cybergarage UPnP library. Upstream ticket #3598391 has been filed for this issue. 2012-12-24 19:44:25 +00:00
kytv
1d0f8b4c6d Add missing shebang lines to bundle-messages scripts 2012-12-23 17:35:07 +00:00
kytv
3396626a0c * new ant targets
- trimMtnRev: create a new property with the revision trimmed to  8 characters.
  - getExtendedVersion: create a new property that includes the full version with the shortened MTN revision tacked on
  - debchange:  automatically update debian/changelog with the I2P version. Called by the "debian" target unless the property noAutoDebchange is set.
  - debian-tarball: export i2p.i2p branch to a new directory, remove the binaries like jbigi and launch4j, and create a tarball.
* move packages created by "ant debian" to ${basedir}
* add debian/changelog to .mtn-ignore since it is now automatically updated (by default).
* add *.deb to .mtn-ignore
2012-12-23 17:30:56 +00:00
kytv
8c13d32036 debian: add repack script and update watch file to use repack.sh 2012-12-23 17:20:15 +00:00
zzz
5d523723ed merge of '2e3c8b51430edfa3ce0e82bc4b49ea7c21c0606b'
and 'c643595f81605fc5534465da3f1655e4c23345a1'
2012-12-22 19:59:06 +00:00
zzz
6d2fa690dc quoting fixups 2012-12-22 19:30:36 +00:00
zzz
470b8c59e7 minor console/update cleanups 2012-12-22 18:37:26 +00:00
zzz
81975e919b propagate from branch 'i2p.i2p.zzz.test2' (head f33dbe1499b84cf6192b1a7bd494eaf081a047c0)
to branch 'i2p.i2p' (head 4e5bd2836592b95e1eff01d8e83f2690da386ef8)
2012-12-22 18:34:51 +00:00
zzz
436d8f0785 - Add support for announce-list (BEP 12) to TrackerClient (ticket #778)
- Refactor dup tracker detection
2012-12-22 18:05:42 +00:00
kytv
fa235d97af enable i2prouter translations in the debian package & refresh patch 2012-12-22 17:51:15 +00:00
kytv
42f8c71d4e update .mtn-ignore 2012-12-22 17:50:46 +00:00
kytv
9a241af241 enable translations for 'i2prouter' 2012-12-22 15:10:57 +00:00
kytv
69d22b84f9 i2prouter: integrate modifications from upstream (Tanuki) 2012-12-22 14:57:28 +00:00
zzz
7ea1bffea2 rename Tracker class for clarity 2012-12-22 14:13:16 +00:00
kytv
c1f4155cd8 French language update from transifex + updated EN po files that were uploaded to transifex 2012-12-21 23:50:08 +00:00
kytv
85fda3ed7f minor regex tweak 2012-12-21 21:17:33 +00:00
kytv
8998bdec17 remove another reliance on external UNIX-only tools (and fixing formatting of my earlier commit) 2012-12-21 21:13:31 +00:00
kytv
c9b6a3f01c Instead of deleting the empty directory placeholders, let's just not copy them to pkg-temp to begin with. 2012-12-21 20:53:51 +00:00
kytv
05c5f66012 fix my getBuildNumber regex 2012-12-21 20:46:02 +00:00
kytv
7fd59c4f10 add more excludes to 'sloccount.report' and make the report location configurable 2012-12-21 20:45:05 +00:00
kytv
6fe127286f add armv6 and armv7 to the "do not build EXE" list 2012-12-20 07:25:28 +00:00
kytv
406bcbef9d remove dependencies on external tools for getReleaseNumber and getBuildNumber
getReleaseNumber and getBuildNumber were *NIX only targets that relied on the external tools grep, cut, awk, and tr. These targets have been rewritten to use ant features.
2012-12-20 07:23:01 +00:00
kytv
9eb25f60c3 add sloccount report target 2012-12-20 07:16:39 +00:00
kytv
b7c10d2adb remove a few more files with "ant clean" 2012-12-20 07:13:26 +00:00
kytv
816149efd3 debian: refresh patches 2012-12-19 21:31:02 +00:00
kytv
aa6eefcc76 debian: add commented entries required for PPA builds & update "debianhowto" target
If someone runs "ant debian" to make installable packages, they do not need to
have their own wrapper or commons-logging  jars. The PPA builds, however, do
require them. During the last release I made the mistake of overwriting my "PPA
debian/control" file with the one from MTN that did not include these
dependencies.

Also updating "debianhowto" to reflect the fact that we no longer use
Debian's/Ubuntu's Jetty pkgs since Jetty6 appears to be leaving their repos in
the near future.
2012-12-19 21:25:04 +00:00
kytv
9ef9e48da9 remove executable bit 2012-12-19 21:09:17 +00:00
kytv
166e36aaef move taskdefs to targets
The directory installer/lib/ will be removed if a 'stripped' source tarball is
required. Without the changes in this commit, removing this directory will
require hackery to be performed on the I2P source in order for any of the ant
targets to work.
2012-12-19 21:08:57 +00:00
zzz
667b548d3b * Update: Hide the update buttons when router.updateDisabled=true, as is the case
for Debian packages. Broken in 0.9.4. (Ticket #817)
           Remove unused shouldInstall() method.
2012-12-19 14:58:37 +00:00
kytv
5dfef69688 Add dummy placeholder files to empty eepsite directories
git and a few other vcses don't store empty directories....but now these directories
are no longer empty.
2012-12-18 20:50:29 +00:00
zzz
4e558320a9 - i2psnark: Add announce list support (BEP 12) (ticket #778)
Preliminary. Still todo: TrackerClient
2012-12-10 22:48:44 +00:00
zzz
9f6ebd8e10 longer tunnel options for servers; fix spacing issue 2012-12-10 17:39:02 +00:00
zzz
c4a0fcbf43 propagate from branch 'i2p.i2p' (head 99b582d7fcc9d377341809a5fe580b439b37fea6)
to branch 'i2p.i2p.zzz.test2' (head f620dc8ce09657b3bfe0d87b5ee09c1bc33c31d1)
2012-12-10 17:23:29 +00:00
zzz
8104cb40cd Apache Tomcat 6.0.36 2012-12-10 17:23:07 +00:00
zzz
8d2eff76f2 fix jetty system properties 2012-11-24 19:56:58 +00:00
zzz
009b0bfdde more empty jars not to pack 2012-11-23 01:30:48 +00:00
zzz
924963eba0 fix class cast exception 2012-11-22 23:14:08 +00:00
zzz
de175b80fe updates 2012-11-22 22:54:11 +00:00
zzz
9fc7258537 - Update non-default xml files
- Update DTD
2012-11-22 21:42:15 +00:00
zzz
50df4b53db - Clean up WebAppconfiguration
- Fix eepsite xml files
- First cut at updating migration code (untested)
2012-11-22 21:17:50 +00:00
zzz
02ad4d5200 fix NPE 2012-11-21 22:53:22 +00:00
zzz
56ae54c2ff Jetty 7 license info copied from jetty-distribution-7.6.8.v20121106 2012-11-21 22:20:05 +00:00
zzz
a70e040e33 susimail compile fixes for Jetty 7.
Untested.
2012-11-21 21:21:38 +00:00
zzz
c0d82fe83f i2psnark compile fixes for Jetty 7.
Untested.
2012-11-21 21:09:31 +00:00
zzz
f1dd77982a RouterConsole compile fixes for Jetty 7.
Convert LocaleWebAppHandler from extending WebAppContext to
extending HandlerWrapper, since handle() is now final in WebAppContext.
Untested.
2012-11-21 20:49:18 +00:00
zzz
be8697cb9a jetty 7 first cut 2012-11-21 18:05:50 +00:00
648 changed files with 86594 additions and 76435 deletions

View File

@@ -2,6 +2,7 @@
# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list
_jsp\.java$
\.bz2$
\.tar$
\.class$
\.diff$
\.exe$
@@ -15,6 +16,7 @@ _jsp\.java$
\.su2$
\.tar$
\.war$
.\deb$
\.zip$
^\.
^build
@@ -23,4 +25,7 @@ _jsp\.java$
/build
/classes/
^debian/copyright
^debian/changelog
override.properties
sloccount.sc
^reports/

View File

@@ -9,9 +9,11 @@ trans.es = apps/i2ptunnel/locale/messages_es.po
trans.fr = apps/i2ptunnel/locale/messages_fr.po
trans.hu = apps/i2ptunnel/locale/messages_hu.po
trans.it = apps/i2ptunnel/locale/messages_it.po
trans.nb = apps/i2ptunnel/locale/messages_nb.po
trans.nl = apps/i2ptunnel/locale/messages_nl.po
trans.pl = apps/i2ptunnel/locale/messages_pl.po
trans.pt = apps/i2ptunnel/locale/messages_pt.po
trans.ru = apps/i2ptunnel/locale/messages_ru.po
trans.ru_RU = apps/i2ptunnel/locale/messages_ru.po
trans.sv_SE = apps/i2ptunnel/locale/messages_sv.po
trans.uk_UA = apps/i2ptunnel/locale/messages_uk.po
trans.vi = apps/i2ptunnel/locale/messages_vi.po
@@ -26,16 +28,18 @@ trans.da = apps/routerconsole/locale/messages_da.po
trans.de = apps/routerconsole/locale/messages_de.po
trans.el = apps/routerconsole/locale/messages_el.po
trans.es = apps/routerconsole/locale/messages_es.po
trans.et_EE = apps/routerconsole/locale/messages_ee.po
trans.et_EE = apps/routerconsole/locale/messages_et.po
trans.fi = apps/routerconsole/locale/messages_fi.po
trans.fr = apps/routerconsole/locale/messages_fr.po
trans.hu = apps/routerconsole/locale/messages_hu.po
trans.it = apps/routerconsole/locale/messages_it.po
trans.nb = apps/routerconsole/locale/messages_nb.po
trans.nl = apps/routerconsole/locale/messages_nl.po
trans.pl = apps/routerconsole/locale/messages_pl.po
trans.pt = apps/routerconsole/locale/messages_pt.po
trans.ru = apps/routerconsole/locale/messages_ru.po
trans.ru_RU = apps/routerconsole/locale/messages_ru.po
trans.sv_SE = apps/routerconsole/locale/messages_sv.po
trans.tr_TR = apps/routerconsole/locale/messages_tr.po
trans.uk_UA = apps/routerconsole/locale/messages_uk.po
trans.vi = apps/routerconsole/locale/messages_vi.po
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
@@ -50,10 +54,11 @@ trans.es = apps/i2psnark/locale/messages_es.po
trans.fr = apps/i2psnark/locale/messages_fr.po
trans.hu = apps/i2psnark/locale/messages_hu.po
trans.it = apps/i2psnark/locale/messages_it.po
trans.nb = apps/i2psnark/locale/messages_nb.po
trans.nl = apps/i2psnark/locale/messages_nl.po
trans.pl = apps/i2psnark/locale/messages_pl.po
trans.pt = apps/i2psnark/locale/messages_pt.po
trans.ru = apps/i2psnark/locale/messages_ru.po
trans.ru_RU = apps/i2psnark/locale/messages_ru.po
trans.sv_SE = apps/i2psnark/locale/messages_sv.po
trans.vi = apps/i2psnark/locale/messages_vi.po
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
@@ -73,7 +78,7 @@ trans.it = apps/susidns/locale/messages_it.po
trans.nl = apps/susidns/locale/messages_nl.po
trans.pl = apps/susidns/locale/messages_pl.po
trans.pt = apps/susidns/locale/messages_pt.po
trans.ru = apps/susidns/locale/messages_ru.po
trans.ru_RU = apps/susidns/locale/messages_ru.po
trans.sv_SE = apps/susidns/locale/messages_sv.po
trans.uk_UA = apps/susidns/locale/messages_uk.po
trans.vi = apps/susidns/locale/messages_vi.po
@@ -93,9 +98,10 @@ trans.hu = apps/desktopgui/locale/messages_hu.po
trans.it = apps/desktopgui/locale/messages_it.po
trans.nl = apps/desktopgui/locale/messages_nl.po
trans.pl = apps/desktopgui/locale/messages_pl.po
trans.ru = apps/desktopgui/locale/messages_ru.po
trans.ru_RU = apps/desktopgui/locale/messages_ru.po
trans.sv_SE = apps/desktopgui/locale/messages_sv.po
trans.uk_UA = apps/desktopgui/locale/messages_uk.po
trans.tr_TR = apps/desktopgui/locale/messages_tr.po
trans.vi = apps/desktopgui/locale/messages_vi.po
trans.zh_CN = apps/desktopgui/locale/messages_zh.po
@@ -109,9 +115,10 @@ trans.fr = apps/susimail/locale/messages_fr.po
trans.hu = apps/susimail/locale/messages_hu.po
trans.it = apps/susimail/locale/messages_it.po
trans.nl = apps/susimail/locale/messages_nl.po
trans.ru = apps/susimail/locale/messages_ru.po
trans.ru_RU = apps/susimail/locale/messages_ru.po
trans.sv_SE = apps/susimail/locale/messages_sv.po
trans.pl = apps/susimail/locale/messages_pl.po
trans.pt = apps/susimail/locale/messages_pt.po
trans.uk_UA = apps/susimail/locale/messages_uk.po
trans.vi = apps/susimail/locale/messages_vi.po
trans.zh_CN = apps/susimail/locale/messages_zh.po
@@ -127,9 +134,23 @@ trans.fr = debian/po/fr.po
trans.it = debian/po/it.po
trans.hu = debian/po/hu.po
trans.pl = debian/po/pl.po
trans.ru = debian/po/ru.po
trans.pt = debian/po/pt.po
trans.ru_RU = debian/po/ru.po
trans.sv_SE = debian/po/sv.po
trans.uk_UA = debian/po/uk.po
trans.tr_TR = debian/po/tr.po
trans.zh_CN = debian/po/zh.po
[I2P.i2prouter-script]
source_file = installer/resources/locale/po/messages_en.po
source_lang = en
trans.de = installer/resources/locale/po/messages_de.po
trans.fr = installer/resources/locale/po/messages_fr.po
trans.it = installer/resources/locale/po/messages_it.po
trans.sv_SE = installer/resources/locale/po/messages_sv.po
trans.ru_RU = installer/resources/locale/po/messages_ru.po
trans.tr_TR = installer/resources/locale/po/messages_tr.po
trans.zh_CN = installer/resources/locale/po/messages_zh.po
[main]
host = http://www.transifex.net

View File

@@ -72,6 +72,9 @@ Public domain except as listed below:
Copyright (c) 2006, Matthew Estes
See licenses/LICENSE-BlockFile.txt
SipHashInline:
Copyright 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
See licenses/LICENSE-Apache2.0.txt
Router (router.jar):
Public domain except as listed below:
@@ -129,7 +132,7 @@ Installer:
Java Service Wrapper Community Edition 32-bit 3.5.13:
Java Service Wrapper Community Edition 32-bit 3.5.19:
Copyright (C) 1999-2011 Tanuki Software, Ltd. All Rights Reserved.
See licenses/LICENSE-Wrapper.txt
@@ -174,10 +177,11 @@ Applications:
By welterde.
See licenses/LICENSE-GPLv2.txt
Jetty 6.1.26:
Copyright 1995-2009 Mort Bay Consulting Pty Ltd
See licenses/LICENSE-Jetty.txt
Jetty 7.6.11.v20130520:
See licenses/ABOUT-Jetty.html
See licenses/NOTICE-Jetty.html
See licenses/LICENSE-Apache2.0.txt
See licenses/LICENSE-ECLIPSE-1.0.html
See licenses/NOTICE-Commons-Logging.txt
JRobin 1.5.9.1:
@@ -197,6 +201,7 @@ Applications:
- Jersey and EU flag icons: public domain, courtesy Xrmap flag
collection http://www.arvernes.com/wiki/index.php/Xrmap
- Guernsey and Isle of Man flags from the Open Clip Art Library, released into the public domain
- Curaçao, courtesy of David Benbennick, released into the public domain
- All other flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
Silk icons: See licenses/LICENSE-SilkIcons.txt
FatCow icons: See licenses/LICENSE-FatCowIcons.txt
@@ -238,8 +243,8 @@ Applications:
Bundles systray4j-2.4.1:
See licenses/LICENSE-LGPLv2.1.txt
Tomcat 6.0.35:
Copyright 1999-2011 The Apache Software Foundation
Tomcat 6.0.37:
Copyright 1999-2013 The Apache Software Foundation
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Tomcat.txt

View File

@@ -83,7 +83,7 @@
<pathelement path="${javac.classpath}" />
</path>
</copy>
<copy todir="${dist.dir}/lib" file="../../installer/lib/jbigi/jbigi.jar" />
<copy todir="${dist.dir}/lib" file="../../build/jbigi.jar" />
<!-- Extract the classes inside the jar files -->
<unjar dest="${dist.dir}/classes" >

View File

@@ -30,11 +30,11 @@ excludes=**/*.html,**/*.txt
file.reference.build-javadoc=../../i2p.i2p/build/javadoc
file.reference.i2p.jar=../../core/java/build/i2p.jar
file.reference.i2ptunnel.jar=../i2ptunnel/java/build/i2ptunnel.jar
file.reference.jbigi.jar=../../installer/lib/jbigi/jbigi.jar
file.reference.jbigi.jar=../../build/jbigi.jar
file.reference.mstreaming.jar=../ministreaming/java/build/mstreaming.jar
file.reference.router.jar=../../router/java/build/router.jar
file.reference.streaming.jar=../streaming/java/build/streaming.jar
file.reference.wrapper.jar=../../installer/lib/wrapper/linux/wrapper.jar
file.reference.wrapper.jar=../../installer/lib/wrapper/all/wrapper.jar
includes=**
jar.compress=true
javac.classpath=\

View File

@@ -388,7 +388,7 @@ public class DoCMDS implements Runnable {
* Does the base64 information look OK
*
* @param data
* @return
* @return OK
*/
private boolean is64ok(String data) {
try {

View File

@@ -47,7 +47,7 @@ import net.i2p.util.SecureDirectory;
public class Daemon {
public static final String VERSION = "2.0.4";
private static final Daemon _instance = new Daemon();
private boolean _running;
private volatile boolean _running;
private static final boolean DEBUG = false;
/**

View File

@@ -8,12 +8,15 @@
<property name="resources" value="resources"/>
<property name="javadoc" value="javadoc"/>
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
</condition>
<property name="javac.compilerargs" value=""/>
<property name="require.gettext" value="true" />
<target name="init">
<mkdir dir="${build}"/>
<mkdir dir="${build}/${resources}"/>
<mkdir dir="${build}"/>
<mkdir dir="${build}/${resources}"/>
<mkdir dir="${build}/${javadoc}"/>
<mkdir dir="${dist}"/>
</target>
@@ -39,7 +42,7 @@
</copy>
</target>
<target name="bundle" >
<target name="bundle" unless="no.bundle">
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
<arg value="./bundle-messages.sh" />
</exec>

View File

@@ -1,3 +1,4 @@
#!/bin/sh
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.

View File

@@ -2,21 +2,25 @@
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
#
# Translators:
# blabla <blabla@trash-mail.com>, 2011
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# Boxoa590, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-03-30 21:58+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"PO-Revision-Date: 2013-06-08 04:50+0000\n"
"Last-Translator: Boxoa590\n"
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
@@ -24,7 +28,7 @@ msgstr "Démarrer I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P démarre!"
msgstr "I2P démarre !"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
@@ -32,7 +36,7 @@ msgstr "Démarrage"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Lancer le navigateur"
msgstr "Lancer le navigateur I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
@@ -52,5 +56,4 @@ msgstr "Configuration de l'icône de notification"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Activer l'icône de notification"
msgstr "Activer l'icône de notification ?"

View File

@@ -2,21 +2,24 @@
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
#
# Translators:
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# Roman Azarenko <x12ozmouse@ya.ru>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-19 17:26+0000\n"
"PO-Revision-Date: 2011-02-23 10:23+0500\n"
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2013-07-07 11:44+0000\n"
"Last-Translator: Roman Azarenko <x12ozmouse@ya.ru>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Language: ru_RU\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"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
@@ -32,7 +35,7 @@ msgstr "Запускается"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Запустить I2P браузер"
msgstr "Запустить браузер I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
@@ -48,9 +51,8 @@ msgstr "Остановить I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Настройка иконки в трее"
msgstr "Конфигурация значка в области уведомлений"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Отображать ли иконку в трее?"
msgstr "Отображать ли значок в области уведомлений?"

View File

@@ -0,0 +1,56 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# Kaya Zeren <kayazeren@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2013-04-26 06:07+0000\n"
"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: tr_TR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "I2P başlasın"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P başlatılıyor!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Başlatılıyor"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "I2P Tarayıcısınıın"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Masaüstü Arayüzünü Ayarlayın"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "I2P Yeniden Başlasın"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "I2P Durdurulsun"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Sistem tepsisi simgesi ayarı"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Sistem tepsisi simgesi kullanılsın"

View File

@@ -19,11 +19,15 @@
<pathelement location="../../ministreaming/java/build/obj" />
<pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" />
<pathelement location="../../jetty/jettylib/javax.servlet.jar" />
<pathelement location="../../jetty/jettylib/jetty-servlet.jar" />
<pathelement location="../../jetty/jettylib/jetty-util.jar" />
</classpath>
</depend>
</target>
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
</condition>
<property name="javac.compilerargs" value="" />
<property name="require.gettext" value="true" />
@@ -35,7 +39,7 @@
debug="true" deprecation="on" source="1.5" target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../jetty/jettylib/jetty-util.jar:../../ministreaming/java/build/mstreaming.jar" >
classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../jetty/jettylib/jetty-servlet.jar:../../jetty/jettylib/jetty-util.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
@@ -57,7 +61,7 @@
<target name="jar" depends="builddep, compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.tr" value="" />
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/FetchAndAdd*.class **/messages_*.class">
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/web/* **/messages_*.class">
<manifest>
<attribute name="Main-Class" value="org.klomp.snark.Snark" />
<attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" />
@@ -72,7 +76,7 @@
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/i2psnark.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/FetchAndAdd*.class **/messages_*.class" />
<srcfiles dir= "build/obj" includes="**/*.class" excludes="**/web/* **/messages_*.class" />
</uptodate>
<condition property="shouldListChanges" >
<and>
@@ -100,9 +104,11 @@
<copy todir="build/icons/.icons" >
<fileset dir="../icons/" />
</copy>
<!-- mime.properties must be in with the classes -->
<copy file="../mime.properties" todir="build/obj/org/klomp/snark/web" />
<war destfile="../i2psnark.war" webxml="../web.xml" >
<!-- 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" />
<classes dir="./build/obj" includes="**/web/*" />
<fileset dir="build/icons/" />
<manifest>
<attribute name="Implementation-Version" value="${full.version}" />
@@ -120,7 +126,7 @@
</uptodate>
</target>
<target name="bundle" depends="compile">
<target name="bundle" depends="compile" unless="no.bundle">
<!-- 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="true" failonerror="${require.gettext}" >
@@ -169,7 +175,6 @@
<copy file="../../jetty/jettylib/commons-logging.jar" tofile="./dist/lib/commons-logging.jar" />
<copy file="../../jetty/jettylib/javax.servlet.jar" tofile="./dist/lib/javax.servlet.jar" />
<copy file="../../jetty/jettylib/org.mortbay.jetty.jar" tofile="./dist/lib/org.mortbay.jetty.jar" />
<copy file="../../jetty/jettylib/jasper-compiler.jar" tofile="./dist/lib/jasper-compiler.jar" />
<copy file="../../jetty/jettylib/jasper-runtime.jar" tofile="./dist/lib/jasper-runtime.jar" />
<copy file="../../ministreaming/java/build/mstreaming.jar" tofile="./dist/lib/mstreaming.jar" />
<copy file="../../streaming/java/build/streaming.jar" tofile="./dist/lib/streaming.jar" />

View File

@@ -1,3 +1,4 @@
#!/bin/sh
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.

View File

@@ -2,7 +2,6 @@ package net.i2p.kademlia;
import java.util.Comparator;
import net.i2p.data.DataHelper;
import net.i2p.data.SimpleDataStructure;
/**
@@ -21,8 +20,20 @@ class XORComparator<T extends SimpleDataStructure> implements Comparator<T> {
}
public int compare(T lhs, T rhs) {
byte lhsDelta[] = DataHelper.xor(lhs.getData(), _base);
byte rhsDelta[] = DataHelper.xor(rhs.getData(), _base);
return DataHelper.compareTo(lhsDelta, rhsDelta);
// same as the following but byte-by-byte for efficiency
//byte lhsDelta[] = DataHelper.xor(lhs.getData(), _base);
//byte rhsDelta[] = DataHelper.xor(rhs.getData(), _base);
//return DataHelper.compareTo(lhsDelta, rhsDelta);
byte lhsb[] = lhs.getData();
byte rhsb[] = rhs.getData();
for (int i = 0; i < _base.length; i++) {
int ld = (lhsb[i] ^ _base[i]) & 0xff;
int rd = (rhsb[i] ^ _base[i]) & 0xff;
if (ld < rd)
return -1;
if (ld > rd)
return 1;
}
return 0;
}
}

View File

@@ -37,7 +37,9 @@ class BWLimits {
return rv;
}
/****
public static void main(String args[]) {
System.out.println(Arrays.toString(getBWLimits("127.0.0.1", 7654)));
}
****/
}

View File

@@ -33,13 +33,12 @@ import net.i2p.data.Hash;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.ObjectCounter;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer;
import net.i2p.util.SimpleTimer2;
/**
* Accepts connections on a TCP port and routes them to sub-acceptors.
* Accepts connections on a I2PServerSocket and routes them to PeerAcceptors.
*/
public class ConnectionAcceptor implements Runnable
class ConnectionAcceptor implements Runnable
{
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ConnectionAcceptor.class);
private I2PServerSocket serverSocket;
@@ -47,14 +46,22 @@ public class ConnectionAcceptor implements Runnable
private Thread thread;
private final I2PSnarkUtil _util;
private final ObjectCounter<Hash> _badCounter = new ObjectCounter();
private final SimpleTimer2.TimedEvent _cleaner;
private boolean stop;
private volatile boolean stop;
private boolean socketChanged;
private static final int MAX_BAD = 2;
// protocol errors before blacklisting.
private static final int MAX_BAD = 1;
private static final long BAD_CLEAN_INTERVAL = 30*60*1000;
public ConnectionAcceptor(I2PSnarkUtil util) { _util = util; }
/**
* Multitorrent
*/
public ConnectionAcceptor(I2PSnarkUtil util) {
_util = util;
_cleaner = new Cleaner();
}
public synchronized void startAccepting(PeerCoordinatorSet set, I2PServerSocket socket) {
if (serverSocket != socket) {
@@ -67,11 +74,14 @@ public class ConnectionAcceptor implements Runnable
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
_util.getContext().simpleScheduler().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
_cleaner.schedule(BAD_CLEAN_INTERVAL);
}
}
}
/**
* Unused (single torrent)
*/
public ConnectionAcceptor(I2PSnarkUtil util, I2PServerSocket serverSocket,
PeerAcceptor peeracceptor)
{
@@ -82,7 +92,7 @@ public class ConnectionAcceptor implements Runnable
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
_util.getContext().simpleScheduler().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
_cleaner = new Cleaner();
}
public void halt()
@@ -101,14 +111,20 @@ public class ConnectionAcceptor implements Runnable
Thread t = thread;
if (t != null)
t.interrupt();
_cleaner.cancel();
}
/**
* Effectively unused, would only be called if we changed
* I2CP host/port, which is hidden in the gui if in router context
*/
public void restart() {
serverSocket = _util.getServerSocket();
socketChanged = true;
Thread t = thread;
if (t != null)
t.interrupt();
_cleaner.schedule(BAD_CLEAN_INTERVAL);
}
public int getPort()
@@ -150,9 +166,11 @@ public class ConnectionAcceptor implements Runnable
try { socket.close(); } catch (IOException ioe) {}
continue;
}
if (_badCounter.count(socket.getPeerDestination().calculateHash()) >= MAX_BAD) {
int bad = _badCounter.count(socket.getPeerDestination().calculateHash());
if (bad >= MAX_BAD) {
if (_log.shouldLog(Log.WARN))
_log.warn("Rejecting connection from " + socket.getPeerDestination().calculateHash() + " after " + MAX_BAD + " failures");
_log.warn("Rejecting connection from " + socket.getPeerDestination().calculateHash() +
" after " + bad + " failures, max is " + MAX_BAD);
try { socket.close(); } catch (IOException ioe) {}
continue;
}
@@ -214,7 +232,17 @@ public class ConnectionAcceptor implements Runnable
}
/** @since 0.9.1 */
private class Cleaner implements SimpleTimer.TimedEvent {
public void timeReached() { _badCounter.clear(); }
private class Cleaner extends SimpleTimer2.TimedEvent {
public Cleaner() {
super(_util.getContext().simpleTimer2());
}
public void timeReached() {
if (stop)
return;
_badCounter.clear();
schedule(BAD_CLEAN_INTERVAL);
}
}
}

View File

@@ -37,8 +37,20 @@ interface CoordinatorListener
*/
void gotMetaInfo(PeerCoordinator coordinator, MetaInfo metainfo);
/**
* Is this number of uploaders over the per-torrent limit?
*/
public boolean overUploadLimit(int uploaders);
/**
* Are we currently over the upstream bandwidth limit?
*/
public boolean overUpBWLimit();
/**
* Is the total (in Bps) over the upstream bandwidth limit?
*/
public boolean overUpBWLimit(long total);
public void addMessage(String message);
}

View File

@@ -49,6 +49,7 @@ import org.klomp.snark.dht.KRPC;
public class I2PSnarkUtil {
private final I2PAppContext _context;
private final Log _log;
private final String _baseName;
private boolean _shouldProxy;
private String _proxyHost;
@@ -82,8 +83,17 @@ public class I2PSnarkUtil {
public static final boolean DEFAULT_USE_DHT = true;
public I2PSnarkUtil(I2PAppContext ctx) {
this(ctx, "i2psnark");
}
/**
* @param baseName generally "i2psnark"
* @since Jetty 7
*/
public I2PSnarkUtil(I2PAppContext ctx, String baseName) {
_context = ctx;
_log = _context.logManager().getLog(Snark.class);
_baseName = baseName;
_opts = new HashMap();
//setProxy("127.0.0.1", 4444);
setI2CPConfig("127.0.0.1", 7654, null);
@@ -99,7 +109,7 @@ public class I2PSnarkUtil {
// This is used for both announce replies and .torrent file downloads,
// so it must be available even if not connected to I2CP.
// so much for multiple instances
_tmpDir = new SecureDirectory(ctx.getTempDir(), "i2psnark");
_tmpDir = new SecureDirectory(ctx.getTempDir(), baseName);
FileUtil.rmdir(_tmpDir, false);
_tmpDir.mkdirs();
}
@@ -148,7 +158,7 @@ public class I2PSnarkUtil {
}
/**
* This updates the session options and tells the router
* This updates ALL the session options (not just the bw) and tells the router
* @param limit KBps
*/
public void setMaxUpBW(int limit) {
@@ -216,9 +226,9 @@ public class I2PSnarkUtil {
}
}
if (opts.getProperty("inbound.nickname") == null)
opts.setProperty("inbound.nickname", "I2PSnark");
opts.setProperty("inbound.nickname", _baseName.replace("i2psnark", "I2PSnark"));
if (opts.getProperty("outbound.nickname") == null)
opts.setProperty("outbound.nickname", "I2PSnark");
opts.setProperty("outbound.nickname", _baseName.replace("i2psnark", "I2PSnark"));
if (opts.getProperty("outbound.priority") == null)
opts.setProperty("outbound.priority", "-10");
// Dont do this for now, it is set in I2PSocketEepGet for announces,
@@ -253,7 +263,7 @@ public class I2PSnarkUtil {
_connecting = false;
}
if (_shouldUseDHT && _manager != null && _dht == null)
_dht = new KRPC(_context, _manager.getSession());
_dht = new KRPC(_context, _baseName, _manager.getSession());
return (_manager != null);
}
@@ -588,7 +598,7 @@ public class I2PSnarkUtil {
public synchronized void setUseDHT(boolean yes) {
_shouldUseDHT = yes;
if (yes && _manager != null && _dht == null) {
_dht = new KRPC(_context, _manager.getSession());
_dht = new KRPC(_context, _baseName, _manager.getSession());
} else if (!yes && _dht != null) {
_dht.stop();
_dht = null;

View File

@@ -0,0 +1,120 @@
/*
* Released into the public domain
* with no warranty of any kind, either expressed or implied.
*/
package org.klomp.snark;
import java.util.Map;
import java.util.Properties;
import net.i2p.client.I2PSession;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.util.Log;
import net.i2p.util.SimpleTimer2;
/**
* Periodically check for idle condition based on connected peers,
* and reduce/restore tunnel count as necessary.
* We can't use the I2CP idle detector because it's based on traffic,
* so DHT and announces would keep it non-idle.
*
* @since 0.9.7
*/
class IdleChecker extends SimpleTimer2.TimedEvent {
private final I2PSnarkUtil _util;
private final PeerCoordinatorSet _pcs;
private final Log _log;
private int _consec;
private boolean _isIdle;
private static final long CHECK_TIME = 63*1000;
private static final int MAX_CONSEC_IDLE = 4;
/**
* Caller must schedule
*/
public IdleChecker(I2PSnarkUtil util, PeerCoordinatorSet pcs) {
super(util.getContext().simpleTimer2());
_log = util.getContext().logManager().getLog(IdleChecker.class);
_util = util;
_pcs = pcs;
}
public void timeReached() {
if (_util.connected()) {
boolean hasPeers = false;
for (PeerCoordinator pc : _pcs) {
if (pc.getPeers() > 0) {
hasPeers = true;
break;
}
}
if (hasPeers) {
if (_isIdle)
restoreTunnels();
} else {
if (!_isIdle) {
if (_consec++ >= MAX_CONSEC_IDLE)
reduceTunnels();
}
}
} else {
_isIdle = false;
_consec = 0;
}
schedule(CHECK_TIME);
}
/**
* Reduce to 1 in / 1 out tunnel
*/
private void reduceTunnels() {
_isIdle = true;
if (_log.shouldLog(Log.INFO))
_log.info("Reducing tunnels on idle");
setTunnels("1", "1", "0", "0");
}
/**
* Restore tunnel count
*/
private void restoreTunnels() {
_isIdle = false;
if (_log.shouldLog(Log.INFO))
_log.info("Restoring tunnels on activity");
Map<String, String> opts = _util.getI2CPOptions();
String i = opts.get("inbound.quantity");
if (i == null)
i = "3";
String o = opts.get("outbound.quantity");
if (o == null)
o = "3";
String ib = opts.get("inbound.backupQuantity");
if (ib == null)
ib = "0";
String ob= opts.get("outbound.backupQuantity");
if (ob == null)
ob = "0";
setTunnels(i, o, ib, ob);
}
/**
* Set in / out / in backup / out backup tunnel counts
*/
private void setTunnels(String i, String o, String ib, String ob) {
_consec = 0;
I2PSocketManager mgr = _util.getSocketManager();
if (mgr != null) {
I2PSession sess = mgr.getSession();
if (sess != null) {
Properties newProps = new Properties();
newProps.setProperty("inbound.quantity", i);
newProps.setProperty("outbound.quantity", o);
newProps.setProperty("inbound.backupQuantity", ib);
newProps.setProperty("outbound.backupQuantity", ob);
sess.updateOptions(newProps);
}
}
}
}

View File

@@ -61,6 +61,10 @@ public class MetaInfo
private final byte[] piece_hashes;
private final long length;
private final boolean privateTorrent;
private final List<List<String>> announce_list;
private final String comment;
private final String created_by;
private final long creation_date;
private Map<String, BEValue> infoMap;
/**
@@ -69,9 +73,11 @@ public class MetaInfo
* @param announce may be null
* @param files null for single-file torrent
* @param lengths null for single-file torrent
* @param announce_list may be null
*/
MetaInfo(String announce, String name, String name_utf8, List<List<String>> files, List<Long> lengths,
int piece_length, byte[] piece_hashes, long length, boolean privateTorrent)
int piece_length, byte[] piece_hashes, long length, boolean privateTorrent,
List<List<String>> announce_list)
{
this.announce = announce;
this.name = name;
@@ -83,6 +89,10 @@ public class MetaInfo
this.piece_hashes = piece_hashes;
this.length = length;
this.privateTorrent = privateTorrent;
this.announce_list = announce_list;
this.comment = null;
this.created_by = null;
this.creation_date = 0;
// TODO if we add a parameter for other keys
//if (other != null) {
@@ -141,6 +151,49 @@ public class MetaInfo
this.announce = val.getString();
}
// BEP 12
val = m.get("announce-list");
if (val == null) {
this.announce_list = null;
} else {
this.announce_list = new ArrayList();
List<BEValue> bl1 = val.getList();
for (BEValue bev : bl1) {
List<BEValue> bl2 = bev.getList();
List<String> sl2 = new ArrayList();
for (BEValue bev2 : bl2) {
sl2.add(bev2.getString());
}
this.announce_list.add(sl2);
}
}
// misc. optional top-level stuff
val = m.get("comment");
String st = null;
if (val != null) {
try {
st = val.getString();
} catch (InvalidBEncodingException ibee) {}
}
this.comment = st;
val = m.get("created by");
st = null;
if (val != null) {
try {
st = val.getString();
} catch (InvalidBEncodingException ibee) {}
}
this.created_by = st;
val = m.get("creation date");
long time = 0;
if (val != null) {
try {
time = val.getLong() * 1000;
} catch (InvalidBEncodingException ibee) {}
}
this.creation_date = time;
val = m.get("info");
if (val == null)
throw new InvalidBEncodingException("Missing info map");
@@ -296,6 +349,15 @@ public class MetaInfo
return announce;
}
/**
* Returns a list of lists of urls.
*
* @since 0.9.5
*/
public List<List<String>> getAnnounceList() {
return announce_list;
}
/**
* Returns the original 20 byte SHA1 hash over the bencoded info map.
*/
@@ -351,6 +413,33 @@ public class MetaInfo
return lengths;
}
/**
* The comment string or null.
* Not available for locally-created torrents.
* @since 0.9.7
*/
public String getComment() {
return this.comment;
}
/**
* The created-by string or null.
* Not available for locally-created torrents.
* @since 0.9.7
*/
public String getCreatedBy() {
return this.created_by;
}
/**
* The creation date (ms) or zero.
* Not available for locally-created torrents.
* @since 0.9.7
*/
public long getCreationDate() {
return this.creation_date;
}
/**
* Returns the number of pieces.
*/
@@ -470,12 +559,18 @@ public class MetaInfo
/**
* Creates a copy of this MetaInfo that shares everything except the
* announce URL.
* Drops any announce-list.
* Preserves infohash and info map, including any non-standard fields.
* @param announce may be null
*/
public MetaInfo reannounce(String announce)
public MetaInfo reannounce(String announce) throws InvalidBEncodingException
{
return new MetaInfo(announce, name, name_utf8, files,
lengths, piece_length,
piece_hashes, length, privateTorrent);
Map<String, BEValue> m = new HashMap();
if (announce != null)
m.put("announce", new BEValue(DataHelper.getUTF8(announce)));
Map info = createInfoMap();
m.put("info", new BEValue(info));
return new MetaInfo(m);
}
/**
@@ -486,6 +581,8 @@ public class MetaInfo
Map m = new HashMap();
if (announce != null)
m.put("announce", announce);
if (announce_list != null)
m.put("announce-list", announce_list);
Map info = createInfoMap();
m.put("info", info);
// don't save this locally, we should only do this once
@@ -506,6 +603,9 @@ public class MetaInfo
// or else we will lose any non-standard keys and corrupt the infohash.
if (infoMap != null)
return Collections.unmodifiableMap(infoMap);
// we should only get here if serving a magnet on a torrent we created
if (_log.shouldLog(Log.WARN))
_log.warn("Creating new infomap", new Exception());
// otherwise we must create it
Map info = new HashMap();
info.put("name", name);

View File

@@ -359,7 +359,7 @@ public class Peer implements Comparable
String bittorrentProtocol = new String(bs, "UTF-8");
if (!"BitTorrent protocol".equals(bittorrentProtocol))
throw new IOException("Handshake failure, expected "
+ "'Bittorrent protocol', got '"
+ "'BitTorrent protocol', got '"
+ bittorrentProtocol + "'");
// Handshake read - options

View File

@@ -40,7 +40,7 @@ import net.i2p.util.Log;
* protocol connection. The PeerAcceptor will then create a new peer
* if the PeerCoordinator wants more peers.
*/
public class PeerAcceptor
class PeerAcceptor
{
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerAcceptor.class);
private final PeerCoordinator coordinator;

View File

@@ -376,10 +376,10 @@ class PeerCoordinator implements PeerListener
*/
public boolean needOutboundPeers() {
//return wantedBytes != 0 && needPeers();
// minus one to make it a little easier for new peers to get in on large swarms
// minus two to make it a little easier for new peers to get in on large swarms
return wantedBytes != 0 &&
!halted &&
peers.size() < getMaxConnections() - 1 &&
peers.size() < getMaxConnections() - 2 &&
(storage == null || !storage.isChecking());
}

View File

@@ -12,7 +12,7 @@ import net.i2p.crypto.SHA1Hash;
* Each PeerCoordinator is added to the set from within the Snark (and removed
* from it there too)
*/
public class PeerCoordinatorSet {
class PeerCoordinatorSet implements Iterable<PeerCoordinator> {
private final Map<SHA1Hash, PeerCoordinator> _coordinators;
public PeerCoordinatorSet() {

View File

@@ -43,7 +43,7 @@ import org.klomp.snark.bencode.InvalidBEncodingException;
* and the PeerID is not required.
* Equality is now determined solely by the dest hash.
*/
public class PeerID implements Comparable
class PeerID implements Comparable
{
private byte[] id;
private Destination address;

View File

@@ -27,6 +27,8 @@ import net.i2p.data.DataHelper;
/**
* TimerTask that monitors the peers and total up/download speeds.
* Works together with the main Snark class to report periodical statistics.
*
* @deprecated unused, for command line client only, commented out in Snark.java
*/
class PeerMonitorTask implements Runnable
{
@@ -45,6 +47,7 @@ class PeerMonitorTask implements Runnable
public void run()
{
/*****
// Get some statistics
int peers = 0;
int uploaders = 0;
@@ -117,5 +120,6 @@ class PeerMonitorTask implements Runnable
lastDownloaded = downloaded;
lastUploaded = uploaded;
****/
}
}

View File

@@ -1226,8 +1226,7 @@ public class Snark
if (_peerCoordinatorSet == null || uploaders <= 0)
return false;
int totalUploaders = 0;
for (Iterator<PeerCoordinator> iter = _peerCoordinatorSet.iterator(); iter.hasNext(); ) {
PeerCoordinator c = iter.next();
for (PeerCoordinator c : _peerCoordinatorSet) {
if (!c.halted())
totalUploaders += c.uploaders;
}
@@ -1240,8 +1239,7 @@ public class Snark
if (_peerCoordinatorSet == null)
return false;
long total = 0;
for (Iterator<PeerCoordinator> iter = _peerCoordinatorSet.iterator(); iter.hasNext(); ) {
PeerCoordinator c = iter.next();
for (PeerCoordinator c : _peerCoordinatorSet) {
if (!c.halted())
total += c.getCurrentUploadRate();
}

View File

@@ -37,6 +37,7 @@ import net.i2p.util.SecureDirectory;
import net.i2p.util.SecureFileOutputStream;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer;
import net.i2p.util.SimpleTimer2;
import org.klomp.snark.dht.DHT;
@@ -57,6 +58,8 @@ public class SnarkManager implements CompleteListener {
private /* FIXME final FIXME */ File _configFile;
private Properties _config;
private final I2PAppContext _context;
private final String _contextPath;
private final String _contextName;
private final Log _log;
private final Queue<String> _messages;
private final I2PSnarkUtil _util;
@@ -68,6 +71,7 @@ public class SnarkManager implements CompleteListener {
private final Map<String, Tracker> _trackerMap;
private UpdateManager _umgr;
private UpdateHandler _uhandler;
private SimpleTimer2.TimedEvent _idleChecker;
public static final String PROP_I2CP_HOST = "i2psnark.i2cpHost";
public static final String PROP_I2CP_PORT = "i2psnark.i2cpPort";
@@ -82,7 +86,7 @@ public class SnarkManager implements CompleteListener {
public static final String PROP_META_PRIORITY_SUFFIX = ".priority";
public static final String PROP_META_MAGNET_PREFIX = "i2psnark.magnet.";
private static final String CONFIG_FILE = "i2psnark.config";
private static final String CONFIG_FILE_SUFFIX = ".config";
public static final String PROP_FILES_PUBLIC = "i2psnark.filesPublic";
public static final String PROP_AUTO_START = "i2snark.autoStart"; // oops
public static final String DEFAULT_AUTO_START = "false";
@@ -90,6 +94,7 @@ public class SnarkManager implements CompleteListener {
//public static final String DEFAULT_LINK_PREFIX = "file:///";
public static final String PROP_STARTUP_DELAY = "i2psnark.startupDelay";
public static final String PROP_REFRESH_DELAY = "i2psnark.refreshSeconds";
public static final String PROP_PAGE_SIZE = "i2psnark.pageSize";
public static final String RC_PROP_THEME = "routerconsole.theme";
public static final String RC_PROP_UNIVERSAL_THEMING = "routerconsole.universal.theme";
public static final String PROP_THEME = "i2psnark.theme";
@@ -103,6 +108,7 @@ public class SnarkManager implements CompleteListener {
public static final int DEFAULT_MAX_UP_BW = 10;
public static final int DEFAULT_STARTUP_DELAY = 3;
public static final int DEFAULT_REFRESH_DELAY_SECS = 60;
private static final int DEFAULT_PAGE_SIZE = 50;
/**
* "name", "announceURL=websiteURL" pairs
@@ -120,25 +126,41 @@ public class SnarkManager implements CompleteListener {
// , "Galen", "http://5jpwQMI5FT303YwKa5Rd38PYSX04pbIKgTaKQsWbqoWjIfoancFdWCShXHLI5G5ofOb0Xu11vl2VEMyPsg1jUFYSVnu4-VfMe3y4TKTR6DTpetWrnmEK6m2UXh91J5DZJAKlgmO7UdsFlBkQfR2rY853-DfbJtQIFl91tbsmjcA5CGQi4VxMFyIkBzv-pCsuLQiZqOwWasTlnzey8GcDAPG1LDcvfflGV~6F5no9mnuisZPteZKlrv~~TDoXTj74QjByWc4EOYlwqK8sbU9aOvz~s31XzErbPTfwiawiaZ0RUI-IDrKgyvmj0neuFTWgjRGVTH8bz7cBZIc3viy6ioD-eMQOrXaQL0TCWZUelRwHRvgdPiQrxdYQs7ixkajeHzxi-Pq0EMm5Vbh3j3Q9kfUFW3JjFDA-MLB4g6XnjCbM5J1rC0oOBDCIEfhQkszru5cyLjHiZ5yeA0VThgu~c7xKHybv~OMXION7V8pBKOgET7ZgAkw1xgYe3Kkyq5syAAAA.i2p/tr/announce.php=http://galen.i2p/tr/"
"Postman", "http://tracker2.postman.i2p/announce.php=http://tracker2.postman.i2p/"
,"Welterde", "http://tracker.welterde.i2p/a=http://tracker.welterde.i2p/stats?mode=top5"
,"Diftracker", "http://n--XWjHjUPjnMNrSwXA2OYXpMIUL~u4FNXnrt2HtjK3y6j~4SOClyyeKzd0zRPlixxkCe2wfBIYye3bZsaqAD8bd0QMmowxbq91WpjsPfKMiphJbePKXtYAVARiy0cqyvh1d2LyDE-6wkvgaw45hknmS0U-Dg3YTJZbAQRU2SKXgIlAbWCv4R0kDFBLEVpReDiJef3rzAWHiW8yjmJuJilkYjMwlfRjw8xx1nl2s~yhlljk1pl13jGYb0nfawQnuOWeP-ASQWvAAyVgKvZRJE2O43S7iveu9piuv7plXWbt36ef7ndu2GNoNyPOBdpo9KUZ-NOXm4Kgh659YtEibL15dEPAOdxprY0sYUurVw8OIWqrpX7yn08nbi6qHVGqQwTpxH35vkL8qrCbm-ym7oQJQnNmSDrNTyWYRFSq5s5~7DAdFDzqRPW-pX~g0zEivWj5tzkhvG9rVFgFo0bpQX3X0PUAV9Xbyf8u~v8Zbr9K1pCPqBq9XEr4TqaLHw~bfAAAA.i2p/announce.php=http://diftracker.i2p/"
,"Diftracker", "http://diftracker.i2p/announce.php=http://diftracker.i2p/"
// , "CRSTRACK", "http://b4G9sCdtfvccMAXh~SaZrPqVQNyGQbhbYMbw6supq2XGzbjU4NcOmjFI0vxQ8w1L05twmkOvg5QERcX6Mi8NQrWnR0stLExu2LucUXg1aYjnggxIR8TIOGygZVIMV3STKH4UQXD--wz0BUrqaLxPhrm2Eh9Hwc8TdB6Na4ShQUq5Xm8D4elzNUVdpM~RtChEyJWuQvoGAHY3ppX-EJJLkiSr1t77neS4Lc-KofMVmgI9a2tSSpNAagBiNI6Ak9L1T0F9uxeDfEG9bBSQPNMOSUbAoEcNxtt7xOW~cNOAyMyGydwPMnrQ5kIYPY8Pd3XudEko970vE0D6gO19yoBMJpKx6Dh50DGgybLQ9CpRaynh2zPULTHxm8rneOGRcQo8D3mE7FQ92m54~SvfjXjD2TwAVGI~ae~n9HDxt8uxOecAAvjjJ3TD4XM63Q9TmB38RmGNzNLDBQMEmJFpqQU8YeuhnS54IVdUoVQFqui5SfDeLXlSkh4vYoMU66pvBfWbAAAA.i2p/tracker/announce.php=http://crstrack.i2p/tracker/"
// ,"Exotrack", "http://blbgywsjubw3d2zih2giokakhe3o2cko7jtte4risb3hohbcoyva.b32.i2p/announce.php=http://exotrack.i2p/"
,"Exotrack", "http://blbgywsjubw3d2zih2giokakhe3o2cko7jtte4risb3hohbcoyva.b32.i2p/announce.php=http://exotrack.i2p/"
};
/** comma delimited list of name=announceURL=baseURL for the trackers to be displayed */
public static final String PROP_TRACKERS = "i2psnark.trackers";
/**
* For embedded.
*/
public SnarkManager(I2PAppContext ctx) {
this(ctx, "/i2psnark", "i2psnark");
}
/**
* For webapp.
* @param ctxPath generally "/i2psnark"
* @param ctxName generally "i2psnark"
* @since 0.9.6
*/
public SnarkManager(I2PAppContext ctx, String ctxPath, String ctxName) {
_snarks = new ConcurrentHashMap();
_magnets = new ConcurrentHashSet();
_addSnarkLock = new Object();
_context = ctx;
_contextPath = ctxPath;
_contextName = ctxName;
_log = _context.logManager().getLog(SnarkManager.class);
_messages = new LinkedBlockingQueue();
_util = new I2PSnarkUtil(_context);
_configFile = new File(CONFIG_FILE);
_util = new I2PSnarkUtil(_context, ctxName);
String cfile = ctxName + CONFIG_FILE_SUFFIX;
_configFile = new File(cfile);
if (!_configFile.isAbsolute())
_configFile = new File(_context.getConfigDir(), CONFIG_FILE);
_configFile = new File(_context.getConfigDir(), cfile);
_trackerMap = new ConcurrentHashMap(4);
loadConfig(null);
}
@@ -152,10 +174,14 @@ public class SnarkManager implements CompleteListener {
_connectionAcceptor = new ConnectionAcceptor(_util);
_monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor", true);
_monitor.start();
// delay until UpdateManager is there
_context.simpleScheduler().addEvent(new Register(), 4*60*1000);
// only if default instance
if ("i2psnark".equals(_contextName))
// delay until UpdateManager is there
_context.simpleScheduler().addEvent(new Register(), 4*60*1000);
// Not required, Jetty has a shutdown hook
//_context.addShutdownTask(new SnarkManagerShutdown());
_idleChecker = new IdleChecker(_util, _peerCoordinatorSet);
_idleChecker.schedule(5*60*1000);
}
/** @since 0.9.4 */
@@ -188,6 +214,7 @@ public class SnarkManager implements CompleteListener {
_running = false;
_monitor.interrupt();
_connectionAcceptor.halt();
_idleChecker.cancel();
stopAllTorrents(true);
}
@@ -250,6 +277,18 @@ public class SnarkManager implements CompleteListener {
}
}
/**
* For GUI
* @since 0.9.6
*/
public int getPageSize() {
try {
return Integer.parseInt(_config.getProperty(PROP_PAGE_SIZE));
} catch (NumberFormatException nfe) {
return DEFAULT_PAGE_SIZE;
}
}
private int getStartupDelayMinutes() {
try {
return Integer.parseInt(_config.getProperty(PROP_STARTUP_DELAY));
@@ -259,7 +298,7 @@ public class SnarkManager implements CompleteListener {
}
public File getDataDir() {
String dir = _config.getProperty(PROP_DIR, "i2psnark");
String dir = _config.getProperty(PROP_DIR, _contextName);
File f;
if (areFilesPublic())
f = new File(dir);
@@ -305,13 +344,15 @@ public class SnarkManager implements CompleteListener {
if (!_config.containsKey(PROP_UPLOADERS_TOTAL))
_config.setProperty(PROP_UPLOADERS_TOTAL, "" + Snark.MAX_TOTAL_UPLOADERS);
if (!_config.containsKey(PROP_DIR))
_config.setProperty(PROP_DIR, "i2psnark");
_config.setProperty(PROP_DIR, _contextName);
if (!_config.containsKey(PROP_AUTO_START))
_config.setProperty(PROP_AUTO_START, DEFAULT_AUTO_START);
if (!_config.containsKey(PROP_REFRESH_DELAY))
_config.setProperty(PROP_REFRESH_DELAY, Integer.toString(DEFAULT_REFRESH_DELAY_SECS));
if (!_config.containsKey(PROP_STARTUP_DELAY))
_config.setProperty(PROP_STARTUP_DELAY, Integer.toString(DEFAULT_STARTUP_DELAY));
if (!_config.containsKey(PROP_PAGE_SIZE))
_config.setProperty(PROP_PAGE_SIZE, Integer.toString(DEFAULT_PAGE_SIZE));
if (!_config.containsKey(PROP_THEME))
_config.setProperty(PROP_THEME, DEFAULT_THEME);
// no, so we can switch default to true later
@@ -429,11 +470,15 @@ public class SnarkManager implements CompleteListener {
return defaultVal;
}
/**
* all params may be null or need trimming
*/
public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay,
String startDelay, String seedPct, String eepHost,
String startDelay, String pageSize, String seedPct, String eepHost,
String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts,
String upLimit, String upBW, boolean useOpenTrackers, boolean useDHT, String theme) {
boolean changed = false;
boolean interruptMonitor = false;
//if (eepHost != null) {
// // unused, we use socket eepget
// int port = _util.getEepProxyPort();
@@ -450,12 +495,12 @@ public class SnarkManager implements CompleteListener {
//}
if (upLimit != null) {
int limit = _util.getMaxUploaders();
try { limit = Integer.parseInt(upLimit); } catch (NumberFormatException nfe) {}
try { limit = Integer.parseInt(upLimit.trim()); } catch (NumberFormatException nfe) {}
if ( limit != _util.getMaxUploaders()) {
if ( limit >= Snark.MIN_TOTAL_UPLOADERS ) {
_util.setMaxUploaders(limit);
changed = true;
_config.setProperty(PROP_UPLOADERS_TOTAL, "" + limit);
_config.setProperty(PROP_UPLOADERS_TOTAL, Integer.toString(limit));
addMessage(_("Total uploaders limit changed to {0}", limit));
} else {
addMessage(_("Minimum total uploaders limit is {0}", Snark.MIN_TOTAL_UPLOADERS));
@@ -464,12 +509,12 @@ public class SnarkManager implements CompleteListener {
}
if (upBW != null) {
int limit = _util.getMaxUpBW();
try { limit = Integer.parseInt(upBW); } catch (NumberFormatException nfe) {}
try { limit = Integer.parseInt(upBW.trim()); } catch (NumberFormatException nfe) {}
if ( limit != _util.getMaxUpBW()) {
if ( limit >= MIN_UP_BW ) {
_util.setMaxUpBW(limit);
changed = true;
_config.setProperty(PROP_UPBW_MAX, "" + limit);
_config.setProperty(PROP_UPBW_MAX, Integer.toString(limit));
addMessage(_("Up BW limit changed to {0}KBps", limit));
} else {
addMessage(_("Minimum up bandwidth limit is {0}KBps", MIN_UP_BW));
@@ -479,21 +524,21 @@ public class SnarkManager implements CompleteListener {
if (startDelay != null){
int minutes = _util.getStartupDelay();
try { minutes = Integer.parseInt(startDelay); } catch (NumberFormatException nfe) {}
try { minutes = Integer.parseInt(startDelay.trim()); } catch (NumberFormatException nfe) {}
if ( minutes != _util.getStartupDelay()) {
_util.setStartupDelay(minutes);
changed = true;
_config.setProperty(PROP_STARTUP_DELAY, "" + minutes);
_config.setProperty(PROP_STARTUP_DELAY, Integer.toString(minutes));
addMessage(_("Startup delay changed to {0}", DataHelper.formatDuration2(minutes * 60 * 1000)));
}
}
if (refreshDelay != null) {
try {
int secs = Integer.parseInt(refreshDelay);
int secs = Integer.parseInt(refreshDelay.trim());
if (secs != getRefreshDelaySeconds()) {
changed = true;
_config.setProperty(PROP_REFRESH_DELAY, refreshDelay);
_config.setProperty(PROP_REFRESH_DELAY, Integer.toString(secs));
if (secs >= 0)
addMessage(_("Refresh time changed to {0}", DataHelper.formatDuration2(secs * 1000)));
else
@@ -502,6 +547,42 @@ public class SnarkManager implements CompleteListener {
} catch (NumberFormatException nfe) {}
}
if (pageSize != null) {
try {
int size = Integer.parseInt(pageSize.trim());
if (size <= 0)
size = 999999;
else if (size < 5)
size = 5;
if (size != getPageSize()) {
changed = true;
pageSize = Integer.toString(size);
_config.setProperty(PROP_PAGE_SIZE, pageSize);
addMessage(_("Page size changed to {0}", pageSize));
}
} catch (NumberFormatException nfe) {}
}
if (dataDir != null && !dataDir.equals(getDataDir().getAbsolutePath())) {
dataDir = dataDir.trim();
File dd = new File(dataDir);
if (!dd.isAbsolute()) {
addMessage(_("Data directory must be an absolute path") + ": " + dataDir);
} else if (!dd.exists()) {
addMessage(_("Data directory does not exist") + ": " + dataDir);
} else if (!dd.isDirectory()) {
addMessage(_("Not a directory") + ": " + dataDir);
} else if (!dd.canRead()) {
addMessage(_("Unreadable") + ": " + dataDir);
} else {
changed = true;
interruptMonitor = true;
_config.setProperty(PROP_DIR, dataDir);
addMessage(_("Data directory changed to {0}", dataDir));
}
}
// Start of I2CP stuff.
// i2cpHost will generally be null since it is hidden from the form if in router context.
@@ -559,6 +640,7 @@ public class SnarkManager implements CompleteListener {
addMessage(_("I2CP options changed to {0}", i2cpOpts));
_util.setI2CPConfig(oldI2CPHost, oldI2CPPort, opts);
} else {
// Won't happen, I2CP host/port, are hidden in the GUI if in router context
if (_util.connected()) {
_util.disconnect();
addMessage(_("Disconnecting old I2CP destination"));
@@ -582,6 +664,8 @@ public class SnarkManager implements CompleteListener {
for (Snark snark : _snarks.values()) {
if (snark.restartAcceptor()) {
addMessage(_("I2CP listener restarted for \"{0}\"", snark.getBaseName()));
// this is the common ConnectionAcceptor, so we only need to do it once
break;
}
}
}
@@ -636,6 +720,9 @@ public class SnarkManager implements CompleteListener {
}
if (changed) {
saveConfig();
if (interruptMonitor)
// Data dir changed. this will stop and remove all old torrents, and add the new ones
_monitor.interrupt();
} else {
addMessage(_("Configuration unchanged."));
}
@@ -731,6 +818,11 @@ public class SnarkManager implements CompleteListener {
public Properties getConfig() { return _config; }
/** @since Jetty 7 */
public String getConfigFilename() {
return _configFile.getAbsolutePath();
}
/** hardcoded for sanity. perhaps this should be customizable, for people who increase their ulimit, etc. */
public static final int MAX_FILES_PER_TORRENT = 512;
@@ -886,7 +978,9 @@ public class SnarkManager implements CompleteListener {
}
}
} catch (IOException ioe) {
addMessage(_("Torrent in \"{0}\" is invalid", sfile.getName()) + ": " + ioe.getMessage());
String err = _("Torrent in \"{0}\" is invalid", sfile.getName()) + ": " + ioe.getMessage();
addMessage(err);
_log.error(err, ioe);
if (sfile.exists())
sfile.delete();
return;
@@ -1443,7 +1537,7 @@ public class SnarkManager implements CompleteListener {
if (meta == null || storage == null)
return;
StringBuilder buf = new StringBuilder(256);
buf.append("<a href=\"/i2psnark/").append(storage.getBaseName());
buf.append("<a href=\"").append(_contextPath).append('/').append(storage.getBaseName());
if (meta.getFiles() != null)
buf.append('/');
buf.append("\">").append(storage.getBaseName()).append("</a>");

View File

@@ -77,7 +77,7 @@ public class Storage
private final AtomicInteger _allocateCount = new AtomicInteger();
/** The default piece size. */
private static final int MIN_PIECE_SIZE = 256*1024;
private static final int DEFAULT_PIECE_SIZE = 256*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. */
@@ -122,6 +122,7 @@ public class Storage
* @throws IOException when creating and/or checking files fails.
*/
public Storage(I2PSnarkUtil util, File baseFile, String announce,
List<List<String>> announce_list,
boolean privateTorrent, StorageListener listener)
throws IOException
{
@@ -145,9 +146,15 @@ public class Storage
if (total > MAX_TOTAL_SIZE)
throw new IOException("Torrent too big (" + total + " bytes), max is " + MAX_TOTAL_SIZE);
int pc_size = MIN_PIECE_SIZE;
int pc_size;
if (total <= 5*1024*1024)
pc_size = DEFAULT_PIECE_SIZE / 4;
else if (total <= 10*1024*1024)
pc_size = DEFAULT_PIECE_SIZE / 2;
else
pc_size = DEFAULT_PIECE_SIZE;
int pcs = (int) ((total - 1)/pc_size) + 1;
while (pcs > MAX_PIECES && pc_size < MAX_PIECE_SIZE)
while (pcs > (MAX_PIECES * 2 / 3) && pc_size < MAX_PIECE_SIZE)
{
pc_size *= 2;
pcs = (int) ((total - 1)/pc_size) +1;
@@ -172,8 +179,7 @@ public class Storage
files.add(file);
}
if (files.size() == 1) // FIXME: ...and if base file not a directory or should this be the only check?
// this makes a bad metainfo if the directory has only one file in it
if (files.size() == 1 && !baseFile.isDirectory())
{
files = null;
lengthsList = null;
@@ -182,7 +188,8 @@ public class Storage
// TODO thread this so we can return and show something on the UI
byte[] piece_hashes = fast_digestCreate();
metainfo = new MetaInfo(announce, baseFile.getName(), null, files,
lengthsList, piece_size, piece_hashes, total, privateTorrent);
lengthsList, piece_size, piece_hashes, total, privateTorrent,
announce_list);
}
@@ -1225,7 +1232,7 @@ public class Storage
File file = null;
FileOutputStream out = null;
try {
Storage storage = new Storage(util, base, announce, false, null);
Storage storage = new Storage(util, base, announce, null, false, null);
MetaInfo meta = storage.getMetaInfo();
file = new File(storage.getBaseName() + ".torrent");
out = new FileOutputStream(file);

View File

@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
@@ -40,6 +41,7 @@ import java.util.Set;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.data.Hash;
import net.i2p.util.ConvertToHash;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.SimpleTimer2;
@@ -109,8 +111,8 @@ public class TrackerClient implements Runnable {
private boolean completed;
private volatile boolean _fastUnannounce;
private long lastDHTAnnounce;
private final List<Tracker> trackers;
private final List<Tracker> backupTrackers;
private final List<TCTracker> trackers;
private final List<TCTracker> backupTrackers;
/**
* Call start() to start it.
@@ -270,9 +272,12 @@ public class TrackerClient implements Runnable {
primary = meta.getAnnounce();
else if (additionalTrackerURL != null)
primary = additionalTrackerURL;
Set<Hash> trackerHashes = new HashSet(8);
// primary tracker
if (primary != null) {
if (isValidAnnounce(primary)) {
trackers.add(new Tracker(primary, true));
if (isNewValidTracker(trackerHashes, primary)) {
trackers.add(new TCTracker(primary, true));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Announce: [" + primary + "] infoHash: " + infoHash);
} else {
@@ -281,36 +286,35 @@ public class TrackerClient implements Runnable {
}
} else {
_log.warn("No primary announce");
primary = "";
}
// announce list
if (meta != null && !meta.isPrivate()) {
List<List<String>> list = meta.getAnnounceList();
if (list != null) {
for (List<String> llist : list) {
for (String url : llist) {
if (!isNewValidTracker(trackerHashes, url))
continue;
trackers.add(new TCTracker(url, trackers.isEmpty()));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Additional announce (list): [" + url + "] for infoHash: " + infoHash);
}
}
}
}
// configured open trackers
if (meta == null || !meta.isPrivate()) {
List<String> tlist = _util.getOpenTrackers();
for (int i = 0; i < tlist.size(); i++) {
String url = tlist.get(i);
if (!isValidAnnounce(url)) {
_log.error("Bad announce URL: [" + url + "]");
String url = tlist.get(i);
if (!isNewValidTracker(trackerHashes, url))
continue;
}
int slash = url.indexOf('/', 7);
if (slash <= 7) {
_log.error("Bad announce URL: [" + url + "]");
continue;
}
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.substring(7, slash) + "]");
continue;
}
if (primary.startsWith("http://" + dest))
continue;
if (primary.startsWith("http://i2p/" + dest))
continue;
// opentrackers are primary if we don't have primary
trackers.add(new Tracker(url, primary.equals("")));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Additional announce: [" + url + "] for infoHash: " + infoHash);
// opentrackers are primary if we don't have primary
trackers.add(new TCTracker(url, trackers.isEmpty()));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Additional announce: [" + url + "] for infoHash: " + infoHash);
}
}
@@ -318,31 +322,40 @@ public class TrackerClient implements Runnable {
if (trackers.isEmpty() && (meta == null || !meta.isPrivate())) {
List<String> tlist = _util.getBackupTrackers();
for (int i = 0; i < tlist.size(); i++) {
String url = tlist.get(i);
if (!isValidAnnounce(url)) {
_log.error("Bad announce URL: [" + url + "]");
String url = tlist.get(i);
if (!isNewValidTracker(trackerHashes, url))
continue;
}
int slash = url.indexOf('/', 7);
if (slash <= 7) {
_log.error("Bad announce URL: [" + url + "]");
continue;
}
String dest = _util.lookup(url.substring(7, slash));
if (dest == null) {
_log.error("Announce host unknown: [" + url.substring(7, slash) + "]");
continue;
}
backupTrackers.add(new Tracker(url, false));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Backup announce: [" + url + "] for infoHash: " + infoHash);
backupTrackers.add(new TCTracker(url, false));
if (_log.shouldLog(Log.DEBUG))
_log.debug("Backup announce: [" + url + "] for infoHash: " + infoHash);
}
if (backupTrackers.isEmpty()) {
backupTrackers.add(new TCTracker(DEFAULT_BACKUP_TRACKER, false));
}
if (backupTrackers.isEmpty())
backupTrackers.add(new Tracker(DEFAULT_BACKUP_TRACKER, false));
}
this.completed = coordinator.getLeft() == 0;
}
/**
* @param existing the ones we already know about
* @param ann an announce URL non-null
* @return true if ann is valid and new; adds to existing if returns true
* @since 0.9.5
*/
private boolean isNewValidTracker(Set<Hash> existing, String ann) {
Hash h = getHostHash(ann);
if (h == null) {
_log.error("Bad announce URL: [" + ann + ']');
return false;
}
boolean rv = existing.add(h);
if (!rv) {
if (_log.shouldLog(Log.INFO))
_log.info("Dup announce URL: [" + ann + ']');
}
return rv;
}
/**
* Announce to all the trackers, get peers from PEX and DHT, then queue up a SimpleTimer2 event.
* This will take several seconds to several minutes.
@@ -425,32 +438,38 @@ public class TrackerClient implements Runnable {
/**
* @return max peers seen
*/
private int getPeersFromTrackers(List<Tracker> trckrs) {
long uploaded = coordinator.getUploaded();
long downloaded = coordinator.getDownloaded();
private int getPeersFromTrackers(List<TCTracker> trckrs) {
long left = coordinator.getLeft(); // -1 in magnet mode
// First time we got a complete download?
String event;
if (!completed && left == 0)
{
boolean newlyCompleted;
if (!completed && left == 0) {
completed = true;
event = COMPLETED_EVENT;
}
else
event = NO_EVENT;
newlyCompleted = true;
} else {
newlyCompleted = false;
}
// *** loop once for each tracker
int maxSeenPeers = 0;
for (Tracker tr : trckrs) {
for (TCTracker tr : trckrs) {
if ((!stop) && (!tr.stop) &&
(completed || coordinator.needOutboundPeers() || !tr.started) &&
(event.equals(COMPLETED_EVENT) || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
(newlyCompleted || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
{
try
{
if (!tr.started)
event = STARTED_EVENT;
long uploaded = coordinator.getUploaded();
long downloaded = coordinator.getDownloaded();
left = coordinator.getLeft();
String event;
if (!tr.started) {
event = STARTED_EVENT;
} else if (newlyCompleted) {
event = COMPLETED_EVENT;
} else {
event = NO_EVENT;
}
TrackerInfo info = doRequest(tr, infoHash, peerID,
uploaded, downloaded, left,
event);
@@ -639,7 +658,7 @@ public class TrackerClient implements Runnable {
if (dht != null)
dht.unannounce(snark.getInfoHash());
int i = 0;
for (Tracker tr : trackers) {
for (TCTracker tr : trackers) {
if (_util.connected() &&
tr.started && (!tr.stop) && tr.trackerProblems == null) {
try {
@@ -659,9 +678,9 @@ public class TrackerClient implements Runnable {
* @since 0.9.1
*/
private class Unannouncer implements Runnable {
private final Tracker tr;
private final TCTracker tr;
public Unannouncer(Tracker tr) {
public Unannouncer(TCTracker tr) {
this.tr = tr;
}
@@ -685,7 +704,7 @@ public class TrackerClient implements Runnable {
}
}
private TrackerInfo doRequest(Tracker tr, String infoHash,
private TrackerInfo doRequest(TCTracker tr, String infoHash,
String peerID, long uploaded,
long downloaded, long left, String event)
throws IOException
@@ -775,6 +794,7 @@ public class TrackerClient implements Runnable {
}
/**
* @param ann an announce URL
* @return true for i2p hosts only
* @since 0.7.12
*/
@@ -790,10 +810,38 @@ public class TrackerClient implements Runnable {
url.getPort() < 0;
}
private static class Tracker
/**
* @param ann an announce URL non-null
* @return a Hash for i2p hosts only, null otherwise
* @since 0.9.5
*/
private static Hash getHostHash(String ann) {
URL url;
try {
url = new URL(ann);
} catch (MalformedURLException mue) {
return null;
}
if (url.getPort() >= 0 || !url.getProtocol().equals("http"))
return null;
String host = url.getHost();
if (host.endsWith(".i2p"))
return ConvertToHash.getHash(host);
if (host.equals("i2p")) {
String path = url.getPath();
if (path == null || path.length() < 517 ||
!path.startsWith("/"))
return null;
String[] parts = path.substring(1).split("/?&;", 2);
return ConvertToHash.getHash(parts[0]);
}
return null;
}
private static class TCTracker
{
String announce;
boolean isPrimary;
final String announce;
final boolean isPrimary;
long interval;
long lastRequestTime;
String trackerProblems;
@@ -803,7 +851,7 @@ public class TrackerClient implements Runnable {
int consecutiveFails;
int seenPeers;
public Tracker(String a, boolean p)
public TCTracker(String a, boolean p)
{
announce = a;
isPrimary = p;

View File

@@ -221,46 +221,51 @@ public class BDecoder
{
c = read();
if (c == 'e')
return new BEValue(BigInteger.ZERO);
return new BEValue(Integer.valueOf(0));
else
throw new InvalidBEncodingException("'e' expected after zero,"
+ " not '" + (char)c + "'");
}
// XXX - We don't support more the 255 char big integers
char[] chars = new char[256];
int off = 0;
StringBuilder chars = new StringBuilder(16);
if (c == '-')
{
c = read();
if (c == '0')
throw new InvalidBEncodingException("Negative zero not allowed");
chars[off] = (char)c;
off++;
chars.append((char)c);
}
if (c < '1' || c > '9')
throw new InvalidBEncodingException("Invalid Integer start '"
+ (char)c + "'");
chars[off] = (char)c;
off++;
chars.append((char)c);
c = read();
int i = c - '0';
while(i >= 0 && i <= 9)
while(c >= '0' && c <= '9')
{
chars[off] = (char)c;
off++;
chars.append((char)c);
c = read();
i = c - '0';
}
if (c != 'e')
throw new InvalidBEncodingException("Integer should end with 'e'");
String s = new String(chars, 0, off);
return new BEValue(new BigInteger(s));
String s = chars.toString();
int len = s.length();
// save a little space if we're sure it will fit
Number num;
if (len < 10)
num = Integer.valueOf(s);
else if (len < 19)
num = Long.valueOf(s);
else if (len > 256)
throw new InvalidBEncodingException("Too many digits: " + len);
else
num = new BigInteger(s);
return new BEValue(num);
}
/**

View File

@@ -114,6 +114,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
/** signed dgrams */
private final int _qPort;
private final File _dhtFile;
private final File _backupDhtFile;
private volatile boolean _isRunning;
private volatile boolean _hasBootstrapped;
/** stats */
@@ -152,12 +153,15 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
private static final long CLEAN_TIME = 63*1000;
private static final long EXPLORE_TIME = 877*1000;
private static final long BLACKLIST_CLEAN_TIME = 17*60*1000;
private static final String DHT_FILE = "i2psnark.dht.dat";
private static final String DHT_FILE_SUFFIX = ".dht.dat";
private static final int SEND_CRYPTO_TAGS = 8;
private static final int LOW_CRYPTO_TAGS = 4;
public KRPC (I2PAppContext ctx, I2PSession session) {
/**
* @param baseName generally "i2psnark"
*/
public KRPC(I2PAppContext ctx, String baseName, I2PSession session) {
_context = ctx;
_session = session;
_log = ctx.logManager().getLog(KRPC.class);
@@ -182,7 +186,8 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
_myNID = new NID(_myID);
}
_myNodeInfo = new NodeInfo(_myNID, session.getMyDestination(), _qPort);
_dhtFile = new File(ctx.getConfigDir(), DHT_FILE);
_dhtFile = new File(ctx.getConfigDir(), baseName + DHT_FILE_SUFFIX);
_backupDhtFile = baseName.equals("i2psnark") ? null : new File(ctx.getConfigDir(), "i2psnark" + DHT_FILE_SUFFIX);
_knownNodes = new DHTNodes(ctx, _myNID);
start();
@@ -547,7 +552,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
_session.addMuxedSessionListener(this, I2PSession.PROTO_DATAGRAM, _qPort);
_knownNodes.start();
_tracker.start();
PersistDHT.loadDHT(this, _dhtFile);
PersistDHT.loadDHT(this, _dhtFile, _backupDhtFile);
// start the explore thread
_isRunning = true;
// no need to keep ref, it will eventually stop

View File

@@ -23,6 +23,17 @@ abstract class PersistDHT {
private static final long MAX_AGE = 60*60*1000;
/**
* @param backupFile may be null
* @since 0.9.6
*/
public static synchronized void loadDHT(KRPC krpc, File file, File backupFile) {
if (file.exists())
loadDHT(krpc, file);
else if (backupFile != null)
loadDHT(krpc, backupFile);
}
public static synchronized void loadDHT(KRPC krpc, File file) {
Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistDHT.class);
int count = 0;

View File

@@ -0,0 +1,603 @@
// ========================================================================
// Copyright 199-2004 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================
package org.klomp.snark.web;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Enumeration;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.i2p.I2PAppContext;
import net.i2p.data.ByteArray;
import net.i2p.util.ByteCache;
import net.i2p.util.Log;
import net.i2p.util.SystemVersion;
/* ------------------------------------------------------------ */
/**
* Based on DefaultServlet from Jetty 6.1.26, heavily simplified
* and modified to remove all dependencies on Jetty libs.
*
* Supports HEAD and GET only, for resources from the .war and local files.
* Supports files and resource only.
* Supports MIME types with local overrides and additions.
* Supports Last-Modified.
* Supports single request ranges.
*
* Does not support directories or "welcome files".
* Does not support gzip.
* Does not support multiple request ranges.
* Does not cache.
*
* POST returns 405.
* Directories return 403.
* Jar resources are sent with a long cache directive.
*
* ------------------------------------------------------------
*
* The default servlet.
* This servlet, normally mapped to /, provides the handling for static
* content, OPTION and TRACE methods for the context.
* The following initParameters are supported, these can be set either
* on the servlet itself or as ServletContext initParameters with a prefix
* of org.mortbay.jetty.servlet.Default. :
* <PRE>
*
* resourceBase Set to replace the context resource base
* warBase Path allowed for resource in war
*
* </PRE>
*
*
* @author Greg Wilkins (gregw)
* @author Nigel Canonizado
*
* @since Jetty 7
*/
class BasicServlet extends HttpServlet
{
protected final I2PAppContext _context;
protected final Log _log;
protected File _resourceBase;
private String _warBase;
private final MimeTypes _mimeTypes;
/** same as PeerState.PARTSIZE */
private static final int BUFSIZE = 16*1024;
private ByteCache _cache = ByteCache.getInstance(16, BUFSIZE);
private static final int WAR_CACHE_CONTROL_SECS = 24*60*60;
private static final int FILE_CACHE_CONTROL_SECS = 24*60*60;
public BasicServlet() {
super();
_context = I2PAppContext.getGlobalContext();
_log = _context.logManager().getLog(getClass());
_mimeTypes = new MimeTypes();
}
/* ------------------------------------------------------------ */
public void init(ServletConfig cfg) throws ServletException {
super.init(cfg);
String rb=getInitParameter("resourceBase");
if (rb!=null)
{
File f = new File(rb);
setResourceBase(f);
}
String wb = getInitParameter("warBase");
if (wb != null)
setWarBase(wb);
}
/**
* Files are served from here
*/
protected void setResourceBase(File base) throws UnavailableException {
if (!base.isDirectory())
throw new UnavailableException("Resource base does not exist: " + base);
_resourceBase = base;
if (_log.shouldLog(Log.INFO))
_log.info("Resource base is " + _resourceBase);
}
/**
* Only paths starting with this in the path are served
*/
protected void setWarBase(String base) {
if (!base.startsWith("/"))
base = '/' + base;
if (!base.endsWith("/"))
base = base + '/';
_warBase = base;
if (_log.shouldLog(Log.INFO))
_log.info("War base is " + _warBase);
}
/** get Resource to serve.
* Map a path to a resource. The default implementation calls
* HttpContext.getResource but derived servlets may provide
* their own mapping.
* @param pathInContext The path to find a resource for.
* @return The resource to serve or null if not existing
*/
public File getResource(String pathInContext)
{
if (_resourceBase==null)
return null;
File r = null;
if (!pathInContext.contains("..") &&
!pathInContext.endsWith("/")) {
File f = new File(_resourceBase, pathInContext);
if (f.exists())
r = f;
}
return r;
}
/** get Resource to serve.
* Map a path to a resource. The default implementation calls
* HttpContext.getResource but derived servlets may provide
* their own mapping.
* @param pathInContext The path to find a resource for.
* @return The resource to serve or null. Returns null for directories
*/
public HttpContent getContent(String pathInContext)
{
if (_resourceBase==null)
return null;
HttpContent r = null;
if (_warBase != null && pathInContext.startsWith(_warBase)) {
r = new JarContent(pathInContext);
} else if (!pathInContext.contains("..") &&
!pathInContext.endsWith("/")) {
File f = new File(_resourceBase, pathInContext);
// exists && !directory
if (f.isFile())
r = new FileContent(f);
}
return r;
}
/* ------------------------------------------------------------ */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// always starts with a '/'
String servletpath = request.getServletPath();
String pathInfo=request.getPathInfo();
// ??? right??
String pathInContext = addPaths(servletpath, pathInfo);
// Find the resource and content
try {
HttpContent content = getContent(pathInContext);
// Handle resource
if (content == null) {
if (_log.shouldLog(Log.WARN))
_log.warn("Not found: " + pathInContext);
response.sendError(404);
} else {
if (passConditionalHeaders(request, response, content)) {
if (_log.shouldLog(Log.INFO))
_log.info("Sending: " + content);
sendData(request, response, content);
} else {
if (_log.shouldLog(Log.INFO))
_log.info("Not modified: " + content);
}
}
}
catch(IllegalArgumentException e)
{
if (_log.shouldLog(Log.WARN))
_log.warn("Error sending " + pathInContext, e);
if(!response.isCommitted())
response.sendError(500, e.getMessage());
}
catch(IOException e)
{
if (_log.shouldLog(Log.WARN))
// typical browser abort
//_log.warn("Error sending", e);
_log.warn("Error sending " + pathInContext + ": " + e);
throw e;
}
}
/* ------------------------------------------------------------ */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.sendError(405);
}
/* ------------------------------------------------------------ */
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doTrace(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void doTrace(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.sendError(405);
}
protected void doOptions(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.sendError(405);
}
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.sendError(405);
}
/* ------------------------------------------------------------ */
/** Check modification date headers.
* @return true to keep going, false if handled here
*/
protected boolean passConditionalHeaders(HttpServletRequest request,HttpServletResponse response, HttpContent content)
throws IOException
{
try
{
if (!request.getMethod().equals("HEAD") ) {
long ifmsl=request.getDateHeader("If-Modified-Since");
if (ifmsl!=-1)
{
if (content.getLastModified()/1000 <= ifmsl/1000)
{
response.reset();
response.setStatus(304);
response.flushBuffer();
return false;
}
}
}
}
catch(IllegalArgumentException iae)
{
if(!response.isCommitted())
response.sendError(400, iae.getMessage());
throw iae;
}
return true;
}
/* ------------------------------------------------------------ */
protected void sendData(HttpServletRequest request,
HttpServletResponse response,
HttpContent content)
throws IOException
{
InputStream in =null;
try {
in = content.getInputStream();
} catch (IOException e) {
if (_log.shouldLog(Log.WARN))
_log.warn("Not found: " + content);
response.sendError(404);
return;
}
OutputStream out =null;
try {
out = response.getOutputStream();
} catch (IllegalStateException e) {
out = new WriterOutputStream(response.getWriter());
}
long content_length = content.getContentLength();
// see if there are any range headers
Enumeration reqRanges = request.getHeaders("Range");
if (reqRanges == null || !reqRanges.hasMoreElements()) {
// if there were no ranges, send entire entity
// Write content normally
writeHeaders(response,content,content_length);
if (content_length >= 0 && request.getMethod().equals("HEAD")) {
// if we know the content length, don't send it to be counted
if (_log.shouldLog(Log.INFO))
_log.info("HEAD: " + content);
} else {
// GET or unknown size for HEAD
copy(in, out);
}
return;
}
// Parse the satisfiable ranges
List<InclusiveByteRange> ranges = InclusiveByteRange.satisfiableRanges(reqRanges, content_length);
// if there are no satisfiable ranges, send 416 response
// Completely punt on multiple ranges (unlike Default)
if (ranges == null || ranges.size() != 1) {
writeHeaders(response, content, content_length);
response.setStatus(416);
response.setHeader("Content-Range", InclusiveByteRange.to416HeaderRangeString(content_length));
return;
}
// if there is only a single valid range (must be satisfiable
// since were here now), send that range with a 216 response
InclusiveByteRange singleSatisfiableRange = ranges.get(0);
long singleLength = singleSatisfiableRange.getSize(content_length);
writeHeaders(response, content, singleLength);
response.setStatus(206);
response.setHeader("Content-Range", singleSatisfiableRange.toHeaderRangeString(content_length));
copy(in, singleSatisfiableRange.getFirst(content_length), out, singleLength);
}
/* ------------------------------------------------------------ */
protected void writeHeaders(HttpServletResponse response,HttpContent content,long count)
throws IOException
{
if (content.getContentType()!=null && response.getContentType()==null)
response.setContentType(content.getContentType());
long lml = content.getLastModified();
if (lml > 0)
response.setDateHeader("Last-Modified",lml);
if (count != -1)
{
if (count<Integer.MAX_VALUE)
response.setContentLength((int)count);
else
response.setHeader("Content-Length", Long.toString(count));
}
long ct = content.getCacheTime();
if (ct>=0)
response.setHeader("Cache-Control", "public, max-age=" + ct);
}
/* ------------------------------------------------------------ */
/* ------------------------------------------------------------ */
/* ------------------------------------------------------------ */
/* I2P additions below here */
/** from Jetty HttpContent.java */
public interface HttpContent
{
String getContentType();
long getLastModified();
/** in seconds */
int getCacheTime();
long getContentLength();
InputStream getInputStream() throws IOException;
}
private class FileContent implements HttpContent
{
private final File _file;
public FileContent(File file)
{
_file = file;
}
/* ------------------------------------------------------------ */
public String getContentType()
{
//return _mimeTypes.getMimeByExtension(_file.toString());
return getMimeType(_file.toString());
}
/* ------------------------------------------------------------ */
public long getLastModified()
{
return _file.lastModified();
}
public int getCacheTime()
{
return FILE_CACHE_CONTROL_SECS;
}
/* ------------------------------------------------------------ */
public long getContentLength()
{
return _file.length();
}
/* ------------------------------------------------------------ */
public InputStream getInputStream() throws IOException
{
return new BufferedInputStream(new FileInputStream(_file));
}
@Override
public String toString() { return "File \"" + _file + '"'; }
}
private class JarContent implements HttpContent
{
private final String _path;
public JarContent(String path)
{
_path = path;
}
/* ------------------------------------------------------------ */
public String getContentType()
{
return getMimeType(_path);
}
/* ------------------------------------------------------------ */
public long getLastModified()
{
String cpath = getServletContext().getContextPath();
// this won't work if we aren't at top level
String cname = cpath == "" ? "i2psnark" : cpath.substring(1).replace("/", "_");
return (new File(_context.getBaseDir(), "webapps/" + cname + ".war")).lastModified();
}
public int getCacheTime()
{
return WAR_CACHE_CONTROL_SECS;
}
/* ------------------------------------------------------------ */
public long getContentLength()
{
return -1;
}
/* ------------------------------------------------------------ */
public InputStream getInputStream() throws IOException
{
InputStream rv = getServletContext().getResourceAsStream(_path);
if (rv == null)
throw new IOException("Not found");
return rv;
}
@Override
public String toString() { return "Jar resource \"" + _path + '"'; }
}
/**
* @param resourcePath in the classpath, without ".properties" extension
*/
protected void loadMimeMap(String resourcePath) {
_mimeTypes.loadMimeMap(resourcePath);
}
/* ------------------------------------------------------------ */
/** Get the MIME type by filename extension.
* @param filename A file name
* @return MIME type matching the longest dot extension of the
* file name.
*/
protected String getMimeType(String filename) {
String rv = _mimeTypes.getMimeByExtension(filename);
if (rv != null)
return rv;
return getServletContext().getMimeType(filename);
}
protected void addMimeMapping(String extension, String type) {
_mimeTypes.addMimeMapping(extension, type);
}
/**
* Simple version of URIUtil.addPaths()
* @param path may be null
*/
protected static String addPaths(String base, String path) {
if (path == null)
return base;
String rv = (new File(base, path)).toString();
if (SystemVersion.isWindows())
rv = rv.replace("\\", "/");
return rv;
}
/**
* Simple version of URIUtil.decodePath()
*/
protected static String decodePath(String path) throws MalformedURLException {
if (!path.contains("%"))
return path;
try {
URI uri = new URI(path);
return uri.getPath();
} catch (URISyntaxException use) {
// for ease of use, since a USE is not an IOE but a MUE is...
throw new MalformedURLException(use.getMessage());
}
}
/**
* Simple version of URIUtil.encodePath()
*/
protected static String encodePath(String path) throws MalformedURLException {
try {
URI uri = new URI(null, null, path, null);
return uri.toString();
} catch (URISyntaxException use) {
// for ease of use, since a USE is not an IOE but a MUE is...
throw new MalformedURLException(use.getMessage());
}
}
/**
* Write from in to out
*/
private void copy(InputStream in, OutputStream out) throws IOException {
copy(in, 0, out, -1);
}
/**
* Write from in to out
*/
private void copy(InputStream in, long skip, OutputStream out, final long len) throws IOException {
ByteArray ba = _cache.acquire();
byte[] buf = ba.getData();
try {
if (skip > 0)
in.skip(skip);
int read = 0;
long tot = 0;
boolean done = false;
while ( (read = in.read(buf)) != -1 && !done) {
if (len >= 0) {
tot += read;
if (tot >= len) {
read -= (int) (tot - len);
done = true;
}
}
out.write(buf, 0, read);
}
} finally {
_cache.release(ba, false);
if (in != null)
try { in.close(); } catch (IOException ioe) {}
if (out != null)
try { out.close(); } catch (IOException ioe) {}
}
}
}

View File

@@ -0,0 +1,218 @@
//
// ========================================================================
// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.klomp.snark.web;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.StringTokenizer;
/* ------------------------------------------------------------ */
/** Byte range inclusive of end points.
* <PRE>
*
* parses the following types of byte ranges:
*
* bytes=100-499
* bytes=-300
* bytes=100-
* bytes=1-2,2-3,6-,-2
*
* given an entity length, converts range to string
*
* bytes 100-499/500
*
* </PRE>
*
* Based on RFC2616 3.12, 14.16, 14.35.1, 14.35.2
* @version $version$
*
*/
public class InclusiveByteRange
{
long first = 0;
long last = 0;
public InclusiveByteRange(long first, long last)
{
this.first = first;
this.last = last;
}
public long getFirst()
{
return first;
}
public long getLast()
{
return last;
}
/* ------------------------------------------------------------ */
/**
* @param headers Enumeration of Range header fields.
* @param size Size of the resource.
* @return List of satisfiable ranges
*/
public static List<InclusiveByteRange> satisfiableRanges(Enumeration headers, long size)
{
List<InclusiveByteRange> satRanges = null;
// walk through all Range headers
headers:
while (headers.hasMoreElements())
{
String header = (String) headers.nextElement();
StringTokenizer tok = new StringTokenizer(header,"=,",false);
String t=null;
try
{
// read all byte ranges for this header
while (tok.hasMoreTokens())
{
try
{
t = tok.nextToken().trim();
long first = -1;
long last = -1;
int d = t.indexOf('-');
if (d < 0 || t.indexOf("-",d + 1) >= 0)
{
if ("bytes".equals(t))
continue;
continue headers;
}
else if (d == 0)
{
if (d + 1 < t.length())
last = Long.parseLong(t.substring(d + 1).trim());
else
{
continue;
}
}
else if (d + 1 < t.length())
{
first = Long.parseLong(t.substring(0,d).trim());
last = Long.parseLong(t.substring(d + 1).trim());
}
else
first = Long.parseLong(t.substring(0,d).trim());
if (first == -1 && last == -1)
continue headers;
if (first != -1 && last != -1 && (first > last))
continue headers;
if (first < size)
{
if (satRanges == null)
satRanges = new ArrayList(4);
InclusiveByteRange range = new InclusiveByteRange(first,last);
satRanges.add(range);
}
}
catch (NumberFormatException e)
{
continue;
}
}
}
catch(Exception e)
{
}
}
return satRanges;
}
/* ------------------------------------------------------------ */
public long getFirst(long size)
{
if (first<0)
{
long tf=size-last;
if (tf<0)
tf=0;
return tf;
}
return first;
}
/* ------------------------------------------------------------ */
public long getLast(long size)
{
if (first<0)
return size-1;
if (last<0 ||last>=size)
return size-1;
return last;
}
/* ------------------------------------------------------------ */
public long getSize(long size)
{
return getLast(size)-getFirst(size)+1;
}
/* ------------------------------------------------------------ */
public String toHeaderRangeString(long size)
{
StringBuilder sb = new StringBuilder(40);
sb.append("bytes ");
sb.append(getFirst(size));
sb.append('-');
sb.append(getLast(size));
sb.append("/");
sb.append(size);
return sb.toString();
}
/* ------------------------------------------------------------ */
public static String to416HeaderRangeString(long size)
{
StringBuilder sb = new StringBuilder(40);
sb.append("bytes */");
sb.append(size);
return sb.toString();
}
/* ------------------------------------------------------------ */
@Override
public String toString()
{
StringBuilder sb = new StringBuilder(60);
sb.append(Long.toString(first));
sb.append(":");
sb.append(Long.toString(last));
return sb.toString();
}
}

View File

@@ -0,0 +1,131 @@
// ========================================================================
// Copyright 2000-2005 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================
package org.klomp.snark.web;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.ServletContext;
/* ------------------------------------------------------------ */
/**
* Based on MimeTypes from Jetty 6.1.26, heavily simplified
* and modified to remove all dependencies on Jetty libs.
*
* Supports mime types only, not encodings.
* Does not support a default "*" mapping.
*
* This is only for local mappings.
* Caller should use getServletContext().getMimeType() if this returns null.
*
*
* ------------------------------------------------------------
*
* @author Greg Wilkins
*
* @since Jetty 7
*/
class MimeTypes
{
private final Map<String, String> _mimeMap;
public MimeTypes() {
_mimeMap = new ConcurrentHashMap();
}
/* ------------------------------------------------------------ */
/**
* @param resourcePath A Map of file extension to mime-type.
*/
public void loadMimeMap(String resourcePath) {
loadMimeMap(_mimeMap, resourcePath);
}
/**
* Tries both webapp and system class loader, since Jetty blocks
* its classes from the webapp class loader.
*/
private static void loadMimeMap(Map<String, String> map, String resourcePath) {
try
{
ResourceBundle mime;
try {
mime = ResourceBundle.getBundle(resourcePath);
} catch(MissingResourceException e) {
// Jetty 7 webapp classloader blocks jetty classes
// http://wiki.eclipse.org/Jetty/Reference/Jetty_Classloading
//System.out.println("No mime types loaded from " + resourcePath + ", trying system classloader");
mime = ResourceBundle.getBundle(resourcePath, Locale.getDefault(), ClassLoader.getSystemClassLoader());
}
Enumeration<String> i = mime.getKeys();
while(i.hasMoreElements())
{
String ext = i.nextElement();
String m = mime.getString(ext);
map.put(ext.toLowerCase(Locale.US), m);
}
//System.out.println("Loaded " + map.size() + " mime types from " + resourcePath);
} catch(MissingResourceException e) {
//System.out.println("No mime types loaded from " + resourcePath);
}
}
/* ------------------------------------------------------------ */
/** Get the MIME type by filename extension.
*
* Returns ONLY local mappings.
* Caller should use getServletContext().getMimeType() if this returns null.
*
* @param filename A file name
* @return MIME type matching the longest dot extension of the
* file name.
*/
public String getMimeByExtension(String filename)
{
String type=null;
if (filename!=null)
{
int i=-1;
while(type==null)
{
i=filename.indexOf(".",i+1);
if (i<0 || i>=filename.length())
break;
String ext=filename.substring(i+1).toLowerCase(Locale.US);
type = _mimeMap.get(ext);
}
}
return type;
}
/* ------------------------------------------------------------ */
/** Set a mime mapping
* @param extension
* @param type
*/
public void addMimeMapping(String extension, String type)
{
_mimeMap.put(extension.toLowerCase(Locale.US), type);
}
}

View File

@@ -5,7 +5,7 @@ import java.io.File;
import net.i2p.I2PAppContext;
import net.i2p.util.FileUtil;
import org.mortbay.jetty.Server;
import org.eclipse.jetty.server.Server;
public class RunStandalone {
static {

View File

@@ -0,0 +1,19 @@
package org.klomp.snark.web;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
/**
* Treat a writer as an output stream. Quick 'n dirty, none
* of that "intarnasheeonaleyzayshun" stuff. So we can treat
* the jsp's PrintWriter as an OutputStream
*
* @since Jetty 7 copied from routerconsole
*/
class WriterOutputStream extends OutputStream {
private final Writer _writer;
public WriterOutputStream(Writer writer) { _writer = writer; }
public void write(int b) throws IOException { _writer.write(b); }
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
7z = application/x-7z-compressed
ape = audio/x-monkeys-audio
dmg = application/apple-diskimage
epub = application/epub+zip
flac = audio/flac
flv = video/x-flv
iso = application/x-iso9660-image
m4a = audio/mp4a-latm
m4v = video/x-m4v
mkv = video/x-matroska
mp4 = video/mp4
mpc = audio/x-musepack
nfo = text/plain
ogm = video/ogg
ogv = video/ogg
oga = audio/ogg
rar = application/x-rar-compressed
su2 = application/zip
sud = application/zip
txt = text/plain
war = application/java-archive
wma = audio/x-ms-wma
wmv = video/x-ms-wmv

View File

@@ -21,6 +21,9 @@
</depend>
</target>
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
</condition>
<property name="javac.compilerargs" value="" />
<property name="require.gettext" value="true" />
@@ -84,7 +87,7 @@
</condition>
</target>
<target name="bundle" depends="compile, precompilejsp">
<target name="bundle" depends="compile, precompilejsp" unless="no.bundle">
<!-- 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="true" failonerror="${require.gettext}" >
@@ -170,12 +173,10 @@
<!-- there are various jspc ant tasks, but they all seem a bit flakey -->
<java classname="org.apache.jasper.JspC" fork="true" failonerror="true">
<classpath>
<pathelement location="../../jetty/jettylib/jasper-compiler.jar" />
<pathelement location="../../jetty/jettylib/jasper-runtime.jar" />
<pathelement location="../../jetty/jettylib/javax.servlet.jar" />
<pathelement location="../../jetty/jettylib/commons-logging.jar" />
<pathelement location="../../jetty/jettylib/commons-el.jar" />
<pathelement location="../../jetty/jettylib/jsp-api.jar" />
<pathelement location="${ant.home}/lib/ant.jar" />
<pathelement location="build/i2ptunnel.jar" />
<pathelement location="build/temp-beans.jar" />
@@ -200,7 +201,6 @@
<pathelement location="../../jetty/jettylib/javax.servlet.jar" />
<pathelement location="../../jetty/jettylib/commons-logging.jar" />
<pathelement location="../../jetty/jettylib/commons-el.jar" />
<pathelement location="../../jetty/jettylib/jsp-api.jar" />
<pathelement location="build/i2ptunnel.jar" />
<pathelement location="build/temp-beans.jar" />
<pathelement location="../../../core/java/build/i2p.jar" />

View File

@@ -1,4 +1,5 @@
#
#!/bin/sh
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.

View File

@@ -54,9 +54,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
public HTTPResponseOutputStream(OutputStream raw) {
super(raw);
_context = I2PAppContext.getGlobalContext();
_context.statManager().createRateStat("i2ptunnel.httpCompressionRatio", "ratio of compressed size to decompressed size after transfer", "I2PTunnel", new long[] { 60*60*1000 });
_context.statManager().createRateStat("i2ptunnel.httpCompressed", "compressed size transferred", "I2PTunnel", new long[] { 60*60*1000 });
_context.statManager().createRateStat("i2ptunnel.httpExpanded", "size transferred after expansion", "I2PTunnel", new long[] { 60*60*1000 });
// all createRateStat in I2PTunnelHTTPClient.startRunning()
_log = _context.logManager().getLog(getClass());
_headerBuffer = _cache.acquire();
_buf1 = new byte[1];
@@ -67,10 +65,12 @@ class HTTPResponseOutputStream extends FilterOutputStream {
_buf1[0] = (byte)c;
write(_buf1, 0, 1);
}
@Override
public void write(byte buf[]) throws IOException {
write(buf, 0, buf.length);
}
@Override
public void write(byte buf[], int off, int len) throws IOException {
if (_headerWritten) {
@@ -183,6 +183,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
_gzip = true;
} else if ("proxy-authenticate".equals(lcKey)) {
// filter this hop-by-hop header; outproxy authentication must be configured in I2PTunnelHTTPClient
// see e.g. http://blog.c22.cc/2013/03/11/privoxy-proxy-authentication-credential-exposure-cve-2013-2503/
} else {
if ("content-length".equals(lcKey)) {
// save for compress decision on server side
@@ -192,6 +193,17 @@ class HTTPResponseOutputStream extends FilterOutputStream {
} else if ("content-type".equals(lcKey)) {
// save for compress decision on server side
_contentType = val;
} else if ("set-cookie".equals(lcKey)) {
String lcVal = val.toLowerCase(Locale.US);
if (lcVal.contains("domain=b32.i2p") ||
lcVal.contains("domain=.b32.i2p")) {
// Strip privacy-damaging "supercookie" for b32.i2p
// Let's presume the user agent ignores a cookie for "i2p"
// See RFC 6265 and http://publicsuffix.org/
if (_log.shouldLog(Log.INFO))
_log.info("Stripping \"" + key + ": " + val + "\" from response ");
break;
}
}
out.write((key.trim() + ": " + val.trim() + "\r\n").getBytes());
}
@@ -274,7 +286,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
while ( (read = _in.read(buf)) != -1) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Read " + read + " and writing it to the browser/streams");
; _out.write(buf, 0, read);
_out.write(buf, 0, read);
_out.flush();
written += read;
}

View File

@@ -255,9 +255,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
newManager = true;
} else {
I2PSession sess = sockMgr.getSession();
if (sess == null) {
newManager = true;
} else if (sess.isClosed() &&
if (sess.isClosed() &&
Boolean.parseBoolean(getTunnel().getClientOptions().getProperty("i2cp.closeOnIdle")) &&
Boolean.parseBoolean(getTunnel().getClientOptions().getProperty("i2cp.newDestOnResume"))) {
// build a new socket manager and a new dest if the session is closed.
@@ -317,7 +315,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
Log _log = tunnel.getContext().logManager().getLog(I2PTunnelClientBase.class);
if (socketManager != null) {
I2PSession s = socketManager.getSession();
if ( (s == null) || (s.isClosed()) ) {
if (s.isClosed()) {
if (_log.shouldLog(Log.INFO))
_log.info(tunnel.getClientOptions().getProperty("inbound.nickname") + ": Building a new socket manager since the old one closed [s=" + s + "]");
if (s != null)
@@ -709,9 +707,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
}
if (!chained) {
I2PSession session = sockMgr.getSession();
if (session != null) {
getTunnel().removeSession(session);
}
getTunnel().removeSession(session);
} // else the app chaining to this one closes it!
}
l.log("Stopping client " + toString());

View File

@@ -162,6 +162,14 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
"<html><body><H1>I2P ERROR: NON-HTTP PROTOCOL</H1>" +
"The request uses a bad protocol. " +
"The I2P HTTP Proxy supports http:// requests ONLY. Other protocols such as https:// and ftp:// are not allowed.<BR>").getBytes();
private final static byte[] ERR_BAD_URI =
("HTTP/1.1 403 Bad URI\r\n" +
"Content-Type: text/html; charset=iso-8859-1\r\n" +
"Cache-control: no-cache\r\n" +
"\r\n" +
"<html><body><H1>I2P ERROR: INVALID REQUEST URI</H1>" +
"The request URI is invalid, and probably contains illegal characters. " +
"If you clicked e.g. a forum link, check the end of the URI for any characters the browser has mistakenly added on.<BR>").getBytes();
private final static byte[] ERR_LOCALHOST =
("HTTP/1.1 403 Access Denied\r\n" +
"Content-Type: text/html; charset=iso-8859-1\r\n" +
@@ -273,8 +281,13 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
*/
@Override
public void startRunning() {
// following are for HTTPResponseOutputStream
_context.statManager().createRateStat("i2ptunnel.httpCompressionRatio", "ratio of compressed size to decompressed size after transfer", "I2PTunnel", new long[] { 60*60*1000 });
_context.statManager().createRateStat("i2ptunnel.httpCompressed", "compressed size transferred", "I2PTunnel", new long[] { 60*60*1000 });
_context.statManager().createRateStat("i2ptunnel.httpExpanded", "size transferred after expansion", "I2PTunnel", new long[] { 60*60*1000 });
super.startRunning();
this.isr = new InternalSocketRunner(this);
this.isr.start();
_context.portMapper().register(PortMapper.SVC_HTTP_PROXY, getLocalPort());
}
@@ -424,7 +437,12 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
if(_log.shouldLog(Log.WARN)) {
_log.warn(getPrefix(requestId) + "Bad request [" + request + "]", use);
}
break;
if(out != null) {
out.write(getErrorPage("baduri", ERR_BAD_URI));
writeFooter(out);
}
s.close();
return;
}
method = params[0];
String protocolVersion = params[2];
@@ -904,7 +922,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
// use existing session to look up for efficiency
verifySocketManager();
I2PSession sess = sockMgr.getSession();
if(sess != null && !sess.isClosed()) {
if(!sess.isClosed()) {
byte[] hData = Base32.decode(destination.substring(0, 52));
if(hData != null) {
if(_log.shouldLog(Log.INFO)) {

View File

@@ -10,10 +10,14 @@ import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.util.ArrayList;
import java.io.File;
import java.util.BitSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PSocketManager;
@@ -36,7 +40,8 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
private static final int MD5_BYTES = 16;
/** 24 */
private static final int NONCE_BYTES = DataHelper.DATE_LENGTH + MD5_BYTES;
private static final long MAX_NONCE_AGE = 30*24*60*60*1000L;
private static final long MAX_NONCE_AGE = 60*60*1000L;
private static final int MAX_NONCE_COUNT = 1024;
private static final String ERR_AUTH1 =
"HTTP/1.1 407 Proxy Authentication Required\r\n" +
@@ -67,6 +72,8 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
protected static volatile long __clientId = 0;
private final byte[] _proxyNonce;
private final ConcurrentHashMap<String, NonceInfo> _nonces;
private final AtomicInteger _nonceCleanCounter = new AtomicInteger();
protected String getPrefix(long requestId) { return "Client[" + _clientId + "/" + requestId + "]: "; }
@@ -91,6 +98,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
_proxyList = new ArrayList(4);
_proxyNonce = new byte[PROXYNONCE_BYTES];
_context.random().nextBytes(_proxyNonce);
_nonces = new ConcurrentHashMap();
}
/**
@@ -106,6 +114,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
_proxyList = new ArrayList(4);
_proxyNonce = new byte[PROXYNONCE_BYTES];
_context.random().nextBytes(_proxyNonce);
_nonces = new ConcurrentHashMap();
}
//////// Authorization stuff
@@ -132,6 +141,36 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
protected enum AuthResult {AUTH_BAD_REQ, AUTH_BAD, AUTH_STALE, AUTH_GOOD}
/**
* @since 0.9.6
*/
private static class NonceInfo {
private final long expires;
private final BitSet counts;
public NonceInfo(long exp) {
expires = exp;
counts = new BitSet(MAX_NONCE_COUNT);
}
public long getExpires() {
return expires;
}
public AuthResult isValid(int nc) {
if (nc <= 0)
return AuthResult.AUTH_BAD;
if (nc >= MAX_NONCE_COUNT)
return AuthResult.AUTH_STALE;
synchronized(counts) {
if (counts.get(nc))
return AuthResult.AUTH_BAD;
counts.set(nc);
}
return AuthResult.AUTH_GOOD;
}
}
/**
* @since 0.9.4
*/
@@ -246,7 +285,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
return AuthResult.AUTH_BAD_REQ;
}
// nonce check
AuthResult check = verifyNonce(nonce);
AuthResult check = verifyNonce(nonce, nc);
if (check != AuthResult.AUTH_GOOD) {
if (_log.shouldLog(Log.INFO))
_log.info("Bad digest nonce: " + check + ' ' + DataHelper.toString(args));
@@ -289,20 +328,32 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
System.arraycopy(b, 0, n, 0, DataHelper.DATE_LENGTH);
byte[] md5 = PasswordManager.md5Sum(b);
System.arraycopy(md5, 0, n, DataHelper.DATE_LENGTH, MD5_BYTES);
return Base64.encode(n);
String rv = Base64.encode(n);
_nonces.putIfAbsent(rv, new NonceInfo(now + MAX_NONCE_AGE));
return rv;
}
/**
* Verify the Base 64 of 24 bytes: (now, md5 of (now, proxy nonce))
* and the nonce count.
* @param b64 nonce non-null
* @param ncs nonce count string non-null
* @since 0.9.4
*/
private AuthResult verifyNonce(String b64) {
private AuthResult verifyNonce(String b64, String ncs) {
if (_nonceCleanCounter.incrementAndGet() % 16 == 0)
cleanNonces();
byte[] n = Base64.decode(b64);
if (n == null || n.length != NONCE_BYTES)
return AuthResult.AUTH_BAD;
long now = _context.clock().now();
long stamp = DataHelper.fromLong(n, 0, DataHelper.DATE_LENGTH);
if (now - stamp > MAX_NONCE_AGE)
if (now - stamp > MAX_NONCE_AGE) {
_nonces.remove(b64);
return AuthResult.AUTH_STALE;
}
NonceInfo info = _nonces.get(b64);
if (info == null)
return AuthResult.AUTH_STALE;
byte[] b = new byte[DataHelper.DATE_LENGTH + PROXYNONCE_BYTES];
System.arraycopy(n, 0, b, 0, DataHelper.DATE_LENGTH);
@@ -310,7 +361,26 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
byte[] md5 = PasswordManager.md5Sum(b);
if (!DataHelper.eq(md5, 0, n, DataHelper.DATE_LENGTH, MD5_BYTES))
return AuthResult.AUTH_BAD;
return AuthResult.AUTH_GOOD;
try {
int nc = Integer.parseInt(ncs, 16);
return info.isValid(nc);
} catch (NumberFormatException nfe) {
return AuthResult.AUTH_BAD;
}
}
/**
* Remove expired nonces from map
* @since 0.9.6
*/
private void cleanNonces() {
long now = _context.clock().now();
for (Iterator<NonceInfo> iter = _nonces.values().iterator(); iter.hasNext(); ) {
NonceInfo info = iter.next();
if (info.getExpires() <= now)
iter.remove();
}
}
/**

View File

@@ -72,6 +72,11 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
"\r\n")
.getBytes();
private static final String[] BAD_PROTOCOLS = {
"GET ", "HEAD ", "POST ", "GNUTELLA CONNECT", "\023BitTorrent protocol"
};
/**
* @throws IllegalArgumentException if the I2PTunnel does not contain
* valid config to contact the router
@@ -193,6 +198,12 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
String s = DataHelper.readLine(in);
if (s == null)
throw new IOException("EOF reached before the end of the headers [" + buf.toString() + "]");
if (lineCount == 0) {
for (int i = 0; i < BAD_PROTOCOLS.length; i++) {
if (s.startsWith(BAD_PROTOCOLS[i]))
throw new IOException("Bad protocol " + BAD_PROTOCOLS[i]);
}
}
if (++lineCount > 10)
throw new IOException("Too many lines before USER or SERVER, giving up");
if (System.currentTimeMillis() > expire)

View File

@@ -14,20 +14,23 @@ import net.i2p.util.Log;
* @author zzz
* @since 0.7.9
*/
class InternalSocketRunner implements Runnable {
class InternalSocketRunner extends I2PAppThread {
private final I2PTunnelClientBase client;
private final int port;
private ServerSocket ss;
private volatile boolean open;
/** starts the runner */
/**
* Does not start the runner, caller must call start()
*/
InternalSocketRunner(I2PTunnelClientBase client) {
super("Internal socket port " + client.getLocalPort());
setDaemon(true);
this.client = client;
this.port = client.getLocalPort();
Thread t = new I2PAppThread(this, "Internal socket port " + this.port, true);
t.start();
}
@Override
public final void run() {
try {
this.ss = new InternalServerSocket(this.port);

View File

@@ -125,7 +125,9 @@ public class TunnelControllerGroup implements ClientApp {
loadControllers(_configFile);
if (_mgr != null)
_mgr.register(this);
_context.addShutdownTask(new Shutdown());
// RouterAppManager registers its own shutdown hook
else
_context.addShutdownTask(new Shutdown());
}
/**
@@ -194,7 +196,9 @@ public class TunnelControllerGroup implements ClientApp {
*
* @since 0.8.8
*/
public void shutdown() {
public synchronized void shutdown() {
if (_state != STARTING && _state != RUNNING)
return;
changeState(STOPPING);
if (_mgr != null)
_mgr.unregister(this);

View File

@@ -51,6 +51,7 @@ abstract class IRCFilter {
"KICK",
"H", // "hide operator status" (after kicking an op)
"TOPIC",
"AUTHENTICATE", // SASL, also requires CAP below
// http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
"CAP"
};
@@ -152,6 +153,7 @@ abstract class IRCFilter {
// Commands that regular users might use
"ADMIN",
"AWAY", // should be harmless
"AUTHENTICATE", // SASL, also requires CAP below
"CAP", // http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
"CYCLE",
"DCCALLOW",

View File

@@ -46,9 +46,11 @@ public class SOCKS4aServer extends SOCKSServer {
* client socket.
*
* @param clientSock client socket
* @param props non-null
*/
public SOCKS4aServer(Socket clientSock) {
public SOCKS4aServer(Socket clientSock, Properties props) {
this.clientSock = clientSock;
this.props = props;
}
public Socket getClientSocket() throws SOCKSException {
@@ -116,6 +118,13 @@ public class SOCKS4aServer extends SOCKSServer {
}
}
// Check if the requested IP should be mapped to a domain name
String mappedDomainName = getMappedDomainNameForIP(connHostName);
if (mappedDomainName != null) {
_log.debug("IPV4 address " + connHostName + " was mapped to domain name " + mappedDomainName);
connHostName = mappedDomainName;
}
// discard user name
readString(in);

View File

@@ -42,7 +42,6 @@ public class SOCKS5Server extends SOCKSServer {
private static final int SOCKS_VERSION_5 = 0x05;
private final Socket clientSock;
private final Properties props;
private boolean setupCompleted = false;
private final boolean authRequired;
@@ -207,7 +206,13 @@ public class SOCKS5Server extends SOCKSServer {
connHostName += ".";
}
}
if (command != Command.UDP_ASSOCIATE)
// Check if the requested IP should be mapped to a domain name
String mappedDomainName = getMappedDomainNameForIP(connHostName);
if (mappedDomainName != null) {
_log.debug("IPV4 address " + connHostName + " was mapped to domain name " + mappedDomainName);
addressType = AddressType.DOMAINNAME;
connHostName = mappedDomainName;
} else if (command != Command.UDP_ASSOCIATE)
_log.warn("IPV4 address type in request: " + connHostName + ". Is your client secure?");
break;
case AddressType.DOMAINNAME:

View File

@@ -7,6 +7,7 @@
package net.i2p.i2ptunnel.socks;
import java.net.Socket;
import java.util.Properties;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.util.Log;
@@ -19,11 +20,29 @@ import net.i2p.util.Log;
public abstract class SOCKSServer {
private static final Log _log = new Log(SOCKSServer.class);
private static final String PROP_MAPPING_PREFIX = "ipmapping.";
/* Details about the connection requested by client */
protected String connHostName;
protected int connPort;
protected int addressType;
protected Properties props;
/**
* IP to domain name mapping support. This matches the given IP string
* against a user-set list of mappings. This enables applications which do
* not properly support the SOCKS5 DOMAINNAME feature to be used with I2P.
* @param ip The IP address to check.
* @return The domain name if a mapping is found, or null otherwise.
* @since 0.9.5
*/
protected String getMappedDomainNameForIP(String ip) {
if (props.containsKey(PROP_MAPPING_PREFIX + ip))
return props.getProperty(PROP_MAPPING_PREFIX + ip);
return null;
}
/**
* Perform server initialization (expecially regarding protected
* variables).

View File

@@ -54,7 +54,7 @@ public class SOCKSServerFactory {
props.containsKey(I2PTunnelHTTPClientBase.PROP_PW)) {
throw new SOCKSException("SOCKS 4/4a not supported when authorization is required");
}
serv = new SOCKS4aServer(s);
serv = new SOCKS4aServer(s, props);
break;
case 0x05:
// SOCKS version 5

View File

@@ -378,4 +378,42 @@ public class EditBean extends IndexBean {
if (controller == null) return null;
return controller.getClientOptionProps();
}
private static final String PROP_ADVANCED = "routerconsole.advanced";
private static final int DFLT_QUANTITY = 2;
private static final int MAX_CLIENT_QUANTITY = 3;
private static final int MAX_SERVER_QUANTITY = 6;
private static final int MAX_ADVANCED_QUANTITY = 16;
/**
* @since 0.9.7
*/
public String getQuantityOptions(int tunnel) {
int tunnelQuantity = getTunnelQuantity(tunnel, DFLT_QUANTITY);
boolean advanced = _context.getBooleanProperty(PROP_ADVANCED);
int maxQuantity = advanced ? MAX_ADVANCED_QUANTITY :
(isClient(tunnel) ? MAX_CLIENT_QUANTITY : MAX_SERVER_QUANTITY);
if (tunnelQuantity > maxQuantity)
maxQuantity = tunnelQuantity;
StringBuilder buf = new StringBuilder(256);
for (int i = 1; i <= maxQuantity; i++) {
buf.append("<option value=\"").append(i).append('"');
if (i == tunnelQuantity)
buf.append(" selected=\"selected\"");
buf.append('>');
buf.append(ngettext("{0} inbound, {0} outbound tunnel", "{0} inbound, {0} outbound tunnels", i));
if (i <= 3) {
buf.append(" (");
if (i == 1)
buf.append(_("lower bandwidth and reliability"));
else if (i == 2)
buf.append(_("standard bandwidth and reliability"));
else if (i == 3)
buf.append(_("higher bandwidth and reliability"));
buf.append(')');
}
buf.append("</option>\n");
}
return buf.toString();
}
}

View File

@@ -1293,4 +1293,11 @@ public class IndexBean {
protected String _(String key) {
return Messages._(key, _context);
}
/** translate (ngettext)
* @since 0.9.7
*/
protected String ngettext(String s, String p, int n) {
return Messages.ngettext(s, p, n, _context);
}
}

View File

@@ -39,4 +39,11 @@ public class Messages {
public String _(String s, Object o) {
return Translate.getString(s, o, _context, BUNDLE_NAME);
}
/** translate (ngettext)
* @since 0.9.7
*/
public static String ngettext(String s, String p, int n, I2PAppContext ctx) {
return Translate.getString(n, s, p, ctx, BUNDLE_NAME);
}
}

View File

@@ -27,6 +27,9 @@
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }
%>
<style type='text/css'>
input.default { width: 1px; height: 1px; visibility: hidden; }
</style>
</head>
<body id="tunnelEditPage">
<div id="pageHeader">
@@ -55,6 +58,7 @@
<input type="hidden" name="tunnel" value="<%=request.getParameter("tunnel")%>" />
<input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
<input type="hidden" name="type" value="<%=tunnelType%>" />
<input type="submit" class="default" name="action" value="Save changes" />
</div>
<div class="separator">
@@ -212,7 +216,7 @@
<%=intl._("Length")%>(<span class="accessKey">t</span>):
</label>
<select id="tunnelDepth" name="tunnelDepth" title="Length of each Tunnel" class="selectbox">
<% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 2);
<% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 3);
%><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop tunnel (low anonymity, low latency)")%></option>
<option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 hop tunnel (medium anonymity, medium latency)")%></option>
<option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 hop tunnel (high anonymity, high latency)")%></option>
@@ -243,14 +247,8 @@
<%=intl._("Count")%>(<span class="accessKey">C</span>):
</label>
<select id="tunnelQuantity" name="tunnelQuantity" title="Number of Tunnels in Group" class="selectbox">
<% int tunnelQuantity = editBean.getTunnelQuantity(curTunnel, 2);
%><option value="1"<%=(tunnelQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)")%></option>
<option value="2"<%=(tunnelQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)")%></option>
<option value="3"<%=(tunnelQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)")%></option>
<% if (tunnelQuantity > 3) {
%> <option value="<%=tunnelQuantity%>" selected="selected"><%=tunnelQuantity%> <%=intl._("tunnels")%></option>
<% }
%></select>
<%=editBean.getQuantityOptions(curTunnel)%>
</select>
</div>
<div id="backupField" class="rowItem">
<label for="tunnelBackupQuantity" accesskey="b">

View File

@@ -27,6 +27,9 @@
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }
%>
<style type='text/css'>
input.default { width: 1px; height: 1px; visibility: hidden; }
</style>
</head>
<body id="tunnelEditPage">
<div id="pageHeader">
@@ -55,6 +58,7 @@
<input type="hidden" name="tunnel" value="<%=request.getParameter("tunnel")%>" />
<input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
<input type="hidden" name="type" value="<%=tunnelType%>" />
<input type="submit" class="default" name="action" value="Save changes" />
</div>
<div class="separator">
@@ -229,7 +233,7 @@
<%=intl._("Length")%>(<span class="accessKey">t</span>):
</label>
<select id="tunnelDepth" name="tunnelDepth" title="Length of each Tunnel" class="selectbox">
<% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 2);
<% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 3);
%><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop tunnel (low anonymity, low latency)")%></option>
<option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 hop tunnel (medium anonymity, medium latency)")%></option>
<option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 hop tunnel (high anonymity, high latency)")%></option>
@@ -260,14 +264,8 @@
<%=intl._("Count")%>(<span class="accessKey">C</span>):
</label>
<select id="tunnelQuantity" name="tunnelQuantity" title="Number of Tunnels in Group" class="selectbox">
<% int tunnelQuantity = editBean.getTunnelQuantity(curTunnel, 2);
%><option value="1"<%=(tunnelQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)")%></option>
<option value="2"<%=(tunnelQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)")%></option>
<option value="3"<%=(tunnelQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)")%></option>
<% if (tunnelQuantity > 3) {
%> <option value="<%=tunnelQuantity%>" selected="selected"><%=tunnelQuantity%> <%=intl._("tunnels")%></option>
<% }
%></select>
<%=editBean.getQuantityOptions(curTunnel)%>
</select>
</div>
<div id="backupField" class="rowItem">
<label for="tunnelBackupQuantity" accesskey="b">

View File

@@ -115,7 +115,7 @@
<%
if (indexBean.isServerTargetLinkValid(curServer)) {
%>
<a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTP server, bypassing I2P"><%=indexBean.getServerTarget(curServer)%></a>
<a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTP server, bypassing I2P" target="_top"><%=indexBean.getServerTarget(curServer)%></a>
<%
} else {
%><%=indexBean.getServerTarget(curServer)%>
@@ -127,7 +127,7 @@
<%
if (("httpserver".equals(indexBean.getInternalType(curServer)) || ("httpbidirserver".equals(indexBean.getInternalType(curServer)))) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
%><label><%=intl._("Preview")%>:</label>
<a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>.b32.i2p" target="_parent"><%=intl._("Preview")%></a>
<a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>.b32.i2p" target="_top"><%=intl._("Preview")%></a>
<%
} else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
%><span class="text"><%=intl._("Base32 Address")%>:<br /><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>

View File

@@ -471,7 +471,7 @@
<%=intl._("The wizard will set reasonably sensible default values for these, but you can view and/or edit these by clicking on the tunnel's name in the main I2PTunnel page.")%>
</p>
<input type="hidden" name="tunnelDepth" value="2" />
<input type="hidden" name="tunnelDepth" value="3" />
<input type="hidden" name="tunnelVariance" value="0" />
<input type="hidden" name="tunnelQuantity" value="2" />
<input type="hidden" name="tunnelBackupQuantity" value="0" />

View File

@@ -4,21 +4,22 @@
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# blabla, 2011.
# <blabla@trash-mail.com>, 2011-2012.
# D.A. Loader <>, 2012.
# <driz@i2pmail.org>, 2012.
# ducki2p <ducki2p@gmail.com>, 2011.
# foo <foo@bar>, 2009.
# mixxy, 2011.
# <pirr@tormail.org>, 2012.
# blabla, 2011
# blabla <blabla@trash-mail.com>, 2011-2012
# D.A. Loader <>, 2012
# driz <driz@i2pmail.org>, 2012
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# mixxy, 2011
# pirr <pirr@tormail.org>, 2012
# zeroflag <zeroflag@i2pmail.org>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-14 15:54+0000\n"
"PO-Revision-Date: 2012-11-30 02:18+0000\n"
"Last-Translator: blabla <blabla@trash-mail.com>\n"
"POT-Creation-Date: 2013-07-02 17:24+0000\n"
"PO-Revision-Date: 2013-05-08 13:15+0000\n"
"Last-Translator: zeroflag <zeroflag@i2pmail.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/"
"de/)\n"
"Language: de\n"
@@ -27,15 +28,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Dies scheint kein gültiges Ziel zu sein:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "Der I2P-Adresshelfer kann dir bei solch einem Ziel nicht helfen."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
@@ -46,49 +47,49 @@ msgstr ""
"\"{0}\">hier</a>, und um das Ziel aus der kollidierenden Adresshelfer-"
"Anfrage zu besuchen, <a href=\"{1}\">hier</a>!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1025
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1029
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1033
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
msgid "Destination"
msgstr "Ziel"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Weiter zu {0}, ohne zu speichern"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1044
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "{0} im Router-Adressbuch speichern und auf die Eepseite weiterleiten"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "{0} im Master-Adressbuch speichern und auf die Eepseite weiterleiten"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1048
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "{0} im privaten Adressbuch speichern und auf die Eepseite weiterleiten"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1162
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP-Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1167
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
@@ -96,15 +97,15 @@ msgstr ""
"Adresshelfer von einem \"Sprung\"-Service:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1203
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "Weiterleitungsdienst {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, fuzzy, java-format
#, java-format
msgid "Added via address helper from {0}"
msgstr "Durch Adresshelfer hinzugefügt"
msgstr "Hinzugefüg über den Adressenhelfer von {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
@@ -152,6 +153,27 @@ msgstr "Klick hier, wenn du nicht automatisch weitergeleitet wirst!"
msgid "internal"
msgstr "intern"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:404
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:408
msgid "lower bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:410
#, fuzzy
msgid "standard bandwidth and reliability"
msgstr ""
"2 eingehende, 2 ausgehende Tunnel (Standardbandbreitennutzung, zuverlässig)"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:412
msgid "higher bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr ""
@@ -477,208 +499,181 @@ msgstr "Hops Varianz"
msgid "Count"
msgstr "Anzahl"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr ""
"1 eingehender, 1 ausgehender Tunnel (geringe Bandbreitennutzung, weniger "
"zuverlässig)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr ""
"2 eingehende, 2 ausgehende Tunnel (Standardbandbreitennutzung, zuverlässig)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr ""
"3 eingehende, 3 ausgehende Tunnel (hohe Bandbreitennutzung, zuverlässiger)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "tunnels"
msgstr "Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:338
msgid "Backup Count"
msgstr "Anzahl an Ersatztunneln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr "0 Ersatztunnel (0 Redundanz, keine zusätzliche Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
"1 Ersatztunnel in jede Richtung (geringe Redundanz, geringe "
"Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:343
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
"2 Ersatztunnel in jede Richtung (mittlere Redundanz, mittlere "
"Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
"3 Ersatztunnel in jede Richtung (hohe Redundanz, hohe Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:365
msgid "backup tunnels"
msgstr "Ersatztunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "interactive connection"
msgstr "Interaktive Verbindung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
msgid "bulk connection (downloads/websites/BT)"
msgstr "Mengenverbindung (Download/Webseiten/BitTorrent)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:375
msgid "Delay Connect"
msgstr "Verbindung verzögern"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
msgid "for request/response connections"
msgstr "für Verbindungen mit Anfragen/Antworten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:383
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:387
msgid "Router I2CP Address"
msgstr "I2CP-Adresse des Routers"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431
msgid "Port"
msgstr "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Reduce tunnel quantity when idle"
msgstr "Anzahl an Tunneln im Leerlauf reduzieren"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469
msgid "Enable"
msgstr "aktiviert"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473
msgid "Reduced tunnel count"
msgstr "Reduzierte Tunnelanzahl"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477
msgid "Idle minutes"
msgstr "Minuten Inaktivität"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
msgid "Close tunnels when idle"
msgstr "nicht genutzte Tunnel schließen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423
msgid "New Keys on Reopen"
msgstr "Neue Schlüssel beim Wiederöffnen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Disable"
msgstr "deaktiviert"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
msgid "Delay tunnel open until required"
msgstr "Aufbau des Tunnela verzögern, bis dieser benötigt wird"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
msgid "Persistent private key"
msgstr "Dauerhafter privater Schlüssel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
msgid "File"
msgstr "Datei"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
msgid "Local destination"
msgstr "lokales Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
msgid "(if known)"
msgstr "(falls bekannt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:466
msgid "Local Authorization"
msgstr "lokale Autorisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Username"
msgstr "Benutzername"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
msgid "Password"
msgstr "Passwort"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
msgid "Outproxy Authorization"
msgstr "Outproxy Autorisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
msgid "Jump URL List"
msgstr "List der Sprung-URLs"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Custom options"
msgstr "Eigene Optionen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699
msgid "Cancel"
msgstr "Abbrechen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Delete"
msgstr "Löschen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:509
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "Save"
msgstr "Speichern"
@@ -714,104 +709,104 @@ msgstr "zum lokalen Adressbuch hinzufügen"
msgid "Hostname Signature"
msgstr "Signatur des Namens"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
msgid "Encrypt Leaseset"
msgstr "Leaseset verschlüsseln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
msgid "Encryption Key"
msgstr "Schlüssel zum verschlüsseln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415
msgid "Generate New Key"
msgstr "Erzeuge neuen Schlüssel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Generate"
msgstr "Erzeugen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
msgid "(Tunnel must be stopped first)"
msgstr "(Tunnel muss zuerst beendet sein)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
msgid "Restricted Access List"
msgstr "Zugang beschränken"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Whitelist"
msgstr "Zugangsliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
msgid "Blacklist"
msgstr "Sperrliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Access List"
msgstr "Zugangsliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Inbound connection limits (0=unlimited)"
msgstr "Begrenzung eingehender Verbindungen (0=unbegrenzt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
msgid "Per client"
msgstr "pro Klient"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Per minute"
msgstr "pro Minute"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Per hour"
msgstr "pro Stunde"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Per day"
msgstr "pro Tag"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Total"
msgstr "Gesamt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Max concurrent connections (0=unlimited)"
msgstr "max. Anzahl gleichzeitiger Verbindungen (0=unbegrenzt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
msgid "New Certificate type"
msgstr "Neuer Zertifizierungstyp"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483
msgid "None"
msgstr "Keiner"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
msgid "Hashcash (effort)"
msgstr "Hashcash (Durchsatz)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "Hashcash Calc Time"
msgstr "Hashcash Berechnungszeit"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "Estimate"
msgstr "Abschätzung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
msgid "Hidden"
msgstr "Versteckt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
msgid "Signed (signed by)"
msgstr "Signiert (unterschrieben von)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Modify Certificate"
msgstr "Zertifikat modifizieren"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Modify"
msgstr "Modifizieren"
@@ -1355,3 +1350,26 @@ msgstr "Abschließen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724
msgid "Next"
msgstr "Nächstes"
#~ msgid ""
#~ "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
#~ msgstr ""
#~ "1 eingehender, 1 ausgehender Tunnel (geringe Bandbreitennutzung, weniger "
#~ "zuverlässig)"
#~ msgid ""
#~ "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
#~ msgstr ""
#~ "3 eingehende, 3 ausgehende Tunnel (hohe Bandbreitennutzung, zuverlässiger)"
#~ msgid "tunnels"
#~ msgstr "Tunnel"
#~ msgid "4 in, 4 out (high traffic server)"
#~ msgstr "4 eingehend, 4 ausgehend (Server mit großem Datenverkehr)"
#~ msgid "5 in, 5 out (high traffic server)"
#~ msgstr "5 eingehend, 5 ausgehend (Server mit großem Datenverkehr)"
#~ msgid "6 in, 6 out (high traffic server)"
#~ msgstr "6 eingehend, 6 ausgehend (Server mit großem Datenverkehr)"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-02 19:51+0000\n"
"POT-Creation-Date: 2013-07-04 16:43+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:620
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
@@ -34,95 +34,100 @@ msgid ""
"\"{1}\">here</a>."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1020
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410
msgid "Host"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1024
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1028
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
msgid "Destination"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1034
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1153
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1158
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1194
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:159
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:183
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:189
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:195
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""
@@ -131,6 +136,25 @@ msgstr ""
msgid "internal"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:404
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:408
msgid "lower bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:410
msgid "standard bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:412
msgid "higher bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr ""
@@ -443,199 +467,176 @@ msgstr ""
msgid "Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:338
msgid "Backup Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
msgid "Backup Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:343
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:365
msgid "backup tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "Profile"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "interactive connection"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
msgid "bulk connection (downloads/websites/BT)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:375
msgid "Delay Connect"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
msgid "for request/response connections"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:383
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:387
msgid "Router I2CP Address"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431
msgid "Port"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Reduce tunnel quantity when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469
msgid "Enable"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473
msgid "Reduced tunnel count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477
msgid "Idle minutes"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
msgid "Close tunnels when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423
msgid "New Keys on Reopen"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Disable"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
msgid "Delay tunnel open until required"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
msgid "Persistent private key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
msgid "File"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
msgid "Local destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
msgid "(if known)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:466
msgid "Local Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Username"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
msgid "Password"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
msgid "Outproxy Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
msgid "Jump URL List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Custom options"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699
msgid "Cancel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Delete"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:509
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "Save"
msgstr ""
@@ -671,104 +672,104 @@ msgstr ""
msgid "Hostname Signature"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
msgid "Encrypt Leaseset"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
msgid "Encryption Key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415
msgid "Generate New Key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Generate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
msgid "(Tunnel must be stopped first)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
msgid "Restricted Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Whitelist"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
msgid "Blacklist"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Inbound connection limits (0=unlimited)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
msgid "Per client"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Per minute"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Per hour"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Per day"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Total"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Max concurrent connections (0=unlimited)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
msgid "New Certificate type"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483
msgid "None"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
msgid "Hashcash (effort)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "Hashcash Calc Time"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "Estimate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
msgid "Hidden"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
msgid "Signed (signed by)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Modify Certificate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Modify"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -4,16 +4,17 @@
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# ducki2p <ducki2p@gmail.com>, 2011.
# foo <foo@bar>, 2009.
# <nekolam55@gmail.com>, 2012.
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# Boxoa590, 2013
# Boxoa590, 2012
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-28 22:31+0000\n"
"PO-Revision-Date: 2012-11-15 08:41+0000\n"
"Last-Translator: Boxoa590 <nekolam55@gmail.com>\n"
"POT-Creation-Date: 2013-07-02 17:24+0000\n"
"PO-Revision-Date: 2013-05-29 21:00+0000\n"
"Last-Translator: Boxoa590\n"
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/"
"fr/)\n"
"Language: fr\n"
@@ -22,16 +23,16 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Cela semble être une mauvaise destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
"i2paddresshelper ne peut pas vous aider avec une destination comme cela !"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
@@ -42,49 +43,49 @@ msgstr ""
"href=\"{0}\">here</a>. Pour aller à la destination de l''aide d''adresse en "
"conflit, cliquez <a href=\"{1}\">ici</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1025
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410
msgid "Host"
msgstr "Hôte"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1029
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1033
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
msgid "Destination"
msgstr "Destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Aller sur le site i2p {0} sans enregistrer dans un carnet d'adresses. "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1044
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse du routeur {0} et aller sur le site i2p"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse principal {0} et aller sur le site i2p"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1048
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse privé {0} et aller sur le site i2p"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1162
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "proxy sortant HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1167
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
@@ -92,15 +93,15 @@ msgstr ""
"utilisant un \"service de saut\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1203
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
msgstr "{0} jump service"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, fuzzy, java-format
#, java-format
msgid "Added via address helper from {0}"
msgstr "Ajouté via assitant d'adresse"
msgstr "Ajouté via assistant d''adresse depuis {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
@@ -146,6 +147,28 @@ msgstr "Cliquez ici si vous n'êtes pas redirigé automatiquement."
msgid "internal"
msgstr "interne"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:404
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:408
msgid "lower bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:410
#, fuzzy
msgid "standard bandwidth and reliability"
msgstr ""
"Tunnels à 2 entrants/2 sortants (consommation de bande passante standard, "
"fiabilité standard)"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:412
msgid "higher bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr ""
@@ -208,7 +231,7 @@ msgstr "Port invalide"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488
msgid "Warning - ports less than 1024 are not recommended"
msgstr ""
msgstr "Avertissement - les ports en dessous de 1024 ne sont pas recommandés"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504
msgid "Standard client"
@@ -469,213 +492,184 @@ msgstr "variance de saut"
msgid "Count"
msgstr "Nombre"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr ""
"Tunnel à 1 entrant/1 sortant (faible consommation de bande passante, moins "
"fiable)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr ""
"Tunnels à 2 entrants/2 sortants (consommation de bande passante standard, "
"fiabilité standard)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr ""
"Tunnels à 3 entrants/3 sortants (consommation de bande passante plus élevée, "
"fiabilité élevée)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "tunnels"
msgstr "tunnels"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:338
msgid "Backup Count"
msgstr "Secours"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
"Aucun tunnel de secours (pas de tolérance de pannes, pas de consommation de "
"ressources) "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
"1 tunnel de secours par direction (légère tolérance de pannes, faible "
"consommation de ressources)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:343
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
"2 tunnels de secours par direction (tolérance de pannes moyenne, "
"consommation de ressources moyenne)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
"3 tunnels de secours par direction (tolérance de pannes élevée, consommation "
"de ressources élevée)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:365
msgid "backup tunnels"
msgstr "Tunnels de secours"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "interactive connection"
msgstr "connexion interactive"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
msgid "bulk connection (downloads/websites/BT)"
msgstr "connexion forts transferts (téléchargements/sites web/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:375
msgid "Delay Connect"
msgstr "Retard à la connexion"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
msgid "for request/response connections"
msgstr "pour les connexions de demandes/réponses"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:383
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:387
msgid "Router I2CP Address"
msgstr "Adresse I2CP du routeur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431
msgid "Port"
msgstr "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Reduce tunnel quantity when idle"
msgstr "Réduire le nombre de tunnels quand inactif"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469
msgid "Enable"
msgstr "Activer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473
msgid "Reduced tunnel count"
msgstr "Réduire à"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477
msgid "Idle minutes"
msgstr "Minutes d'inactivité"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
msgid "Close tunnels when idle"
msgstr "Fermer les tunnels quand inactif"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423
msgid "New Keys on Reopen"
msgstr "Nouvelles clés à la réouverture"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Disable"
msgstr "Désactiver"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
msgid "Delay tunnel open until required"
msgstr "Retarder l'ouverture jusqu'à l'utilisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
msgid "Persistent private key"
msgstr "Clé privée persistante"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
msgid "File"
msgstr "Fichier"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
msgid "Local destination"
msgstr "Destination locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
msgid "(if known)"
msgstr "(si connu)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:466
msgid "Local Authorization"
msgstr "Autorisation locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Username"
msgstr "Identifiant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
msgid "Password"
msgstr "Mot de passe"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
msgid "Outproxy Authorization"
msgstr "Autorisation de mandataire sortant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
msgid "Jump URL List"
msgstr "Liste d'URL de sauts"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Custom options"
msgstr "Options personnelles"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699
msgid "Cancel"
msgstr "Annuler"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Delete"
msgstr "Supprimer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:509
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "Save"
msgstr "Enregistrer"
@@ -711,104 +705,104 @@ msgstr "Ajouter au carnet d'adresses local"
msgid "Hostname Signature"
msgstr "Signature du nom d'hôte"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
msgid "Encrypt Leaseset"
msgstr "Jeu de baux crypté"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
msgid "Encryption Key"
msgstr "Clé de cryptage"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415
msgid "Generate New Key"
msgstr "Générer une nouvelle clé"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Generate"
msgstr "Générer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
msgid "(Tunnel must be stopped first)"
msgstr "(Le tunnel doit préalablement être arrêté)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
msgid "Restricted Access List"
msgstr "Contrôle d'accès"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Whitelist"
msgstr "Liste blanche"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
msgid "Blacklist"
msgstr "Liste noire"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Access List"
msgstr "Liste d'accès"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Inbound connection limits (0=unlimited)"
msgstr "Limite de connexions entrantes (0=pas de limite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
msgid "Per client"
msgstr "Par client"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Per minute"
msgstr "Par minute"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Per hour"
msgstr "Par heure"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Per day"
msgstr "Par jour"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Total"
msgstr "Total"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Max concurrent connections (0=unlimited)"
msgstr "Connexions simultanées maximum (0=pas de limite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
msgid "New Certificate type"
msgstr "Type de nouveau certificat"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483
msgid "None"
msgstr "Aucun"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
msgid "Hashcash (effort)"
msgstr "Pénalité"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "Hashcash Calc Time"
msgstr "Durée de calcul de pénalisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "Estimate"
msgstr "Estimer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
msgid "Hidden"
msgstr "Masqué"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
msgid "Signed (signed by)"
msgstr "Signé (signé par)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Modify Certificate"
msgstr "Modifier le certificat"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Modify"
msgstr "Modifier"
@@ -986,24 +980,33 @@ msgid ""
"This wizard will take you through the various options available for creating "
"tunnels in I2P."
msgstr ""
"Cet assistant va vous guider à travers les différentes options disponibles "
"pour créer des tunnels dans I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
msgid ""
"The first thing to decide is whether you want to create a server or a client "
"tunnel."
msgstr ""
"La première chose à décider est de savoir si vous voulez créer un serveur ou "
"un tunnel client."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
msgid ""
"If you need to connect to a remote service, such as an IRC server inside I2P "
"or a code repository, then you will require a CLIENT tunnel."
msgstr ""
"Si vous avez besoin de se connecter à un service distant, comme un serveur "
"IRC intérieur I2P ou un code repository (site d'hébergement de code source), "
"alors vous aurez besoin d'un tunnel CLIENT."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
msgid ""
"On the other hand, if you wish to host a service for others to connect to "
"you'll need to create a SERVER tunnel."
msgstr ""
"D'autre part, si vous souhaitez héberger un service pour se connecter à "
"d'autres, vous aurez besoin de créer un tunnel SERVEUR."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197
msgid "Server Tunnel"
@@ -1028,10 +1031,14 @@ msgid ""
"Try this if none of the tunnel types below fit your requirements, or you "
"don't know what type of tunnel you need."
msgstr ""
"Essayez ceci si aucun des types de tunnel ci-dessous ne convient à vos "
"besoins, ou vous ne savez pas de quel type de tunnel que vous avez besoin."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P."
msgstr ""
"Tunnel qui agit comme un proxy HTTP pour atteindre des eepsites à "
"l'intérieur de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
msgid ""
@@ -1039,6 +1046,9 @@ msgid ""
"\"http_proxy\" environment variable for command-line applications in GNU/"
"Linux."
msgstr ""
"Configurer votre navigateur pour utiliser ce tunnel comme un proxy http, ou "
"définir votre variable «http_proxy» pour l'environnement de ligne de "
"commande dans les applications GNU / Linux."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
msgid ""
@@ -1057,12 +1067,16 @@ msgid ""
"With this tunnel type, your IRC client will be able to connect to an IRC "
"network inside I2P."
msgstr ""
"Avec ce type de tunnel, votre client IRC sera capable de se connecter à un "
"réseau IRC à l'intérieur de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239
msgid ""
"Each IRC network in I2P that you wish to connect to will require its own "
"tunnel. (See Also, SOCKS IRC)"
msgstr ""
"Chaque réseau IRC dans I2P que vous souhaitez connecter, va nécessiter son "
"propre tunnel (voir aussi, SOCKS IRC)."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
msgid "A tunnel that implements the SOCKS protocol."
@@ -1108,6 +1122,9 @@ msgid ""
"is known, though it depends on whether or not the outproxy has been blocked "
"by the IRC network."
msgstr ""
"Les réseaux IRC en dehors I2P peuvent également être atteints si un proxy "
"sortant SOCKS au sein de I2P est connu, mais cela dépend de si oui ou non le "
"proxy sortant a été bloqué par le réseau IRC."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
msgid "A client tunnel that implements the HTTP CONNECT command."
@@ -1118,6 +1135,8 @@ msgid ""
"This enables TCP connections to be made through an HTTP outproxy, assuming "
"the proxy supports the CONNECT command."
msgstr ""
"Cela permet que des connexions TCP puissent être faites à travers un proxy "
"sortant HTTP, en supposant que le proxy prenne en charge la commande CONNECT."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:257
msgid "A customised client tunnel for Streamr."
@@ -1142,10 +1161,14 @@ msgid ""
"A customised server tunnel that can both serve HTTP data and connect to "
"other server tunnels."
msgstr ""
"Un tunnel serveur personnalisé qui peut à la fois servir des données HTTP et "
"se connecter à d'autres serveurs tunnels."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
msgid "This tunnel type is predominantly used when running a Seedless server."
msgstr ""
"Ce type de tunnel est principalement utilisé lors de l'exécution d'un "
"serveur sans pépins (seedless)."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
msgid "A customised server tunnel for hosting IRC networks inside I2P."
@@ -1158,6 +1181,8 @@ msgid ""
"Usually, a separate tunnel needs to be created for each IRC server that is "
"to be accessible inside I2P."
msgstr ""
"Habituellement, un tunnel séparé doit être créé pour chaque serveur IRC qui "
"doit être accessible à l'intérieur de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:283
msgid "A customised server tunnel for Streamr."
@@ -1172,12 +1197,16 @@ msgid ""
"These can be anything you want - they are just for ease of identifying the "
"tunnel in the routerconsole."
msgstr ""
"Ceux-ci peuvent être tout ce que vous voulez - ils sont juste pour faciliter "
"l'identification du tunnel dans la console routeur."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
msgid ""
"If you know of any outproxies for this type of tunnel (either HTTP or "
"SOCKS), fill them in below."
msgstr ""
"Si vous connaissez des proxies sortants pour ce type de tunnel (HTTP ou "
"SOCKS), les remplir ci-dessous."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356
msgid "Separate multiple proxies with commas."
@@ -1204,6 +1233,8 @@ msgid ""
"This is the IP that your service is running on, this is usually on the same "
"machine so 127.0.0.1 is autofilled."
msgstr ""
"Ceci est l'adresse IP sur laquelle votre service est exécuté, c'est "
"généralement sur la même machine, c'est pourquoi 127.0.0.1 est pré-rempli."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429
msgid "This is the port that the service is accepting connections on."
@@ -1215,13 +1246,15 @@ msgstr "Il s'agit du port auquel le tunnel client sera accessible localement."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:452
msgid "This is also the client port for the HTTPBidir server tunnel."
msgstr ""
msgstr "C'est aussi le port du client pour le serveur tunnel HTTPBidir."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:471
msgid ""
"How do you want this tunnel to be accessed? By just this machine, your "
"entire subnet, or external internet?"
msgstr ""
"Comment voulez-vous que ce tunnel soit accessible ? Par juste cette machine, "
"votre sous-réseau entier, ou l'Internet externe?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:473
msgid "You will most likely want to just allow 127.0.0.1"
@@ -1232,6 +1265,8 @@ msgid ""
"The I2P router can automatically start this tunnel for you when the router "
"is started."
msgstr ""
"Le routeur I2P peut démarrer automatiquement ce tunnel pour vous lorsque le "
"routeur est démarré."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517
msgid ""
@@ -1239,6 +1274,10 @@ msgid ""
"but for tunnels that are only used occassionally it would mean that the I2P "
"router is creating and maintaining unnecessary tunnels."
msgstr ""
"Cela peut être utile pour les tunnels fréquemment utilisés (en particulier "
"les tunnels serveur), mais pour les tunnels qui sont seulement utilisées "
"occasionnellement, cela signifierait que le routeur I2P crée et maintien des "
"tunnels inutiles."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543
msgid "The wizard has now collected enough information to create your tunnel."
@@ -1250,12 +1289,16 @@ msgid ""
"Upon clicking the Save button below, the wizard will set up the tunnel, and "
"take you back to the main I2PTunnel page."
msgstr ""
"Après avoir cliqué sur le bouton Enregistrer ci-dessous, l'assistant va "
"configurer le tunnel et vous ramènera à la page principale I2PTunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550
msgid ""
"Because you chose to automatically start the tunnel when the router starts, "
"you don't have to do anything further."
msgstr ""
"Parce que vous avez choisi de démarrer automatiquement le tunnel lorsque le "
"routeur démarre, vous n'avez pas à aller plus loin."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552
msgid "The router will start the tunnel once it has been set up."
@@ -1274,16 +1317,20 @@ msgid ""
"You can do this by clicking the Start button on the main page which "
"corresponds to the new tunnel."
msgstr ""
"Vous pouvez le faire en cliquant sur le bouton Démarrer sur la page "
"principale qui correspond au nouveau tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:562
msgid "Below is a summary of the options you chose:"
msgstr ""
msgstr "Voici un résumé des options que vous avez choisies :"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:660
msgid ""
"Alongside these basic settings, there are a number of advanced options for "
"tunnel configuration."
msgstr ""
"Parallèlement à ces réglages de base, il ya un certain nombre d'options "
"avancées pour la configuration du tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:662
msgid ""
@@ -1291,6 +1338,9 @@ msgid ""
"can view and/or edit these by clicking on the tunnel's name in the main "
"I2PTunnel page."
msgstr ""
"L'assistant va définir des valeurs par défaut plus raisonnable pour ces "
"derniers, mais vous pouvez consulter et / ou modifier celles-ci en cliquant "
"sur le nom du tunnel dans la page principale I2PTunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704
msgid "Previous"
@@ -1307,3 +1357,27 @@ msgstr "Terminer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724
msgid "Next"
msgstr "Suivant"
#~ msgid ""
#~ "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
#~ msgstr ""
#~ "Tunnel à 1 entrant/1 sortant (faible consommation de bande passante, "
#~ "moins fiable)"
#~ msgid ""
#~ "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
#~ msgstr ""
#~ "Tunnels à 3 entrants/3 sortants (consommation de bande passante plus "
#~ "élevée, fiabilité élevée)"
#~ msgid "tunnels"
#~ msgstr "tunnels"
#~ msgid "4 in, 4 out (high traffic server)"
#~ msgstr "4 entrants, 4 sortants (serveur à traffic élevé)"
#~ msgid "5 in, 5 out (high traffic server)"
#~ msgstr "5 entrants, 5 sortants (serveur à traffic élevé)"
#~ msgid "6 in, 6 out (high traffic server)"
#~ msgstr "6 entrants, 6 sortants (serveur à traffic élevé)"

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-28 22:38+0000\n"
"POT-Creation-Date: 2013-01-17 13:10+0000\n"
"PO-Revision-Date: 2012-11-18 22:16+0000\n"
"Last-Translator: Tony Goodyear <fswitch20@hotmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/"
@@ -24,15 +24,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:558
msgid "This seems to be a bad destination:"
msgstr "Questa non sembra essere una buona destinazione:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:558
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2paddresshelper non ti può aiutare con una destinazione del genere!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:625
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
@@ -44,49 +44,49 @@ msgstr ""
"Per visitare la destinazione addresshelper in conflitto, cliccare <a href="
"\"{1}\">qui</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1025
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1029
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1029
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1033
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1033
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1037
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
msgid "Destination"
msgstr "Destinazione"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#, java-format
msgid "Continue to {0} without saving"
msgstr "Continua a {0} senza salvare"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1044
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1048
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Salva {0} nella rubrica del router e continua verso l'eepsite"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Salva {0} nella rubrica master e continua verso l'eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1048
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1052
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Salva {0} nella rubrica privata e continua verso l'eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1162
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1166
msgid "HTTP Outproxy"
msgstr "Ourproxy HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1167
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1171
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
@@ -94,7 +94,7 @@ msgstr ""
"di \"salto\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1203
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1207
#, java-format
msgid "{0} jump service"
msgstr "{0} salta al servizio"
@@ -494,187 +494,187 @@ msgstr ""
"3 tunnel in entrata, 3 tunnel in uscita (utilizzo di banda maggiore, "
"affidabilità maggiore)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370
msgid "tunnels"
msgstr "tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375
msgid "Backup Count"
msgstr "Conteggio Backup "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:382
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
"0 tunnel backup (ridondanza zero, nessun utilizzo di risorse aggiuntivo)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
"1 tunnel backup in ogni direzione (ridondanza bassa, utilizzo di risorse "
"basso)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:368
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
"2 tunnel backup in ogni direzione (ridondanza media, utilizzo di risorse "
"medio)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:394
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
"3 tunnel backup in ogni direzione (ridondanza alta, utilizzo di risorse alto)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:402
msgid "backup tunnels"
msgstr "tunnel di backup"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
msgid "Profile"
msgstr "Profilo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416
msgid "interactive connection"
msgstr "connessione interattiva"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420
msgid "bulk connection (downloads/websites/BT)"
msgstr "connessione di massa (download/siti web/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:400
msgid "Delay Connect"
msgstr "Ritarda Connessione"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
msgid "for request/response connections"
msgstr "per connessioni richiesta/risposta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424
msgid "Router I2CP Address"
msgstr "Indirizzo I2CP Router"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431
msgid "Port"
msgstr "Porta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:428
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
msgid "Reduce tunnel quantity when idle"
msgstr "Riduci la quantità di tunnel quando inattivo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:444
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:506
msgid "Enable"
msgstr "Abilita"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510
msgid "Reduced tunnel count"
msgstr "Riduci conteggio tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:458
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:514
msgid "Idle minutes"
msgstr "Minuti di inattività"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442
msgid "Close tunnels when idle"
msgstr "Chiudi i tunnel quando inattivo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:448
msgid "New Keys on Reopen"
msgstr "Nuove Chiavi alla riapertura"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:460
msgid "Disable"
msgstr "Disabilita"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:462
msgid "Delay tunnel open until required"
msgstr "Ritarda l'apertura di tunnel fino a che non è richiesta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
msgid "Persistent private key"
msgstr "Chiave privata persistente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
msgid "File"
msgstr "File"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
msgid "Local destination"
msgstr "Destinazione locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
msgid "(if known)"
msgstr "(se conosciuto)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491
msgid "Local Authorization"
msgstr "Autorizzazione Locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
msgid "Username"
msgstr "Nome Utente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511
msgid "Password"
msgstr "Password"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501
msgid "Outproxy Authorization"
msgstr "Autorizzazione Outproxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
msgid "Jump URL List"
msgstr "Lista URL salto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:550
msgid "Custom options"
msgstr "Opzioni personalizzate"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:554
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699
msgid "Cancel"
msgstr "Annulla"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:532
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:558
msgid "Delete"
msgstr "Elimina"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:534
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:560
msgid "Save"
msgstr "Salva"
@@ -710,104 +710,116 @@ msgstr "Aggiungi alla rubrica locale"
msgid "Hostname Signature"
msgstr "Firma Hostname"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353
msgid "4 in, 4 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "5 in, 5 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:361
msgid "6 in, 6 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442
msgid "Encrypt Leaseset"
msgstr "Codifica Leaseset"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:448
msgid "Encryption Key"
msgstr "Chiave cifratura"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452
msgid "Generate New Key"
msgstr "Genera nuova chiave"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454
msgid "Generate"
msgstr "Genera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:456
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:548
msgid "(Tunnel must be stopped first)"
msgstr "(Il tunnel deve prima essere fermato)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458
msgid "Restricted Access List"
msgstr "Lista di accesso ristretto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:464
msgid "Whitelist"
msgstr "Eccezioni"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468
msgid "Blacklist"
msgstr "Lista Nera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472
msgid "Access List"
msgstr "Lista di accesso"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:476
msgid "Inbound connection limits (0=unlimited)"
msgstr "Limite connessioni in ingresso (0=illimitate)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478
msgid "Per client"
msgstr "Per client"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480
msgid "Per minute"
msgstr "Per minuto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:484
msgid "Per hour"
msgstr "Per ora"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:488
msgid "Per day"
msgstr "Per giorno"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492
msgid "Total"
msgstr "Totale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:500
msgid "Max concurrent connections (0=unlimited)"
msgstr "Massimo numero di connessioni concorrenti (0=illimitate)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:518
msgid "New Certificate type"
msgstr "Nuovo tipo di certificato"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:520
msgid "None"
msgstr "Vuoto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:524
msgid "Hashcash (effort)"
msgstr "Hashcash (sforzo)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:530
msgid "Hashcash Calc Time"
msgstr "Tempo Hashcash Calc"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:532
msgid "Estimate"
msgstr "Stima"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:534
msgid "Hidden"
msgstr "Nascosto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:538
msgid "Signed (signed by)"
msgstr "Firmato (da)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:544
msgid "Modify Certificate"
msgstr "Modifica Certificato"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:546
msgid "Modify"
msgstr "Modifica"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,130 +2,141 @@
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2ptunnel package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
#
# Translators:
# <i2p@robertfoss.se>, 2013.
# <i2p@robertfoss.se>, 2012.
# Martin Svensson <digitalmannen@gmail.com>, 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2012-11-02 19:51+0000\n"
"PO-Revision-Date: 2012-12-03 15:55+0000\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-25 14:50+0000\n"
"PO-Revision-Date: 2013-01-19 16:53+0000\n"
"Last-Translator: hottuna <i2p@robertfoss.se>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/"
"language/sv_SE/)\n"
"Language: sv_SE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv_SE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
msgid "This seems to be a bad destination:"
msgstr "Detta verkar vara ett felaktigt mål"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2padresshjälp kan inte hjälpa dig med ett sådant mål!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:620
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:638
#, java-format
msgid ""
"To visit the destination in your host database, click <a "
"href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, "
"click <a href=\"{1}\">here</a>."
msgstr "För att besöka målet i din värd databas href=\"{0}\"> klicka <a här </ a>. För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a här </ a>."
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
"För att besöka målet i din värd databas href=\"{0}\"> klicka <a här </ a>. "
"För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a "
"här </ a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1020
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410
msgid "Host"
msgstr "Värd"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1024
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
msgid "Base 32"
msgstr "Bas 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1028
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
msgid "Destination"
msgstr "Mål"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1034
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#, java-format
msgid "Continue to {0} without saving"
msgstr "Fortsätt till {0} utan att spara"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Spara {0} till routeradressboken och fortsätt till eepsite "
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1064
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Spara {0} till huvudadressboken och fortsätt till eepsite "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Spara {0} till privatadressbok och fortsätt till eepsite "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1153
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1179
msgid "HTTP Outproxy"
msgstr "HTTP Utproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1158
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1184
msgid ""
"Click a link below to look for an address helper by using a \"jump\" "
"service:"
msgstr "Klicka på en länk nedan för att söka efter en hjälpaddress genom att använda en \"hopp\" tjänst"
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Klicka på en länk nedan för att söka efter en hjälpaddress genom att använda "
"en \"hopp\" tjänst"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1194
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1220
#, java-format
msgid "{0} jump service"
msgstr "{0} hopptjänst"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:159
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Tillagd via adresshjälpare från {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Tillagd via adresshjälpen "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:183
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Om dirigerar till {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:189
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Router konsol "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Adressbok"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Konfiguration"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Hjälp"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:195
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "Spara {0} till {1}adressboken, omdirigerar nu "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Misslyckades med att spara {0} till {1}adressboken, omdirigerar nu "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Klicka här om du inte omdirigeras automatiskt "
@@ -142,13 +153,16 @@ msgstr "Tunnlar är inte startade än, var god ladda om sidan om två minuter."
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr "Ogiltigt formulärbegäran, beror troligtvis på attt du använde 'tillbaka' eller 'uppdatera' knappen. Försök att skicka igen"
msgstr ""
"Ogiltigt formulärbegäran, beror troligtvis på attt du använde 'tillbaka' "
"eller 'uppdatera' knappen. Försök att skicka igen"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194
msgid ""
"If the problem persists, verify that you have cookies enabled in your "
"browser."
msgstr "Om problem kvartstår, bekräfta att du har cookies påslaget i din browser."
msgstr ""
"Om problem kvartstår, bekräfta att du har cookies påslaget i din browser."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:240
msgid "Configuration reloaded for all tunnels"
@@ -339,7 +353,9 @@ msgstr "Delad klient"
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(Dela tunnlarna med andra klienter och irc/HTTP-klienter? Ändring kräver omstart av klientproxyn)"
msgstr ""
"(Dela tunnlarna med andra klienter och irc/HTTP-klienter? Ändring kräver "
"omstart av klientproxyn)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
@@ -367,7 +383,9 @@ msgstr "Avancerade nätverks instälningar"
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr "(OBS: när denna klientproxyn är konfigurerad för att dela tunnlar, då gäller dessa alternativ för alla delade proxyklienter!)"
msgstr ""
"(OBS: när denna klientproxyn är konfigurerad för att dela tunnlar, då gäller "
"dessa alternativ för alla delade proxyklienter!)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:261
@@ -449,196 +467,206 @@ msgstr "Antal"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr "1 inkommande, 1 utgående tunnlar (låg bandbreddsanvändning, låg tillförlitlighet)"
msgstr ""
"1 inkommande, 1 utgående tunnlar (låg bandbreddsanvändning, låg "
"tillförlitlighet)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr "2 inkommande, 2 utgående tunnlar (normal bandbreddsanvändning, normal tillförlitlighet)"
msgstr ""
"2 inkommande, 2 utgående tunnlar (normal bandbreddsanvändning, normal "
"tillförlitlighet)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr "3 inkommande, 3 utgående tunnlar (Högre bandbreddsanvändning, högre tillförlitlighet)"
msgstr ""
"3 inkommande, 3 utgående tunnlar (Högre bandbreddsanvändning, högre "
"tillförlitlighet)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370
msgid "tunnels"
msgstr "tunnlar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375
msgid "Backup Count"
msgstr "Antal reserver"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:382
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr "0 reserv tunnlar i varje riktning (ingen redundans, ingen resursanvändning)"
msgstr ""
"0 reserv tunnlar i varje riktning (ingen redundans, ingen resursanvändning)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr "1 reserv tunnel i varje riktning (låg redundans, låg resursanvändning)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:368
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr "2 reserv tunnlar i varje riktning (medel hög redundans, medel hög resursanvändning)"
msgstr ""
"2 reserv tunnlar i varje riktning (medel hög redundans, medel hög "
"resursanvändning)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:394
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr "3 reserv tunnlar i varje riktning (hög redundans, hög resursanvändning)"
msgstr ""
"3 reserv tunnlar i varje riktning (hög redundans, hög resursanvändning)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:402
msgid "backup tunnels"
msgstr "reserv tunnlar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416
msgid "interactive connection"
msgstr "interaktiv anslutning"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420
msgid "bulk connection (downloads/websites/BT)"
msgstr "bulk-anslutning (hämtningar/webbplatser/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:400
msgid "Delay Connect"
msgstr "Fördröj anslutning"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
msgid "for request/response connections"
msgstr "för förfrågan/svar-anslutningar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424
msgid "Router I2CP Address"
msgstr "I2CP Routeradress"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431
msgid "Port"
msgstr "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:428
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
msgid "Reduce tunnel quantity when idle"
msgstr "Minska kvantitetn på tunnel vid inaktivitet"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:444
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:506
msgid "Enable"
msgstr "Aktivera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510
msgid "Reduced tunnel count"
msgstr "Minska antal tunnlar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:458
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:514
msgid "Idle minutes"
msgstr "Inaktiv i minuter"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442
msgid "Close tunnels when idle"
msgstr "Stäng tunnlar vid inaktivitet"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:448
msgid "New Keys on Reopen"
msgstr "Nya nycklar vid återöppnade"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:460
msgid "Disable"
msgstr "Inaktivera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:462
msgid "Delay tunnel open until required"
msgstr "Avvakta med att öppna tunnlar tills de behövs"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
msgid "Persistent private key"
msgstr "Beständig privat nyckel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
msgid "File"
msgstr "Fil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
msgid "Local destination"
msgstr "Lokalt mål"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
msgid "(if known)"
msgstr "(om känd)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491
msgid "Local Authorization"
msgstr "Lokala tillstånd"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
msgid "Username"
msgstr "Användarnamn"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511
msgid "Password"
msgstr "Lösenord"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501
msgid "Outproxy Authorization"
msgstr "Tillstånd för utproxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
msgid "Jump URL List"
msgstr "Hopp lista för URLer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:550
msgid "Custom options"
msgstr "Anpassade alternativ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:554
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699
msgid "Cancel"
msgstr "Avbryt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:532
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:558
msgid "Delete"
msgstr "Radera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:534
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:560
msgid "Save"
msgstr "Spara"
@@ -674,104 +702,116 @@ msgstr "Lägg till i den lokala adressboken"
msgid "Hostname Signature"
msgstr "Värddatornamnets signatur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353
msgid "4 in, 4 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357
msgid "5 in, 5 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:361
msgid "6 in, 6 out (high traffic server)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442
msgid "Encrypt Leaseset"
msgstr "Kryptera Leaseset"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:448
msgid "Encryption Key"
msgstr "Krypteringsnyckel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452
msgid "Generate New Key"
msgstr "Skapa ny nyckel "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454
msgid "Generate"
msgstr "Skapa"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:456
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:548
msgid "(Tunnel must be stopped first)"
msgstr "(Tunneln måste stoppas först)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458
msgid "Restricted Access List"
msgstr "Begränsad åtkomst lista"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:464
msgid "Whitelist"
msgstr "Lista över tillåtna"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468
msgid "Blacklist"
msgstr "Svartlista"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472
msgid "Access List"
msgstr "Åtkomstlista"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:476
msgid "Inbound connection limits (0=unlimited)"
msgstr "Begränsning av inkommande anslutningar (0 = obegränsat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478
msgid "Per client"
msgstr "Per klient"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480
msgid "Per minute"
msgstr "Per minut"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:484
msgid "Per hour"
msgstr "Per timme"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:488
msgid "Per day"
msgstr "Per dag"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492
msgid "Total"
msgstr "Totalt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:500
msgid "Max concurrent connections (0=unlimited)"
msgstr "Maximalt antal samtidiga anslutningar (0 = obegränsat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:518
msgid "New Certificate type"
msgstr "Ny certifikatet typ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:520
msgid "None"
msgstr "Ingen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:524
msgid "Hashcash (effort)"
msgstr "Hashcash (förmåga)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:530
msgid "Hashcash Calc Time"
msgstr "Beräknings tid för Hashcash "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:532
msgid "Estimate"
msgstr "Uppsaktta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:534
msgid "Hidden"
msgstr "Dold"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:538
msgid "Signed (signed by)"
msgstr "Undertecknad (undertecknat av)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:544
msgid "Modify Certificate"
msgstr "Ändra Certifikat"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:546
msgid "Modify"
msgstr "Ändra"
@@ -945,27 +985,33 @@ msgstr "Guiden färdig "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189
msgid ""
"This wizard will take you through the various options available for creating"
" tunnels in I2P."
msgstr "Guiden tar dig igenom de olika inställningsmöjligheterna för att skapa tunnlar."
"This wizard will take you through the various options available for creating "
"tunnels in I2P."
msgstr ""
"Guiden tar dig igenom de olika inställningsmöjligheterna för att skapa "
"tunnlar."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
msgid ""
"The first thing to decide is whether you want to create a server or a client"
" tunnel."
msgstr "Det första är att bestämma om det skall vara en server- eller klient-tunnel. "
"The first thing to decide is whether you want to create a server or a client "
"tunnel."
msgstr ""
"Det första är att bestämma om det skall vara en server- eller klient-tunnel. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
msgid ""
"If you need to connect to a remote service, such as an IRC server inside I2P"
" or a code repository, then you will require a CLIENT tunnel."
msgstr "Om du ansluter till en fjärrtjänst så som tex en IRC-server inom I2P, behövs en KLIENT-tunnel. "
"If you need to connect to a remote service, such as an IRC server inside I2P "
"or a code repository, then you will require a CLIENT tunnel."
msgstr ""
"Om du ansluter till en fjärrtjänst så som tex en IRC-server inom I2P, behövs "
"en KLIENT-tunnel. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
msgid ""
"On the other hand, if you wish to host a service for others to connect to "
"you'll need to create a SERVER tunnel."
msgstr "Men om du vill göra en tjänst tillgänglig för andra behövs en SERVER-tunnel."
msgstr ""
"Men om du vill göra en tjänst tillgänglig för andra behövs en SERVER-tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197
msgid "Server Tunnel"
@@ -981,25 +1027,32 @@ msgstr "Det finns flera typer av tunnlar att välja på:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225
msgid "Basic tunnel for connecting to a single service inside I2P."
msgstr "Grundläggande tunnel för anslutning till en snigel tjänst innanför I2P. "
msgstr ""
"Grundläggande tunnel för anslutning till en snigel tjänst innanför I2P. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269
msgid ""
"Try this if none of the tunnel types below fit your requirements, or you "
"don't know what type of tunnel you need."
msgstr "Prova detta om ingen av valen passar eller du inte vet vilken typ av tunnel som behövs."
msgstr ""
"Prova detta om ingen av valen passar eller du inte vet vilken typ av tunnel "
"som behövs."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P."
msgstr "Tunneln agerar som en HTTP-proxy för att komma åt eepsites innanför I2P. "
msgstr ""
"Tunneln agerar som en HTTP-proxy för att komma åt eepsites innanför I2P. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
msgid ""
"Set your browser to use this tunnel as an http proxy, or set your "
"\"http_proxy\" environment variable for command-line applications in "
"GNU/Linux."
msgstr "Peka din webbläsare på denna tunnel som en http-proxy eller ställ in miljövariabeln \"http_proxy\" för terminal baserade applikationer i GNU/Linux."
"\"http_proxy\" environment variable for command-line applications in GNU/"
"Linux."
msgstr ""
"Peka din webbläsare på denna tunnel som en http-proxy eller ställ in "
"miljövariabeln \"http_proxy\" för terminal baserade applikationer i GNU/"
"Linux."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
msgid ""
@@ -1021,7 +1074,9 @@ msgstr "Med denna tunneltyp kan IRC-klienter ansluta till IRC-nät inom I2P "
msgid ""
"Each IRC network in I2P that you wish to connect to will require its own "
"tunnel. (See Also, SOCKS IRC)"
msgstr "Varje IRC-nät inom I2P som du vill ansluta till kräver en egen tunnel (Se även: SOCKS IRC) "
msgstr ""
"Varje IRC-nät inom I2P som du vill ansluta till kräver en egen tunnel (Se "
"även: SOCKS IRC) "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
msgid "A tunnel that implements the SOCKS protocol."
@@ -1031,7 +1086,9 @@ msgstr "En tunnel som implementerar SOCKS protokollet."
msgid ""
"This enables both TCP and UDP connections to be made through a SOCKS "
"outproxy within I2P."
msgstr "Detta möjliggör både TCP och UDP anslutningar genom SOCKS utgående-proxy innanför I2P "
msgstr ""
"Detta möjliggör både TCP och UDP anslutningar genom SOCKS utgående-proxy "
"innanför I2P "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245
msgid ""
@@ -1044,20 +1101,27 @@ msgid ""
"With this tunnel type, IRC networks in I2P can be reached by typing the I2P "
"address into your IRC client, and configuring the IRC client to use this "
"SOCKS tunnel."
msgstr "Med denna tunnel typen kan IRC-nät inom I2P nås genom att skriva in I2P adressen i IRC-klienten och konfigurera IRC-klienten att använda denna SOCKS-tunneln."
msgstr ""
"Med denna tunnel typen kan IRC-nät inom I2P nås genom att skriva in I2P "
"adressen i IRC-klienten och konfigurera IRC-klienten att använda denna SOCKS-"
"tunneln."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249
msgid ""
"This means that only one I2P tunnel is required rather than a separate "
"tunnel per IRC network."
msgstr "Detta innebär att enbart en I2P-tunnel behövs istället för en tunnel per IRC-nät."
msgstr ""
"Detta innebär att enbart en I2P-tunnel behövs istället för en tunnel per IRC-"
"nät."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251
msgid ""
"IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P "
"is known, though it depends on whether or not the outproxy has been blocked "
"by the IRC network."
msgstr "IRC-nät utanför I2P kan nås om en SOCKS-proxy innanför I2P är känd, men det bror på om utgående-proxy har blockerats av IRC-nätet."
msgstr ""
"IRC-nät utanför I2P kan nås om en SOCKS-proxy innanför I2P är känd, men det "
"bror på om utgående-proxy har blockerats av IRC-nätet."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
msgid "A client tunnel that implements the HTTP CONNECT command."
@@ -1067,7 +1131,9 @@ msgstr "En klient-tunnel som implementerar HTTP CONNECT kommandot. "
msgid ""
"This enables TCP connections to be made through an HTTP outproxy, assuming "
"the proxy supports the CONNECT command."
msgstr "Detta möjliggör TCP anslutningar genom en HTTP utgående-proxy om proxyn stödjer CONNECT kommandot"
msgstr ""
"Detta möjliggör TCP anslutningar genom en HTTP utgående-proxy om proxyn "
"stödjer CONNECT kommandot"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:257
msgid "A customised client tunnel for Streamr."
@@ -1089,7 +1155,9 @@ msgstr "Använd denna denna typ av tunnel om du vill köra en eepsite."
msgid ""
"A customised server tunnel that can both serve HTTP data and connect to "
"other server tunnels."
msgstr "En anpassad server tunnel som hanterar både HTTP data och anslutningar till andra server-tunnlar."
msgstr ""
"En anpassad server tunnel som hanterar både HTTP data och anslutningar till "
"andra server-tunnlar."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
msgid "This tunnel type is predominantly used when running a Seedless server."
@@ -1103,7 +1171,9 @@ msgstr "En server-tunnel för IRC-Nät innanför I2P."
msgid ""
"Usually, a separate tunnel needs to be created for each IRC server that is "
"to be accessible inside I2P."
msgstr "Vanligtvis behövs en separat tunnel för varje IRC-server som skall anslutas till innanför I2P."
msgstr ""
"Vanligtvis behövs en separat tunnel för varje IRC-server som skall anslutas "
"till innanför I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:283
msgid "A customised server tunnel for Streamr."
@@ -1117,13 +1187,17 @@ msgstr "Välj namn och beskrivning av tunneln."
msgid ""
"These can be anything you want - they are just for ease of identifying the "
"tunnel in the routerconsole."
msgstr "Kan vad som helst, används enbart för att enkelt identifiera tunneln i routerkonsolen "
msgstr ""
"Kan vad som helst, används enbart för att enkelt identifiera tunneln i "
"routerkonsolen "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
msgid ""
"If you know of any outproxies for this type of tunnel (either HTTP or "
"SOCKS), fill them in below."
msgstr "Om du känner till några utgående proxies för denna typen av tunnlar (HTTP eller SOCKS), fyll i dem nedan. "
msgstr ""
"Om du känner till några utgående proxies för denna typen av tunnlar (HTTP "
"eller SOCKS), fyll i dem nedan. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356
msgid "Separate multiple proxies with commas."
@@ -1145,7 +1219,9 @@ msgstr "Kan vara hela base 64 målsnyckeln eller en I2P URL från adressboken."
msgid ""
"This is the IP that your service is running on, this is usually on the same "
"machine so 127.0.0.1 is autofilled."
msgstr "Detta är IP-adressen som tjänsten körs på, detta är vanligtvis på samma maskin så 127.0.0.1 fylls i automatiskt. "
msgstr ""
"Detta är IP-adressen som tjänsten körs på, detta är vanligtvis på samma "
"maskin så 127.0.0.1 fylls i automatiskt. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429
msgid "This is the port that the service is accepting connections on."
@@ -1163,7 +1239,9 @@ msgstr "Detta är också en klient-port för HTTPBidir server-tunneln."
msgid ""
"How do you want this tunnel to be accessed? By just this machine, your "
"entire subnet, or external internet?"
msgstr "Hur du vill att tunneln ska nås? Enbart denna maskinen, ditt lokala nät eller hela internet? "
msgstr ""
"Hur du vill att tunneln ska nås? Enbart denna maskinen, ditt lokala nät "
"eller hela internet? "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:473
msgid "You will most likely want to just allow 127.0.0.1"
@@ -1180,7 +1258,10 @@ msgid ""
"This can be useful for frequently-used tunnels (especially server tunnels), "
"but for tunnels that are only used occassionally it would mean that the I2P "
"router is creating and maintaining unnecessary tunnels."
msgstr "Detta kan vara användbart för tunnlar som används ofta (tex server-tunnlar) men för tunnlar som används sällan innebär det att onödiga tunnlar upprättas. "
msgstr ""
"Detta kan vara användbart för tunnlar som används ofta (tex server-tunnlar) "
"men för tunnlar som används sällan innebär det att onödiga tunnlar "
"upprättas. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543
msgid "The wizard has now collected enough information to create your tunnel."
@@ -1190,13 +1271,17 @@ msgstr "Guiden hat samlat tillräckligt med information för att skapa tunneln.
msgid ""
"Upon clicking the Save button below, the wizard will set up the tunnel, and "
"take you back to the main I2PTunnel page."
msgstr "När du klickar på \"spara\" kommer guiden att skapa tunneln och sedan ta dig till sidan för tunnlar."
msgstr ""
"När du klickar på \"spara\" kommer guiden att skapa tunneln och sedan ta dig "
"till sidan för tunnlar."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550
msgid ""
"Because you chose to automatically start the tunnel when the router starts, "
"you don't have to do anything further."
msgstr "Efter som du valt att starta tunneln samtidigt som routern startas behövs inget mer göras. "
msgstr ""
"Efter som du valt att starta tunneln samtidigt som routern startas behövs "
"inget mer göras. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552
msgid "The router will start the tunnel once it has been set up."
@@ -1206,7 +1291,9 @@ msgstr "Routern starta tunneln när den skapats. "
msgid ""
"Because you chose not to automatically start the tunnel, you will have to "
"manually start it."
msgstr "Efter som du valt att inte starta tunneln samtidigt som routern startas, behövs den startas manuellt."
msgstr ""
"Efter som du valt att inte starta tunneln samtidigt som routern startas, "
"behövs den startas manuellt."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558
msgid ""
@@ -1222,14 +1309,18 @@ msgstr "Nedan är en sammanfattning över valen du kan göra:"
msgid ""
"Alongside these basic settings, there are a number of advanced options for "
"tunnel configuration."
msgstr "Vid sidan om dessa grundägande inställningar finns att par avancerade val för tunneln. "
msgstr ""
"Vid sidan om dessa grundägande inställningar finns att par avancerade val "
"för tunneln. "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:662
msgid ""
"The wizard will set reasonably sensible default values for these, but you "
"can view and/or edit these by clicking on the tunnel's name in the main "
"I2PTunnel page."
msgstr "Guiden väljer lämpliga värden för dessa. Men du kan ändra/se värdena på huvudsidan för I2P-tunnlar."
msgstr ""
"Guiden väljer lämpliga värden för dessa. Men du kan ändra/se värdena på "
"huvudsidan för I2P-tunnlar."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704
msgid "Previous"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
jetty-distribution-xxx is only what we need out of jetty-distribution-xxx.zip.
NOTICE and LICENSE files moved to ../../../licenses

View File

@@ -1,5 +1,5 @@
Apache Tomcat
Copyright 1999-2011 The Apache Software Foundation
Copyright 1999-2013 The Apache Software Foundation
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).

View File

@@ -2,7 +2,7 @@ This is Apache Tomcat 6.x, supporting Servlet 2.5 and JSP 2.1.
The Glassfish JSP 2.1 bundled in Jetty 6 is way too old.
Retrieved from the file
apache-tomcat-6.0.35-deployer.tar.gz
apache-tomcat-6.0.36-deployer.tar.gz
minus the following files and directores:

View File

@@ -1,27 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="all" name="jetty">
<property name="jetty.ver" value="6.1.26" />
<property name="jetty.base" value="jetty-${jetty.ver}" />
<property name="jetty.sha1" value="9485913f1a1945a849a90f1a34853d22350bc524" />
<property name="jetty.ver" value="7.6.11.v20130520" />
<property name="jetty.base" value="jetty-distribution-${jetty.ver}" />
<property name="jetty.sha1" value="d32ee389ed711a0655de0432810b75b57ad3e500" />
<property name="jetty.filename" value="${jetty.base}.zip" />
<property name="jetty.url" value="http://dist.codehaus.org/jetty/${jetty.base}/${jetty.filename}" />
<property name="jetty.url" value="http://download.eclipse.org/jetty/${jetty.ver}/dist/${jetty.filename}" />
<property name="verified.filename" value="verified.txt" />
<property name="javac.compilerargs" value="" />
<property name="tomcat.lib" value="apache-tomcat-deployer/lib" />
<target name="all" depends="build" />
<!--
<!--
- We now check in the jars we need to ${jetty.base}, so
- fetchJettylib, verifyJettylib, and extractJettylib are not used unless
- updating to a new Jetty version by changing ${jetty.ver} and ${jetty.sha1} above.
-->
<target name="ensureJettylib" >
<available property="jetty.zip.available" file="${jetty.filename}" type="file" />
<available property="jetty.zip.extracted" file="jettylib" type="dir" />
<ant target="fetchJettylib" />
<ant target="verifyJettylib" />
<ant target="extractJettylib" />
<available property="jetty.zip.extracted" file="${jetty.base}" type="dir" />
<condition property="jetty.zip.available" >
<or>
<istrue value="${jetty.zip.extracted}" />
<available file="${jetty.filename}" type="file" />
</or>
</condition>
<ant target="copyJettylib" />
</target>
-->
<!--
<target name="ensureJettylib" depends="extractJettylib" />
-->
<target name="fetchJettylib" unless="jetty.zip.available" >
<echo message="It seems that you don't have '${jetty.filename}' deployed." />
@@ -48,13 +57,16 @@
</target>
<condition property="verified.already" >
<and>
<available file="${jetty.filename}" />
<uptodate property="foo.bar.baz" srcfile="${jetty.filename}" targetfile="${verified.filename}" />
</and>
<or>
<istrue value="${jetty.zip.extracted}" />
<and>
<available file="${jetty.filename}" />
<uptodate property="foo.bar.baz" srcfile="${jetty.filename}" targetfile="${verified.filename}" />
</and>
</or>
</condition>
<target name="verifyJettylib" unless="verified.already" >
<target name="verifyJettylib" depends="fetchJettylib" unless="verified.already" >
<condition property="jetty.zip.verified" >
<checksum file="${jetty.filename}" algorithm="SHA" property="${jetty.sha1}" />
</condition>
@@ -68,43 +80,61 @@
<touch file="${verified.filename}" />
</target>
<!--
<target name="extractJettylib" unless="jetty.zip.extracted" >
-->
<target name="extractJettylib" >
<target name="extractJettylib" depends="verifyJettylib" unless="jetty.zip.extracted" >
<!-- for .tgz -->
<!--
<gunzip src="${jetty.filename}" dest="jetty.tar" />
<untar src="jetty.tar" dest="." />
-->
<!-- for .zip -->
<!--
<unzip src="${jetty.filename}" dest="." />
-->
</target>
<target name="copyJettylib" depends="extractJettylib" >
<mkdir dir="jettylib" />
<!-- We copy everything to names without the version numbers so we
can update them later. Where there was something similar in Jetty 5,
we use the same names so they will overwrite the Jetty 5 jar on upgrade.
can update them later. Where there was something similar in Jetty 5/6,
we use the same names so they will overwrite the Jetty 5/6 jar on upgrade.
Otherwise we use the same name as the symlink in Ubuntu /usr/share/java.
Reasons for inclusion:
start.jar: Needed for clients.config startup of eepsites
jetty-util-xxx.jar: LifeCycle (base class for stuff), URIUtil (used in i2psnark)
jetty-sslengine-xxx.jar: SSL NIO Connector for console
jetty-java5-threadpool-xxx.jar: Concurrent thread pool for eepsite
jetty-deploy, -http, -io, -security, -servlet, -webapp: All split out from main server jar in Jetty 7
jetty-continuation-xxx.jar: Needed? Useful?
jetty-servlets-xxx.jar: Needed for CGI for eepsite
jetty-sslengine-xxx.jar: Old Jetty 6, now a dummy
jetty-java5-threadpool-xxx.jar: Old Jetty 6, now a dummy
glassfish 2.1: Not used, too old, see Tomcat below.
jetty-rewrite-handler: Not used by I2P, but only 20KB and could be useful for eepsites
jetty-management: Not used by I2P, but only 34KB and could be useful for eepsites, and we bundled it with Jetty 5
All of these are available in the Ubuntu packages libjetty-java and libjetty-extra-java
-->
<copy preservelastmodified="true" file="${jetty.base}/start.jar" tofile="jettylib/jetty-start.jar" />
<copy file="${jetty.base}/lib/${jetty.base}.jar" tofile="jettylib/org.mortbay.jetty.jar" />
<copy file="${jetty.base}/lib/jetty-server-${jetty.ver}.jar" tofile="jettylib/org.mortbay.jetty.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-continuation-${jetty.ver}.jar" tofile="jettylib/jetty-continuation.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-deploy-${jetty.ver}.jar" tofile="jettylib/jetty-deploy.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-http-${jetty.ver}.jar" tofile="jettylib/jetty-http.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-io-${jetty.ver}.jar" tofile="jettylib/jetty-io.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-jmx-${jetty.ver}.jar" tofile="jettylib/org.mortbay.jmx.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-rewrite-${jetty.ver}.jar" tofile="jettylib/jetty-rewrite-handler.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-security-${jetty.ver}.jar" tofile="jettylib/jetty-security.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-servlet-${jetty.ver}.jar" tofile="jettylib/jetty-servlet.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-servlets-${jetty.ver}.jar" tofile="jettylib/jetty-servlets.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-util-${jetty.ver}.jar" tofile="jettylib/jetty-util.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/ext/jetty-java5-threadpool-${jetty.ver}.jar" tofile="jettylib/jetty-java5-threadpool.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/ext/jetty-rewrite-handler-${jetty.ver}.jar" tofile="jettylib/jetty-rewrite-handler.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/ext/jetty-sslengine-${jetty.ver}.jar" tofile="jettylib/jetty-sslengine.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/management/jetty-management-${jetty.ver}.jar" tofile="jettylib/org.mortbay.jmx.jar" />
<delete file="jetty.tar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-webapp-${jetty.ver}.jar" tofile="jettylib/jetty-webapp.jar" />
<copy preservelastmodified="true" file="${jetty.base}/lib/jetty-xml-${jetty.ver}.jar" tofile="jettylib/jetty-xml.jar" />
<jar destfile="jettylib/jetty-java5-threadpool.jar" >
<manifest>
<attribute name="Note" value="Intentionally empty" />
</manifest>
</jar>
<jar destfile="jettylib/jetty-sslengine.jar" >
<manifest>
<attribute name="Note" value="Intentionally empty" />
</manifest>
</jar>
<!--
<delete file="jetty.tar" />
<delete dir="${jetty.base}" />
-->
<!-- commons-logging.jar not in Jetty 6 but we have it in launch4j so copy it over,
@@ -155,15 +185,39 @@
<target name="build" depends="jar" />
<target name="builddep" />
<target name="compile" depends="builddep, ensureJettylib" >
<condition property="depend.available">
<typefound name="depend" />
</condition>
<target name="depend" if="depend.available">
<depend
cache="../../build"
srcdir="./java/src"
destdir="./build/obj" >
<classpath>
<pathelement location="../../../core/java/build/i2p.jar" />
<pathelement location="./jettylib/commons-logging.jar" />
<pathelement location="./jettylib/org.mortbay.jetty.jar" />
<pathelement location="./jettylib/javax.servlet.jar" />
<pathelement location="./jettylib/jetty-http.jar" />
<pathelement location="./jettylib/jetty-io.jar" />
<pathelement location="./jettylib/jetty-security.jar" />
<pathelement location="./jettylib/jetty-util.jar" />
<pathelement location="./jettylib/jetty-xml.jar" />
</classpath>
</depend>
</target>
<target name="compile" depends="builddep, ensureJettylib, depend" >
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<javac
srcdir="./java/src"
debug="true" source="1.5" target="1.5"
debug="true" deprecation="on" source="1.5" target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
classpath="../../core/java/build/i2p.jar:./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar:./jettylib/jetty-util.jar" >
classpath="../../core/java/build/i2p.jar:./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar:./jettylib/jetty-http.jar:./jettylib/jetty-io.jar:./jettylib/jetty-security.jar:./jettylib/jetty-util.jar:./jettylib/jetty-xml.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
@@ -196,6 +250,8 @@
<attribute name="Built-By" value="${build.built-by}" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<!-- needed by JettyStart for pre-0.7.5 wrapper.config -->
<attribute name="Class-Path" value="jetty-deploy.jar jetty-xml.jar" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>

View File

@@ -17,13 +17,13 @@ package net.i2p.jetty;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
import org.mortbay.jetty.Server;
import org.mortbay.log.Logger;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.log.Logger;
/**
* Modified from Jetty 6.1.26 StdErrLog.java and Slf4jLog.java
*
* Usage: org.mortbay.log.Log.setLog(new I2PLogger(ctx));
* Usage: org.eclipse.log.Log.setLog(new I2PLogger(ctx));
*
* @since Jetty 6
*/
@@ -182,5 +182,80 @@ public class I2PLogger implements Logger
return "I2PLogger";
}
/**
* @since Jetty 7
*/
public void ignore(Throwable ignored)
{
debug("IGNORED", ignored);
}
/**
* @since Jetty 7
*/
public void debug(Throwable thrown)
{
debug("", thrown);
}
/**
* @since Jetty 7
*/
public void debug(String msg, Object... args)
{
Object a1 = args.length > 0 ? args[0] : null;
Object a2 = args.length > 1 ? args[1] : null;
debug(msg, a1, a2);
}
/**
* @since Jetty 7
*/
public void info(Throwable thrown)
{
info("", thrown);
}
/**
* @since Jetty 7
*/
public void info(String msg, Object... args)
{
Object a1 = args.length > 0 ? args[0] : null;
Object a2 = args.length > 1 ? args[1] : null;
info(msg, a1, a2);
}
/**
* @since Jetty 7
*/
public void info(String msg, Throwable th)
{
_log.info(msg,th);
}
/**
* @since Jetty 7
*/
public void warn(Throwable thrown)
{
warn("", thrown);
}
/**
* @since Jetty 7
*/
public void warn(String msg, Object... args)
{
Object a1 = args.length > 0 ? args[0] : null;
Object a2 = args.length > 1 ? args[1] : null;
warn(msg, a1, a2);
}
/**
* @since Jetty 7
*/
public String getName() {
return "net.i2p.jetty.I2PLogger";
}
}

View File

@@ -24,18 +24,18 @@ import java.util.TimeZone;
import javax.servlet.http.Cookie;
import org.mortbay.component.AbstractLifeCycle;
import org.mortbay.jetty.HttpHeaders;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.RequestLog;
import org.mortbay.jetty.Response;
import org.mortbay.jetty.servlet.PathMap;
import org.mortbay.log.Log;
import org.mortbay.util.DateCache;
import org.mortbay.util.RolloverFileOutputStream;
import org.mortbay.util.StringUtil;
import org.mortbay.util.TypeUtil;
import org.mortbay.util.Utf8StringBuffer;
import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.PathMap;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.RequestLog;
import org.eclipse.jetty.server.Response;
import org.eclipse.jetty.util.DateCache;
import org.eclipse.jetty.util.RolloverFileOutputStream;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.Utf8StringBuilder;
import org.eclipse.jetty.util.component.AbstractLifeCycle;
import org.eclipse.jetty.util.log.Log;
/**
* This {@link RequestLog} implementation outputs logs in the pseudo-standard NCSA common log format.
@@ -56,8 +56,6 @@ import org.mortbay.util.Utf8StringBuffer;
*
* So that we will work with system Jetty 6 packages, we just copy the whole thing
* and modify log() as required.
* We leave the package as org.mortbay.http for compatibility with old
* jetty.xml files.
*
* @author Greg Wilkins
* @author Nigel Canonizado
@@ -259,13 +257,13 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
if (_fileOut == null)
return;
Utf8StringBuffer u8buf;
StringBuffer buf;
Utf8StringBuilder u8buf;
StringBuilder buf;
synchronized(_writer)
{
int size=_buffers.size();
u8buf = size==0?new Utf8StringBuffer(160):(Utf8StringBuffer)_buffers.remove(size-1);
buf = u8buf.getStringBuffer();
u8buf = size==0?new Utf8StringBuilder(160):(Utf8StringBuilder)_buffers.remove(size-1);
buf = u8buf.getStringBuilder();
}
synchronized(buf) // for efficiency until we can use StringBuilder
@@ -398,7 +396,7 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
if (_logLatency)
{
_writer.write(' ');
_writer.write(TypeUtil.toString(System.currentTimeMillis() - request.getTimeStamp()));
_writer.write(Long.toString(System.currentTimeMillis() - request.getTimeStamp()));
}
_writer.write(StringUtil.__LINE_SEPARATOR);

View File

@@ -19,15 +19,16 @@ package net.i2p.jetty;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.app.*;
import static net.i2p.app.ClientAppState.*;
import org.mortbay.component.LifeCycle;
import org.mortbay.resource.Resource;
import org.mortbay.xml.XmlConfiguration;
import org.eclipse.jetty.util.component.LifeCycle;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.xml.XmlConfiguration;
/**
* Start Jetty where the args are one or more XML files.
@@ -40,7 +41,6 @@ import org.mortbay.xml.XmlConfiguration;
*/
public class JettyStart implements ClientApp {
private final I2PAppContext _context;
private final ClientAppManager _mgr;
private final String[] _args;
private final List<LifeCycle> _jettys;
@@ -49,10 +49,12 @@ public class JettyStart implements ClientApp {
/**
* All args must be XML file names.
* Does not support any of the other argument types from org.mortbay.start.Main.
*
* @param context unused, may be null
* @param mgr may be null e.g. for use in plugins
*/
public JettyStart(I2PAppContext context, ClientAppManager mgr, String[] args) throws Exception {
_state = UNINITIALIZED;
_context = context;
_mgr = mgr;
_args = args;
_jettys = new ArrayList(args.length);
@@ -73,8 +75,11 @@ public class JettyStart implements ClientApp {
XmlConfiguration configuration = new XmlConfiguration(Resource.newResource(args[i]).getURL());
if (last!=null)
configuration.getIdMap().putAll(last.getIdMap());
if (properties.size()>0)
configuration.setProperties(properties);
if (properties.size()>0) {
// to avoid compiler errror
Map foo = configuration.getProperties();
foo.putAll(properties);
}
Object o = configuration.configure();
if (o instanceof LifeCycle)
_jettys.add((LifeCycle)o);
@@ -96,13 +101,13 @@ public class JettyStart implements ClientApp {
private class Starter extends Thread {
public Starter() {
super("JettyStarter");
changeState(STARTING);
}
/**
* Modified from XmlConfiguration.main()
*/
public void run() {
changeState(STARTING);
for (LifeCycle lc : _jettys) {
if (!lc.isRunning()) {
try {
@@ -114,10 +119,12 @@ public class JettyStart implements ClientApp {
}
}
changeState(RUNNING);
if (_mgr != null)
_mgr.register(JettyStart.this);
}
}
public void shutdown(String[] args) {
public synchronized void shutdown(String[] args) {
if (_state != RUNNING)
return;
if (_jettys.isEmpty()) {
@@ -130,10 +137,10 @@ public class JettyStart implements ClientApp {
private class Stopper extends Thread {
public Stopper() {
super("JettyStopper");
changeState(STOPPING);
}
public void run() {
changeState(STOPPING);
for (LifeCycle lc : _jettys) {
if (lc.isRunning()) {
try {
@@ -165,6 +172,22 @@ public class JettyStart implements ClientApp {
private synchronized void changeState(ClientAppState state, Exception e) {
_state = state;
_mgr.notify(this, state, null, e);
if (_mgr != null)
_mgr.notify(this, state, null, e);
}
/**
* For use in a plugin clients.config
* @param args passed to constructor
* @since 0.9.6
*/
public static void main(String[] args) {
try {
new JettyStart(null, null, args);
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -1,3 +0,0 @@
This is only what we need out of the 25 MB Jetty-6.1.26.zip.
NOTICE and LICENSE files moved to ../../../licenses

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