Compare commits

..

251 Commits

Author SHA1 Message Date
zzz
d106f483a1 0.9.13 2014-05-22 14:59:02 +00:00
zzz
a65edbef92 SSU: Fix peer test deadlock (ticket #1286) 2014-05-20 12:35:48 +00:00
zzz
7479aa235e fixes after review 2014-05-20 12:03:19 +00:00
kytv
d2db41bc89 remove cert from delete list 2014-05-16 14:04:45 +00:00
kytv
f3b4377ee1 re-add netdb.i2p2.no.crt 2014-05-16 13:58:51 +00:00
kytv
551a8091a9 GeoIP db updates; Japanese Susimail translation, -21-rc 2014-05-15 23:22:40 +00:00
kytv
f994590ad7 Translation updates
sk, ja, de, fr, it zh, nl, uk, nb
2014-05-15 23:14:38 +00:00
kytv
5d04f8db89 checkremotecerts.sh fix test logic
Script would return 0 even connecting to the remote host failed.
2014-05-15 03:38:29 +00:00
kytv
06de347373 -20-rc 2014-05-14 14:18:24 +00:00
kytv
2bf2eb482e update outbound UA to match TBB's 2014-05-14 14:14:23 +00:00
zzz
df71308664 Susimail: Don't let an exception on one mail break others 2014-05-13 21:36:06 +00:00
zzz
e393f82eb7 * i2psnark: Escaping fixes on details page 2014-05-13 21:35:12 +00:00
zzz
8480a204ea * BOB, SAM, i2psnark: Fix datagram NPE (ticket #1275)
This could only happen on an extremely overloaded router.
2014-05-13 18:45:54 +00:00
zzz
197be5f60f * SusiMail: AIOOBE fix 3nd try (ticket #1269) 2014-05-13 18:39:56 +00:00
zzz
5621e9b390 * SusiMail: AIOOBE fix 2nd try (ticket #1269) 2014-05-12 20:46:30 +00:00
echelon2
485d785e0b merge of 'dcf98ef995380862d3e668685caaa0acd403f068'
and 'f9fdb1592f632ef5de78e3dc7dac3f75ce4e3c39'
2014-05-10 15:38:20 +00:00
echelon2
8d71d496be new self signed certificate which fits to the host name reseed.i2p.projekt.de 2014-05-10 15:21:54 +00:00
zzz
738bae46d2 * SusiMail:
- Remove deleted messages from memory too
   - Disable delete button when really-delete button shown
2014-05-10 14:47:46 +00:00
zzz
d519228efb change exception type 2014-05-10 14:44:09 +00:00
zzz
72c404c4d4 * NTCP: Fix NPE (ticket #996)
(hopefully)
2014-05-10 14:42:13 +00:00
zzz
cd91a6b2a4 * SusiMail: Add more locking (ticket #1269) 2014-05-09 12:15:12 +00:00
zzz
e165c1805d unnecessary cast 2014-05-09 12:14:19 +00:00
kytv
292b0a81c0 remove debugging cruft 2014-05-09 10:33:01 +00:00
kytv
b9e9c07d95 checkremotecerts.sh: clean-ups, compatibility updates
It now works with either gnutls or openssl, and both gnutls v2 and gnutls v3.
2014-05-09 10:21:15 +00:00
kytv
837bf9eafe add i2pdocs.str4d.i2p to hosts.txt
It's linked on the website but wasn't in any of the default lists.
2014-05-09 10:11:22 +00:00
zzz
cfdbef05c5 set GPG key ID in release target 2014-05-08 19:23:15 +00:00
kytv
47b10e9771 checkremotecerts.sh: explicit check that cert exists 2014-05-08 17:56:37 +00:00
kytv
1b5a2ddef3 updated cert for ieb9oopo per email in ticket #1266 2014-05-08 17:55:41 +00:00
kytv
c161649ed5 Add script to check reseeder host certificate validity 2014-05-08 13:31:32 +00:00
kytv
c9b5c03e1b remove certs that are no longer used 2014-05-08 12:47:46 +00:00
kytv
c4c04d7ec5 rename i2pproject cert
The other self-signed certs are named after the host that they're being used
for. Maintaining this naming scheme will make automated testing easier.
2014-05-08 12:46:44 +00:00
kytv
b4e03fa969 Removing netdb.i2p2.* certs
These have not been used for some time. netdb.i2p2.no is using an *.i2p2.de
cert from Commodo.
2014-05-08 12:45:31 +00:00
zzz
1cdcf1cb0a i2ptunnel: Display warning for duplicate client ports (ticket #1265) 2014-05-07 16:00:38 +00:00
zzz
56b6992ca8 i2psnark: Add log message if directory does not exist (ticket #1263) 2014-05-07 15:58:24 +00:00
zzz
2beaea4a86 Tunnels: Revert expl. OB default back to 2 + 0-1 for now 2014-05-07 14:50:45 +00:00
zzz
2dc97b160a i2psnark: Allow click on entire table cell for viewing torrent details 2014-05-07 14:48:42 +00:00
zzz
a014918c0d Transports: Use constant time method for HMAC verification 2014-05-07 14:47:15 +00:00
zzz
fb9a4eb87a SSU: Extend establishment phase retx timeout 2014-05-07 14:43:46 +00:00
zzz
cd83c48526 DSAEngine: Minor cleanup 2014-05-07 14:41:28 +00:00
zzz
5b2766ddfb Data: Use Arrays.equals() directly, same as DataHelper.eq() 2014-05-07 14:40:03 +00:00
zzz
f912b01137 Fix console getting disabled when saving client config (ticket #1260)
Router: Add warning at startup if console is disabled
2014-05-07 14:36:41 +00:00
zzz
b0db4e4fff * SusiMail:
- Don't fetch headers from folder sorters
   - Update debug setting when saving config
2014-05-07 14:34:51 +00:00
zzz
649f76fb06 add hiddengate.i2p 2014-05-07 14:33:20 +00:00
zzz
67ea2f3717 SusiMail: Remove dups in war 2014-05-01 17:05:57 +00:00
zzz
e9e535cb94 * SusiMail:
- Move js to resources
   - js for delete boxes in folder view
2014-05-01 14:34:02 +00:00
zzz
7822b5c3ac SusiMail: header padding 2014-05-01 13:13:20 +00:00
zzz
767bd05ce1 SusiMail: new sorter base class 2014-05-01 13:02:44 +00:00
zzz
36ebe19cd7 SusiMail po update for TX 2014-05-01 12:04:10 +00:00
zzz
943ea957a2 * Plugins: Retry deletion at restart if it fails (ticket #1257) 2014-04-30 14:22:25 +00:00
zzz
04a3673366 remove UTF8 in commented-out test 2014-04-30 11:28:13 +00:00
zzz
1dfbe73b73 * SusiMail:
- Add print css
   - Add some divs
   - Hide header and footer in mobile css
   - Fix 'from' address in compose
   - Boolean config parse cleanup
   - Config textarea row count
2014-04-29 19:50:28 +00:00
zzz
87889bb322 * UDP:
- Locking fixes on peer testing
   - More locking fixes on rebuilding address
   - Slow down peer test frequency, esp. when firewalled
* Transports:
   - Deprecate unused recheckReachability()
2014-04-27 18:46:11 +00:00
zzz
aa0616d7c5 * UDP:
- Locking fixes on rebuilding address
   - Don't rapidly churn address when we don't have enough introducers
2014-04-27 15:47:43 +00:00
zzz
611ff6357e * NTCP: Remove published NTCP address if SSU becomes firewalled,
to fix the "Firewalled with NTCP enabled" message
2014-04-27 15:01:01 +00:00
zzz
91d7a0ab98 * SusiMail:
- Add locking for disk cache
   - Remove cancel button from login page
   - New configuration page
   - Move set page form to configuration page
   - Theme and folder js enhancements
   - Wrench icon from Silk, same license as the others
2014-04-27 14:57:28 +00:00
zzz
f5661da595 * Router: Set killVMOnEnd before runRouter() (for azi2phelper)
* RoutingKeyGenerator: Don't assume UTC (for azi2phelper)
2014-04-27 14:53:15 +00:00
zzz
3f56ce206d * SusiMail:
- Subject sort enhancements
   - Tag Re: and Fwd:
2014-04-25 20:05:23 +00:00
zzz
8a2308b411 * SusiMail:
- Send delete to server for mails already downloaded
   - Fix idle closer waiting for deletions
   - Add tooltips for icons
   - Add new options to properties resource
   - Add feedback when reload config button pushed (ticket #1158)
   - Reset page size when config reloaded
   - Remove max page size limit
   - Show page nav buttons on bottom too if page is big
   - Set title to subject on message view
   - Log tweaks
2014-04-25 18:47:47 +00:00
zzz
04cabf40b5 * SusiMail:
- Move delete and confirmation button in folder view to bottom left,
     page size form to bottom right
   - Attachment finals and cleanup
   - Increase max size for full download again
   - Fix repeated re-saves of mail to disk
   - Enable auto-deletion of downloaded mails
   - Consolidate check box processing
   - Button spacing tweaks
2014-04-25 16:11:35 +00:00
zzz
4e0c4f6f98 * SusiMail:
- Tweak sort button display based on current sort
   - Secondary sort based on date
   - Ignore "Re:" in subject sort
2014-04-25 14:09:28 +00:00
zzz
75bd235eb2 * SusiMail:
- Add raw attachment download method
   - Display image attachments inline
   - Don't rezip certain attachment types, just offer link
   - Handle attachment sending directly, don't put ref in session
2014-04-25 13:04:04 +00:00
zzz
05236b093a * SusiMail:
- Fix sorting buttons, broken by POST check
2014-04-25 04:15:50 +00:00
zzz
260ebe512c * SusiMail:
- Add icon for new mail
     (from Silk icons, same license as others)
   - Attachment logic tweak
2014-04-25 04:09:14 +00:00
zzz
c2dab16c8c * SusiMail:
- Add icons for attachments and spam
     (from Silk icons, same license as others)
   - Add checks for POST for XSS prevention
2014-04-25 03:42:18 +00:00
zzz
945d455f33 * SusiMail:
- Different colors for new mail and spam
2014-04-24 21:33:43 +00:00
zzz
c8f8f6ff34 * SusiMail:
- Add background mail checker, not yet enabled
   - Add idle timeout connection closer
   - Rely on idle checker for most delayed deletions
   - Cleanup resources better when shutting down session
   - Don't add deleted mails to folder, caused errors after deletions
   - Set socket soTimeouts so things don't hang forever
   - Display errors after check mail button pushed
   - More IOE debug logging
2014-04-24 20:54:22 +00:00
zzz
0d4f597a59 SusiDNS: Fix subscription edit page, thx bubbles 2014-04-24 14:26:21 +00:00
zzz
775047fbc2 * SusiMail:
- Fix HeaderLine decoder going past the headers,
     which was causing corruption in forwarded mails
   - More efficient output buffer allocation in HeaderLine decoder
2014-04-24 01:25:50 +00:00
zzz
1e4b43314c * SusiMail:
- Fix fetching of new mail
   - More Folder cleanup
   - Prep for not leaving on server
   - Prep for background checker
2014-04-23 22:46:57 +00:00
zzz
b365817c99 * SusiMail:
- Queue deletions for a delayed background thread
   - Synch all folder access
   - NPE fixes
   - Javadoc fixes
2014-04-23 19:40:57 +00:00
zzz
bbb04774d1 compile fix 2014-04-22 20:52:08 +00:00
zzz
1823e5e641 * SusiMail:
- Load all mails from disk at startup
   - Add offline mode
   - MailCache now has the total UIDL view
   - Copy silk folder icon from snark to console for use by susimail
2014-04-22 20:01:24 +00:00
zzz
4d2dc1c8e8 * SusiMail:
- Show sender name in folder view
   - Add support for configured sender name
   - Add HTML escaping of '&'
   - Fix Folder sorting so UP is up and DOWN is down
   - Use replace() instead of replaceAll() where appropriate
   - Fix capture by show page after back button
2014-04-22 18:45:09 +00:00
zzz
6986f90bf8 * SusiMail:
- Fix encoding in sent mails on non-UTF8 platforms (thx cryptosynthesis)
   - Clean up all other getBytes() calls
   - Tweak spacing on up buttons
2014-04-22 11:48:45 +00:00
zzz
b43ebd2486 * SusiMail:
- Add persistent cache
   - Remove ID sorter
   - Mail size getter/setter
   - Set mail size when setting body
   - Only send CAPA once
   - Tagged string tweaks
2014-04-22 11:18:56 +00:00
zzz
7bf3ea5200 * SusiMail:
- Pipeline all deletes and quit
   - Don't reconnect after delete and quit
   - Verify connected before each POP3 operation
   - Null check in comparators
   - Don't clear messages if a reconnection fails
   - Use locale-based sorting for strings
   - Increase limit for full fetch again
   - Increase default page size back again
2014-04-21 23:00:46 +00:00
dg2-new
490727b401 fix i2ptunnel 2014-04-21 20:59:29 +00:00
zzz
49f4f3398d * SusiMail:
- Add MailPart constructor, make fields final
   - Add ReadBuffer constructor, make fields final
   - Move decoding to MailPart method
   - Setters/getters for Mail header, body, part
   - Classes package private
   - Finals, constructors
2014-04-21 20:17:08 +00:00
dg2-new
b84682fdc9 * findbugs: mostly stream closure fixes in router, apps, core 2014-04-21 10:54:52 +00:00
zzz
b9491b269b * SusiMail:
- Pipeline initial fetch of messages, huge speedup
2014-04-20 22:22:22 +00:00
zzz
b70cbb28b2 * SusiMail:
- Send CAPA
   - Pipeline STAT, UIDL, and LIST
2014-04-20 19:31:28 +00:00
zzz
673c14287a * SusiMail:
- Rework in POP3 in prep for more pipelining
2014-04-20 18:38:54 +00:00
zzz
b4a0ffdbbd * SusiMail:
- Don't require an attachment to be "uploaded" to send it
   - Move delete attachment button, hide if no attachments
   - Icon for delete attachment button
   - Fix html error in bccToSelf input
2014-04-20 17:12:21 +00:00
zzz
3b2e5bded2 * SusiMail:
- Don't store encoding class names in config
   - New susimail.debug setting in config
   - Use DataHelper to load config file
   - Close any open POP3 socket when session is unbound
   - Don't keep returning user to compose page (ticket #1252)
   - Add javascript capture of back button from compose page
2014-04-20 15:19:30 +00:00
kytv
67eb3cc140 unblocking USERS (ticket #1249) and various safe Inspircd commands 2014-04-20 11:53:39 +00:00
zzz
5a683149ab * SusiMail:
- New reply button icon (from Silk, same license as the others)
   - Save BCC-to-self preference in the session
   - Tweak the BCC-to-self layout
   - Fix date format in reply
2014-04-20 02:45:01 +00:00
zzz
b75ad1ca5a * SusiMail:
- Use pipelining in SMTP
   - Rewrite SMTP response processing
   - Translate SMTP error messages
   - Right-justify msg size in folder view
   - String.compareTo() cleanup
2014-04-20 01:26:11 +00:00
zzz
552ab31559 Console: Remove the classpath workarounds for SusiMail,
since it isn't using the jetty classes any more
2014-04-19 20:46:31 +00:00
zzz
4abfde4047 SusiMail:
- CSS padding in inputs
   - Flush writes in SMTP
   - Don't wait for SMTP response after QUIT
   - Translate the "login failed" message
   - Show "no messages" in folder view if none
   - Message view attachment cleanups
   - Fix the message view layout in CSS
   - Pipeline USER and PASS to save a round-trip at startup
   - Better synchronization in POP3
   - Properly de-byte-stuff in POP3
   - Flush writes in POP3 for speedup
   - Remove unnecessary caching in POP3, this is handled in MailCache
   - More efficient handling of POP3 server responses
   - Remove 60s timeout for fetching a message,
     so retrieval of large messages doesn't fail
   - Don't allow line breaks in date/time or size in folder view
   - Use DataHelper.formatSize2() for message size
   - Identify susimail log messages in wrapper
   - Debug log tweaks
2014-04-19 20:44:50 +00:00
zzz
6ecfedba37 SusiMail:
- Increase max size of mails that are fetched in full,
     previous limit was so small it never happened.
   - Move page nav to top of folder view, hide if only one page
   - Put message nav buttons on second line
   - Refuse to send mail with no "to"
   - Reduce default page size as it slows startup
   - Remove unnecessary casts
   - Right justify some input fields
2014-04-19 16:57:56 +00:00
zzz
43883a90d2 SusiMail: Successfully extend session expiration (ticket #1253)
by renaming the cookie, so we don't have a common session ID
with the base context and get it expired there.
2014-04-18 21:32:45 +00:00
zzz
3930113f00 I2PTunnel IRC Client: Prevent AIOOBE (ticket #1254) 2014-04-18 16:44:39 +00:00
zzz
029198c213 * SusiMail:
- Don't force reconnection on folder view (ticket #1253)
   - Only show logout button on folder view
   - Switch subject and date headers on message view
   - Button theme tweaks
   - Debug logging
   - Fix NPE when RELEASE=false
   - Synch tweaks
   - hellip
   - Footer tweak
2014-04-18 16:43:07 +00:00
zzz
493788f4f8 merge of '9f159df098940fb0feecf6eae0c990c62736bb9c'
and 'ba82e9e4c57bd8d9f567c9252fe7b5815972e370'
2014-04-18 01:50:14 +00:00
zzz
028776de88 * SusiMail:
- Extend session expiration (ticket #1253)
   - Handle non-UTF8 encoding on header lines (ticket #508)
   - Display dates in current locale and time zone
   - Display sender name on message view
   - Remove sort-by-ID buttons
   - Hide "reload config" button unless config file is present
   - Increase default page size
   - Add dependency tracking to build
2014-04-18 01:48:03 +00:00
kytv
705de68aa3 allow PROTOCTL and LINKS through the filter.
http://www.unrealircd.com/files/docs/technical/protoctl.txt

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

	addressbook.war
	BOB.jar
	i2p.jar
	i2ptunnel.jar
	mstreaming.jar
	router.jar
	streaming.jar
2014-02-03 23:59:48 +00:00
zzz
001b127258 * Jetty:
- Update to Jetty 8.x, Servlet 3.0, JSP 2.2
   - Require Java 6
   - Use Servlet and JSP jars from Jetty instead of Tomcat
   - Tomcat remains at 6.0.37 supporting Servlet 2.5 / JSP 2.1
   - Remove Jetty dependency in console error pages
   - Build files for Jetty 8.1.14
   - Doc updates
   - Delete Jetty 7.6.14
   - Jetty 8.1.14 not yet checked in,
     waiting to see if a new version is released soon,
     but build will download it for testing
2014-02-03 23:24:45 +00:00
zzz
7c00a5165f Build: Honor require.gettext=false for i2prouter translations 2014-02-03 20:43:02 +00:00
zzz
e1c3e2c1c7 * Getopt bundle fixes for Java Properties standard:
Fix comment lines
   Encoding conversion to UTF-8 with escapes
   Add unicode escapes for all chars over 0x7f
   Change Transifex type to PROPERTIES
   Also:
    - Remove BOMs
    - Remove \r
    - Remove blank lines
   Encodings were as follows:
     cs: marked ISO-8859-2
     pl: marked ISO-8859-2, possibly corrupt, ?? in two strings
     de, es, fr: marked ISO-8859-1
     hu: detected as ISO-8859-2
     it: apparently ISO-8859-1
     ja: Unicode escaped already
     nb, nl: ASCII
     ro: marked ISO-8859-2 but actually UTF-8
     zh: detected as GB2312 w/ CRLF
     zh_TW: UTF-8 w/ BOM w/ CRLF
2014-02-02 21:05:14 +00:00
zzz
e9b3577eec snark: cache PeerID.toString() 2014-02-02 17:19:06 +00:00
zzz
3622501471 * Streaming:
- Set ports on many packets that were missing them
   - Use connection throttling methods on pings too (ticket #1142)
   - Add methods to set ports on pings
   - Argument checking on ping methods
2014-02-02 16:47:29 +00:00
zzz
b7207fd29f Use getopt lib in SU3File (ticket #1173) 2014-02-02 15:14:00 +00:00
zzz
4dc1241d2f Add lightweight getopt command line parsing lib
(ticket #1173)
This is Java getopt 1.0.14 (released 2012/02/08)
Source was retrieved from https://github.com/arenn/java-getopt
Previous version 1.0.13 (released 2006/08/29)
is available at http://www.urbanophile.com/arenn/hacking/getopt/
Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com),
LGPL v2.
Include the small translation files, add to build.xml and to .tx/config
Fixes:
  Simplified Chinese
    MessagesBundle_chs.properties renamed to MessagesBundle_zh.properties
  Traditional Chinese
    MessagesBundle_cht.properties renamed to MessagesBundle_zh_TW.properties
  Norwegian Bokmaal
    MessagesBundle_no.properties renamed to MessagesBundle_nb.properties
2014-02-02 15:12:44 +00:00
zzz
2cacded182 datagram sigtype bugfix 2014-01-28 22:40:36 +00:00
zzz
ec22a1dafc - Only store LS with more than 6 leases to routers that support it 2014-01-28 22:35:33 +00:00
zzz
28575dbdae * Key certs:
- Hide setting in i2ptunnel edit pages unless advanced user
  - Only store LS with key certs to routers that support it
2014-01-28 14:21:54 +00:00
zzz
17e63b054c add sigtype to i2ptunnel client gui too 2014-01-05 16:38:39 +00:00
zzz
fba209ca7d restore method used by bote 2014-01-04 17:32:38 +00:00
zzz
41e071efe5 * Key cert GUI support:
- Add setting in i2ptunnel server edit page
  - Comment out cert setting on i2ptunnel server edit page
  - Show key type on susidns details page
  - Show key type on LS debug page
2014-01-03 15:31:08 +00:00
zzz
e8e239616f * Crypto: More implementation for key certs
- Support i2cp.destination.sigType option in TunnelController and
    I2PSocketManagerFactory
  - Fixup of Destination.create() and Destination.size()
  - Add generic off/len methods in DSAEngine, needed for streaming
  - Fixup of sign/verify in streaming Packet
  - Javadocs
2014-01-03 00:22:44 +00:00
zzz
5842e25205 Initial support for key certificates and arbitrary types and lengths
of signing keys and signatures in RouterIdentities and Destinations.
Untested, not even for regressions, except with command line
using PrivateKeyFile.
Based on preliminary spec at http://zzz.i2p/topics/1442?page=1#p7524
Not done:
 - Transport handshake signing
 - Configuration of default type
 - Specification of type in options to I2PSocketManagerFactory
 - Specification of type in i2ptunnel
 - Fix up caching of SigningPublicKey and P256 key cert
 - Any non-default crypto type in the key cert
 - Documentation
2013-12-24 16:41:05 +00:00
613 changed files with 36152 additions and 29023 deletions

48
.gitignore vendored Normal file
View File

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

View File

@@ -16,10 +16,12 @@ _jsp\.java$
\.sig$
\.sud$
\.su2$
.\su3$
\.tar$
\.war$
.\deb$
\.zip$
\.torrent$
^\.
~$
web-fragment.xml
@@ -31,13 +33,14 @@ web-out.xml
/build
/classes
/dist
/mo
^installer/resources/locale/mo
/tmp
^apps/jetty/jettylib
# Debian-related
^debian/copyright
^debian/changelog
^.pc/
# Build property overrides
override.properties

View File

@@ -16,6 +16,7 @@ trans.pl = apps/i2ptunnel/locale/messages_pl.po
trans.pt = apps/i2ptunnel/locale/messages_pt.po
trans.pt_BR = apps/i2ptunnel/locale/messages_pt_BR.po
trans.ru_RU = apps/i2ptunnel/locale/messages_ru.po
trans.sk = apps/i2ptunnel/locale/messages_sk.po
trans.sv_SE = apps/i2ptunnel/locale/messages_sv.po
trans.uk_UA = apps/i2ptunnel/locale/messages_uk.po
trans.vi = apps/i2ptunnel/locale/messages_vi.po
@@ -87,6 +88,7 @@ trans.pt = apps/routerconsole/locale-news/messages_pt.po
trans.pt_BR = apps/routerconsole/locale-news/messages_pt_BR.po
trans.ro = apps/routerconsole/locale-news/messages_ro.po
trans.ru_RU = apps/routerconsole/locale-news/messages_ru.po
trans.sk = apps/routerconsole/locale-news/messages_sk.po
trans.sv_SE = apps/routerconsole/locale-news/messages_sv.po
trans.tr_TR = apps/routerconsole/locale-news/messages_tr.po
trans.zh_CN = apps/routerconsole/locale-news/messages_zh.po
@@ -112,6 +114,7 @@ trans.pt = apps/routerconsole/locale-countries/messages_pt.po
trans.pt_BR = apps/routerconsole/locale-countries/messages_pt_BR.po
trans.ro = apps/routerconsole/locale-countries/messages_ro.po
trans.ru_RU = apps/routerconsole/locale-countries/messages_ru.po
trans.sk = apps/routerconsole/locale-countries/messages_sk.po
trans.sv_SE = apps/routerconsole/locale-countries/messages_sv.po
trans.tr_TR = apps/routerconsole/locale-countries/messages_tr.po
trans.vi = apps/routerconsole/locale-countries/messages_vi.po
@@ -133,6 +136,7 @@ trans.pl = apps/i2psnark/locale/messages_pl.po
trans.pt = apps/i2psnark/locale/messages_pt.po
trans.ro = apps/i2psnark/locale/messages_ro.po
trans.ru_RU = apps/i2psnark/locale/messages_ru.po
trans.sk = apps/i2psnark/locale/messages_sk.po
trans.sv_SE = apps/i2psnark/locale/messages_sv.po
trans.vi = apps/i2psnark/locale/messages_vi.po
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
@@ -179,6 +183,7 @@ trans.pl = apps/desktopgui/locale/messages_pl.po
trans.pt_BR = apps/desktopgui/locale/messages_pt_BR.po
trans.ro = apps/desktopgui/locale/messages_ro.po
trans.ru_RU = apps/desktopgui/locale/messages_ru.po
trans.sk = apps/desktopgui/locale/messages_sk.po
trans.sv_SE = apps/desktopgui/locale/messages_sv.po
trans.uk_UA = apps/desktopgui/locale/messages_uk.po
trans.tr_TR = apps/desktopgui/locale/messages_tr.po
@@ -194,6 +199,7 @@ trans.es = apps/susimail/locale/messages_es.po
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.ja = apps/susimail/locale/messages_ja.po
trans.nl = apps/susimail/locale/messages_nl.po
trans.ru_RU = apps/susimail/locale/messages_ru.po
trans.sv_SE = apps/susimail/locale/messages_sv.po
@@ -221,6 +227,7 @@ trans.pl = debian/po/pl.po
trans.pt = debian/po/pt.po
trans.ro = debian/po/ro.po
trans.ru_RU = debian/po/ru.po
trans.sk = debian/po/sk.po
trans.sv_SE = debian/po/sv.po
trans.uk_UA = debian/po/uk.po
trans.tr_TR = debian/po/tr.po
@@ -234,14 +241,36 @@ trans.es = installer/resources/locale/po/messages_es.po
trans.fr = installer/resources/locale/po/messages_fr.po
trans.it = installer/resources/locale/po/messages_it.po
trans.pl = installer/resources/locale/po/messages_pl.po
trans.ja = installer/resources/locale/po/messages_ja.po
trans.pt = installer/resources/locale/po/messages_pt.po
trans.pt_BR = installer/resources/locale/po/messages_pt_BR.po
trans.ro = installer/resources/locale/po/messages_ro.po
trans.sv_SE = installer/resources/locale/po/messages_sv.po
trans.ru_RU = installer/resources/locale/po/messages_ru.po
trans.sk = installer/resources/locale/po/messages_sk.po
trans.sv_SE = installer/resources/locale/po/messages_sv.po
trans.tr_TR = installer/resources/locale/po/messages_tr.po
trans.zh_CN = installer/resources/locale/po/messages_zh.po
[I2P.getopt]
source_file = core/java/src/gnu/getopt/MessagesBundle.properties
source_lang = en
type = PROPERTIES
trans.cs = core/java/src/gnu/getopt/MessagesBundle_cs.properties
trans.de = core/java/src/gnu/getopt/MessagesBundle_de.properties
trans.es = core/java/src/gnu/getopt/MessagesBundle_es.properties
trans.fr = core/java/src/gnu/getopt/MessagesBundle_fr.properties
trans.hu = core/java/src/gnu/getopt/MessagesBundle_hu.properties
trans.it = core/java/src/gnu/getopt/MessagesBundle_it.properties
trans.ja = core/java/src/gnu/getopt/MessagesBundle_ja.properties
trans.nl = core/java/src/gnu/getopt/MessagesBundle_nl.properties
trans.nb = core/java/src/gnu/getopt/MessagesBundle_nb.properties
trans.pl = core/java/src/gnu/getopt/MessagesBundle_pl.properties
trans.pt_BR = core/java/src/gnu/getopt/MessagesBundle_pt_BR.properties
trans.ro = core/java/src/gnu/getopt/MessagesBundle_ro.properties
trans.ru_RU = core/java/src/gnu/getopt/MessagesBundle_ru.properties
trans.sk = core/java/src/gnu/getopt/MessagesBundle_sk.properties
trans.zh_CN = core/java/src/gnu/getopt/MessagesBundle_zh.properties
[main]
host = https://www.transifex.com

View File

@@ -12,7 +12,7 @@ you may use:
to configure the router.
If you're having trouble, swing by http://forum.i2p/, check the
website at http://www.i2p2.de/, or get on irc://irc.freenode.net/#i2p
website at https://geti2p.net/, or get on irc://irc.freenode.net/#i2p
I2P will create and store files and configuration data in the user directory
~/.i2p/ on Linux and %APPDATA%\I2P\ on Windows. This directory is created
@@ -39,7 +39,10 @@ To uninstall I2P:
rm -rf $I2PInstallDir ~/.i2p
Supported JVMs:
Windows: Latest available from http://java.com/download (1.5+ supported)
Linux: Latest available from http://java.com/download (1.5+ supported)
FreeBSD: 1.5-compatible (NIO required)
Other operating systems and JVMs: See https://trac.i2p2.de/wiki/java
All platforms: Java 1.6 or higher required; 1.7 or higher recommended
Windows: OpenJDK or Oracle from http://java.com/download
Linux: OpenJDK or Oracle from http://java.com/download
FreeBSD: OpenJDK or Oracle from http://java.com/download
Raspberry Pi: Oracle 8 Early Access https://jdk8.java.net/download.html
PowerPC: IBM SDK 7 http://www.ibm.com/developerworks/java/jdk/linux/download.html
Other operating systems and JVMs: See https://trac.i2p2.de/wiki/java or https://geti2p.net/download

View File

@@ -36,7 +36,7 @@ Public domain except as listed below:
Copyright (c) 2003, TheCrypto
See licenses/LICENSE-ElGamalDSA.txt
SHA256 and HMAC-SHA256:
SHA256 and HMAC:
Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
See licenses/LICENSE-SHA256.txt
@@ -76,6 +76,11 @@ Public domain except as listed below:
Copyright 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
See licenses/LICENSE-Apache2.0.txt
Getopt:
Copyright (c) 1998 by Aaron M. Renn (arenn@urbanophile.com)
See licenses/LICENSE-LGPLv2.1.txt
Router (router.jar):
Public domain except as listed below:
UPnP.java:
@@ -177,7 +182,7 @@ Applications:
By welterde.
See licenses/LICENSE-GPLv2.txt
Jetty 7.6.14.v20131031:
Jetty 8.1.14.v20131031:
See licenses/ABOUT-Jetty.html
See licenses/NOTICE-Jetty.html
See licenses/LICENSE-Apache2.0.txt

View File

@@ -15,20 +15,20 @@ To build:
ant installer-osx
Run 'ant' with no arguments to see other build options.
See INSTALL.txt or http://www.i2p2.de/download.html for installation instructions.
See INSTALL.txt or https://geti2p.net/download for installation instructions.
Documentation:
http://www.i2p2.de/how
https://geti2p.net/how
API: run 'ant javadoc' then start at build/javadoc/index.html
Latest release:
http://www.i2p2.de/download
https://geti2p.net/download
To get development branch from source control:
http://www.i2p2.de/newdevelopers
https://geti2p.net/newdevelopers
FAQ:
http://www.i2p2.de/faq
https://geti2p.net/faq
Need help?
IRC irc.freenode.net #i2p

View File

@@ -221,15 +221,17 @@ public class BOB implements Runnable, ClientApp {
if (!cfg.isAbsolute()) {
cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
FileInputStream fi = null;
try {
FileInputStream fi = new FileInputStream(cfg);
fi = new FileInputStream(cfg);
props.load(fi);
fi.close();
} catch (FileNotFoundException fnfe) {
_log.warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.", fnfe);
save = true;
} catch (IOException ioe) {
_log.warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.", ioe);
} finally {
if (fi != null) try { fi.close(); } catch (IOException ioe) {}
}
}
// Global router and client API configurations that are missing are set to defaults here.
@@ -276,13 +278,15 @@ public class BOB implements Runnable, ClientApp {
if (!cfg.isAbsolute()) {
cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
FileOutputStream fo = null;
try {
_log.warn("Writing new defaults file " + cfg.getAbsolutePath());
FileOutputStream fo = new FileOutputStream(cfg);
fo = new FileOutputStream(cfg);
props.store(fo, cfg.getAbsolutePath());
fo.close();
} catch (IOException ioe) {
_log.error("IOException on BOB config file " + cfg.getAbsolutePath(), ioe);
} finally {
if (fo != null) try { fo.close(); } catch (IOException ioe) {}
}
}
}

View File

@@ -106,8 +106,10 @@ public class UDPIOthread implements I2PSessionListener, Runnable {
// _log.debug("Message available: id = " + msgId + " size = " + size);
try {
byte msg[] = session.receiveMessage(msgId);
out.write(msg);
out.flush();
if (msg != null) {
out.write(msg);
out.flush();
}
} catch (I2PSessionException ise) {
up = false;
} catch (IOException ioe) {

View File

@@ -7,6 +7,7 @@
<property name="jar" value="addressbook.jar"/>
<property name="war" value="addressbook.war"/>
<property name="javac.compilerargs" value="" />
<property name="javac.version" value="1.6" />
<target name="init">
<mkdir dir="${build}"/>
@@ -24,6 +25,18 @@
<typefound name="depend" />
</condition>
<target name="depend" if="depend.available">
<depend
cache="../../build"
srcdir="${src}"
destdir="${build}" >
<!-- Depend on classes instead of jars where available -->
<classpath>
<pathelement location="../../core/java/build/obj" />
</classpath>
</depend>
</target>
<target name="dependServlet" if="depend.available">
<depend
cache="../../build"
srcdir="${src}"
@@ -37,9 +50,22 @@
</target>
<target name="compile" depends="init, depend">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}">
srcdir="${src}" destdir="${build}"
excludes="net/i2p/addressbook/Servlet.java">
<compilerarg line="${javac.compilerargs}" />
<classpath>
<pathelement location="../../core/java/build/i2p.jar" />
</classpath>
</javac>
</target>
<target name="compileServlet" depends="init, dependServlet, compile">
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}"
includes="net/i2p/addressbook/Servlet.java">
<compilerarg line="${javac.compilerargs}" />
<classpath>
<pathelement location="../../core/java/build/i2p.jar" />
@@ -48,11 +74,11 @@
</javac>
</target>
<!-- unused for now, as we oddly ship addressbook as a .war -->
<!-- unused for now (except for Android), as we oddly ship addressbook as a .war -->
<target name="jar" depends="compile, changes">
<jar basedir="${build}" destfile="${dist}/${jar}">
<!-- set if unset -->
<property name="workspace.changes" value="" />
<jar basedir="${build}" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="addressbook.Daemon"/>
<attribute name="Implementation-Version" value="${full.version}" />
@@ -64,7 +90,7 @@
</jar>
</target>
<target name="war" depends="compile, changes, warUpToDate" unless="war.uptodate">
<target name="war" depends="compileServlet, changes, warUpToDate" unless="war.uptodate">
<mkdir dir="${dist}/tmp"/>
<mkdir dir="${dist}/tmp/WEB-INF"/>
<mkdir dir="${dist}/tmp/WEB-INF/classes"/>

View File

@@ -91,7 +91,7 @@ class ConfigParser {
String inputLine;
inputLine = input.readLine();
while (inputLine != null) {
inputLine = ConfigParser.stripComments(inputLine);
inputLine = stripComments(inputLine);
String[] splitLine = inputLine.split("=");
if (splitLine.length == 2) {
result.put(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
@@ -116,7 +116,7 @@ class ConfigParser {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
Map<String, String> rv = ConfigParser.parse(input);
Map<String, String> rv = parse(input);
try {
fileStream.close();
} catch (IOException ioe) {}
@@ -136,7 +136,7 @@ class ConfigParser {
public static Map<String, String> parse(String string) throws IOException {
StringReader stringReader = new StringReader(string);
BufferedReader input = new BufferedReader(stringReader);
return ConfigParser.parse(input);
return parse(input);
}
/**
@@ -153,7 +153,7 @@ class ConfigParser {
public static Map<String, String> parse(File file, Map<String, String> map) {
Map<String, String> result;
try {
result = ConfigParser.parse(file);
result = parse(file);
for (Map.Entry<String, String> entry : map.entrySet()) {
if (!result.containsKey(entry.getKey()))
result.put(entry.getKey(), entry.getValue());
@@ -161,7 +161,7 @@ class ConfigParser {
} catch (IOException exp) {
result = map;
try {
ConfigParser.write(result, file);
write(result, file);
} catch (IOException exp2) {
}
}
@@ -182,7 +182,7 @@ class ConfigParser {
List<String> result = new LinkedList<String>();
String inputLine = input.readLine();
while (inputLine != null) {
inputLine = ConfigParser.stripComments(inputLine).trim();
inputLine = stripComments(inputLine).trim();
if (inputLine.length() > 0) {
result.add(inputLine);
}
@@ -205,7 +205,7 @@ class ConfigParser {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
List<String> rv = ConfigParser.parseSubscriptions(input);
List<String> rv = parseSubscriptions(input);
try {
fileStream.close();
} catch (IOException ioe) {}
@@ -224,7 +224,7 @@ class ConfigParser {
public static List<String> parseSubscriptions(String string) throws IOException {
StringReader stringReader = new StringReader(string);
BufferedReader input = new BufferedReader(stringReader);
return ConfigParser.parseSubscriptions(input);
return parseSubscriptions(input);
}
/**
@@ -234,18 +234,30 @@ class ConfigParser {
*
* @param file
* A File to attempt to parse.
* @param list list of files to parse
* @param list The default subscriptions to be saved and returned if the file cannot be read
* @return A List consisting of one element for each line in file, or if
* file cannot be read, list.
*/
public static List<String> parseSubscriptions(File file, List<String> list) {
List<String> result;
try {
result = ConfigParser.parseSubscriptions(file);
result = parseSubscriptions(file);
// Fix up files that contain the old default
// which was changed in 0.9.11
if (result.remove(Daemon.OLD_DEFAULT_SUB)) {
for (String sub : list) {
if (!result.contains(sub))
result.add(sub);
}
try {
writeSubscriptions(result, file);
// TODO log
} catch (IOException ioe) {}
}
} catch (IOException exp) {
result = list;
try {
ConfigParser.writeSubscriptions(result, file);
writeSubscriptions(result, file);
} catch (IOException exp2) {
}
}
@@ -289,8 +301,7 @@ class ConfigParser {
boolean success = false;
if (!isWindows) {
File tmp = SecureFile.createTempFile("temp-", ".tmp", file.getAbsoluteFile().getParentFile());
ConfigParser
.write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8")));
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8")));
success = tmp.renameTo(file);
if (!success) {
tmp.delete();
@@ -299,8 +310,7 @@ class ConfigParser {
}
if (!success) {
// hmm, that didn't work, try it the old way
ConfigParser
.write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
}
}
@@ -337,7 +347,7 @@ class ConfigParser {
*/
public static void writeSubscriptions(List<String> list, File file)
throws IOException {
ConfigParser.writeSubscriptions(list, new BufferedWriter(
writeSubscriptions(list, new BufferedWriter(
new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
}

View File

@@ -50,6 +50,9 @@ public class Daemon {
private static final Daemon _instance = new Daemon();
private volatile boolean _running;
private static final boolean DEBUG = false;
private static final String DEFAULT_SUB = "http://i2p-projekt.i2p/hosts.txt";
/** @since 0.9.12 */
static final String OLD_DEFAULT_SUB = "http://www.i2p2.i2p/hosts.txt";
/**
* Update the router and published address books using remote data from the
@@ -253,7 +256,7 @@ public class Daemon {
List<String> defaultSubs = new LinkedList<String>();
// defaultSubs.add("http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/hosts.txt");
defaultSubs.add("http://i2p-projekt.i2p/hosts.txt");
defaultSubs.add(DEFAULT_SUB);
SubscriptionList subscriptions = new SubscriptionList(subscriptionFile,
etagsFile, lastModifiedFile, lastFetchedFile, delay, defaultSubs, settings

View File

@@ -7,12 +7,13 @@
<property name="jar" value="desktopgui.jar"/>
<property name="resources" value="resources"/>
<property name="javadoc" value="javadoc"/>
<property name="javac.compilerargs" value=""/>
<property name="javac.version" value="1.6" />
<property name="require.gettext" value="true" />
<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}"/>
@@ -27,7 +28,7 @@
</target>
<target name="compile" depends="init">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />

View File

@@ -0,0 +1,57 @@
# 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:
# Krantišek <jaksrn@gmail.com>, 2014
# Svistwarrior273 <romanbeno273@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:27+0000\n"
"PO-Revision-Date: 2014-04-20 09:56+0000\n"
"Last-Translator: Svistwarrior273 <romanbeno273@gmail.com>\n"
"Language-Team: Slovak (http://www.transifex.com/projects/p/I2P/language/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sk\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "Spustiť I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P sa spúšťa!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Spúšťa sa"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Spustiť I2P prehliadač"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Nakonfigurovať desktopgui"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "Reštartovať I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "Zastaviť I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:43
msgid "Tray icon configuration"
msgstr "Konfigurácia ikony v lište"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:46
msgid "Should tray icon be enabled?"
msgstr "Mala by byť ikona v lište povolená?"

View File

@@ -17,29 +17,28 @@
<classpath>
<pathelement location="../../../core/java/build/obj" />
<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>
<property name="javac.compilerargs" value="" />
<property name="javac.version" value="1.6" />
<property name="require.gettext" value="true" />
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
</condition>
<property name="javac.compilerargs" value="" />
<property name="require.gettext" value="true" />
<target name="compile" depends="depend">
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<javac
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
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-servlet.jar:../../jetty/jettylib/jetty-util.jar:../../ministreaming/java/build/mstreaming.jar" >
classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/javax.servlet.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>

View File

@@ -135,7 +135,7 @@ class PeerConnectionOut implements Runnable
nm = null;
}
if (m == null && nm != null)
if (nm != null)
{
m = nm;
//SimpleTimer.getInstance().removeEvent(nm.expireEvent);

View File

@@ -52,6 +52,7 @@ class PeerID implements Comparable<PeerID>
private boolean triedDestLookup;
private final int hash;
private final I2PSnarkUtil util;
private String _toStringCache;
public PeerID(byte[] id, Destination address)
{
@@ -216,13 +217,15 @@ class PeerID implements Comparable<PeerID>
}
/**
* Returns the String "id@address" where id is the base64 encoded id
* and address is the base64 dest (was the base64 hash of the dest) which
* Returns the String "id@address" where id is the first 4 chars of the base64 encoded id
* and address is the first 6 chars of the base64 dest (was the base64 hash of the dest) which
* should match what the bytemonsoon tracker reports on its web pages.
*/
@Override
@Override
public String toString()
{
if (_toStringCache != null)
return _toStringCache;
if (id == null || address == null)
return "unkn@" + Base64.encode(destHash).substring(0, 6);
int nonZero = 0;
@@ -232,7 +235,8 @@ class PeerID implements Comparable<PeerID>
break;
}
}
return Base64.encode(id, nonZero, id.length-nonZero).substring(0,4) + "@" + address.toBase64().substring(0,6);
_toStringCache = Base64.encode(id, nonZero, id.length-nonZero).substring(0,4) + "@" + address.toBase64().substring(0,6);
return _toStringCache;
}
/**

View File

@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import net.i2p.I2PAppContext;
import net.i2p.app.ClientAppManager;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.update.*;
@@ -198,7 +199,9 @@ public class SnarkManager implements CompleteListener {
public void timeReached() {
if (!_running)
return;
_umgr = _context.updateManager();
ClientAppManager cmgr = _context.clientAppManager();
if (cmgr != null)
_umgr = (UpdateManager) cmgr.getRegisteredApp(UpdateManager.APP_NAME);
if (_umgr != null) {
_uhandler = new UpdateHandler(_context, _umgr, SnarkManager.this);
_umgr.register(_uhandler, UpdateType.ROUTER_SIGNED, UpdateMethod.TORRENT, 10);

View File

@@ -84,6 +84,7 @@ public class TrackerClient implements Runnable {
private final static long MIN_TRACKER_ANNOUNCE_INTERVAL = 15*60*1000;
private final static long MIN_DHT_ANNOUNCE_INTERVAL = 10*60*1000;
public static final int PORT = 6881;
private static final int MAX_TRACKERS = 12;
private final I2PSnarkUtil _util;
private final MetaInfo meta;
@@ -288,6 +289,7 @@ public class TrackerClient implements Runnable {
}
// announce list
// We completely ignore the BEP 12 processing rules
if (meta != null && !meta.isPrivate()) {
List<List<String>> list = meta.getAnnounceList();
if (list != null) {
@@ -300,6 +302,12 @@ public class TrackerClient implements Runnable {
_log.debug("Additional announce (list): [" + url + "] for infoHash: " + infoHash);
}
}
if (trackers.size() > 2) {
// shuffle everything but the primary
TCTracker pri = trackers.remove(0);
Collections.shuffle(trackers, _util.getContext().random());
trackers.add(0, pri);
}
}
}
@@ -345,7 +353,13 @@ public class TrackerClient implements Runnable {
private boolean isNewValidTracker(Set<Hash> existing, String ann) {
Hash h = getHostHash(ann);
if (h == null) {
_log.error("Bad announce URL: [" + ann + ']');
if (_log.shouldLog(Log.WARN))
_log.warn("Bad announce URL: [" + ann + ']');
return false;
}
if (existing.size() >= MAX_TRACKERS) {
if (_log.shouldLog(Log.INFO))
_log.info("Not using announce URL, we have enough: [" + ann + ']');
return false;
}
boolean rv = existing.add(h);

View File

@@ -1536,6 +1536,8 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
// TODO throttle
try {
byte[] payload = session.receiveMessage(msgId);
if (payload == null)
return;
_rxPkts.incrementAndGet();
_rxBytes.addAndGet(payload.length);
if (toPort == _qPort) {

View File

@@ -123,8 +123,10 @@ class BasicServlet extends HttpServlet
* Files are served from here
*/
protected void setResourceBase(File base) throws UnavailableException {
if (!base.isDirectory())
if (!base.isDirectory()) {
_log.log(Log.CRIT, "Configured i2psnark directory " + base + " does not exist");
throw new UnavailableException("Resource base does not exist: " + base);
}
_resourceBase = base;
if (_log.shouldLog(Log.INFO))
_log.info("Resource base is " + _resourceBase);

View File

@@ -1347,7 +1347,14 @@ public class I2PSnarkServlet extends BasicServlet {
}
// Torrent name column
out.write("</td><td class=\"snarkTorrentName\">");
out.write("</td><td class=\"snarkTorrentName\"");
if (isMultiFile) {
// link on the whole td
String jsec = encodedBaseName.replace("'", "\\'");
out.write(" onclick=\"document.location='" + jsec + "/';\">");
} else {
out.write('>');
}
if (remaining == 0 || isMultiFile) {
StringBuilder buf = new StringBuilder(128);
buf.append("<a href=\"").append(encodedBaseName);
@@ -2502,6 +2509,7 @@ public class I2PSnarkServlet extends BasicServlet {
String path=addPaths(base,encoded);
if (item.isDirectory() && !path.endsWith("/"))
path=addPaths(path,"/");
path = urlEncode(path);
String icon = toIcon(item);
buf.append("<TD class=\"snarkFileIcon\">");
@@ -2522,7 +2530,7 @@ public class I2PSnarkServlet extends BasicServlet {
buf.append("</TD><TD class=\"snarkFileName\">");
if (complete)
buf.append("<a href=\"").append(path).append("\">");
buf.append(item.getName());
buf.append(item.getName().replace("&", "&amp;"));
if (complete)
buf.append("</a>");
buf.append("</TD><TD ALIGN=right class=\"snarkFileSize\">");

View File

@@ -5,13 +5,18 @@ import java.io.File;
import net.i2p.I2PAppContext;
import net.i2p.util.FileUtil;
import org.eclipse.jetty.server.Server;
//import org.eclipse.jetty.server.Server;
/**
* @deprecated does not work
*/
public class RunStandalone {
/****
static {
System.setProperty("org.mortbay.http.Version.paranoid", "true");
System.setProperty("org.mortbay.xml.XmlParser.NotValidating", "true");
}
****/
private RunStandalone(String args[]) {}
@@ -21,6 +26,8 @@ public class RunStandalone {
}
public void start() {
throw new RuntimeException("unsupported");
/****
File workDir = new File(I2PAppContext.getGlobalContext().getTempDir(), "jetty-work");
boolean workDirRemoved = FileUtil.rmdir(workDir, false);
if (!workDirRemoved)
@@ -29,8 +36,6 @@ public class RunStandalone {
if (!workDirCreated)
System.err.println("ERROR: Unable to create Jetty temporary work directory");
throw new RuntimeException("unsupported");
/****
try {
_server = new Server("jetty-i2psnark.xml");
// just blow up NPE if we don't have a context

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,9 @@
<condition property="no.bundle">
<isfalse value="${require.gettext}" />
</condition>
<property name="javac.compilerargs" value="" />
<property name="javac.version" value="1.6" />
<property name="require.gettext" value="true" />
<target name="compile" depends="depend">
@@ -238,7 +240,7 @@
<arg value="-webapp" />
<arg value="../jsp/" />
</java>
<javac debug="true" deprecation="on" source="1.5" target="1.5"
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
destdir="../jsp/WEB-INF/classes/" srcdir="../jsp/WEB-INF/classes" includes="**/*.java">
<compilerarg line="${javac.compilerargs}" />

View File

@@ -53,6 +53,9 @@ import java.util.StringTokenizer;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicLong;
import gnu.getopt.Getopt;
import gnu.getopt.LongOpt;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.I2PClient;
@@ -107,18 +110,46 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
private final Set<ConnectionEventListener> listeners = new CopyOnWriteArraySet<ConnectionEventListener>();
public static void main(String[] args) throws IOException {
new I2PTunnel(args);
private static final int NOGUI = 99999;
private static final LongOpt[] longopts = new LongOpt[] {
new LongOpt("cli", LongOpt.NO_ARGUMENT, null, 'c'),
new LongOpt("die", LongOpt.NO_ARGUMENT, null, 'd'),
new LongOpt("gui", LongOpt.NO_ARGUMENT, null, 'g'),
new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h'),
new LongOpt("nocli", LongOpt.NO_ARGUMENT, null, 'w'),
new LongOpt("nogui", LongOpt.NO_ARGUMENT, null, NOGUI),
new LongOpt("wait", LongOpt.NO_ARGUMENT, null, 'w')
};
public static void main(String[] args) {
try {
new I2PTunnel(args);
} catch (IllegalArgumentException iae) {
System.err.println(iae.toString());
System.exit(1);
}
}
/**
* Standard constructor for embedded, uses args "-nocli -die" to return immediately
*/
public I2PTunnel() {
this(nocli_args);
}
/**
* See usage() for options
* @throws IllegalArgumentException
*/
public I2PTunnel(String[] args) {
this(args, null);
}
/**
* See usage() for options
* @param lsnr may be null
* @throws IllegalArgumentException
*/
public I2PTunnel(String[] args, ConnectionEventListener lsnr) {
super();
_context = I2PAppContext.getGlobalContext(); // new I2PAppContext();
@@ -134,37 +165,95 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
boolean checkRunByE = true;
boolean cli = true;
boolean dontDie = true;
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-die")) {
boolean error = false;
List<String> eargs = null;
Getopt g = new Getopt("i2ptunnel", args, "d::n:c::w::e:h::", longopts);
int c;
while ((c = g.getopt()) != -1) {
switch (c) {
case 'd': // -d, -die, --die
dontDie = false;
gui = false;
cli = false;
checkRunByE = false;
} else if (args[i].equals("-nogui")) {
break;
case 'n': // -noc, -nog, -nocli, -nogui
String a = g.getOptarg();
if (a.startsWith("oc")) {
gui = false;
cli = false;
checkRunByE = false;
break;
} else if (a.startsWith("og")) {
// fall thru
} else {
error = true;
break;
}
// fall thru for -nogui only
case NOGUI: // --nogui
gui = false;
_log.warn(getPrefix() + "The `-nogui' option of I2PTunnel is deprecated.\n"
if (_log.shouldLog(Log.WARN))
_log.warn(getPrefix() + "The `-nogui' option of I2PTunnel is deprecated.\n"
+ "Use `-cli', `-nocli' (aka `-wait') or `-die' instead.");
} else if (args[i].equals("-cli")) {
case 'c': // -c, -cli, --cli
gui = false;
cli = true;
checkRunByE = false;
} else if (args[i].equals("-nocli") || args[i].equals("-wait")) {
break;
case 'w': // -w, -wait, --nocli
gui = false;
cli = false;
checkRunByE = false;
} else if (args[i].equals("-e")) {
runCommand(args[i + 1], this);
i++;
break;
case 'e':
if (eargs == null)
eargs = new ArrayList<String>(4);
eargs.add(g.getOptarg());
if (checkRunByE) {
checkRunByE = false;
cli = false;
}
} else if (new File(args[i]).exists()) {
runCommand("run " + args[i], this);
} else {
System.out.println("Unknown parameter " + args[i]);
break;
case 'h':
case '?':
case ':':
default:
error = true;
}
}
int remaining = args.length - g.getOptind();
if (error || remaining > 1) {
System.err.println(usage());
throw new IllegalArgumentException();
}
if (eargs != null) {
for (String arg : eargs) {
runCommand(arg, this);
}
}
if (remaining == 1) {
String f = args[g.getOptind()];
File file = new File(f);
// This is probably just a problem with the options, so
// throw from here
if (!file.exists()) {
System.err.println(usage());
throw new IllegalArgumentException("Command file does not exist: " + f);
}
runCommand("run " + f, this);
}
if (gui) {
new I2PTunnelGUI(this);
} else if (cli) {
@@ -185,6 +274,9 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (eargs == null && remaining == 0 && dontDie) {
System.err.println(usage());
throw new IllegalArgumentException("Waiting for nothing! Specify gui, cli, command, command file, or die");
}
while (dontDie) {
@@ -197,6 +289,23 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
}
}
/** with newlines except for last line */
private static String usage() {
// not sure this all makes sense, just documenting what's above
return
"Usage: i2ptunnel [options] [commandFile]\n" +
" Default is to run the GUI.\n" +
" commandFile: run all commands in this file\n" +
" Options:\n" +
" -c, -cli, --cli : run the command line interface\n" +
" -d, -die, --die : exit immediately, do not wait for commands to finish\n" +
" -e 'command [args]' : run the command\n" +
" -h, --help : display this help\n" +
" -nocli, --nocli : do not run the command line interface or GUI\n" +
" -nogui, --nogui : do not run the GUI\n" +
" -w, -wait, --wait : do not run the command line interface or GUI";
}
/** @return A copy, non-null */
List<I2PSession> getSessions() {
return new ArrayList<I2PSession>(_sessions);
@@ -312,30 +421,30 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
* @param l logger to receive events and output
*/
private static void runHelp(Logging l) {
l.log("Command list:");
l.log("Command list:\n" +
// alphabetical please...
l.log(" auth <username> <password>");
l.log(" client <port> <pubkey>[,<pubkey,...]|file:<pubkeyfile> [<sharedClient>]");
l.log(" clientoptions [-acx] [key=value ]*");
l.log(" close [forced] <jobnumber>|all");
l.log(" config [-s] <i2phost> <i2pport>");
l.log(" connectclient <port> [<sharedClient>] [<proxy>]");
l.log(" genkeys <privkeyfile> [<pubkeyfile>]");
l.log(" gentextkeys");
l.log(" httpbidirserver <host> <port> <proxyport> <spoofedhost> <privkeyfile>");
l.log(" httpclient <port> [<sharedClient>] [<proxy>]");
l.log(" httpserver <host> <port> <spoofedhost> <privkeyfile>");
l.log(" ircclient <port> <pubkey>[,<pubkey,...]|file:<pubkeyfile> [<sharedClient>]");
l.log(" list");
l.log(" listen_on <ip>");
l.log(" lookup <name>");
l.log(" owndest yes|no");
l.log(" ping <args>");
l.log(" quit");
l.log(" read_timeout <msecs>");
l.log(" run <commandfile>");
l.log(" server <host> <port> <privkeyfile>");
l.log(" textserver <host> <port> <privkey>");
" auth <username> <password>\n" +
" client <port> <pubkey>[,<pubkey,...]|file:<pubkeyfile> [<sharedClient>]\n" +
" clientoptions [-acx] [key=value ]*\n" +
" close [forced] <jobnumber>|all\n" +
" config [-s] <i2phost> <i2pport>\n" +
" connectclient <port> [<sharedClient>] [<proxy>]\n" +
" genkeys <privkeyfile> [<pubkeyfile>]\n" +
" gentextkeys\n" +
" httpbidirserver <host> <port> <proxyport> <spoofedhost> <privkeyfile>\n" +
" httpclient <port> [<sharedClient>] [<proxy>]\n" +
" httpserver <host> <port> <spoofedhost> <privkeyfile>\n" +
" ircclient <port> <pubkey>[,<pubkey,...]|file:<pubkeyfile> [<sharedClient>]\n" +
" list\n" +
" listen_on <ip>\n" +
" lookup <name>\n" +
" owndest yes|no\n" +
" ping <args>\n" +
" quit\n" +
" read_timeout <msecs>\n" +
" run <commandfile>\n" +
" server <host> <port> <privkeyfile>\n" +
" textserver <host> <port> <privkey>\n");
}
/**
@@ -378,12 +487,12 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
_clientOptions.setProperty(key, val);
}
} else {
l.log("Usage:");
l.log(" clientoptions [key=value ]* // sets current options");
l.log(" clientoptions -a [key=value ]* // adds to current options");
l.log(" clientoptions -c // clears current options");
l.log(" clientoptions -x [key ]* // removes listed options");
l.log("Current options:");
l.log("Usage:\n" +
" clientoptions [key=value ]* // sets current options\n" +
" clientoptions -a [key=value ]* // adds to current options\n" +
" clientoptions -c // clears current options\n" +
" clientoptions -x [key ]* // removes listed options\n" +
"Current options:\n");
Properties p = new OrderedProperties();
p.putAll(_clientOptions);
for (Map.Entry<Object, Object> e : p.entrySet()) {
@@ -466,8 +575,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
notifyEvent("serverTaskId", Integer.valueOf(serv.getId()));
return;
} else {
l.log("server <host> <port> <privkeyfile>");
l.log(" creates a server that sends all incoming data\n" + " of its destination to host:port.");
l.log("server <host> <port> <privkeyfile>\n" +
" creates a server that sends all incoming data\n" + " of its destination to host:port.");
notifyEvent("serverTaskId", Integer.valueOf(-1));
}
}
@@ -517,8 +626,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
notifyEvent("serverTaskId", Integer.valueOf(serv.getId()));
return;
} else {
l.log("server <host> <port> <privkeyfile>");
l.log(" creates a server that sends all incoming data\n" + " of its destination to host:port.");
l.log("server <host> <port> <privkeyfile>\n" +
" creates a server that sends all incoming data\n" + " of its destination to host:port.");
notifyEvent("serverTaskId", Integer.valueOf(-1));
}
}
@@ -578,8 +687,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
notifyEvent("serverTaskId", Integer.valueOf(serv.getId()));
return;
} else {
l.log("httpserver <host> <port> <spoofedhost> <privkeyfile>");
l.log(" creates an HTTP server that sends all incoming data\n"
l.log("httpserver <host> <port> <spoofedhost> <privkeyfile>\n" +
" creates an HTTP server that sends all incoming data\n"
+ " of its destination to host:port., filtering the HTTP\n"
+ " headers so it looks like the request is to the spoofed host.");
notifyEvent("serverTaskId", Integer.valueOf(-1));
@@ -654,8 +763,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
notifyEvent("serverTaskId", Integer.valueOf(serv.getId()));
return;
} else {
l.log("httpserver <host> <port> <proxyport> <spoofedhost> <privkeyfile>");
l.log(" creates a bidirectional HTTP server that sends all incoming data\n"
l.log("httpserver <host> <port> <proxyport> <spoofedhost> <privkeyfile>\n" +
" creates a bidirectional HTTP server that sends all incoming data\n"
+ " of its destination to host:port., filtering the HTTP\n"
+ " headers so it looks like the request is to the spoofed host,"
+ " and listens to host:proxyport to proxy HTTP requests.");
@@ -707,8 +816,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
addtask(serv);
notifyEvent("serverTaskId", Integer.valueOf(serv.getId()));
} else {
l.log("textserver <host> <port> <privkey>");
l.log(" creates a server that sends all incoming data\n" + " of its destination to host:port.");
l.log("textserver <host> <port> <privkey>\n" +
" creates a server that sends all incoming data\n" + " of its destination to host:port.");
notifyEvent("textserverTaskId", Integer.valueOf(-1));
}
}
@@ -765,8 +874,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("client <port> <pubkey>[,<pubkey>]|file:<pubkeyfile>[ <sharedClient>] [<privKeyFile>]");
l.log(" creates a client that forwards port to the pubkey.\n"
l.log("client <port> <pubkey>[,<pubkey>]|file:<pubkeyfile>[ <sharedClient>] [<privKeyFile>]\n" +
" creates a client that forwards port to the pubkey.\n"
+ " use 0 as port to get a free port assigned. If you specify\n"
+ " a comma delimited list of pubkeys, it will rotate among them\n"
+ " randomlyl. sharedClient indicates if this client shares \n"
@@ -841,11 +950,11 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("httpclient <port> [<sharedClient>] [<proxy>]");
l.log(" creates a client that distributes HTTP requests.");
l.log(" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)");
l.log(" <proxy> (optional) indicates a proxy server to be used");
l.log(" when trying to access an address out of the .i2p domain");
l.log("httpclient <port> [<sharedClient>] [<proxy>]\n" +
" creates a client that distributes HTTP requests.\n" +
" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)\n" +
" <proxy> (optional) indicates a proxy server to be used\n" +
" when trying to access an address out of the .i2p domain");
notifyEvent("httpclientTaskId", Integer.valueOf(-1));
}
}
@@ -908,11 +1017,11 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("connectclient <port> [<sharedClient>] [<proxy>]");
l.log(" creates a client that for SSL/HTTPS requests.");
l.log(" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)");
l.log(" <proxy> (optional) indicates a proxy server to be used");
l.log(" when trying to access an address out of the .i2p domain");
l.log("connectclient <port> [<sharedClient>] [<proxy>]\n" +
" creates a client that for SSL/HTTPS requests.\n" +
" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)\n" +
" <proxy> (optional) indicates a proxy server to be used\n" +
" when trying to access an address out of the .i2p domain\n");
}
}
@@ -975,9 +1084,9 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("ircclient <port> [<sharedClient> [<privKeyFile>]]");
l.log(" creates a client that filter IRC protocol.");
l.log(" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)");
l.log("ircclient <port> [<sharedClient> [<privKeyFile>]]\n" +
" creates a client that filter IRC protocol.\n" +
" <sharedClient> (optional) indicates if this client shares tunnels with other clients (true of false)\n");
notifyEvent("ircclientTaskId", Integer.valueOf(-1));
}
}
@@ -1028,8 +1137,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("sockstunnel <port>");
l.log(" creates a tunnel that distributes SOCKS requests.");
l.log("sockstunnel <port>\n" +
" creates a tunnel that distributes SOCKS requests.");
notifyEvent("sockstunnelTaskId", Integer.valueOf(-1));
}
}
@@ -1075,8 +1184,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("socksirctunnel <port> [<sharedClient> [<privKeyFile>]]");
l.log(" creates a tunnel for SOCKS IRC.");
l.log("socksirctunnel <port> [<sharedClient> [<privKeyFile>]]\n" +
" creates a tunnel for SOCKS IRC.");
notifyEvent("sockstunnelTaskId", Integer.valueOf(-1));
}
}
@@ -1125,8 +1234,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
throw iae;
}
} else {
l.log("streamrclient <host> <port> <destination>");
l.log(" creates a tunnel that receives streaming data.");
l.log("streamrclient <host> <port> <destination>\n" +
" creates a tunnel that receives streaming data.");
notifyEvent("streamrtunnelTaskId", Integer.valueOf(-1));
}
}
@@ -1166,8 +1275,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
addtask(task);
notifyEvent("streamrtunnelTaskId", Integer.valueOf(task.getId()));
} else {
l.log("streamrserver <port> <privkeyfile>");
l.log(" creates a tunnel that sends streaming data.");
l.log("streamrserver <port> <privkeyfile>\n" +
" creates a tunnel that sends streaming data.");
notifyEvent("streamrtunnelTaskId", Integer.valueOf(-1));
}
}
@@ -1195,12 +1304,12 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
port = args[i];
notifyEvent("configResult", "ok");
} else {
l.log("Usage:");
l.log(" config [-s] <i2phost> <i2pport>");
l.log(" sets the connection to the i2p router.");
l.log("Current setting:");
boolean ssl = Boolean.parseBoolean(_clientOptions.getProperty("i2cp.SSL"));
l.log(" " + host + ' ' + port + (ssl ? " SSL" : ""));
l.log("Usage:\n" +
" config [-s] <i2phost> <i2pport>\n" +
" sets the connection to the i2p router.\n" +
"Current setting:\n" +
" " + host + ' ' + port + (ssl ? " SSL" : ""));
notifyEvent("configResult", "error");
}
}
@@ -1217,9 +1326,9 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
_clientOptions.setProperty("i2cp.username", args[0]);
_clientOptions.setProperty("i2cp.password", args[1]);
} else {
l.log("Usage:");
l.log(" auth <username> <password>");
l.log(" Sets the i2cp credentials");
l.log("Usage:\n" +
" auth <username> <password>\n" +
" Sets the i2cp credentials");
}
}
@@ -1237,8 +1346,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
ownDest = args[0].equalsIgnoreCase("yes");
notifyEvent("owndestResult", "ok");
} else {
l.log("owndest yes|no");
l.log(" Specifies whether to use its own destination \n" + " for each outgoing tunnel");
l.log("owndest yes|no\n" +
" Specifies whether to use its own destination \n" + " for each outgoing tunnel");
notifyEvent("owndestResult", "error");
}
}
@@ -1256,8 +1365,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
listenHost = args[0];
notifyEvent("listen_onResult", "ok");
} else {
l.log("listen_on <ip>");
l.log(" sets the interface to listen for the I2PClient.");
l.log("listen_on <ip>\n" +
" sets the interface to listen for the I2PClient.");
notifyEvent("listen_onResult", "error");
}
}
@@ -1279,15 +1388,16 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
}
notifyEvent("read_timeoutResult", "ok");
} else {
l.log("read_timeout <msecs>");
l.log(" sets the read timeout (in milliseconds) for I2P connections\n"
l.log("read_timeout <msecs>\n" +
" sets the read timeout (in milliseconds) for I2P connections\n"
+" Negative values will make the connections wait forever");
notifyEvent("read_timeoutResult", "error");
}
}
/**
* Generate a new keypair
* Generate a new keypair.
* Does NOT support non-default sig types.
* Deprecated - only used by CLI
*
* Sets the event "genkeysResult" = "ok" or "error" after the generation is complete
@@ -1307,8 +1417,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
return;
}
} else if (args.length != 1) {
l.log("genkeys <privkeyfile> [<pubkeyfile>]");
l.log(" creates a new keypair and prints the public key.\n"
l.log("genkeys <privkeyfile> [<pubkeyfile>]\n" +
" creates a new keypair and prints the public key.\n"
+ " if pubkeyfile is given, saves the public key there." + "\n"
+ " if the privkeyfile already exists, just print/save" + "the pubkey.");
//notifyEvent("genkeysResult", "error");
@@ -1326,11 +1436,14 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
l.log("Error generating keys - " + ioe.getMessage());
//notifyEvent("genkeysResult", "error");
//_log.error(getPrefix() + "Error generating keys", ioe);
} finally {
if(pubdest != null) try { pubdest.close(); } catch(IOException ioe) {}
}
}
/**
* Generate a new keypair
* Generate a new keypair.
* Does NOT support non-default sig types.
* Deprecated - only used by CLI
*
* Sets the event "privateKey" = base64 of the privateKey stream and
@@ -1339,7 +1452,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
* @param l logger to receive events and output
*/
private static void runGenTextKeys(Logging l) {
ByteArrayOutputStream privkey = new ByteArrayOutputStream(512);
ByteArrayOutputStream privkey = new ByteArrayOutputStream(1024);
ByteArrayOutputStream pubkey = new ByteArrayOutputStream(512);
makeKey(privkey, pubkey, l);
l.log("Private key: " + Base64.encode(privkey.toByteArray()));
@@ -1394,8 +1507,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
*/
public void runClose(String args[], Logging l) {
if (args.length == 0 || args.length > 2) {
l.log("close [forced] <jobnumber>|all");
l.log(" stop running tasks. either only one or all.\n"
l.log("close [forced] <jobnumber>|all\n" +
" stop running tasks. either only one or all.\n"
+ " use 'forced' to also stop tasks with active connections.\n"
+ " use the 'list' command to show the job numbers");
notifyEvent("closeResult", "error");
@@ -1456,8 +1569,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
notifyEvent("runResult", "error");
}
} else {
l.log("run <commandfile>");
l.log(" loads commandfile and runs each line in it. \n"
l.log("run <commandfile>\n" +
" loads commandfile and runs each line in it. \n"
+ " You can also give the filename on the commandline.");
notifyEvent("runResult", "error");
}
@@ -1474,8 +1587,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
*/
private void runLookup(String args[], Logging l) {
if (args.length != 1) {
l.log("lookup <name>");
l.log(" try to resolve the name into a destination key");
l.log("lookup <name>\n" +
" try to resolve the name into a destination key");
notifyEvent("lookupResult", "invalidUsage");
} else {
try {
@@ -1513,15 +1626,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
addtask(task);
notifyEvent("pingTaskId", Integer.valueOf(task.getId()));
} else {
l.log("ping <opts> <b64dest|host>");
l.log("ping <opts> -h (pings all hosts in hosts.txt)");
l.log("ping <opts> -l <destlistfile> (pings a list of hosts in a file)");
l.log(" Options:\n" +
" -c (require 5 consecutive pings to report success)\n" +
" -m maxSimultaneousPings (default 10)\n" +
" -n numberOfPings (default 3)\n" +
" -t timeout (ms, default 30000)\n");
l.log(" Tests communication with peers.\n");
l.log(I2Ping.usage());
notifyEvent("pingTaskId", Integer.valueOf(-1));
}
}
@@ -1593,10 +1698,11 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
/**
* Create a new destination, storing the destination and its private keys where
* instructed
* instructed.
* Does NOT support non-default sig types.
* Deprecated - only used by CLI
*
* @param writeTo location to store the private keys
* @param writeTo location to store the destination and private keys
* @param pubDest location to store the destination
* @param l logger to send messages to
*/
@@ -1605,8 +1711,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
l.log("Generating new keys...");
I2PClient client = I2PClientFactory.createClient();
Destination d = client.createDestination(writeTo);
l.log("Secret key saved.");
l.log("Public key: " + d.toBase64());
l.log("Secret key saved.\n" +
"Public key: " + d.toBase64());
writeTo.flush();
writeTo.close();
writePubKey(d, pubDest, l);

View File

@@ -875,7 +875,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
if(!Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT))) {
// let's not advertise to external sites that we are from I2P
if(usingWWWProxy || usingInternalOutproxy) {
newRequest.append("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6\r\n");
newRequest.append("User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0\r\n");
} else {
newRequest.append("User-Agent: MYOB/6.66 (AN/ON)\r\n");
}

View File

@@ -16,6 +16,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -24,6 +26,7 @@ import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.util.EepGet;
import net.i2p.util.EventDispatcher;
import net.i2p.util.InternalSocket;
import net.i2p.util.Log;
@@ -170,6 +173,33 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
}
}
/**
* Update the outproxy list then call super.
*
* @since 0.9.12
*/
@Override
public void optionsUpdated(I2PTunnel tunnel) {
if (getTunnel() != tunnel)
return;
Properties props = tunnel.getClientOptions();
// see TunnelController.setSessionOptions()
String proxies = props.getProperty("proxyList");
if (proxies != null) {
StringTokenizer tok = new StringTokenizer(proxies, ", ");
synchronized(_proxyList) {
_proxyList.clear();
while (tok.hasMoreTokens())
_proxyList.add(tok.nextToken().trim());
}
} else {
synchronized(_proxyList) {
_proxyList.clear();
}
}
super.optionsUpdated(tunnel);
}
/**
* @since 0.9.4
*/
@@ -409,60 +439,8 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
* @since 0.9.4
*/
private static Map<String, String> parseArgs(String args) {
Map<String, String> rv = new HashMap<String, String>(8);
char data[] = args.toCharArray();
StringBuilder buf = new StringBuilder(32);
boolean isQuoted = false;
String key = null;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case '\"':
if (isQuoted) {
// keys never quoted
if (key != null) {
rv.put(key, buf.toString().trim());
key = null;
}
buf.setLength(0);
}
isQuoted = !isQuoted;
break;
case ' ':
case '\r':
case '\n':
case '\t':
case ',':
// whitespace - if we're in a quoted section, keep this as part of the quote,
// otherwise use it as a delim
if (isQuoted) {
buf.append(data[i]);
} else {
if (key != null) {
rv.put(key, buf.toString().trim());
key = null;
}
buf.setLength(0);
}
break;
case '=':
if (isQuoted) {
buf.append(data[i]);
} else {
key = buf.toString().trim().toLowerCase(Locale.US);
buf.setLength(0);
}
break;
default:
buf.append(data[i]);
break;
}
}
if (key != null)
rv.put(key, buf.toString().trim());
return rv;
// moved to EepGet, since it needs this too
return EepGet.parseAuthArgs(args);
}
//////// Error page stuff

View File

@@ -48,6 +48,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
public static final String OPT_POST_TOTAL_BAN_TIME = "postTotalBanTime";
public static final String OPT_POST_MAX = "maxPosts";
public static final String OPT_POST_TOTAL_MAX = "maxTotalPosts";
public static final String OPT_REJECT_INPROXY = "rejectInproxy";
public static final int DEFAULT_POST_WINDOW = 5*60;
public static final int DEFAULT_POST_BAN_TIME = 30*60;
public static final int DEFAULT_POST_TOTAL_BAN_TIME = 10*60;
@@ -95,6 +96,19 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
"</body></html>")
.getBytes();
private final static byte[] ERR_INPROXY =
("HTTP/1.1 403 Denied\r\n"+
"Content-Type: text/html; charset=iso-8859-1\r\n"+
"Cache-control: no-cache\r\n"+
"Connection: close\r\n"+
"Proxy-Connection: close\r\n"+
"\r\n"+
"<html><head><title>403 Denied</title></head>\n"+
"<body><h2>403 Denied</h2>\n" +
"<p>Inproxy access denied. You must run <a href=\"https://geti2p.net/\">I2P</a> to access this site.</p>\n" +
"</body></html>")
.getBytes();
public I2PTunnelHTTPServer(InetAddress host, int port, String privData, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel) {
super(host, port, privData, l, notifyThis, tunnel);
setupI2PTunnelHTTPServer(spoofHost);
@@ -198,6 +212,24 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
CLIENT_SKIPHEADERS, getTunnel().getContext());
long afterHeaders = getTunnel().getContext().clock().now();
Properties opts = getTunnel().getClientOptions();
if (Boolean.parseBoolean(opts.getProperty(OPT_REJECT_INPROXY)) &&
(headers.containsKey("X-Forwarded-For") ||
headers.containsKey("X-Forwarded-Server") ||
headers.containsKey("X-Forwarded-Host"))) {
if (_log.shouldLog(Log.WARN))
_log.warn("Refusing inproxy access: " + peerHash.toBase64());
try {
// Send a 403, so the user doesn't get an HTTP Proxy error message
// and blame his router or the network.
socket.getOutputStream().write(ERR_INPROXY);
} catch (IOException ioe) {}
try {
socket.close();
} catch (IOException ioe) {}
return;
}
if (_postThrottler != null &&
command.length() >= 5 &&
command.substring(0, 5).toUpperCase(Locale.US).equals("POST ")) {
@@ -221,7 +253,6 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
addEntry(headers, DEST64_HEADER, socket.getPeerDestination().toBase64());
// Port-specific spoofhost
Properties opts = getTunnel().getClientOptions();
String spoofHost;
int ourPort = socket.getLocalPort();
if (ourPort != 80 && ourPort > 0 && ourPort <= 65535 && opts != null) {
@@ -246,7 +277,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
setEntry(headers, "Accept-encoding", "");
socket.setReadTimeout(readTimeout);
Socket s = getSocket(socket.getLocalPort());
Socket s = getSocket(socket.getPeerDestination().calculateHash(), socket.getLocalPort());
long afterSocket = getTunnel().getContext().clock().now();
// instead of i2ptunnelrunner, use something that reads the HTTP
// request from the socket, modifies the headers, sends the request to the
@@ -309,6 +340,13 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
if (_log.shouldLog(Log.WARN))
_log.warn("Error while receiving the new HTTP request", ex);
} catch (OutOfMemoryError oom) {
// Often actually a file handle limit problem so we can safely send a response
// java.lang.OutOfMemoryError: unable to create new native thread
try {
// Send a 503, so the user doesn't get an HTTP Proxy error message
// and blame his router or the network.
socket.getOutputStream().write(ERR_UNAVAILABLE);
} catch (IOException ioe) {}
try {
socket.close();
} catch (IOException ioe) {}
@@ -668,15 +706,21 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
else
value = "";
if ("accept-encoding".equals(name.toLowerCase(Locale.US)))
String lcName = name.toLowerCase(Locale.US);
if ("accept-encoding".equals(lcName))
name = "Accept-encoding";
else if ("x-accept-encoding".equals(name.toLowerCase(Locale.US)))
else if ("x-accept-encoding".equals(lcName))
name = "X-Accept-encoding";
else if ("x-forwarded-for".equals(lcName))
name = "X-Forwarded-For";
else if ("x-forwarded-server".equals(lcName))
name = "X-Forwarded-Server";
else if ("x-forwarded-host".equals(lcName))
name = "X-Forwarded-Host";
// For incoming, we remove certain headers to prevent spoofing.
// For outgoing, we remove certain headers to improve anonymity.
boolean skip = false;
String lcName = name.toLowerCase(Locale.US);
for (String skipHeader: skipHeaders) {
if (skipHeader.toLowerCase(Locale.US).equals(lcName)) {
skip = true;

View File

@@ -137,7 +137,7 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
buf.append("\r\n");
modifiedRegistration = buf.toString();
}
Socket s = getSocket(socket.getLocalPort());
Socket s = getSocket(socket.getPeerDestination().calculateHash(), socket.getLocalPort());
new I2PTunnelRunner(s, socket, slock, null, modifiedRegistration.getBytes(), null);
} catch (SocketException ex) {
try {

View File

@@ -18,6 +18,7 @@ import javax.net.ssl.SSLException;
import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.data.ByteArray;
import net.i2p.data.DataHelper;
import net.i2p.util.ByteCache;
import net.i2p.util.Clock;
import net.i2p.util.I2PAppThread;
@@ -137,12 +138,15 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
protected InputStream getSocketIn() throws IOException { return s.getInputStream(); }
protected OutputStream getSocketOut() throws IOException { return s.getOutputStream(); }
private static final byte[] POST = { 'P', 'O', 'S', 'T', ' ' };
@Override
public void run() {
try {
InputStream in = getSocketIn();
OutputStream out = getSocketOut(); // = new BufferedOutputStream(s.getOutputStream(), NETWORK_BUFFER_SIZE);
i2ps.setSocketErrorListener(this);
// unimplemented in streaming
//i2ps.setSocketErrorListener(this);
InputStream i2pin = i2ps.getInputStream();
OutputStream i2pout = i2ps.getOutputStream(); //new BufferedOutputStream(i2ps.getOutputStream(), MAX_PACKET_SIZE);
if (initialI2PData != null) {
@@ -159,8 +163,12 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
// So we now get a fast return from flush(), and can do it here to save 250 ms.
// To make sure we are under the initial window size and don't hang waiting for accept,
// only flush if it fits in one message.
if (initialI2PData.length <= 1730) // ConnectionOptions.DEFAULT_MAX_MESSAGE_SIZE
i2pout.flush();
if (initialI2PData.length <= 1730) { // ConnectionOptions.DEFAULT_MAX_MESSAGE_SIZE
// Don't flush if POST, so we can get POST data into the initial packet
if (initialI2PData.length < 5 ||
!DataHelper.eq(POST, 0, initialI2PData, 0, 5))
i2pout.flush();
}
//}
}
if (initialSocketData != null) {
@@ -239,7 +247,8 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
if (_log.shouldLog(Log.WARN))
_log.warn("Could not close I2PSocket", ex);
}
i2ps.setSocketErrorListener(null);
// unimplemented in streaming
//i2ps.setSocketErrorListener(null);
}
}
}

View File

@@ -11,6 +11,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.Inet4Address;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
@@ -33,6 +34,7 @@ import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
import net.i2p.data.Base64;
import net.i2p.data.Hash;
import net.i2p.util.EventDispatcher;
import net.i2p.util.I2PAppThread;
import net.i2p.util.I2PSSLSocketFactory;
@@ -62,6 +64,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
private static final String PROP_USE_POOL = "i2ptunnel.usePool";
private static final boolean DEFAULT_USE_POOL = true;
public static final String PROP_USE_SSL = "useSSL";
public static final String PROP_UNIQUE_LOCAL = "enableUniqueLocal";
/** apparently unused */
protected static volatile long __serverId = 0;
/** max number of threads - this many slowlorisses will DOS this server, but too high could OOM the JVM */
@@ -518,7 +521,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
//threads.
try {
socket.setReadTimeout(readTimeout);
Socket s = getSocket(socket.getLocalPort());
Socket s = getSocket(socket.getPeerDestination().calculateHash(), socket.getLocalPort());
afterSocket = getTunnel().getContext().clock().now();
new I2PTunnelRunner(s, socket, slock, null, null);
@@ -543,9 +546,10 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
* To configure a specific host:port as the server for incoming port xx,
* set option targetForPort.xx=host:port
*
* @param from may be used to construct local address since 0.9.13
* @since 0.9.9
*/
protected Socket getSocket(int incomingPort) throws IOException {
protected Socket getSocket(Hash from, int incomingPort) throws IOException {
InetAddress host = remoteHost;
int port = remotePort;
if (incomingPort != 0 && !_socketMap.isEmpty()) {
@@ -557,16 +561,17 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
port = isa.getPort();
}
}
return getSocket(host, port);
return getSocket(from, host, port);
}
/**
* Get a regular or SSL socket depending on config.
* The SSL config applies to all hosts/ports.
*
* @param from may be used to construct local address since 0.9.13
* @since 0.9.9
*/
protected Socket getSocket(InetAddress remoteHost, int remotePort) throws IOException {
protected Socket getSocket(Hash from, InetAddress remoteHost, int remotePort) throws IOException {
String opt = getTunnel().getClientOptions().getProperty(PROP_USE_SSL);
if (Boolean.parseBoolean(opt)) {
synchronized(sslLock) {
@@ -583,7 +588,26 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
}
return _sslFactory.createSocket(remoteHost, remotePort);
} else {
return new Socket(remoteHost, remotePort);
// as suggested in https://lists.torproject.org/pipermail/tor-dev/2014-March/006576.html
boolean unique = Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_UNIQUE_LOCAL));
if (unique && remoteHost.isLoopbackAddress()) {
byte[] addr;
if (remoteHost instanceof Inet4Address) {
addr = new byte[4];
addr[0] = 127;
System.arraycopy(from.getData(), 0, addr, 1, 3);
} else {
addr = new byte[16];
addr[0] = (byte) 0xfd;
System.arraycopy(from.getData(), 0, addr, 1, 15);
}
InetAddress local = InetAddress.getByAddress(addr);
// Javadocs say local port of 0 allowed in Java 7.
// Not clear if supported in Java 6 or not.
return new Socket(remoteHost, remotePort, local, 0);
} else {
return new Socket(remoteHost, remotePort);
}
}
}
}

View File

@@ -11,6 +11,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import gnu.getopt.Getopt;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.I2PSession;
@@ -86,48 +88,76 @@ public class I2Ping extends I2PTunnelClientBase {
int count = PING_COUNT;
boolean countPing = false;
boolean reportTimes = true;
while (true) {
if (cmd.startsWith("-t ")) { // timeout
cmd = cmd.substring(3);
int pos = cmd.indexOf(" ");
if (pos == -1) {
l.log("Syntax error");
return;
} else {
timeout = Long.parseLong(cmd.substring(0, pos));
String hostListFile = null;
int localPort = 0;
int remotePort = 0;
boolean error = false;
String[] argv = cmd.split(" ");
Getopt g = new Getopt("ping", argv, "t:m:n:chl:f:p:");
int c;
while ((c = g.getopt()) != -1) {
switch (c) {
case 't': // timeout
timeout = Long.parseLong(g.getOptarg());
// convenience, convert msec to sec
if (timeout < 100)
timeout *= 1000;
cmd = cmd.substring(pos + 1);
}
} else if (cmd.startsWith("-m ")) { // max simultaneous pings
cmd = cmd.substring(3);
int pos = cmd.indexOf(" ");
if (pos == -1) {
l.log("Syntax error");
return;
} else {
MAX_SIMUL_PINGS = Integer.parseInt(cmd.substring(0, pos));
cmd = cmd.substring(pos + 1);
}
} else if (cmd.startsWith("-n ")) { // number of pings
cmd = cmd.substring(3);
int pos = cmd.indexOf(" ");
if (pos == -1) {
l.log("Syntax error");
return;
} else {
count = Integer.parseInt(cmd.substring(0, pos));
cmd = cmd.substring(pos + 1);
}
} else if (cmd.startsWith("-c ")) { // "count" ping
break;
case 'm': // max simultaneous pings
MAX_SIMUL_PINGS = Integer.parseInt(g.getOptarg());
break;
case 'n': // number of pings
count = Integer.parseInt(g.getOptarg());
break;
case 'c': // "count" ping
countPing = true;
count = CPING_COUNT;
cmd = cmd.substring(3);
} else if (cmd.equals("-h")) { // ping all hosts
cmd = "-l hosts.txt";
} else if (cmd.startsWith("-l ")) { // ping a list of hosts
BufferedReader br = new BufferedReader(new FileReader(cmd.substring(3)));
break;
case 'h': // ping all hosts
if (hostListFile != null)
error = true;
else
hostListFile = "hosts.txt";
break;
case 'l': // ping a list of hosts
if (hostListFile != null)
error = true;
else
hostListFile = g.getOptarg();
break;
case 'f': // local port
localPort = Integer.parseInt(g.getOptarg());
break;
case 'p': // remote port
remotePort = Integer.parseInt(g.getOptarg());
break;
case '?':
case ':':
default:
error = true;
}
}
int remaining = argv.length - g.getOptind();
if (error ||
remaining > 1 ||
(remaining <= 0 && hostListFile == null) ||
(remaining > 0 && hostListFile != null)) {
System.out.println(usage());
return;
}
if (hostListFile != null) {
BufferedReader br = new BufferedReader(new FileReader(hostListFile));
String line;
List<PingHandler> pingHandlers = new ArrayList<PingHandler>();
int i = 0;
@@ -138,7 +168,8 @@ public class I2Ping extends I2PTunnelClientBase {
if (line.indexOf("=") != -1) { // maybe file is hosts.txt?
line = line.substring(0, line.indexOf("="));
}
PingHandler ph = new PingHandler(line, count, timeout, countPing, reportTimes);
PingHandler ph = new PingHandler(line, count, localPort, remotePort,
timeout, countPing, reportTimes);
ph.start();
pingHandlers.add(ph);
if (++i > 1)
@@ -148,13 +179,31 @@ public class I2Ping extends I2PTunnelClientBase {
for (Thread t : pingHandlers)
t.join();
return;
} else {
Thread t = new PingHandler(cmd, count, timeout, countPing, reportTimes);
t.start();
t.join();
return;
}
}
String host = argv[g.getOptind()];
Thread t = new PingHandler(host, count, localPort, remotePort,
timeout, countPing, reportTimes);
t.start();
t.join();
}
/**
* With newlines except for last line
* @since 0.9.12
*/
public static String usage() {
return
"ping <opts> <b64dest|host>\n" +
"ping <opts> -h (pings all hosts in hosts.txt)\n" +
"ping <opts> -l <destlistfile> (pings a list of hosts in a file)\n" +
"Options:\n" +
" -c (require 5 consecutive pings to report success)\n" +
" -m maxSimultaneousPings (default 10)\n" +
" -n numberOfPings (default 3)\n" +
" -t timeout (ms, default 30000)\n" +
" -f fromPort\n" +
" -p toPort";
}
@Override
@@ -170,7 +219,7 @@ public class I2Ping extends I2PTunnelClientBase {
return true;
}
private boolean ping(Destination dest, long timeout) throws I2PException {
private boolean ping(Destination dest, int fromPort, int toPort, long timeout) throws I2PException {
try {
synchronized (simulLock) {
while (simulPings >= MAX_SIMUL_PINGS) {
@@ -183,7 +232,7 @@ public class I2Ping extends I2PTunnelClientBase {
}
lastPingTime = System.currentTimeMillis();
}
boolean sent = sockMgr.ping(dest, timeout);
boolean sent = sockMgr.ping(dest, fromPort, toPort, timeout);
synchronized (simulLock) {
simulPings--;
simulLock.notifyAll();
@@ -207,15 +256,20 @@ public class I2Ping extends I2PTunnelClientBase {
private final long timeout;
private final boolean countPing;
private final boolean reportTimes;
private final int localPort;
private final int remotePort;
/**
* As of 0.9.11, does NOT start itself.
* Caller must call start()
* @param dest b64 or b32 or host name
*/
public PingHandler(String dest, int count, long timeout, boolean countPings, boolean report) {
public PingHandler(String dest, int count, int fromPort, int toPort,
long timeout, boolean countPings, boolean report) {
this.destination = dest;
cnt = count;
localPort = fromPort;
remotePort = toPort;
this.timeout = timeout;
countPing = countPings;
reportTimes = report;
@@ -235,8 +289,7 @@ public class I2Ping extends I2PTunnelClientBase {
long totalTime = 0;
StringBuilder pingResults = new StringBuilder(2 * cnt + destination.length() + 3);
for (int i = 0; i < cnt; i++) {
boolean sent;
sent = ping(dest, timeout);
boolean sent = ping(dest, localPort, remotePort, timeout);
if (countPing) {
if (!sent) {
pingResults.append(i).append(" ");

View File

@@ -7,11 +7,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.I2PClient;
import net.i2p.client.I2PClientFactory;
import net.i2p.client.I2PSession;
import net.i2p.crypto.SigType;
import net.i2p.data.Base32;
import net.i2p.data.Destination;
import net.i2p.i2ptunnel.socks.I2PSOCKSTunnel;
@@ -49,8 +51,8 @@ public class TunnelController implements Logging {
* the prefix should be used (and, in turn, that prefix should be stripped off
* before being interpreted by this controller)
*
* @param config original key=value mapping
* @param prefix beginning of key values that are relevent to this tunnel
* @param config original key=value mapping non-null
* @param prefix beginning of key values that are relevant to this tunnel
*/
public TunnelController(Properties config, String prefix) {
this(config, prefix, true);
@@ -58,6 +60,8 @@ public class TunnelController implements Logging {
/**
*
* @param config original key=value mapping non-null
* @param prefix beginning of key values that are relevant to this tunnel
* @param createKey for servers, whether we want to create a brand new destination
* with private keys at the location specified or not (does not
* overwrite existing ones)
@@ -99,7 +103,16 @@ public class TunnelController implements Logging {
FileOutputStream fos = null;
try {
fos = new SecureFileOutputStream(keyFile);
Destination dest = client.createDestination(fos);
SigType stype = I2PClient.DEFAULT_SIGTYPE;
String st = _config.getProperty("option." + I2PClient.PROP_SIGTYPE);
if (st != null) {
SigType type = SigType.parseSigType(st);
if (type != null)
stype = type;
else
log("Unsupported sig type " + st);
}
Destination dest = client.createDestination(fos, stype);
String destStr = dest.toBase64();
log("Private key created and saved in " + keyFile.getAbsolutePath());
log("You should backup this file in a secure place.");
@@ -432,6 +445,10 @@ public class TunnelController implements Logging {
String target = getTargetDestination();
if (target != null)
opts.setProperty("targetDestination", target);
// Ditto outproxy list. Since 0.9.12.
String proxies = getProxyList();
if (proxies != null)
opts.setProperty("proxyList", proxies);
_tunnel.setClientOptions(opts);
}

View File

@@ -53,7 +53,8 @@ abstract class IRCFilter {
"TOPIC",
"AUTHENTICATE", // SASL, also requires CAP below
// http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
"CAP"
"CAP",
"PROTOCTL"
};
@@ -76,7 +77,7 @@ abstract class IRCFilter {
} catch(NumberFormatException nfe){}
if ("PONG".equals(command)) {
if ("PONG".equals(command)) {
// Turn the received ":irc.freshcoffee.i2p PONG irc.freshcoffee.i2p :127.0.0.1"
// into ":127.0.0.1 PONG 127.0.0.1 " so that the caller can append the client's extra parameter
// though, does 127.0.0.1 work for irc clients connecting remotely? and for all of them? sure would
@@ -149,18 +150,23 @@ abstract class IRCFilter {
final String[] allowedCommands =
{
// Commands that regular users might use
"ACCEPT", // Inspircd's m_callerid.so module
"ADMIN",
"AWAY", // should be harmless
"AUTHENTICATE", // SASL, also requires CAP below
"AWAY", // should be harmless
"CAP", // http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
"COMMANDS",
"CYCLE",
"DCCALLOW",
"DEVOICE",
"FPART",
"HELPME", "HELPOP", // helpop is what unrealircd uses by default
"INVITE",
"ISON", // jIRCii uses this for a ping (response is 303)
"JOIN",
"KICK",
"KNOCK",
"LINKS",
"LIST",
"LUSERS",
"MAP", // seems safe enough, the ircd should protect themselves though
@@ -174,13 +180,20 @@ abstract class IRCFilter {
"PASS",
// "PING",
"PONG",
"PROTOCTL",
// "QUIT", // replace with a filtered QUIT to hide client quit messages
"RULES",
"SETNAME",
"SILENCE",
"SSLINFO",
"STATS",
"TBAN",
"TITLE",
"TOPIC",
"UNINVITE",
"USERHOST",
"USERS", // Ticket 1249
"VHOST",
"VHOST",
"WATCH",
"WHO",
@@ -199,26 +212,43 @@ abstract class IRCFilter {
"ADCHAT",
"ADDMOTD",
"ADDOMOTD",
"CBAN",
"CHATOPS",
"CHECK",
"CHGHOST",
"CHGIDENT",
"CHGNAME",
"CLOSE",
"DCCDENY",
"DIE",
"ELINE",
"FILTER",
"GLINE",
"GLOBOPS",
"GZLINE",
"HTM", // "High Traffic Mode"
"JUMPSERVER",
"KILL",
"KLINE",
"LOADMODULE",
"LOCKSERV",
"LOCOPS",
"MKPASSWD",
"NACHAT",
"NICKLOCK",
"NICKUNLOCK",
"OLINE",
"OPERMOTD",
"REHASH",
"RELOADMODULE",
"RESTART",
"RLINE",
"SAJOIN",
"SAKICK",
"SAMODE",
"SANICK",
"SAPART",
"SATOPIC",
"SDESC",
"SETHOST",
"SETIDENT",
@@ -226,7 +256,9 @@ abstract class IRCFilter {
"SPAMFILTER",
"SQUIT",
"TEMPSHUN",
"TLINE",
"UNDCCDENY",
"UNLOCKSERV",
"WALLOPS",
"ZLINE"
};
@@ -245,15 +277,15 @@ abstract class IRCFilter {
String field[]=s.split(" ",3);
if(field[0].length()==0)
return null; // W T F?
return null; // W T F?
if(field[0].charAt(0)==':')
return null; // wtf
String command = field[0].toUpperCase(Locale.US);
if ("PING".equals(command)) {
if ("PING".equals(command)) {
// Most clients just send a PING and are happy with any old PONG. Others,
// like BitchX, actually expect certain behavior. It sends two different pings:
// "PING :irc.freshcoffee.i2p" and "PING 1234567890 127.0.0.1" (where the IP is the proxy)
@@ -298,6 +330,8 @@ abstract class IRCFilter {
// in addition to the CTCP version
if("NOTICE".equals(command))
{
if (field.length < 3)
return s; // invalid, allow server response
String msg = field[2];
if(msg.startsWith(":DCC "))
return filterDCCOut(field[0] + ' ' + field[1] + " :DCC ", msg.substring(5), helper);
@@ -307,8 +341,9 @@ abstract class IRCFilter {
// Allow PRIVMSG, but block CTCP (except ACTION).
if("PRIVMSG".equals(command) || "NOTICE".equals(command))
{
String msg;
msg = field[2];
if (field.length < 3)
return s; // invalid, allow server response
String msg = field[2];
if(msg.indexOf(0x01) >= 0) // CTCP marker ^A can be anywhere, not just immediately after the ':'
{
@@ -342,6 +377,8 @@ abstract class IRCFilter {
}
if("USER".equals(command)) {
if (field.length < 3)
return s; // invalid, allow server response
int idx = field[2].lastIndexOf(":");
if(idx<0)
return "USER user hostname localhost :realname";

View File

@@ -94,7 +94,8 @@ public class IrcInboundFilter implements Runnable {
} catch (RuntimeException re) {
_log.error("Error filtering inbound data", re);
} finally {
try { local.close(); } catch (IOException e) {}
try { in.close(); } catch (IOException e) {}
try { local.close(); } catch(IOException e) {}
}
if(_log.shouldLog(Log.DEBUG))
_log.debug("IrcInboundFilter: Done.");

View File

@@ -468,8 +468,10 @@ public class SOCKS5Server extends SOCKSServer {
if (dest == null)
throw new SOCKSException("Outproxy not found");
I2PSocket destSock = tun.createI2PSocket(I2PAppContext.getGlobalContext().namingService().lookup(proxy), proxyOpts);
DataOutputStream out = null;
DataInputStream in = null;
try {
DataOutputStream out = new DataOutputStream(destSock.getOutputStream());
out = new DataOutputStream(destSock.getOutputStream());
boolean authAvail = Boolean.parseBoolean(props.getProperty(I2PTunnelHTTPClientBase.PROP_OUTPROXY_AUTH));
String configUser = null;
String configPW = null;
@@ -497,7 +499,7 @@ public class SOCKS5Server extends SOCKSServer {
out.flush();
// read init reply
DataInputStream in = new DataInputStream(destSock.getInputStream());
in = new DataInputStream(destSock.getInputStream());
// is this right or should we not try to do 5-to-4 conversion?
int hisVersion = in.readByte();
if (hisVersion != SOCKS_VERSION_5 /* && addrtype == AddressType.DOMAINNAME */ )

View File

@@ -12,6 +12,7 @@ import net.i2p.client.I2PClient;
import net.i2p.client.I2PClientFactory;
import net.i2p.client.I2PSession;
import net.i2p.client.I2PSessionException;
import net.i2p.crypto.SigType;
import net.i2p.data.Destination;
import net.i2p.i2ptunnel.I2PTunnel;
import net.i2p.i2ptunnel.I2PTunnelTask;
@@ -78,8 +79,17 @@ import net.i2p.util.EventDispatcher;
I2PClient client = I2PClientFactory.createClient();
byte[] key;
try {
ByteArrayOutputStream out = new ByteArrayOutputStream(512);
client.createDestination(out);
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
SigType stype = I2PClient.DEFAULT_SIGTYPE;
String st = tunnel.getClientOptions().getProperty(I2PClient.PROP_SIGTYPE);
if (st != null) {
SigType type = SigType.parseSigType(st);
if (type != null)
stype = type;
else
l.log("Unsupported sig type " + st);
}
client.createDestination(out, stype);
key = out.toByteArray();
} catch(Exception exc) {
throw new RuntimeException("failed to create i2p-destination", exc);

View File

@@ -14,6 +14,8 @@ import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import net.i2p.client.I2PClient;
import net.i2p.crypto.SigType;
import net.i2p.data.Base64;
import net.i2p.data.Destination;
import net.i2p.data.PrivateKeyFile;
@@ -23,6 +25,7 @@ import net.i2p.i2ptunnel.I2PTunnelHTTPClient;
import net.i2p.i2ptunnel.I2PTunnelHTTPClientBase;
import net.i2p.i2ptunnel.I2PTunnelHTTPServer;
import net.i2p.i2ptunnel.I2PTunnelIRCClient;
import net.i2p.i2ptunnel.I2PTunnelServer;
import net.i2p.i2ptunnel.TunnelController;
import net.i2p.i2ptunnel.TunnelControllerGroup;
import net.i2p.util.Addresses;
@@ -177,6 +180,17 @@ public class EditBean extends IndexBean {
return getBooleanProperty(tunnel, "i2cp.encryptLeaseSet");
}
/** @since 0.9.12 */
public int getSigType(int tunnel) {
return getProperty(tunnel, I2PClient.PROP_SIGTYPE, 0);
}
/** @since 0.9.12 */
public boolean isSigTypeAvailable(int code) {
SigType type = SigType.getByCode(code);
return type != null && type.isAvailable();
}
/** @since 0.8.9 */
public boolean getDCC(int tunnel) {
return getBooleanProperty(tunnel, I2PTunnelIRCClient.PROP_DCC);
@@ -311,6 +325,11 @@ public class EditBean extends IndexBean {
public int getPostTotalBanTime(int tunnel) {
return getProperty(tunnel, I2PTunnelHTTPServer.OPT_POST_TOTAL_BAN_TIME, I2PTunnelHTTPServer.DEFAULT_POST_TOTAL_BAN_TIME) / 60;
}
/** @since 0.9.13 */
public boolean getUniqueLocal(int tunnel) {
return getBooleanProperty(tunnel, I2PTunnelServer.PROP_UNIQUE_LOCAL);
}
private int getProperty(int tunnel, String prop, int def) {
TunnelController tun = getController(tunnel);
@@ -358,6 +377,11 @@ public class EditBean extends IndexBean {
return Addresses.getAllAddresses();
}
/** @since 0.9.12 */
public boolean isAdvanced() {
return _context.getBooleanProperty("routerconsole.advanced");
}
public String getI2CPHost(int tunnel) {
if (_context.isRouterContext())
return _("internal");

View File

@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
import net.i2p.I2PAppContext;
import net.i2p.app.ClientAppManager;
import net.i2p.app.Outproxy;
import net.i2p.client.I2PClient;
import net.i2p.data.Base32;
import net.i2p.data.Certificate;
import net.i2p.data.Destination;
@@ -489,6 +490,16 @@ public class IndexBean {
return "<font color=\"red\">" +
_("Warning - ports less than 1024 are not recommended") +
": " + port + "</font>";
// dup check, O(n**2)
List<TunnelController> controllers = _group.getControllers();
for (int i = 0; i < controllers.size(); i++) {
if (i == tunnel)
continue;
if (port.equals(controllers.get(i).getListenPort()))
return "<font color=\"red\">" +
_("Warning - duplicate port") +
": " + port + "</font>";
}
return port;
}
return "<font color=\"red\">" + _("Port not set") + "</font>";
@@ -807,6 +818,26 @@ public class IndexBean {
return false;
}
/** @since 0.9.12 */
public void setRejectInproxy(String moo) {
_booleanOptions.add(I2PTunnelHTTPServer.OPT_REJECT_INPROXY);
}
/** @since 0.9.12 */
public boolean isRejectInproxy(int tunnel) {
TunnelController tun = getController(tunnel);
if (tun != null) {
Properties opts = tun.getClientOptionProps();
return Boolean.parseBoolean(opts.getProperty(I2PTunnelHTTPServer.OPT_REJECT_INPROXY));
}
return false;
}
/** @since 0.9.13 */
public void setUniqueLocal(String moo) {
_booleanOptions.add(I2PTunnelServer.PROP_UNIQUE_LOCAL);
}
protected static final String PROP_ENABLE_ACCESS_LIST = "i2cp.enableAccessList";
protected static final String PROP_ENABLE_BLACKLIST = "i2cp.enableBlackList";
@@ -983,6 +1014,7 @@ public class IndexBean {
} catch (NumberFormatException nfe) {}
}
}
public void setCert(String val) {
if (val != null) {
try {
@@ -990,10 +1022,24 @@ public class IndexBean {
} catch (NumberFormatException nfe) {}
}
}
public void setSigner(String val) {
_certSigner = val;
}
/** @since 0.9.12 */
public void setSigType(String val) {
if (val != null) {
_otherOptions.put(I2PClient.PROP_SIGTYPE, val);
if (val.equals("0"))
_certType = 0;
else
_certType = 5;
}
// TODO: Call modifyDestination??
// Otherwise this only works on a new tunnel...
}
/** Modify or create a destination */
private String modifyDestination() {
if (_privKeyFile == null || _privKeyFile.trim().length() <= 0)
@@ -1227,20 +1273,23 @@ public class IndexBean {
};
private static final String _booleanServerOpts[] = {
"i2cp.reduceOnIdle", "i2cp.encryptLeaseSet", PROP_ENABLE_ACCESS_LIST, PROP_ENABLE_BLACKLIST,
I2PTunnelServer.PROP_USE_SSL
I2PTunnelServer.PROP_USE_SSL,
I2PTunnelHTTPServer.OPT_REJECT_INPROXY,
I2PTunnelServer.PROP_UNIQUE_LOCAL
};
private static final String _otherClientOpts[] = {
"i2cp.reduceIdleTime", "i2cp.reduceQuantity", "i2cp.closeIdleTime",
"outproxyUsername", "outproxyPassword",
I2PTunnelHTTPClient.PROP_JUMP_SERVERS,
I2PTunnelHTTPClientBase.PROP_AUTH,
I2PClient.PROP_SIGTYPE,
I2PTunnelHTTPClient.PROP_SSL_OUTPROXIES
};
private static final String _otherServerOpts[] = {
"i2cp.reduceIdleTime", "i2cp.reduceQuantity", "i2cp.leaseSetKey", "i2cp.accessList",
PROP_MAX_CONNS_MIN, PROP_MAX_CONNS_HOUR, PROP_MAX_CONNS_DAY,
PROP_MAX_TOTAL_CONNS_MIN, PROP_MAX_TOTAL_CONNS_HOUR, PROP_MAX_TOTAL_CONNS_DAY,
PROP_MAX_STREAMS
PROP_MAX_STREAMS, I2PClient.PROP_SIGTYPE
};
private static final String _httpServerOpts[] = {
I2PTunnelHTTPServer.OPT_POST_WINDOW,

View File

@@ -449,6 +449,43 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
</div>
<% } %>
<% if (editBean.isAdvanced()) { %>
<div id="tunnelOptionsField" class="rowItem">
<label>
<%=intl._("Signature type")%>
(<%=intl._("Experts only!")%>)
</label>
</div>
<div id="hostField" class="rowItem">
<div id="portField" class="rowItem">
<label>DSA-SHA1</label>
<input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(editBean.getSigType(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% if (editBean.isSigTypeAvailable(1)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P256</label>
<input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% }
if (editBean.isSigTypeAvailable(2)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P384</label>
<input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% }
if (editBean.isSigTypeAvailable(3)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P521</label>
<input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% } // isAvailable %>
</div>
<div class="subdivider">
<hr />
</div>
<% } // isAdvanced %>
<% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
<div id="accessField" class="rowItem">
<label><%=intl._("Local Authorization")%>:</label>

View File

@@ -206,9 +206,15 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<%=intl._("Local destination")%>(<span class="accessKey">L</span>):
</label>
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
<% if (!"".equals(editBean.getDestinationBase64(curTunnel))) { %>
<a href="/susidns/addressbook.jsp?book=private&amp;hostname=<%=editBean.getTunnelName(curTunnel)%>&amp;destination=<%=editBean.getDestinationBase64(curTunnel)%>#add"><%=intl._("Add to local addressbook")%></a>
<% } %>
<% String b64 = editBean.getDestinationBase64(curTunnel);
if (!"".equals(b64)) {
String name = editBean.getSpoofedHost(curTunnel);
if (name == null || name.equals(""))
name = editBean.getTunnelName(curTunnel);
if (!"".equals(name)) { %>
<a href="/susidns/addressbook.jsp?book=private&amp;hostname=<%=name%>&amp;destination=<%=b64%>#add"><%=intl._("Add to local addressbook")%></a>
<% }
} %>
</div>
<% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
@@ -381,6 +387,34 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="accessList" title="Access List" wrap="off" spellcheck="false"><%=editBean.getAccessList(curTunnel)%></textarea>
</div>
<% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
%><div class="rowItem">
<div id="optionsField" class="rowItem">
<label>
<%=intl._("Block Access via Inproxies")%>:
</label>
</div>
<div id="portField" class="rowItem">
<label for="access" accesskey="d">
<%=intl._("Enable")%>:
</label>
<input value="1" type="checkbox" id="startOnLoad" name="rejectInproxy" title="Deny inproxy access when enabled"<%=(editBean.isRejectInproxy(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
</div>
<% } // httpserver
%><div class="rowItem">
<div id="optionsField" class="rowItem">
<label>
<%=intl._("Unique Local Address per Client")%>:
</label>
</div>
<div id="portField" class="rowItem">
<label for="access" accesskey="d">
<%=intl._("Enable")%>:
</label>
<input value="1" type="checkbox" id="startOnLoad" name="uniqueLocal" title="Use unique IP addresses for each connecting client (local non-SSL servers only)"<%=(editBean.getUniqueLocal(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
</div>
<div class="subdivider">
<hr />
</div>
@@ -491,6 +525,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<hr />
</div>
<% /***************** %>
<div id="tunnelOptionsField" class="rowItem">
<label for="cert" accesskey="c">
<%=intl._("New Certificate type")%>(<span class="accessKey">C</span>):
@@ -533,10 +568,44 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<button accesskey="S" class="control" type="submit" name="action" value="Modify" title="Force New Cert Now"><%=intl._("Modify")%></button>
<span class="comment"><%=intl._("(Tunnel must be stopped first)")%></span>
</div>
<% **********************/ %>
<% if (editBean.isAdvanced()) { %>
<div id="tunnelOptionsField" class="rowItem">
<label>
<%=intl._("Signature type")%>
(<%=intl._("Experts only! Changes B32!")%>)
</label>
</div>
<div id="hostField" class="rowItem">
<div id="portField" class="rowItem">
<label>DSA-SHA1</label>
<input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(editBean.getSigType(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% if (editBean.isSigTypeAvailable(1)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P256</label>
<input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% }
if (editBean.isSigTypeAvailable(2)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P384</label>
<input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% }
if (editBean.isSigTypeAvailable(3)) { %>
<div id="portField" class="rowItem">
<label>ECDSA-P521</label>
<input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div>
<% } // isAvailable %>
</div>
<div class="subdivider">
<hr />
</div>
<% } // isAdvanced %>
<div id="customOptionsField" class="rowItem">
<label for="customOptions" accesskey="u">

View File

@@ -2,12 +2,13 @@
# 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:
# blabla, 2011
# D.A. Loader <>, 2012
# driz <driz@i2pmail.org>, 2012
# ducki2p <ducki2p@gmail.com>, 2011
# Ettore Atalan <atalanttore@googlemail.com>, 2014
# foo <foo@bar>, 2009
# echeloni2p <echelon@i2pmail.org>, 2014
# mixxy, 2011
@@ -18,15 +19,14 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 18:07+0000\n"
"PO-Revision-Date: 2014-01-05 16:17+0000\n"
"Last-Translator: echeloni2p <echelon@i2pmail.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/"
"de/)\n"
"Language: de\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-03-10 13:40+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
@@ -90,28 +90,21 @@ msgstr "Der HTTP-Proxy ist nicht bereit"
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
"Er ist Offline, das Netzwerk ist überlastet oder Ihr Router ist nicht gut "
"ins Netzwerk integriert."
msgstr "Er ist Offline, das Netzwerk ist überlastet oder Ihr Router ist nicht gut ins Netzwerk integriert."
#: ../java/build/Proxy.java:14
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
"Sie können es {0}noch einmal versuchen{1}, dieses verwendet einen zufällig "
"aus dem {2}hier definierten{3} Pool Outproxy (falls Sie mehr als einen "
"eingerichtet haben)."
msgstr "Sie können es {0}noch einmal versuchen{1}, dieses verwendet einen zufällig aus dem {2}hier definierten{3} Pool Outproxy (falls Sie mehr als einen eingerichtet haben)."
#: ../java/build/Proxy.java:15
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
"Falls Sie weiterhin Probleme haben, können Sie {0}hier{1} Ihre Liste der "
"Outproxies ändern."
"If you continue to have trouble you may want to edit your outproxy list "
"{0}here{1}."
msgstr "Falls Sie weiterhin Probleme haben, können Sie {0}hier{1} Ihre Liste der Outproxies ändern."
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:38
#: ../java/build/Proxy.java:59 ../java/build/Proxy.java:102
@@ -134,9 +127,7 @@ msgstr "Dein Browser unterstützt keine iFrames."
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
"Benutzen Sie den Proxy nicht um auf Ihre Router Konsole, Localhost Adressen "
"oder lokale LAN Ziele zuzugreifen."
msgstr "Benutzen Sie den Proxy nicht um auf Ihre Router Konsole, Localhost Adressen oder lokale LAN Ziele zuzugreifen."
#: ../java/build/Proxy.java:26
msgid "Warning: Eepsite Unknown"
@@ -152,32 +143,25 @@ msgstr "Die Eepsite wurde nicht im Adressbuch ihres Routers gefunden."
#: ../java/build/Proxy.java:34
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
"Kontrollieren Sie den Link oder finden Sie eine Base 32, bzw. eine Base 64 "
"Adresse."
msgstr "Kontrollieren Sie den Link oder finden Sie eine Base 32, bzw. eine Base 64 Adresse."
#: ../java/build/Proxy.java:35
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
"Haben Sie eine Base 64 Adresse, {0}fügen Sie diese ihrem Adressbuch hinzu{1}."
msgstr "Haben Sie eine Base 64 Adresse, {0}fügen Sie diese ihrem Adressbuch hinzu{1}."
#: ../java/build/Proxy.java:36
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
"Finden Sie alternativ eine Base 32 Adresse, einen Adress-Hilfs-Link oder "
"nutzen Sie einen der Jump-Service Links unten."
"Otherwise, find a Base 32 or address helper link, or use a jump service link"
" below."
msgstr "Finden Sie alternativ eine Base 32 Adresse, einen Adress-Hilfs-Link oder nutzen Sie einen der Jump-Service Links unten."
#: ../java/build/Proxy.java:37
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
"Ist diese Seite oft offline? Schauen Sie in der {0}FAQ{1} nach Hilfe zum {2}"
"Eintragen einger Subscriptionen{3} zu Ihrem Adressbuch. "
msgstr "Ist diese Seite oft offline? Schauen Sie in der {0}FAQ{1} nach Hilfe zum {2}Eintragen einger Subscriptionen{3} zu Ihrem Adressbuch. "
#: ../java/build/Proxy.java:39 ../java/build/Proxy.java:45
msgid "Warning: Invalid Request URI"
@@ -185,17 +169,13 @@ msgstr "Warnung: Ungültige Anfrage URI"
#: ../java/build/Proxy.java:46
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
"Die angefragte URI ist ungültig und enthält möglicherweise nicht erlaubte "
"Zeichen."
msgstr "Die angefragte URI ist ungültig und enthält möglicherweise nicht erlaubte Zeichen."
#: ../java/build/Proxy.java:47
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
"Falls Sie einen Link angeklickt hatten, kontrollieren Sie das Ende der URI "
"nach ungültigen Zeichen, die ihr Browser fälschlicherweise angehangen hat."
msgstr "Falls Sie einen Link angeklickt hatten, kontrollieren Sie das Ende der URI nach ungültigen Zeichen, die ihr Browser fälschlicherweise angehangen hat."
#: ../java/build/Proxy.java:48 ../java/build/Proxy.java:54
msgid "Warning: Invalid Destination"
@@ -205,17 +185,13 @@ msgstr "lokales Ziel"
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
"Die genannte Eepsite Adresse ist nicht gültig, oder andersweitig "
"unerreichbar."
msgstr "Die genannte Eepsite Adresse ist nicht gültig, oder andersweitig unerreichbar."
#: ../java/build/Proxy.java:56
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
"Möglicherweise haben Sie einen falschen Base 64 String eingetragen oder der "
"gefolgte Link ist ungültig."
"Perhaps you pasted in the wrong Base 64 string or the link you are following"
" is bad."
msgstr "Möglicherweise haben Sie einen falschen Base 64 String eingetragen oder der gefolgte Link ist ungültig."
#: ../java/build/Proxy.java:57
msgid "The I2P host could also be offline."
@@ -232,9 +208,7 @@ msgstr "Warnung: Anfrage abgelehnt"
#: ../java/build/Proxy.java:67
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
"Sie haben versucht eine Webseite oder Adresse ausserhalb von I2P zu "
"erreichen,"
msgstr "Sie haben versucht eine Webseite oder Adresse ausserhalb von I2P zu erreichen,"
#: ../java/build/Proxy.java:68 ../java/build/Proxy.java:74
msgid "Warning: No Outproxy Configured"
@@ -244,9 +218,7 @@ msgstr "Warnung: Kein Outproxy eingerichtet"
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
"Dieser Seitenaufruf ist nach außerhalb von I2P adressiert aber es ist kein "
"Ausgangsproxy eingestellt."
msgstr "Dieser Seitenaufruf ist nach außerhalb von I2P adressiert aber es ist kein Ausgangsproxy eingestellt."
#: ../java/build/Proxy.java:76
msgid "Please configure an outproxy in I2PTunnel."
@@ -260,27 +232,20 @@ msgstr "Warnung: Destinations Schlüssel Konflikt"
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
"Der von Ihnen gefolgte Adresshelfer Link definiert einen anderen "
"Destinations Schlüssel als der Host Eintrag in ihrer Host Datenbank."
msgstr "Der von Ihnen gefolgte Adresshelfer Link definiert einen anderen Destinations Schlüssel als der Host Eintrag in ihrer Host Datenbank."
#: ../java/build/Proxy.java:85
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
"Jemand kann versuchen Ihnen eine gefälschte Eepsite darzubieten oder zwei "
"Eepsites haben zufäälig den selben Namen."
"Someone could be trying to impersonate another eepsite, or people have given"
" two eepsites identical names."
msgstr "Jemand kann versuchen Ihnen eine gefälschte Eepsite darzubieten oder zwei Eepsites haben zufäälig den selben Namen."
#: ../java/build/Proxy.java:86
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
"Sie können diesen Konflikt lösen, in dem Sie entscheiden, welchem Schlüssel "
"Sie vertrauen und entweder den Adresshelfer Link löschen, den Host Eintrag "
"aus ihrere Host Datenbank löschen oder einen anders benennen."
msgstr "Sie können diesen Konflikt lösen, in dem Sie entscheiden, welchem Schlüssel Sie vertrauen und entweder den Adresshelfer Link löschen, den Host Eintrag aus ihrere Host Datenbank löschen oder einen anders benennen."
#: ../java/build/Proxy.java:87
msgid "Proxy Authorization Required"
@@ -291,7 +256,8 @@ msgid "I2P HTTP Proxy Authorization Required"
msgstr "Anmeldung für den I2P-HTTP-Proxy vonnöten"
#: ../java/build/Proxy.java:89
msgid "This proxy is configured to require a username and password for access."
msgid ""
"This proxy is configured to require a username and password for access."
msgstr "Dieser Proxy kann nur mit Benutzername und Passwort erreicht werde."
#: ../java/build/Proxy.java:90
@@ -299,19 +265,15 @@ msgstr "Dieser Proxy kann nur mit Benutzername und Passwort erreicht werde."
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
"Bitte Benutzername und Passwort eingeben, oder überprüfe die {0}Router-"
"Einstellungen{1} oder die {2}I2P-Tunnel Einstellungen{3}"
msgstr "Bitte Benutzername und Passwort eingeben, oder überprüfe die {0}Router-Einstellungen{1} oder die {2}I2P-Tunnel Einstellungen{3}"
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
"Um die Authorisierung zu deaktivieren, entfernen Sie die Einstellung {0}"
"i2ptunnel.proxy.auth=basic{1}, stoppen und starten Sie dann den HTTP Tunnel "
"neu."
"To disable authorization, remove the configuration "
"{0}i2ptunnel.proxy.auth=basic{1}, then stop and restart the HTTP Proxy "
"tunnel."
msgstr "Um die Authorisierung zu deaktivieren, entfernen Sie die Einstellung {0}i2ptunnel.proxy.auth=basic{1}, stoppen und starten Sie dann den HTTP Tunnel neu."
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Eepsite Unreachable"
@@ -325,9 +287,7 @@ msgstr "Die Eepsite ist nicht erreichbar."
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
"Die Eepsite ist offline, das Netzwerk ist überlastet oder ihr Router ist "
"nicht gut ins Netzwerk integriert. "
msgstr "Die Eepsite ist offline, das Netzwerk ist überlastet oder ihr Router ist nicht gut ins Netzwerk integriert. "
#: ../java/build/Proxy.java:103
msgid "Information: New Host Name"
@@ -341,9 +301,7 @@ msgstr "Information: Ein neuer Hostname mit Adresshelfer."
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
"Der Adresshelferlink, den du versuchst aufzurufen, ist für einen neuen "
"Adressnamen, welcher nicht in dem Adressbuch ist."
msgstr "Der Adresshelferlink, den du versuchst aufzurufen, ist für einen neuen Adressnamen, welcher nicht in dem Adressbuch ist."
#: ../java/build/Proxy.java:111
msgid "You may save this host name to your local address book."
@@ -352,25 +310,19 @@ msgstr "Du kannst den Adressnamen in deinem Adressbuch speichern."
#: ../java/build/Proxy.java:112
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
"Wenn Sie ihn ins Adressbuch speichern, sehen Sie diese Nachricht nicht noch "
"einmal."
msgstr "Wenn Sie ihn ins Adressbuch speichern, sehen Sie diese Nachricht nicht noch einmal."
#: ../java/build/Proxy.java:113
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
"Speichern Sie ihn nicht, ist der Host Name nach dem nächsten Router Neustart "
"vergessen."
"If you do not save it, the host name will be forgotten after the next router"
" restart."
msgstr "Speichern Sie ihn nicht, ist der Host Name nach dem nächsten Router Neustart vergessen."
#: ../java/build/Proxy.java:114
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
"Möchten Sie diesen Host nicht besuchen, klicken Sie auf den \"Zurück\" Knopf "
"ihres Browsers."
msgstr "Möchten Sie diesen Host nicht besuchen, klicken Sie auf den \"Zurück\" Knopf ihres Browsers."
#: ../java/build/Proxy.java:115 ../java/build/Proxy.java:121
msgid "Warning: Bad Address Helper"
@@ -379,22 +331,17 @@ msgstr "Warnung: Ungültiger Adress-Helfer"
#: ../java/build/Proxy.java:122
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
"Der Helfer-Schlüssel in der URL ({0}i2paddresshelper={1}) ist nicht "
"auflösbar."
msgstr "Der Helfer-Schlüssel in der URL ({0}i2paddresshelper={1}) ist nicht auflösbar."
#: ../java/build/Proxy.java:123
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
"Es scheinen Mülldaten oder eine falsch getippte Base 32 Adresse zu sein."
msgstr "Es scheinen Mülldaten oder eine falsch getippte Base 32 Adresse zu sein."
#: ../java/build/Proxy.java:124
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
"Kontrollieren Sie die URL und versuchen Sie den Helfer-Schlüssel in einen "
"korrekten Base 32 Hostnamen oder Base 64 Schlüssel zu bringen."
msgstr "Kontrollieren Sie die URL und versuchen Sie den Helfer-Schlüssel in einen korrekten Base 32 Hostnamen oder Base 64 Schlüssel zu bringen."
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:131
msgid "Warning: Non-HTTP Protocol"
@@ -405,82 +352,74 @@ msgid "The request uses a bad protocol."
msgstr "Die Anfrage nutzt ein ungültiges Protokoll."
#: ../java/build/Proxy.java:133
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr "Der I2P HTTP Proxy unterstützt einzig nur {0}http://{1} Anfragen."
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr "Der I2P HTTP-Proxy unterstützt nur HTTP- und HTTPS-Anfragen."
#: ../java/build/Proxy.java:134
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
"Andere Protokolle wie {0}https://{1} oder {0}ftp://{1} sind nicht erlaubt."
msgid "Other protocols such as FTP are not allowed."
msgstr "Andere Protokolle wie FTP sind nicht erlaubt."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "This seems to be a bad destination:"
msgstr "Dies scheint kein gültiges Ziel zu sein:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
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:638
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:662
#, 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 ""
"Um das Ziel in Ihrer Host-Datenbank zu besuchen, klicken Sie <a href="
"\"{0}\">hier</a>, und um das Ziel aus der kollidierenden Adresshelfer-"
"Anfrage zu besuchen, <a href=\"{1}\">hier</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 "Um das Ziel in Ihrer Host-Datenbank zu besuchen, klicken Sie <a href=\"{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:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1151
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1155
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1159
msgid "Destination"
msgstr "Ziel"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1165
#, java-format
msgid "Continue to {0} without saving"
msgstr "Weiter zu {0}, ohne zu speichern"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1170
#, 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:1064
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1173
#, 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:1065
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1174
#, 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:1180
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1290
msgid "HTTP Outproxy"
msgstr "HTTP-Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1326
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Durch Klicken auf einen der untenstehenden Links bekommen Sie einen "
"Adresshelfer von einem \"Sprung\"-Service:"
"Click a link below to look for an address helper by using a \"jump\" "
"service:"
msgstr "Durch Klicken auf einen der untenstehenden Links bekommen Sie einen Adresshelfer von einem \"Sprung\"-Service:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1334
#, java-format
msgid "{0} jump service"
msgstr "Weiterleitungsdienst {0}"
@@ -514,14 +453,12 @@ msgstr "Weiterleitung zu {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:210
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
"{0} wurde ins {1} Adressbuch geschrieben. Du wirst nun weitergeleitet."
msgstr "{0} wurde ins {1} Adressbuch geschrieben. Du wirst nun weitergeleitet."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:211
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
"Konnte {0} nicht im {1} Adressbuch speichern. Du wirst nun weitergeleitet."
msgstr "Konnte {0} nicht im {1} Adressbuch speichern. Du wirst nun weitergeleitet."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:213
msgid "Click here if you are not redirected automatically."

View File

@@ -2,7 +2,7 @@
# 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:
# Boxoa590, 2012-2013
# ducki2p <ducki2p@gmail.com>, 2011
@@ -13,15 +13,14 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:14+0000\n"
"PO-Revision-Date: 2014-01-09 09:54+0000\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-03-22 14:59+0000\n"
"Last-Translator: Towatowa441\n"
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/"
"fr/)\n"
"Language: fr\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"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
@@ -85,28 +84,21 @@ msgstr "Le proxy HTTP n'est pas en place"
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
"Il est hors ligne, ou il y a congestion du réseau, ou votre routeur n'est "
"pas encore bien intégré avec les pairs."
msgstr "Il est hors ligne, ou il y a congestion du réseau, ou votre routeur n'est pas encore bien intégré avec les pairs."
#: ../java/build/Proxy.java:14
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
"Vous pouvez vouloir {0}réessayer{1} car cela va re-sélectionner au hasard un "
"outproxy du pool que vous avez défini {2}içi{3} (si vous en avez plus d'un "
"de configuré)."
msgstr "Vous pouvez vouloir {0}réessayer{1} car cela va re-sélectionner au hasard un outproxy parmi le pool que vous avez défini {2}ici{3} (si vous en avez plus d'un de configuré)."
#: ../java/build/Proxy.java:15
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
"Si vous continuez à avoir des dérangements vous pouvez vouloir modifier "
"votre liste de outproxy {0}içi{1}."
"If you continue to have trouble you may want to edit your outproxy list "
"{0}here{1}."
msgstr "Si vous continuez à avoir des dérangements vous pourriez vouloir modifier votre liste de outproxy {0}ici{1}."
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:38
#: ../java/build/Proxy.java:59 ../java/build/Proxy.java:102
@@ -129,9 +121,7 @@ msgstr "Votre navigateur n'est pas compatible iFrames."
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
"Ne pas utiliser le proxy pour accéder à la console du routeur, ni au "
"localhost, ni vers des destinations de votre LAN local."
msgstr "Ne pas utiliser le proxy pour accéder à la console du routeur, ni au localhost, ni vers des destinations de votre LAN local."
#: ../java/build/Proxy.java:26
msgid "Warning: Eepsite Unknown"
@@ -143,8 +133,7 @@ msgstr "Avertissement : Eepsite pas trouvé dans le carnet d'adresses"
#: ../java/build/Proxy.java:33
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
"Le eepsite n'a pas été trouvé dans le carnet d'adresses de votre routeur."
msgstr "Le eepsite n'a pas été trouvé dans le carnet d'adresses de votre routeur."
#: ../java/build/Proxy.java:34
msgid "Check the link or find a Base 32 or Base 64 address."
@@ -153,25 +142,20 @@ msgstr "Cliquez le lien ou trouvez une adresse base 32 ou base 64."
#: ../java/build/Proxy.java:35
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
"Si vous avez l''adresse Base 64, {0}ajoutez-là à votre carnet d''adresse{1}."
msgstr "Si vous avez l''adresse Base 64, {0}ajoutez-là à votre carnet d''adresse{1}."
#: ../java/build/Proxy.java:36
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
"Sinon, trouver un lien d'assistant d'adresse ou un lien Base 32, ou utiliser "
"ci-dessous un lien service de saut."
"Otherwise, find a Base 32 or address helper link, or use a jump service link"
" below."
msgstr "Sinon, trouver un lien d'assistant d'adresse ou un lien Base 32, ou utiliser ci-dessous un lien service de saut."
#: ../java/build/Proxy.java:37
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
"Voyez-vous cette page souvent ? Voyez {0}la FAQ{1} pour de l'aide afin d'{2}"
"ajouter quelques abonnements{3} à votre carnet d'adresses."
msgstr "Voyez-vous cette page souvent ? Voyez {0}la FAQ{1} pour de l'aide afin d'{2}ajouter quelques abonnements{3} à votre carnet d'adresses."
#: ../java/build/Proxy.java:39 ../java/build/Proxy.java:45
msgid "Warning: Invalid Request URI"
@@ -179,17 +163,13 @@ msgstr "Avertissement : demande invalide d'URI"
#: ../java/build/Proxy.java:46
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
"L'URI de la requête n'est pas valide, et contient probablement des "
"caractères illégaux."
msgstr "L'URI de la requête n'est pas valide, et contient probablement des caractères illégaux."
#: ../java/build/Proxy.java:47
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
"Si vous avez cliqué sur un lien, vérifiez la fin de l'URI pour d'éventuels "
"caractères que le navigateur aurait ajourté à tort."
msgstr "Si vous avez cliqué sur un lien, vérifiez la fin de l'URI pour d'éventuels caractères que le navigateur aurait ajourté à tort."
#: ../java/build/Proxy.java:48 ../java/build/Proxy.java:54
msgid "Warning: Invalid Destination"
@@ -199,17 +179,13 @@ msgstr "Avertissement : destination invalide"
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
"La destination vers l'eepsite spécifié n'était pas valide, ou autrement "
"était inaccessible."
msgstr "La destination vers l'eepsite spécifié n'était pas valide, ou autrement était inaccessible."
#: ../java/build/Proxy.java:56
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
"Peut-être que vous avez collé dans la mauvaise chaîne base 64, ou le lien "
"que vous suivez est mauvais."
"Perhaps you pasted in the wrong Base 64 string or the link you are following"
" is bad."
msgstr "Peut-être que vous avez collé dans la mauvaise chaîne base 64, ou le lien que vous suivez est mauvais."
#: ../java/build/Proxy.java:57
msgid "The I2P host could also be offline."
@@ -236,9 +212,7 @@ msgstr "Avertissement : pas de proxy sortant configuré"
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
"Votre demande était pour un site en dehors de I2P, mais vous n'avez aucun "
"outproxy HTTP de configuré."
msgstr "Votre demande était pour un site en dehors de I2P, mais vous n'avez aucun outproxy HTTP de configuré."
#: ../java/build/Proxy.java:76
msgid "Please configure an outproxy in I2PTunnel."
@@ -252,29 +226,20 @@ msgstr "Avertissement : conflit de clé de destination"
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
"Le lien d'assistant d'adresse que vous avez suivi spécifie une clé de "
"destination différente de l'entrée d'hôte contenue dans votre base de "
"données hôte."
msgstr "Le lien d'assistant d'adresse que vous avez suivi spécifie une clé de destination différente de l'entrée d'hôte contenue dans votre base de données hôte."
#: ../java/build/Proxy.java:85
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
"Quelqu'un pourrait essayer de se faire passer pour un autre eepsite, ou des "
"gens ont donné des noms identiques à deux eepsites."
"Someone could be trying to impersonate another eepsite, or people have given"
" two eepsites identical names."
msgstr "Quelqu'un pourrait essayer de se faire passer pour un autre eepsite, ou des gens ont donné des noms identiques à deux eepsites."
#: ../java/build/Proxy.java:86
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
"Vous pouvez résoudre le conflit en considérant à quelle clé vous faites "
"confiance, et soit rejeter le lien de l'assistant d'adresse en rejetant "
"l'entrée d'hôte hors de votre base de données hôte, ou nommer l'une d'elles "
"différemment."
msgstr "Vous pouvez résoudre le conflit en considérant à quelle clé vous faites confiance, et soit rejeter le lien de l'assistant d'adresse en rejetant l'entrée d'hôte hors de votre base de données hôte, ou nommer l'une d'elles différemment."
#: ../java/build/Proxy.java:87
msgid "Proxy Authorization Required"
@@ -285,28 +250,24 @@ msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorisation requise par le proxy HTTP de I2P"
#: ../java/build/Proxy.java:89
msgid "This proxy is configured to require a username and password for access."
msgstr ""
"Ce proxy est configuré pour exiger un nom d'utilisateur et un mot de passe "
"pour y accéder."
msgid ""
"This proxy is configured to require a username and password for access."
msgstr "Ce proxy est configuré pour exiger un nom d''utilisateur et un mot de passe pour y accéder."
#: ../java/build/Proxy.java:90
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
"Veuillez saisir votre nom d''utilisateur et mot de passe, ou vérifier votre "
"{0}configuration de routeur{1} ou {2}configuration de I2PTunnel{3}."
msgstr "Veuillez saisir votre nom d''utilisateur et mot de passe, ou vérifier votre {0}configuration de routeur{1} ou {2}configuration de I2PTunnel{3}."
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
"Pour désactiver l''autorisation, supprimer la configuration {0}i2ptunnel."
"proxy.auth=basic{1}, puis arrêtez et redémarrez le tunnel du proxy HTTP."
"To disable authorization, remove the configuration "
"{0}i2ptunnel.proxy.auth=basic{1}, then stop and restart the HTTP Proxy "
"tunnel."
msgstr "Pour désactiver l''autorisation, supprimer la configuration {0}i2ptunnel.proxy.auth=basic{1}, puis arrêtez et redémarrez le tunnel du proxy HTTP."
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Eepsite Unreachable"
@@ -320,9 +281,7 @@ msgstr "Le eepsite n'était pas joignable."
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
"Le eepsite est hors ligne, ou il y a congestion du réseau, ou votre routeur "
"n'est pas encore bien intégré avec les pairs."
msgstr "Le eepsite est hors ligne, ou il y a congestion du réseau, ou votre routeur n'est pas encore bien intégré avec les pairs."
#: ../java/build/Proxy.java:103
msgid "Information: New Host Name"
@@ -336,38 +295,28 @@ msgstr "Information : nouveau nom d'hôte avec assistant d'adresse"
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
"Le lien d'assistant d'adresse que vous avez suivi est pour un nouveau nom "
"d'hôte qui n'est pas dans votre carnet d'adresses."
msgstr "Le lien d'assistant d'adresse que vous avez suivi est pour un nouveau nom d'hôte qui n'est pas dans votre carnet d'adresses."
#: ../java/build/Proxy.java:111
msgid "You may save this host name to your local address book."
msgstr ""
"Il vous est possible d'enregistrer ce nom d'hôte à votre carnet d'adresses "
"local."
msgstr "Il vous est possible d'enregistrer ce nom d'hôte à votre carnet d'adresses local."
#: ../java/build/Proxy.java:112
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
"Si vous l'enregistrez dans votre carnet d'adresses, vous ne verrez plus ce "
"message."
msgstr "Si vous l'enregistrez dans votre carnet d'adresses, vous ne verrez plus ce message."
#: ../java/build/Proxy.java:113
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
"Si vous n'enregistrez pas, le nom d'hôte sera oublié après le prochain "
"redémarrage du routeur."
"If you do not save it, the host name will be forgotten after the next router"
" restart."
msgstr "Si vous n'enregistrez pas, le nom d'hôte sera oublié après le prochain redémarrage du routeur."
#: ../java/build/Proxy.java:114
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
"Si vous ne souhaitez pas visiter cet hôte, cliquez sur le bouton \"précédent"
"\" de votre navigateur."
msgstr "Si vous ne souhaitez pas visiter cet hôte, cliquez sur le bouton \"précédent\" de votre navigateur."
#: ../java/build/Proxy.java:115 ../java/build/Proxy.java:121
msgid "Warning: Bad Address Helper"
@@ -376,22 +325,17 @@ msgstr "Avertissement : mauvais assistant d'adresse"
#: ../java/build/Proxy.java:122
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
"La clé auxiliaire dans l''URL ({0}i2paddresshelper={1}) n''est pas résoluble."
msgstr "La clé auxiliaire dans l''URL ({0}i2paddresshelper={1}) n''est pas résoluble."
#: ../java/build/Proxy.java:123
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
"Il semble y avoir des données incorrectes, ou une faute de frappe dans "
"l'adresse Base 32."
msgstr "Il semble y avoir des données incorrectes, ou une faute de frappe dans l'adresse Base 32."
#: ../java/build/Proxy.java:124
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
"Vérifiez votre URL afin d'essayer de résoudre la clé d'assistance pour "
"qu'elle soit un nom d'hôte Base 32 valide ou clé Base 64."
msgstr "Vérifiez votre URL afin d'essayer de résoudre la clé d'assistance pour qu'elle soit un nom d'hôte Base 32 valide ou clé Base 64."
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:131
msgid "Warning: Non-HTTP Protocol"
@@ -402,87 +346,74 @@ msgid "The request uses a bad protocol."
msgstr "La requête utilise un mauvais protocole."
#: ../java/build/Proxy.java:133
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
"Le proxy HTTP I2P prend en charge les demandes {0}http://{1} uniquement."
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr "Le proxy HTTP d'I2P soutient les requêtes HTTP et HTTPS seulement."
#: ../java/build/Proxy.java:134
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
"D''autres protocoles tels que {0}https://{1} et {0}ftp://{1} ne sont pas "
"autorisés."
msgid "Other protocols such as FTP are not allowed."
msgstr "Les autres protocoles tel que le FTP ne sont pas permis."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "This seems to be a bad destination:"
msgstr "Cela semble être une mauvaise destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
"L'assistant d'adresse ne peut pas vous aider avec une destination comme "
"cela !"
msgstr "L'assistant d'adresse ne peut pas vous aider avec une destination comme cela !"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:638
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:662
#, 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 ""
"Pour aller à la destination de votre base de données d''hôtes, cliquez <a "
"href=\"{0}\">içi</a>. Pour aller à la destination de l''assistant d''adresse "
"en conflit, cliquez <a href=\"{1}\">ici</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 "Pour aller à la destination de votre base de données d''hôtes, cliquez <a href=\"{0}\">ici</a>. Pour aller à la destination de l''assistant d''adresse en conflit, cliquez <a href=\"{1}\">ici</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1151
msgid "Host"
msgstr "Hôte"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1155
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1159
msgid "Destination"
msgstr "Destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1165
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
"Aller sur le site i2p {0} sans enregistrer dans un carnet d''adresses. "
msgstr "Aller sur le site i2p {0} sans enregistrer dans un carnet d''adresses. "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1170
#, 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:1064
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1173
#, 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:1065
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1174
#, 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:1180
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1290
msgid "HTTP Outproxy"
msgstr "Proxy sortant HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1326
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en "
"utilisant un \"service de saut\":"
"Click a link below to look for an address helper by using a \"jump\" "
"service:"
msgstr "Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en utilisant un \"service de saut\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1334
#, java-format
msgid "{0} jump service"
msgstr "{0} jump service"
@@ -490,11 +421,11 @@ msgstr "{0} jump service"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:162
#, java-format
msgid "Added via address helper from {0}"
msgstr "Ajouté via assistant d''adresse depuis {0}"
msgstr "Ajouté via l''assistant d''adresse depuis {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:164
msgid "Added via address helper"
msgstr "Ajouté via assitant d'adresse"
msgstr "Ajouté via l''assistant d''adresse"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:187
msgid "router"

View File

@@ -2,26 +2,26 @@
# 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:
# <badcluster@i2pmail.org>, 2012.
# <bovas85@gmail.com>, 2012.
# <colomboi2p@ymail.com>, 2012.
# <jokjok@hotmail.it>, 2011.
# Tony Goodyear <fswitch20@hotmail.com>, 2012.
# BadCluster <badcluster@i2pmail.org>, 2012
# Leelium <bovas85@gmail.com>, 2012
# <colomboi2p@ymail.com>, 2012
# giuseppep <anubisteam01@gmail.com>, 2014
# mkkid <jokjok@hotmail.it>, 2011
# Tony Goodyear <fswitch20@hotmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-12-01 20:02+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/"
"it/)\n"
"Language: it\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-04-21 22:54+0000\n"
"Last-Translator: giuseppep <anubisteam01@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
@@ -97,8 +97,8 @@ msgstr ""
#: ../java/build/Proxy.java:15
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
"If you continue to have trouble you may want to edit your outproxy list "
"{0}here{1}."
msgstr ""
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:38
@@ -108,11 +108,11 @@ msgstr "Destinazione tunnel"
#: ../java/build/Proxy.java:17
msgid "Error: Request Denied"
msgstr ""
msgstr "Errore: Richiesta negata"
#: ../java/build/Proxy.java:23
msgid "Error: Local Access"
msgstr ""
msgstr "Errore: Accesso locale"
#: ../java/build/Proxy.java:24
msgid "Your browser is misconfigured."
@@ -147,8 +147,8 @@ msgstr ""
#: ../java/build/Proxy.java:36
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
"Otherwise, find a Base 32 or address helper link, or use a jump service link"
" below."
msgstr ""
#: ../java/build/Proxy.java:37
@@ -184,8 +184,8 @@ msgstr ""
#: ../java/build/Proxy.java:56
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
"Perhaps you pasted in the wrong Base 64 string or the link you are following"
" is bad."
msgstr ""
#: ../java/build/Proxy.java:57
@@ -231,8 +231,8 @@ msgstr ""
#: ../java/build/Proxy.java:85
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
"Someone could be trying to impersonate another eepsite, or people have given"
" two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:86
@@ -251,7 +251,8 @@ msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorizzazione Outproxy"
#: ../java/build/Proxy.java:89
msgid "This proxy is configured to require a username and password for access."
msgid ""
"This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:90
@@ -264,8 +265,9 @@ msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
"To disable authorization, remove the configuration "
"{0}i2ptunnel.proxy.auth=basic{1}, then stop and restart the HTTP Proxy "
"tunnel."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
@@ -307,8 +309,8 @@ msgstr ""
#: ../java/build/Proxy.java:113
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
"If you do not save it, the host name will be forgotten after the next router"
" restart."
msgstr ""
#: ../java/build/Proxy.java:114
@@ -345,82 +347,74 @@ msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:133
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr ""
#: ../java/build/Proxy.java:134
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgid "Other protocols such as FTP are not allowed."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "This seems to be a bad destination:"
msgstr "Questa non sembra essere una buona destinazione:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
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:638
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:662
#, 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 ""
"Per visitare la destinazione nel tuo database host, cliccare <a href="
"\"{0}\">qui</a>. \n"
"Per visitare la destinazione addresshelper in conflitto, cliccare <a href="
"\"{1}\">qui</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 "Per visitare la destinazione nel tuo database host, cliccare <a href=\"{0}\">qui</a>. \nPer visitare la destinazione addresshelper in conflitto, cliccare <a href=\"{1}\">qui</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1151
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1155
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1159
msgid "Destination"
msgstr "Destinazione"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1165
#, java-format
msgid "Continue to {0} without saving"
msgstr "Continua a {0} senza salvare"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1170
#, 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:1064
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1173
#, 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:1065
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1174
#, 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:1180
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1290
msgid "HTTP Outproxy"
msgstr "Ourproxy HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1326
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Cliccare un link quì sotto per cercare un address helper usando un servizio "
"di \"salto\":"
"Click a link below to look for an address helper by using a \"jump\" "
"service:"
msgstr "Cliccare un link quì sotto per cercare un address helper usando un servizio di \"salto\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1334
#, java-format
msgid "{0} jump service"
msgstr "{0} salta al servizio"
@@ -436,7 +430,7 @@ msgstr "Aggiunto con address helper"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:187
msgid "router"
msgstr ""
msgstr "router"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:189
msgid "master"
@@ -444,7 +438,7 @@ msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:191
msgid "private"
msgstr ""
msgstr "privato"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
#, java-format

View File

@@ -2,29 +2,28 @@
# 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:
# IOException <opexob@yandex.ru>, 2013
# Андрей Лукьяненко <operru32@yandex.ru>, 2013
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# gmind, 2012-2013
# Nikolay Parukhin <parukhin@gmail.com>, 2014
# sfix <anon-9b36b2e@lycos.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:11+0000\n"
"PO-Revision-Date: 2013-11-20 06:36+0000\n"
"Last-Translator: IOException <opexob@yandex.ru>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/"
"language/ru_RU/)\n"
"Language: ru_RU\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-03-17 19:03+0000\n"
"Last-Translator: Nikolay Parukhin <parukhin@gmail.com>\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
msgid "Warning: Outproxy Not Found"
@@ -87,28 +86,21 @@ msgstr "HTTP-прокси не поднят"
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
"Возможно, он отключен, сеть перегружена или ваш маршрутизатор недостаточно "
"интегрирован с другими узлами."
msgstr "Возможно, он отключен, сеть перегружена или ваш маршрутизатор недостаточно интегрирован с другими узлами."
#: ../java/build/Proxy.java:14
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
"Вы можете {0}повторить{1} операцию (это случайным образом выберет прокси-"
"сервер из определенного {2}здесь{3} списка, если вы настроили более одного "
"прокси-сервера)."
msgstr "Вы можете {0}повторить{1} операцию (это случайным образом выберет прокси-сервер из определенного {2}здесь{3} списка, если вы настроили более одного прокси-сервера)."
#: ../java/build/Proxy.java:15
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
"Если проблема продолжит появляться, вы можете изменить список прокси-"
"серверов {0}здесь{1}."
"If you continue to have trouble you may want to edit your outproxy list "
"{0}here{1}."
msgstr "Если проблема продолжит появляться, вы можете изменить список прокси-серверов {0}здесь{1}."
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:38
#: ../java/build/Proxy.java:59 ../java/build/Proxy.java:102
@@ -131,9 +123,7 @@ msgstr "Ваш браузер не поддерживает iFrames"
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
"Не используйте прокси-сервер для доступа к консоли маршрутизатора, "
"локальному компьютеру или локальной сети."
msgstr "Не используйте прокси-сервер для доступа к консоли маршрутизатора, локальному компьютеру или локальной сети."
#: ../java/build/Proxy.java:26
msgid "Warning: Eepsite Unknown"
@@ -158,20 +148,16 @@ msgstr "Если у вас есть адрес Base64, {0}добавьте ег
#: ../java/build/Proxy.java:36
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
"В противном случае найдите ссылку Base32 или AddressHelper или используйте "
"Jump-службу."
"Otherwise, find a Base 32 or address helper link, or use a jump service link"
" below."
msgstr "В противном случае найдите ссылку Base32 или AddressHelper или используйте Jump-службу."
#: ../java/build/Proxy.java:37
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
"Если вы слишком часто попадаете на эту страницу, то обратитесь к {0}FAQ{1} "
"за инструкциями по {2}добавлению подписок{3} адресной книги."
msgstr "Если вы слишком часто попадаете на эту страницу, то обратитесь к {0}FAQ{1} за инструкциями по {2}добавлению подписок{3} адресной книги."
#: ../java/build/Proxy.java:39 ../java/build/Proxy.java:45
msgid "Warning: Invalid Request URI"
@@ -185,9 +171,7 @@ msgstr "Некорректный URI запроса. Возможно, он со
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
"Если вы прошли по ссылке, проверьте конец URI на наличие символов, ошибочно "
"добавленных браузером."
msgstr "Если вы прошли по ссылке, проверьте конец URI на наличие символов, ошибочно добавленных браузером."
#: ../java/build/Proxy.java:48 ../java/build/Proxy.java:54
msgid "Warning: Invalid Destination"
@@ -201,11 +185,9 @@ msgstr "Указанный адрес недействителен или нед
#: ../java/build/Proxy.java:56
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
"Возможно, вы вставили неправильную строку Base64 или прошли по нерабочей "
"ссылке."
"Perhaps you pasted in the wrong Base 64 string or the link you are following"
" is bad."
msgstr "Возможно, вы вставили неправильную строку Base64 или прошли по нерабочей ссылке."
#: ../java/build/Proxy.java:57
msgid "The I2P host could also be offline."
@@ -232,9 +214,7 @@ msgstr "Предупреждение: Выходной прокси-сервер
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
"Вы запросили страницу вне сети I2P, но не имеете настроенного выходного "
"прокси-сервера."
msgstr "Вы запросили страницу вне сети I2P, но не имеете настроенного выходного прокси-сервера."
#: ../java/build/Proxy.java:76
msgid "Please configure an outproxy in I2PTunnel."
@@ -248,27 +228,20 @@ msgstr "Предупреждение: Конфликт ключа назначе
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
"Ссылка AddressHelper, по которой вы прошли, определяет ключ назначения, "
"отличный от указанного в адресной книге."
msgstr "Ссылка AddressHelper, по которой вы прошли, определяет ключ назначения, отличный от указанного в адресной книге."
#: ../java/build/Proxy.java:85
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
"Кто-то может пытаться выдать себя за другой сайт или разные люди дали двум "
"сайтам одинаковые имена."
"Someone could be trying to impersonate another eepsite, or people have given"
" two eepsites identical names."
msgstr "Кто-то может пытаться выдать себя за другой сайт или разные люди дали двум сайтам одинаковые имена."
#: ../java/build/Proxy.java:86
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
"Для разрешения конфликта вы можете определить, какому ключу вы доверяете, и "
"либо отказаться от прохода по ссылке, либо удалить старый ключ, либо "
"присвоить одному из них другое имя."
msgstr "Для разрешения конфликта вы можете определить, какому ключу вы доверяете, и либо отказаться от прохода по ссылке, либо удалить старый ключ, либо присвоить одному из них другое имя."
#: ../java/build/Proxy.java:87
msgid "Proxy Authorization Required"
@@ -279,7 +252,8 @@ msgid "I2P HTTP Proxy Authorization Required"
msgstr "Авторизация outproxy"
#: ../java/build/Proxy.java:89
msgid "This proxy is configured to require a username and password for access."
msgid ""
"This proxy is configured to require a username and password for access."
msgstr "Этот прокси-сервер требует имя пользователя и пароль для доступа."
#: ../java/build/Proxy.java:90
@@ -287,18 +261,15 @@ msgstr "Этот прокси-сервер требует имя пользов
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
"Введите имя и пароль или проверьте ваши {0}настройки маршрутизатора{1} и {2}"
"настройки I2PTunnel{3}."
msgstr "Введите имя и пароль или проверьте ваши {0}настройки маршрутизатора{1} и {2}настройки I2PTunnel{3}."
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
"Для отключения авторизации удалите строку {0}i2ptunnel.proxy.auth=basic{1} и "
"перезапустите туннель HTTP Proxy."
"To disable authorization, remove the configuration "
"{0}i2ptunnel.proxy.auth=basic{1}, then stop and restart the HTTP Proxy "
"tunnel."
msgstr "Для отключения авторизации удалите строку {0}i2ptunnel.proxy.auth=basic{1} и перезапустите туннель HTTP Proxy."
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Eepsite Unreachable"
@@ -312,9 +283,7 @@ msgstr "Сайт I2P недоступен."
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
"Возможно, он отключен, сеть перегружена или ваш маршрутизатор недостаточно "
"интегрирован с другими узлами."
msgstr "Возможно, он отключен, сеть перегружена или ваш маршрутизатор недостаточно интегрирован с другими узлами."
#: ../java/build/Proxy.java:103
msgid "Information: New Host Name"
@@ -328,9 +297,7 @@ msgstr "Информация: Новый доменной адрес с AddressH
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
"Ссылка AddressHelper, по которой вы прошли, ведет на домен, не внесенный в "
"адресную книгу."
msgstr "Ссылка AddressHelper, по которой вы прошли, ведет на домен, не внесенный в адресную книгу."
#: ../java/build/Proxy.java:111
msgid "You may save this host name to your local address book."
@@ -339,23 +306,19 @@ msgstr "Вы можете сохранить этот домен в свою л
#: ../java/build/Proxy.java:112
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
"Если вы сохраните его в вашей адресной книге, вы больше не будете видеть это "
"сообщение."
msgstr "Если вы сохраните его в вашей адресной книге, вы больше не будете видеть это сообщение."
#: ../java/build/Proxy.java:113
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
"Если вы не сохраните его, он будет «забыт» после перезапуска маршрутизатора."
"If you do not save it, the host name will be forgotten after the next router"
" restart."
msgstr "Если вы не сохраните его, он будет «забыт» после перезапуска маршрутизатора."
#: ../java/build/Proxy.java:114
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
"Если вы не хотите посещать этот сайт, нажмите кнопку «Назад» в браузере."
msgstr "Если вы не хотите посещать этот сайт, нажмите кнопку «Назад» в браузере."
#: ../java/build/Proxy.java:115 ../java/build/Proxy.java:121
msgid "Warning: Bad Address Helper"
@@ -374,9 +337,7 @@ msgstr "Возможно, он содержит ненужные данные и
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
"Проверьте URL и попробуйте исправить ссылку с использованием корректной "
"ссылки Base32 или Base64."
msgstr "Проверьте URL и попробуйте исправить ссылку с использованием корректной ссылки Base32 или Base64."
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:131
msgid "Warning: Non-HTTP Protocol"
@@ -387,86 +348,74 @@ msgid "The request uses a bad protocol."
msgstr "Запрос отправлен через неподдерживанмый протокол."
#: ../java/build/Proxy.java:133
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr "HTTP-прокси I2P поддерживает ТОЛЬКО протокол {0}http://{1}."
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr "I2P HTTP прокси поддерживает только HTTP и HTTPS запросы."
#: ../java/build/Proxy.java:134
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
"Другие протоколы, такие как {0}https://{1} и {0}ftp://{1} не поддерживаются."
msgid "Other protocols such as FTP are not allowed."
msgstr "Другие протоколы, такие как FTP не допустимы."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "This seems to be a bad destination:"
msgstr "Кажется это плохой адрес назначения:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "С таким адресом назначения i2paddresshelper вам не поможет!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:638
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:662
#, 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 ""
"Для перехода по ссылке из локальной адресной книги, нажмите <a href="
"\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a "
"href=\"{1}\">здесь</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 "Для перехода по ссылке из локальной адресной книги, нажмите <a href=\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a href=\"{1}\">здесь</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1151
msgid "Host"
msgstr "Адрес"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1155
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1159
msgid "Destination"
msgstr "Адрес назначения"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1165
#, java-format
msgid "Continue to {0} without saving"
msgstr "Продолжить переход к {0} без сохранения"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1170
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
"Сохранить {0} в адресную книгу роутера (router address book) и продолжить "
"переход к eep-сайту"
msgstr "Сохранить {0} в адресную книгу роутера (router address book) и продолжить переход к eep-сайту"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1064
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1173
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
"Сохранить {0} в основную (master) адресную книгу и продолжить переход к eep-"
"сайту"
msgstr "Сохранить {0} в основную (master) адресную книгу и продолжить переход к eep-сайту"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1174
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
"Сохранить {0} в приватную адресную книгу и продолжить переход к eep-сайту"
msgstr "Сохранить {0} в приватную адресную книгу и продолжить переход к eep-сайту"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1290
msgid "HTTP Outproxy"
msgstr "HTTP Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1326
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:"
"Click a link below to look for an address helper by using a \"jump\" "
"service:"
msgstr "Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1334
#, java-format
msgid "{0} jump service"
msgstr "{0} jump service"

View File

@@ -2,10 +2,10 @@
# 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:
# ducki2p <ducki2p@gmail.com>, 2011
# nametooshort <oiiu19@yahoo.com>, 2013
# nametooshort <oiiu19@yahoo.com>, 2013-2014
# walking <walking@i2pmail.org>, 2011
# walking <waling@mail.i2p>, 2013
# walking <walking@i2pmail.org>, 2011
@@ -14,15 +14,14 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-12-01 19:56+0000\n"
"PO-Revision-Date: 2013-11-22 05:56+0000\n"
"Last-Translator: wwj402 <wwj402@gmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/"
"language/zh_CN/)\n"
"Language: zh_CN\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-04-23 12:37+0000\n"
"Last-Translator: nametooshort <oiiu19@yahoo.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
@@ -93,15 +92,13 @@ msgstr "它已经下线,遇到网络拥堵,或您的路由尚未完全整合
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
"您可以{0}重试{1},程序将从您在 {2}此处{3} 定义的出口代理列表中随机选择一个进"
"行连接(如果您设置了多项代理)。"
msgstr "您可以{0}重试{1},程序将从您在 {2}此处{3} 定义的出口代理列表中随机选择一个进行连接(如果您设置了多项代理)。"
#: ../java/build/Proxy.java:15
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
"If you continue to have trouble you may want to edit your outproxy list "
"{0}here{1}."
msgstr "如果问题持续存在,您可能需要{0}在此{1}编辑出口代理列表。"
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:38
@@ -150,20 +147,16 @@ msgstr "如果您拥有 Base64 地址,请{0}将其添加至您的地址簿{1}
#: ../java/build/Proxy.java:36
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
"否则,请找到其对应的 Base32 地址或地址助手链接,或使用下面列出的跳转服务之"
"一。"
"Otherwise, find a Base 32 or address helper link, or use a jump service link"
" below."
msgstr "否则,请找到其对应的 Base32 地址或地址助手链接,或使用下面列出的跳转服务之一。"
#: ../java/build/Proxy.java:37
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
"经常碰到此页面?请参见 {0}常见问题集 FAQ{1} 查看如何为您的地址簿 {2}添加订阅"
"{3}。"
msgstr "经常碰到此页面?请参见 {0}常见问题集 FAQ{1} 查看如何为您的地址簿 {2}添加订阅{3}。"
#: ../java/build/Proxy.java:39 ../java/build/Proxy.java:45
msgid "Warning: Invalid Request URI"
@@ -191,8 +184,8 @@ msgstr "指定站点的目标密钥无效,或无法到达。"
#: ../java/build/Proxy.java:56
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
"Perhaps you pasted in the wrong Base 64 string or the link you are following"
" is bad."
msgstr "或许您粘贴的 Base64 字符串有误或您打开的链接有问题。"
#: ../java/build/Proxy.java:57
@@ -238,8 +231,8 @@ msgstr "您所打开的地址簿连接指定的目标密钥与您的地址簿中
#: ../java/build/Proxy.java:85
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
"Someone could be trying to impersonate another eepsite, or people have given"
" two eepsites identical names."
msgstr "可能有人正试图通过此链接伪装成此站点,或有人使用了相同的站点网址。"
#: ../java/build/Proxy.java:86
@@ -247,9 +240,7 @@ msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
"您可以通过指定信任的密钥来解决冲突,或丢弃地址助手链接,或丢弃您地址簿中的记"
"录,或为其中之一重命名其网址。"
msgstr "您可以通过指定信任的密钥来解决冲突,或丢弃地址助手链接,或丢弃您地址簿中的记录,或为其中之一重命名其网址。"
#: ../java/build/Proxy.java:87
msgid "Proxy Authorization Required"
@@ -260,7 +251,8 @@ msgid "I2P HTTP Proxy Authorization Required"
msgstr "出口代理认证"
#: ../java/build/Proxy.java:89
msgid "This proxy is configured to require a username and password for access."
msgid ""
"This proxy is configured to require a username and password for access."
msgstr "代理配置要求提供用户名和密码才能访问。"
#: ../java/build/Proxy.java:90
@@ -268,18 +260,15 @@ msgstr "代理配置要求提供用户名和密码才能访问。"
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
"请输入您的用户名和密码,否则请检查您的 {0} 路由配置 {1} 或 {2} I2PTunnel 配"
"置 {3}。"
msgstr "请输入您的用户名和密码,否则请检查您的 {0} 路由配置 {1} 或 {2} I2PTunnel 配置 {3}。"
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
"要禁用身份认证,请删除配置 {0}i2ptunnel.proxy.auth=basic{1}, 然后停止并重启 "
"HTTP Proxy 隧道。"
"To disable authorization, remove the configuration "
"{0}i2ptunnel.proxy.auth=basic{1}, then stop and restart the HTTP Proxy "
"tunnel."
msgstr "要禁用身份认证,请删除配置 {0}i2ptunnel.proxy.auth=basic{1}, 然后停止并重启 HTTP Proxy 隧道。"
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Eepsite Unreachable"
@@ -293,8 +282,7 @@ msgstr "此 I2P 站点不可达"
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
"此 I2P 站点已经下线,遇到网络拥堵,或您的路由尚未完全整合至 I2P 网络中。"
msgstr "此 I2P 站点已经下线,遇到网络拥堵,或您的路由尚未完全整合至 I2P 网络中。"
#: ../java/build/Proxy.java:103
msgid "Information: New Host Name"
@@ -321,8 +309,8 @@ msgstr "在地址簿中保存后,此提示将不在显示。"
#: ../java/build/Proxy.java:113
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
"If you do not save it, the host name will be forgotten after the next router"
" restart."
msgstr "如果不保存,路由重启后,此站点地址将被遗忘。"
#: ../java/build/Proxy.java:114
@@ -359,78 +347,74 @@ msgid "The request uses a bad protocol."
msgstr "请求使用了无效协议。"
#: ../java/build/Proxy.java:133
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr "I2P HTTP 代理仅支持{0}http://{1}请求。"
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr "I2P HTTP 代理只支持HTTP和HTTPS请求。"
#: ../java/build/Proxy.java:134
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr "不允许其他协议如 {0}https://{1} 及 {0}ftp://{1}。"
msgid "Other protocols such as FTP are not allowed."
msgstr "其他协议例如FTP不被支持。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "This seems to be a bad destination:"
msgstr "目标似乎无效:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:571
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:595
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2paddresshelper 对您输入的目标无能为力!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:638
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:662
#, 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 ""
"要访问您地址簿中设置的目标,请点击<a href=\"{0}\">这里</a>。要访问地址助手返"
"回的目标,请点<a href=\"{1}\">这里</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 "要访问您地址簿中设置的目标,请点击<a href=\"{0}\">这里</a>。要访问地址助手返回的目标,请点<a href=\"{1}\">这里</a>。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1151
msgid "Host"
msgstr "主机"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1155
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1050
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1159
msgid "Destination"
msgstr "目标"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1056
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1165
#, java-format
msgid "Continue to {0} without saving"
msgstr "继续{0},而不保存"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1061
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1170
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "保存{0}至“路由器地址簿”并访问该 I2P 站点。"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1064
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1173
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "保存{0}至“主地址簿”并访问该 I2P 站点。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1174
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "保存{0}至“私有地址簿”并访问该 I2P 站点。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1290
msgid "HTTP Outproxy"
msgstr "HTTP 出口代理"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1326
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
"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:1224
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1334
#, java-format
msgid "{0} jump service"
msgstr "{0} 跳转服务"

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:27+0000\n"
"PO-Revision-Date: 2014-01-13 16:45+0000\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-05-11 17:33+0000\n"
"Last-Translator: Towatowa441\n"
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
"MIME-Version: 1.0\n"
@@ -24,141 +24,141 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:350
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:360
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:363
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:373
msgid "internal"
msgstr "interne"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:436
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:449
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] "{0} entrant, {0} sortant tunnels"
msgstr[1] "{0} entrants, {0} sortants tunnels"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:440
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:453
msgid "lower bandwidth and reliability"
msgstr "bande passante et fiabilité plus basses"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:442
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:455
msgid "standard bandwidth and reliability"
msgstr "basse passante et fiabilité standards"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:444
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:457
msgid "higher bandwidth and reliability"
msgstr "basse passante et fiabilité plus élevées"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:121
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:123
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr "Les tunnels sont pas encore initialisés, s'il vous plaît rechargez dans deux minutes."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr "Échec de soumission du formulaire: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Recharger\" de votre navigateur. Merci de soumettre à nouveau."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:198
msgid ""
"If the problem persists, verify that you have cookies enabled in your "
"browser."
msgstr "Si le problème persiste, vérifiez que vous avez activé les cookies dans votre navigateur."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:244
msgid "Configuration reloaded for all tunnels"
msgstr "Configuration rechargée pour tous les tunnels"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:255
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:257
msgid "Starting tunnel"
msgstr "Démarrage du tunnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:268
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:270
msgid "Stopping tunnel"
msgstr "Arrêt du tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:336
msgid "Configuration changes saved"
msgstr "Modification de configuration enregistrée"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:339
msgid "Failed to save configuration"
msgstr "Échec d'enregistrement de la configuration"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
msgid "New Tunnel"
msgstr "Nouveau tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:494
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611
msgid "Port not set"
msgstr "Port non défini"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:613
msgid "Invalid port"
msgstr "Port invalide"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490
msgid "Warning - ports less than 1024 are not recommended"
msgstr "Avertissement - les ports en dessous de 1024 ne sont pas recommandés"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506
msgid "Standard client"
msgstr "Client standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505
msgid "HTTP client"
msgstr "Client HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
msgid "HTTP/HTTPS client"
msgstr "Client HTTP/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
msgid "IRC client"
msgstr "Client IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
msgid "Standard server"
msgstr "Serveur standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
msgid "HTTP server"
msgstr "Serveur HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
msgid "SOCKS 4/4a/5 proxy"
msgstr "Mandataire SOCKS 4/4a/5"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
msgid "SOCKS IRC proxy"
msgstr "Mandataire IRC SOCKS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "Mandataire CONNECT/SSL/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
msgid "IRC server"
msgstr "Serveur IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515
msgid "Streamr client"
msgstr "Client flux"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:516
msgid "Streamr server"
msgstr "Serveur flux"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
msgid "HTTP bidir"
msgstr "bidir HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
msgid "Host not set"
msgstr "Hôte non défini"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:607
msgid "Invalid address"
msgstr "Adresse incorrecte"
@@ -194,7 +194,7 @@ msgstr "Type"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:422
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330
msgid "Description"
msgstr "Description"
@@ -212,7 +212,7 @@ msgstr "Point d'accès"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
@@ -231,202 +231,211 @@ msgid "Outproxies"
msgstr "Mandataires sortants"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgstr "Destination de tunnel"
msgid "SSL Outproxies"
msgstr "Proxies sortants SSL"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382
msgid "name, name:port, or destination"
msgstr "nom, nom:port, ou destination"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:209
msgid "Use Outproxy Plugin"
msgstr "Utiliser plug-in proxy sortant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:386
msgid "b32 not recommended"
msgstr "b32 déconseillée"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid "Shared Client"
msgstr "Client partagé"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(Partager les tunnels avec d'autres clients et des clients http/irc ? La modification requiert le redémarrage du client mandataire)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:522
msgid "Auto Start"
msgstr "Démarrage automatique"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:244
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:213
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:526
msgid "(Check the Box for 'YES')"
msgstr "(Cochez la case pour démarrage automatique en même temps que le routeur)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgstr "Destination de tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:230
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382
msgid "name, name:port, or destination"
msgstr "nom, nom:port, ou destination"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:233
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:386
msgid "b32 not recommended"
msgstr "b32 déconseillée"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
msgid "Shared Client"
msgstr "Client partagé"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(Partager les tunnels avec d'autres clients et des clients http/irc ? La modification requiert le redémarrage du client mandataire)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:522
msgid "Auto Start"
msgstr "Démarrage automatique"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
msgid "Enable DCC"
msgstr "Active DCC"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "Advanced networking options"
msgstr "Options de réseau avancées"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr "(ATTENTION : quand ce mandataire client est configuré pour partager les tunnels, ces options sont appliquées à tous les mandataires clients partagés)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:252
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268
msgid "Tunnel Options"
msgstr "Options de tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270
msgid "Length"
msgstr "Longueur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277
msgid "0 hop tunnel (no anonymity)"
msgstr "0 tunnel d'étape (aucun anonymat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
msgid "1 hop tunnel (low anonymity)"
msgstr "1 tunnel d'étape (bas anonymat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:285
msgid "2 hop tunnel (medium anonymity)"
msgstr "2 tunnels d'étape (moyen anonymat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289
msgid "3 hop tunnel (high anonymity)"
msgstr "3 tunnels d'étape (haut anonymat)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:281
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297
msgid "hop tunnel (very poor performance)"
msgstr "Tunnel de saut (performances médiocres)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302
msgid "Variance"
msgstr "Variance"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr "Variance à 0 saut (pas d'aléa, performances stables)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:313
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr "Variance à + 0 ou 1 saut (aléa moyen, performances diminuées)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:317
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr "Variance à + 0 à 2 sauts (aléa élevé, performances diminuées)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:305
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr "Variance à +/- 0 ou 1 saut (aléas légers, performances diminuées)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:309
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:325
msgid "+/- 0-2 hop variance (not recommended)"
msgstr "Variance à +/- 0 à 2 sauts (déconseillée)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336
msgid "hop variance"
msgstr "variance de saut"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "Count"
msgstr "Nombre"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid "Backup Count"
msgstr "Secours"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:336
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:351
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:352
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:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
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:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
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:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
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:356
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "backup tunnels"
msgstr "Tunnels de secours"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386
msgid "interactive connection"
msgstr "connexion interactive"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
msgid "bulk connection (downloads/websites/BT)"
msgstr "connexion à fort transfert (téléchargements/sites web/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391
msgid "Delay Connect"
msgstr "Retard à la connexion"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:395
msgid "for request/response connections"
msgstr "pour les connexions demande/réponse"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:394
msgid "Router I2CP Address"
msgstr "Adresse I2CP du routeur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413
msgid "Host"
msgstr "Hôte"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:273
@@ -435,107 +444,107 @@ msgstr "Hôte"
msgid "Port"
msgstr "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502
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:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:428
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:488
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:465
#: ../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:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
msgid "Enable"
msgstr "Activer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508
msgid "Reduced tunnel count"
msgstr "Réduire à"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:512
msgid "Idle minutes"
msgstr "Minutes d'inactivité"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
msgid "Close tunnels when idle"
msgstr "Fermer les tunnels quand inactif"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
msgid "New Keys on Reopen"
msgstr "Nouvelles clés à la réouverture"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430
msgid "Disable"
msgstr "Désactiver"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
msgid "Delay tunnel open until required"
msgstr "Retarder l'ouverture jusqu'à l'utilisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:448
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
msgid "Persistent private key"
msgstr "Clé privée persistante"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:469
msgid "File"
msgstr "Fichier"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Local destination"
msgstr "Destination locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Local Base 32"
msgstr "Base locale 32"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491
msgid "Local Authorization"
msgstr "Autorisation locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../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 "Identifiant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../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 "Mot de passe"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501
msgid "Outproxy Authorization"
msgstr "Autorisation de mandataire sortant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
msgid "Jump URL List"
msgstr "Liste d'URL de sauts"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:509
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:548
msgid "Custom options"
msgstr "Options personnelles"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:513
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:552
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:702
msgid "Cancel"
msgstr "Annuler"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:532
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:556
msgid "Delete"
msgstr "Supprimer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:534
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:558
msgid "Save"
msgstr "Enregistrer"
@@ -786,7 +795,7 @@ msgid "New server tunnel"
msgstr "Nouveau tunnel serveur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:423
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295
@@ -796,7 +805,7 @@ msgid "Standard"
msgstr "Standard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:434
msgid "Create"
msgstr "Créer"
@@ -821,11 +830,15 @@ msgstr "Mandataire sortant"
msgid "Destination"
msgstr "Destination"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395
msgid "internal plugin"
msgstr "plugin interne"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414
msgid "none"
msgstr "aucun"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:430
msgid "New client tunnel"
msgstr "Nouveau tunnel client"
@@ -883,13 +896,13 @@ msgstr "La première chose à décider est de savoir si vous voulez créer un se
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."
msgstr "Si vous avez besoin de vous connecter à un service distant, tel qu'un serveur IRC à l'intérieur de 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."
msgstr "D'autre part, si vous souhaitez héberger un service afin que d'autres se connectent à vous, alors vous aurez besoin de créer un tunnel SERVEUR."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197
msgid "Server Tunnel"
@@ -912,7 +925,7 @@ msgstr "Tunnel de base pour la connexion à un service unique à l'intérieur de
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."
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 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."
@@ -1003,7 +1016,7 @@ msgstr "Un tunnel de serveur de base pour héberger un service générique à l'
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271
msgid "A server tunnel that is customised for HTTP connections."
msgstr "Un tunnel de serveur qui est adapté pour les connexions HTTP."
msgstr "Un tunnel de serveur qui est adapté aux connexions HTTP."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273
msgid "Use this tunnel type if you want to host an eepsite."
@@ -1017,17 +1030,17 @@ msgstr "Un tunnel serveur personnalisé qui peut à la fois servir des données
#: ../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)."
msgstr "Ce type de tunnel est principalement utilisé lors de l'exécution d'un serveur Seedless."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
msgid "A customised server tunnel for hosting IRC networks inside I2P."
msgstr "Un tunnel serveur personnalisées pour l'hébergement de réseaux IRC à l'intérieur de I2P."
msgstr "Un tunnel serveur personnalisé afin d'héberger des réseaux IRC à l'intérieur de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:281
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."
msgstr "Habituellement, un tunnel séparé doit être créé pour chaque serveur IRC devant ê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."
@@ -1041,7 +1054,7 @@ msgstr "Choisir un nom et une description pour votre tunnel."
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."
msgstr "Ceux-ci peuvent être tout ce que vous voulez - ils sont simplement là pour faciliter l'identification du tunnel dans la console routeur."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
msgid ""
@@ -1104,7 +1117,7 @@ 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 "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."
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 maintient des tunnels inutiles."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:546
msgid "The wizard has now collected enough information to create your tunnel."
@@ -1146,14 +1159,14 @@ msgstr "Voici un résumé des options que vous avez choisies :"
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."
msgstr "Parallèlement à ces réglages de base, il y a un certain nombre d'options avancées pour la configuration du tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:665
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 "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."
msgstr "L'assistant va définir des valeurs par défaut plus raisonnables 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:707
msgid "Previous"

View File

@@ -6,6 +6,7 @@
# Translators:
# BadCluster <badcluster@i2pmail.org>, 2012
# Leelium <bovas85@gmail.com>, 2012
# alamir <christianm@libero.it>, 2014
# ColomboI2P <inactive+ColomboI2P@transifex.com>, 2012
# fletcherlynd <fletcherlynd@hotmail.com>, 2013
# mkkid <jokjok@hotmail.it>, 2011
@@ -14,9 +15,9 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-12-01 20:06+0000\n"
"PO-Revision-Date: 2013-12-27 10:58+0000\n"
"Last-Translator: fletcherlynd <fletcherlynd@hotmail.com>\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-04-18 21:16+0000\n"
"Last-Translator: alamir <christianm@libero.it>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -24,141 +25,141 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:350
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:360
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:363
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:373
msgid "internal"
msgstr "interno"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:436
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:449
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] "{0} tunnel in entrata, {0} in uscita"
msgstr[1] "{0} tunnel in entrata, {0} in uscita"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:440
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:453
msgid "lower bandwidth and reliability"
msgstr "Larghezza di banda e affidabilità minore"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:442
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:455
msgid "standard bandwidth and reliability"
msgstr "Larghezza di banda e affidabilità standard"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:444
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:457
msgid "higher bandwidth and reliability"
msgstr "Larghezza di banda e affidabilità maggiore"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:121
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:123
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr "Tunnel non ancora inizializzati, ricarica tra due minuti."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr "Sottomissione di form invalido, probabilmente perchè hai usato il bottone 'indietro' o 'aggiorna' del tuo browser. Ripetere perfavore."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:198
msgid ""
"If the problem persists, verify that you have cookies enabled in your "
"browser."
msgstr "Se il problema persiste, verifica di avere i cookies abilitati nel tuo browser."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:244
msgid "Configuration reloaded for all tunnels"
msgstr "Configurazione ricaricata per tutti i tunnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:255
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:257
msgid "Starting tunnel"
msgstr "Avviando tunnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:268
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:270
msgid "Stopping tunnel"
msgstr "Fermando tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:336
msgid "Configuration changes saved"
msgstr "Cambiamenti alla configurazione salvati"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:339
msgid "Failed to save configuration"
msgstr "Fallimento nel salvataggio della configurazione"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
msgid "New Tunnel"
msgstr "Nuovo Tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:494
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611
msgid "Port not set"
msgstr "Porta non impostata"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:613
msgid "Invalid port"
msgstr "Porta non valida"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490
msgid "Warning - ports less than 1024 are not recommended"
msgstr "Attenzione - È meglio non utilizzare porte inferiori alla 1024"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506
msgid "Standard client"
msgstr "Client standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505
msgid "HTTP client"
msgstr "Client HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
msgid "HTTP/HTTPS client"
msgstr "Client HTTP/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
msgid "IRC client"
msgstr "Client IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
msgid "Standard server"
msgstr "Server standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
msgid "HTTP server"
msgstr "Server HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
msgid "SOCKS 4/4a/5 proxy"
msgstr "Proxy SOCKS 4/4a/5 "
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
msgid "SOCKS IRC proxy"
msgstr "Proxy SOCKS IRC "
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "Proxy CONNECT/SSL/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
msgid "IRC server"
msgstr "Server IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515
msgid "Streamr client"
msgstr "Client streamr"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:516
msgid "Streamr server"
msgstr "Server streamr"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
msgid "HTTP bidir"
msgstr "HTTP bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
msgid "Host not set"
msgstr "Host non impostato"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:607
msgid "Invalid address"
msgstr "Indirizzo non valido"
@@ -194,7 +195,7 @@ msgstr "Tipo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:422
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330
msgid "Description"
msgstr "Descrizione"
@@ -212,7 +213,7 @@ msgstr "Punto di Accesso"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
@@ -231,202 +232,211 @@ msgid "Outproxies"
msgstr "Outproxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgstr "Destinazione Tunnel "
msgid "SSL Outproxies"
msgstr "Proxy di uscita SSL"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382
msgid "name, name:port, or destination"
msgstr "nome, nome:porta, o destinazione"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:209
msgid "Use Outproxy Plugin"
msgstr "Usa plugin del proxy in uscita"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:386
msgid "b32 not recommended"
msgstr "b32 non consigliato"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid "Shared Client"
msgstr "Client Condiviso"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(Condividere tunnel con altri client e client irc/http? Il cambiamento richiede il riavvio del client proxy)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:522
msgid "Auto Start"
msgstr "Avvio Automatico"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:244
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:213
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:526
msgid "(Check the Box for 'YES')"
msgstr "(Seleziona il Box per 'SI')"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgstr "Destinazione Tunnel "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:230
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382
msgid "name, name:port, or destination"
msgstr "nome, nome:porta, o destinazione"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:233
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:386
msgid "b32 not recommended"
msgstr "b32 non consigliato"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
msgid "Shared Client"
msgstr "Client Condiviso"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(Condividere tunnel con altri client e client irc/http? Il cambiamento richiede il riavvio del client proxy)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:522
msgid "Auto Start"
msgstr "Avvio Automatico"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
msgid "Enable DCC"
msgstr "Abilita DCC"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "Advanced networking options"
msgstr "Opzioni di rete avanzate"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr "(NOTA: quando questo client proxy è configurato per condividere i tunnel, queste opzioni saranno valide per tutti i client proxy condivisi!)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:252
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268
msgid "Tunnel Options"
msgstr "Opzioni Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270
msgid "Length"
msgstr "Lunghezza"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277
msgid "0 hop tunnel (no anonymity)"
msgstr "0 tunnel hop (nessun anonimato)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
msgid "1 hop tunnel (low anonymity)"
msgstr "1 tunnel hop (anonimato basso)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:285
msgid "2 hop tunnel (medium anonymity)"
msgstr "2 tunnel hop (anonimato medio)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289
msgid "3 hop tunnel (high anonymity)"
msgstr "3 tunnel hop (anonimato alto)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:281
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297
msgid "hop tunnel (very poor performance)"
msgstr "tunnel hop (prestazioni molto basse)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302
msgid "Variance"
msgstr "Varianza"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr "varianza 0 hop (nessuna randomizzazione, prestazioni coerenti)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:313
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr "varianza + 0-1 hop (randomizzazione additiva media, prestazioni sottrattive)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:317
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr "varianza + 0-2 hop (randomizzazione additiva alta, prestazioni sottrattive)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:305
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr "varianza +/- 0-1 hop (randomizzazione standard, prestazioni standard)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:309
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:325
msgid "+/- 0-2 hop variance (not recommended)"
msgstr "hop varianza +/- 0-2 (non consigliata)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336
msgid "hop variance"
msgstr "varianza hop"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "Count"
msgstr "Conteggio"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid "Backup Count"
msgstr "Conteggio Backup "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:336
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:351
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:352
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:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
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:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
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:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
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:356
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "backup tunnels"
msgstr "tunnel di backup"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "Profile"
msgstr "Profilo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386
msgid "interactive connection"
msgstr "connessione interattiva"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
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:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391
msgid "Delay Connect"
msgstr "Ritarda Connessione"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:395
msgid "for request/response connections"
msgstr "per connessioni richiesta/risposta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:394
msgid "Router I2CP Address"
msgstr "Indirizzo I2CP Router"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413
msgid "Host"
msgstr "Host"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:273
@@ -435,107 +445,107 @@ msgstr "Host"
msgid "Port"
msgstr "Porta"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502
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:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:428
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:469
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:465
#: ../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:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
msgid "Enable"
msgstr "Abilita"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508
msgid "Reduced tunnel count"
msgstr "Riduci conteggio tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:512
msgid "Idle minutes"
msgstr "Minuti di inattività"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
msgid "Close tunnels when idle"
msgstr "Chiudi i tunnel quando inattivo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
msgid "New Keys on Reopen"
msgstr "Nuove Chiavi alla riapertura"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430
msgid "Disable"
msgstr "Disabilita"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
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:448
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
msgid "Persistent private key"
msgstr "Chiave privata persistente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:469
msgid "File"
msgstr "File"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:458
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Local destination"
msgstr "Destinazione locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:462
msgid "(if known)"
msgstr "(se conosciuto)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Local Base 32"
msgstr "Base 32 (locale)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467
#: ../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:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:483
#: ../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:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:487
#: ../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:477
#: ../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:494
#: ../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:500
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:548
msgid "Custom options"
msgstr "Opzioni personalizzate"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:504
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:552
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:702
msgid "Cancel"
msgstr "Annulla"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:532
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:556
msgid "Delete"
msgstr "Elimina"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:534
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:558
msgid "Save"
msgstr "Salva"
@@ -786,7 +796,7 @@ msgid "New server tunnel"
msgstr "Nuovo server tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:423
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295
@@ -796,7 +806,7 @@ msgid "Standard"
msgstr "Standard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:434
msgid "Create"
msgstr "Crea"
@@ -821,11 +831,15 @@ msgstr "Outproxy"
msgid "Destination"
msgstr "Destinazione"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395
msgid "internal plugin"
msgstr "Plugin interno"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414
msgid "none"
msgstr "Vuoto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:430
msgid "New client tunnel"
msgstr "Nuovo tunnel client"

View File

@@ -4,14 +4,14 @@
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# plazmism <gomidori@live.jp>, 2013
# plazmism <gomidori@live.jp>, 2013-2014
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:27+0000\n"
"PO-Revision-Date: 2014-01-09 19:27+0000\n"
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
"POT-Creation-Date: 2014-02-06 18:27+0000\n"
"PO-Revision-Date: 2014-02-13 10:06+0000\n"
"Last-Translator: plazmism <gomidori@live.jp>\n"
"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,140 +19,140 @@ msgstr ""
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:350
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:360
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:363
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:373
msgid "internal"
msgstr "内部"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:436
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:449
#, java-format
msgid "{0} inbound, {0} outbound tunnel"
msgid_plural "{0} inbound, {0} outbound tunnels"
msgstr[0] ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:440
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:453
msgid "lower bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:442
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:455
msgid "standard bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:444
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:457
msgid "higher bandwidth and reliability"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:121
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:123
msgid "Tunnels are not initialized yet, please reload in two minutes."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr "無効な送信フォーム。おそらくブラウザで「戻る」か「再読込」を使用したためです。再送信してください。"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:196
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:198
msgid ""
"If the problem persists, verify that you have cookies enabled in your "
"browser."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:244
msgid "Configuration reloaded for all tunnels"
msgstr "すべてのトンネルの設定が再読込されました。"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:255
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:257
msgid "Starting tunnel"
msgstr "トンネルを開始中"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:268
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:270
msgid "Stopping tunnel"
msgstr "トンネルを開始中"
msgstr "トンネルを停止中"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:336
msgid "Configuration changes saved"
msgstr "設定の変更は保存されました"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:339
msgid "Failed to save configuration"
msgstr "設定を保存できませんでした"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
msgid "New Tunnel"
msgstr "新しいトンネル"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609
msgid "Port not set"
msgstr "ポート設定なし"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:494
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611
msgid "Port not set"
msgstr "ポート未設定"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:613
msgid "Invalid port"
msgstr "無効なポート"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490
msgid "Warning - ports less than 1024 are not recommended"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504
msgid "Standard client"
msgstr "通常クライアント"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505
msgid "HTTP client"
msgstr "HTTP クライアント"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506
msgid "Standard client"
msgstr "標準クライアント"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
msgid "HTTP/HTTPS client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
msgid "IRC client"
msgstr "IRC クライアント"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
msgid "Standard server"
msgstr "通常サーバー"
msgstr "標準サーバー"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
msgid "HTTP server"
msgstr "HTTP サーバー"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS 4/4a/5 プロキシ"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
msgid "SOCKS IRC proxy"
msgstr "SOCKS IRC プロキシ"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "CONNECT/SSL/HTTPS プロキシ"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
msgid "IRC server"
msgstr "IRC サーバー"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513
msgid "Streamr client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514
msgid "Streamr server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515
msgid "Streamr client"
msgstr "Streamr クライアント"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:516
msgid "Streamr server"
msgstr "Streamr サーバー"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
msgid "HTTP bidir"
msgstr "HTTP 双方向"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
msgid "Host not set"
msgstr "ホスト設定なし"
msgstr "ホスト設定"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:607
msgid "Invalid address"
msgstr "無効なアドレス"
@@ -188,7 +188,7 @@ msgstr "タイプ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:422
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330
msgid "Description"
msgstr "説明"
@@ -206,7 +206,7 @@ msgstr "アクセスポイント"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236
@@ -217,210 +217,219 @@ msgstr "必須"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:201
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:482
msgid "Reachable by"
msgstr ""
msgstr "次からアクセス可能:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:196
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:358
msgid "Outproxies"
msgstr ""
msgstr "アウトプロキシ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgid "SSL Outproxies"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:209
msgid "Use Outproxy Plugin"
msgstr "アウトプロキシのプラグインを使用"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:213
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:526
msgid "(Check the Box for 'YES')"
msgstr "(「はい」のボックスにチェックを入れてください)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
msgid "Tunnel Destination"
msgstr "トンネル送信先"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:230
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382
msgid "name, name:port, or destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:233
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:386
msgid "b32 not recommended"
msgstr ""
msgstr "b32 は非推奨です"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
msgid "Shared Client"
msgstr ""
msgstr "共有クライアント"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr ""
msgstr "(他のクライアント及び irc/http クライアントとトンネルを共有しますか?変更にはクライアントプロキシの再起動が必要です)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:522
msgid "Auto Start"
msgstr ""
msgstr "自動開始"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:244
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:526
msgid "(Check the Box for 'YES')"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
msgid "Enable DCC"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "Advanced networking options"
msgstr ""
msgstr "高度なネットワークオプション"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr ""
msgstr "(注: このクライアントプロキシがトンネルを共有するよう設定されると、これらのオプションは共有されるプロキシクライアント全てに有効です!)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:252
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268
msgid "Tunnel Options"
msgstr ""
msgstr "トンネルオプション"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270
msgid "Length"
msgstr ""
msgstr "長さ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277
msgid "0 hop tunnel (no anonymity)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
msgid "1 hop tunnel (low anonymity)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:285
msgid "2 hop tunnel (medium anonymity)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289
msgid "3 hop tunnel (high anonymity)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:281
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297
msgid "hop tunnel (very poor performance)"
msgstr ""
msgstr "トンネルをホップ(非常に乏しいパフォーマンス)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302
msgid "Variance"
msgstr ""
msgstr "分散"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr ""
msgstr "0 ホップ分散 (非ランダム化、一貫したパフォーマンス)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:313
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr ""
msgstr "+ 0-1 ホップ分散 (中間的な追加的ランダム化、パフォーマンス減退)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:317
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:305
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:309
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:325
msgid "+/- 0-2 hop variance (not recommended)"
msgstr ""
msgstr "+ 0-2 ホップ分散 (高い追加的ランダム化、パフォーマンス減退)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr "+/- 0-1 ホップ分散 (標準的ランダム化、標準的パフォーマンス)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:325
msgid "+/- 0-2 hop variance (not recommended)"
msgstr "+/- 0-2 ホップ分散 (非推奨)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336
msgid "hop variance"
msgstr ""
msgstr "ホップ分散"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
msgid "Count"
msgstr ""
msgstr "回数"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345
msgid "Backup Count"
msgstr ""
msgstr "バックアップ回数"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:336
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:351
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:352
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372
msgid "backup tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
msgid "Profile"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:385
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386
msgid "interactive connection"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:389
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
msgid "bulk connection (downloads/websites/BT)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391
msgid "Delay Connect"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:395
msgid "for request/response connections"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:394
msgid "Router I2CP Address"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413
msgid "Host"
msgstr "ホスト"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:273
@@ -429,107 +438,107 @@ msgstr "ホスト"
msgid "Port"
msgstr "ポート"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502
msgid "Reduce tunnel quantity when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:428
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:488
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:435
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:465
#: ../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:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
msgid "Enable"
msgstr "有効"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508
msgid "Reduced tunnel count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:414
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:512
msgid "Idle minutes"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
msgid "Close tunnels when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:439
msgid "New Keys on Reopen"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430
msgid "Disable"
msgstr "無効"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:453
msgid "Delay tunnel open until required"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:448
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
msgid "Persistent private key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:469
msgid "File"
msgstr "ファイル"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Local destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
msgid "Local Base 32"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491
msgid "Local Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492
#: ../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 "ユーザー名"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
#: ../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 "パスワード"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501
msgid "Outproxy Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:503
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
msgid "Jump URL List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:509
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:548
msgid "Custom options"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:513
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:552
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:702
msgid "Cancel"
msgstr "キャンセル"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:532
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:556
msgid "Delete"
msgstr "削除"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:534
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:558
msgid "Save"
msgstr "保存"
@@ -548,7 +557,7 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:179
msgid "Use SSL?"
msgstr ""
msgstr "SSLを使用しますか"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:222
msgid "Website name"
@@ -780,7 +789,7 @@ msgid "New server tunnel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:423
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:432
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295
@@ -790,7 +799,7 @@ msgid "Standard"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:434
msgid "Create"
msgstr ""
@@ -815,11 +824,15 @@ msgstr ""
msgid "Destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395
msgid "internal plugin"
msgstr "内部プラグイン"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414
msgid "none"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:430
msgid "New client tunnel"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -6,9 +6,21 @@ Retrieved from the file
minus the following files and directores:
build.xml
deployer-howto.html
images/*
lib/catalina*
LICENSE (see ../../../licenses/LICENSE-Apache2.0.txt, it's also inside every jar)
RELEASE-NOTES
build.xml
deployer-howto.html
images/*
lib/catalina*
lib/jsp-api.jar (see below)
lib/servlet-api.jar (see below)
LICENSE (see ../../../licenses/LICENSE-Apache2.0.txt, it's also inside every jar)
RELEASE-NOTES
We could use the following API jars from Apache Tomcat 7.x, supporting Servlet 3.0 and JSP 2.2,
that are required for Jetty 8, but we just bundle the ones from Jetty 8 instead:
lib/jsp-api.jar
lib/servlet-api.jar
For more info:
http://tomcat.apache.org/whichversion.html

View File

@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="all" name="jetty">
<property name="jetty.ver" value="7.6.14.v20131031" />
<property name="jetty.ver" value="8.1.14.v20131031" />
<property name="jetty.base" value="jetty-distribution-${jetty.ver}" />
<property name="jetty.sha1" value="f83894b5641f920ed8ac31501b473528e52a23fd" />
<property name="jetty.sha1" value="a6690261a822157c82fcc6327d05ac8c7dfed0a3" />
<property name="jetty.filename" value="${jetty.base}.zip" />
<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="javac.version" value="1.6" />
<property name="tomcat.lib" value="apache-tomcat-deployer/lib" />
<target name="all" depends="build" />
@@ -104,9 +105,10 @@
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
javax.servlet.jsp-2.2.0.v201112011158.jar: Required API
servlet-api-3.0.jar: Required API
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" />
@@ -133,6 +135,10 @@
<attribute name="Note" value="Intentionally empty" />
</manifest>
</jar>
<jar destfile="jettylib/javax.servlet.jar" duplicate="preserve" filesetmanifest="mergewithoutmain" >
<zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/servlet-api-3.0.jar" />
<zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar" />
</jar>
<!--
<delete file="jetty.tar" />
<delete dir="${jetty.base}" />
@@ -152,10 +158,14 @@
was set individually in wrapper.config, we rename and combine the jars as follows:
jasper.jar : jasper-runtime.jar
jasper-el.jar + el-api.jar : commons-el.jar
servlet-api.jar + jsp-api.jar : javax.servlet.jar
tomcat-juli.jar : Add to commons-logging.jar
empty jar : jasper-compiler.jar
Also, take NOTICE and LICENSE out of each one, we bundle those separately.
Not as of Jetty 8 (using from Jetty):
servlet-api.jar + jsp-api.jar : javax.servlet.jar
If we go to Tomcat 7:
tomcat-api.jar + tomcat-util.jar: Add to javax.servlet.jar (as of Tomcat 7 / Jetty 8)
-->
<target name="copyTomcatLib" >
<jar destfile="jettylib/jasper-runtime.jar" filesetmanifest="merge" >
@@ -165,10 +175,14 @@
<zipfileset excludes="META-INF/LICENSE META-INF/NOTICE" src="${tomcat.lib}/jasper-el.jar" />
<zipfileset excludes="META-INF/**/*" src="${tomcat.lib}/el-api.jar" />
</jar>
<!--
<jar destfile="jettylib/javax.servlet.jar" duplicate="preserve" filesetmanifest="mergewithoutmain" >
<zipfileset excludes="META-INF/LICENSE META-INF/NOTICE" src="${tomcat.lib}/servlet-api.jar" />
<zipfileset excludes="META-INF/**/*" src="${tomcat.lib}/jsp-api.jar" />
<zipfileset excludes="META-INF/LICENSE META-INF/NOTICE" src="${tomcat.lib}/tomcat-api.jar" />
<zipfileset excludes="META-INF/LICENSE META-INF/NOTICE" src="${tomcat.lib}/tomcat-util.jar" />
</jar>
-->
<!-- Ant bug, don't set update and filesetmanifest or the update doesn't happen,
Their bug tracker claims fixed in 1.8.0 but broken for me in 1.8.1
-->
@@ -214,7 +228,7 @@
<mkdir dir="./build/obj" />
<javac
srcdir="./java/src"
debug="true" deprecation="on" source="1.5" target="1.5"
debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
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-http.jar:./jettylib/jetty-io.jar:./jettylib/jetty-security.jar:./jettylib/jetty-util.jar:./jettylib/jetty-xml.jar" >

View File

@@ -405,7 +405,7 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
}
catch (IOException e)
{
Log.warn(e);
Log.getLogger((String)null).warn(e);
}
}
@@ -449,7 +449,7 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
{
_fileOut = new RolloverFileOutputStream(_filename,_append,_retainDays,TimeZone.getTimeZone(_logTimeZone),_filenameDateFormat,null);
_closeOut = true;
Log.info("Opened "+getDatedFilename());
Log.getLogger((String)null).info("Opened "+getDatedFilename());
}
else
_fileOut = System.err;
@@ -475,9 +475,9 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
protected void doStop() throws Exception
{
super.doStop();
try {if (_writer != null) _writer.flush();} catch (IOException e) {Log.ignore(e);}
try {if (_writer != null) _writer.flush();} catch (IOException e) {Log.getLogger((String)null).ignore(e);}
if (_out != null && _closeOut)
try {_out.close();} catch (IOException e) {Log.ignore(e);}
try {_out.close();} catch (IOException e) {Log.getLogger((String)null).ignore(e);}
_out = null;
_fileOut = null;

View File

@@ -76,6 +76,9 @@ public interface I2PSocket extends Closeable {
public boolean isClosed();
/**
* Deprecated, unimplemented, does nothing
*/
public void setSocketErrorListener(SocketErrorListener lsnr);
/**
@@ -93,6 +96,8 @@ public interface I2PSocket extends Closeable {
public int getLocalPort();
/**
* Deprecated, unimplemented, does nothing. Original description:
*
* Allow notification of underlying errors communicating across I2P without
* waiting for any sort of cleanup process. For example, if some data could
* not be sent, this listener is notified immediately, and while the input/output

View File

@@ -126,12 +126,31 @@ public interface I2PSocketManager {
* Ping the specified peer, returning true if they replied to the ping within
* the timeout specified, false otherwise. This call blocks.
*
* Uses the ports from the default options.
*
* @param peer Destination to ping
* @param timeoutMs timeout in ms
* @param timeoutMs timeout in ms, greater than zero
* @throws IllegalArgumentException
* @return success or failure
*/
public boolean ping(Destination peer, long timeoutMs);
/**
* Ping the specified peer, returning true if they replied to the ping within
* the timeout specified, false otherwise. This call blocks.
*
* Uses the ports specified.
*
* @param peer Destination to ping
* @param localPort 0 - 65535
* @param remotePort 0 - 65535
* @param timeoutMs timeout in ms, greater than zero
* @return success or failure
* @throws IllegalArgumentException
* @since 0.9.12
*/
public boolean ping(Destination peer, int localPort, int remotePort, long timeoutMs);
public String getName();
public void setName(String name);

View File

@@ -14,6 +14,7 @@ import net.i2p.client.I2PClient;
import net.i2p.client.I2PClientFactory;
import net.i2p.client.I2PSession;
import net.i2p.client.I2PSessionException;
import net.i2p.crypto.SigType;
import net.i2p.util.Log;
/**
@@ -26,7 +27,7 @@ public class I2PSocketManagerFactory {
public static final String PROP_MANAGER = "i2p.streaming.manager";
public static final String DEFAULT_MANAGER = "net.i2p.client.streaming.impl.I2PSocketManagerFull";
/**
* Create a socket manager using a brand new destination connected to the
* I2CP router on the local machine on the default port (7654).
@@ -79,9 +80,9 @@ public class I2PSocketManagerFactory {
*/
public static I2PSocketManager createManager(String i2cpHost, int i2cpPort, Properties opts) {
I2PClient client = I2PClientFactory.createClient();
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(512);
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(1024);
try {
client.createDestination(keyStream);
client.createDestination(keyStream, getSigType(opts));
ByteArrayInputStream in = new ByteArrayInputStream(keyStream.toByteArray());
return createManager(in, i2cpHost, i2cpPort, opts);
} catch (IOException ioe) {
@@ -168,9 +169,9 @@ public class I2PSocketManagerFactory {
int i2cpPort, Properties opts) throws I2PSessionException {
if (myPrivateKeyStream == null) {
I2PClient client = I2PClientFactory.createClient();
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(512);
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(1024);
try {
client.createDestination(keyStream);
client.createDestination(keyStream, getSigType(opts));
} catch (Exception e) {
throw new I2PSessionException("Error creating keys", e);
}
@@ -224,7 +225,10 @@ public class I2PSocketManagerFactory {
private static I2PSocketManager createManager(I2PSession session, Properties opts, String name) {
I2PAppContext context = I2PAppContext.getGlobalContext();
String classname = opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER);
// As of 0.9.12, ignore this setting, as jwebcache and i2phex set it to the old value.
// There is no other valid manager.
//String classname = opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER);
String classname = DEFAULT_MANAGER;
try {
Class<?> cls = Class.forName(classname);
if (!I2PSocketManager.class.isAssignableFrom(cls))
@@ -257,6 +261,23 @@ public class I2PSocketManagerFactory {
return i2cpPort;
}
/**
* @param opts may be null
* @since 0.9.12
*/
private static SigType getSigType(Properties opts) {
if (opts != null) {
String st = opts.getProperty(I2PClient.PROP_SIGTYPE);
if (st != null) {
SigType rv = SigType.parseSigType(st);
if (rv != null)
return rv;
getLog().error("Unsupported sig type " + st);
}
}
return I2PClient.DEFAULT_SIGTYPE;
}
/** @since 0.9.7 */
private static Log getLog() {
return I2PAppContext.getGlobalContext().logManager().getLog(I2PSocketManagerFactory.class);

View File

@@ -0,0 +1,13 @@
package net.i2p.client.streaming;
/**
* Moved to net.i2p.client.streaming.impl in 0.9.10.
* Restored as a dummy class in 0.9.12, as i2phex imports it and
* calls I2PSocketManagerFull.class.getName() to pass to I2PSocketManagerFactory.
* I2PSocketManagerFactory ignores the class setting as of 0.9.12.
* This does not implement I2PSocketManager. Do not use.
*
* @since 0.9.12
* @deprecated
*/
public class I2PSocketManagerFull {}

View File

@@ -46,13 +46,16 @@
<targetfilelist dir="." files="build/obj/net/i2p/router/web/UpdateHandler.class" />
</dependset>
</target>
<property name="javac.compilerargs" value="" />
<property name="javac.version" value="1.6" />
<target name="compile" depends="prepare, depend, dependVersion">
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<javac
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
includeAntRuntime="false"
destdir="./build/obj">
<compilerarg line="${javac.compilerargs}" />
@@ -342,7 +345,7 @@
<arg value="../jsp/" />
</java>
<javac debug="true" deprecation="on" source="1.5" target="1.5"
<javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
encoding="UTF-8"
includeAntRuntime="false"
destdir="../jsp/WEB-INF/classes/"

View File

@@ -17,12 +17,16 @@ import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import net.i2p.I2PAppContext;
import net.i2p.app.ClientAppManager;
import net.i2p.app.ClientAppState;
import static net.i2p.app.ClientAppState.*;
import net.i2p.crypto.SU3File;
import net.i2p.crypto.TrustedUpdate;
import net.i2p.data.DataHelper;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.RouterVersion;
import net.i2p.router.app.RouterApp;
import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.router.web.ConfigUpdateHandler;
import net.i2p.router.web.Messages;
@@ -50,7 +54,7 @@ import net.i2p.util.VersionComparator;
*
* @since 0.9.4
*/
public class ConsoleUpdateManager implements UpdateManager {
public class ConsoleUpdateManager implements UpdateManager, RouterApp {
private final RouterContext _context;
private final Log _log;
@@ -68,6 +72,8 @@ public class ConsoleUpdateManager implements UpdateManager {
private final Map<UpdateItem, Version> _installed;
private final boolean _allowTorrent;
private static final DecimalFormat _pct = new DecimalFormat("0.0%");
private final ClientAppManager _cmgr;
private volatile ClientAppState _state = UNINITIALIZED;
private volatile String _status;
@@ -77,8 +83,12 @@ public class ConsoleUpdateManager implements UpdateManager {
private static final long TASK_CLEANER_TIME = 15*60*1000;
private static final String PROP_UNSIGNED_AVAILABLE = "router.updateUnsignedAvailable";
public ConsoleUpdateManager(RouterContext ctx) {
/**
* @param args ignored
*/
public ConsoleUpdateManager(RouterContext ctx, ClientAppManager listener, String[] args) {
_context = ctx;
_cmgr = listener;
_log = ctx.logManager().getLog(ConsoleUpdateManager.class);
_registeredUpdaters = new ConcurrentHashSet<RegisteredUpdater>();
_registeredCheckers = new ConcurrentHashSet<RegisteredChecker>();
@@ -98,13 +108,34 @@ public class ConsoleUpdateManager implements UpdateManager {
//_allowTorrent = RouterVersion.BUILD != 0 || _context.random().nextInt(100) < 60;
// Finally, for 0.9.12, 18 months later...
_allowTorrent = true;
_state = INITIALIZED;
}
/**
* @return null if not found
*/
public static ConsoleUpdateManager getInstance() {
return (ConsoleUpdateManager) I2PAppContext.getGlobalContext().updateManager();
ClientAppManager cmgr = I2PAppContext.getGlobalContext().clientAppManager();
if (cmgr == null)
return null;
return (ConsoleUpdateManager) cmgr.getRegisteredApp(APP_NAME);
}
/////// ClientApp methods
/**
* UpdateManager interface
*/
public void start() {
startup();
}
/**
* ClientApp interface
* @since 0.9.12
*/
public synchronized void startup() {
changeState(STARTING);
notifyInstalled(NEWS, "", Long.toString(NewsHelper.lastUpdated(_context)));
notifyInstalled(ROUTER_SIGNED, "", RouterVersion.VERSION);
notifyInstalled(ROUTER_SIGNED_SU3, "", RouterVersion.VERSION);
@@ -118,7 +149,6 @@ public class ConsoleUpdateManager implements UpdateManager {
notifyInstalled(PLUGIN, plugin, ver);
}
_context.registerUpdateManager(this);
DummyHandler dh = new DummyHandler(_context, this);
register((Checker)dh, TYPE_DUMMY, METHOD_DUMMY, 0);
register((Updater)dh, TYPE_DUMMY, METHOD_DUMMY, 0);
@@ -162,10 +192,27 @@ public class ConsoleUpdateManager implements UpdateManager {
//register((Updater)puh, PLUGIN, FILE, 0);
new NewsTimerTask(_context, this);
_context.simpleScheduler().addPeriodicEvent(new TaskCleaner(), TASK_CLEANER_TIME);
changeState(RUNNING);
if (_cmgr != null)
_cmgr.register(this);
}
/**
* UpdateManager interface
*/
public void shutdown() {
_context.unregisterUpdateManager(this);
shutdown(null);
}
/**
* ClientApp interface
* @param args ignored
* @since 0.9.12
*/
public synchronized void shutdown(String[] args) {
if (_state == STOPPED)
return;
changeState(STOPPING);
stopChecks();
stopUpdates();
_registeredUpdaters.clear();
@@ -173,6 +220,30 @@ public class ConsoleUpdateManager implements UpdateManager {
_available.clear();
_downloaded.clear();
_installed.clear();
changeState(STOPPED);
}
/** @since 0.9.12 */
public ClientAppState getState() {
return _state;
}
/** @since 0.9.12 */
public String getName() {
return APP_NAME;
}
/** @since 0.9.12 */
public String getDisplayName() {
return "Console Update Manager";
}
/////// end ClientApp methods
private synchronized void changeState(ClientAppState state) {
_state = state;
if (_cmgr != null)
_cmgr.notify(this, state, null, null);
}
/**

View File

@@ -53,19 +53,20 @@ public class CSSHelper extends HelperBase {
/**
* change default language for the router AND save it
* @param lang xx OR xx_XX
* @param lang xx OR xx_XX OR xxx OR xxx_XX
*/
public void setLang(String lang) {
// Protected with nonce in css.jsi
if (lang != null) {
if (lang != null && lang.length() > 0) {
Map m = new HashMap(2);
if (lang.length() == 2) {
int under = lang.indexOf('_');
if (under < 0) {
m.put(Messages.PROP_LANG, lang.toLowerCase(Locale.US));
m.put(Messages.PROP_COUNTRY, "");
_context.router().saveConfig(m, null);
} else if (lang.length() == 5) {
m.put(Messages.PROP_LANG, lang.substring(0, 2).toLowerCase(Locale.US));
m.put(Messages.PROP_COUNTRY, lang.substring(3, 5).toUpperCase(Locale.US));
} else if (under > 0 && lang.length() > under + 1) {
m.put(Messages.PROP_LANG, lang.substring(0, under).toLowerCase(Locale.US));
m.put(Messages.PROP_COUNTRY, lang.substring(under + 1).toUpperCase(Locale.US));
_context.router().saveConfig(m, null);
}
}

View File

@@ -183,7 +183,7 @@ public class ConfigClientsHandler extends FormHandler {
for (int cur = 0; cur < clients.size(); cur++) {
ClientAppConfig ca = clients.get(cur);
Object val = _settings.get(cur + ".enabled");
if (! ("webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName)))
if (! (RouterConsoleRunner.class.getName().equals(ca.className)))
ca.disabled = val == null;
// edit of an existing entry
String desc = getJettyString("desc" + cur);
@@ -370,7 +370,7 @@ public class ConfigClientsHandler extends FormHandler {
* @param app null for a new install
*/
private void installPlugin(String app, String url) {
ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
if (mgr == null) {
addFormError("Update manager not registered, cannot install");
return;
@@ -397,7 +397,7 @@ public class ConfigClientsHandler extends FormHandler {
}
private void checkPlugin(String app) {
ConsoleUpdateManager mgr = (ConsoleUpdateManager) _context.updateManager();
ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
if (mgr == null) {
addFormError("Update manager not registered, cannot check");
return;

View File

@@ -90,8 +90,11 @@ public class ConfigClientsHelper extends HelperBase {
/** clients */
public String getForm1() {
StringBuilder buf = new StringBuilder(1024);
buf.append("<table>\n");
buf.append("<tr><th align=\"right\">" + _("Client") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Control") + "</th><th align=\"left\">" + _("Class and arguments") + "</th></tr>\n");
buf.append("<table>\n" +
"<tr><th align=\"right\">").append(_("Client")).append("</th><th>")
.append(_("Run at Startup?")).append("</th><th>")
.append(_("Control")).append("</th><th align=\"left\">")
.append(_("Class and arguments")).append("</th></tr>\n");
List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
for (int cur = 0; cur < clients.size(); cur++) {
@@ -110,10 +113,10 @@ public class ConfigClientsHelper extends HelperBase {
renderForm(buf, ""+cur, ca.clientName,
// urlify, enabled
false, !ca.disabled,
// read only
// read only, preventDisable
// dangerous, but allow editing the console args too
//"webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName),
false,
false, RouterConsoleRunner.class.getName().equals(ca.className),
// description, edit
ca.className + ((ca.args != null) ? " " + ca.args : ""), (""+cur).equals(_edit),
// show edit button, show update button
@@ -126,7 +129,7 @@ public class ConfigClientsHelper extends HelperBase {
}
if ("new".equals(_edit))
renderForm(buf, "" + clients.size(), "", false, false, false, "", true, false, false, false, false, false);
renderForm(buf, "" + clients.size(), "", false, false, false, false, "", true, false, false, false, false, false);
buf.append("</table>\n");
return buf.toString();
}
@@ -134,8 +137,11 @@ public class ConfigClientsHelper extends HelperBase {
/** webapps */
public String getForm2() {
StringBuilder buf = new StringBuilder(1024);
buf.append("<table>\n");
buf.append("<tr><th align=\"right\">" + _("WebApp") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Control") + "</th><th align=\"left\">" + _("Description") + "</th></tr>\n");
buf.append("<table>\n" +
"<tr><th align=\"right\">").append(_("WebApp")).append("</th><th>")
.append(_("Run at Startup?")).append("</th><th>")
.append(_("Control")).append("</th><th align=\"left\">")
.append(_("Description")).append("</th></tr>\n");
Properties props = RouterConsoleRunner.webAppProperties(_context);
Set<String> keys = new TreeSet(props.keySet());
for (String name : keys) {
@@ -144,7 +150,8 @@ public class ConfigClientsHelper extends HelperBase {
String val = props.getProperty(name);
boolean isRunning = WebAppStarter.isWebAppRunning(app);
renderForm(buf, app, app, !"addressbook".equals(app),
"true".equals(val), RouterConsoleRunner.ROUTERCONSOLE.equals(app), app + ".war",
"true".equals(val), RouterConsoleRunner.ROUTERCONSOLE.equals(app),
RouterConsoleRunner.ROUTERCONSOLE.equals(app), app + ".war",
false, false, false, isRunning, false, !isRunning);
}
}
@@ -159,14 +166,19 @@ public class ConfigClientsHelper extends HelperBase {
/** plugins */
public String getForm3() {
StringBuilder buf = new StringBuilder(1024);
buf.append("<table>\n");
buf.append("<tr><th align=\"right\">" + _("Plugin") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Control") + "</th><th align=\"left\">" + _("Description") + "</th></tr>\n");
buf.append("<table>\n" +
"<tr><th align=\"right\">").append(_("Plugin")).append("</th><th>")
.append(_("Run at Startup?")).append("</th><th>")
.append(_("Control")).append("</th><th align=\"left\">")
.append(_("Description")).append("</th></tr>\n");
Properties props = PluginStarter.pluginProperties();
Set<String> keys = new TreeSet(props.keySet());
for (String name : keys) {
if (name.startsWith(PluginStarter.PREFIX) && name.endsWith(PluginStarter.ENABLED)) {
String app = name.substring(PluginStarter.PREFIX.length(), name.lastIndexOf(PluginStarter.ENABLED));
String val = props.getProperty(name);
if (val.equals(PluginStarter.DELETED))
continue;
Properties appProps = PluginStarter.pluginProperties(_context, app);
if (appProps.isEmpty())
continue;
@@ -230,7 +242,7 @@ public class ConfigClientsHelper extends HelperBase {
enableStop &= PluginStarter.isPluginRunning(app, _context);
boolean enableStart = !PluginStarter.isPluginRunning(app, _context);
renderForm(buf, app, app, false,
"true".equals(val), false, desc.toString(), false, false,
"true".equals(val), false, false, desc.toString(), false, false,
updateURL != null, enableStop, true, enableStart);
}
}
@@ -244,7 +256,7 @@ public class ConfigClientsHelper extends HelperBase {
* ro trumps edit and showEditButton
*/
private void renderForm(StringBuilder buf, String index, String name, boolean urlify,
boolean enabled, boolean ro, String desc, boolean edit,
boolean enabled, boolean ro, boolean preventDisable, String desc, boolean edit,
boolean showEditButton, boolean showUpdateButton, boolean showStopButton,
boolean showDeleteButton, boolean showStartButton) {
String escapeddesc = DataHelper.escapeHTML(desc);
@@ -266,22 +278,27 @@ public class ConfigClientsHelper extends HelperBase {
buf.append("</td><td align=\"center\" width=\"10%\"><input type=\"checkbox\" class=\"optbox\" name=\"").append(index).append(".enabled\" value=\"true\" ");
if (enabled) {
buf.append("checked=\"checked\" ");
if (ro)
if (ro || preventDisable)
buf.append("disabled=\"disabled\" ");
}
buf.append("></td><td align=\"center\" width=\"15%\">");
// The icons were way too much, so there's an X in each button class,
// remove if you wnat to put them back
if (showStartButton && (!ro) && !edit) {
buf.append("<button type=\"submit\" class=\"Xaccept\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xaccept\" name=\"action\" value=\"Start ").append(index).append("\" >")
.append(_("Start")).append("<span class=hide> ").append(index).append("</span></button>");
}
if (showStopButton && (!edit))
buf.append("<button type=\"submit\" class=\"Xstop\" name=\"action\" value=\"Stop ").append(index).append("\" >" + _("Stop") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xstop\" name=\"action\" value=\"Stop ").append(index).append("\" >")
.append(_("Stop")).append("<span class=hide> ").append(index).append("</span></button>");
if (showEditButton && (!edit) && !ro)
buf.append("<button type=\"submit\" class=\"Xadd\" name=\"edit\" value=\"Edit ").append(index).append("\" >" + _("Edit") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xadd\" name=\"edit\" value=\"Edit ").append(index).append("\" >")
.append(_("Edit")).append("<span class=hide> ").append(index).append("</span></button>");
if (showUpdateButton && (!edit) && !ro) {
buf.append("<button type=\"submit\" class=\"Xcheck\" name=\"action\" value=\"Check ").append(index).append("\" >" + _("Check for updates") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xdownload\" name=\"action\" value=\"Update ").append(index).append("\" >" + _("Update") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xcheck\" name=\"action\" value=\"Check ").append(index).append("\" >")
.append(_("Check for updates")).append("<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"Xdownload\" name=\"action\" value=\"Update ").append(index).append("\" >")
.append(_("Update")).append("<span class=hide> ").append(index).append("</span></button>");
}
if (showDeleteButton && (!edit) && !ro) {
buf.append("<button type=\"submit\" class=\"Xdelete\" name=\"action\" value=\"Delete ").append(index)

View File

@@ -45,9 +45,9 @@ public class ConfigLoggingHelper extends HelperBase {
buf.append(prefix).append('=').append(level).append('\n');
}
buf.append("</textarea><br>\n");
buf.append("<i>" + _("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN") + "</i><br>");
buf.append("<i>" + _("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN") + "</i><br>");
buf.append("<i>" + _("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT") + "</i>\n");
buf.append("<i>").append(_("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN")).append("</i><br>");
buf.append("<i>").append(_("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN")).append("</i><br>");
buf.append("<i>").append(_("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT")).append("</i>\n");
/****
// this is too big and ugly

View File

@@ -57,8 +57,8 @@ public class ConfigNetHandler extends FormHandler {
protected void processForm() {
if (_saveRequested || ( (_action != null) && (_("Save changes").equals(_action)) )) {
saveChanges();
} else if (_recheckReachabilityRequested) {
recheckReachability();
//} else if (_recheckReachabilityRequested) {
// recheckReachability();
} else {
// noop
}
@@ -137,10 +137,12 @@ public class ConfigNetHandler extends FormHandler {
_ipv6Mode = mode;
}
/****
private void recheckReachability() {
_context.commSystem().recheckReachability();
addFormNotice(_("Rechecking router reachability..."));
}
****/
/**
* The user made changes to the network config and wants to save them, so

View File

@@ -3,6 +3,7 @@ package net.i2p.router.web;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
import net.i2p.apps.systray.UrlLauncher;
import net.i2p.router.Router;
@@ -57,7 +58,8 @@ public class ConfigServiceHandler extends FormHandler {
private final boolean _rekey;
private final boolean _tellWrapper;
private static final int HASHCODE = -123999871;
private static final int WAIT = 30*1000;
// RPi takes a long time to write out the peer profiles
private static final int WAIT = SystemVersion.isARM() ? 4*60*1000 : 2*60*1000;
public UpdateWrapperOrRekeyTask(boolean rekey, boolean tellWrapper) {
_rekey = rekey;
@@ -68,8 +70,19 @@ public class ConfigServiceHandler extends FormHandler {
try {
if (_rekey)
ContextHelper.getContext(null).router().killKeys();
if (_tellWrapper)
WrapperManager.signalStopping(WAIT);
if (_tellWrapper) {
int wait = WAIT;
Properties props = WrapperManager.getProperties();
String tmout = props.getProperty("wrapper.jvm_exit.timeout");
if (tmout != null) {
try {
int cwait = Integer.parseInt(tmout) * 1000;
if (cwait > wait)
wait = cwait;
} catch (NumberFormatException nfe) {}
}
WrapperManager.signalStopping(wait);
}
} catch (Throwable t) {
t.printStackTrace();
}

View File

@@ -101,7 +101,7 @@ public class ConfigStatsHandler extends FormHandler {
StringBuilder stats = new StringBuilder();
for (int i = 0; i < _stats.size(); i++) {
stats.append((String)_stats.get(i));
stats.append(_stats.get(i));
if (i + 1 < _stats.size())
stats.append(',');
}

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