Compare commits

...

1493 Commits

Author SHA1 Message Date
zzz
0ddef91e16 more last-minute tweaks 2009-12-08 13:33:42 +00:00
zzz
b205af5a0d 0.7.8 2009-12-08 12:22:56 +00:00
zzz
f446a5f1fc * Misc. cleanups after review, prep for release 2009-12-08 00:41:58 +00:00
zzz
1cd54dc12e * netdb.jsp: Fix bug caused by XSS fix
* Translations: drop ru until after release
2009-12-06 21:42:28 +00:00
zzz
8ebc8bd209 merge of '07a757695fb1dc6eb2cfda52c8fc38aee4e61f53'
and 'a85053bedf64d2793ad1f55f396390baf09edcc1'
2009-12-06 21:35:02 +00:00
9d11866f86 Removed Russian .po file. A native Russian speaker is working
on a translation of the router console for the next version 
of I2P. Update the readme files to include a Russian flag.
2009-12-06 21:15:12 +00:00
23d3c33a12 Update to german console translation 2009-12-06 11:49:43 +00:00
ec8130f443 Improved readme_ru.html translation.
All strings in messages_ru.po translated roughly.
A few words in messages_ru.po edited for excessive length.
2009-12-06 03:54:21 +00:00
4b7aeb8418 update to german translation, need more work 2009-12-05 23:21:29 +00:00
18a0f01f8b corrected typo 2009-12-05 22:15:05 +00:00
df2e639692 first rough translation into german 2009-12-05 20:41:20 +00:00
zzz
708b3a662c * Build: Fix poupdate dependency
* Console: Add Russian option
2009-12-05 17:19:23 +00:00
zzz
4fee7844f8 merge of 'd34b6676e413f6e88f9e145f8ddde79a66ce6bb1'
and 'da507e67b02527a43e8cca4b5b20c2de18a3142c'
2009-12-05 17:06:34 +00:00
891416e6b9 Added Russian localization files 2009-12-05 16:47:02 +00:00
978cd2c484 * BOB: fix a critical bug causing ghosts on probes and remove unused code. 2009-12-05 13:26:40 +00:00
c88c905926 rev 2009-12-04 21:27:59 +00:00
zzz
f5c1acc749 Fix potential XSS holes 2009-12-04 00:27:05 +00:00
zzz
c4e6148b9f config cleanup, more HTML transitional fixes 2009-12-04 00:22:46 +00:00
zzz
43029de2f3 point to translated pages on www.i2p2.i2p 2009-12-04 00:22:12 +00:00
454b2c8941 An updated (yet incomplete) version of messages_fr.po 2009-11-30 20:46:23 +00:00
zzz
4c812c7bff * HTTP Proxy: Don't send proxy.i2p to the naming service,
it was making the error pages load slowly
2009-11-29 18:49:28 +00:00
zzz
f95b5324e0 profiles.jsp: Hide non-ff from ff table 2009-11-29 18:48:03 +00:00
zzz
64ee1b313b Comment out unused stuff better 2009-11-29 18:47:34 +00:00
zzz
1ca651e803 Fix an error message 2009-11-29 18:47:12 +00:00
zzz
f3a88398f2 Fix the default inbound burst 2009-11-29 18:46:48 +00:00
278b917494 net.i2p.router.transport.udp deadwood code cleanup.
documented rare NPE in InboundEstablishState.java.
2009-11-29 15:02:50 +00:00
0642fa8093 * Improvement to BOB's TCPio to hopefully lower load average. It seems
to be helping a little when stress-tested with Robert.
2009-11-28 13:53:34 +00:00
z3d
6371f66677 Midnight console theme tweaks. 2009-11-27 12:03:56 +00:00
zzz
105524d9c0 remove another 8887 reference 2009-11-24 20:22:31 +00:00
zzz
95e0492b32 * Profiles: Record successes in the DB fail rate
too, so we can calculate a percentage
    * profiles.jsp:
      - Change fail rate from count to percent
      - Hide standard profiles by default
2009-11-24 20:20:30 +00:00
zzz
234c084c2a * OrderedProperties: Vastly implify, use in i2psnark 2009-11-24 20:15:29 +00:00
zzz
94faf74aa4 * Streaming:
- When an "immediate" ack is requested, do it within
        250 ms (was 2000)
      - Request immediate acks when < 1/3 of window remains,
        or when < 3 packets remain in window,
        and every 8 packets (was when < 2 packets in window remain)
      - Change requested delay to RTT/2 (was RTO/2)
      - Log cleanup and javadoc
2009-11-24 20:12:27 +00:00
zzz
e78dd1fdc3 remove unused Logs from DataStructures 2009-11-24 20:08:58 +00:00
zzz
38045d876d fix paths so poedit source viewer works 2009-11-22 13:07:34 +00:00
zzz
8433724452 * Netdb Floodfill rework part 4 of N: Search closest-to-the-key 2009-11-21 13:50:39 +00:00
zzz
e9f9e0dabb - Adjust response time limit 2009-11-21 13:47:51 +00:00
zzz
6bdf750c19 javadoc 2009-11-21 13:45:40 +00:00
zzz
647a09b5b9 - Put closest-to-the-key in explore don't-include-list
- Use facade's peer selector for exploration rather than
        instantiating a new one
2009-11-21 13:41:48 +00:00
zzz
6144bfb437 Comment out test code 2009-11-21 13:35:52 +00:00
zzz
88dbd7710a * Routerconsole build: rename include files so they aren't
compiled and bundled separately (~15KB)
2009-11-21 13:33:57 +00:00
zzz
26a71232f0 add popups on flags 2009-11-21 13:32:32 +00:00
zzz
f58a1768b9 Nov 17 09 geoip 2009-11-21 02:14:58 +00:00
dev
125e6581e0 moved the file to the i2p.scripts branch 2009-11-20 22:30:03 +00:00
54105086ad pass the first following parameter as PARAS
add messages_{langcode}.only support to only update for a specified language
2009-11-18 16:45:42 +00:00
3674ac2922 rev 2009-11-18 15:08:16 +00:00
18c023e6f7 merge of '6c2ef00502207c28f02c90cef00b19d75f09d9a4'
and 'de35fdcdc8943537c71571c5c9d8320a24768cdf'
2009-11-18 15:05:14 +00:00
zzz
312ba2599f - Note failed floods in the profile
- Reduce max flood
2009-11-18 14:24:38 +00:00
zzz
746dc6f884 - Adjust criteria for following DSRM 2009-11-18 14:20:43 +00:00
zzz
edd4d4c114 - Floodfill rework part 3 of N: Send closest-to-the-key in DSRM replies 2009-11-18 14:18:16 +00:00
zzz
56e0c3e047 * Build: Don't update the po files by default, add new
target "poupdate" to do that.
2009-11-18 14:16:36 +00:00
1e83d1b304 small revision 2009-11-18 10:01:20 +00:00
z3d
74aa84b183 merge of '369305db0cea95e8bd0990de7462340cac75a1f9'
and 'f58179e91c798b6d06faf4fbcf2ee6bf106475de'
2009-11-17 19:59:43 +00:00
z3d
168c213288 Some string mods and tagging and so forth; "midnight" console theme futzage. 2009-11-17 19:55:51 +00:00
d268a3852c A first incomplete French version of the router console translation file messages_fr.po 2009-11-16 21:36:46 +00:00
dev
01e87438c3 merge of '18a7dd067a56c2552cf30f4a045628f91c360c80'
and 'd6b8e99c4aee82652446fe759f45f27e0da9fbc0'
2009-11-16 19:45:10 +00:00
dev
060f4e6632 disapproval of revision 'd07b92fb678f4dc87b62eaaeab002820b25583b6' 2009-11-16 19:44:54 +00:00
z3d
3df5540a97 Tweaks to client.config tunnel descriptors; more "midnight" theme adjustments. 2009-11-16 19:15:15 +00:00
z3d
30dec5b9f5 merge of '3d1905aaefa398767d0df1945eaaf6d923767405'
and 'd07b92fb678f4dc87b62eaaeab002820b25583b6'
2009-11-16 11:30:19 +00:00
43b437fc58 Initial checkin of apps/i2pbote/** 2009-11-16 07:28:14 +00:00
zzz
8e889cd292 bye TPB 2009-11-15 23:50:45 +00:00
zzz
eceac6def0 Shitlist: Fix bug from two checkins ago, all were forever 2009-11-15 23:47:01 +00:00
zzz
1e3d6776aa Take two test scripts out of the installer 2009-11-15 23:45:39 +00:00
zzz
784ca67ddf Move class to net.i2p.addressbook 2009-11-15 23:44:20 +00:00
0f6b49cc31 A new French version of eepsite_index.html 2009-11-15 12:25:03 +00:00
8cede2a2b2 term: Adresses => Transports 2009-11-15 11:00:14 +00:00
38ed04bbd8 trans 2009-11-15 06:02:07 +00:00
zzz
c393e70ca9 * HTTP Proxy:
- Add support for error page translations
      - Add support for external pages for all errors
      - Fix lack of \r in error page headers
      - HTML transitional fixes
      - Cleanups
2009-11-14 15:05:44 +00:00
zzz
1c25c0f408 * UDP PeerTestManager: Throw in some synchronization to try to fix stuck tests 2009-11-14 15:00:28 +00:00
b7ebce48ee the only tool that once successfully resume a download from an eepproxy ;-) 2009-11-13 05:41:14 +00:00
d6814a0489 merge of '177b5d58442cfa7d68c6a9adce7f40e681c6cd41'
and 'd1762684a780fa61d199e583bd9442b1e2a2af6e'
2009-11-13 05:28:51 +00:00
z3d
6f24c74f8c More "midnight" theme finessing. 2009-11-12 19:07:05 +00:00
d8389dcc46 stop duplicating, use "source bundle-messages.sh" 2009-11-12 14:07:15 +00:00
9f939553ee rev 2009-11-12 14:04:40 +00:00
z3d
529988f394 merge of '1dad9833f19c3370d3f1db58bc580c5b8c21c961'
and 'aaedb6e8d35bd3cca935c418a7fdcd2895bf2067'
2009-11-12 13:25:08 +00:00
z3d
9f46aa1e18 Fixes and tweaks for "midnight" console theme. 2009-11-12 11:04:28 +00:00
418c1b6f96 shared tunnels for _(name) 2009-11-12 03:17:33 +00:00
8056fb9502 rev 2009-11-12 03:14:31 +00:00
z3d
ab2e21147f Tweaks to "midnight" console theme. 2009-11-12 00:01:57 +00:00
zzz
6c00bb20b6 * Console: Some colon cleansing
* Shitlist: Move HTML renderer to router console,
      add cause parameter for ease of translation,
      tag all causes
2009-11-11 20:28:13 +00:00
zzz
573ac357d8 ff ranking tweaks so they arent all bad 2009-11-11 20:24:59 +00:00
5b139f9246 more translation and possiblely all has been done. 2009-11-11 15:56:57 +00:00
z3d
76d75b712e Updates to "midnight" console theme. 2009-11-11 09:03:19 +00:00
zzz
8bc2fd7e42 3rd time... 2009-11-10 21:27:01 +00:00
zzz
4533a86712 -15 2009-11-10 20:39:09 +00:00
zzz
a6239e2ce3 merge of '2232dc91d5c2e9f60934f66bc11519f49399cc5b'
and 'a831cd0f05f3dcf5d877ff68b14fef2497cde44a'
2009-11-10 20:14:16 +00:00
zzz
1f8e61f480 verify using closest-to-the-key 2009-11-10 20:11:08 +00:00
zzz
c40f845279 fix good/bad calculation 2009-11-10 19:02:59 +00:00
zzz
aa74962263 * DataHelper: Fix broken byte[] compareTo() used by XORComparator,
was not doing unsigned comparisons!
    * Floodfill rework part 2 of N:
      Store closest to the key, subject to last failed
      lookup and store stats.
    * FloodfillPeerSelector: Use standard XORComparator
      instead of messing with BigInteger
    * FloodfillVerifyStoreJob: Set correct timeout for
      requeued store job
    * KNDF: Rework getPeerTimout() to use 1 day averages,
      and lower the min, max, and multiplication factor.
    * Publish jobs: Lengthen timeout to 90s (was 30s for
      routerinfos and 60s for leasesets)
    * StoreJob: Limit max peer timeout to 15s for direct stores
2009-11-10 18:24:15 +00:00
zzz
42cbd6c12b console tweaks 2009-11-10 14:45:53 +00:00
zzz
ee51f69a5a * Addressbook, NamingService: Allow 516 byte dests
that end with AA but not AAAA, so we can permit
      non-null zero-length certs.
2009-11-10 14:44:40 +00:00
z3d
0fb6e9cf6c Minor tweaks to console_big.css in classic & midnight following feedback from "walking". 2009-11-10 14:16:54 +00:00
zzz
e02845076d * Netdb StoreJob, FloodfillVerifyStoreJob:
- Fix bug where reply selector wasn't registered for
        routerinfo stores, so we didn't get stats, and
        we kept retrying. This also prevented verification
        and profile updates for routerinfo stores.
        This bug was introduced 4 years ago by the change to
        store routerinfos directly.
      - Add dbStoreSuccessful() to profile, and have FVSJ
        call it or dbStoreFailed() as appropriate to give
        credit or blame to the floodfill we stored to.
      - Don't let FVSJ verify using the peer we stored to
2009-11-10 01:24:39 +00:00
zzz
2dc3798116 drop 2 extra lines only in the iframe 2009-11-10 01:23:14 +00:00
z3d
fa252f5e8f Retrofit "dr|z3d" to history.txt for latest updates. 2009-11-09 18:28:01 +00:00
z3d
580b9b450f Add "midnight" theme to the installer manifest; bump to -14. 2009-11-09 18:00:08 +00:00
z3d
f0730cd1c8 Introducing a new console theme, "midnight". Lightweight midnight blue theme, IE compatible. 2009-11-09 17:49:17 +00:00
zzz
b045fb3a45 * FloodOnlySearchJob:
- Fix up field hiding and duplicate overrides
      - Other javadoc and java 5 improvements
2009-11-09 17:23:22 +00:00
z3d
6c64111d7e Further tweaks to console_big.css for the classic theme. 2009-11-09 17:21:24 +00:00
zzz
37a2ccca95 * Streaming: Fix unused resend delay field in the packet header,
it is defined as seconds and we were not dividing by 1000,
      so we were truncating 1000 to one byte which equals 232.
2009-11-09 17:21:17 +00:00
zzz
b4615edfcc * UDP:
- Better handle a test reply from bob with a 0-length IP
      - Add config options for min and max random port
2009-11-09 17:16:51 +00:00
zzz
6019cf8148 * Console:
- Tag tunnel status
2009-11-09 17:15:19 +00:00
zzz
e3d945201b - Add transport table to netdb.jsp 2009-11-09 17:11:20 +00:00
zzz
05b17e5a00 * i2psnark:
- Reject torrents with too many pieces
      - Reject torrents with a single file named *.torrent
      - Increase max piece size to 2MB (was 1MB), but reduce
        max number of connections to lessen ooms
2009-11-09 17:09:53 +00:00
z3d
13b3edfb07 merge of '8c614ff109c2cc345b90363355950ab46989dab8'
and 'e635717562ad75828dfc6ca42abf1f5593d71ba0'
2009-11-09 04:07:51 +00:00
z3d
f61372b2fd Streamlined & tweaked console_big.css for our Chinese friend(s). 2009-11-09 04:07:05 +00:00
f85d8f7060 tag a link in confstathandler
update zh.po
2009-11-08 13:15:48 +00:00
zzz
a0b4b7db86 * Console:
- countries.txt: Convert to mixed case, include in update
      - netdb.jsp: Hide all routers by default, sort and tag country names
      - oldstats.jsp: Move to stats.jsp
      - profiles.jsp: Show new DBH times instead of counts
    * Profiles:
      - Track last good and bad lookup times
        and last good and bad store times,
        to prep for floodfill changes
      - Don't reset last-heard-about at router startup
    * Checklist and Android readme fixups
2009-11-07 19:32:00 +00:00
827a92ef2f bundle-messag windows hack 2009-11-05 13:35:33 +00:00
625d76b914 + --from-code=UTF-8 2009-11-05 02:12:02 +00:00
a1de894b64 zh.po regenerate/rev 2009-11-05 01:06:52 +00:00
zzz
413ab6d7e4 -12 2009-11-04 16:12:59 +00:00
zzz
a3b1c79006 merge of '0d58ec9e2b160029e92a584b0c707ffdf4f25c7e'
and 'd4e270a4df0c8134d7bac1585e30ef8ddef37f85'
2009-11-04 16:06:46 +00:00
zzz
5a7d3ba4c8 move things to installer/resources; fix initial news 2009-11-04 15:36:13 +00:00
zzz
8a1db31184 reduce max msg delay 2009-11-04 12:54:02 +00:00
5190b2db1f Fixups to Slackware scripts 2009-11-04 10:27:02 +00:00
zzz
820c573476 tags 2009-11-03 20:37:21 +00:00
zzz
ab40454bce reduce the routerinfo expiration a little 2009-11-03 17:38:11 +00:00
b65865b854 tagged "Redraw"
two translation revision
2009-11-03 15:17:14 +00:00
zzz
a5772e62c3 flags 2009-11-02 18:52:42 +00:00
zzz
9976bea03f * Profiles:
- Remove the almost-unused send and receive size RateStats;
        this also reduces the effective time for isActive()
      - Only store DB history on-demand to save space;
        fix up resulting NPEs
2009-11-02 16:50:28 +00:00
zzz
7997aeaca5 adjust the help due to random port 2009-11-02 16:46:07 +00:00
zzz
ba95084d27 bold the transport 2009-11-02 16:45:23 +00:00
zzz
e952e91b54 tagging 2009-11-02 16:45:04 +00:00
zzz
da21c0ddb7 * UDP: Pick a random port on first install or bind failure -
No more port 8887 to prevent easy state-level blocking
2009-11-02 16:43:04 +00:00
zzz
0133711c3b code cleanup 2009-11-02 16:41:01 +00:00
z3d
6eae2cd460 Console_big.css tweaks. 2009-11-01 23:54:55 +00:00
9314eebc4f trans rev 2009-11-01 03:51:07 +00:00
zzz
428cbdce2a * Console:
- More tagging
      - Show user-installed themes on configui.jsp
      - Fix reseed button spacing
    * GraphHelper cleanup
    * Susidns: add link to subscription faq
2009-10-31 18:18:36 +00:00
7594c4383b tagged one more string 2009-10-31 17:01:46 +00:00
e2f6911e9f closed an open <a> tag 2009-10-31 04:09:25 +00:00
zzz
9cdae03069 evict another test class 2009-10-30 17:52:58 +00:00
06946f026e merge of '6416a3499b7666362959e13c5996a3c925a80b60'
and 'd36896148eb8067f68c653029fe60c09564a2bd8'
2009-10-30 14:05:45 +00:00
d43dac5c04 more tagging and trans
term rev [not failing] -> [Standard]
1 string(notice) with link still left in confstats
2009-10-30 14:04:58 +00:00
zzz
b4d83b18fa tag and script fixups 2009-10-29 23:22:51 +00:00
f9424dbd6d tag and trans
convert append(""+""+"") to append().append().append()
2009-10-29 09:03:32 +00:00
zzz
e5212937af * Console:
- Remove limiter status from peers.jsp
      - Fix UPnP status header
2009-10-28 22:12:10 +00:00
zzz
aeb6635e71 * Console:
- Rewrite TrustedUpdate version comparator, use for netdb version table
        so 0.7.10 will be sorted correctly
      - Reduce netdb.jsp memory usage
      - More tagging fixups
      - configclients.jsp fixup for "Web console"
2009-10-28 18:26:50 +00:00
zzz
e94b478317 * NetDb:
- Generate new RI immediately at startup
      - Try again to not publish RI until we have been up a few minutes
2009-10-28 18:18:21 +00:00
88216de42c revise pos. and button names in readme 2009-10-28 16:12:17 +00:00
1fcf707bb2 revise v1 2009-10-28 03:41:41 +00:00
z3d
5101486fe7 Tweak to classic theme, somewhere. 2009-10-27 19:39:45 +00:00
z3d
7ae4d0e981 merge of '54ec7a68eb12d95085a669bc5320e332f98f95b9'
and 'c145f6f7910b49e65fbbd9ab94a06893d620dbba'
2009-10-27 18:30:31 +00:00
z3d
c644c128c0 merge of '41f3b25fb9d92bf586913d80bc8174fd07567236'
and 'aaac66c060e4f5e3892662cb387e4f0bc6b67ce8'
2009-10-27 16:05:00 +00:00
2603f6fe45 summarybar tagging 2009-10-27 13:35:27 +00:00
z3d
957a296ca9 Correct the misalignment of the local destinations list in dark theme. 2009-10-27 12:38:51 +00:00
z3d
e4f44fa1e9 Classic theme override for Chinese and other "big" charactersets (sidepanel). 2009-10-27 12:31:24 +00:00
2b469567bb more tag and more translate 2009-10-27 11:11:51 +00:00
zzz
a2d90eebea * Console:
- Don't save config when checking for updates on configupdate.jsp
      - Rework ConfigRestartBean and tag
      - More tag fixups
      - Add lang=xx for testing
      - Add file for additional tagged strings
2009-10-26 21:48:46 +00:00
zzz
850a8da0a9 propagate from branch 'i2p.i2p.zzz.test' (head 16046dc1b2fd2a8b10de465cf238233f5d6954af)
to branch 'i2p.i2p' (head f222777c65da9e465bbf717582b4384d31848e07)
2009-10-26 15:20:30 +00:00
zzz
ac6d711a99 * Console:
- Add parameterized tag
      - Refactor confignav.jsp to java and tag
      - Start tagging profiles.jsp
2009-10-26 14:24:25 +00:00
zzz
5aa254a178 add comments 2009-10-26 14:18:57 +00:00
ad396adf39 merge of 'a45e1691786f0464f669fdeaa493cf76601879e4'
and 'bc220af9e0a1d5d674d89c215300b311a77e6ab6'
2009-10-26 11:01:58 +00:00
05cce164f7 all tagged all java except :
- summerbar related files since drz is working on it
- string requiring word reordering
- string with link in the middle
- string which looks unusual
- string found not in router console source
update the POs
2009-10-26 10:53:53 +00:00
935b69bc71 Tagged buttons and message on conf- Net,Service,Update,Client
update Translation
2009-10-26 02:21:15 +00:00
dev
61f800999a some more updates to the code_swarm script 2009-10-25 15:52:23 +00:00
dev
9833743eb9 clean up codeswarm script 2009-10-24 16:00:37 +00:00
dev
ac65bc7302 merge of '42bb0b558f03e9a0de9116377c2e229d57da8ef3'
and 'e14fbe535deef3e6b734ad65bfb4ea32b58b85fe'
2009-10-24 15:59:24 +00:00
dev
b36f207bb2 small utility script for codeswarm 2009-10-24 15:59:15 +00:00
e87a7c7bb4 add classic\console_big.css for reference only :)
add tag several missing strings in config.jsp
update the POs.
2009-10-24 12:46:01 +00:00
7e5128bb85 ConfigServices.jsp fix, update the POs 2009-10-24 08:48:06 +00:00
0a178ec35e keep tagging tagging tagging t.. plus updated pos 2009-10-24 06:10:40 +00:00
zzz
a5cd0bdd3f - Rename cssHelper to intl for ease of tagging
- configui.jsp post-prop fixup
2009-10-23 13:55:44 +00:00
zzz
9cbf9d0422 propagate from branch 'i2p.i2p.zzz.test' (head 2baf6dba31abb4ce4b51c8eba75b9338ee7c4998)
to branch 'i2p.i2p' (head ef05271bc6288f9ea7a52c966c8a238c9f4bdfe3)
2009-10-23 13:40:11 +00:00
097a05aab9 static content tagging (not finished yet)|update zh.po 2009-10-23 13:00:38 +00:00
0e5b2598fb Update the POs 2009-10-23 06:24:27 +00:00
4f492e33e6 Tagged ConfigKeyring/ConfigAdv (<input> not touched, Keyring needs word reordering not fully tagged) 2009-10-23 05:32:47 +00:00
1828b2bd17 tagged Configupdate/Tunnels (code inside <input> not touched!) 2009-10-23 05:07:16 +00:00
zzz
0c74e640df * Console:
- Don't hide link to configui.jsp for IE any more
      - Add lang selection on configui.jsp
      - Tag strings in configui.jsp
      - Load console_big.css if lang == zh
      - Add _x() tag for static iniitializers
      - HTML transitional input tags
2009-10-22 22:25:53 +00:00
zzz
ffd2721627 javadoc 2009-10-22 22:22:38 +00:00
zzz
f6ce4cb29f * Update: Better error message when .sud file not found or truncated
http://forum.i2p/viewtopic.php?t=3979
      The bug with the file going to the wrong place was fixed a couple months ago.
2009-10-22 22:21:55 +00:00
zzz
4863ef3360 * Certificate: Fix the (apparently unused) readBytes(byte[], int) method
for a null certificate - http://zzz.i2p/topics/388 - thanks HungryHobo
2009-10-22 22:20:50 +00:00
z3d
9f7807ee10 Classic theme: div.joblog h3 tweak to avoid breakage in logs and jobs pages. 2009-10-22 15:51:33 +00:00
z3d
b2285b0beb merge of '4cf77c9e1533ff7c4920a9d18ace7575a99d0bbc'
and '4e2465fc8dfc40cf276310eb917c3cef184db5cb'
2009-10-22 11:47:26 +00:00
z3d
8e4f4f82a8 UI layout cleanups and finessing. 2009-10-22 11:33:02 +00:00
db2158d4c1 translation revision 2009-10-22 07:42:47 +00:00
z3d
1c461bbeda Catch an errant <hr> in jobs.jsp; "backport" vertical sidebar space savings to classic theme. 2009-10-22 01:29:56 +00:00
z3d
0757f4f309 merge of '14fd58d7e574b7ae755514ce48508d9080b269d8'
and 'b09bd2e70d37e27a7f6e51afa4f1ae2d2298d30c'
2009-10-22 00:49:48 +00:00
z3d
a2f287cdfe Tidyups & more vertical spatial effiencies in the sidebar. 2009-10-22 00:23:17 +00:00
1ef448d518 chinese translation for the zh.po 2009-10-21 17:10:27 +00:00
z3d
f44b1a35bc Sidepanel space efficiencies; "paperclips" for index.jsp links; fix news.xml link. 2009-10-21 16:34:43 +00:00
zzz
26f02a4771 -4 2009-10-20 16:35:13 +00:00
zzz
dc3c730937 propagate from branch 'i2p.i2p.zzz.test' (head efc35e19029b7d92265f25eb024114737b6545e1)
to branch 'i2p.i2p' (head bbf149917e39bdd2f53246c238d440369498ae09)
2009-10-20 16:01:13 +00:00
zzz
77d45e7a3a stub for windows gettext script 2009-10-20 16:00:57 +00:00
zzz
45a59f009b add a common method for title formatting and translation 2009-10-20 12:12:26 +00:00
zzz
dc6d6ead69 fix bundle caching 2009-10-20 11:27:40 +00:00
zzz
27693826a2 summary bar post-refactor fixups 2009-10-19 21:40:14 +00:00
zzz
8a647b42d5 javadoc update 2009-10-19 21:38:37 +00:00
zzz
eba9f3c03b drop msgs expiring too far in the future 2009-10-19 21:37:59 +00:00
zzz
eacf46b367 remove some remnants of the pre-0.6.1.30 tunnel build method 2009-10-19 18:45:39 +00:00
zzz
83cacaad05 * summarynoframe.jsp:
- Refactor to SummaryBarRenderer (saves 100KB)
      - Add translate tags
      - Use context RNG for nonces
      - Transitional HTML style for input tags
2009-10-19 13:49:47 +00:00
zzz
cf10451d14 po script update, dont include java files in war 2009-10-19 13:37:13 +00:00
z3d
44069645df New formatting for news.xml; elliptical UI enhancements. 2009-10-19 12:34:19 +00:00
zzz
4497463778 * Router Console translation infrastructure:
- Persistent lang setting with routerconsole.lang=xx
      - Loading any page with ?lang=xx changes the persistent setting
      - Add a custom Jetty handler to load foo_xx.jsp if it
        exists for language xx. This is for jsp files with lots
        of text in them. Otherwise use inline translate methods.
        Not for included jsps.
      - Add a script to create and update messages_xx.po translation
        files, and create ResourceBundles from them
      - Add class to translate strings from cached ResourceBundles
      - Add translate wrappers to HelperBase, FormHandler, and *Renderer,
        so calls can be made from both jsp and java files
      - Add two example translations on configupdate.jsp - one in
        the jsp itself and one in the helper.
      - This is for strings in routerconsole only. Will be expanded
        to other webapps and the router later.
2009-10-18 14:06:07 +00:00
zzz
10b84418c3 move TunnelPoolManager renderStatusHTML to routerconsole 2009-10-17 23:49:59 +00:00
z3d
fadda4ceec More UI whitespace cleanups and other miscellaneous UI goodness. 2009-10-17 23:34:38 +00:00
zzz
011a32f741 move NetDb renderStatusHTML() to routerconsole 2009-10-17 23:16:53 +00:00
z3d
10bb3c100e Add some link bullet point graphics. 2009-10-17 07:08:36 +00:00
z3d
2738d5851d More UI whitespace removals and optimizations. 2009-10-17 07:04:40 +00:00
zzz
219095404a dont dump the whole JVM if we cant open the log file 2009-10-17 02:22:35 +00:00
zzz
001c361338 MessageHistory cleanups 2009-10-17 02:21:38 +00:00
zzz
e21a172e95 javadoc fix 2009-10-17 02:21:08 +00:00
z3d
4651b7007b Bump to -2. 2009-10-16 20:29:29 +00:00
z3d
5b4be5ba1b merge of '74266b0afe4ef1abef923c8389fb47263b9a39e1'
and '9a62d1aa11b74d835ec795c0a303bf5c2ebc2793'
2009-10-16 20:16:29 +00:00
z3d
9c2c90c0b1 Whitespace removals. 2009-10-16 20:01:18 +00:00
zzz
bdd0c3f961 -1 2009-10-16 15:08:27 +00:00
zzz
b7013361c2 propagate from branch 'i2p.i2p.zzz.test' (head 584fab1afc347099ea2fcbdcafa4a3dc4214d7dc)
to branch 'i2p.i2p' (head eb7f635432246f567a88babf08323105f364c80e)
2009-10-16 14:56:19 +00:00
zzz
f73b3e522b * NetDb: Rework part 1 of N:
- Flood only to those closest to the key
      - Java 5 fixups
2009-10-16 13:50:06 +00:00
zzz
fa6d17a1b8 * ProfileOrganizerRenderer:
- Move to routerconsole
      - Write directly to Writer for speed
2009-10-15 22:42:22 +00:00
z3d
c3e646ca22 Bump to -1, belatedly; more aesthetic nudges. 2009-10-14 17:25:29 +00:00
zzz
fdc9e11fb4 add TPB to i2psnark 2009-10-14 16:52:46 +00:00
zzz
a1ec838282 * oldconsole.jsp: Remove almost all of it, tweaks for tino
* Router: add router.hideFloodfillParticipant option for testing
2009-10-14 16:20:00 +00:00
zzz
7da46517ae slow down the volunteers again 2009-10-14 13:51:48 +00:00
zzz
d8e2939307 post-release cleanup 2009-10-13 14:13:16 +00:00
zzz
8cad72c654 two more test classes out of the lib 2009-10-13 14:12:00 +00:00
z3d
2cfc2bb60d merge of '11e1fae0346ea92d16925d6766a3d161ea7285c7'
and 'ca71a7d5f75cc879cfd2ba742bcc1d9baa6f9099'
2009-10-13 00:09:04 +00:00
z3d
1811e3b9cd Whitespace rationalization; theme enhancements; draft itoopie graphic for proxy errors. 2009-10-12 23:55:21 +00:00
zzz
960cd18d0a 0.7.7 2009-10-12 01:27:29 +00:00
zzz
405b85c4b4 Cleanups after review and prep for release 2009-10-11 22:51:43 +00:00
z3d
92e323df51 merge of 'd203ac237f3507d4d4e4ac35692ac8e1c7afbd2c'
and 'f9fb6fe4c42fe93b267d23014e9277aec85820be'
2009-10-10 15:16:45 +00:00
z3d
3f2c34903d Updated readme_zh.html, thanks to "walking". 2009-10-10 15:13:39 +00:00
zzz
3c260aa333 fix rare ElGamal AIOOBE 2009-10-09 16:00:38 +00:00
zzz
da41f3a93b fix NTCP rate formatting 2009-10-09 15:59:51 +00:00
zzz
aeb711acde merge of 'd14138bee147039ed42a30254eb29e75c42c1ae2'
and 'f513d5843ba7ec1c5fb1de267d196ed59df37018'
2009-10-09 14:12:25 +00:00
z3d
a46ee9a5b2 Increment version to 0.7.6-25. 2009-10-09 14:01:18 +00:00
zzz
088f9558ec fix persistent client key on split directories - thanks user! 2009-10-09 13:56:34 +00:00
zzz
376d61c155 docs 2009-10-09 13:55:15 +00:00
zzz
285a2b92e5 Drop unused ConfigConsole*. Password implementation should merge code into ConfigUI*. 2009-10-09 13:54:51 +00:00
z3d
8939c573ea Update readmes to include pastebin and echelon's software archive; minor
layout tweak for English readme.
2009-10-09 13:52:36 +00:00
z3d
3839d9873a Minor theme updates; lose whitespace in config.jsp; add license for SilkIcons. 2009-10-09 00:45:33 +00:00
zzz
116762ebce doc and eepsite index updates 2009-10-07 17:12:00 +00:00
zzz
7dd8f00e95 remove UDP port number from thread names for better thread dump anonymity 2009-10-07 17:09:53 +00:00
dev
29a3db4b5c merge of '10cb3e6e3bbb0dac3121e53e10232efe27200229'
and 'd5b1ef74ebfbd8e8c1cd1d51c74e6ec542940ca3'
2009-10-07 15:00:17 +00:00
z3d
5d95907996 Near invisible to the naked eye tweak to dark theme; modest aesthetic tweak to debug.jsp, with apologies to zzz. :) 2009-10-05 19:42:36 +00:00
z3d
2f940d01b6 Modify build.xml to remove reference to defCon1. 2009-10-05 11:45:21 +00:00
z3d
517e170b88 Lose the defunct defCon1 theme, remove the rogue i2plogo.png. 2009-10-05 05:03:32 +00:00
z3d
b27fbb9b8e More minor theme embellishments. 2009-10-04 18:02:28 +00:00
zzz
9b97d32ea8 fix snark npe caused by last checkin 2009-10-04 14:06:14 +00:00
zzz
d4f3952a90 merge of 'de249007f709f415ccb2f090ef084b27be21cbec'
and 'e922f8bd0916c3caf7c241cc5950083486a1ef97'
2009-10-04 13:34:13 +00:00
z3d
f7840652ed Flag adjustment for homepage in classic theme. 2009-10-03 18:43:56 +00:00
dev
08634c1ff6 merge of '054daeda4eca6a485cd4de94e3ab4b59c93e3a08'
and 'b0854af170b1973f5dd1fb73c7266f35942cfc41'
2009-10-03 18:12:05 +00:00
dev
dec4205890 * added paste.i2p2.i2p to readme[LANG=EN]
* added paste.i2p2.i2p to readme[LANG=DE]
2009-10-03 18:11:58 +00:00
dev
b49ab59e3b merge of '1e5ca44c3d69e2a7712396e0ea4f43f05a201f14'
and 'afad15f1e34ff7456efc1b53fb8d8b11df49e57e'
2009-10-03 18:07:38 +00:00
dev
7e1171ec9f merge of '6199603651b9fab5b9659f927bce9edfff2221d8'
and 'aff8790819defcbd74113acc5dc7e024daad5462'
2009-10-03 18:07:02 +00:00
dev
3eae787957 merge hosts.txt with i2p.www 2009-10-03 18:06:50 +00:00
z3d
9ecba4fc5e Drop i2psnark.png 2009-10-03 17:48:01 +00:00
z3d
4fb9eef198 Light theme tweaks. 2009-10-03 17:45:01 +00:00
z3d
49ecfd8224 Theme tweaks. 2009-10-03 14:24:28 +00:00
z3d
09a2854b8b Theme stuff and lose excess. 2009-10-03 07:41:57 +00:00
z3d
82976e609f merge of '41b07fbbaf6d101843800351ffbd1ec5628d4667'
and 'd4ad945d65ad61b0d56ec3cfd1d5f03c6d023002'
2009-10-02 16:28:50 +00:00
z3d
b2d6b60300 Make spaces between divs in dark theme more consistent. 2009-10-02 15:41:38 +00:00
zzz
90737493e6 -21-rc 2009-10-02 15:20:50 +00:00
zzz
fe3abc79d6 fix changing opentracker list 2009-10-02 15:12:24 +00:00
zzz
9931112387 * Tunnel IVValidator: Increase size of bloom filter
for high-bw routers (>= 512KBps share bw) to reduce
      false positive rate. Adds 2MB heap for >= 512KBps routers
      and 6MB for >= 1536KBps.
2009-10-02 03:14:16 +00:00
zzz
1cd646afe2 SusiDNS: HTML transitional fixes, might help opera 2009-10-02 03:12:09 +00:00
zzz
0d262d28b7 propagate from branch 'i2p.i2p.zzz.test' (head a6c2e5692419553edb1079eb25feee51bdd0e3fa)
to branch 'i2p.i2p' (head 70c7015adc1e76f29e33788e2e262f0db5fd91a0)
2009-10-01 18:31:44 +00:00
zzz
f33e950780 comment cleanup 2009-10-01 18:22:54 +00:00
zzz
7094489536 fix OCMOSJ SKM NPE 2009-10-01 18:19:02 +00:00
zzz
2dd650df01 propagate from branch 'i2p.i2p.zzz.test3' (head 459a56e53d8d694591071574e87474b5e95d6494)
to branch 'i2p.i2p' (head ffa1aab7aa8e75d75c183fd6f76140f7d840a6ae)
2009-10-01 18:18:23 +00:00
7e8037979f * fixups to SlackBuilds. requiredbuilder does the wrong thing, and
thinks that java is perl! This isn't really a big deal,
      the file format is simple enough and the requirements are known.
2009-09-21 08:54:41 +00:00
zzz
3a1c042cd2 gcj makefile fixups 2009-09-16 14:51:39 +00:00
zzz
ca81c35b3d static tweaks 2009-09-16 14:50:52 +00:00
zzz
6a2dfff34d one more test class out of the lib 2009-09-16 14:49:12 +00:00
5eccc01de6 merge of '1d77e0a89198e422acfb66d9310fad7b0b290e38'
and '5271eb82ac21ebc1a96dd31c462a14e2aaa0c89e'
2009-09-13 16:33:32 +00:00
1850e893e9 removes a bug in SAM v1 and v2 (introduced when merging with v3) 2009-09-07 17:33:29 +00:00
2341793546 writeString(String str): synchronize using socket write lock to prevent split SAM messages 2009-09-06 00:43:45 +00:00
zzz
1f1d089fda Move FloodSearchJob to its own file, history for two props, -19 2009-09-04 19:58:15 +00:00
zzz
5372a50bcc propagate from branch 'i2p.i2p.zzz.test3' (head f18425568ef4ef20f5054f6fb133cf217bfab485)
to branch 'i2p.i2p' (head 36f4774eb9dd538b3a7c314de79a6fb3bc4df813)
2009-09-04 15:14:36 +00:00
zzz
83588d9b98 propagate from branch 'i2p.i2p.zzz.test' (head 350d5a26c305a3178c851c60451ad9e72d7d82a7)
to branch 'i2p.i2p' (head 869d178de23c9945a98da66013e642b9aa435e28)
2009-09-04 15:14:22 +00:00
zzz
58e960ceb5 Fix inbound tunnel tests by using the correct SKM 2009-09-04 14:20:20 +00:00
zzz
de07705671 deliver more tags as the available number gets low 2009-09-02 15:02:19 +00:00
49ff3cfbf3 * Small logic fix for dr|z3d 2009-09-02 00:08:03 +00:00
zzz
e392469835 TunnelDispatcher cleanup 2009-09-01 14:51:11 +00:00
zzz
7745bd89a9 * configkeyring.jsp: Add delete and cancel buttons 2009-09-01 14:50:22 +00:00
zzz
01bed932c7 * Logging: Fix directory for rotated log 2009-09-01 14:47:16 +00:00
zzz
157190757b * SessionKeyManager:
- Fix TagSet hashCode
      - More synchronization
2009-09-01 13:47:27 +00:00
zzz
e0f1047d72 * SessionKeyManager, OCMOSJ, Garlic:
- Enable per-client SessionKeyManagers for better anonymity
      - tagsDelivered() now means tags are sent, not acked.
      - OCMOSJ uses the new TagSetHandle object returned from tagsDelivered()
        to call tagsAcked() or failTags() as appropriate.
      - Assume tags delivered on an established session to
        reduce streaming lib stalls caused by massive tag deliveries;
        should increase throughput and window sizes on long-lived streams
      - Unacked tagsets on a new session are stored on a separate list
      - Don't kill an OB Session just because it's temporarily out of tags
      - Increase min tag threshold to 30 (was 20) due to new speculative
        tags delivered scheme, and to increase effective max window
      - More Java 5 and dead code cleanups, and more comments and javadoc,
        debug logging cleanups
2009-08-30 16:27:03 +00:00
zzz
15f0cda41f cleanup of things moved to GarlicMessageReceiver long ago 2009-08-30 16:21:38 +00:00
zzz
9a95122c7c new disable tunnel tests option 2009-08-30 16:13:46 +00:00
zzz
d868f7c02a propagate from branch 'i2p.i2p' (head 5b1c8cca17ce959d164a3d3d95453124211fb41d)
to branch 'i2p.i2p.zzz.test' (head e118104e3601f3c56d3a84594fb35de6d902da8f)
2009-08-30 16:06:46 +00:00
zzz
5ca2f306b8 consume sessiontag after failed tunnel test 2009-08-30 16:05:33 +00:00
zzz
c714c1a0c9 instantiate per-client SKM 2009-08-30 16:05:12 +00:00
zzz
e6e6c00497 tostring updates for debugging 2009-08-30 16:04:50 +00:00
zzz
62a3da2fa6 javadoc updates for SKM changes 2009-08-30 16:04:28 +00:00
z3d
f1f97e8ec5 New default light header logo until we rig them by theme. 2009-08-28 03:44:56 +00:00
z3d
6c361679c6 merge of '1b1c377c45e8746e4e04afc47cde55a03b859f32'
and '6869519b0cd38f4bc366d0277c5dc4e924348e66'
2009-08-28 03:16:12 +00:00
z3d
ae89d2f2ab Rejig netdb.jsp into tables; sidepanel logo refresh. 2009-08-28 03:12:23 +00:00
zzz
8053fb5eae prop history, -18 2009-08-27 19:59:11 +00:00
zzz
ebf5eb6e20 propagate from branch 'i2p.i2p.zzz.test3' (head 75804c9355329ab942a5e2e8ecc91e2ec1eb9d33)
to branch 'i2p.i2p' (head 33e55422045b9b3c8ae410162f5cca3eb9baae49)
2009-08-27 19:55:56 +00:00
zzz
2e2bff3f0a fix the favicon again 2009-08-27 19:43:57 +00:00
zzz
a3f290e4d8 * Tunnel:
- Adjust the random drop probability for the message size
2009-08-27 19:31:24 +00:00
zzz
e0dd1f13e3 keep publishing leaseset if we are restarting, to minimize downtime 2009-08-27 15:29:23 +00:00
zzz
787def6a1c * Tunnel:
- Adjust the random drop probability for the message size
2009-08-27 15:27:46 +00:00
zzz
1f5d7d7b5b dont reopen tunnel to say goodbye to tracker 2009-08-27 15:08:21 +00:00
zzz
4bc5215833 fix /i2p/B64 handling 2009-08-27 15:07:48 +00:00
zzz
7736545f5b speed up data hashcodes 2009-08-27 03:53:41 +00:00
zzz
1ecf4377c6 * Client:
- Fail if no date handshake after 30s or no leaseset
        after 5m, rather than hanging forever.
2009-08-27 03:52:14 +00:00
zzz
593d4dc508 * DecayingBloomFilter:
- Replace with new DecayingHashSet for 3 of 4 uses,
        and also in the 4th if the router is low-bandwidth.
        Saves 8 MB heap.
2009-08-26 22:22:47 +00:00
zzz
93d366fea1 * Tunnel: Concurrentify HashSetIVValidator 2009-08-26 22:18:15 +00:00
zzz
7973f2e8b9 * DataHelper: Fix byte array hashcode for small arrays 2009-08-26 22:17:29 +00:00
zzz
bb14fa0b4e * Console: Prevent OOMs in NewsFetcher or StatsSummarizer from
killing the router
2009-08-26 22:16:29 +00:00
zzz
95aba0c537 * EepGet, I2PSnark:
- New I2PSocketEepGet fetches through existing tunnels
        rather than through the proxy
      - Use new eepget for i2psnark
      - Add a fake user agent for non-proxied fetches
      - Cleanups
2009-08-26 22:15:32 +00:00
zzz
df4143f036 * NetDb:
- oops, store leaseset locally even when shutting down
        (fix -16)
      - Java 5 cleanups
    * PRNG:
      - Rename config option to prng.buffers (was router.prng.buffers)
      - Change the default from 16 to 2 for I2PAppContext (saves 3.5MB)
    * TunnelPool:
      - Don't test tunnels when shutting down
      - Less rates
      - Java 5 cleanups
2009-08-25 13:12:24 +00:00
dev
ed0575e937 update launchpad and freshmeat too 2009-08-24 20:51:09 +00:00
zzz
456ed0aab4 history for 2 props, -17 2009-08-24 00:28:49 +00:00
zzz
47c8389419 propagate from branch 'i2p.i2p.zzz.test3' (head e19da9b978ed2ec03adb0e326fff6870746cc4fc)
to branch 'i2p.i2p' (head 179b9a7974d64853c0c91924a5ad86e8b04ee7ba)
2009-08-24 00:08:30 +00:00
zzz
51fd4d70da cleanup 2009-08-24 00:08:19 +00:00
zzz
79e32231fb propagate from branch 'i2p.i2p.zzz.test' (head b1e81b14fbaafdc188ae4d312f843c38b65cc310)
to branch 'i2p.i2p' (head 010351f9470b0e699e17447c87daf6c67e5e5dcc)
2009-08-24 00:06:48 +00:00
zzz
80f9f857e5 more HTML fixup 2009-08-23 17:42:04 +00:00
zzz
5a4c2de425 * Message, I2PSession, SessionKeyManager, Console:
Prep for SessionKeyManager work in the router -
      Fix up SKM renderStatusHTML(); add debug.jsp to see it;
      Redefine getClientSessionKeyManager();
      More cleanups
2009-08-23 16:12:09 +00:00
zzz
7e547743c7 * Message: Move 2 unused classes out of the router lib (~15KB)
(more SKM prep)
2009-08-23 12:29:34 +00:00
zzz
3f3d43df41 * Streaming, I2PSession:
Prep for SessionKeyManager work in the router -
      Comment out, deprecate, and javadoc for unused keys and tags,
      they are vestiges of end-to-end crypto
2009-08-22 22:55:37 +00:00
z3d
0cc72a49c8 "page or resource" indication on 404 console error page. 2009-08-22 17:42:15 +00:00
zzz
35c9e99914 - Throw 403 instead of 404 from flags.jsp and viewstat.jsp
so we don't render error.jsp
2009-08-22 16:23:15 +00:00
z3d
2e4bd1e440 Polish the console 404 error messages. 2009-08-22 12:15:19 +00:00
zzz
22c0b8e524 * profiles.jsp: Bulletproofing, less memory usage
* Updates: Verify zip at startup before extracting
    * Wrapper: Take a couple fields out of the log so it's narrower
2009-08-21 23:36:21 +00:00
zzz
faeb58f7e2 * ClientManager:
- Prevent client destination theft by rejecting duplicates
      - Java 5 cleanups
2009-08-21 15:40:26 +00:00
zzz
cdc184c5e5 * HTTP Proxy: Get mime type right for .ico
* DataHelper: Cleanup
2009-08-21 15:37:13 +00:00
z3d
2f9a4f0fa5 Slight margin adjustments for the light theme. 2009-08-21 00:27:32 +00:00
zzz
37437da34d * I2CP: Fix the SessionConfig serializer in DataHelper,
so that UTF-8 tunnel names are not corrupted by
      I2CP and can be displayed on the console
    * Fix UTF-8 form submission on console and i2ptunnel
2009-08-20 22:22:07 +00:00
zzz
6d3a5856b4 options cleanup on configtunnels.jsp 2009-08-20 15:43:27 +00:00
z3d
4d4538a346 Space efficiency drive for light console theme. 2009-08-20 15:24:14 +00:00
zzz
327102a254 * Console:
- Put favicon on every page
      - Make every page UTF-8
2009-08-20 14:35:32 +00:00
zzz
3602eb14f5 kill deprecation warnings 2009-08-20 14:35:07 +00:00
z3d
cf82b51a1f Rename I2PTunnel Webmanager to I2P Tunnels Manager on edit client/server tunnels pages. 2009-08-20 12:10:18 +00:00
z3d
412d3bc2f8 merge of '1a3fcced1ae28b24a35236271c526379db98613f'
and 'a95bd8209bbd14b8c0a590ba071ecf5a0191644d'
2009-08-20 10:25:42 +00:00
z3d
4735508a0a I2PSnark. 2009-08-20 10:21:25 +00:00
zzz
9225d01b29 * Fix broken 'check for update' button on configupdate.jsp
* history for prop from test3, -16
2009-08-20 04:13:39 +00:00
zzz
7782970d51 propagate from branch 'i2p.i2p.zzz.test3' (head d65e8465671ba0b8f6f013b56045bf867e10a78e)
to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)
2009-08-19 23:44:19 +00:00
zzz
6f053287d5 * Update:
- Fix problems where a requested unsigned update would actually
        kick off a signed update
      - Fix problem when policy set to notify, and clicking
        check for update, incorrectly causing unsigned update download
        and bad messages
      - Verify zip integrity of unsigned updates
      - Move zip files to router dir, not base dir
      - More tweaks and cleanup
2009-08-19 20:20:25 +00:00
z3d
7a88f59f08 Optimize space layout on i2psnark ui. 2009-08-19 18:39:30 +00:00
z3d
d56aae8913 Minor changes to the I2PSnark UI. 2009-08-19 18:28:44 +00:00
z3d
a309a14396 Fixes for config page ui issues. 2009-08-19 17:05:59 +00:00
z3d
b80cbbdd4a Return of the mia <hr>'s. 2009-08-19 16:57:47 +00:00
zzz
5bc2dab1d2 * profiles.jsp:
- Rename the Failing column
      - Reduce the time cutoff again to 90m (was 2h)
2009-08-19 15:26:35 +00:00
8bbe7fabb3 Java code to set Router Console password for dr|z3d 2009-08-19 10:31:51 +00:00
zzz
c537d160a6 * XmlPull: Remove, unused.
Somehow, when I implemented UPnP, I thought it was required,
      but it isn't. ~50KB
2009-08-18 21:54:14 +00:00
zzz
475187fcbc * Stats:
- Fix BufferedStatsLog so it works at all
      - Don't instantiate BufferedStatsLog unless stats.logFilters
        property is defined (restart now required to enable logging)
        This eliminates the StatLogWriter thread and a decent
        amount of memory.
      - Move two CLI classes out of the lib
      - Commment out places where getStatLog() isn't checked for null
      - Cleanups
2009-08-18 20:33:15 +00:00
zzz
a379e36e24 more UTF-8 configs 2009-08-18 14:46:29 +00:00
zzz
a9054a3cab * Transports: Lower conn limit factor to 50 (was 60) 2009-08-18 14:44:57 +00:00
z3d
ea7a9c259f Remove extra whitespace in English readme; fix a couple of validation errors. 2009-08-18 12:45:33 +00:00
z3d
2cba48d4d7 Update history.txt to reflect latest changes. 2009-08-18 02:46:08 +00:00
z3d
42b79c5a20 Work on the classic theme i2ptunnels look and feel, mostly. 2009-08-18 02:38:00 +00:00
zzz
be9523f1e4 * Config files: Add some encoding help
* DataHelper, Router:
      - Save config files in UTF-8 rather than the default encoding,
        since we read them in UTF-8
    * jetty.xml: Change encoding to UTF-8
    * logs.jsp: Add system encoding
    * NTCP: Clean up clock skew shitlist message
    * Shitlist: Clean up expire message
    * WorkingDir: Ensure modified files are processed with UTF-8 encoding
2009-08-17 22:14:39 +00:00
z3d
6a8dd0f053 Revert xhtml regressions in i2ptunnel code; fixes for various validation issues. 2009-08-17 20:17:30 +00:00
z3d
1b63aa411b Replace all <hr /> and <br /> with <hr> and <br> whilst we're in html4 transitional. 2009-08-17 14:35:18 +00:00
z3d
33a7f3351b Start of validation cleanup. 2009-08-17 13:24:08 +00:00
z3d
f7af5e1329 Remove right justification on status stars. 2009-08-17 02:19:04 +00:00
z3d
3a9a029d70 Sidepanel fixes. Bumped to -14. 2009-08-17 02:13:10 +00:00
z3d
0aaacc86e2 Dark theme and ieshim.css tweaks; minor sidepanel mods. 2009-08-16 15:45:07 +00:00
z3d
1b8b7b741c Revert <br>'s to <hr>'s in sidepanel, remove tunnel status from table; fixes Opera display issue. Reported and partially fixed by sponge. 2009-08-15 20:19:39 +00:00
zzz
66831c619b cleanups 2009-08-15 19:51:55 +00:00
zzz
30628fb5f9 more clean targets 2009-08-15 19:51:13 +00:00
064ff8a7d2 2009-08-15 sponge
* Merge in dr|z3d and my own html fixes for router console java and jsp
      files so that Opera (and now IE?) doesn't puke anymore on the missing
      and misplaced HTML tags.
    * Optimized all jsp files so that they are shorter to save space, which
      is then used to fix the broken HTML. We should break even space-wise.
    * Bump to -13.
2009-08-15 16:28:24 +00:00
9a18955de3 merge of '522de7791fdad000d42bb5a01f139d913e74d7ef'
and 'ef33b50138594ef55a1dbcd6c77a3d3afeb22ff6'
2009-08-15 16:22:38 +00:00
35da3f3334 HTML bugfixes in routerconsole pages. 2009-08-15 16:08:33 +00:00
z3d
335d45f03e Fix borked snarkmanager.java before anyone notices. 2009-08-15 01:12:26 +00:00
z3d
c466cd77ad Add some <centre> tags to our router restart/shutdown event notices. 2009-08-14 21:40:45 +00:00
z3d
d998e2e9bb Theme tweaks, minor textual edits and a whole lot less. 2009-08-14 21:00:22 +00:00
zzz
0a20315280 * configpeer.jsp: Limit max displayed banned IPs
* jobs.jsp: Cleanup
    * eepsite_index_de.html: localhost -> 127.0.0.1
    * readme*html: localhost -> 127.0.0.1
2009-08-14 17:39:05 +00:00
zzz
01753f5aea * Ministreaming: Cleanups, deprecation, move demos out of the lib 2009-08-14 04:36:06 +00:00
zzz
bcd22cfbf3 * Console cleanups
* Router: Don't do some things when we are shutting down
    * VMCommSystem fixups
2009-08-14 01:52:47 +00:00
zzz
7e039d0339 tweak 2009-08-13 22:21:49 +00:00
zzz
ab08ac70aa * I2PTunnel:
- Make IRC Proxy non-shared, delayed-start, close-on-idle
        for new users, for the anonymity benefits (see "Shared Clients,
        Correlation and Collusion" http://zzz.i2p/topics/217 )
      - Remove "experimental" flag on new client options
    * configclients.jsp: Add full path to config file
    * Add some path help in some config files
2009-08-13 22:14:07 +00:00
zzz
5decf3cd7a Dont show firewall warning unless its for real 2009-08-13 18:46:14 +00:00
zzz
5c6d757e35 add size total 2009-08-13 18:25:45 +00:00
zzz
4b75be804f flags for leases 2009-08-13 15:35:37 +00:00
zzz
6515e6ee17 merge strings for efficiency 2009-08-13 15:21:22 +00:00
zzz
55e8583663 unused code out 2009-08-13 15:15:41 +00:00
3fbff71861 2009-08-11 sponge
* Code Janitor time! Many fixes and documenting fixes that should be
      done in the future. for the most part, this is a general code cleanup.
    * On smaller/embedded systems, the "final" keyword cleanups will have
      more of an impact than on larger systems.
    * Document missing hashCode() methods.
    * Unhide more variables to make code easier to read.
2009-08-11 21:58:56 +00:00
z3d
e5eea47b66 Lose the _blank targets on integrated console pages; yellow/green indicators in sidepanel. 2009-08-11 21:29:43 +00:00
zzz
b10b0e8f57 client/server icon selection, history for triple prop, -11 2009-08-11 16:22:43 +00:00
zzz
631a367b1c propagate from branch 'i2p.i2p.zzz.test3' (head d847100f901613ad765312ac9fed6d578d08d907)
to branch 'i2p.i2p' (head 63ce4ace08b7b7ba01531f0951ffc47ed57411a6)
2009-08-11 16:11:45 +00:00
zzz
8ea279fbe2 post-prop fixup 2009-08-11 16:09:44 +00:00
zzz
089572befd propagate from branch 'i2p.i2p.zzz.test2' (head 63cdcb547c0d33cd3c3c899b168ffab9f7ed2ebe)
to branch 'i2p.i2p' (head 52964ce47701fd8838e3f9c84af29d2463c83bc7)
2009-08-11 16:04:36 +00:00
zzz
0f96b9569a propagate from branch 'i2p.i2p.zzz.android' (head ad3a2f8952b533fbbae2868097f6a20d525e07bf)
to branch 'i2p.i2p' (head 2c89302763aa8dcb1a59e3e1f83fd653e01c15a5)
2009-08-11 15:57:38 +00:00
zzz
d1114666de fix comment 2009-08-11 15:37:12 +00:00
z3d
f676abc0d4 Fix regression in classic theme that broke the proxy error pages. 2009-08-11 14:50:12 +00:00
z3d
3492b7219b .10 2009-08-11 10:50:29 +00:00
z3d
a12ae6e399 Ongoing overhaul of the sidepanel. 2009-08-11 10:45:20 +00:00
zzz
9b2e18a65b * NetDb stats: Hide part. tunnel total events, effective next release 2009-08-10 19:11:21 +00:00
zzz
c52ccf7eef comment out dead oldconsole code 2009-08-10 17:48:16 +00:00
zzz
1282434684 * Move StatsGenerator from router to routerconsole
* Move the unused AdminManager from router to the apps directory
2009-08-09 19:33:15 +00:00
zzz
4e844187f7 revert another change from when this branch had reseed changes 2009-08-09 15:34:26 +00:00
zzz
ccd67d658d propagate from branch 'i2p.i2p' (head 12e0efc6ee1b41bd216403b5ac11facb9c70b1fb)
to branch 'i2p.i2p.zzz.android' (head a519611a2637a052eff6b9b8d9363b3fe0550840)
2009-08-09 14:35:41 +00:00
zzz
62383819cb propagate from branch 'i2p.i2p' (head 6ab0f64b9f4992591ed989f8d89a859fc3ceaeaf)
to branch 'i2p.i2p.zzz.android' (head e02886e19d254dac40a7f775e102e60560efe5e5)
2009-08-09 14:34:21 +00:00
zzz
3febcf6043 * Updater:
- Add new unsigned update option, triggered by
        last-modified date, using the new EepHead.
        Buttons still are not hidden after download complete.
      - Make the .sud updater use the temp dir when proxied
      - Several cleanups
2009-08-09 14:28:20 +00:00
zzz
a431137f45 comments 2009-08-09 14:21:47 +00:00
z3d
5a6e14b9df Add a static image to the local destinations list to indicate server/client
status of local destinations; zzz to add server/client logic.
;
2009-08-09 10:50:54 +00:00
zzz
536bc3112f add comment 2009-08-08 18:53:26 +00:00
z3d
81b2e6b789 Fix a sidebar regression. 2009-08-08 18:03:05 +00:00
zzz
4cf376ec1d Rename the shitlist and blocklist 2009-08-08 17:14:30 +00:00
zzz
d3a0c91398 more possible bork prevention 2009-08-08 17:11:05 +00:00
z3d
43140d3efd Overhaul of sidepanel layout, with concommitant tweaks and fudges to the css. 2009-08-08 15:34:58 +00:00
zzz
3dd3bf829d propagate from branch 'i2p.i2p' (head 6ab0f64b9f4992591ed989f8d89a859fc3ceaeaf)
to branch 'i2p.i2p.zzz.test2' (head 3e85c6cfff244d09df42d967d3a3cdf77053890d)
2009-08-08 14:30:07 +00:00
zzz
bdcad06ece EepHead 2009-08-08 14:29:18 +00:00
zzz
69fdfb0635 -8 2009-08-07 18:36:09 +00:00
zzz
55a8002b9c propagate from branch 'i2p.i2p.zzz.test3' (head 1f086d33dd3479afceb025d2da7956d7470fb3e5)
to branch 'i2p.i2p' (head 6959293ce260b9da4d61776717c02e20a0c7b2dd)
2009-08-07 18:30:04 +00:00
z3d
e36f9b2273 UI enhancements. 2009-08-07 18:19:42 +00:00
zzz
70ae99f31a fix broken persistent key storage 2009-08-07 17:03:26 +00:00
zzz
15565ca09c more hellips 2009-08-07 16:17:52 +00:00
zzz
f188e02a5d move css include up to possibly reduce servlet borkage 2009-08-07 15:49:36 +00:00
zzz
4d005349a7 * I2PTunnel:
- Move the privkey files from the app dir to the
        config dir, in preparation for splitting the two
        dirs by default
2009-08-06 18:59:06 +00:00
zzz
c65a97882e * Eepsite:
- Quote the jetty.xml path in clients.config,
        and adjust the migration function, to fix the
        eepsite-won't-start bug on windows
2009-08-05 19:18:17 +00:00
zzz
cf880548d9 * HTTP Proxy:
- Restore the localhost error message
      - Catch 127.0.0.1:xxxx addresses too
2009-08-05 19:15:03 +00:00
zzz
b5876e7f04 * Router: Move the WorkingDir class from i2p.jar to router.jar 2009-08-05 17:08:04 +00:00
z3d
2436ea1131 More classic/ieshim futzing. 2009-08-03 23:10:53 +00:00
z3d
5395b6829a Ongoing betterment of the classic theme. 2009-08-03 22:07:34 +00:00
zzz
c3af134a5b - Remove UTC time from summary bar
- Increase skew warning threshold to 3s (was 100ms)
2009-08-03 20:02:28 +00:00
z3d
cce72a5f1b More classic manoeuvres 2009-08-03 19:09:21 +00:00
z3d
32c143f8d7 More classic tweaks. 2009-08-03 18:17:11 +00:00
z3d
895cb1f2e5 More ieshim.css goodness. 2009-08-03 15:48:17 +00:00
zzz
7986f5646e truncate long dest names 2009-08-03 15:29:35 +00:00
z3d
59a5776f9d More Classic theme tweaks. 2009-08-03 15:28:49 +00:00
z3d
fc8c0ccfe1 Minor classic theme tweakage. 2009-08-03 15:00:15 +00:00
z3d
0930ead814 Ongoing Classic theme renovations. 2009-08-03 14:45:44 +00:00
zzz
b5a17637cb * Wrapper:
- Extend timeout to 20s (was 5s)
      - Shorten ping interval to 5m (was 10m)
2009-08-03 14:18:55 +00:00
z3d
460c8a319f Extensive overhaul of the classic theme; css hacks for IE! 2009-08-03 13:24:55 +00:00
zzz
7aa051ef4f add custom error page 2009-08-02 20:12:16 +00:00
z3d
c7c132c0ac More classic theme tweaks, I2PSnark UI fixes, and enhanced proxy error messages for classic. 2009-08-02 19:05:40 +00:00
zzz
d84b1125eb * Timestamper: Don't start thread if not enabled 2009-08-02 16:16:57 +00:00
zzz
8d4a1899f2 * Streaming: New option i2p.streaming.answerPings (default true) 2009-08-02 14:51:06 +00:00
z3d
3a0cdf1388 More IE overflow fixes; remove max-width from i2psnark css. 2009-08-02 13:57:29 +00:00
zzz
d8d76fd327 * Ministreaming:
- Make getInt() static
      - Move the big TestSwarm class out of the lib
2009-08-02 13:37:23 +00:00
z3d
abf7296de1 Fix for IE overflow issue; classic theme enhanced; more UI enhancements. 2009-08-02 12:57:50 +00:00
zzz
316c20ee44 Dont count yourself as a known peer 2009-08-02 11:54:14 +00:00
zzz
13e8c95667 Hide update button when shutting down 2009-08-01 17:42:27 +00:00
zzz
a14ad423a6 formatDuration tweak 2009-08-01 17:22:57 +00:00
zzz
e1a5d5e19a post-release cleanup 2009-08-01 14:43:04 +00:00
z3d
6e29eddaa7 More UI layout tweak & fixes to config page(s). 2009-08-01 04:14:05 +00:00
z3d
65ae26a961 More UI layout enhancements to the config pages. 2009-08-01 03:28:42 +00:00
z3d
1afd946a94 Close quotes on div to ensure buttons align to the right in configui.jsp. 2009-08-01 01:36:59 +00:00
z3d
d6820634ac Further enhancements to the configuration pages. 2009-08-01 01:15:12 +00:00
z3d
95dd744633 Give the radio and checkbox icons some breathing space. 2009-07-31 19:40:05 +00:00
z3d
219af36090 Ensure all buttons in dark theme have consistent font size. 2009-07-31 19:20:07 +00:00
z3d
24e83398ba UI fixes: text boxes, buttons, radio/checkbox width. Enhanced /peers.jsp. 2009-07-31 19:15:35 +00:00
zzz
4172ed21a9 take jetty back out of the updater 2009-07-31 17:56:02 +00:00
zzz
1cba7b8ec1 * Core:
- Catch unzip fd leaks on error
      - Move 2 test classes out of the lib
2009-07-31 17:55:38 +00:00
zzz
0bef85277e try to automate the release process 2009-07-31 02:36:15 +00:00
z3d
2f4c428316 merge of '2cffbafe300f5dce55a82db20e2bf8f61ae8717f'
and 'b4f1b960a7d1bf1a3d5baaf9ddea72625177726a'
2009-07-30 23:13:10 +00:00
z3d
4de0b73cd8 Ongoing UI enhancements; peers.jsp gets some love. 2009-07-30 23:10:48 +00:00
zzz
7ffb3f46b5 0.7.6 2009-07-30 21:58:29 +00:00
zzz
ad6cd05295 last minute fixes 2009-07-30 17:44:08 +00:00
z3d
6e7ad3ecdb Internet Explorer fixes and kludges for the classic console theme. 2009-07-29 15:54:39 +00:00
z3d
a6243d14c0 IE classic theme fix. 2009-07-29 15:28:17 +00:00
z3d
b0a477c5ca Internet Explorer fix for classic console theme. 2009-07-29 15:03:41 +00:00
z3d
1d655c7abc Mostly last-minute enhancements to the classic theme. 2009-07-29 14:46:47 +00:00
z3d
abf2bead33 I2PTunnels CSS tweaks. 2009-07-29 10:24:52 +00:00
z3d
f1103bec7b I2PTunnels theme css tweaks. 2009-07-29 09:07:00 +00:00
z3d
fb1a6534dc Give the stats page some consideration. 2009-07-28 22:53:33 +00:00
zzz
22b1d5fe75 new reseed url 2009-07-28 13:28:13 +00:00
zzz
d2c939bc09 typo 2009-07-28 13:27:44 +00:00
z3d
73f8cb4819 Remove redundant html markup and refashion table display a la fois. 2009-07-28 13:06:19 +00:00
zzz
256bb771e1 * Add flag dimensions to speed up profiles.jsp rendering
* Fix typos in proxy error files
    * Catch i2psnark create torrent with no data entered error
      http://forum.i2p/viewtopic.php?t=3763
2009-07-27 02:53:37 +00:00
zzz
cc533b0431 * Add wrapper.config and i2prouter comments for 'portable'
* Recognize same base and config dir in WorkingDir
    * Reformat XInfoPanel in installer for clarity
2009-07-26 14:55:01 +00:00
z3d
3c76fda8d9 Ensure that both timed and event based graphs are suitably div'd up. 2009-07-25 23:46:42 +00:00
z3d
c5555350ae Get /graphs.jsp looking a bit more presentable. 2009-07-25 19:47:16 +00:00
z3d
22744084dc Theme fixes, minor graphical tweaks, fixed max-width for i2psnark console. 2009-07-25 13:56:03 +00:00
z3d
e4b212ec90 Add 'missing' reflection effect to I2PSnark logo. 2009-07-25 11:42:49 +00:00
z3d
4be0af5de5 I2PSnark UI refinements, mostly, and some tunnels page enhancements. 2009-07-25 05:24:37 +00:00
zzz
d771745981 * Throttle: Decrease default max tunnels to 2500 2009-07-24 23:10:15 +00:00
z3d
7628842b0a Version bump to -21rc. 2009-07-24 22:51:02 +00:00
z3d
6bcdb7fd92 I2PSnark: Revert to 60 seconds refresh, replace red panel with dark blue,
revert centering of torrents table centering; fix susimail centering issues (thanks postman!)
2009-07-24 22:41:23 +00:00
zzz
27561fb632 merge of '84672f771b3eea3cded1e752ce188c22ce8e6eed'
and 'aac7937e34b380e2cade781fda5e2bff4b58439f'
2009-07-24 19:23:21 +00:00
zzz
f6ec3f66f8 * Router: Support i2p.dir.base and i2p.dir.config passed in via properties 2009-07-24 15:35:58 +00:00
zzz
2f0b9a8f94 * Eepsite: Add Deutsch index page and css (thanks sperrbezirk!) 2009-07-24 14:16:16 +00:00
z3d
3fb1a4ebc5 Console and I2P tunnels tweaks: more stealth, less color clash! 2009-07-24 11:17:53 +00:00
z3d
9abb0a1581 I2PSnark: Fix bad button behaviour. 2009-07-24 01:07:07 +00:00
z3d
e60e29b70f Tidy up jobs.jsp a little and other to various ui elements. 2009-07-24 00:08:08 +00:00
z3d
d84352896f I2PSnark: Modify border decoration on messages pane. 2009-07-23 19:08:04 +00:00
z3d
ee419454f4 Remove superfluous and slightly irritating display:inline from orderered lists in light theme. 2009-07-23 18:56:12 +00:00
z3d
68445fe195 I2PSnark: Fix mouseover image margin discrepancy. 2009-07-23 18:25:22 +00:00
z3d
12b2d4c00b I2PSnark: Lose 10 whitespace vertical pixels from header. 2009-07-23 18:18:51 +00:00
z3d
fbb4d3a636 I2PSnark: Hither and yon tweaks. 2009-07-23 17:55:26 +00:00
z3d
ca415376c7 I2PSnark: Opacity fade on header logo etc. 2009-07-23 17:22:05 +00:00
z3d
718f73ebb1 I2PSnark UI changes: add a splash of color! Fix for light i2ptunnels theme. 2009-07-23 17:01:43 +00:00
z3d
fb47eef218 merge of '6a60796453a654fe4227ac80133b8d78ceea2119'
and 'ee3198caba6a88f9c23e82ba3fc5100e339803c2'
2009-07-23 12:12:42 +00:00
87dd473148 2009-07-23 sponge
* Add bob.i2p and sponge.i2p keys to hosts.txt
2009-07-23 06:57:03 +00:00
z3d
9bbbccee1a Add header graphic to i2psnark and fill out the panel colors a touch. 2009-07-23 04:28:28 +00:00
0088750b16 2009-07-23 sponge
* Fix jdk 1.6izm in BOB as per zzz
2009-07-23 00:09:32 +00:00
z3d
0aae2deb58 Swap over margin to bottom of section div lose (some of the) header whitespace. 2009-07-22 22:31:21 +00:00
z3d
0d62b37c13 Bump to 0.7.5-18 with history.txt doodle. 2009-07-22 21:49:02 +00:00
z3d
64ece1080c Ensure links don't revert to underlined and unbold after visitation in dark theme. 2009-07-22 21:37:56 +00:00
z3d
b4256e484a I2PSnark layout, themes, tunnel tables.. 2009-07-22 21:07:46 +00:00
z3d
b0ea204be5 Add a couple o' lines to history.txt to indicate updates to webapps ui's, mostly. 2009-07-21 17:17:40 +00:00
z3d
118d7fce09 Remove redundant table generation code for header links in i2psnark. (Thanks zzz!)
Also, add snark.css to the file manifest.
2009-07-21 16:37:44 +00:00
zzz
5e498e0bd6 * Console: Drop top-level css, unused now
* Eepsite: Add default robots.txt (thanks v1v4)
2009-07-21 15:46:47 +00:00
zzz
c312fa869b merge of '98b80575def2548ebf853a03d8029a40e9546ec8'
and 'e7693976cb5a07bd0477aa2d8fef1ecc9c56c3d8'
2009-07-21 15:19:37 +00:00
z3d
fe394b0b46 Add a preliminary undercoat to I2PSnark UI. 2009-07-21 04:33:13 +00:00
zzz
6039f3931d additional proxy.i2p defenses 2009-07-20 17:29:25 +00:00
zzz
71d72b426f close anchor 2009-07-20 17:24:26 +00:00
zzz
7d5042c507 add geoip license (thx Arsene) 2009-07-20 17:23:20 +00:00
zzz
e2b0e14771 drop unused class 2009-07-20 17:22:44 +00:00
z3d
0e9bfba84d Mostly cosmetic tweaks to SusiMail UI. 2009-07-20 15:37:11 +00:00
z3d
99f53413a6 More SusiDNS css and layout tweaks. 2009-07-20 12:33:07 +00:00
z3d
f46600d7fe merge of '536c1f34e7cf7013b6721728eba84470c550d50d'
and 'eed8cd82284703473ad336f20ed84fd2d22e549d'
2009-07-20 11:22:19 +00:00
z3d
0607a87514 More CSS tweaks and an intial stab at taming susidns' unruly layout! 2009-07-20 11:18:31 +00:00
zzz
1658690b97 -16 2009-07-20 02:36:10 +00:00
zzz
eae0f3273b merge of '2ecacf99140948d67649a417e7df4e2069254a43'
and 'ca7c2c0a050c4fe7bedb305b9dba557d0e2a6e69'
2009-07-20 02:35:45 +00:00
zzz
508beb2fc7 * Transports: Reduce the number of Rates 2009-07-20 01:58:43 +00:00
z3d
0de2f492d1 console.css fixes and fiddles for all 3 themes. 2009-07-20 01:27:22 +00:00
zzz
72a7393844 - Delay start of PeerTestJob 2009-07-20 00:59:02 +00:00
zzz
99f8468f63 * Stats: Increase coalesce time to 50s (was 20s) to reduce CPU use
* Peer Profiles:
      - Increase reorganize time to 45s (was 30s) to reduce CPU use
        and lock contention
      - Remove some stat rates
2009-07-20 00:39:57 +00:00
zzz
a9e8fc2f1f * Peer Profiles:
- Reduce max age for display to 2h (was 3h)
      - Drop unused Persist classes
      - Dynamically adjust expire time to control memory use
2009-07-20 00:02:34 +00:00
zzz
e225244887 * BuildHandler: Increase threshold for dropping instead
of rejecting to 81% (was 75%)
2009-07-20 00:00:49 +00:00
zzz
cbde15b00f cleanup 2009-07-19 23:59:21 +00:00
zzz
8e38047d43 add a msg for IE ppl 2009-07-19 23:59:03 +00:00
zzz
dc1d0195eb drop dup png 2009-07-19 22:35:04 +00:00
zzz
7d7f264bc0 * I2PSnark: Remove Postman tracker 2009-07-19 22:32:54 +00:00
zzz
b3c30b4fd2 * HTTP Proxy: Fix proxy.i2p "home page" (thanks dr|z3d) 2009-07-19 22:32:29 +00:00
zzz
6c87005eeb * graphs.jsp: Reduce refresh time to eliminate double iframe load 2009-07-19 22:32:01 +00:00
zzz
8d2a516044 * GeoIP: Fix minor bugs (thanks Arsene) 2009-07-19 22:31:35 +00:00
zzz
dc0cc49dbf * Console: Hide configui.jsp from IE 2009-07-19 22:31:10 +00:00
z3d
497bc5a414 Add some horizontal rules underneath I2P logo on proxy error pages. 2009-07-19 13:12:54 +00:00
z3d
2a71baef90 Proxy Error page tweaks 2009-07-19 01:16:14 +00:00
z3d
49a74e8610 merge of '65fd23854899b035bddfc78ab8f0ac486d264400'
and '6d0877ff05f02660f738c81627789087bc813cc7'
2009-07-18 23:40:59 +00:00
z3d
6340fbb3d4 Proxy Error visual enhancements, mostly. And a version bump we go, to -15! 2009-07-18 23:39:03 +00:00
z3d
748203f4e7 Intitial proxy error tweaks, readme alt tag fixology. <b>(Blame the French!) </b> 2009-07-18 21:27:57 +00:00
z3d
a91cc94228 After much ado, fix the borked i2ptunnels page. 2009-07-18 10:16:33 +00:00
zzz
029ac71e58 close anchors 2009-07-18 04:06:12 +00:00
z3d
e830b46173 Remove nasty file:// references inserted by overeager editor. 2009-07-17 23:55:27 +00:00
z3d
a4d053f555 Revert i2ptunnels main page to previous version in attempt to fix borkage. 2009-07-17 22:56:06 +00:00
z3d
b298796060 Attempting fixage of borked i2ptunnels main page. 2009-07-17 22:21:01 +00:00
z3d
895490df3d Insert some <h3>'s into various config pages and minor meddling with the css. 2009-07-17 20:57:18 +00:00
z3d
a09c06849b Introducing tr:last-child {} for last table row color differential. 2009-07-17 19:36:12 +00:00
z3d
37c494bf0a Possibly inconsequential light console.css prod. 2009-07-17 18:32:53 +00:00
z3d
d6fccc07be Prettify graphs.jsp a little. 2009-07-17 18:26:00 +00:00
z3d
819efc132b merge of '4e512b2f1429925fa1e4151b3a78ab25a74fce03'
and 'dea62f5479c0cfbb6bde3b6de73cf71b38e22304'
2009-07-17 17:33:35 +00:00
z3d
8ffdae4182 More work on the config pages. 2009-07-17 17:30:11 +00:00
zzz
efd6dcc8df drop nav.jsp 2009-07-17 16:55:00 +00:00
zzz
70a17ecfaf provide a refresh link since the refresh button brings up a POST dialog 2009-07-17 16:53:53 +00:00
z3d
15dbf67983 Config page(s) tweaked. 2009-07-17 16:52:08 +00:00
z3d
a43df30051 merge of 'c2d95c40c32ee34dcd02be699ef6ebf6f36ce971'
and 'd6b0769149a1fa18328e86f05dd4bf97d8a3ef4d'
2009-07-17 16:41:48 +00:00
z3d
1bff5a7b9e Visual overhaul of config pages. 2009-07-17 16:28:38 +00:00
z3d
ec49d9becf configstats.jsp layout tweak. 2009-07-17 15:33:18 +00:00
zzz
bc49f51dbb use custom toolbar.html in the summary bar if it exists 2009-07-17 14:54:58 +00:00
z3d
b869860a83 Restore accidentally reverted <h3> styling. Apply some polish to <code>configtunnels.jsp </code>. 2009-07-17 13:40:34 +00:00
z3d
2772a0e5e4 More I2Ptunnels page surgery. Not out of the woods yet! 2009-07-17 13:09:05 +00:00
z3d
46970f5a4a I2P Tunnels shakeup. 2009-07-17 12:26:29 +00:00
z3d
ccf9cd3f71 Dark I2PTunnels cross-browser css tweaks. 2009-07-17 04:18:48 +00:00
z3d
b9c464f8cb Light I2PTunnels theme compatibility enhancements & cosmetic tweaks. 2009-07-17 04:00:50 +00:00
z3d
48510c1157 Just when you thought it was safe. Light I2Ptunnels css jiggle.. 2009-07-17 01:10:54 +00:00
z3d
3035fcf080 Reduce wrapper.restart.delay from 60 to 15 seconds. 2009-07-16 20:15:00 +00:00
z3d
930f402eb9 merge of '024eee796b3a4a68a0e55c63997c0d76bd2cfcea'
and 'ecb5fa93e45ec4c0635cd5665d81767627da1279'
2009-07-16 19:21:28 +00:00
z3d
4e93191312 Cherry on the Chinese cake. Add an <hr> to the end of the document. 2009-07-16 19:13:38 +00:00
zzz
9bc4f6bacb Themes for HTTP Proxy error pages 2009-07-16 19:11:58 +00:00
z3d
9b42129fea Add some newlines to the Chinese readme to enhance legibility. 2009-07-16 19:06:47 +00:00
z3d
0650137e32 Minor theme tweaks. 2009-07-16 18:56:56 +00:00
z3d
a13e528972 Moderate layout changes to news.xml and initialNews.xml, customary css tweaks,
and zzz's fix for the Chinese readme issues.
2009-07-16 18:44:24 +00:00
z3d
82f8dd5635 Insert a <h2>Welcome to I2P!</h2> in the Chinese readme, in the abssence of
a native translation.
2009-07-16 17:23:08 +00:00
z3d
7f93cb22ce Apply some css love to the light theme I2P tunnel dropdowns. Insert flags
into Chinese readme.
2009-07-16 17:16:32 +00:00
z3d
e6738053b2 Fix button hover colors on Opera/webkit. 2009-07-16 16:02:29 +00:00
z3d
b74ab51438 Tidy up I2PTunnels default.css, more Konqueror compliant now. Also ensure
we're using Bitstream Vera family where possible.
2009-07-16 15:35:05 +00:00
z3d
d7a591ce3a Ensure border-radius and variants employed consistently in default.css 2009-07-16 14:17:37 +00:00
z3d
cfe33a8bbd Ensure border-radius and variants are universally applied. 2009-07-16 14:07:34 +00:00
z3d
ca7593cdf2 merge of '23804a4a389ba2bddf86a2f90989489059f43d23'
and 'c75933fb2ffbc2e40dd422af605cff9e0703d689'
2009-07-16 13:13:09 +00:00
z3d
b185d11daf Lose <h4> for confignav, and replace -webkit- with -khtml- for provisional css3 classes. 2009-07-16 12:36:31 +00:00
5106c37ac4 * ministreaming:
- small pedantic fix
    * streaming:
      - Fix a deadly race condition.
      - Some small pedantic fixes.
    * core:
      - Fix a deadly race condition.
    * BOB:
      - Fixed some races that occured from fixing races in streaming and core.
      - Some badly needed code refactoring to depend less on the database.
2009-07-16 03:03:33 +00:00
z3d
5d40ad1749 Add <code> tags to location(s) for logs. 2009-07-16 02:48:44 +00:00
z3d
24edce3daf Whitespace removal team in effect. 2009-07-16 02:28:50 +00:00
z3d
cfd1ab7d78 Refresh successful theme change message; make more context specific, indicate page refresh needed . 2009-07-16 02:26:56 +00:00
z3d
bfaa648edd Whitespace removal service. 2009-07-16 02:18:18 +00:00
z3d
fd19210bce merge of '190d75864ece264849a59ab577e727896beef958'
and 'eacae4019ad4aa25c458d7757ba38cee4ea2aaa4'
2009-07-16 02:03:16 +00:00
z3d
9a3b103324 Reduce size of log level overrides writeable area so it dosen't overflow the page. 2009-07-16 02:01:26 +00:00
zzz
0ee5c905e4 merge of '5f552b9cd9f53addefd86c744aa05bd620028649'
and '7bf5ea7cfe5da14f19ed0be2af63fcad3e2e54c1'
2009-07-16 01:57:39 +00:00
zzz
5f22a226cc fix compile error 2009-07-16 01:55:14 +00:00
z3d
56b3144c56 Cosmetic tweaks to configui and config pages. 2009-07-16 01:44:56 +00:00
z3d
dad4bef70c merge of '3b23dcff9410a7f2e8443cdaa410ead6d9694f29'
and 'fd87a1b95a60a0e5c18d75aed057344e8ce5aa87'
2009-07-16 00:10:58 +00:00
z3d
13a04dba71 Upgrade <h4> to <h3> in logs.jsp. 2009-07-16 00:07:25 +00:00
z3d
ab66dfcb65 Cosmetic tweaks and under the radar flag sabotage. 2009-07-15 23:57:28 +00:00
z3d
ab349a5303 Return of the nth-child! 2009-07-15 23:32:46 +00:00
zzz
53a68ff5a3 Make light the default theme 2009-07-15 22:56:53 +00:00
zzz
29f13868b7 * Console: Convert readme_zh.html from GB2312 to UTF-8 2009-07-15 16:28:54 +00:00
zzz
8ce71d724c * Installer: Don't launch the router from the postinstall.sh script
on linux anymore; add a panel to the installer to provide launch instructions.
2009-07-15 15:29:37 +00:00
e3de3dcc1d * Slackware SlackBuild fixes. 2009-07-15 08:51:51 +00:00
z3d
fa6a6fa4ef Remove redundant indents in English readme.html. 2009-07-15 04:19:22 +00:00
z3d
e78e4c93c0 Override left justify for links in config.jsp. Tame the beast! 2009-07-15 03:53:53 +00:00
z3d
0173f5877b More .jsp meddling. 2009-07-15 03:42:37 +00:00
z3d
32e829da74 Layout tweaks to config.jsp & help.jsp & customary css updates. 2009-07-15 03:27:29 +00:00
z3d
68e81fa8c8 Slight reordering of config.jsp content, and promotion of help sections to <h3>. 2009-07-15 02:25:49 +00:00
z3d
9f84d13542 Formatting tweaks to help.jsp & theme mods. 2009-07-15 01:59:41 +00:00
z3d
48f591eea8 Add some <hr>'s in some places. 2009-07-15 00:21:28 +00:00
z3d
cb6dce4e03 Help page tweaks, css fiddlery, and a version bump to -10! 2009-07-14 01:22:03 +00:00
z3d
e5e7f01e84 Mostly layout updates to the readme files. 2009-07-14 00:40:44 +00:00
z3d
f90a320d95 Mods to the configupdate table, throw in a couple of <hr>'s for good measure. 2009-07-13 22:52:31 +00:00
z3d
96c94a294e Bash the textarea sizes about a bit and tidy configupdate.jsp table. 2009-07-13 21:48:44 +00:00
z3d
ab81887138 merge of '12cc77e1d7d2318fa071cb9fa3741d9f64abf475'
and '7b7931f18c15ffa3b7afb35470d5d0dfd5714f30'
2009-07-13 20:32:14 +00:00
z3d
d13e3d95d3 The taming of the textarea. Part 1. 2009-07-13 20:30:16 +00:00
z3d
64f1fe0b51 Minor tweaks to make Opera experience more enjoyabale. 2009-07-13 19:52:04 +00:00
z3d
0a77f88229 <h1> and <h2> dark theme letter spacing tweak (to match light theme +-). 2009-07-13 19:27:36 +00:00
z3d
12d34a50ff Modest cosmetic enhancements to dark/light console themes. 2009-07-13 18:23:43 +00:00
zzz
92daa920d2 add dependency to get the version number right in the wrapper log 2009-07-13 17:10:51 +00:00
z3d
091d03b9d8 More theme spit 'n polish. Remove redundant themes from configui.jsp for now. 2009-07-13 16:13:22 +00:00
z3d
f7ee11cb44 More enhancements to the css.. also, let's try to use Bitstream Vera fonts on Linux
where available..
2009-07-13 13:25:18 +00:00
zzz
6226b8ae6d -9 2009-07-13 03:07:16 +00:00
zzz
a6a61421d9 merge of '1d3fdcc1394982ef7bc5c12b7aa163919c533096'
and '7069e4dcedf5578597d00177dd220e02ded3634e'
2009-07-13 03:06:06 +00:00
zzz
5c20574044 add readme files to the updater 2009-07-13 03:04:17 +00:00
zzz
aca006253a * Build Handler: Don't reject for conn limits if class O,
under the assumption that they are already talking
      to most of the routers, so there's no reason to reject. This may drive them
      to their conn. limits, but it's hopefully a temporary solution to the
      tunnel build congestion. As the net grows this will have to be revisited.
2009-07-13 02:58:54 +00:00
zzz
7a752cc7a2 * Throttle: Increase default max tunnels to 3000,
to give us more capacity during congestion
2009-07-13 02:56:35 +00:00
zzz
de7dc2c1f7 * Tunnels: Change the default variance from 1 to 0.
Under the one-packet-enough theory, and the fact that most
      tunnels in a x+1 pool are of length x, variable lengths
      don't really help that much. Also, a default of 1 led
      to all sorts of problems with iMule/SAM, who was not
      setting the variance properties.
      This will affect exploratory tunnels for new users,
      and those that have never saved a change on configtunnels.jsp,
      and iMule users 1.4.5 and earlier.
2009-07-13 02:54:47 +00:00
z3d
35b5bf187e Those pesky critters keep messing with mah code! 2009-07-13 01:15:33 +00:00
z3d
efbc4c5184 Red line removals. 2009-07-13 00:59:36 +00:00
z3d
711c2b7dfd Add some tinsel to the css. 2009-07-12 21:25:55 +00:00
z3d
a4adb4709b Commencement of tidying up of css phase. 2009-07-12 20:08:05 +00:00
z3d
7121b5fa31 merge of 'c9f62429ff1da5dab2645a23c311297bb5060a5a'
and 'd3f05848c1bb55868499e9e7d65fbf878b731f1a'
2009-07-12 03:27:18 +00:00
zzz
c944648b99 * Add configui.jsp
* orange flash remove take 2
2009-07-12 03:21:20 +00:00
z3d
45cdd556c7 Remove extraneous "other". 2009-07-11 23:22:17 +00:00
zzz
429bd0a4e3 * netdb.jsp: Fix bad tag causing orange mouseovers
* Merge as -7
2009-07-11 22:38:39 +00:00
zzz
135f8c1be2 merge of '565f0421784f8f71177ebf0bd682750f98bce67b'
and 'e9067362adb090ff1e3d8ae327fb313ded00e9c6'
2009-07-11 22:32:29 +00:00
z3d
7b7a590e21 Version bump to 0.7.5-6. 2009-07-11 21:07:02 +00:00
z3d
95728ef29f More console tweakage. 2009-07-11 20:49:01 +00:00
z3d
021b44724e Cosmetic enhancements to the router console. 2009-07-11 20:41:21 +00:00
z3d
ba0efe64c7 Minor I2Ptunnels page tweakage.. 2009-07-11 20:11:16 +00:00
zzz
1a247d8d3a -6 2009-07-11 19:44:25 +00:00
zzz
21b03e8e8a fix comment 2009-07-11 19:43:58 +00:00
zzz
03790e3e4d Remove notes about editing readme*.html, since we're probably going to start including them in the updates 2009-07-11 19:21:24 +00:00
zzz
9af239aa65 merge of '5e3805e16ba810425b936134bb3ea92c08a8b0eb'
and 'f232d5bc50d8723d65c9fcb1092ebcb8333a83e4'
2009-07-11 19:16:04 +00:00
zzz
02fc700ac0 propagate from branch 'i2p.i2p.zzz.test3' (head 20e0d7777d70412d2787ea16c8eb1ddc5fcfceae)
to branch 'i2p.i2p' (head a3189032197fadc3ecba67c5568b8841e8a6105e)
2009-07-11 19:14:26 +00:00
zzz
1fb5238642 * I2PSnark:
- Bring back details links for Postman2 B64 torrents
2009-07-11 18:49:54 +00:00
zzz
461af7d0a2 Increase SSU conn limits a little more 2009-07-11 18:47:11 +00:00
zzz
cf3efc11ba * Profile Organizer:
- Allow NTCP-only peers in inbound tunnels
2009-07-11 18:04:08 +00:00
zzz
b6e24b5094 * I2PTunnel:
- Make reduce-on-idle the default for all the shared clients
        for new installs (15m)
2009-07-11 17:59:32 +00:00
zzz
0b590763f3 * Transports:
- Move from a single connection limit threshold (80%) to
        two (75% and 87%), and only start rejecting tunnels
        at the higher threshold, to increase build success
      - Move some limit methods from the transports to TransportImpl
      - Add limit methods with a threshold argument
2009-07-11 17:00:46 +00:00
z3d
3cc4ee7199 More enhancements to the console themes. 2009-07-11 15:30:44 +00:00
z3d
4828cd2f16 Increase <h4> bottom margin. 2009-07-11 14:31:42 +00:00
z3d
45da7e8704 More spit 'n polish for the I2PTunnels page. 2009-07-11 14:28:45 +00:00
z3d
e00b88ca32 Updates to the I2PTunnel themes, mostly. 2009-07-11 12:48:07 +00:00
z3d
e497680ca8 I2PTunnels updates to dark theme, start of enhancements to "service not found"
dialogs.
2009-07-11 03:35:39 +00:00
z3d
dbb9eefe70 Comment out link to zzz's domain addkey page. 2009-07-10 21:35:09 +00:00
z3d
7388fdf820 Let's add some flags to the various translations to the console homepage readme. 2009-07-10 21:17:53 +00:00
z3d
0c46d561ec Add some alt tags to the flags on the readme.html (English only for now). 2009-07-10 15:34:22 +00:00
z3d
4248ab936c Dark console theme tweaks. 2009-07-10 14:44:38 +00:00
zzz
e5139113b1 * Build Handler: Drop rather than reject requests when near
conn limits and the next hop is not connected, to reduce
      connection congestion
2009-07-10 13:41:29 +00:00
zzz
0f1a4ad4cd * Console: Force IE to the classic theme 2009-07-10 13:38:09 +00:00
z3d
00d99fb1a9 Enhancements to the dark blue I2P tunnel theme. 2009-07-09 20:43:59 +00:00
z3d
ee8dc4af2d Remove <centre> tags from sidepanel content to restore left justification to
classic theme, whilst retaining centering for new themes.
2009-07-09 19:14:02 +00:00
z3d
d7b4be1e74 Minor futzing with the dark console theme. 2009-07-09 18:57:58 +00:00
z3d
7ed509b76a Reorder panel slightly, bring I2P services to top. 2009-07-09 09:32:34 +00:00
z3d
c616f66e83 Modifications to readme.html to include country flags; also add link to
http://stats.i2p/i2p/addkey.html
2009-07-08 10:49:16 +00:00
z3d
e8bfac27aa Tweak button css to ensure visited links don't change color (IE-fix). 2009-07-08 10:10:03 +00:00
z3d
df3b3bfc8f Light theme update, bg textures for I2PTunnel config page. 2009-07-08 09:59:51 +00:00
z3d
ac358502ce Consolidate confignav, remove extraneous title and <hr>. 2009-07-08 09:46:32 +00:00
z3d
2b905d2ed5 Dark theme updates for I2Ptunnel page. 2009-07-08 09:33:23 +00:00
z3d
49c55ae12a Move reference to i2plogo to themes/console/images/i2plogo.png (sidepanel). 2009-07-07 17:37:00 +00:00
z3d
d280d7a389 Tweaks to classic theme css to hide navbar and logo, now they're residing
in the side panel; iframe size tweaks.
2009-07-07 15:17:31 +00:00
z3d
19ccdcd951 Tweak help.jsp layout some more. *tweak tweak* 2009-07-07 08:50:33 +00:00
z3d
cac9b2e1f1 Correct <h1> oversize that crept in, somewhow. 2009-07-07 08:48:48 +00:00
z3d
e0e42a0f87 Remove tabs, replace with spaces for history.txt. Should fix formatting issues. 2009-07-07 08:22:10 +00:00
z3d
1d845dab03 Layout tweak to help page, and clarification of volunteers request. 2009-07-07 08:20:56 +00:00
z3d
71b9bb67a6 Modify visited link color to be better legible in dark console theme. 2009-07-07 08:18:13 +00:00
z3d
06be251032 Bump to 0.7.5-5 2009-07-07 01:57:49 +00:00
z3d
454a6ab177 0.7.5-5 updates. 2009-07-07 01:55:58 +00:00
z3d
1e1c3cdff0 Tweaks to light router console css. 2009-07-07 01:25:37 +00:00
z3d
52de5e569c Tweaks to dark router console css. 2009-07-07 01:24:53 +00:00
z3d
2f97942286 *facepalm* Drop pkg-temp accidentally :/ 2009-07-07 01:12:17 +00:00
z3d
4b1eabf1fc merge of '8a3fab47a669f61548d9807e8e047b19248a23ab'
and 'a3189032197fadc3ecba67c5568b8841e8a6105e'
2009-07-07 00:04:03 +00:00
z3d
6c7f1cbf8a Tidy up help page a 'lil. 2009-07-06 22:41:07 +00:00
z3d
ffc582093b Light and dark themes added. 2009-07-06 16:51:28 +00:00
z3d
cc833f3ca4 Uhoh, "ah.,". Removed. 2009-07-06 16:18:42 +00:00
z3d
00d0aa7830 Fix some glaring typos on the help page. 2009-07-06 16:03:38 +00:00
z3d
54f649a4b4 Tweaks to help page. Replace apology for sparse docs with request for voluntary contributions. 2009-07-06 13:40:20 +00:00
z3d
1c2cd4dcb2 Overhaul console layout. Add <h1> header to most pages. Etc. 2009-07-06 13:29:35 +00:00
zzz
43d6851199 -4 2009-07-06 13:11:53 +00:00
zzz
9527684cf7 propagate from branch 'i2p.i2p.zzz.test3' (head d4461db52b7de97b89dafa6d6a2b18d9dc075b38)
to branch 'i2p.i2p' (head 5529edcb3dd730aa750302bb4267116c56c354da)
2009-07-06 13:09:05 +00:00
zzz
1965815d7d fix postman2 details link 2009-07-05 21:02:54 +00:00
zzz
cc2be105a6 * I2PTunnel:
- Add edit text
      - Fix broken favicon
2009-07-05 21:00:29 +00:00
zzz
e4c599b756 * I2PSnark:
- Change postman2 announce URL to use hostname rather than B64
      - Shorten torrent name to fit better on one line
2009-07-05 19:22:58 +00:00
zzz
a8a21ddb73 * Transport: Implement NTCP auto-transition from an
address to no address, so that inbound NTCP is disabled
      after SSU detects a firewall. When UPnP was apparently successful
      but the router is still firewalled (due to an additional
      software firewall or a bad UPnP indication, for example)
      the router will now remove the NTCP address.
2009-07-05 18:48:10 +00:00
942c31621b 2009-07-05 sponge
* Added X-I2P-DestB64 and X-I2P-DestB32 http headers
2009-07-05 05:06:06 +00:00
zzz
ca14002bd1 * Startup: Log clients.config problems 2009-07-04 16:35:36 +00:00
zzz
5eec098e2b * Reseed:
- Fix console status messages broken by global replace
      - Remove tino, add b.netdb.i2p2.de
2009-07-04 14:20:03 +00:00
z3d
37043195ba merge of '25ef664ae94fb608b457b601780f6774ede7b39a'
and 'c71ada3c23327bd4f17070d019a448c0289bae63'
2009-07-04 02:52:25 +00:00
z3d
ab8e2cf34d Router console updates. Opening shots. 2009-07-04 02:39:37 +00:00
z3d
882e08fc4f Start on the console update. 2009-07-04 01:56:53 +00:00
zzz
2e5caac8bf - Update to Android 1.5 SDK
- Fix RouterContext problem
2009-07-03 22:13:18 +00:00
zzz
714fe82d2f Dont send X-Accept-Encoding when not proxied 2009-07-02 19:09:36 +00:00
zzz
1724e5b499 Fix small textareas on Opera 2009-07-02 19:08:55 +00:00
zzz
a5fa6acf5d * SSUDemo: Move to the router/java/test directory 2009-07-01 17:42:55 +00:00
zzz
59105a9ad6 * HTTP Proxy: Limit proxy.i2p to /themes/ directory 2009-07-01 16:50:35 +00:00
zzz
abc23e9a49 * Move almost all uses of StringBuffer to StringBuilder,
for efficiency (thanks Arsene for the suggestion)
2009-07-01 16:00:43 +00:00
zzz
72071566e7 javadoc fix 2009-06-30 17:56:51 +00:00
zzz
055cd99dde -2 2009-06-30 13:14:31 +00:00
zzz
d2c52e5c94 merge of '44eff3cb8553cf29a7e4eb6c02f624648f91b124'
and 'f400e9b73f924edf556205f9f75b4e2c58e92998'
2009-06-30 13:11:11 +00:00
c7541f819a 2009-06-30 sponge
* General cleanup on streaming and ministreaming.
      This fixes some compile warnings, and prepares for a larger fix.
      There is no code-flow changes, just lint. One warning remains as I am
      unsure exactly how to solve the problem yet.
2009-06-30 04:44:13 +00:00
zzz
7972c0c862 - Fix another Mac class problem
- Change to RouterLaunch main so we get a wrapper.log
2009-06-29 17:42:13 +00:00
zzz
3fee5a3781 more cleanup, set dirs 2009-06-29 16:51:19 +00:00
zzz
db45e74fcc Cleanup after prop from i2p.i2p:
- Remove I2PFile, FileStreamFactory hacks
- Remove custom reseed stuff
2009-06-29 14:51:02 +00:00
zzz
206e45b9e8 propagate from branch 'i2p.i2p' (head 44eff3cb8553cf29a7e4eb6c02f624648f91b124)
to branch 'i2p.i2p.zzz.android' (head 66bd014debdd51906e18555d12906ee20c016ef6)
2009-06-29 14:04:49 +00:00
zzz
a9345953f3 remove complication as update source 2009-06-29 13:29:35 +00:00
zzz
eb324d7652 remove trailing newline (again) 2009-06-29 04:50:16 +00:00
zzz
85adfc40fb build fixup, history for prop from test branch 2009-06-29 04:20:21 +00:00
zzz
f1bb8910cb propagate from branch 'i2p.i2p.zzz.test' (head 104b5c1cea8683af30650a55d5b63141e988bb4c)
to branch 'i2p.i2p' (head 8d35e0858095b3eed3fb6d8f4ecee23cbdadfbb1)
2009-06-29 04:13:38 +00:00
zzz
8ca794dc57 history for prop from test2 branch 2009-06-29 03:21:12 +00:00
zzz
fe3cd65c62 propagate from branch 'i2p.i2p.zzz.test2' (head 91f7c17a08ea873ff7bb40835a43ba857ee7fe46)
to branch 'i2p.i2p' (head 3d86e500d1550fccc2ac29371555a1a5af2c5c2b)
2009-06-29 03:18:19 +00:00
9e1181900b * Update versions, package release
* Remove the last reference to my eepsite as a "news.xml" source,
  and likewise stop my public key from being included
  among valid release signing keys.
2009-06-29 01:07:51 +00:00
zzz
256c5356fb Add router log location to logs.jsp 2009-06-28 17:40:17 +00:00
zzz
0bc6fd246f * HTTP Proxy:
- Take CSS out of the error pages; use internal server
        for CSS, image, and favicon
2009-06-28 12:55:10 +00:00
zzz
77ce768cb4 * Console: Move favicon.ico and i2plogo.png out of the .war
so that the HTTP proxy can use them directly;
      proxy error pages must be updated next
2009-06-28 12:50:33 +00:00
zzz
b23256dc4e * HTTP Proxy:
- Add simple web server for "proxy.i2p" to serve
        images and CSS for the error pages
z
2009-06-27 17:52:08 +00:00
zzz
5906fb7139 * Console CSS: Move css file, make a classic theme to prep for CSS changes 2009-06-27 01:11:53 +00:00
zzz
0606050231 * NetDb stats: Normalize tunnel build stats for increased anonymity,
effective in 0.7.6
2009-06-27 01:08:40 +00:00
56a700e82d 2009-06-25 sponge
* Summary frame layout change so it makes sense.
2009-06-25 00:16:19 +00:00
zzz
47cd9beefa Change table headings to th tags to prep for css changes 2009-06-24 18:47:17 +00:00
zzz
b93aada213 -4 2009-06-23 15:59:30 +00:00
zzz
0ce6872693 propagate from branch 'i2p.i2p.zzz.test2' (head 42f7b1b8a91a44aed4bcc09170bbcdc52be5ff74)
to branch 'i2p.i2p' (head 84f8e11c39666abc7fac5c6cd14ab1f9532d721c)
2009-06-23 15:52:07 +00:00
zzz
1c9d84771e configupdate.jsp cleanup 2009-06-23 01:35:55 +00:00
zzz
6699366597 * Browser Launch: Add sensible-browser, x-www-browser, defaultbrowser, and
www-browser in an attempt to launch the user's preferred browser
2009-06-22 19:56:03 +00:00
zzz
5d0d7aca58 minor cleanup 2009-06-22 17:01:56 +00:00
zzz
29d0c19b0e Update: increase max retries 2009-06-22 14:50:59 +00:00
zzz
917e1023e4 Catch AIOOBE reported by tuna http://zzz.i2p/topics/332 2009-06-22 14:16:52 +00:00
zzz
1fd5a20373 Include console.css in new installs! 2009-06-22 14:07:31 +00:00
zzz
abc83362e7 Try again to prevent two EventPumpers 2009-06-22 12:57:38 +00:00
zzz
9792336b33 -3 2009-06-21 00:23:14 +00:00
zzz
4a6d0e4ba2 Fix wrapper.config installs on windows 2009-06-21 00:06:54 +00:00
zzz
bc38ca4f91 Pluck of revision 45a25185236e38606e761060427ee8fa60144a8c from branch i2p.i2p.zzz.test
---------------------------------------------------------------------------------------
    * netdb.jsp: Add country chart at bottom, clean up version chart
2009-06-21 00:03:59 +00:00
zzz
306b3017e4 Pluck of revision 493986d03c43bac019996ea0b10b8a6a40e92a32 from branch i2p.i2p.zzz.test
---------------------------------------------------------------------------------------
    * Browser Launch: Wait until the routerconsole is up before launching the browser
2009-06-21 00:01:14 +00:00
zzz
ce92b6cb66 Pluck of revision 0dc8693b99a852b0183ffc6cd06804878f37ec89 from branch i2p.i2p.zzz.test
---------------------------------------------------------------------------------------
Treat 5.0.0.0/8 (Hamachi) as local
2009-06-21 00:01:02 +00:00
zzz
8e2df567d8 Pluck of revision 546257906e9b26c3a35e38967ebcaa54098d969f from branch i2p.i2p.zzz.test
---------------------------------------------------------------------------------------
    * ReseedHandler:
      - check for upper case HREF to be compatible with apache indexes
2009-06-21 00:00:54 +00:00
zzz
4622f369c3 Pluck of revision aad5b15235be51189b696e6cabb7cc04e1b5e89f from branch i2p.i2p.zzz.test
---------------------------------------------------------------------------------------
post-0.7.4 cleanup
2009-06-21 00:00:39 +00:00
zzz
1eb4473e9d * News Fetcher:
- Change default news URL, use it instead of the old one even if
        the old one is saved in the configuration, to assist in the transition
2009-06-19 00:04:19 +00:00
22c2829714 * desktopgui:
- Added client and server tunnel view
        (saving does not work yet)
2009-06-17 21:54:29 +00:00
zzz
a87f8e8687 propagate from branch 'i2p.i2p' (head 6fddab77462a92759305edee8fe5a944d6865375)
to branch 'i2p.i2p.zzz.test' (head 45a25185236e38606e761060427ee8fa60144a8c)
2009-06-17 12:40:33 +00:00
zzz
c89fb9ad73 * PeerSelector:
- Limit exploratory tunnels to connected peers when over
        half the connection limit (was 80%)
      - Have the high capacity tier fall back to a new connected tier
        before moving on to the not failing tier
        so that tunnel build success doesn't collapse
    * PeerTestJob:
      - Limit to connected peers
2009-06-17 12:37:03 +00:00
zzz
978de73351 * netdb.jsp: Add country chart at bottom, clean up version chart 2009-06-16 18:01:43 +00:00
zzz
a1ec01ec2d * Browser Launch: Wait until the routerconsole is up before launching the browser 2009-06-16 17:38:23 +00:00
zzz
7aa9949332 * Reseeding / NetDb:
- Move reseeding from the routerconsole app to
        the router, so that we can bootstrap an embedded router lacking a routerconsole
        (iMule or android for example), without additional modifications.
        This allows better integration between the reseeding function
        and the netDb.
      - Call reseed from PersistentDataStore, not from the
        routerconsole init, and start seeding as soon as the netdb has read
        the netDb/ directory, not when the console starts.
      - Wake up the netdb reader as soon as reseeding is done,
        rather than waiting up to 60s.
      - Don't display the reseed button on the console until the
        netdb initialization is done.
    * NetDb:
      - Fix an NPE on early shutdown
    * RouterConsoleRunner:
      - Catch a class not found error better
2009-06-15 21:58:28 +00:00
zzz
71f3cd648f Fix wrapper.config issues on windows 2009-06-15 21:28:36 +00:00
zzz
7f379027ca * i2psnark build:
- Put the duplicate classes back in the war, because
        the jar is not in the wrapper.config classpath in existing
        installs. We could take them out of the jar, but then
        they won't be available for standalone snark and future
        updates via snark.
      - Delete the dist/ dir in distclean
2009-06-15 21:27:38 +00:00
zzz
279f3e4934 dont make the new dir unless we are going to move there 2009-06-15 21:20:52 +00:00
zzz
bdd75793bc cleanup 2009-06-15 15:35:25 +00:00
zzz
58660bed3c fix webapps path 2009-06-15 15:32:27 +00:00
zzz
2ca0ae7529 * i2psnark build:
- Move FetchAndAdd to static inner class
      - Remove duplicate classes from i2psnark.war (120KB);
        fixes sporadic FetchAndAdd IllegalAccessError
      - Fix standalone build to include i2psnark.jar since classes
        aren't in the .war anymore
      - Have standalone jetty use I2PAppContext temp directory
      - Replace launch-i2psnark.jar with launch-i2psnark script,
        since RunStandalone is in i2p.jar
      - Clean up jetty-i2psnark.xml, turn off jetty logging
      - Remove standalone build from the pkg target in the main build.xml
2009-06-15 15:22:51 +00:00
zzz
3ee09df6ce Treat 5.0.0.0/8 (Hamachi) as local 2009-06-15 02:41:28 +00:00
zzz
9b866b8e06 * I2PTunnel:
- fix i2ptunnel.config save location
2009-06-14 14:49:37 +00:00
zzz
4d4954c5b8 * ReseedHandler:
- check for upper case HREF to be compatible with apache indexes
2009-06-14 14:19:05 +00:00
zzz
17751ffd57 * news.xml:
- move from base to router dir
2009-06-14 13:00:23 +00:00
zzz
e8773f6a98 fix NPE for non-router invocations 2009-06-14 02:35:41 +00:00
zzz
112ddc7156 * jbigi, cpuid:
- Extract files from jar to temp dir, load from that dir, then
        copy to the base dir if we have permissions (and failing silently
        if we don't), so we have optimized libs and no complaints
        when we have a read-only base dir.
2009-06-14 01:49:27 +00:00
zzz
e5ec72b09b * ConsoleRunner:
- Fix webapps file path
    * SusiDNS:
      - Fix addressbook file path
    * Systray:
      - Fix NPE if no config file
      - Fix config file path
    * WorkingDir:
      - Modify clients.config so jetty can find the jetty.xml file
      - Rip out all the existing-installation migration code
      - Rip out migration code now done by izpack parsable
      - Fix copy of empty directories
2009-06-13 23:47:08 +00:00
zzz
24daf00616 * i2prouter:
- Don't cd to script location, no longer required
    * RouterLaunch:
      - If no wrapper, put wrapper.log in system temp dir
        unless specified with -Dwrapper.logfile=/path/to/wrapper.log
        or it already exists in CWD (for backward compatibility)
      - Append rather than replace wrapper.log
      - Pass wrapper log location to router as a property, so that logs.jsp can find it
    * logs.jsp:
      - Get wrapper log location from a property too
    * runplain.sh:
      - Add path substitution to runplain.sh on install
      - Pass I2P base dir to the router as a property
    * wrapper.config:
      - Put wrapper.log in system temp dir for new installs
      - Pass I2P base dir to the router as a property
    * WorkingDir:
      - Don't migrate an existing install by default
      - Never migrate the data (too hard)
2009-06-13 21:04:27 +00:00
zzz
718375419e propagate from branch 'i2p.i2p.zzz.dir' (head a871493662f67163f823576ba26e98322d3f896f)
to branch 'i2p.i2p.zzz.test' (head 1168ac4132d737382bf24ba8458a53a9db002ffa)
2009-06-13 14:20:17 +00:00
zzz
a16bcf8e51 pid dir defaults to system temp dir 2009-06-13 14:16:12 +00:00
zzz
5c28125350 add install path to eepget 2009-06-13 13:46:11 +00:00
zzz
937de87dbf post-0.7.4 cleanup 2009-06-13 13:34:37 +00:00
zzz
cadbe2c2c0 back to updaterWithJettyFixes 2009-06-13 13:24:03 +00:00
zzz
7c646f8693 -1 2009-06-12 13:05:35 +00:00
zzz
1479ef9a6a propagate from branch 'i2p.i2p.zzz.test' (head 1d4b529f1b52692195f1547338e186819dbd0cab)
to branch 'i2p.i2p' (head 1b8226cb70a7d72f0f674908d8213f8d29eb64eb)
2009-06-12 12:58:33 +00:00
zzz
daf078d4d7 * Installer:
- Add install and temp path substitution to wrapper.config and
        i2prouter on install
2009-06-12 12:23:25 +00:00
c0fd1dbcbc * Update versions, package release 2009-06-12 06:52:09 +00:00
zzz
821dcddda0 * Installer:
- Change the wrapper.config classpath to one line: lib/*.jar
        This means we lose control of classpath load order, so move the windows installer
        jars copy.jar, delete.jar, and exec.jar to a new installer/ directory so
        these jars won't be in the classpath or potentially conflict, since
        copy.jar and delete.jar include FileUtil.class, and we don't want to have
        to remember to add them to the updater if we ever change FileUtil.class.
        Delete the installer/ directory in postinstall.sh since it is windows-only.
2009-06-11 23:38:15 +00:00
zzz
d9cb4e2620 * Console:
- Move the console css from default.css in the .war to docs/themes/console/console.css,
        and support console themes in the main console with routerconsole.theme=foo
2009-06-11 18:05:05 +00:00
zzz
290af4c187 fix typo 2009-06-11 17:51:07 +00:00
zzz
11ad98e7bd Remove unused NoticeHelper 2009-06-11 16:24:44 +00:00
zzz
ce50a9ca44 Upgrade to izpack 4.3.0 and add a short script to fix Vista install problems.
(previous izpack was 3.7.2 from 2005-04-22)

izpack 4.3.0 from :
http://dist.codehaus.org/izpack/releases/4.3.0/IzPack-install-4.3.0.jar
SHA1 f06da6b26ac2c68fed64ab38980352989b8d8841
(no signatures or sha1sums found on website, and the jar is unsigned)
License: Apache 2.0

upack izpack:
java -jar IzPack-install-4.3.0.jar
or
java -jar IzPack-install-4.3.0.jar -console

get the standalone-compiler.jar from the installation lib/ directory:
SHA1 6d2b4a5657bfb864a333b1c4b1c0f8223aa57d80
(no signatures or sha1sums found on website, and the jar is unsigned)

This fixes the bug with the install windows centered in all the
workspaces, not the current workspace. And who knows what other
bugs in the last 4 years.

To fix Vista (and presumably Windows 7) permissiom problems,
add a run-privileged flag for those, and run the new fixperms.bat
which calls icacls to add the privileges to the install directory.

Add support for 6 more language packs found in the new release.
Change from ISO3 codes to native language names.

Disable creation of the i2p.tar.bz2 file in build.xml
(distributed as i2pheadless-0.7.x.tar.bz2), as izpack 4.3.0 now
supports headless installation with java -jar i2pinstall.exe -console.
Update INSTALL.txt and INSTALL-headless.txt accordingly.
2009-06-11 13:31:27 +00:00
zzz
b7d581b412 Dont try to dump threads unless there is a wrapper and we arent on windows 2009-06-11 13:22:56 +00:00
zzz
a08dd4aefa * NTCP: Fix startup race NPE 2009-06-09 03:06:18 +00:00
be52b5930c 2009-06-08 sponge
* Last commit for this cycle. All debugging except for WARN removed.
      I can use the visit command to debug now anyway.
2009-06-08 14:42:44 +00:00
0382120363 2009-06-08 sponge
* Removed BOB debugging as-per zzz
2009-06-08 12:24:20 +00:00
7151590abc 2009-06-08 sponge
* Fixed NPE and some other goofups in BOB.
    * BOB bump version
2009-06-08 08:34:54 +00:00
zzz
51faed2c4d -15 2009-06-07 17:40:18 +00:00
zzz
c1a8c8a3fd propagate from branch 'i2p.i2p.zzz.test' (head ff346bd41de699648bb66488ec9c0f1f4b5300b1)
to branch 'i2p.i2p' (head 2914d3356f892de25a745f061129704f8b943fc5)
2009-06-07 17:35:02 +00:00
zzz
4975d30714 * ExploratoryPeerSelector: Limit to connected peers when near connection limit 2009-06-07 17:34:27 +00:00
zzz
45d9f9d07d -14 2009-06-07 14:47:04 +00:00
zzz
9b0e553ece propagate from branch 'i2p.i2p.zzz.test' (head f92f40cceea44a063e48db07d10fd8cf7df3e348)
to branch 'i2p.i2p' (head c497aec52c49d2e03430b88d8d73148ee73e59a5)
2009-06-07 14:45:33 +00:00
zzz
dcaa0594f1 Add updaterWithJettyFixesAndGeoIP, use it for pkg for one release 2009-06-07 14:13:01 +00:00
zzz
1202a303b7 Fix UPnP deprecation 2009-06-06 18:40:49 +00:00
ed8fd0bde2 Fixed bug causing congestion-avoidance code to not get executed. 2009-06-06 17:42:33 +00:00
zzz
834bfde45c * Timestamper: Use locale country if geoip unavailable 2009-06-06 16:34:32 +00:00
zzz
fd4e57aafc * Console:
- More conversions to getBaseDir()
    * Router:
      - Improve installUpdates() error handling
    * BrowserLauncher:
      - Use temp dir
2009-06-06 15:36:06 +00:00
zzz
4c4b3b776c Try to alleviate connection-limit network collapse:
* Transport:
      - Lower min NTCP idle time to 3m (was 5m)
      - Increase SSU conn limit by 33%
    * Watchdog:
      - Defang him again
2009-06-06 15:14:05 +00:00
eee160503b 2009-06-06 sponge
* Added BOB's liscense to liscenses
    * Janitorial javadoc fixes *sigh*
    * bump to -13
2009-06-06 06:27:29 +00:00
bef55b25ea Javadocs cleanup *sigh* 2009-06-06 06:18:50 +00:00
623f972e8b Branching 2009-06-06 05:54:55 +00:00
zzz
7e651d53a0 netdb.jsp cleanup 2009-06-05 23:43:10 +00:00
zzz
5d212d3cea propagate from branch 'i2p.i2p' (head 06964a7526a814c5adc7baf4d273f57fe832afc2)
to branch 'i2p.i2p.zzz.test' (head 177659fa31e4f1807874564c921152601bbf420f)
2009-06-05 23:17:48 +00:00
zzz
3e31de1602 tunnels.jsp cleanup 2009-06-05 23:17:15 +00:00
245b7168ab 2009-06-05 sponge
* Merge and bump to -12
2009-06-05 20:32:49 +00:00
4a9b567ebd merge of 'ba538963b768e5137d3807a155360420640806bd'
and 'e10df19521ce47ba4fa825a910fdd0aef26892e2'
2009-06-05 19:59:07 +00:00
2f6ae99452 2009-06-05 sponge
* BOB now cleans up tunnels, although they can take up to 5 minutes to
      disapear. This is due to the fact that the streaming lib doesn't
      actually remove the connections properly and kill them off when the
      manager is destroyed. I'm not certain if this is a bug, or a feature,
      but it sure is annoying, and you have to wait for the connections to
      time out. What should happen is the streaming lib should cause an IO
      error to the pending read or write.
2009-06-05 19:46:26 +00:00
zzz
1538ba0cc3 16x11 transparent flags for ch and np, thanks anonim! 2009-06-05 15:46:02 +00:00
zzz
06a3417124 Add some licenses for launch4j includes, clean up build.xml some more 2009-06-05 00:59:44 +00:00
zzz
524a25eb2c Big directory rework.
Eliminate all uses of the current working directory, and
set up multiple directories specified by absolute paths for various uses.

Add a WorkingDir class to create a user config directory and
migrate files to it for new installs.
The directory will be $HOME/.i2p on linux and %APPDIR%\I2P on Windows,
or as specified in the system property -Di2p.dir.config=/path/to/i2pdir
All files except for the base install and temp files will be
in the config directory by default.
Temp files will be in a i2p-xxxxx subdirectory of the system temp directory
specified by the system property java.io.tmpdir.

Convert all file opens in the code to be relative to a specific directory,
as specified in the context. Code and applications should never open
files relative to the current working directory (e.g. new File("foo")).
All files should be accessed in the appropriate context directory,
e.g. new File(_context.getAppDir(), "foo").

The router.config file location may be specified as a system property on the
java command line with -Drouter.configLocation=/path/to/router.config
All directories may be specified as properties in the router.config file.

The migration will copy all files from an existing installation,
except i2psnark/, with the system property -Di2p.dir.migrate=true.
Otherwise it will just set up a new directory with a minimal configuration.

The migration will also create a modified wrapper.config and (on linux only)
a modified i2prouter script, and place them in the config directory.

There are no changes to the installer or the default i2prouter, i2prouter.bat,
i2prouter, wrapper.config, runplain.sh, windows service installer/uninstaller,
etc. in this checkin.


    *  Directories. These are all set at instantiation and will not be changed by
    *  subsequent property changes.
    *  All properties, if set, should be absolute paths.
    *
    *  Name	Property 	Method		Files
    *  -----	-------- 	-----		-----
    *  Base	i2p.dir.base	getBaseDir()	lib/, webapps/, docs/, geoip/, licenses/, ...
    *  Temp	i2p.dir.temp	getTempDir()	Temporary files
    *  Config	i2p.dir.config	getConfigDir()	*.config, hosts.txt, addressbook/, ...
    *
    *  (the following all default to the same as Config)
    *
    *  Router	i2p.dir.router	getRouterDir()	netDb/, peerProfiles/, router.*, keyBackup/, ...
    *  Log	i2p.dir.log	getLogDir()	wrapper.log*, logs/
    *  PID	i2p.dir.pid	getPIDDir()	wrapper *.pid files, router.ping
    *  App	i2p.dir.app	getAppDir()	eepsite/, ...
    *
    *  Note that we can't control where the wrapper actually puts its files.

All these will be set appropriately in a Router Context.
In an I2P App Context, all except Temp will be the current working directory.

Lightly tested so far, needs much more testing.
2009-06-04 19:14:40 +00:00
zzz
8ff2724213 Update geoip files from the June 3 release 2009-06-04 17:40:25 +00:00
zzz
a9a2d2debb -11 2009-06-04 16:37:29 +00:00
zzz
0070abc04c propagate from branch 'i2p.i2p.zzz.test' (head be1a2452acf68a8a0137f98f5aeb797055321d6e)
to branch 'i2p.i2p' (head bd6b02d1ae8a99afcea7fdffedf699a6e5c85fbf)
2009-06-04 16:28:32 +00:00
zzz
936a338e0e watchdog logging tweaks, allow disable by property 2009-06-04 16:23:51 +00:00
zzz
6c349d0ec4 Add standby indication to i2ptunnel page 2009-06-04 16:06:39 +00:00
zzz
7e1e3c3c32 * I2PTunnel:
- Fix bug where delayed-open and close-on-idle tunnels would
        use a different tunnel pool instead of building their own
2009-06-04 15:14:41 +00:00
zzz
ce23d76c72 If we dont know any good floodfills, try to connect to one 2009-06-04 14:42:27 +00:00
zzz
cb488ebf7b merge of 'cb50ec528ada3d7afd3bf8353d474599872fe931'
and 'd64f30fdfc808f4fa609db468a497e8fc005f116'
2009-06-03 19:07:36 +00:00
zzz
7931451a49 * Reseed: Limit to 200 per URL, shuffle selection, add some logging 2009-06-03 19:05:55 +00:00
zzz
59449cf513 change startup no-ff errror to warn 2009-06-03 15:32:08 +00:00
zzz
39e5ff7eaa add checklist step to look for untrusted revs 2009-06-02 21:33:15 +00:00
zzz
b430b02021 make default bw 96/40 2009-06-01 23:36:11 +00:00
zzz
0bc67f5a89 Rename install*txt files 2009-06-01 20:03:00 +00:00
zzz
56dc96de1e Report average tx and rx rates, effective in next release 2009-06-01 19:55:36 +00:00
zzz
3ccbf37b41 hide some things if no wrapper 2009-06-01 19:52:55 +00:00
zzz
7725b9e8a1 -10 2009-05-30 16:34:58 +00:00
zzz
f511c9bc90 propagate from branch 'i2p.i2p.zzz.test' (head 177f3f7dbb937e60486cb90da7bbcdf9987ffced)
to branch 'i2p.i2p' (head d2424406b9f3877644a1334df71313b6cba018e4)
2009-05-30 16:28:51 +00:00
zzz
56b768fe19 cleanup 2009-05-30 16:15:17 +00:00
zzz
f8901e94a9 cleanup 2009-05-30 15:51:55 +00:00
zzz
ec5cc7e4d3 cleanup 2009-05-30 15:48:56 +00:00
zzz
2413bcd99a configadvanced cleanup, clarification 2009-05-30 15:48:16 +00:00
zzz
1838ad4ae7 * UPnP:
- Retry port forward if it fails
      - Make peers.jsp display faster
      - Lengthen POST timeout
      - More comments
2009-05-30 15:47:20 +00:00
26c4f983d7 * added big fat start/stop lock into BOB
* added zap command to shut down BOB... now we need a way to start it
      after it stops. :-)
2009-05-29 21:14:08 +00:00
zzz
22609bbfdb * SessionKeyManager:
- More stubs for per-destination managers.
        No functional changes yet.
2009-05-29 13:57:50 +00:00
zzz
0a8cbcbfb6 * LoadTestManager: Delete, unused
* SendGarlicMessageJob: Delete, unused
    * config.jsp: Comment out unused burst config code
2009-05-29 12:08:36 +00:00
zzz
7f33051fe1 Add Serbia 2009-05-29 12:06:53 +00:00
zzz
e65c2e279b * Session Keys:
- Don't instantiate unused SessionKeyPersistenceHelper
      - Use TransientSessionKeyManager instead of PersistentSessionKeyManager
      - Add generics to TransientSessionKeyManager to help understand it
      - Change initial session map size to 64 (was 1024)
      - Prepare for per-destination SessionKeyManagers in ElGamalAESEngine
2009-05-29 10:00:06 +00:00
zzz
b43338bd63 * Transports:
- Adjust bids when near conn capacity
      - peers.jsp HTML fixes
2009-05-28 16:19:55 +00:00
zzz
65ae9138ef * Console:
- config.jsp now cause graceful restart
    * UPnP:
      - Tweak to help startup problems
   * UDP:
      - Only save IP when it changes
2009-05-28 13:49:57 +00:00
zzz
665b691711 UPnP: Prevent NPE after ParserException 2009-05-28 03:35:54 +00:00
zzz
87953c4b93 * Peer Selector: Make strict order opaque to hash value 2009-05-27 16:59:38 +00:00
zzz
be480d577c more peers.jsp and profiles.jsp cleanup 2009-05-27 16:27:57 +00:00
zzz
32566a43bd remove some unused UDP stats and test code 2009-05-27 15:47:49 +00:00
fd598dea5b * Increase sendProcessingTime some more, add a property to configure.
Configure with 'router.defaultProcessingTimeThrottle'.
2009-05-27 13:26:51 +00:00
8fef5d9a06 * Increased sendProcessingTime limits and added testSuccessTime
to avoid unwanted throttling
2009-05-27 09:01:14 +00:00
zzz
2f1d6e3f90 * Console:
- Use CSS for form messages
      - Goodbye nonce spoof message
      - tunnels.jsp improvements
2009-05-26 20:04:20 +00:00
53f62bd8dd * Throttling extension by looking at sendProcessingTime 2009-05-26 17:24:31 +00:00
zzz
e6c87c54be -7 2009-05-26 15:05:39 +00:00
zzz
ee3edc9661 propagate from branch 'i2p.i2p.zzz.test' (head dc817d70812b80e35a7c37eaa881e4b866435838)
to branch 'i2p.i2p' (head 5551e9b0487e14e901cd1081ce3e1ffd33c4a354)
2009-05-26 15:02:52 +00:00
zzz
32dddac75b * Streaming:
- Fix infinite loop through the SYN queue caused by race,
        resulting in high CPU, OOMs, etc.
2009-05-26 14:50:16 +00:00
zzz
906482823c Flags fixup 2009-05-26 14:48:58 +00:00
zzz
91c389777a clean up configlogging.jsp 2009-05-26 01:04:34 +00:00
zzz
042a08b90e * NetDb:
- Don't send our own hash in the don't-include list when exploring
      - Remove any pending write when removing a RouterInfo
      - Cleanup to use routerHash()
2009-05-25 16:34:26 +00:00
zzz
7f4c23a038 -6 2009-05-25 03:49:36 +00:00
zzz
e7b0691116 propagate from branch 'i2p.i2p.zzz.test' (head ea09c1bd1791674541854e77592153db6678aabb)
to branch 'i2p.i2p' (head 7ea5131c7a02f28ac2d3e23a8bf22558effb30ee)
2009-05-25 03:45:09 +00:00
zzz
235058eab1 * NTCP:
- Increasse routerinfo send frequency to every 90m (was 9h)
      - Don't send 3 floodfill infos at startup or with routerinfo
2009-05-25 03:34:58 +00:00
zzz
85963a5c72 more fast peers when more local dests 2009-05-25 03:22:01 +00:00
zzz
c639525c1d * Timestamper:
- Use GeoIP to query a closer ntp source if available
      - Lengthen query time if well-synced
      - Cleanup
2009-05-24 20:50:38 +00:00
zzz
de18ebbb73 save our own geoip location in the config 2009-05-24 18:30:47 +00:00
zzz
47e32c82fc fix geoip scan of all routerinfos at startup 2009-05-24 17:03:50 +00:00
71b708b0f2 -1
-5
merge of '8dc3dbded4d489ddca319052bf3cdb0c4d5a13cc'
     and 'afcd808741bf31d75eee2639e19d5e8946b62756'
2009-05-24 16:20:28 +00:00
ab9fee260f -5
SAMv1 and SAMv3 : logging some exception at INFO level
2009-05-24 16:12:39 +00:00
e86e42818a SAMv1 and SAMv3 : logging some exception at INFO level 2009-05-24 16:04:57 +00:00
zzz
067e76c1b0 -4 2009-05-24 14:40:27 +00:00
zzz
13b3bb4490 propagate from branch 'i2p.i2p.zzz.test' (head 4f0b8b8bb59f1a8e2181123c16c4099ea223e527)
to branch 'i2p.i2p' (head b977f0e1e1ca57e78d599943dcbf492e474c631a)
2009-05-24 14:37:27 +00:00
zzz
e82898c988 * Console - add readme_zh.html:
- Submitter (walking) reports encoding as GB2312, and tested on windows
        with ff, IE6, chrome and opera. UTF-8 doesn't work. Still don't know why.
2009-05-24 14:30:55 +00:00
zzz
f4fdbceb3b * SSU: Don't offer to introduce when near connection limit 2009-05-24 00:29:18 +00:00
zzz
c75ff538a3 a little peers.jsp cleanup 2009-05-23 20:23:28 +00:00
zzz
7e71ead3e9 * Connection limits / throttle:
- Better limits when no inbound TCP
        (limit inbound and outbound separately)
    * GeoIP:
      - Check netDb SSU IP too
      - Check whole netDb at startup
2009-05-23 19:43:02 +00:00
29489ad198 Error in the geoip html. 2009-05-23 17:24:44 +00:00
eac45256aa * Router netDB:
- Added flags to the netDB page
2009-05-23 16:40:18 +00:00
zzz
7feb97e415 more info than just nuh uh 2009-05-23 14:37:25 +00:00
zzz
695752629d Move upnp logging from wrapper log to router log 2009-05-23 14:09:37 +00:00
zzz
c3c20ceca4 fix comments 2009-05-22 15:17:47 +00:00
zzz
aa04820fd1 move icons/ to docs/ 2009-05-22 13:23:52 +00:00
3208b7289e * desktopgui:
- Updating works in general config
      - Switched to Swingworker threads for improved responsiveness
      - version increase to 0.1.3
2009-05-21 22:32:34 +00:00
zzz
b4336fdec7 -3 w/ watchdog changes 2009-05-21 15:44:05 +00:00
zzz
e0652a4607 propagate from branch 'i2p.i2p.zzz.test' (head 326752c8c7ce00bc6787fe25e315448ce7124aff)
to branch 'i2p.i2p' (head b73ed9af5ee4f058a2b84f96de92f7cdc7ee0196)
2009-05-21 15:40:50 +00:00
zzz
4ab46b1de8 * Watchdog:
- Log memory stats
      - Dump threads on linux
      - Restart after 20 minutes (give the dog his teeth back)
2009-05-21 15:40:33 +00:00
zzz
d7122cdad7 -2 2009-05-21 13:43:23 +00:00
zzz
9c3eac58f1 propagate from branch 'i2p.i2p.zzz.test' (head 97efbce521018c26030e229181a53adce5774ab6)
to branch 'i2p.i2p' (head e9c81b8ce06374554965eacae3ae64df995b26df)
2009-05-21 13:25:04 +00:00
zzz
79954cec68 increase eepsite hops to 3+0 for new installs 2009-05-21 13:19:34 +00:00
zzz
d927f8bcb0 message tweaks if no wrapperr 2009-05-21 13:12:47 +00:00
zzz
4426cc359c * ExpireRoutersJob:
- Rewrite, not enabled yet
    * TunnelManager:
      - Remove now-unused isInUse()
2009-05-21 00:34:10 +00:00
zzz
b1465b7dff * Console:
- Add a little color to confignav
      - Remove 'no skew' indication
2009-05-20 22:50:14 +00:00
zzz
438ea1b269 fix db writes to disk broken in last checkin 2009-05-20 22:35:56 +00:00
f10bfda115 * General configuration enabled by default
* General configuration speed tab works completely
2009-05-20 19:58:55 +00:00
zzz
b7e2d3a10b add some comments 2009-05-20 18:12:17 +00:00
zzz
846c5fcfc3 * Console:
- Use flags for shitlist and peers.jsp too
      - Tweak tunnels.jsp to show class letters
      - Hide in-progress details on tunnels.jsp
2009-05-20 15:49:39 +00:00
zzz
31cd726b7b * UPnP:
- Fix up port handling, add some logging on bind fails
      - Force IPv4 only for binds
2009-05-20 15:01:43 +00:00
zzz
3ba43a77f4 Add geoip support and flag icons 2009-05-19 18:07:19 +00:00
zzz
cb5390b2fb propagate from branch 'i2p.i2p' (head 31ab45aaed880aa1d8295541b813adb312582f17)
to branch 'i2p.i2p.zzz.test' (head 8f1820175b7df8fc1f880c4fe1104f1b0e633483)
2009-05-18 18:22:24 +00:00
zzz
fae7262d31 * DataStore:
- Adjust interface to have persistent and non-persistent methods,
        to prepare for partial storage in RAM
    * PersistentDataStore:
      - Cleanup, simplify, and concurrentify
      - Tweak stats
      - Remove write limit
      - Flush to disk on shutdown
      - Don't write out what we just read in
2009-05-18 18:21:56 +00:00
zzz
9b6abc1e19 add all the languages izpack has to the installer 2009-05-17 15:45:14 +00:00
zzz
631cd37f8b -1 2009-05-17 12:35:45 +00:00
zzz
b59a38ffad propagate from branch 'i2p.i2p.zzz.upnp' (head 348acc252da725bc621791ef811a43943e889833)
to branch 'i2p.i2p' (head 264d0119a37e276dce2996f360f9c8e065b30008)
2009-05-17 12:28:27 +00:00
zzz
9a6a993a81 history for prop 2009-05-17 12:23:51 +00:00
zzz
9234a94da9 propagate from branch 'i2p.i2p.zzz.test' (head f402c08d0b2796653b559711cb1ea8c3c0204372)
to branch 'i2p.i2p' (head 4d0babb75e3c5237b10ff49f57599c53c581bb83)
2009-05-17 12:20:34 +00:00
zzz
aa2f9e34c0 - Rework UDP peers.jsp table a little
- Don't let UDP bid on messages that are too long
- Clean up the max fragments code in UDP
2009-05-17 11:52:49 +00:00
87eafa30d0 * Update versions, package release 2009-05-16 19:48:12 +00:00
zzz
287eff50b7 dont bundle unneeded ant.jar (900KB) 2009-05-16 04:06:01 +00:00
zzz
8514e7962d stop build on jsp compile errors 2009-05-16 00:52:21 +00:00
zzz
9bed2bde3c disable button disabling 2009-05-15 20:00:56 +00:00
zzz
9e003a9f93 bye nibble 2009-05-14 20:10:26 +00:00
zzz
86f02691a8 propagate from branch 'i2p.i2p' (head 9044c668fe6fdfcca38a20b557b870c993852c52)
to branch 'i2p.i2p.zzz.test' (head 88a5133b796e83cd8d5864a0a16bcd75e8e34ab5)
2009-05-13 20:53:27 +00:00
zzz
3ad3988937 Add warning for 1-hop tunnels 2009-05-13 19:20:49 +00:00
zzz
757855a5c9 logs.jsp: Add link to config 2009-05-13 18:06:31 +00:00
zzz
ccab73ff66 * FloodfillVerifyJob: Don't consider an older search resulthi* as verified 2009-05-13 17:42:24 +00:00
zzz
9df04724c4 Reduce routerinfo expiration again 2009-05-13 17:38:30 +00:00
zzz
94c2ba7fc5 * SusiDNS:
- Reduce displayed entries from 300 to 100
      - Add ability to go forward or back
      - Make textareas bigger
      - Clean up file names
      - Clarify messages about filter and search
2009-05-13 17:21:34 +00:00
a267fcc9cc merge of '476489c04057318947e2947393aa6a10aa382af8'
and 'd38ab82268c3643119e5c226a3f97c23fb794e93'
2009-05-12 22:32:49 +00:00
66a292a9c6 2009-05-12 sponge
* BOB clean up, change println's to _log.warn, bump BOB version
    * I2PSessionMuxedImpl.java changes as per zzz, and they test OK for me.
2009-05-12 21:10:42 +00:00
7cd0112211 SAM: fix: warnings when generating javadoc 2009-05-12 13:33:09 +00:00
9195e754cf propagate from branch 'i2p.i2p' (head 790894dc16c840512c99302fbb75136042cbeb65)
to branch 'i2p.i2p.sam3' (head 66136bbdb44136e3756944cb7d8147d2ab07ff23)
2009-05-12 13:27:17 +00:00
965b183d9e fix: warnings when generating javadoc 2009-05-12 10:46:34 +00:00
zzz
7372a18cec Give the clients friendlier names 2009-05-11 18:19:56 +00:00
zzz
c5ba5f3a5b -13 2009-05-11 16:46:38 +00:00
zzz
90251b8545 propagate from branch 'i2p.i2p.zzz.test' (head eaf123d687259d0dee558845508cfeec05f55915)
to branch 'i2p.i2p' (head 16158c16ac8422809a9bf3919831e5700ed74a51)
2009-05-11 16:43:02 +00:00
zzz
a8c97053c7 * logs.jsp: Put critical log at the top 2009-05-11 16:41:37 +00:00
zzz
117d3a5614 * NetDb: Don't accept stores of our own LeaseSets or RouterInfo 2009-05-11 16:35:30 +00:00
zzz
70a2e48a72 Dont instantiate unused AdminManager 2009-05-11 16:34:05 +00:00
a6f106ed6d update history.txt 2009-05-11 09:05:10 +00:00
47dd1b6168 * SAMv3 : correct a null pointer exception check before it gets caught and logged as an error 2009-05-10 20:31:14 +00:00
bc7a963f5c correct a null pointer exception check before it gets caught and logged as an error 2009-05-10 20:23:08 +00:00
zzz
47fc3b0d0b - Don't start UPnP if we have a public interface address
- Fix setting IP to a local interface address
- Work on the configuration help some more
2009-05-10 15:40:50 +00:00
zzz
3d7b9560cb Connect client: fix NPE when used with advanced i2ptunnel features 2009-05-09 21:44:48 +00:00
9bd3bea90a * merged branches 2009-05-09 18:26:03 +00:00
9541abc0a4 merge of '4ad028f436647b957e6531243fb3348156d5eb51'
and 'ef760639d59a6ab522ec50a95cc848e09bf11bd8'
2009-05-09 18:24:17 +00:00
0be28c1701 2009-05-09 sponge
* fixed OOM on lock (woops! my bad!)
2009-05-09 18:19:03 +00:00
8bb28ea825 propagate from branch 'i2p.i2p.sam3' (head fa9e8f7d5cacabb84eaae8cc6b569b334f2e0238)
to branch 'i2p.i2p' (head 9cdab8e186f77c375fd81913d3b3c20e5ca69ca2)
2009-05-08 14:37:48 +00:00
85382863d2 merge of '38d57079bc08f5efdaccfb785e39789a7e6f1969'
and 'a0a87038370fb791c619419d56a3133ee7ccec5f'
2009-05-08 14:33:23 +00:00
ef737415c5 SAMv3: bug corrected: sending datagrams through the datagram session socket works (like in v1 and v2) 2009-05-08 14:33:03 +00:00
72e4dabd30 * desktopgui: moved files to stop polluting the namespace
(everything now in net.i2p.desktopgui)
    * desktopgui: some variable renaming in general configuration
2009-05-08 10:23:24 +00:00
6bcd547ca0 * SAM: version 3 added
* SAM: blocking case corrected on simultaneous client connection (v.1-3)
2009-05-07 19:31:27 +00:00
283f7a3f37 merge of '4238d44d0006a302c8a1fedf06a3789061b71672'
and '44b9f7b1bcd59acc89551681bfab2709ab5e9972'
2009-05-07 19:19:04 +00:00
zzz
d9a2e024ee add nibble 2009-05-07 17:27:50 +00:00
zzz
fe4e76a7f8 -9 2009-05-07 13:08:49 +00:00
zzz
9c4a7c02fd propagate from branch 'i2p.i2p.zzz.test' (head 29f20f786fbf565798b094a46ac9036dc39fb606)
to branch 'i2p.i2p' (head 622324a8f0f863b7b4eaaa26385228a65c71edf0)
2009-05-07 13:07:07 +00:00
a516d6474e * Improvements to popup menu rightclick action
* Added general configuration options (still not available by default)
    * General fixes
    * Added ant build options (irc says eche|on would like that ;))
2009-05-06 16:17:58 +00:00
eba6ca5430 2009-05-06 sponge
* Hopefully the last fixes for BOB.
    * Fixes to prevent race in client-side I2CP and Notifier.
2009-05-06 05:34:33 +00:00
zzz
ee7e70b98a more config ui tweaks 2009-05-06 03:47:38 +00:00
zzz
0b7fb21263 - Simplify config.jsp some more
- No longer use i2np.udp.forceIntroducers
- Tweak UDP port qualification
- Fix allowing low ports again
- Add option to completely disable NTCP, for those behind nasty firewalls
- Use SSU reachability rather than global reachability for determining NTCP reachability,
  since we are now reporting NTCP reachability too
2009-05-06 00:54:24 +00:00
zzz
95a38779de * Console: Disable idle options for streamr client, it will never be
idle because it pings the server
2009-05-05 22:24:19 +00:00
zzz
e7913061e9 * Console: More IE button fixes, try harder to not 404 the iframe 2009-05-05 21:04:46 +00:00
zzz
7d91bdba1e * Throttle: Throttle at 90% so we throttle before we WRED 2009-05-05 21:03:36 +00:00
zzz
29fe221fe6 name the addressbook thread 2009-05-05 21:02:03 +00:00
30b73ffe6d changed samv3 because of reverted streaming and mstreaming libs 2009-05-05 12:39:14 +00:00
fceec5c129 reverted changes to mstreaming and streaming 2009-05-05 09:46:17 +00:00
e42f7ab8fc apps/sam/java/build.xml reflects dependancy upon streaming.jar 2009-05-05 09:28:10 +00:00
54b80d6724 merge of '40606168f4086dbe122e96b533df4f24b5e4d87d'
and '44a775450f24ec5d2e921ab01b94546968f81851'
2009-05-05 09:24:26 +00:00
zzz
e82f173f85 - Don't notify for non-changed options on config.jsp 2009-05-04 19:54:33 +00:00
zzz
b45dfb85f0 - Change UPnP listener port defaults, allow configuration option 2009-05-04 16:24:31 +00:00
zzz
3db244f5d2 - Detect UPnP start failure
- Sort local addresses
- Store last IP for future laptop mode
- Subscribe to device service, doesn't seem to do anything though,
  need to test it more
2009-05-04 13:57:56 +00:00
zzz
65a41908ec - Make short timeouts for the XML parser so we don't hang when
the UPnP device goes away - same as for HTTP POST
- Stuff the port mapping requester into a thread so it doesn't
  delay everything for several seconds
- Handle UPnP devices that return IP = 0.0.0.0
- Better HTML output when no IP found
- Tweak logging
- Set Disposer thread name
- Keep the control point running after we find an IGD,
  so that we get notifications of it leaving or
  coming back or replaced.
2009-05-03 18:35:27 +00:00
7e3bda9d4d 2009-05-03 sponge
* More hopeful fixes for BOB.
    * Added new Robert ID to snark
2009-05-03 16:02:07 +00:00
zzz
c6b2492e73 - Make short timeouts for UPnP HTTP POST so we don't hang when
the UPnP device goes away
- Fix a bug in UPnP HTTP Server, but we don't use it anyway
2009-05-03 02:27:41 +00:00
zzz
d41afc0c43 - UPnP defaults to on - I didn't do all this for nothing
- Set Status to OK for local public addresses or UPnP port open
- Allow UDP address changes after we transition to firewalled
- Have NTCP start reporting reachability status, this will
  get OK on the console more often and mask UDP problems,
  which might be good or bad...
- Fix UDP port configuration
- Reword and rearrange configuration options again
- Rearrange configuration help
- More right-alignment on config
- Prevent Concurrent modification exception in UPnP
- UPnP HTML output tweaks - remove "plugin" references
- Move UDP message failed log from WARN to INFO
- Short-circuit message history call in UDP
2009-05-02 18:23:41 +00:00
zzz
40637e0f28 slow down the ff volunteers 2009-05-02 03:38:01 +00:00
zzz
0e4c846942 - Simplify bw form
- Add config link to UPnP status
2009-05-01 15:26:49 +00:00
zzz
6dc5d0f8d7 add postman2 2009-05-01 13:20:19 +00:00
zzz
7688df6fe5 -6 2009-05-01 13:03:59 +00:00
zzz
32b6c77156 propagate from branch 'i2p.i2p.zzz.test' (head eb755dae363d71808cb93ae1c6c976c1ec5df5d2)
to branch 'i2p.i2p' (head 25097fabfedcbe372d42dcddaf89b5279e9285e4)
2009-05-01 12:56:10 +00:00
zzz
a8a0e2a91c * I2PTunnel:
- Try to fix locking to prevent duplicate destinations when using
    the new option new-dest-on-resume. Still not right for shared clients
    but should be better for non-shared.
2009-05-01 12:43:19 +00:00
zzz
4c396e5b95 Console: fix ERR-UDP Disabled and Inbound TCP host/port not set 2009-05-01 12:31:38 +00:00
zzz
d3181e53cc prevent race NPE 2009-05-01 12:14:31 +00:00
zzz
4139b36eac fix race NPE 2009-05-01 11:58:14 +00:00
zzz
becc6dc0fc extend browser launch delay from 5s to 15s 2009-05-01 00:54:09 +00:00
zzz
79a963fcab - Implement config save of new IP address options
- Implement local address and UPnP configuration of UDP address
- Limit received port to 1024 minimum
2009-05-01 00:42:31 +00:00
zzz
b21e011203 - i2np.ntcp.autoip=true redefined to enable inbound only if
SSU reachability is OK. i2np.ntcp.autoip=always for the old behavior.
  autoip default is now "true".
  i2np.ntcp.hostname=xxx now trumps i2np.tcp.autoip.
- SSU always tells NTCP when status changes.
2009-04-30 21:03:00 +00:00
zzz
5a6b65d20c * URL Launcher:
- Launcher on linux was stopping after trying opera, whether it succeeded or failed.
    Now it keeps going to try firefox, etc. as designed.
2009-04-30 18:06:51 +00:00
zzz
5b44bcb44f - NTCP Port must now be either auto or configured;
now defaults to auto; and configured now trumps auto.
  Port configuration now does not affect whether inbound
  NTCP is enabled - the host configuration alone can do that.
2009-04-30 16:50:47 +00:00
zzz
c3bafcab05 put jbigi info on logs.jsp 2009-04-30 14:56:25 +00:00
zzz
9ae4fce0db new consoleDocs target 2009-04-30 14:53:46 +00:00
zzz
4929a7e635 - Add getRequestedPort() to transports 2009-04-29 20:42:42 +00:00
zzz
b61861f840 - Tweak UPnP warning messages
- Remove unused verifyupdate.jsp
- Start of callbacks from UPnP to transports
- Tell UDP local addresses at startup
2009-04-29 18:23:15 +00:00
zzz
35b5eb74f6 start of new address configuration 2009-04-29 03:12:19 +00:00
zzz
fc10031ff0 - Start to rework inbound configuration 2009-04-28 22:45:26 +00:00
zzz
accf3dbf3f - Implement UPnP enable/disable 2009-04-28 19:49:09 +00:00
zzz
c2fedf8538 - Add UDP Port configuration to config.jsp
- Don't restart router when configs change on config.jsp;
  simply rebuild router info.
- Clean up some port config code in UDP
2009-04-28 19:01:52 +00:00
zzz
3b19afe7ed propagate from branch 'i2p.i2p' (head 25097fabfedcbe372d42dcddaf89b5279e9285e4)
to branch 'i2p.i2p.zzz.upnp' (head d994c7d73b83aa689c3538efd7ebb6981ea33ba5)
2009-04-28 18:45:50 +00:00
zzz
64ada538f4 propagate from branch 'i2p.i2p' (head 5401181de2088780f15a018566a65ee35a25c92e)
to branch 'i2p.i2p.zzz.upnp' (head 223e91cc8e45fd22a53e30e839059e0ec4060e02)
2009-04-28 15:34:55 +00:00
zzz
a0c4e79c8a allow an extra part appended to the router version 2009-04-28 14:13:05 +00:00
zzz
34249e3dca merge of 'a41cc279bb8c70c8beb8b372e306affba56317a1'
and 'f59c86f21a1941949b9797e766708900eed053a6'
2009-04-28 13:45:03 +00:00
zzz
f5bd10207b log before a hang maybe (SWAG) 2009-04-28 13:43:48 +00:00
zzz
9cc1511863 fix up susidns build file so it will work with gcj 2009-04-27 17:37:29 +00:00
c1d7562331 2009-04-27 sponge
* more BOB fixes, complete with warnings when things go wrong, and
      success messages when things turn around and go right. Terminates
      early so that applications wait no more than 10 seconds or so.
    * Reversed a few earlier patches that caused some odd behavior.
    * Changed some core println()'s to debugging messages.
2009-04-27 17:09:47 +00:00
zzz
542e0f2ed3 -4 2009-04-27 15:02:05 +00:00
zzz
ab33b52f23 propagate from branch 'i2p.i2p.zzz.test' (head 28f0df7ddfdda1df49f30016359dcb77836b06df)
to branch 'i2p.i2p' (head 40618503ea9748aedee73aaf002482424adc1f72)
2009-04-27 14:59:15 +00:00
zzz
a223c7ac75 reduce bundled tags from 100 to 40 2009-04-27 14:58:43 +00:00
zzz
c32c9a2391 noob warning 2009-04-27 14:50:10 +00:00
zzz
798e1422c6 postman2 supports details link 2009-04-27 14:08:16 +00:00
zzz
e05b46002b add postman2 tracker 2009-04-27 13:49:45 +00:00
zzz
fa6aa44a86 quiet the ghost of jrandom 2009-04-27 13:33:22 +00:00
zzz
4f0013e8da Consolidate the details and config links to shrink the summary bar a little 2009-04-26 21:52:00 +00:00
zzz
b2e5e14bc6 extend the min expiration a little 2009-04-26 21:14:53 +00:00
zzz
e15b469833 * NTCP:
- Correct the meanings of the i2np.ntcp.autoip and i2np.ntcp.autoport
    advanced config. If you have one of these set but not the other, you
    will have to adjust your configuration on config.jsp.
2009-04-26 20:16:35 +00:00
zzz
c9b6d72c5a * Tunnel Pool:
- Clean up some tunnel removal code
  - Don't try to build a LeaseSet with more than 6 leases,
    no matter what the setting
2009-04-26 18:32:57 +00:00
zzz
a279f8d530 add some jetty help 2009-04-26 18:02:07 +00:00
zzz
89f0f09b86 new updaterWithJettyFixes target, build it for pkg 2009-04-26 16:27:44 +00:00
zzz
157b85b11b pass compiler args down from top build.xml 2009-04-26 15:54:51 +00:00
7b15cc8113 propagate from branch 'i2p.i2p' (head 982dc8adf7d5c10608e572f285c2eb196d25a64e)
to branch 'i2p.i2p.sam3' (head a455f4d173b9c8c18698ed182407e152848dc8de)
2009-04-26 10:38:28 +00:00
8d4c332987 merge of '40618503ea9748aedee73aaf002482424adc1f72'
and '81ec1b16687e7276a752db7f600a525a6e289458'
2009-04-26 10:36:41 +00:00
4ffa2450c2 * SAMv3 : doc/sam.3.0-protocol.txt updated
* SAMv3 : SAMv3StreamSession.java: thread naming for debugging purpose
2009-04-26 10:14:23 +00:00
zzz
d670d98e60 stats cleanup 2009-04-26 04:15:48 +00:00
zzz
33b2762003 more reachability help 2009-04-25 02:47:28 +00:00
zzz
507b6d45d5 longer iframe 2009-04-25 02:46:45 +00:00
f331dad72d 2009-04-25 sponge
* I2PSessionMuxedImpl atomic fixes
    * BOB fixes. This should be the final bug wack. Good Luck to everybody!
2009-04-25 00:02:38 +00:00
zzz
5b41827a7b allow spaces in dest and proxy lists 2009-04-24 16:38:44 +00:00
zzz
178b5996a5 * NetDb:
- Adjust RouterInfo expiration down to control memory usage
  - Display LeaseSets and RouterInfos on separate console pages
2009-04-23 22:34:25 +00:00
zzz
8054078b9e -2 2009-04-23 20:20:37 +00:00
zzz
452adfa860 logs.jsp: fix layout problem on IE, move version info to the top 2009-04-23 20:00:33 +00:00
zzz
833ebd0714 Jetty: Fix temp dir handling, which was causing susidns not to start on windows.
Jetty forms the temp directory name from, among other things, the bound
address. The patch in 0.7.2 to bind to IPV6 addresses led to ':' in the
directory name, which is not allowed on windows. Change these to '_'.
2009-04-23 18:29:46 +00:00
zzz
b430abf172 add i2p version for easy cut-n-paste 2009-04-23 18:22:55 +00:00
zzz
939311d2de css fixes from badger 2009-04-23 18:21:25 +00:00
0c738e2c6f SAMv3: stream session stop listening when the forwarding session closes. Doc has to be changed to reflect this. 2009-04-23 00:55:12 +00:00
zzz
48e544c014 RouterConsole: Make summary bar a refreshing iframe 2009-04-23 00:39:49 +00:00
zzz
08b186aa24 propagate from branch 'i2p.i2p' (head 28b73161ea8915467ac9a4a8eb910d8fef1d42cd)
to branch 'i2p.i2p.zzz.test' (head 4470e8eb34649523d9f0055e754d90226f0d7bcb)
2009-04-23 00:27:54 +00:00
zzz
2f46efe78d * Blocklist: cleanup
* PeerProfile:
     - Replace a hot lock with concurrent RW lock
     - Rewrite ugly IP Restriction code
     - Also use transport IP in restriction code
   * Transport: Start the previously unused CleanupUnreachable
2009-04-23 00:23:29 +00:00
zzz
3ddd5f2a51 * Fragmenter: don't re-throw the corrupt fragment IllegalStateException,
to limit the damage - root cause still not found
2009-04-22 19:21:21 +00:00
zzz
29a58cb030 * NTCP: Hopefully prevent this:
java.lang.IllegalStateException: Unable to serialize the message (net.i2p.data.i2np.DatabaseStoreMessage): Invalid key type
	at net.i2p.data.i2np.I2NPMessageImpl.toByteArray(I2NPMessageImpl.java:238)
	at net.i2p.router.transport.ntcp.NTCPConnection.bufferedPrepare(NTCPConnection.java:668)
	at net.i2p.router.transport.ntcp.NTCPConnection.send(NTCPConnection.java:295)
	at net.i2p.router.transport.ntcp.NTCPConnection.enqueueFloodfillMessage(NTCPConnection.java:412)
	at net.i2p.router.transport.ntcp.NTCPConnection.enqueueInfoMessage(NTCPConnection.java:373)
	at net.i2p.router.transport.ntcp.NTCPTransport.outboundMessageReady(NTCPTransport.java:179)
	at net.i2p.router.transport.TransportImpl.send(TransportImpl.java:339)
      ...
2009-04-22 18:53:57 +00:00
zzz
0bcbe6ae05 * i2psnark: (http://forum.i2p/viewtopic.php?t=3317)
- Change file limit to 512 (was 256)
      - Change size limit to 10GB (was 5GB)
      - Change request size to 16KB (was 32KB)
      - Change pipeline to 5 (was 3)
2009-04-22 13:54:59 +00:00
dev
3944688829 merge of '2fe56e848564fc4e006771a6cb807c8dec370bab'
and 'a2a447dc9fe4d0a9bdefccc5263eed665bedb84f'
2009-04-21 20:17:45 +00:00
dev
e126233fbc hope i have fixed that bug, where the "download $version" kept showing, while already having downloaded it 2009-04-21 20:17:07 +00:00
zzz
ae83b4202d recognize -h, --help, etc 2009-04-21 17:44:16 +00:00
7cdfe45acf propagate from branch 'i2p.i2p' (head 81ec1b16687e7276a752db7f600a525a6e289458)
to branch 'i2p.i2p.sam3' (head bf43c21d57d97df61e863a41783aaae968381d00)
2009-04-21 04:15:32 +00:00
eae4362181 SAMv3: NAMING ME request now work on stream sessions 2009-04-21 04:14:53 +00:00
f2e9e2cc23 2009-04-21 sponge
* Code janator work, basic corrections involving @Override, and
      appling final where it is important. Also fixed some equals methods
      and commented places that need fixing.
2009-04-21 03:32:38 +00:00
dev
311ec4eb54 merge of '401f2e769d7507a315783ec22c880a0e866194bd'
and 'eba7e55d7a69ed23fcce7f004a39fb2847ab66f5'
2009-04-19 11:16:21 +00:00
f4254659ea * Fix typo in "news.xml", no build number increase. 2009-04-18 23:08:40 +00:00
fc9e3ee77d * Update versions, package release 2009-04-18 22:33:00 +00:00
dev
b542f17194 removed code unused since 75fadec23097a196f56cd8d7932dca0de5da5583 (0.5.0.5) 2009-04-18 15:08:48 +00:00
dev
ddf5cf80b2 propagate from branch 'i2p.i2p' (head e26fa9cbcc023c4c1d8bdc4eb8dbd4a964bb6148)
to branch 'i2p.i2p.zzz.upnp' (head b712f92f4dce03ce1f7d1b2ffc95b559b9b66140)
2009-04-18 14:58:10 +00:00
e6cecab0b6 2009-04-17 sponge
* fixed setIP, just be sure to distclean before building :-)
    * more lint taken care of as well.
2009-04-17 13:45:47 +00:00
c3f9e20247 2009-04-17 sponge
* setIP wants to be a static method in the class, but it produces
      warnings about it being static from other code.
2009-04-17 13:28:05 +00:00
d0376f82a5 2009-04-17 sponge
* Catch NPE in NTCP.
      This possibly augments fix 2009-04-11 welterde below.
    * Various LINT on NTCP sources, and removal of space-wasting
      spaces at end of lines in sources touched.
2009-04-17 13:11:16 +00:00
834fdfe9b3 * Bugfix on tray icon updating
* Some more work on the general configuration menu
      (currently not added to the tray icon menu yet, needs more work)
    * Tweaked the desktopgui logo
2009-04-13 17:27:35 +00:00
8eedcb039a * Added I2P version and GUI version to desktopgui
* Tweaks to the tray icon menu
    * Some starting work on a GUI general configuration menu
    * Bugfix allowing spaces in directory structure
2009-04-13 15:02:46 +00:00
dev
fc9c479ed5 merge of '227107019f384da18e4670a405831faa8ba32555'
and 'a089ba5e81e51182c61fd5a1db8ac057001a24dc'
2009-04-13 13:20:50 +00:00
dev
12978ba4fb fixed the fix.. 2009-04-13 13:20:43 +00:00
dev
548efed8d8 -18 2009-04-13 12:28:16 +00:00
dev
24b012a843 don't send somehost.i2p:8080 requests to outproxy 2009-04-13 12:09:52 +00:00
dev
d493addf95 added netbeans freeform project files for core and router 2009-04-11 20:38:19 +00:00
dev
d8e502722e -17 2009-04-11 20:35:36 +00:00
dev
0835c05e89 merge of '3534b3e357a365476c2deeb8470ae794595cf1a8'
and 'c06ed6aab297ea837746dfa5dacb1a8f78d8d3dc'
2009-04-11 20:28:28 +00:00
dev
429280e416 fix a NPE 2009-04-11 20:28:15 +00:00
879404f7e0 2009-04-11 sponge
* i2ptunnel janitorial work and fixes on most locks.
      Some locks still need work, and are marked with LINT in the comment.
      Just grep for "LINT" to see where the remaining places are.
2009-04-11 13:55:38 +00:00
56c6f41131 merge of '7298248358ee266b5c8c7383cd1ef06e343fe42a'
and '8aacbbbacb79ee5a65534a5601eea1246c51866c'
2009-04-11 13:35:34 +00:00
305fc7314f Added text explaining the different speeds.
Tray icon colours indicates active peers (and tooltip indicates reachability).
The menu now uses Swing instead of Awt, so it looks a lot better.
2009-04-11 13:35:22 +00:00
384d655b1a 2009-04-10 sponge
* More BOB threadgroup fixes, plus debug dump when things go wrong.
    * Fixes to streaminglib, I2CP, which are related to the TG problem.
    * JavaDocs fixups.
2009-04-10 23:12:41 +00:00
2a2d3c0fb5 Added log viewer.
Added shutdown informational messages.
2009-04-10 18:56:56 +00:00
977d6eec88 Dropdown available for kb versus kB issues.
Bandwidth calculation available from 2 directions (added from GB -> kbps).
Layout manager switched for easier development.
2009-04-09 20:36:22 +00:00
0f1f33eaa4 merge of '798b531efac76d62154df2a99a91a32ccd97ab47'
and '9b73a50d356f49e9aadaae4cf86681b718c0d56b'
2009-04-09 19:12:06 +00:00
8f690a8f67 2009-04-08 sponge
* More hopeful fixups to the infamous orpahned tunnel problem. *Sigh*
2009-04-08 11:55:51 +00:00
f9f9aa4498 Added distWithDesktopgui target, to build everything at once. 2009-04-08 10:13:56 +00:00
18a475eff3 merge of '9666f5fdfc24a7fc2ca3a99a95ea5dfef5583b1b'
and 'e76b1962963aa7cadb74aacc32f90adf31db3761'
2009-04-08 06:41:53 +00:00
zzz
ed259ac94c -13 2009-04-08 01:37:38 +00:00
zzz
bb7884ca3b propagate from branch 'i2p.i2p.zzz.test' (head 589c4b0b77bdcbb49a965e39ec971c9b4bdd98c5)
to branch 'i2p.i2p' (head 32ebd10f2f86f14b3739dc699e016349a85bb8e4)
2009-04-08 01:34:40 +00:00
zzz
0cfbe9c28b * IPV6/localhost:
- Enable IPv6 stack in the JVM, hopefully won't break anything
      - Patch Jetty to support binding to IPv6 addresses
      - Allow multiple bind addresses for the router console
        in the clients.config file; for new installs the
        default is now "127.0.0.1,::1"
      - Change most instances of "localhost" to "127.0.0.1"
        throughout the code
    * Router:
      - Move some classes to private static inner
2009-04-08 01:34:12 +00:00
85e5013dbd Fixed overflow problem when calculating monthly usage. It now works well (without
getting too wide for the window) up to 1 Tbps.
2009-04-07 20:09:59 +00:00
bf50695c93 Patching build.xml so it's possible to build an installer and updater with desktopgui. 2009-04-07 19:18:51 +00:00
0764e19441 New build file for desktopgui. Should work fine for anyone using java 1.6. 2009-04-07 17:55:59 +00:00
2f1d93756d merge of '4e3d0e106395f9bbb24c33d6a980c707831ad40e'
and '578c30cf4a84f25eb899ab6d4278207bddeba259'
2009-04-07 13:49:12 +00:00
91de396821 added echelon.i2p to readme of I2P router 2009-04-07 12:05:00 +00:00
f9efabba16 Fixed build.xml (removed desktopgui for now). 2009-04-07 08:26:47 +00:00
54255cab4a merge of '91bd86329a458a5e064af7aa5abf3662aec61dab'
and 'a09513bb83b827232b24950613986dcb6d5e713c'
2009-04-07 05:47:04 +00:00
c03b519849 2009-04-07 sponge
* BOB prevent jvac from optimizing out thread-group code from -10
2009-04-07 03:01:39 +00:00
zzz
98617723a2 -11 2009-04-07 02:47:23 +00:00
zzz
8c8a2deefc propagate from branch 'i2p.i2p.zzz.test' (head 1b0258b9825aa2952987c3221b8c45aa06b8c3b1)
to branch 'i2p.i2p' (head 2dc7a484f328618103dca0f5a9510e15e19f98c7)
2009-04-07 02:34:43 +00:00
2c84cddda3 2009-04-07 sponge
* SimpleTimer2, SimpleScheduler fixed so that the threads all run from
      The main threadgroup, not in the current possible child threadgroup.
      So long as any SimpleTimer2/SimpleScheduler is started *BEFORE* any
      child threadgroups, the constructors are threadgroup safe. What would
      be super cool is if they were to be all jailed within thier very own
      threadgroup too, but, I2P isn't up to the task of this yet.
    * Fixes to BOB to ensure the above is true.
2009-04-07 02:24:04 +00:00
37667247c3 2009-04-06 sponge
SimpleScheduler SimpleTimer2 debugging added.
Fix build files for desktopgui.
2009-04-06 22:40:22 +00:00
zzz
f5614c8a41 synchronize datagram maker in I2PSinks 2009-04-06 19:44:47 +00:00
zzz
9e7dd238a4 prevent NPE 2009-04-06 19:43:54 +00:00
495558a949 New application for I2P: desktopgui. Should eventually replace systray, and have more functionality.
To use the application, you need to (by default) add the following to clients.config :
# desktopgui
clientApp.6.args=
clientApp.6.delay=5
clientApp.6.main=desktopgui.Main
clientApp.6.name=desktopgui
clientApp.6.startOnLoad=true
2009-04-06 17:53:32 +00:00
bc831d3c35 Changelog: SAM : big bug in SAMv1Handler corrected 2009-04-06 09:53:01 +00:00
d54695e542 add dependency to streaming lib to apps/sam/java/build.xml 2009-04-06 08:16:19 +00:00
12625a46c2 comment added in net.i2p.client.streaming.ConnectionHanler 2009-04-06 07:54:19 +00:00
ab84a5ce8e propagate from branch 'i2p.i2p' (head ac3b23a1d65017e99af5231a8248590c278c136f)
to branch 'i2p.i2p.sam3' (head e257c0c2a8456c229d12a8de2c5339b2e981fd80)
2009-04-06 07:45:57 +00:00
fcbfd7554f SAMv3: alternate form of calling SAMBridge.main. Usage message updated. 2009-04-06 06:39:30 +00:00
4d27f18710 SAMv3: rawTests Demos scripts updated 2009-04-06 05:29:03 +00:00
1bc4cb382e SAMv3 : protocol better specified, and small changes in the code reflecting the new protocol 2009-04-05 21:35:56 +00:00
6b825fbe25 SAMv3 : protocol better specified, and small changes in the code reflecting the new protocol 2009-04-05 21:32:43 +00:00
884663d077 Forgot the history.txt entry, oops!! 2009-04-04 19:48:27 +00:00
bd489cf439 2009-04-04 sponge
* Hopeful fixups to the infamous orpahned tunnel problem.
    * BOB now 0.0.5
2009-04-04 19:47:36 +00:00
zzz
a4b5c63702 -7 2009-04-04 17:17:34 +00:00
zzz
b1bedb565f propagate from branch 'i2p.i2p.zzz.test' (head 8eb14086613c349e9f2e820ca3ffdca924dbf1bd)
to branch 'i2p.i2p' (head a4b03a4320a1bf09574f0b338a89f2bd3819ca81)
2009-04-04 17:10:16 +00:00
zzz
3dd5950bd1 Don't let NTCP bid on msgs too big to handle 2009-04-04 17:08:20 +00:00
2cf5221620 minimize differences with mainstream apps/streaming 2009-04-04 12:37:19 +00:00
de6edc6a99 2009-04-04 10:28:31 +00:00
zzz
fe9b891b37 -6 2009-04-03 21:46:10 +00:00
zzz
7804475698 propagate from branch 'i2p.i2p.zzz.test' (head 6cf4504f7338b177bfd4a0ceef7d3549bfeec6fe)
to branch 'i2p.i2p' (head d78bd9f06c2779f8bcf2f713dbb8679004aef101)
2009-04-03 21:44:46 +00:00
zzz
8de5609817 * Update:
- Change default to "Download and verify"
      - Change news fetch default to 24h (was 12h)
2009-04-03 21:42:48 +00:00
zzz
bb0531053d Console: Fix bug with IE buttons not working, because it sends the label instead of the value 2009-04-03 21:33:35 +00:00
e5b1450e83 2009-04-03 sponge
* Router build version incremented to 5 now that the build succeeds.
2009-04-03 15:33:51 +00:00
zzz
0c7cb9d781 put java version on logs.jsp 2009-04-03 14:26:48 +00:00
25d5883a0e 2009-04-03 sponge
* Fix broken dependencies for BOB.jar
2009-04-03 13:31:41 +00:00
zzz
c7d815b5b8 -4 (-3 didnt build) 2009-04-02 22:08:39 +00:00
zzz
8c4800309e propagate from branch 'i2p.i2p.zzz.test' (head ef7e2c611e0eaa2f92b31c0b364d39ec023eb135)
to branch 'i2p.i2p' (head 928500dd1439f4cf359ea90cb5349bfaa7d2194b)
2009-04-02 22:07:48 +00:00
zzz
1aa7fbbba0 -3 didnt build 2009-04-02 22:07:25 +00:00
zzz
d2fc397295 -3 2009-04-02 21:00:26 +00:00
zzz
a8e43ab552 propagate from branch 'i2p.i2p.zzz.test' (head 8f379e4e28d926cbde0cad8f11274b8ae1fcd820)
to branch 'i2p.i2p' (head fc678c3fcf2b704921a3b8f4d8c35b5d68397f3b)
2009-04-02 20:59:01 +00:00
zzz
3a12182838 Transport:
- Maintain a router hash -> IP map in transport,
    to support additional IP checks
    (unused for now)
  - Catch error on pre-2.6 kernels
  - Some concurrent conversion
  - Fix an HTML error on peers.jsp
2009-04-02 20:33:54 +00:00
zzz
49c7fc30c0 cleanup 2009-04-02 19:01:26 +00:00
zzz
f6bc9e8707 Profiles:
- Remove unused calculators and RateStats:
    CapacityCalculator, StrictSpeedCalculator, IsFailingCalculator;
    sendFailureSize, processSuccessRate, processfailureRate, commErrorRate,
    tunnelTestResponseTimeSlow
  - Reduced number of Rates in these RateStats:
    sendSuccessSize, receiveSize, rejectRate, failRate
  - ~5KB/profile savings total
  - Deflate speed calculation once an hour instead of once a day,
    to improve fast tier selection
2009-04-02 18:55:40 +00:00
zzz
53cb80636a remove dup comment in persisted profiles 2009-04-02 18:12:38 +00:00
bc086a78eb explicit merge of '7bae8d314209ec279a4da918dc3255e31bda7e45'
and '3b133e76d8124df27791cb78006e7c2b9a8b6430'
2009-04-02 08:57:46 +00:00
e0dccb5970 2009-04-02 08:54:28 +00:00
a4d16af95d SAM version 3 :
- Raw and Datagram sessions implemented
      - option "SILENT=true" added to the stream protocol
      - java 6 warnings removed
   ministreaming :
      - java 6 warnings removed
   ministreaming and streaming :
      -  added functions : 
      	I2PServerSocket.waitIncoming(long timeout)
      	I2PServerSocket.accept(boolean block)
2009-04-02 08:22:31 +00:00
zzz
0b89171abd StatisticsManager - effective in 0.7.2:
- Spoof uptime to 90m for all
    - Change tunnel stats from 10m to 60m
2009-04-01 20:17:25 +00:00
zzz
f81a24a0cc I2PTunnel: Fix tunnel close http://forum.i2p/viewtopic.php?t=3231 broken in 0.7-8 2009-04-01 04:54:49 +00:00
zzz
58fc3a501d -1 2009-03-30 16:13:58 +00:00
zzz
7b373743aa propagate from branch 'i2p.i2p.zzz.next' (head e89194f845a2a74dbf00f0f9e3c25a8f96ec36e4)
to branch 'i2p.i2p' (head 9cb2795f19efeae08b9ecffa5137fd944de120c7)
2009-03-30 16:07:13 +00:00
zzz
e692e18d44 Peer Selection:
- Limit peers to a max % of all tunnels with
       router.maxTunnelPercentage=nn, default 33
     - Add chart to tunnels.jsp to see results
2009-03-30 16:05:48 +00:00
0c98d1843a Sponge fixes and additions patch:
* 3 New jbigi build scripts and old ones fixed to work properly.
    * Some trivial BOB work.
2009-03-30 05:31:40 +00:00
4a9543be78 * Update versions, package release 2009-03-29 19:47:46 +00:00
zzz
fe0d0d6737 -11, catch rare AIOOB 2009-03-27 18:09:46 +00:00
zzz
0343e8ffcd readme_fr - thanks Narya and Mathiasdm 2009-03-26 18:51:43 +00:00
zzz
6a6cd14398 checklist update 2009-03-26 18:28:27 +00:00
zzz
29df534161 update license splash text 2009-03-26 00:02:29 +00:00
zzz
5414d41de4 I2PSnark: Use new BW Limits message, remove router.jar dependencies 2009-03-25 23:19:37 +00:00
zzz
2695461bd4 -10 2009-03-24 21:31:55 +00:00
zzz
186f2bc22f propagate from branch 'i2p.i2p.zzz.test' (head c92ec83848e87e27921bada8ee24fd108050a50a)
to branch 'i2p.i2p' (head efebdaa0f53b9bc0234d18a7a934cc0f4fa6231e)
2009-03-24 21:30:28 +00:00
zzz
41718b47c1 increase default bw to 64/32 2009-03-24 21:29:15 +00:00
zzz
bb51bf49b0 - Suppress log error on manual stop
- Prevent NPE when closing a delayed-open tunnel
2009-03-24 20:24:20 +00:00
zzz
6c365bef85 add links to enable graphing 2009-03-24 19:52:06 +00:00
zzz
e9063a22d5 add anchors 2009-03-24 18:58:08 +00:00
zzz
47edc3c853 add warnings for some new features 2009-03-24 18:21:28 +00:00
zzz
09d700e1d6 fix encrypted leasesets 2009-03-24 18:19:47 +00:00
zzz
e5f19c98a8 change common corrupt errors to warns 2009-03-24 15:21:34 +00:00
zzz
0da964e47f -9 2009-03-16 19:34:59 +00:00
zzz
98fda81b79 propagate from branch 'i2p.i2p.zzz.test' (head 4e891e40ee2919859df7b3ae04ecec6af4f47a35)
to branch 'i2p.i2p' (head 15f093fdaa28a510bd45965dc849c8d04e0d42f7)
2009-03-16 19:33:14 +00:00
zzz
d0a969ca33 fix NPE on delayed open http://forum.i2p/viewtopic.php?t=3189 2009-03-16 19:31:29 +00:00
zzz
91b3889cbc catch a rare AIOOB 2009-03-15 00:16:38 +00:00
zzz
33f4fac48f summary bar help 2009-03-14 21:42:50 +00:00
dev
f70adf8da6 disapproval of revision '3ae245c48c0f90b0e70cf800de354e012801f6cd' 2009-03-14 20:25:50 +00:00
dev
66eae60c48 removed some hosts 2009-03-14 16:24:17 +00:00
zzz
5022575429 - Deal with conflicting bouncycastle libs take #2
- Disable NTCP
- Shuffle the startup/shutdown tasks some
2009-03-13 21:49:27 +00:00
zzz
b8f22bf3bf - Add FileStreamFactory and I2PFile to deal with the problems from
the code CWD is / but the only writable directory is
  /data/data/net.i2p.router/files/ - still a ton of places to be
  fixed, will be fixed up as things get working
- Load some config files from resources at startup
- Fix up logging
- Add reseed capability, by copying some code over from routerconsole
- Deal with conflicting bouncycastle libs
2009-03-13 18:56:16 +00:00
zzz
5a8b3eb8f3 Move HMac to I2PHMac, as jrandom implemented changes that make it
incompatible with the HMac in the android libraries.
2009-03-13 18:27:29 +00:00
zzz
cf02abd19c allow .onion addresses for testing 2009-03-13 16:58:23 +00:00
zzz
ca3b6eb00d catch a reported NPE ? 2009-03-13 16:57:51 +00:00
zzz
ae2f48f55d remove some text so it looks better 2009-03-13 16:56:34 +00:00
zzz
d26ac84126 two memory savers 2009-03-12 18:22:49 +00:00
zzz
82045b3fde android logging 2009-03-10 22:30:33 +00:00
zzz
5eda7c30fc bw limits msg 2009-03-10 06:09:50 +00:00
zzz
14ce5a2432 hello world 2009-03-10 05:20:48 +00:00
zzz
f2bfa2e15c -8 2009-03-09 15:15:49 +00:00
zzz
ee0aada892 propagate from branch 'i2p.i2p.zzz.test' (head 8926fc63796bf18b615460f036598090e038462c)
to branch 'i2p.i2p' (head a0a51ce09fc12b75238432d8926103af46696820)
2009-03-09 15:12:31 +00:00
zzz
7179a64fee I2PTunnel: Add delay-open option for clients 2009-03-09 15:11:45 +00:00
zzz
f3ddf3fa93 remove http from add torrent box 2009-03-09 15:10:46 +00:00
zzz
91b8f7c2ae fix typo in comment 2009-03-09 14:41:48 +00:00
zzz
54f1c0ec66 add some comments on peer profile size 2009-03-04 04:16:57 +00:00
zzz
1d690f46ae click to add dest to addressbook 2009-03-03 19:06:52 +00:00
zzz
ca783caff1 prevent configpeer.jsp oom 2009-03-02 18:58:37 +00:00
zzz
c4fa0d894f * Client:
- Clean up retry code
      - Bring I2CP listen error to the summary bar
        http://forum.i2p/viewtopic.php?t=3133
2009-03-02 16:07:48 +00:00
zzz
03f16565fe tweak 2009-03-02 16:01:15 +00:00
zzz
5785f500ef complete regenerate-dest-on-reconnect 2009-03-02 01:38:44 +00:00
zzz
8f5257d5dc make persistent client dests work 2009-03-01 23:14:38 +00:00
zzz
c455fa6309 * OCMOSJ:
- Change from 5% reply requests to at least
        once per minute, in hopes of reducing IRC drops
      - More clean up of the cache cleaning
2009-03-01 20:45:16 +00:00
zzz
59b624a4a4 add reasonable privkey file name default 2009-03-01 20:44:01 +00:00
zzz
bfa02f3b82 * I2PTunnel:
- Add persistent key option for clients (not hooked in yet)
      - I2PSink: Send protocol byte
2009-03-01 19:25:49 +00:00
dev
60ab94689c fixed i2ptunnel ircserver 2009-02-28 12:26:58 +00:00
dev
7f33eb4959 broke i2ptunnel ircserver again 2009-02-28 01:39:58 +00:00
zzz
467095f85e -7 2009-02-27 21:27:14 +00:00
zzz
1fc890c6f0 propagate from branch 'i2p.i2p.zzz.test' (head f19c9c4ae55d6ae82d6c028a06c0fae886da2527)
to branch 'i2p.i2p' (head 78d8ece1514216315644bbef224c62e1e9fbe370)
2009-02-27 21:25:04 +00:00
zzz
3733b78ccf * I2PTunnelUDPClientBase: Fix client close, client target host
* I2CP Mux: Fix UDP sends
2009-02-27 21:24:40 +00:00
zzz
6648e182ae * I2CP Client: Add support for muxing 2009-02-26 14:45:45 +00:00
zzz
56473c6b65 add reverse lookup by hash 2009-02-25 02:00:13 +00:00
zzz
d222c7a998 move dest-to-hash conversion to new helper class 2009-02-25 01:18:38 +00:00
zzz
84bd8274ad * Router: Move addShutdownTask from Router to I2PAppContext
so that apps can register more easily
2009-02-25 00:05:30 +00:00
zzz
0d2812db50 add standard logging to NativeBigInteger 2009-02-24 23:32:38 +00:00
zzz
6484005569 I2PTunnel: First cut at SOCKS UDP (untested); also some streamr and UDP tweaks 2009-02-24 23:28:53 +00:00
zzz
559653f0ab clean up OCMOSJ cache cleaner 2009-02-24 23:18:12 +00:00
zzz
7a684c160b * Routerconsole:
- Thread hard shutdown and restart requests from the routerconsole,
        and add a delay even if no tunnels, to allow time for a UI response
2009-02-24 23:15:26 +00:00
zzz
7e21afe6a6 sort the summary bar destinations 2009-02-24 22:59:59 +00:00
zzz
720aa704c4 port streamr to i2ptunnel 2009-02-23 05:09:44 +00:00
532077a4c1 BOB version bump.
Router Build bump.
2009-02-22 07:26:08 +00:00
8bce2fd7a2 Hopeful BOB fixes for orphaned tunnels.
Additional comments in TCPio addressing performance.
2009-02-22 07:04:31 +00:00
zzz
3603cc23ee add socks 4/4a support 2009-02-22 02:58:00 +00:00
zzz
f4c3607c4d * I2PTunnel:
- Add new IRCServer tunnel type
      - Catch OOMs in HTTPServer
      - Name the IRCClient filter threads
2009-02-22 00:35:24 +00:00
zzz
06aeff9a30 drop file accidentally checked in 2009-02-20 19:00:01 +00:00
zzz
78075cb3aa Add upnp html output, fix up logging 2009-02-20 18:51:39 +00:00
dev
fbe7e42f46 fixed a NPE 2009-02-20 17:53:17 +00:00
zzz
312e6071d7 upnp first cut 2009-02-19 21:42:59 +00:00
zzz
f3143d8b3d case insensitive sort on stat groups 2009-02-18 20:54:55 +00:00
zzz
fd32d77976 -5 2009-02-16 19:43:59 +00:00
zzz
39e8e93bfa propagate from branch 'i2p.i2p.zzz.test' (head c25c24d91060673157085b8c6edeb35e35e57900)
to branch 'i2p.i2p' (head a28a9a5e42fadc0ad8780ec708f17928cfdf2e66)
2009-02-16 19:42:49 +00:00
zzz
e151ef74e1 * Streaming lib: Plug timer leak, don't send keepalives
after close, don't disconnect hard after close
2009-02-16 19:42:28 +00:00
zzz
609e70692d -4 2009-02-15 14:50:15 +00:00
zzz
c5ac0981b5 propagate from branch 'i2p.i2p.zzz.test' (head 0bb4b6c8acec3e78fe1d79924fef7186cfe31973)
to branch 'i2p.i2p' (head b13b20bc5c20fd4ce45a91cacd483bc9fdea7118)
2009-02-15 14:43:20 +00:00
zzz
129fc5b838 Backport rev 1c20e222438c8098ed49a4e5a5a609f0d2cf14c5 before the prop forward 2009-02-15 14:27:46 +00:00
zzz
775ab9a7bf * I2PTunnel:
- Display destination even when stopped
      - Enable key generation, dest modification, and
        hashcash estimation in the GUI
      - Add new CONNECT client
2009-02-15 05:17:18 +00:00
zzz
374360c7b4 save a little space 2009-02-15 05:15:25 +00:00
zzz
cc3165bf72 * Streaming lib:
- Move ConEvent from SimpleTimer to SimpleScheduler
      - Move RetransmissionTimer (ResendPacketEvent)
        from SimpleTimer to new SimpleTimer2
      - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
      - SimpleTimer2 allows specifying "fuzz" to reduce
        timer queue churn further
2009-02-15 05:11:35 +00:00
zzz
6b0a2464dd Add licenses to all packages 2009-02-14 19:49:00 +00:00
zzz
7b12f700dd plug a tunnel build leak 2009-02-12 17:10:47 +00:00
zzz
806e2f88c8 Dont buffer all the POST data so we wont OOM on huge POSTs. Use unbuffered read for the first line, and for all the headers if POST 2009-02-12 16:50:20 +00:00
zzz
8591dfe71c i2psnark tmp files take 3 2009-02-10 02:34:48 +00:00
zzz
7756e20b86 enforce max leaseset publish frequency 2009-02-09 16:52:54 +00:00
zzz
39a1958bf4 fix dest save broken in 0.7 2009-02-09 14:55:48 +00:00
zzz
f9d8a2d79b allow smaller leasesets 2009-02-09 14:34:23 +00:00
zzz
cdab99bd25 concurrentify _availableMessages 2009-02-09 12:56:53 +00:00
zzz
f344c9e0be plug connection leak 2009-02-09 12:55:35 +00:00
zzz
7acaa964af -3 2009-02-07 21:27:20 +00:00
zzz
08deabb262 propagate from branch 'i2p.i2p.zzz.test' (head f45f828cb1f4e2ea944d18a2aa23d9fac3f828fa)
to branch 'i2p.i2p' (head 282b48a00cfb053c488aa75519723c001f2ca5a1)
2009-02-07 21:25:51 +00:00
zzz
6504e1f91d export symbol 2009-02-07 21:25:27 +00:00
zzz
b125276be9 correct comment 2009-02-07 21:24:53 +00:00
zzz
dc9607024e propagate from branch 'i2p.i2p.zzz.test' (head 8424049f1510c378ac5c6d74a51fcc914f6082f5)
to branch 'i2p.i2p' (head d14d24978b11daeff7d37002b7ac3ec5b5535475)
2009-02-07 21:18:06 +00:00
zzz
06e1305df2 prevent race NPE http://forum.i2p/viewtopic.php?t=3066 2009-02-06 21:19:45 +00:00
28a14782a6 debian package instructions
As Debian's package building system is rather complicated and requires root
access unconditionally for some reason, doing it from ant isn't really
feasible. However to build any debian package anywhere is the same system, so
including helpful documentation on how to use that system as an ant build
target would be most useful in this case. Hopefully Debian users will
only have to deal with the already built .deb anyway.
2009-02-06 18:39:51 +00:00
zzz
e7bccb2f47 fix idle property names 2009-02-06 15:45:34 +00:00
zzz
bdf7dda3b4 Use the right error msg when a b32 address fails to resolve 2009-02-06 13:14:10 +00:00
zzz
a7d4b3d6ba * I2PTunnel & I2CP:
- Fix tunnel reduction/restore, hook in the GUI
      - Hook leaseset encryption into the GUI
      - Implement saves for all the new stuff
      - Add cancel button
      - Add b32 display for non-http servers
      - Prep for CONNECT
      - Fix error msg when connection goes away
2009-02-06 04:22:44 +00:00
zzz
a82de3d1cf Netdb: Remove all DataPublisher stuff 2009-02-04 17:18:00 +00:00
zzz
a6dc27adaf Bound and concurrentify SYN queue to hopefully prevent explosion 2009-02-04 14:32:09 +00:00
zzz
69f051da41 concurrentify TunnelDispatcher 2009-02-04 14:17:10 +00:00
zzz
5946c35a88 avoid illegalstateexception 2009-02-04 14:16:36 +00:00
zzz
3d8cb3b90d print torrent and peer count 2009-02-04 14:04:52 +00:00
zzz
3b9fec1857 save a little space 2009-02-03 15:34:47 +00:00
zzz
ececf5407d concurrentify shitlist 2009-02-03 15:15:09 +00:00
zzz
d236b9b44a more concurrent 2009-02-02 19:25:29 +00:00
zzz
7ec29b0c5a use concurrent 2009-02-02 18:03:16 +00:00
zzz
8d7340500f * I2CP: Implement optional reduce tunnels on idle - not hooked
in to i2ptunnel GUI yet - still needs tweaks
2009-02-02 14:03:17 +00:00
zzz
1ee2b5e899 one more static 2009-02-02 14:00:51 +00:00
zzz
6f948df089 remove dup 2009-02-02 13:59:50 +00:00
b6b1491368 Final Slackbuild cleanups, ant slackpkg target added. 2009-02-02 01:22:31 +00:00
f70be29651 small change so that the version number makes more sense 2009-02-01 11:04:42 +00:00
c48700216c SlackBuild! 2009-02-01 07:51:38 +00:00
zzz
45a2159290 -2 2009-02-01 01:34:57 +00:00
zzz
ac7ea4ac4c propagate from branch 'i2p.i2p.zzz.test' (head ff7193c72f9811a641627eb08d5183b3f7af9306)
to branch 'i2p.i2p' (head b71194946fd76128f523e88f918a5c3a9b2c12e1)
2009-02-01 01:31:24 +00:00
zzz
2a96dde20b merge of 'cc72fab39f44fab34741eaed2d2565a6db5b757e'
and 'd6901f35bd88f633d566f597f0c10904a853a37d'
2009-02-01 01:29:38 +00:00
zzz
78d5080d78 * Tunnel Pool:
- Remove tunnel from participating if can't contact next hop
      - Fail outbound build faster if can't contact first hop
2009-01-31 15:36:24 +00:00
zzz
395baf0274 * Convert some inner classes to static (findbugs) 2009-01-31 14:27:45 +00:00
zzz
951f082884 * i2psnark: Increase tunnels and pipeline to 3 2009-01-31 14:23:33 +00:00
zzz
a5ab6f576d * SimpleScheduler: New replacement for SimpleTimer when events
will not be rescheduled or cancelled, to reduce SimpleTimer
      lock contention
2009-01-31 14:22:07 +00:00
f7f93fda0c Discarded int fix. 2009-01-31 05:18:12 +00:00
7365ca849f preliminary debian package support
This sets i2p up as a functional Debian source package. dpkg-buildpackage
will build i2p using ant preppkg (tarball takes too long and not
helpful). It creates a binary .deb archive of the i2p installation,
which when installed goes into /var/lib/i2p as the non-root user i2p,
and adds an /etc/init.d script to start it up.

Some problems not yet solved:
1) under Debian the conf should go into /etc/i2p, but since it doesn't
   things like the eepsite index file get overwritten if you reinstall.
   should check for those somehow and not replace them, or ask the user.
2) under Debian they like it if you split the generated data from the
   static code, so i2p should go into /usr/lib/i2p maybe, but its
   netDB and any other cache files into /var/cache/i2p
   that's important not just for organization, but also /var is often
   on a filesystem optimized for churn. For now just put it in /var/lib
3) i2p is supposedly architecture independant, but it does choose a
   native jbigi library on postinstall, so does that really count
   as architecture independant?
2009-01-30 22:32:52 +00:00
zzz
d75e1deae7 Fix readLong() bug where it wasnt throwing an exception on EOF 2009-01-30 21:25:18 +00:00
zzz
4aa9c7fdcf * NTCP: Use a java.util.concurrent execution queue instead of
SimpleTimer for afterSend() to reduce lock contention
2009-01-29 21:13:24 +00:00
zzz
69e6393442 * Routerconsole:
- Move common methods to new HelperBase class
      - Make reseed link a button
2009-01-29 02:16:18 +00:00
zzz
9d9d4093bc simple readme for the source pkg 2009-01-29 02:13:00 +00:00
zzz
37f9d3afe1 * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB) 2009-01-29 02:12:02 +00:00
zzz
82180592f9 -1 2009-01-25 01:18:52 +00:00
zzz
d88cfae80d propagate from branch 'i2p.i2p.zzz.test' (head f4edeaaf6cd647f4a69847a09272b54cb51ef758)
to branch 'i2p.i2p' (head 0d7e18b693718b5924035d7a6f638ff0689af589)
2009-01-25 01:15:45 +00:00
zzz
6235b49300 cleanup of lease stuff 2009-01-25 01:01:48 +00:00
4682bb4147 * Removing duplicate end tag from news.xml 2009-01-25 00:47:57 +00:00
baebd1fdd2 * Update versions, package release 2009-01-24 23:57:39 +00:00
zzz
6ed17c1a5f prevent null spoofhost 2009-01-24 23:42:31 +00:00
zzz
ae0bcc492d * netdb.jsp: Don't show stats by default
* RebuildRouterInfoJob: Don't run it
    * PublishLocalRouterInfoJob:
      - Delay for 5m at startup
      - Run every 20m (was 7.5m)
2009-01-24 20:07:41 +00:00
zzz
d8298c63ab http error message 2009-01-24 17:27:06 +00:00
zzz
9a089b7da0 * Build files:
- Don't bundle unneeded XML parser xercesImpl.jar for Jetty (1MB)
      - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
2009-01-24 17:20:51 +00:00
zzz
e5d76a5a77 beginnings of outproxy configuration and routing 2009-01-23 19:17:27 +00:00
zzz
f7170aa00a Move getDestinationI2PSocket from SocksServer to Socks5Server
so we can do better error handling
2009-01-23 16:02:53 +00:00
zzz
c02711ccad Fix socks so it uses existing tunnels rather than building a new one for every request.
Now works with or without 'shared clients' enabled.
2009-01-23 02:23:13 +00:00
zzz
9885779cab Add socks to gui, prevent NPE on socks 4 request, general cleanup 2009-01-23 01:22:14 +00:00
zzz
e105ca92f2 Bundle a reply when we switch tunnels, to detect failure sooner 2009-01-22 18:25:30 +00:00
zzz
28cfd8cffe sv back in the updater 2009-01-22 17:36:03 +00:00
zzz
a4468219c7 sv take 4 2009-01-22 17:24:38 +00:00
zzz
70f07e5bc7 sv encoding take 3 2009-01-22 16:03:12 +00:00
zzz
173e8a0434 console css tweaks 2009-01-22 16:00:41 +00:00
zzz
10e2c3832d Move SummaryHelper.getTransferred() to DataHelper, rename to formatSize(), use on tunnels.jsp 2009-01-22 04:02:41 +00:00
zzz
c620420a6f * I2PTunnel Edit Pages:
- Change default length to 2+0
      - Cleanup helper code
      - Stub out the following new options (C=client, S=server):
        + Access list (S)
        + Certificate type (S)
        + Encrypted LeaseSet (S)
        + New dest on idle restart (C)
        + Tunnel closure on idle (C)
        + Tunnel reduction on idle (C,S)
2009-01-20 17:24:28 +00:00
zzz
6be54942ec * Streaming, I2CP, Client Message sending:
Pass message timeout through new I2CP message
       SendMessageExpiresMessage, so that the router
       uses the same expiration as the streaming lib.
       Should help reliability.
     * I2CP:
       Implement new I2CP message ReconfigureSessionMessage.
       Will be used for tunnel reduction.
2009-01-20 17:22:56 +00:00
zzz
ab92206b77 * Streaming: TCB control block sharing
also tweak ResendPacketEvent to prepare for PacketQueue sending timeout to I2CP
2009-01-20 17:20:37 +00:00
zzz
0e2a4227ef * LeaseSet: Add encrypt/decrypt methods 2009-01-20 17:16:24 +00:00
zzz
8d891b99d1 * Router: Add a keyring for decrypting leases
* Routerconsole: Add configkeyring.jsp
2009-01-20 17:12:24 +00:00
zzz
72fd42ef9b -11 2009-01-17 17:35:14 +00:00
zzz
ba7dbf9064 propagate from branch 'i2p.i2p.zzz.test' (head d4e23b124489f9a3dd9410aa941e88823702b950)
to branch 'i2p.i2p' (head 7a54e1c58b8cf2ad43830ddec6d404229e3e6e60)
2009-01-17 17:33:17 +00:00
zzz
807f0665b1 tweak 2009-01-17 17:31:00 +00:00
zzz
416b0e4540 Prevent two NTCP Pumpers 2009-01-17 17:28:37 +00:00
zzz
011ded2ee4 -10 2009-01-14 17:06:52 +00:00
zzz
f9faf3c70d propagate from branch 'i2p.i2p.zzz.test' (head 4bd16d213231d7bd4373d4b57c449b358389f568)
to branch 'i2p.i2p' (head c7655ab1094ca15b4485ea2ac66085e87e28b0d6)
2009-01-14 17:04:35 +00:00
zzz
0ea532c72e reduce initial RTT to 8s 2009-01-14 13:50:44 +00:00
zzz
104cf8346e add .de thx echelon 2009-01-13 21:17:01 +00:00
zzz
3e7e5d6113 dont build sam tests by default 2009-01-13 19:54:07 +00:00
zzz
0275c5e13b crstrack 2009-01-13 19:53:35 +00:00
zzz
1c76d240e0 * i2psnark:
- Fix double completion message
      - Add crstrack
2009-01-13 19:52:45 +00:00
zzz
366da1b37c add b32 config for mosfet 2009-01-13 19:32:10 +00:00
zzz
bdcb625e6d fix rare NPE 2009-01-13 19:28:09 +00:00
zzz
8296723533 * HTTPClient: Fix per-tunnel settings for i2cp.gzip and i2ptunnel.httpclient.send* (thx tino) 2009-01-13 19:27:14 +00:00
zzz
957c809774 drop more syndie files 2009-01-12 16:28:36 +00:00
zzz
70b99cf4f9 prevent possible latency-measuring attack 2009-01-12 14:51:38 +00:00
zzz
05a6353142 .b32.i2p 2009-01-12 14:31:43 +00:00
zzz
85615b972b noobhelp 2009-01-12 05:21:16 +00:00
zzz
e3abea1ad2 add netdb links on tunnels.jsp 2009-01-11 15:25:23 +00:00
zzz
bc54908a22 cleanups using getProperty(String, int) 2009-01-10 22:34:07 +00:00
zzz
60bd9803f0 fix burst seconds display 2009-01-10 22:30:43 +00:00
zzz
c3360cc3d7 remove 1m fail column 2009-01-10 21:47:38 +00:00
zzz
aa71725159 -9 2009-01-08 21:00:08 +00:00
zzz
574713e608 propagate from branch 'i2p.i2p.zzz.test' (head 27dec7ffd064f6ecb40189c0438e4aee9f887a9c)
to branch 'i2p.i2p' (head 5aa9ccf6d6abec74c2d0d92ca02bc807463be93b)
2009-01-08 20:53:56 +00:00
zzz
0aaae0b0da robt4 2009-01-08 20:48:57 +00:00
zzz
ed34964747 reduce fast retx threshold to 2 2009-01-08 20:41:50 +00:00
zzz
7b758d89d0 * ExploreJob/SearchJob - more fixes:
- Disable ExploreKeySelectorJob completely, just have
        StartExplorersJob select a random key if queue is empty
      - Add netDb.alwaysQuery=[B64Hash] for debugging
      - Queue results of exploration for more exploration
      - Floodfills periodically shuffle their KBuckets, and
        FloodfillPeerSelector sorts more keys, so that
        exploration works well
2009-01-08 19:27:57 +00:00
zzz
1c7111eca0 alternate base32 check 2009-01-07 14:48:16 +00:00
zzz
831f09c91a fix corruption of update urls 2009-01-05 20:30:36 +00:00
zzz
4f836a20e1 * ExploreJob/SearchJob - fix brokenness:
- Give each search a minimum of time even at the end
      - Fix ExploreJob exclude peer list
      - Always add floodfills to exclude peer list
      - Don't queue keys for exploration or run ExploreJob
        if floodfill
      - Allow floodfills to return non-floodfills in
        a DSRM msg so exploration works
2009-01-05 15:21:00 +00:00
zzz
8faeaaa1ae Transport: Don't shitlist a peer if we are at our connection limit 2009-01-05 15:16:14 +00:00
zzz
7271289c1f Shitlist: Reduce max time to 30m (was 60m) 2009-01-05 15:13:42 +00:00
zzz
8421ae1ed4 * Streaming: Reduce default initial window size from 12 to 6,
to account for the MTU increase in the last release
2009-01-05 15:12:56 +00:00
zzz
d042c6b921 recognize robert 0.3 2009-01-05 15:11:36 +00:00
zzz
e2e4516a8f Fix display of outbound backup count 2009-01-05 15:11:00 +00:00
zzz
efc604a25c Remove readme_xx.html from updater 2009-01-05 15:06:56 +00:00
zzz
5c1864ed5e addressbook: Prevent Base32 hostnames 2009-01-05 15:06:29 +00:00
zzz
debf92fd9b history for prop., -8 2009-01-03 00:49:33 +00:00
zzz
9477b139be propagate from branch 'i2p.i2p.zzz.test' (head 014db28e7b42a25a02de0c0eee5f2fc57352e268)
to branch 'i2p.i2p' (head e4d9945a49c24434a8eaf34d142e033a3a6e0828)
2009-01-03 00:42:14 +00:00
zzz
53ce3c4802 sort torrents with a locale-based sort 2009-01-03 00:05:03 +00:00
zzz
d61af12867 clean up and fix the possibly broken browser launcher config 2009-01-02 20:09:20 +00:00
zzz
908c542b40 move buttons 2009-01-02 18:07:16 +00:00
zzz
ef998349cc require router.memoryUsed stat 2009-01-01 13:58:00 +00:00
zzz
44446d76e4 convert db to concurrent 2009-01-01 13:54:42 +00:00
zzz
a616a5f1c9 prep for upcoming torrent updater 2009-01-01 13:13:04 +00:00
zzz
c0b616e519 revert core version, -7 2009-01-01 12:45:33 +00:00
b4d3986006 router and core version bump 2008-12-31 07:53:30 +00:00
ba9108f937 bump revision to 0.0.3 2008-12-30 13:20:54 +00:00
161379f004 Removed debug line. 2008-12-30 10:29:39 +00:00
841feaedff Bugfix for getting Properties to actually work. 2008-12-30 07:52:04 +00:00
ba8de6c565 Spelling error correction. 2008-12-22 23:04:41 +00:00
zzz
d6148db455 * NetDb:
- Expire routers with introducers after 90m.
        This should improve reachability to firewalled routers
        by keeping introducer info current.
      - Expire routers with no addresses after 90m.
2008-12-21 14:43:09 +00:00
zzz
33b43f40b9 try again to kill the i2psnarkurl files 2008-12-20 02:33:57 +00:00
zzz
4336dc441e Remove spurious UDP warning on startup 2008-12-20 01:04:19 +00:00
zzz
2d86e7cf60 add router.memoryUsed stat 2008-12-20 01:00:53 +00:00
zzz
219e96d416 Remove apps/ bogobot jdom pants q rome stasher syndie 2008-12-15 21:54:52 +00:00
zzz
0c72fe7383 history for prop -5 2008-12-14 15:14:05 +00:00
zzz
369599fedd propagate from branch 'i2p.i2p.zzz.test' (head c021d3213ed91036828c43f1e93916e319d47bc1)
to branch 'i2p.i2p' (head f571e6566b12cd0ae93fd57157b849d5a963612f)
2008-12-14 15:10:12 +00:00
zzz
847c9dafce * I2CP, HostsTxtNamingService, I2PTunnel:
Implement Base32 Hash hostnames, via the naming service.
      Names are of the form [52-characters].i2p, where
      the 52 characters are the Base32 representation of our
      256-byte hash. The client requests a lookup of the hash
      via a brief I2CP session using new I2CP request/reply
      messages. The router looks up the leaseset for the hash
      to convert the hash to a dest. Convert the I2PTunnel
      'preview' links to use Base32 hostnames as a
      demonstration.
2008-12-14 15:03:11 +00:00
zzz
734818f651 * Transport:
- Cleanup max connections code
      - Add i2np.udp.maxConnections
      - Set max connections based on share bandwidth
      - Add haveCapacity() that can be used for connection
        throttling in the router
      - Reject IBGW/OBEP requests when near connection limit
      - Reduce idle timeout when near connection limit
    * Tunnel request handler:
      - Require tunnel.dropLoad* stats
      - Speed up request loop
2008-12-14 14:07:37 +00:00
zzz
dae6fd47d9 javadoc fixes 2008-12-13 18:07:20 +00:00
zzz
0956393cf3 add int getProperty(String prop, int default) 2008-12-10 16:32:26 +00:00
zzz
d16f187394 change restart/shutdown/update links to buttons 2008-12-10 16:25:09 +00:00
zzz
962a8f6f49 more splitting classes 2008-12-10 15:37:28 +00:00
9aa8707647 Prepended log LVL to messages, added INFO LVL 2008-12-08 22:34:45 +00:00
zzz
1fdd228a9d constructor fix 2008-12-08 16:38:46 +00:00
zzz
819d857550 Do not build tests 2008-12-08 15:03:45 +00:00
zzz
04fb12932f prop history, -4 2008-12-08 14:12:29 +00:00
zzz
703b6ed190 propagate from branch 'i2p.i2p.zzz.test' (head eac1d36c16cf82b0d98167c58e1562aa443ee5e5)
to branch 'i2p.i2p' (head b1fa07e8a4dabc26e731f7d486677abb165d975c)
2008-12-08 14:00:09 +00:00
zzz
bd6c63cc7e add findbugs target 2008-12-06 00:11:13 +00:00
zzz
7dbb13d6dc move atalk from core to apps 2008-12-05 20:31:54 +00:00
zzz
ebdc69cbc2 remove PRNG from summary bar 2008-12-05 14:52:15 +00:00
zzz
868fe90d7a increase max files to 256 2008-12-05 14:38:59 +00:00
9e39f34473 BOB: removed debugging (oops!)
BUMP: BOB to 00.00.02
BUMP router to -3
2008-12-05 10:12:10 +00:00
45ed744210 BUMP to -2 for bug reporting. 2008-12-05 09:55:53 +00:00
701904d119 BUGFIX: streaming lib blocking on a write() will now fail when the socket
is closed from under it.
Enhancement: BOB can now clear a destination in under 1 second with the above fix.
	BOB also will do a thread dump when something really aweful happens,
	so that developers/users can help in debugging.
2008-12-05 09:51:48 +00:00
zzz
dcf4bb595f split classes into their own files 2008-12-04 21:56:22 +00:00
zzz
e9f27c60dd avoid two NPEs on corrupt fragments 2008-12-04 00:09:52 +00:00
zzz
321f11c055 robert + xl 2008-12-03 23:38:13 +00:00
zzz
85cebc7992 * Transport:
- Fixes and cleanups when NTCP and/or UDP transports disabled
      - More TCP removal cleanup
      - Clean up bandwidth limiting, centralize defaults
      - Force burst to be >= limit
      - Increase default bw to 48/24, burst 64/32
2008-12-03 18:53:57 +00:00
zzz
8e5c4a3e22 error to warn 2008-12-03 16:55:48 +00:00
zzz
dff75de97a tweak 2008-12-03 14:46:37 +00:00
zzz
f1fd35265a enable blocklists by default 2008-12-03 14:26:39 +00:00
zzz
b73b3fc5ac * i2psnark:
- Add default i2psnark.config for new installs
      - Remove wishlist link
2008-12-03 01:49:19 +00:00
zzz
13d4ccf2e7 remove restart button if no wrapper 2008-12-02 19:07:58 +00:00
zzz
8c9ac941bf fix NPE on early shutdown 2008-12-02 16:28:29 +00:00
zzz
3fc698c7d3 disable eepsite webapps by default 2008-12-02 16:26:26 +00:00
zzz
15596c9230 add textareas to susidns 2008-12-02 16:25:43 +00:00
zzz
7fdbe9b87b post-0.6.5 netdb stats cleanup 2008-12-02 16:25:16 +00:00
zzz
5acc56c184 increase standalone to 128MB max mem 2008-12-02 16:23:54 +00:00
zzz
c524231c6d history for the propagate of the snark rewrite 2008-12-01 02:57:24 +00:00
zzz
5d4a7967cb propagate from branch 'i2p.i2p.zzz.i2psnark' (head 738b0ee2a3e938f83c8524d7ee1cbd66c83d7d56)
to branch 'i2p.i2p' (head 7bc276bf13158ca72d687031fdf5e9921efc5050)
2008-12-01 02:51:28 +00:00
01101f9867 * Fix typos in news.xml 2008-12-01 01:07:22 +00:00
c93ccd15eb * Update versions, package release, fix typo in comment 2008-12-01 00:23:53 +00:00
zzz
73280ab834 amiga->echelon 2008-11-28 18:08:15 +00:00
6a3c52b7fa Added verify command to check that a destination's BASE64 is correct for
external applications that need it.
2008-11-28 16:07:29 +00:00
dev
90983c8761 added inital version of a deploy script 2008-11-27 19:19:24 +00:00
zzz
daac598bde fix windows url launcher 2008-11-26 18:32:51 +00:00
dev
41d98acc95 minor style changes 2008-11-26 15:56:36 +00:00
dev
c8970c0fc6 changed some of the URL's 2008-11-26 15:20:00 +00:00
zzz
4e5825c648 * Cache DNS and negative DNS for 5m (was 1m and forever)
* Delay shitlist cleaner at startup
    * Strip wrapper properties from client config
    * Define multiple cert type
    * Prohibit negative maxSends in streaming
    * HTML fixup on configtunnels.jsp
    * Increase wrapper exit timeout from default 15s to 30s
2008-11-21 16:29:16 +00:00
zzz
93f0092437 propagate from branch 'i2p.i2p.zzz.test' (head fa1d7d3151cb0b03dde308766d3d350afda8f14a)
to branch 'i2p.i2p' (head 8cb6295e6a3492fd3b93366bfb0ebf231115fa85)
2008-11-20 15:53:30 +00:00
zzz
bad4c4a133 SAM: Convert from I2PThread to I2PAppThread so it won't
shutdown the whole router when ooming.
2008-11-20 14:59:55 +00:00
zzz
da9a4ce557 EepGet:
- Better handling of 504 gateway timeout
     (keep going up to limit of retry count rather
      than just one more partial fetch)
   - Add -t cmd line option for timeout
   - Better handling of 403, 409, 503 errors
   - Don't keep going after unknown return code
   - Don't delay before exiting after a failure
2008-11-20 14:14:13 +00:00
zzz
0ff8167425 i2psnark:
- Don't create SnarkManager instance until first call,
      so it doesn't create the i2psnark dir, read the config,
      etc., for single Snark instances.
    - Don't read i2psnark.config twice; fix setting
      i2psnark.dir
    - More Snark constructor changes for calling from router
    - Make max connections per torrent configurable
2008-11-18 02:18:23 +00:00
zzz
9ae589449d tweak 2008-11-16 19:12:58 +00:00
zzz
134764b154 i2psnark:
- Use new I2PAppThread that does not call global listeners on OOM,
      so that OOMing apps will not shutdown the whole router.
2008-11-16 17:24:08 +00:00
zzz
23699e46e5 i2psnark:
- Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
      and PeerCoordinatorSet
    - Convert static classes in Snark to listeners
    - Fix Snark to work in single torrent mode again
    - Should now work with multiple single Snarks
2008-11-16 17:11:53 +00:00
zzz
fa23a7b066 i2psnark:
- Refactor to allow running a single Snark without a SnarkManager again,
    by moving some things from SnarkManager to I2PSnarkUtil,
    having Snark call completeListener callbacks,
    and having Storage call storageListener callbacks.
    This is in preparation for using Snark for router updates.
    Step 2 is to allow multiple I2PSnarkUtil instances.
  - Big rewrite of Storage to open file descriptors on demand, and
    close them when unused, so we can support large numbers of torrents.
2008-11-15 23:52:40 +00:00
zzz
de21a5ec48 drop old tcp transport and old tunnel build sources 2008-11-15 20:57:52 +00:00
zzz
b1a9dcf77e move dummy to his own file to help the build dependencies 2008-11-15 19:09:56 +00:00
zzz
15e7783477 handle missing fields in i2ptunnel edit pages better 2008-11-15 19:00:08 +00:00
zzz
afa17a8c04 * I2CP Compression:
- Add i2cp.gzip option (default true)
      - Don't bother compressing if really small
2008-11-15 15:03:19 +00:00
zzz
c7bb2e8f76 * build files:
- Don't die if depend not available
   - Only verify Jetty hash once
   - Add streaming lib tests to depends task
2008-11-14 14:48:08 +00:00
zzz
b4d299804b update history before propagate 2008-11-13 20:12:45 +00:00
zzz
77f5dd2d14 Fix blocklists with hashes only 2008-11-12 22:46:07 +00:00
zzz
c941d7bfa1 HTTPClient: Add config options to pass Via, Referer, and User-Agent through 2008-11-12 20:14:08 +00:00
zzz
049d6b2fa8 * Streaming:
- Add more info to Connection.toString() for debugging
      - Fix lifetimeMessages{Sent,Received} stats
      - Reduce RTT damping to 0.875 (was 0.9)
      - Add a stream.con.initialRTT.{in,out} stats
2008-11-12 20:10:39 +00:00
zzz
98038e9282 * Build files:
- Use the depend task with caching for more accurate dependencies
      - Make sure the routerconsole gets the latest router version
      - Fix addressbook repeated builds
2008-11-12 17:08:09 +00:00
zzz
6169904c76 oops remove extra stuff in IndexBean 2008-11-11 13:02:45 +00:00
zzz
04509f593a * Streaming: Enforce a minimum MTU of 512 2008-11-11 02:30:49 +00:00
zzz
875dd65dcb * I2PTunnel: Change "interactive" max window size to 16 (was 1) 2008-11-11 02:30:21 +00:00
zzz
b0ec6a0870 * Streaming - Fix several bugs and improve performance
when the initial data is larger than one MTU,
      e.g. HTTP GETs with large URLs, CGI params or cookies,
      or large HTTP POSTS:
      - Don't reject additional packets received without a
        send stream ID (i.e. sent before the SYN ACK was received)
      - Put unknown non-SYN packets on the SYN queue also
        so they won't be rejected
      - Reduce flusher delay to 250ms (was 500)
      - Flush unless window is full (was window is non-empty)
2008-11-10 20:30:14 +00:00
zzz
6ce2767514 * NetDb: Fix a deadlock caused by last checkin 2008-11-10 20:28:47 +00:00
zzz
5271838a14 -9 2008-11-09 16:18:45 +00:00
zzz
9ec45bbcf5 provide a link when starting a webapp 2008-11-09 16:10:59 +00:00
zzz
c9cef19a68 * Tunnel BuildHandler: add config router.participantOnly,
set to true to refuse OBEP and IBGW roles, should
      reduce connections significantly if set.
2008-11-09 16:08:24 +00:00
zzz
9f57be5f03 * Jetty: Add a I2PRequestLog class to log request dest hash 2008-11-09 16:05:13 +00:00
zzz
1793b05784 * NetDb: Don't drop routerInfos if we have connectivity issues or other problems 2008-11-09 16:02:44 +00:00
zzz
f95c324832 * configtunnels.jsp:
- Code cleanup
      - Add 4-hop option
      - Remove +/- 0-2 option
2008-11-09 15:59:35 +00:00
zzz
016c843ad6 * I2PTunnelHTTPServer: Put the requestor's dest hash
in the request headers
2008-11-09 15:57:58 +00:00
zzz
e52526b256 * NTCP: Lower idle timeout to 10m (was 15m) 2008-11-09 15:57:07 +00:00
zzz
7722ab5f6f * Routerconsole: Replace wtf msg w/ something nicer 2008-11-09 15:55:40 +00:00
zzz
c024398b93 Add some javadoc files 2008-11-09 15:54:04 +00:00
zzz
2e72ece384 * build.xml: Build speedups:
- Don't distclean in the updaterRouter target
      - Don't make prepUpdate and prepupdateSmall depend
        on distclean
      - Don't make susimail build always clean
      - Make pkg depend on distclean to be sure
      - Clean out more routerconsole and susidns files in 'ant clean'
      - i2ptunnel, routerconsole, susidns:
        Only build WEB-INF when necessary
      - systray: Only build jar when necessary
      - Don't build i2psnark standalone for the updater target
2008-11-09 15:46:08 +00:00
zzz
2b8d59d9f4 more override removals 2008-11-09 15:42:50 +00:00
dev
28b4c92241 should compile on 1.5 again now 2008-11-09 14:32:27 +00:00
dev
c9d9a83f73 finished core 2008-11-09 10:09:01 +00:00
dev
7bf57870d6 and again some more ;) 2008-11-09 09:49:54 +00:00
dev
d41b68438d and another bunch 2008-11-08 23:14:47 +00:00
dev
c634e5005d cleanup: annotated a bunch of files 2008-11-08 22:46:42 +00:00
dev
e0926b8ccd minor update to the checklist 2008-11-08 21:56:45 +00:00
dev
5ea7adb857 updated style of PrivateKeyFile to conform (more or less) to sun coding standards 2008-11-08 19:11:41 +00:00
zzz
bf12c5f9bf * Certificates:
- Add a signed Certificate type
      - Add a main() to PrivateKeyFile to generate
        Destinations with various Certificate types
      - Add a VerifiedDestination class to check Certificates
        of various types
      - Add a HashCash library from http://www.nettgryppa.com/code/
        (no distribution restrictions)
      - Allow non-null Certificates in addressbook
2008-11-02 22:13:11 +00:00
zzz
47d5e44b16 * Throttle: Reduce default max tunnels to 2000 (was 2500) 2008-11-02 21:53:17 +00:00
zzz
f6996c7d8b * NamingServices: Implement caching in the abstract class 2008-11-02 21:41:08 +00:00
zzz
fb7f4f2d11 * clients.config: Disable SAM and BOB by default for new installs 2008-11-02 21:39:32 +00:00
zzz
d89f97acd5 * I2PTunnel: Move some wayward stats to the I2PTunnel group 2008-11-02 21:38:49 +00:00
zzz
f3c9343c79 * NewsFetcher: Fix last updated time 2008-11-02 21:37:28 +00:00
zzz
16ec091209 * Streaming: Increase MTU to 1730 (was 960);
see ConnectionOptions.java for analysis
2008-11-02 21:36:52 +00:00
0b599c45ec Refactored code.
Piles of pedantic lock checks to ensure we don't get deadlocked, it's ugly.
2008-10-31 21:11:03 +00:00
7f3f6dfde3 Patches to (hoefully) fix deadlock in BOB and revision bumpped to B
SusiMail JavaDoc additions.
2008-10-30 15:04:16 +00:00
d736b75dc2 merge of '146998571b0b88243eb67af215b740f504fbcc50'
and 'ee93f3940b59255ddab5fa4aafd6f567f46783f7'
2008-10-29 09:00:13 +00:00
fa2f06b1d8 JavaDoc fixes 2008-10-29 08:59:56 +00:00
zzz
4212858409 fix english link in readme_nl.html 2008-10-28 19:07:39 +00:00
zzz
33221ce7fd More findbugs cleanup 2008-10-26 18:18:34 +00:00
zzz
fd5fcebae9 * NetDb:
- Fix behavior when router.isHidden=true
       - Delay StartExplorersJob for 10m at startup
       - More findbugs cleanups
    * netdb.jsp: Indicate if hidden
2008-10-26 18:16:18 +00:00
zzz
b743449715 * NetDb:
- Update dbLookup profile stats in FloodOnlySearchJob
         and FloodfillVerifyStoreJob
       - Fix response time store in profile in SearchJob
    * profiles.jsp: Don't override locale number format,
       clean up the response time output for floodfills
2008-10-26 18:12:36 +00:00
zzz
2a08fc7a34 * FloodfillMonitor:
- Fix ff count (we forgot ourselves)
       - Don't become ff if hidden
2008-10-26 18:08:20 +00:00
zzz
0c520de6e5 * HandleFloodfillDatabaseLookupMessageJob:
- Send back your routerinfo with the DSRM if not ff to
         spread the word that you aren't ff anymore
       - Fix behavior when router.isHidden=true
2008-10-26 18:05:51 +00:00
zzz
09b868e243 * Blocklist: Change logging from ERROR to WARN 2008-10-26 18:02:21 +00:00
zzz
83801c9feb * Stats:
- Remove unused tunnel.buildSuccess and tunnel.buildFailure
       - Remove tunnel.buildRequestTime and 5m rate stats from
         netDb, effective in next release
2008-10-26 18:00:49 +00:00
zzz
152f824779 * config.jsp: Add more help
* summary.jsp: Indicate if hidden
2008-10-26 17:24:11 +00:00
zzz
68256930b9 * UDP:
- Don't do peer tests when hidden
       - Don't offer to introduce when hidden
       - Don't continually rebuild routerInfo when hidden
       - Don't continually rebuild routerInfo when
         i2np.udp.internalPort is set but i2np.udp.port is not
       - Remove some unused functions
2008-10-26 17:20:19 +00:00
zzz
622951c794 * tunnels.jsp: Indicate if pool is dead 2008-10-26 17:18:07 +00:00
zzz
baa70299fc * I2Ping:
- Add -n count option
       - Add rtt output
       - Enhance help
       - Fix option handling
2008-10-26 17:15:59 +00:00
zzz
47856f312c * i2ptunnel/edit.jsp: Disable word wrap in textarea 2008-10-26 17:14:07 +00:00
zzz
b4c808918b * peers.jsp: Clean up 'Listening on' formatting 2008-10-26 17:11:12 +00:00
e6e4c60a25 BOB version bump to 0xA 2008-10-22 06:59:48 +00:00
2dc699b382 Better handling of listening sockets. 2008-10-22 06:57:07 +00:00
zzz
22454a06d4 UTF-8 readme_sv.html 2008-10-21 17:45:19 +00:00
zzz
0e0459f88a more findbugs 2008-10-19 22:36:18 +00:00
zzz
20effe3a7f Big findbugs cleanup 2008-10-19 22:09:14 +00:00
zzz
8a756a6e81 * FloodOnlySearchJob: Recover better if the floodfills
you know are no longer floodfill or are gone
2008-10-19 21:50:12 +00:00
zzz
a7e876da1e * FloodfillMonitor:
- Don't become ff if clock skew is high
       - Rebuild routerinfo immediately when ff status changes
2008-10-19 21:48:55 +00:00
zzz
06be4515e4 * ShellCommand: Fix main() 2008-10-19 21:46:04 +00:00
zzz
af630e9559 * configclients.jsp: Handle clients with no args 2008-10-19 21:45:04 +00:00
zzz
50c93e25c7 * Installer: Bump min JRE to 1.5 2008-10-19 21:43:56 +00:00
zzz
2d6007cf49 readme_sv.html 2008-10-19 21:42:56 +00:00
zzz
7aaed8e686 * Client: Prevent a race causing session reconnect 2008-10-19 21:41:07 +00:00
zzz
e2a1835142 readme_nl.html 2008-10-15 20:05:21 +00:00
zzz
078256da83 change to _de links 2008-10-14 17:53:16 +00:00
zzz
4f8d84e9e7 Add multilanguage support for index.jsp 2008-10-14 16:23:23 +00:00
zzz
ae967d6ef4 Disable word wrap in textareas 2008-10-14 15:46:21 +00:00
zzz
3b46b16038 Remove failing count from summary bar 2008-10-14 14:28:02 +00:00
zzz
25bf6e59bc Update install.txt files for 1.5 2008-10-14 14:26:40 +00:00
c4030f8dab Fixed one javadoc problem in snark.
This patch completes the javadoc fixups. Additions are pending.
2008-10-13 03:18:44 +00:00
e103f33c29 Addressbook javadoc fixes
Addressbook now JDK5
build.xml fixed to remove annoying javadoc warnings.
2008-10-12 17:07:21 +00:00
1c6b78a8da SAM davadoc cleanups
JDK5 compliance
2008-10-12 16:07:23 +00:00
8117d0465c BOB fixes: Default Properties work, files are properly closed. 2008-10-11 21:59:18 +00:00
0ff846deee Added package details for BOB 2008-10-11 16:50:55 +00:00
87a992bd3f Patched java docs to remove sam and bob from the SDK;
SAM and BOB are not part of the SDK in the first place.
2008-10-11 16:50:20 +00:00
41c38e64c3 Added JDK5 lint fixes
Streaming lib javadocs
2008-10-11 13:23:55 +00:00
ca5c15d4de Added more complete javadocs to ministreaming and cleaned up overrides so
the code is JDK5 compliant. There remains some unchecked warnings, but these
aren't important at this juncture.
2008-10-11 10:28:31 +00:00
f3f7537ec6 Set BOB source/target to JDK 5 (AKA 1.5)
Minor bugfixes/code cleanup on BOB
Add/Cleanup some documentation to streaming lib javadocs
2008-10-11 07:45:30 +00:00
zzz
855293d673 * Tunnels: Implement random discard to enforce share limit 2008-10-10 17:34:25 +00:00
zzz
4c2d4144d1 * i2psnark: Change default tunnel length from 1+1 to 2+0 2008-10-10 17:33:27 +00:00
zzz
387587b0b6 * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
for improved anonymity
2008-10-10 17:30:35 +00:00
zzz
43e95a70d1 * configpeer.jsp: Table cleanup 2008-10-10 17:29:48 +00:00
zzz
ad56eb7220 * UDPPacketReader: Adjust logging 2008-10-10 17:29:18 +00:00
zzz
d2d32f0ad1 * peers.jsp: Change <,> to in,out for UDP 2008-10-10 17:28:23 +00:00
zzz
0428726e30 * Profiles: Reduce reject penalty in
capacity calculation to avoid a congestion collapse
2008-10-10 17:27:23 +00:00
zzz
2eb154c24c * Tunnel Tests: Add time for outbound delay, to avoid
congestion collapse
2008-10-10 17:26:44 +00:00
zzz
4ec82beec5 * build files: Change to source=1.5, target=1.5 2008-10-10 17:25:58 +00:00
224ebb16d4 Bugfixes for BOB, Important database locking to prevent thread collisions. 2008-10-09 11:58:00 +00:00
cb17fb8805 Made BOB 1.4 java compliant. 2008-10-08 16:40:07 +00:00
2c048d7465 Revision/history changes 2008-10-08 15:39:39 +00:00
00d537e5e4 Added new command to BOB, and made API a little better. 2008-10-08 15:28:06 +00:00
5eef43d239 BOB "option" added, next small push will have an API fix. 2008-10-08 14:57:02 +00:00
caaf0ccfc3 Additional BOB fixes.
Added BOB to clients.config and wrapper.config for new installs.
2008-10-08 14:28:35 +00:00
18d42ec925 A few fixes to make BOB a little more quiet,
there is possibly a little left, though.
2008-10-07 20:00:08 +00:00
872d2c48c9 Added demos for BOB 2008-10-07 19:43:43 +00:00
a3b9345ff1 Patch to reflect build version 2008-10-07 18:52:19 +00:00
eae67a44f0 merge of '07188d6eb4d52af5bdde5cbb23dc6facea726ad0'
and 'be6f83df49d5f766fd655b9ca0388bb30d68dfeb'
2008-10-07 18:50:53 +00:00
a988358ebb history.txt additions 2008-10-07 18:38:45 +00:00
bb32672c11 NEW BOB, a replacement for SAM, added It does have a different API. See it's java-doc. 2008-10-07 18:30:07 +00:00
ae0a51669c * Update versions, package release 2008-10-06 13:28:34 +00:00
f1c4a85991 Code cleanup in I2PSocketManagerFull and I2PServerSocketFull
BUGFIX ConnectionHandler had a comparason bug that caused it to block when infact it was asked NOT to block
2008-10-06 09:28:59 +00:00
0a5eeed370 merge of '2f46bb4293a808d63ad2494aaebced5cf2227f52'
and '702d19f746dabc901ebadec705ce42950c124f55'
2008-10-04 18:41:55 +00:00
zzz
bf07a6a3c2 * checklist update
* i2psnark: Add codevoid link, remove mastertracker
    * hosts.txt: add echelon, codevoid
2008-09-29 11:49:09 +00:00
5913d9ee4a ADDED SimpleStore, cuz I forgot to add it 2008-09-28 16:36:59 +00:00
61749aaaa9 Added Simple true/false storage class to the utilities
Added socketSoTimeout
CHANGED RetransmissionTimer is now public
FIXED SimpleTimer has a way to be stopped, and reap it's children
CLEANUP A few javadoc additions, where I could figgure out bits
CLEANUP all code that needed to catch the timeout exception for socketSoTimeout
2008-09-27 22:59:22 +00:00
b0313bd6bf disapproval of revision '7ed18fd4c3a5430150a2d76bfe202bc491115974' 2008-09-27 16:00:06 +00:00
dd7d993631 Added Simple true/false storage class to the utilities
Added socketSoTimeout
CHANGED RetransmissionTimer is now public
FIXED SimpleTimer has a way to be stopped, and reap it's children
FIXED Lots of javadoc additions, where I could
CLEANUP all code that needed to catch the timeout exception for socketSoTimeout
2008-09-25 23:59:01 +00:00
ee2fd32a97 disapproval of revision 'bd09bb36a90e766b3a406d78055d427a6200dd41' 2008-09-25 23:31:57 +00:00
fa5c7219d3 Added {get,set}SOTimeout() to the ServerSocket API,
and fixed all the broken mainstream applications depending on it.
Fixed a grave bug in SimpleTimer.
Fixed Steraming Timer to be public.
Fixed a pile of JavaDoc comments, and reformatted the files I touched.
2008-09-25 06:55:04 +00:00
8d78a77a8c Allow SimplerTimer to die.
Still needs some methods to be able to reap it, and it's children.
2008-09-24 10:35:32 +00:00
zzz
52d38e0452 * config.jsp: Add some reachability help
* configpeer.jsp: Add blocklist info
    * help.jsp: Add link to German FAQ
    * tunnels.jsp: Fix inactive participating count
2008-09-23 18:48:59 +00:00
zzz
fbad8a1e8e * SearchReplyJob: Don't look up references to shitlisted peers 2008-09-23 18:47:30 +00:00
zzz
f49277087c * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout 2008-09-23 18:47:10 +00:00
zzz
e5c7b79cf5 * NetDb: Fix the totally broken "check new routers against blocklist"
code from 3 checkins ago
    * tunnels.jsp: Sort participating tunnels by usage, display rate
2008-09-20 14:08:02 +00:00
zzz
6b1224b23e 2008-09-19 zzz
* Tunnels:
      - Add missing message accounting for inbound gateways,
        we were underestimating participating traffic because of it,
        and the tunnels were classified "inactive"
      - Add participating tunnel role on tunnels.jsp
2008-09-19 01:03:57 +00:00
zzz
0bbc94f43c * Throttle:
- Correctly check inbound and outbound total bw limits separately
      - Fix up and actually use the tunnel.participatingMessageCount stat,
        favor it if lower than the total bw stat, so that
        client traffic isn't included for throttle decisions
      - Reduce min message count from 60 to 40
    * Tunnel Dispatcher:
      - Add tunnel.participatingBandwidth stat
      - Remove all 3h and 24h stats
2008-09-18 17:14:14 +00:00
zzz
7c083ed33b * logs.jsp: Remove unused connection log, cut wrapper log output in half
* configlogging.jsp: Increase box width
2008-09-15 16:23:47 +00:00
zzz
50f10e8cf1 * FloodOnlySearchJob:
- Ask non-floodfill peers if we don't know any floodfills
      - Lookup hashes in the DatabaseSearchReplyMessage if we
        don't know enough floodfills
2008-09-15 16:22:09 +00:00
zzz
69d9c054d8 * Tunnel Pool:
- Prevent excess zero-hop tunnels
      - Always wait before looping in BuildExecutor
2008-09-15 16:21:23 +00:00
zzz
fcfe4397c4 * NetDb: Check new routers against blocklist 2008-09-15 16:20:23 +00:00
zzz
e734a55872 * Router: Shutdown clients first
* Throttle:
      - Use 60s rather than 10m tunnel.participatingMessageCount stat
      - Fix a summary bar message
    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
      every 20s, rather than at tunnel expiration, to maintain
      a more current stat
2008-09-15 16:19:08 +00:00
zzz
825af3e6c1 * HarvesterJob: Don't instantiate if disabled
* NetDb: Add netDb.exploreKeySet stat
    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
      and ?r=. to view our own; change links on other pages too
2008-09-12 13:37:22 +00:00
zzz
cf54dd159d * Blocklist: Fix a log message format 2008-09-12 13:28:14 +00:00
zzz
6b1fb674ea * i2psnark:
- Add config i2psnark.linkPrefix to enable access to completed
        torrents from a different machine - examples:
           i2psnark.linkPrefix=file://///localserver/path/to/files/
           i2psnark.linkPrefix=http://localwebserver/path/
        Stop i2psnark, add to i2psnark.config, restart
      - Remove Galen and NickyB trackers
2008-09-12 13:27:07 +00:00
zzz
97366824d6 * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private 2008-09-12 13:25:51 +00:00
zzz
2ac5361937 fix compile error 2008-09-06 15:54:53 +00:00
zzz
9a2792e64c * EepGet command line: Fix byte counts after a failed resume
* UpdateHandler: Cleanup, clarify failure message
2008-09-06 13:52:46 +00:00
zzz
1091a289d2 * NTCP: Mark unreachable on outbound connection timeout 2008-09-06 13:49:31 +00:00
zzz
536f5d0c7b * Shitlist: Fix partial shitlisting (still unused though) 2008-09-06 13:48:57 +00:00
zzz
a3108ead4a * Throttle: Combine current and last bw measurement,
reduce default max tunnels to 2500 (was 3000)
2008-09-06 13:48:25 +00:00
zzz
808557d24f * Summary Bar: Warn if firewalled and floodfill 2008-09-06 13:47:56 +00:00
zzz
6501d403ab * Tunnel BuildHandler: Logging cleanup 2008-09-06 13:47:30 +00:00
zzz
ef328ed3cc * DataHelper: Prepare for 999 day uptime :) 2008-09-06 13:46:58 +00:00
zzz
62bf269c42 * Profiles: Penalize capacity when tunnel build request times out
* Tunnel BuildExecutor: Debug cleanup
2008-08-29 13:15:28 +00:00
zzz
ee4d68cf6a * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed 2008-08-29 13:13:45 +00:00
zzz
e064b0a0e1 * Shutdown: Call the shutdown hooks before the router shutdown
rather than after
2008-08-29 13:12:55 +00:00
zzz
c321251bb7 Add galen.i2p and tracker.mastertracker.i2p 2008-08-28 16:08:01 +00:00
zzz
896ba7ae1c * Floodfill Peer Selector: Prefer already-connected floodfill
peer for direct RouterInfo stores, to mimimize floodfill
      connections
    * Peer Profiles: Classify connected peers as "active",
      which will help improve the fast pool
    * Transport Manager: Add isEstablished(Hash)
2008-08-27 19:58:13 +00:00
zzz
2c48831604 ntcp reduce idle timeout 2008-08-27 19:56:06 +00:00
zzz
9d70a5293f netdb stats cleanup 2008-08-27 19:55:47 +00:00
1680 changed files with 190337 additions and 72077 deletions

44
INSTALL-headless.txt Normal file
View File

@ -0,0 +1,44 @@
Headless I2P installation instructions
1) java -jar i2pinstall.exe -console (you've already done this)
This will run the installer in text mode, including running the postinstall.sh
script. After that, you may run 'sh i2prouter start'
which will start the router and attempt to launch a browser.
If you do not have an X server running, the browser launch will probably fail, and
you may use:
lynx http://localhost:7657/index.jsp
to configure the router.
If you're having trouble, swing by http://forum.i2p2.de/, check the
website at http://www.i2p2.de/, or get on irc://irc.freenode.net/#i2p
I2P will create and store files and configuration data in the user directory
~/.i2p/ on Linux and %APPDATA%\I2P\ on Windows. This directory is created
when I2P is run for the first time. It also creates files in the system
temporary directory specified by the Java Virtual Machine.
To change the location of these directories, or to configure I2P to
put all files in this directory (the so-called "portable" configuration),
edit the files i2prouter (Linux) and wrapper.config (Linux and Windows)
where there are comments labeled "PORTABLE". Do this before you
run I2P for the first time.
To run I2P explicitly:
(*nix): sh i2prouter start
(win*): I2P.exe
To stop the router (gracefully):
lynx http://localhost:7657/configservice.jsp ("Shutdown gracefully")
To stop the router (immediately):
sh i2prouter stop
To uninstall I2P:
rm -rf $i2pInstallDir
Supported JVMs:
Windows: Latest available from http://java.sun.com/ (1.5+ supported)
Linux: Latest available from http://java.sun.com/ (1.5+ supported)
FreeBSD: Sun 1.5-compatible (NIO required)
various: http://www.kaffe.org/ Sun 1.5-compatible (NIO required)

28
INSTALL.txt Normal file
View File

@ -0,0 +1,28 @@
I2P source installation instructions
To build and install I2P from source, you must first build
and package up the appropriate installer by running:
ant pkg
This will produce a few key files:
* install.jar: the GUI and console installer
* i2pinstall.exe: the GUI and console installer wrapped for cross-platform execution
* i2pupdate.zip: the update package
From there, you can run the headless (console mode) installer:
java -jar i2pinstall.exe -console
Or run the GUI installer:
java -jar i2pinstall.exe
Or move the update file into an existing installation directory and restart.
You will need to have ant installed from http://ant.apache.org/
(1.7.0 or newer)
Supported JVMs:
Windows: Latest available from http://java.sun.com/ (1.5+ supported)
Linux: Latest available from http://java.sun.com/ (1.5+ supported)
FreeBSD: Sun 1.5-compatible (NIO required)
various: http://www.kaffe.org/ Sun 1.5-compatible (NIO required)

229
LICENSE.txt Normal file
View File

@ -0,0 +1,229 @@
This product includes both public domain code and licensed code as described below.
For all code, unless otherwise stated in the appropriate license, the following applies:
NO WARRANTY
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
LICENSES
--------
Core:
Public domain except as listed below:
ElGamal and DSA code:
Copyright (c) 2003, TheCrypto
See licenses/LICENSE-ElGamalDSA.txt
SHA256 and HMAC-SHA256:
Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
See licenses/LICENSE-SHA256.txt
AES code:
Under the Cryptix (MIT) license, written by the Cryptix team
(That's what our website says but all our AES code looks like it is public domain)
Crypto filters:
From the xlattice app - http://xlattice.sourceforge.net/
See licenses/LICENSE-BSD.txt
SNTP code:
Copyright (c) 2004, Adam Buckley
See licenses/LICENSE-SNTP.txt
PRNG:
Copyright (C) 2001, 2002, Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv2.1.txt
GMP 4.1.3:
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
See licenses/LICENSE-LGPLv2.1.txt
HashCash code:
Copyright 2006 Gregory Rubin grrubin@gmail.com
See licenses/LICENSE-HashCash.txt
Router:
Public domain except as listed below:
UPnP.java:
From freenet
See licenses/LICENSE-GPLv2.txt
UPnP subsystem 1.7:
Copyright (C) 2003-2006 Satoshi Konno
See licenses/LICENSE-UPnP.txt
GeoIP data free to use, courtesy http://ip-to-country.webhosting.info/
Installer:
Launch4j 2.0.RC3:
Copyright (C) 2005 Grzegorz Kowal
See licenses/LICENSE-GPLv2.txt
The following projects are used by Launch4j...
MinGW binutils (http://www.mingw.org/)
Commons BeanUtils (http://jakarta.apache.org/commons/beanutils/)
Commons Logging (http://jakarta.apache.org/commons/logging/)
See licenses/LICENSE-Apache1.1.txt
See licenses/NOTICE-Commons-Logging.txt
XStream (http://xstream.codehaus.org/)
Copyright (c) 2003-2004, Joe Walnes
See licenses/LICENSE-XStream.txt
JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
Copyright (c) 2002-2004 JGoodies Karsten Lentzsch. All rights reserved.
See licenses/LICENSE-JGoodies-Forms.txt
JGoodies Looks (http://www.jgoodies.com/freeware/looks/)
Copyright (c) 2003 JGoodies Karsten Lentzsch. All rights reserved.
See licenses/LICENSE-JGoodies-Looks.txt
Foxtrot (http://foxtrot.sourceforge.net/)
Copyright (c) 2002, Simone Bordet & Marco Cravero. All rights reserved.
See licenses/LICENSE-Foxtrot.txt
Nuvola Icon Theme (http://www.icon-king.com)
See licenses/LICENSE-LGPLv2.1.txt
Forms were created using Abeille Forms Designer (https://abeille.dev.java.net/)
Izpack 4.3.0:
Copyright (c) 2001-2008 Julien Ponge
See licenses/LICENSE-Apache2.0.txt
Wrapper 3.1.1:
Copyright (c) 1999, 2004 Tanuki Software
See licenses/LICENSE-Wrapper.txt
Applications:
Addressbook:
Copyright (c) 2004 Ragnarok
See licenses/LICENSE-Addressbook.txt
BOB:
Copyright (C) sponge
DWTFYWTPL
I2PSnark:
Copyright (C) 2003 Mark J. Wielaard
See licenses/LICENSE-GPLv2.txt
I2PTunnel:
(c) 2003 - 2004 mihi
GPLv2 with exception.
See licenses/LICENSE-I2PTunnel.txt
See licenses/LICENSE-GPLv2.txt
I2PTunnel SOCKS Proxy:
Copyright (c) 2004 by human
GPLv2 with exception.
See licenses/LICENSE-I2PTunnel.txt
See licenses/LICENSE-GPLv2.txt
I2PTunnel UDP and Streamr:
By welterde.
See licenses/LICENSE-GPLv2.txt
Jetty 5.1.12:
Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.
See licenses/LICENSE-Apache1.1.txt
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Commons-Logging.txt
JRobin 1.4.0:
See licenses/LICENSE-LGPLv2.1.txt
Ministreaming Lib:
By mihi.
See licenses/LICENSE-BSD.txt
Proxyscript:
By Cervantes.
Public domain.
Router console:
Public domain.
Flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
GeoIP Data:
Copyright (c) 2003 Direct Information Pvt. Ltd. All Rights Reserved.
See licenses/LICENSE-GeoIP.txt
SAM:
Public domain.
Streaming Lib:
Public domain.
SusiDNS:
Copyright (C) 2005 <susi23@mail.i2p>
See licenses/LICENSE-GPLv2.txt
SusiMail:
Copyright (C) 2004-2005 <susi23@mail.i2p>
See licenses/LICENSE-GPLv2.txt
Systray:
Public domain.
Bundles systray4j code:
See licenses/LICENSE-GPLv2.txt
Other Applications and Libraries
--------------------------------
The following applications and libraries are not used or bundled in
binary packages, therefore the licenses are not included in binary
distributions. See the source package for the additional license information.
Atalk:
Public domain
Desktopgui
Copyright (c) Mathias De Maré
See apps/desktopgui/LICENSE
SAM C Library:
Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com>
See apps/sam/c/doc/license.txt
SAM C# Library:
Public domain.
See apps/sam/csharp/README
SAM Perl Library:
See licenses/LICENSE-GPLv2.txt
SAM Python Library:
Public domain.

View File

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

29
README.txt Normal file
View File

@ -0,0 +1,29 @@
Prerequisites to build from source:
Java SDK (preferably Sun) 1.5.0 or higher (1.6 recommended)
Apache Ant 1.7.0 or higher
To build:
ant pkg
Run 'ant' with no arguments to see other build options.
See http://www.i2p2.de/download.html for installation instructions.
Documentation:
http://www.i2p2.de/
API: run 'ant javadoc' then start at build/javadoc/index.html
Latest release:
http://www.i2p2.de/download.html
To get development branch from source control:
http://www.i2p2.de/newdevelopers.html
FAQ:
http://www.i2p2.de/faq.html
Need help?
IRC irc.freenode.net #i2p
http://forum.i2p2.de/
Licenses:
See LICENSE.txt

30
Slackware/README Normal file
View File

@ -0,0 +1,30 @@
ou will need atleast monotone > = 0.41 to get the most recent build source
and connect it to an already running i2p router.
OR:
You may download the actual "stable" source from
http://code.google.com/p/i2p/downloads/list
You will need to follwing tools to build the i2p and i2p-base packages:
bash >= 3.1.017
requiredbuilder >= 0.16.3 ( http://www.stabellini.net/requiredbuilder.html )
jre >= 6u11
jdk >= 6u11
apache-ant >= 1.7.1
perl >= 5.10.0
python >= 2.5.2
Reccomended:
monotone >= 0.41 ( http://pkgs.dr.ea.ms )
See also:
i2p/readme.txt
AND
i2p-base/readme.txt
for information and handy tips.

View File

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

View File

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

View File

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

View File

@ -0,0 +1,51 @@
#!/bin/sh
# Start/stop i2p service.
i2p_start() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory start )"
}
i2p_stop() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory stop )"
}
i2p_restart() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory restart)"
}
i2p_status() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory status )"
}
i2p_console() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory console )"
}
i2p_dump() {
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory dump )"
}
case "$1" in
'start')
i2p_start
;;
'stop')
i2p_stop
;;
'restart')
i2p_restart
;;
'status')
i2p_status
;;
'console')
i2p_console
;;
'dump')
i2p_dump
;;
*)
echo "usage $0 start|stop|restart|status|console|dump"
;;
esac

View File

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

View File

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

View File

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

8
Slackware/i2p/build.xml Normal file
View File

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

72
Slackware/i2p/doinst.sh Normal file
View File

@ -0,0 +1,72 @@
#!/bin/sh
INST_DIR=directory
( cd install
echo
for i in *.config ; {
if [ -f $INST_DIR/$i ] ; then
echo "Please check ${INST_DIR}${i}, as there is a new version."
cp $i $INST_DIR/$i.new
else
cp $i $INST_DIR/$i
fi
}
)
( cd $INST_DIR
if [ -f blocklist.txt ] ; then
echo "Please check ${INST_DIR}blocklist.txt, as there is a new version."
else
mv blocklist.txt.new blocklist.txt
fi
)
( cd $INST_DIR/eepsite
if [ -f jetty.xml ] ; then
rm jetty.xml.new
else
mv jetty.xml.new jetty.xml
fi
)
( cd $INST_DIR/eepsite/docroot
if [ -f index.html ] ; then
rm index.html.new
else
mv index.html.new index.html
fi
if [ -f favicon.ico ] ; then
rm favicon.ico.new
else
mv favicon.ico.new favicon.ico
fi
)
echo
echo "FINISHING I2P INSTALLATION. PLEASE WAIT."
cd $INST_DIR
OS_ARCH=`uname -m`
X86_64=`echo "$OS_ARCH" | grep x86_64`
if [ "X$X86_64" = "X" ]; then
wrapperpath="./lib/wrapper/linux"
else
wrapperpath="./lib/wrapper/linux64"
fi
cp $wrapperpath/libwrapper.so ./lib/
cp $wrapperpath/wrapper.jar ./lib/
cp $wrapperpath/i2psvc .
rm -rf ./lib/wrapper
chmod 744 ./i2psvc
echo
echo "Installation finished."
echo
exit

130
Slackware/i2p/i2p.SlackBuild Executable file
View File

@ -0,0 +1,130 @@
#!/bin/sh
#
# Heavily based on the Slackware 12.2 SlackBuild
# Slackware build script for I2P
#
# PLEASE READ THIS:
# Probably you will never have to update I2P packages with upgradepkg,
# just because I2P has an auto-update function.
# Really you should not ever use any "upgrade" method.
#
# The correct way to upgrade is to:
# 1: install the upgrade
# 2: remove the old package
#
# It is a terrible shame that upgradepkg doesn't do this, infact,
# it would actually be the correct way for *any* package!
#
#
BUILD=1sponge
INSTALL_DIR=opt
NAME=i2p
ARCH=noarch
# Less than slackware 13?
SLKPLT=$(cat /etc/slackware-version | sed -re "s/(Slackware )([0-9]*)(.*)/\2/")
if [ $SLKPLT -lt 13 ] ; then
EXT=tgz
else
EXT=txz
fi
#
# This mess is here due to the totally moronic way i2p does versioning.
# We correct it here.
#
ROUTER=$(echo -ne "_")$(cat ../../router/java/src/net/i2p/router/RouterVersion.java | grep -e "public final static long BUILD" | cut -f2 -d"=" | cut -f1 -d";" | sed -re "s/ //g")
if [ "$ROUTER" == "_" ] ; then
ROUTER="_0"
fi
#
# That was the easy one, now for the tough one.
#
CORE=$(cat ../../core/java/src/net/i2p/CoreVersion.java | grep -e "public final static String VERSION" | cut -f2 -d'"' | sed -re "s/ //g")
CORE1=$(echo -n $CORE.x.x | sed -re "s/(.*)\.(.*)\.(.*)\.(.*)/\1/")
CORE2=$(echo -n $CORE.x | sed -re "s/(.*)\.(.*)\.(.*)\.(.*)/\1/")
if [ "$CORE.x.x" == "$CORE1" ] ; then
CORE=$(echo -ne $CORE".0.0")
fi
if [ "$CORE.x" == "$CORE2" ] ; then
CORE=$(echo -ne $CORE".0")
fi
VERSION=$(echo $CORE$ROUTER)
#
# Whew!
# OK, let's build i2p
#
CWD=$(pwd)
TMP=/tmp
PKG=$TMP/package-i2p
rm -rf $PKG
mkdir -p $PKG
cd $CWD/../../
ant distclean
#ant dist
ant tarball
tar xjvf i2p.tar.bz2 -C $TMP
cd $TMP/i2p
chown -R root:root .
mkdir -p $PKG/$INSTALL_DIR/
cp -a ../i2p $PKG/$INSTALL_DIR/
mkdir -p $PKG/install
#############################################################################
# Preconfigureation to make package smaller
#############################################################################
cd $PKG/$INSTALL_DIR/i2p
# wrapper.config $INSTALL_PATH and $SYSTEM_java_io_tmpdir
sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" wrapper.config > a
sed "s|\$SYSTEM_java_io_tmpdir|/var/tmp|g" a > wrapper.config
# eepget %INSTALL_PATH
sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" eepget > a
rm eepget
mv a eepget
# runplain.sh %INSTALL_PATH and %SYSTEM_java_io_tmpdir
sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" runplain.sh > a
sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > runplain.sh
# i2prouter %INSTALL_PATH and %SYSTEM_java_io_tmpdir
sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" i2prouter > a
sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > i2prouter
chmod 744 ./i2prouter
chmod 744 ./osid
chmod 744 ./runplain.sh
chmod 744 ./eepget
chmod 744 ./scripts/i2pbench.sh
chmod 744 ./scripts/i2ptest.sh
rm -Rf ./lib/*.dll ./*.bat ./*.exe ./installer ./icons ./a postinstall.sh
mv $PKG/$INSTALL_DIR/i2p/*.config $PKG/install
mv $PKG/$INSTALL_DIR/i2p/blocklist.txt $PKG/$INSTALL_DIR/i2p/blocklist.txt.new
mv $PKG/$INSTALL_DIR/i2p/eepsite/jetty.xml $PKG/$INSTALL_DIR/i2p/eepsite/jetty.xml.new
mv $PKG/$INSTALL_DIR/i2p/eepsite/docroot/index.html $PKG/$INSTALL_DIR/i2p/eepsite/docroot/index.html.new
mv $PKG/$INSTALL_DIR/i2p/eepsite/docroot/favicon.ico $PKG/$INSTALL_DIR/i2p/eepsite/docroot/favicon.ico.new
sed "s|directory|/$INSTALL_DIR/i2p/|g" $CWD/doinst.sh > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
#
# requiredbuilder fucks up REALLY bad, and thinks java is perl?!
# It also did not catch the shell requirements! BOOOOOOOOOOO! HISSSSSSSS!
#
# requiredbuilder -v -y -s $CWD $PKG
#
cat $CWD/slack-required > $PKG/install/slack-required
makepkg -l y -c n $CWD/${NAME}-$VERSION-$ARCH-$BUILD.$EXT

47
Slackware/i2p/readme.txt Normal file
View File

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

19
Slackware/i2p/slack-desc Normal file
View File

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

View File

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

View File

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

29
android/README.txt Normal file
View File

@ -0,0 +1,29 @@
These instructions are for the 1.5 Android SDK.
The build file is not compatible with the 1.1 SDK any more.
1.6 and 2.0 SDKs are untested.
#Unzip the android SDK in ../../
#So then the android tools will be in ../../android-sdk-linux_x86-1.5_r2/tools/
# create a file local.properties with the following line:
# sdk-location=/path/to/your/android-sdk-linux_x86-1.5_r2
#then build the android apk file:
ant debug
# Create the android 1.5 virtual device
# (don't make a custom hardware profile)
../../android-sdk-linux_x86-1.5_r2/tools/android create avd --name i2p --target 2
#then run the emulator:
../../android-sdk-linux_x86-1.5_r2/tools/emulator -avd i2p &
#then wait a couple minutes until the emulator is up
#then install the I2P app
ant install
#then run the debugger
../../android-sdk-linux_x86-1.5_r2/tools/ddms &
#to rebuild and reinstall to emulator:
ant reinstall

352
android/build.xml Normal file
View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,16 @@
# initial router.config
# temp directory
i2p.dir.temp=/data/data/net.i2p.router/files/tmp
i2p.dir.pid=/data/data/net.i2p.router/files/tmp
# save memory
prng.buffers=2
router.decayingBloomFilterM=20
stat.full=false
i2np.udp.maxConnections=30
# no I2CP
i2p.dummyClientFacade=true
# for now
i2np.ntcp.enable=false
# not on android
i2np.upnp.enable=false
routerconsole.geoip.enable=false

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

14
apps/BOB/bob.config Normal file
View File

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

74
apps/BOB/build.xml Normal file
View File

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

3
apps/BOB/manifest.mf Normal file
View File

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

View File

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

View File

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

View File

@ -0,0 +1,7 @@
compile.on.save=false
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
jaxws.endorsed.dir=/usr/local/netbeans-6.5/java2/modules/ext/jaxws21/api:/usr/local/netbeans-6.5/ide10/modules/ext/jaxb/api
user.properties.file=/root/.netbeans/6.5/build.properties

View File

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

View File

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

View File

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

View File

@ -0,0 +1,368 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PAppContext;
import net.i2p.client.I2PClient;
import net.i2p.client.streaming.RetransmissionTimer;
import net.i2p.util.Log;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer2;
/**
* <span style="font-size:8px;font-family:courier;color:#EEEEEE;background-color:#000000">
* ################################################################################<br>
* ############################.#..........#..#..........##########################<br>
* #######################......................................###################<br>
* ####################...........................#.......#........################<br>
* #################..................##...................#.........##############<br>
* ###############................###...####.....#..###.....#.........#############<br>
* #############...........###..#..###...#####...###.##........#.......############<br>
* ###########................#......##...#####...##..##.......#..#........########<br>
* ##########.........................#....##.##..#...##.....................######<br>
* #########...................................#....#.........................#####<br>
* ########.........................................#...............#..........####<br>
* ########.........................................#..........#######..........###<br>
* #######.................................................############..........##<br>
* #######..........................................####################.........##<br>
* #######............####################......########################.........##<br>
* ######.............###############################################.##.........##<br>
* ######............################################################..##........##<br>
* ######............################################################..##........##<br>
* ######.............##############################################..##.........##<br>
* ######............##############################################...##..........#<br>
* ######............#..###########################################...##..........#<br>
* ######.............#############################################....#..........#<br>
* #######...........###############################################..##.........##<br>
* #######...........#####.#.#.#.########################.....#.####...##........##<br>
* ######............#..............##################.................##.........#<br>
* ######................####.........###############........#####......##........#<br>
* ######..............####..#.........############.......##.#.######...##.......##<br>
* ######.................#.####.........########...........##....###...##.......##<br>
* #######....#....###...................#######...............#...###..##.......##<br>
* #######.........###..###.....###.......######.##.#####.........####..##.......##<br>
* #######.....#...##############.........############......###########.###......##<br>
* #######....##...##########.......##...##############......#.############.....###<br>
* ########....#..########......######...##################################....####<br>
* ########....##.####################...##################################....####<br>
* ########..#.##..###################..##################################..#..####<br>
* ##########..###..#################...##################################...#.####<br>
* #########....##...##############....########..#####.################.##..#.#####<br>
* ############.##....##########.......#########.###.......###########..#.#########<br>
* ###############.....#######...#.......########.....##.....######.....###########<br>
* ###############......###....##..........##.......######....#.........#.#########<br>
* ##############............##..................##########..............##########<br>
* ##############..............................##########..#.............##########<br>
* ###############.......##..................#####..............####....###########<br>
* ###############.......#####.......#.............####.....#######.....###########<br>
* ################...#...####......##################.....########....############<br>
* ################...##..#####.........####.##.....#....##########....############<br>
* ##################..##..####...........#####.#....############.....#############<br>
* ##################......#####.................################....##############<br>
* ###################.....####..........##########..###########....###############<br>
* ####################..#..#..........................########.....###############<br>
* #####################.##.......###.................########....#################<br>
* ######################.........#.......#.##.###############....#################<br>
* #############.#######...............#####################....###################<br>
* ###..#.....##...####..........#.....####################....####################<br>
* ####......##........................##################....######################<br>
* #.##...###..............###.........###############......#######################<br>
* #...###..##............######...........................########################<br>
* ##.......###..........##########....#...#...........############################<br>
* ##.........##.......############################################################<br>
* ###........##.....##############################################################<br>
* ####.............###############################################################<br>
* ######.........#################################################################<br>
* #########....###################################################################<br>
* ################################################################################<br>
* </span>
* BOB, main command socket listener, launches the command parser engine.
*
* @author sponge
*/
public class BOB {
private final static Log _log = new Log(BOB.class);
public final static String PROP_CONFIG_LOCATION = "BOB.config";
public final static String PROP_BOB_PORT = "BOB.port";
public final static String PROP_BOB_HOST = "BOB.host";
private static NamedDB database;
private static Properties props = new Properties();
private static AtomicBoolean spin = new AtomicBoolean(true);
private static final String P_RUNNING = "RUNNING";
private static final String P_STARTING = "STARTING";
private static final String P_STOPPING = "STOPPING";
private static AtomicBoolean lock = new AtomicBoolean(false);
// no longer used.
// private static int maxConnections = 0;
/**
* Log a warning
*
* @param arg
*/
public static void info(String arg) {
System.out.println("INFO:" + arg);
_log.info(arg);
}
/**
* Log a warning
*
* @param arg
*/
public static void warn(String arg) {
System.out.println("WARNING:" + arg);
_log.warn(arg);
}
/**
* Log an error
*
* @param arg
*/
public static void error(String arg) {
System.out.println("ERROR: " + arg);
_log.error(arg);
}
/**
* Stop BOB gracefully
*/
public static void stop() {
spin.set(false);
}
/**
* Listen for incoming connections and handle them
*
* @param args
*/
public static void main(String[] args) {
database = new NamedDB();
ServerSocket listener = null;
int i = 0;
boolean save = false;
// Set up all defaults to be passed forward to other threads.
// Re-reading the config file in each thread is pretty damn stupid.
String configLocation = System.getProperty(PROP_CONFIG_LOCATION, "bob.config");
// This is here just to ensure there is no interference with our threadgroups.
RetransmissionTimer Y = RetransmissionTimer.getInstance();
SimpleScheduler Y1 = SimpleScheduler.getInstance();
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
i = Y.hashCode();
i = Y1.hashCode();
i = Y2.hashCode();
try {
{
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
try {
FileInputStream fi = new FileInputStream(cfg);
props.load(fi);
fi.close();
} catch (FileNotFoundException fnfe) {
warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.");
warn(fnfe.toString());
save = true;
} catch (IOException ioe) {
warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.");
warn(ioe.toString());
}
}
// Global router and client API configurations that are missing are set to defaults here.
if (!props.containsKey(I2PClient.PROP_TCP_HOST)) {
props.setProperty(I2PClient.PROP_TCP_HOST, "localhost");
}
if (!props.containsKey(I2PClient.PROP_TCP_PORT)) {
props.setProperty(I2PClient.PROP_TCP_PORT, "7654");
}
if (!props.containsKey(I2PClient.PROP_RELIABILITY)) {
props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
}
if (!props.containsKey(PROP_BOB_PORT)) {
props.setProperty(PROP_BOB_PORT, "2827"); // 0xB0B
}
if (!props.containsKey("inbound.length")) {
props.setProperty("inbound.length", "1");
}
if (!props.containsKey("outbound.length")) {
props.setProperty("outbound.length", "1");
}
if (!props.containsKey("inbound.lengthVariance")) {
props.setProperty("inbound.lengthVariance", "0");
}
if (!props.containsKey("outbound.lengthVariance")) {
props.setProperty("outbound.lengthVariance", "0");
}
if (!props.containsKey(PROP_BOB_HOST)) {
props.setProperty(PROP_BOB_HOST, "localhost");
}
if (save) {
File cfg = new File(configLocation);
if (!cfg.isAbsolute()) {
cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation);
}
try {
warn("Writing new defaults file " + cfg.getAbsolutePath());
FileOutputStream fo = new FileOutputStream(cfg);
props.store(fo, cfg.getAbsolutePath());
fo.close();
} catch (IOException ioe) {
error("IOException on BOB config file " + cfg.getAbsolutePath() + ", " + ioe);
}
}
i = 0;
boolean g = false;
try {
info("BOB is now running.");
listener = new ServerSocket(Integer.parseInt(props.getProperty(PROP_BOB_PORT)), 10, InetAddress.getByName(props.getProperty(PROP_BOB_HOST)));
Socket server = null;
listener.setSoTimeout(500); // .5 sec
while (spin.get()) {
//DoCMDS connection;
try {
server = listener.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
DoCMDS conn_c = new DoCMDS(spin, lock, server, props, database, _log);
Thread t = new Thread(conn_c);
t.setName("BOB.DoCMDS " + i);
t.start();
i++;
}
}
} catch (IOException ioe) {
error("IOException on socket listen: " + ioe);
ioe.printStackTrace();
}
} finally {
info("BOB is now shutting down...");
// Clean up everything.
try {
listener.close();
} catch (Exception ex) {
// nop
}
// Find all our "BOB.DoCMDS" threads, wait for them to be finished.
// We could order them to stop, but that could cause nasty issues in the locks.
visitAllThreads();
database.getReadLock();
int all = database.getcount();
database.releaseReadLock();
NamedDB nickinfo;
for (i = 0; i < all; i++) {
database.getReadLock();
nickinfo = (NamedDB) database.getnext(i);
nickinfo.getReadLock();
if (nickinfo.get(P_RUNNING).equals(Boolean.TRUE) && nickinfo.get(P_STOPPING).equals(Boolean.FALSE) && nickinfo.get(P_STARTING).equals(Boolean.FALSE)) {
nickinfo.releaseReadLock();
database.releaseReadLock();
database.getWriteLock();
nickinfo.getWriteLock();
nickinfo.add(P_STOPPING, new Boolean(true));
nickinfo.releaseWriteLock();
database.releaseWriteLock();
} else {
nickinfo.releaseReadLock();
database.releaseReadLock();
}
}
info("BOB is now stopped.");
}
}
/**
* Find the root thread group,
* then find all theads with certain names and wait for them all to be dead.
*
*/
private static void visitAllThreads() {
ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
while (root.getParent() != null) {
root = root.getParent();
}
// Visit each thread group
waitjoin(root, 0, root.getName());
}
private static void waitjoin(ThreadGroup group, int level, String tn) {
// Get threads in `group'
int numThreads = group.activeCount();
Thread[] threads = new Thread[numThreads * 2];
numThreads = group.enumerate(threads, false);
// Enumerate each thread in `group' and wait for it to stop if it is one of ours.
for (int i = 0; i < numThreads; i++) {
// Get thread
Thread thread = threads[i];
if (thread.getName().startsWith("BOB.DoCMDS ")) {
try {
if (thread.isAlive()) {
try {
thread.join();
} catch (InterruptedException ex) {
}
}
} catch (SecurityException se) {
//nop
}
}
}
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups * 2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i = 0; i < numGroups; i++) {
waitjoin(groups[i], level + 1, groups[i].getName());
}
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,109 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.util.Log;
/**
* Listen on I2P and connect to TCP
*
* @author sponge
*/
public class I2Plistener implements Runnable {
private NamedDB info, database;
private Log _log;
// private int tgwatch;
public I2PSocketManager socketManager;
public I2PServerSocket serverSocket;
private AtomicBoolean lives;
/**
* Constructor
* @param SS
* @param S
* @param info
* @param database
* @param _log
*/
I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
this.socketManager = S;
this.serverSocket = SS;
this.lives = lives;
}
/**
* Simply listen on I2P port, and thread connections
*
*/
public void run() {
boolean g = false;
I2PSocket sessSocket = null;
int conn = 0;
try {
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
g = false;
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}
}
} catch (I2PException e) {
// bad shit
System.out.println("Exception " + e);
}
} finally {
try {
serverSocket.close();
} catch (I2PException ex) {
}
// System.out.println("I2Plistener: Close");
}
}
}

View File

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

View File

@ -0,0 +1,56 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import java.util.Enumeration;
import java.util.Properties;
/**
* Sets of "friendly" utilities to make life easier.
* Any "Lifted" code will apear here, and credits given.
* It's better to "Lift" a small chunk of "free" code than add in piles of
* code we don't need, and don't want.
*
* @author sponge
*/
public class Lifted {
/**
* Copy a set of properties from one Property to another.
* Lifted from Apache Derby code svn repository.
* Liscenced as follows:
* http://svn.apache.org/repos/asf/db/derby/code/trunk/LICENSE
*
* @param src_prop Source set of properties to copy from.
* @param dest_prop Dest Properties to copy into.
*
**/
public static void copyProperties(Properties src_prop, Properties dest_prop) {
for (Enumeration propertyNames = src_prop.propertyNames();
propertyNames.hasMoreElements();) {
Object key = propertyNames.nextElement();
dest_prop.put(key, src_prop.get(key));
}
}
}

View File

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

View File

@ -0,0 +1,53 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import net.i2p.client.streaming.RetransmissionTimer;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer2;
/**
* Start from command line
*
* @author sponge
*
*/
public class Main {
/**
* @param args the command line arguments, these are not used yet
*/
public static void main(String[] args) {
// THINK THINK THINK THINK THINK THINK
RetransmissionTimer Y = RetransmissionTimer.getInstance();
SimpleScheduler Y1 = SimpleScheduler.getInstance();
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
BOB.main(args);
Y2.stop();
Y1.stop();
Y.stop();
}
}

View File

@ -0,0 +1,195 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
/**
* Internal database to relate nicknames to options to values
*
* @author sponge
*/
public class NamedDB {
private volatile Object[][] data;
private volatile int index, writersWaiting, readers;
/**
* make initial NULL object
*
*/
public NamedDB() {
this.data = new Object[1][2];
this.index = this.writersWaiting = this.readers = 0;
}
synchronized public void getReadLock() {
while ((writersWaiting != 0)) {
try {
wait();
} catch (InterruptedException ie) {
}
}
readers++;
}
synchronized public void releaseReadLock() {
readers--;
notifyAll();
}
synchronized public void getWriteLock() {
writersWaiting++;
while (readers != 0 && writersWaiting != 1) {
try {
wait();
} catch (InterruptedException ie) {
}
}
}
synchronized public void releaseWriteLock() {
writersWaiting--;
notifyAll();
}
/**
* Find objects in the array, returns it's index or throws exception
* @param key
* @return an objects index
* @throws ArrayIndexOutOfBoundsException when key does not exist
*/
public int idx(Object key) throws ArrayIndexOutOfBoundsException {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return i;
}
}
throw new ArrayIndexOutOfBoundsException("Can't locate key for index");
}
/**
* Delete an object from array if it exists
*
* @param key
*/
public void kill(Object key) {
int i, j, k, l;
Object[][] olddata;
int didsomething = 0;
try {
k = idx(key);
} catch (ArrayIndexOutOfBoundsException b) {
return;
}
olddata = new Object[index + 2][2];
// copy to olddata, skipping 'k'
for (i = 0, l = 0; l < index; i++, l++) {
if (i == k) {
l++;
didsomething++;
}
for (j = 0; j < 2; j++) {
olddata[i][j] = data[l][j];
}
}
index -= didsomething;
data = olddata;
}
/**
* Add object to the array, deletes the old one if it exists
*
* @param key
* @param val
*/
public void add(Object key, Object val) {
Object[][] olddata;
int i, j;
i = 0;
kill(key);
olddata = new Object[index + 2][2];
// copy to olddata
for (i = 0; i < index; i++) {
for (j = 0; j < 2; j++) {
olddata[i][j] = data[i][j];
}
}
data = olddata;
data[index++] = new Object[]{key, val};
}
/**
* Get the object, and return it, throws RuntimeException
*
* @param key
* @return Object
* @throws java.lang.RuntimeException
*/
public Object get(Object key) throws RuntimeException {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return data[i][1];
}
}
throw new RuntimeException("Key not found");
}
/**
* returns true if an object exists, else returns false
*
* @param key
* @return true if an object exists, else returns false
*/
public boolean exists(Object key) {
for (int i = 0; i < index; i++) {
if (key.equals(data[i][0])) {
return true;
}
}
return false;
}
/**
*
* @param i index
* @return an indexed Object
* @throws java.lang.RuntimeException
*/
public Object getnext(int i) throws RuntimeException {
if (i < index && i > -1) {
return data[i][1];
}
throw new RuntimeException("No more data");
}
/**
* @return the count of how many objects
*/
public int getcount() {
return index;
}
}

View File

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

View File

@ -0,0 +1,104 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
// import net.i2p.client.I2PSession;
// import net.i2p.client.I2PSessionException;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.util.Log;
/**
* Listen on TCP port and connect to I2P
*
* @author sponge
*/
public class TCPlistener implements Runnable {
private NamedDB info, database;
private Log _log;
public I2PSocketManager socketManager;
public I2PServerSocket serverSocket;
private ServerSocket listener;
private AtomicBoolean lives;
/**
* Constructor
* @param S
* @param info
* @param database
* @param _log
*/
TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) {
this.database = database;
this.info = info;
this._log = _log;
this.socketManager = S;
this.listener = listener;
this.lives = lives;
}
/**
* Simply listen on TCP port, and thread connections
*
*/
public void run() {
boolean g = false;
int conn = 0;
Socket server = null;
try {
try {
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
}
} catch (IOException ioe) {
}
} finally {
try {
listener.close();
} catch (IOException ex) {
}
//System.out.println("TCPlistener: " + Thread.currentThread().getName() + "Done.");
}
}
}

View File

@ -0,0 +1,238 @@
/**
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) sponge
* Planet Earth
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
* See...
*
* http://sam.zoy.org/wtfpl/
* and
* http://en.wikipedia.org/wiki/WTFPL
*
* ...for any additional details and liscense questions.
*/
package net.i2p.BOB;
import java.io.IOException;
import java.io.InputStream;
import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.NoRouteToHostException;
import java.net.Socket;
import java.util.concurrent.atomic.AtomicBoolean;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
import net.i2p.i2ptunnel.I2PTunnel;
/**
*
* Process TCP->I2P
*
* @author sponge
*/
public class TCPtoI2P implements Runnable {
private I2PSocket I2P;
private NamedDB info, database;
private Socket sock;
private I2PSocketManager socketManager;
private AtomicBoolean lives;
/**
* Constructor
* @param i2p
* @param socket
* param info
* param database
*/
TCPtoI2P(I2PSocketManager i2p, Socket socket, NamedDB info, NamedDB database, AtomicBoolean lives) {
this.sock = socket;
this.info = info;
this.database = database;
this.socketManager = i2p;
this.lives = lives;
}
/**
* This is a more forgiving readline,
* it works on unbuffered streams
*
* @param in
* @return line of text as a String
* @throws IOException
*/
private static String lnRead(InputStream in) throws IOException {
String S;
int b;
char c;
S = new String();
while (true) {
b = in.read();
if (b == 13) {
//skip CR
continue;
}
if (b < 20 || b > 126) {
// exit on anything not legal
break;
}
c = (char) (b & 0x7f); // We only really give a fuck about ASCII
S = new String(S + c);
}
return S;
}
/**
* Print an error message to out
*
* @param e
* @param out
* @throws java.io.IOException
*/
private void Emsg(String e, OutputStream out) throws IOException {
// Debugging System.out.println("ERROR TCPtoI2P: " + e);
out.write("ERROR ".concat(e).getBytes());
out.write(13);
out.write(10);
out.flush();
}
// private void rlock() throws Exception {
private void rlock() {
database.getReadLock();
info.getReadLock();
}
// private void runlock() throws Exception {
private void runlock() {
info.releaseReadLock();
database.releaseReadLock();
}
/**
* TCP stream to I2P stream thread starter
*
*/
public void run() {
String line, input;
InputStream Iin = null;
OutputStream Iout = null;
InputStream in = null;
OutputStream out = null;
Thread t = null;
Thread q = null;
try {
try {
in = sock.getInputStream();
out = sock.getOutputStream();
line = lnRead(in);
input = line.toLowerCase();
Destination dest = null;
if (input.endsWith(".i2p")) {
dest = I2PTunnel.destFromName(input);
line = dest.toBase64();
}
dest = new Destination();
dest.fromBase64(line);
try {
// get a client socket
I2P = socketManager.connect(dest);
I2P.setReadTimeout(0); // temp bugfix, this *SHOULD* be the default
// make readers/writers
Iin = I2P.getInputStream();
Iout = I2P.getOutputStream();
// setup to cross the streams
TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P
TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app
t = new Thread(conn_c, Thread.currentThread().getName() + " TCPioA");
q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB");
// Fire!
t.start();
q.start();
while (t.isAlive() && q.isAlive() && lives.get()) { // AND is used here to kill off the other thread
Thread.sleep(10); //sleep for 10 ms
}
} catch (I2PException e) {
Emsg(e.toString(), out);
} catch (ConnectException e) {
Emsg(e.toString(), out);
} catch (NoRouteToHostException e) {
Emsg(e.toString(), out);
}
} catch (InterruptedIOException e) {
// We're breaking away.
} catch (InterruptedException e) {
// ditto
} catch (IOException e) {
try {
Emsg(e.toString(), out);
} catch (IOException ex) {
// ditto
}
} catch (DataFormatException e) {
try {
Emsg(e.toString(), out);
} catch (IOException ex) {
// ditto
}
}
} finally {
try {
t.interrupt();
} catch (Exception e) {
}
try {
q.interrupt();
} catch (Exception e) {
}
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
try {
Iin.close();
} catch (Exception e) {
}
try {
Iout.close();
} catch (Exception e) {
}
try {
// System.out.println("TCPtoI2P: Close I2P");
I2P.close();
} catch (Exception e) {
}
try {
// System.out.println("TCPtoI2P: Close sock");
sock.close();
} catch (Exception e) {
}
}
// System.out.println("TCPtoI2P: Done.");
}
}

View File

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

View File

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

View File

@ -1,11 +1,12 @@
<?xml version="1.0"?>
<project name="addressbook" default="war" basedir=".">
<property name="src" value="java/src/addressbook"/>
<property name="src" value="java/src"/>
<property name="build" value="build"/>
<property name="dist" location="dist"/>
<property name="jar" value="addressbook.jar"/>
<property name="war" value="addressbook.war"/>
<property name="javac.compilerargs" value="" />
<target name="init">
<mkdir dir="${build}"/>
@ -19,9 +20,26 @@
<target name="distclean" depends="clean" />
<target name="compile" depends="init">
<javac debug="true" deprecation="on" source="1.3" target="1.3"
<condition property="depend.available">
<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" />
<pathelement location="../jetty/jettylib/javax.servlet.jar" />
</classpath>
</depend>
</target>
<target name="compile" depends="init, depend">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
<pathelement location="../../core/java/build/i2p.jar" />
<pathelement location="../jetty/jettylib/javax.servlet.jar" />
@ -37,7 +55,7 @@
</jar>
</target>
<target name="war" depends="compile">
<target name="war" depends="compile" unless="war.uptodate">
<mkdir dir="${dist}/tmp"/>
<mkdir dir="${dist}/tmp/WEB-INF"/>
<mkdir dir="${dist}/tmp/WEB-INF/classes"/>
@ -48,4 +66,8 @@
<delete dir="${dist}/tmp"/>
</target>
<uptodate property="war.uptodate" targetfile="${dist}/${war}">
<srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
</uptodate>
</project>

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;
@ -57,7 +57,7 @@ public class AddressBook {
this.addresses = addresses;
}
/**
/*
* Construct an AddressBook from the contents of the file at url. If the
* remote file cannot be read, construct an empty AddressBook
*
@ -81,6 +81,7 @@ public class AddressBook {
new File("addressbook.tmp").delete();
}
*/
static final long MAX_SUB_SIZE = 3 * 1024 * 1024l; //about 5,000 hosts
/**
* Construct an AddressBook from the Subscription subscription. If the
* address book at subscription has not changed since the last time it was
@ -89,23 +90,25 @@ public class AddressBook {
*
* @param subscription
* A Subscription instance pointing at a remote address book.
* @param proxyHost hostname of proxy
* @param proxyPort port number of proxy
*/
static final long MAX_SUB_SIZE = 3 * 1024 * 1024l; //about 5,000 hosts
public AddressBook(Subscription subscription, String proxyHost, int proxyPort) {
File tmp = new File(I2PAppContext.getGlobalContext().getTempDir(), "addressbook.tmp");
this.location = subscription.getLocation();
EepGet get = new EepGet(I2PAppContext.getGlobalContext(), true,
proxyHost, proxyPort, 0, -1l, MAX_SUB_SIZE, "addressbook.tmp", null,
proxyHost, proxyPort, 0, -1l, MAX_SUB_SIZE, tmp.getAbsolutePath(), null,
subscription.getLocation(), true, subscription.getEtag(), subscription.getLastModified(), null);
if (get.fetch()) {
subscription.setEtag(get.getETag());
subscription.setLastModified(get.getLastModified());
}
try {
this.addresses = ConfigParser.parse(new File("addressbook.tmp"));
this.addresses = ConfigParser.parse(tmp);
} catch (IOException exp) {
this.addresses = new HashMap();
}
new File("addressbook.tmp").delete();
tmp.delete();
}
/**
@ -152,10 +155,14 @@ public class AddressBook {
*
* @return A String representing the contents of the AddressBook.
*/
@Override
public String toString() {
return this.addresses.toString();
}
private static final int MIN_DEST_LENGTH = 516;
private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100; // longer than any known cert type for now
/**
* Do basic validation of the hostname and dest
* hostname was already converted to lower case by ConfigParser.parse()
@ -173,6 +180,11 @@ public class AddressBook {
// IDN - basic check, not complete validation
(host.indexOf("--") < 0 || host.startsWith("xn--") || host.indexOf(".xn--") > 0) &&
host.replaceAll("[a-z0-9.-]", "").length() == 0 &&
// Base32 spoofing (52chars.i2p)
(! (host.length() == 56 && host.substring(0,52).replaceAll("[a-z2-7]", "").length() == 0)) &&
// ... or maybe we do Base32 this way ...
(! host.equals("b32.i2p")) &&
(! host.endsWith(".b32.i2p")) &&
// some reserved names that may be used for local configuration someday
(! host.equals("proxy.i2p")) &&
(! host.equals("router.i2p")) &&
@ -181,8 +193,9 @@ public class AddressBook {
(! host.endsWith(".router.i2p")) &&
(! host.endsWith(".console.i2p")) &&
dest.length() == 516 &&
dest.endsWith("AAAA") &&
// null cert ends with AAAA but other zero-length certs would be AA
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AA")) ||
(dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
dest.replaceAll("[a-zA-Z0-9~-]", "").length() == 0
;
}
@ -195,6 +208,7 @@ public class AddressBook {
*
* @param other
* An AddressBook to merge with.
* @param overwrite True to overwrite
* @param log
* The log to write messages about new addresses or conflicts to.
*/

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@ -39,6 +39,9 @@ import java.util.Map;
* Utility class providing methods to parse and write files in config file
* format, and subscription file format.
*
* TODO: Change file encoding from default to UTF-8?
* Or switch to the DataHelper loadProps/storeProps methods?
*
* @author Ragnarok
*/
public class ConfigParser {
@ -107,7 +110,11 @@ public class ConfigParser {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
return ConfigParser.parse(input);
Map rv = ConfigParser.parse(input);
try {
fileStream.close();
} catch (IOException ioe) {}
return rv;
}
/**
@ -138,7 +145,7 @@ public class ConfigParser {
* cannot be read, map.
*/
public static Map parse(File file, Map map) {
Map result = new HashMap();
Map result;
try {
result = ConfigParser.parse(file);
} catch (IOException exp) {
@ -188,7 +195,11 @@ public class ConfigParser {
FileInputStream fileStream = new FileInputStream(file);
BufferedReader input = new BufferedReader(new InputStreamReader(
fileStream));
return ConfigParser.parseSubscriptions(input);
List rv = ConfigParser.parseSubscriptions(input);
try {
fileStream.close();
} catch (IOException ioe) {}
return rv;
}
/**
@ -213,13 +224,12 @@ public class ConfigParser {
*
* @param file
* A File to attempt to parse.
* @param string
* A List to use as the default, if file fails.
* @param list list of files to parse
* @return A List consisting of one element for each line in file, or if
* file cannot be read, list.
*/
public static List parseSubscriptions(File file, List list) {
List result = new LinkedList();
List result;
try {
result = ConfigParser.parseSubscriptions(file);
} catch (IOException exp) {

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.util.HashMap;
@ -28,6 +28,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.i2p.I2PAppContext;
/**
* Main class of addressbook. Performs updates, and runs the main loop.
*
@ -125,16 +127,17 @@ public class Daemon {
public void run(String[] args) {
String settingsLocation = "config.txt";
Map settings = new HashMap();
String home;
File homeFile;
if (args.length > 0) {
home = args[0];
homeFile = new File(args[0]);
if (!homeFile.isAbsolute())
homeFile = new File(I2PAppContext.getGlobalContext().getRouterDir(), args[0]);
} else {
home = ".";
homeFile = new File(System.getProperty("user.dir"));
}
Map defaultSettings = new HashMap();
defaultSettings.put("proxy_host", "localhost");
defaultSettings.put("proxy_host", "127.0.0.1");
defaultSettings.put("proxy_port", "4444");
defaultSettings.put("master_addressbook", "../userhosts.txt");
defaultSettings.put("router_addressbook", "../hosts.txt");
@ -146,7 +149,6 @@ public class Daemon {
defaultSettings.put("last_modified", "last_modified");
defaultSettings.put("update_delay", "12");
File homeFile = new File(home);
if (!homeFile.exists()) {
boolean created = homeFile.mkdirs();
if (created)
@ -157,10 +159,11 @@ public class Daemon {
File settingsFile = new File(homeFile, settingsLocation);
settings = ConfigParser.parse(settingsFile, defaultSettings);
Map settings = ConfigParser.parse(settingsFile, defaultSettings);
// wait
try {
Thread.currentThread().sleep(5*60*1000);
Thread.sleep(5*60*1000);
// Static method, and redundent Thread.currentThread().sleep(5*60*1000);
} catch (InterruptedException ie) {}
while (true) {
@ -169,7 +172,7 @@ public class Daemon {
delay = 1;
}
update(settings, home);
update(settings, homeFile.getAbsolutePath());
try {
synchronized (this) {
wait(delay * 60 * 60 * 1000);

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
/**
* A thread that waits five minutes, then runs the addressbook daemon.
@ -43,6 +43,7 @@ public class DaemonThread extends Thread {
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
//try {
// Thread.sleep(5 * 60 * 1000);

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.BufferedWriter;
import java.io.File;
@ -54,14 +54,17 @@ public class Log {
* A String containing a message to append to the log.
*/
public void append(String entry) {
BufferedWriter bw = null;
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(this.file,
bw = new BufferedWriter(new FileWriter(this.file,
true));
String timestamp = new Date().toString();
bw.write(timestamp + " -- " + entry);
bw.newLine();
bw.close();
} catch (IOException exp) {
} finally {
if (bw != null)
try { bw.close(); } catch (IOException ioe) {}
}
}
@ -73,4 +76,4 @@ public class Log {
public File getFile() {
return this.file;
}
}
}

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
@ -44,6 +44,7 @@ public class Servlet extends GenericServlet {
/* (non-Javadoc)
* @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
*/
@Override
public void init(ServletConfig config) {
try {
super.init(config);
@ -53,9 +54,10 @@ public class Servlet extends GenericServlet {
args[0] = config.getInitParameter("home");
DaemonThread thread = new DaemonThread(args);
thread.setDaemon(true);
thread.setName("Addressbook");
thread.start();
System.out.println("INFO: Starting Addressbook " + Daemon.VERSION);
System.out.println("INFO: config root under " + args[0]);
}
}
}

View File

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

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.util.Iterator;
import java.util.List;
@ -41,6 +41,8 @@ public class SubscriptionIterator implements Iterator {
*
* @param subscriptions
* List of Subscription objects that represent address books.
* @param proxyHost proxy hostname
* @param proxyPort proxt port number
*/
public SubscriptionIterator(List subscriptions, String proxyHost, int proxyPort) {
this.subIterator = subscriptions.iterator();

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package addressbook;
package net.i2p.addressbook;
import java.io.File;
import java.io.IOException;
@ -60,6 +60,9 @@ public class SubscriptionList {
* @param lastModifiedFile
* A file containg the last-modified headers used for conditional
* GET. The file is in the format "url=leastmodified".
* @param defaultSubs default subscription file
* @param proxyHost proxy hostname
* @param proxyPort proxy port number
*/
public SubscriptionList(File locationsFile, File etagsFile,
File lastModifiedFile, List defaultSubs, String proxyHost,

View File

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

View File

@ -73,7 +73,7 @@ class AdminRunner implements Runnable {
}
private void reply(OutputStream out, String content) throws IOException {
StringBuffer reply = new StringBuffer(10240);
StringBuilder reply = new StringBuilder(10240);
reply.append("HTTP/1.1 200 OK\n");
reply.append("Connection: close\n");
reply.append("Cache-control: no-cache\n");
@ -90,7 +90,7 @@ class AdminRunner implements Runnable {
}
private void replyText(OutputStream out, String content) throws IOException {
StringBuffer reply = new StringBuffer(10240);
StringBuilder reply = new StringBuilder(10240);
reply.append("HTTP/1.1 200 OK\n");
reply.append("Connection: close\n");
reply.append("Cache-control: no-cache\n");

View File

@ -41,24 +41,34 @@ import net.i2p.util.Log;
public class ATalk implements I2PSessionListener, Runnable {
/** logging hook - status messages are piped to this */
private final static Log _log = new Log(ATalk.class);
/** platform independent newline */
private final static String NL = System.getProperty("line.separator");
/** the current session */
private I2PSession _session;
/** who am i */
private Destination _myDestination;
/** who are you? */
private Destination _peerDestination;
/** location of my secret key file */
private String _myKeyFile;
/** location of their public key */
private String _theirDestinationFile;
/** where the application reads input from. currently set to standard input */
private BufferedReader _in;
/** where the application sends output to. currently set to standard output */
private BufferedWriter _out;
/** string that messages must begin with to be treated as files */
private final static String FILE_COMMAND = ".file: ";
/** the, erm, manual */
private final static String MANUAL = "ATalk: Anonymous Talk, a demo program for the Invisible Internet Project SDK"
+ NL
@ -84,7 +94,9 @@ public class ATalk implements I2PSessionListener, Runnable {
+ NL
+ "To end the talk session, enter a period on a line by itself and hit return"
+ NL;
public final static String PROP_CONFIG_LOCATION = "configFile";
private static final SimpleDateFormat _fmt = new SimpleDateFormat("hh:mm:ss.SSS");
/** Construct the talk engine, but don't connect yet */
@ -111,11 +123,12 @@ public class ATalk implements I2PSessionListener, Runnable {
_log.warn("Unable to load up the ATalk config file " + configLocation);
}
// Provide any router or client API configuration here.
if (!props.containsKey(I2PClient.PROP_TCP_HOST)) props.setProperty(I2PClient.PROP_TCP_HOST, "localhost");
if (!props.containsKey(I2PClient.PROP_TCP_PORT)) props.setProperty(I2PClient.PROP_TCP_PORT, "7654");
if (!props.containsKey(I2PClient.PROP_TCP_HOST))
props.setProperty(I2PClient.PROP_TCP_HOST, "localhost");
if (!props.containsKey(I2PClient.PROP_TCP_PORT))
props.setProperty(I2PClient.PROP_TCP_PORT, "7654");
if (!props.containsKey(I2PClient.PROP_RELIABILITY))
props.setProperty(I2PClient.PROP_RELIABILITY,
I2PClient.PROP_RELIABILITY_BEST_EFFORT);
props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
_session = client.createSession(new FileInputStream(myFile), props);
_session.setSessionListener(this);
_session.connect();
@ -364,4 +377,5 @@ public class ATalk implements I2PSessionListener, Runnable {
public void reportAbuse(I2PSession session, int severity) {
_log.debug("Abuse reported of severity " + severity);
}
}
}

View File

@ -1,347 +0,0 @@
/*
* bogobot - A simple join/part stats logger bot for I2P IRC.
*
* Bogobot.java
* 2004 The I2P Project
* http://www.i2p.net
* This code is public domain.
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.jibble.pircbot.IrcException;
import org.jibble.pircbot.NickAlreadyInUseException;
import org.jibble.pircbot.PircBot;
import org.jibble.pircbot.User;
/**
* TODO 0.5 Add multi-server capability.
*
* @author hypercubus, oOo
* @version 0.4
*/
public class Bogobot extends PircBot {
private static final String INTERVAL_DAILY = "daily";
private static final String INTERVAL_MONTHLY = "monthly";
private static final String INTERVAL_WEEKLY = "weekly";
private boolean _isIntentionalDisconnect = false;
private long _lastUserlistCommandTimestamp = 0;
private Logger _logger = Logger.getLogger(Bogobot.class);
private int _currentAutoRoundTripTag = 0;
private long _lastAutoRoundTripSentTime = 0;
private Timer _tickTimer;
private String _configFile;
private String _botPrimaryNick;
private String _botSecondaryNick;
private String _botNickservPassword;
private String _botUsername;
private String _ownerPrimaryNick;
private String _ownerSecondaryNick;
private String _botShutdownPassword;
private String _ircChannel;
private String _ircServer;
private int _ircServerPort;
private boolean _isLoggerEnabled;
private String _loggedHostnamePattern;
private boolean _isUserlistCommandEnabled;
private String _logFilePrefix;
private String _logFileRotationInterval;
private long _commandAntiFloodInterval;
private String _userlistCommandTrigger;
private boolean _isRoundTripDelayEnabled;
private int _roundTripDelayPeriod;
class BogobotTickTask extends TimerTask {
private Bogobot _caller;
public BogobotTickTask(Bogobot caller) {
_caller = caller;
}
public void run() {
_caller.onTick();
}
}
private void loadConfigFile(String configFileName) {
_configFile = configFileName;
Properties config = new Properties();
FileInputStream fis = null;
try {
fis = new FileInputStream(configFileName);
config.load(fis);
} catch (IOException ioe) {
System.err.println("Error loading configuration file");
System.exit(2);
} finally {
if (fis != null) try {
fis.close();
} catch (IOException ioe) { // nop
}
}
_botPrimaryNick = config.getProperty("botPrimaryNick", "somebot");
_botSecondaryNick = config.getProperty("botSecondaryNick", "somebot_");
_botNickservPassword = config.getProperty("botNickservPassword", "");
_botUsername = config.getProperty("botUsername", "somebot");
_ownerPrimaryNick = config.getProperty("ownerPrimaryNick", "somenick");
_ownerSecondaryNick = config.getProperty("ownerSecondaryNick", "somenick_");
_botShutdownPassword = config.getProperty("botShutdownPassword", "take off eh");
_ircChannel = config.getProperty("ircChannel", "#i2p-chat");
_ircServer = config.getProperty("ircServer", "irc.postman.i2p");
_ircServerPort = Integer.parseInt(config.getProperty("ircServerPort", "6668"));
_isLoggerEnabled = Boolean.valueOf(config.getProperty("isLoggerEnabled", "true")).booleanValue();
_loggedHostnamePattern = config.getProperty("loggedHostnamePattern", "");
_logFilePrefix = config.getProperty("logFilePrefix", "irc.postman.i2p.i2p-chat");
_logFileRotationInterval = config.getProperty("logFileRotationInterval", INTERVAL_DAILY);
_isRoundTripDelayEnabled = Boolean.valueOf(config.getProperty("isRoundTripDelayEnabled", "false")).booleanValue();
_roundTripDelayPeriod = Integer.parseInt(config.getProperty("roundTripDelayPeriod", "300"));
_isUserlistCommandEnabled = Boolean.valueOf(config.getProperty("isUserlistCommandEnabled", "true")).booleanValue();
_userlistCommandTrigger = config.getProperty("userlistCommandTrigger", "!who");
_commandAntiFloodInterval = Long.parseLong(config.getProperty("commandAntiFloodInterval", "60"));
}
public Bogobot(String configFileName) {
loadConfigFile(configFileName);
this.setName(_botPrimaryNick);
this.setLogin(_botUsername);
_tickTimer = new Timer();
_tickTimer.scheduleAtFixedRate(new BogobotTickTask(this), 1000, 10 * 1000);
}
public static void main(String[] args) {
Bogobot bogobot;
if (args.length > 1) {
System.err.println("Too many arguments, the only allowed parameter is configuration file name");
System.exit(3);
}
if (args.length == 1) {
bogobot = new Bogobot(args[0]);
} else {
bogobot = new Bogobot("bogobot.config");
}
bogobot.setVerbose(true);
if (bogobot._isLoggerEnabled)
bogobot.initLogger();
bogobot.connectToServer();
}
protected void onTick() {
// Tick about once every ten seconds
if (this.isConnected() && _isRoundTripDelayEnabled) {
if( ( (System.currentTimeMillis() - _lastAutoRoundTripSentTime) >= (_roundTripDelayPeriod * 1000) ) && (this.getOutgoingQueueSize() == 0) ) {
// Connected, sending queue is empty and last RoundTrip is more then 5 minutes old -> Send a new one
_currentAutoRoundTripTag ++;
_lastAutoRoundTripSentTime = System.currentTimeMillis();
sendNotice(this.getNick(),"ROUNDTRIP " + _currentAutoRoundTripTag);
}
}
}
protected void onDisconnect() {
if (_isIntentionalDisconnect)
System.exit(0);
if (_isLoggerEnabled)
_logger.info(System.currentTimeMillis() + " quits *** " + this.getName() + " *** (Lost connection)");
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// No worries.
}
connectToServer();
}
protected void onJoin(String channel, String sender, String login, String hostname) {
if (_isLoggerEnabled) {
if (sender.equals(this.getName())) {
_logger.info(System.currentTimeMillis() + " joins *** " + _botPrimaryNick + " ***");
} else {
String prependedHostname = "@" + hostname;
if (prependedHostname.endsWith(_loggedHostnamePattern)) {
_logger.info(System.currentTimeMillis() + " joins " + sender);
}
}
}
}
protected void onMessage(String channel, String sender, String login, String hostname, String message) {
message = message.replaceFirst("<.+?> ", "");
if (_isUserlistCommandEnabled && message.equals(_userlistCommandTrigger)) {
if (System.currentTimeMillis() - _lastUserlistCommandTimestamp < _commandAntiFloodInterval * 1000)
return;
Object[] users = getUsers(_ircChannel);
String output = "Userlist for " + _ircChannel + ": ";
for (int i = 0; i < users.length; i++)
output += "[" + ((User) users[i]).getNick() + "] ";
sendMessage(_ircChannel, output);
_lastUserlistCommandTimestamp = System.currentTimeMillis();
}
}
protected void onPart(String channel, String sender, String login, String hostname) {
if (_isLoggerEnabled) {
if (sender.equals(this.getName())) {
_logger.info(System.currentTimeMillis() + " parts *** " + _botPrimaryNick + " ***");
} else {
String prependedHostname = "@" + hostname;
if (prependedHostname.endsWith(_loggedHostnamePattern)) {
_logger.info(System.currentTimeMillis() + " parts " + sender);
}
}
}
}
protected void onPrivateMessage(String sender, String login, String hostname, String message) {
/*
* Nobody else except the bot's owner can shut it down, unless of
* course the owner's nick isn't registered and someone's spoofing it.
*/
if ((sender.equals(_ownerPrimaryNick) || sender.equals(_ownerSecondaryNick)) && message.equals(_botShutdownPassword)) {
if (_isLoggerEnabled)
_logger.info(System.currentTimeMillis() + " quits *** " + this.getName() + " ***");
_isIntentionalDisconnect = true;
disconnect();
}
}
protected void onQuit(String sourceNick, String sourceLogin, String sourceHostname, String reason) {
String prependedHostname = "@" + sourceHostname;
if (sourceNick.equals(_botPrimaryNick))
changeNick(_botPrimaryNick);
if (_isLoggerEnabled) {
if (prependedHostname.endsWith(_loggedHostnamePattern)) {
_logger.info(System.currentTimeMillis() + " quits " + sourceNick + " " + reason);
}
}
}
private void connectToServer() {
int loginAttempts = 0;
while (true) {
try {
connect(_ircServer, _ircServerPort);
break;
} catch (NickAlreadyInUseException e) {
if (loginAttempts == 1) {
System.out.println("Sorry, the primary and secondary bot nicks are already taken. Exiting.");
System.exit(1);
}
loginAttempts++;
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// Hmph.
}
if (getName().equals(_botPrimaryNick))
setName(_botSecondaryNick);
else
setName(_botPrimaryNick);
continue;
} catch (IOException e) {
System.out.println("Error during login: ");
e.printStackTrace();
System.exit(1);
} catch (IrcException e) {
System.out.println("Error during login: ");
e.printStackTrace();
System.exit(1);
}
}
joinChannel(_ircChannel);
}
protected void onNotice(String sourceNick, String sourceLogin, String sourceHostname, String target, String notice) {
if (sourceNick.equals("NickServ") && (notice.indexOf("/msg NickServ IDENTIFY") >= 0) && (_botNickservPassword != "")) {
sendRawLineViaQueue("NICKSERV IDENTIFY " + _botNickservPassword);
}
if (sourceNick.equals(getNick()) && notice.equals( "ROUNDTRIP " + _currentAutoRoundTripTag)) {
int delay = (int)((System.currentTimeMillis() - _lastAutoRoundTripSentTime) / 100);
// sendMessage(_ircChannel, "Round-trip delay = " + (delay / 10.0f) + " seconds");
if (_isLoggerEnabled)
_logger.info(System.currentTimeMillis() + " roundtrip " + delay);
}
}
private void initLogger() {
String logFilePath = "logs" + File.separator + _logFilePrefix;
DailyRollingFileAppender rollingFileAppender = null;
if (!(new File("logs").exists()))
(new File("logs")).mkdirs();
try {
if (_logFileRotationInterval.equals("monthly"))
rollingFileAppender = new DailyRollingFileAppender(new PatternLayout("%m%n"), logFilePath, "'.'yyyy-MM'.log'");
else if (_logFileRotationInterval.equals("weekly"))
rollingFileAppender = new DailyRollingFileAppender(new PatternLayout("%m%n"), logFilePath, "'.'yyyy-ww'.log'");
else
rollingFileAppender = new DailyRollingFileAppender(new PatternLayout("%m%n"), logFilePath, "'.'yyyy-MM-dd'.log'");
rollingFileAppender.setThreshold(Level.INFO);
_logger.addAppender(rollingFileAppender);
} catch (IOException ex) {
System.out.println("Error: Couldn't create or open an existing log file. Exiting.");
System.exit(1);
}
}
}

View File

@ -1,353 +0,0 @@
/*
* bogoparser - A simple logfile analyzer for bogobot.
*
* Bogoparser.java
* 2004 The I2P Project
* http://www.i2p.net
* This code is public domain.
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author hypercubus
* @version 0.4
*/
public class Bogoparser {
private static void displayUsageAndExit() {
System.out.println("\r\nUsage:\r\n\r\n java Bogoparser [--by-duration] <logfile>\r\n");
System.exit(1);
}
public static void main(String[] args) {
Bogoparser bogoparser;
if (args.length < 1 || args.length > 2)
displayUsageAndExit();
if (args.length == 2) {
if (!args[0].equals("--by-duration"))
displayUsageAndExit();
bogoparser = new Bogoparser(args[1], true);
}
if (args.length == 1)
bogoparser = new Bogoparser(args[0], false);
}
private Bogoparser(String logfile, boolean sortByDuration) {
ArrayList sortedSessions;
if (sortByDuration) {
sortedSessions = sortSessionsByDuration(calculateSessionDurations(sortSessionsByTime(readLogfile(logfile))));
formatAndOutputByDuration(sortedSessions);
} else {
sortedSessions = calculateSessionDurations(sortSessionsByQuitReason(sortSessionsByNick(sortSessionsByTime(readLogfile(logfile)))));
formatAndOutput(sortedSessions);
}
}
private ArrayList calculateSessionDurations(ArrayList sortedSessionsByQuitReasonOrDuration) {
ArrayList calculatedSessionDurations = new ArrayList();
for (int i = 0; i+1 < sortedSessionsByQuitReasonOrDuration.size(); i += 2) {
String joinsEntry = (String) sortedSessionsByQuitReasonOrDuration.get(i);
String[] joinsEntryFields = joinsEntry.split(" ");
String quitsEntry = (String) sortedSessionsByQuitReasonOrDuration.get(i+1);
Pattern p = Pattern.compile("^([^ ]+) [^ ]+ ([^ ]+) (.*)$");
Matcher m = p.matcher(quitsEntry);
if (m.matches()) {
String currentJoinTime = joinsEntryFields[0];
String currentNick = m.group(2);
String currentQuitReason = m.group(3);
String currentQuitTime = m.group(1);
long joinsTimeInMilliseconds;
long quitsTimeInMilliseconds;
long sessionLengthInMilliseconds;
joinsTimeInMilliseconds = Long.parseLong(currentJoinTime);
quitsTimeInMilliseconds = Long.parseLong(currentQuitTime);
sessionLengthInMilliseconds = quitsTimeInMilliseconds - joinsTimeInMilliseconds;
String hours = "" + sessionLengthInMilliseconds/1000/60/60;
String minutes = "" + (sessionLengthInMilliseconds/1000/60)%60;
if (hours.length() < 2)
hours = "0" + hours;
if (hours.length() < 3)
hours = "0" + hours;
if (minutes.length() < 2)
minutes = "0" + minutes;
int columnPadding = 19-currentNick.length();
String columnPaddingString = " ";
for (int j = 0; j < columnPadding; j++)
columnPaddingString = columnPaddingString + " ";
calculatedSessionDurations.add(sessionLengthInMilliseconds + " " + currentNick + columnPaddingString + " online " + hours + " hours " + minutes + " minutes " + currentQuitReason);
} else {
System.out.println("\r\nError: Unexpected entry in logfile: " + quitsEntry);
System.exit(1);
}
}
return calculatedSessionDurations;
}
private void formatAndOutput(ArrayList sortedSessions) {
String quitReason = null;
for (int i = 0; i < sortedSessions.size(); i++) {
String entry = (String) sortedSessions.get(i);
Pattern p = Pattern.compile("^[\\d]+ ([^ ]+ +online [\\d]+ hours [\\d]+ minutes) (.*)$");
Matcher m = p.matcher(entry);
if (m.matches()) {
if (quitReason == null) {
quitReason = m.group(2);
System.out.println("\r\nQUIT: " + ((m.group(2).equals("")) ? "No Reason Given" : quitReason) + "\r\n");
}
String tempQuitReason = m.group(2);
String tempSession = m.group(1);
if (tempQuitReason.equals(quitReason)) {
System.out.println(" " + tempSession);
} else {
quitReason = null;
i -= 1;
continue;
}
} else {
System.out.println("\r\nError: Unexpected entry in logfile: " + entry);
System.exit(1);
}
}
System.out.println("\r\n");
}
private void formatAndOutputByDuration(ArrayList sortedSessions) {
System.out.println("\r\n");
for (int i = 0; i < sortedSessions.size(); i++) {
String[] columns = ((String) sortedSessions.get(i)).split(" ", 2);
System.out.println(columns[1]);
}
System.out.println("\r\n");
}
private ArrayList readLogfile(String logfile) {
ArrayList log = new ArrayList();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(logfile)));
for (String line; (line = in.readLine()) != null; )
log.add(line);
in.close();
} catch (FileNotFoundException e) {
System.out.println("\r\nError: Can't find logfile '" + logfile + "'.\r\n");
System.exit(1);
} catch (IOException e) {
System.out.println("\r\nError: Can't read logfile '" + logfile + "'.\r\n");
System.exit(1);
}
return log;
}
/*
* Performs an odd-even transposition sort.
*/
private ArrayList sortSessionsByDuration(ArrayList calculatedSessionDurations) {
for (int i = 0; i < calculatedSessionDurations.size()/2; i++) {
for (int j = 0; j+1 < calculatedSessionDurations.size(); j += 2) {
String[] currentDurationString = ((String) calculatedSessionDurations.get(j)).split(" ", 2);
long currentDuration = Long.parseLong(currentDurationString[0]);
String[] nextDurationString = ((String) calculatedSessionDurations.get(j+1)).split(" ", 2);
long nextDuration = Long.parseLong(nextDurationString[0]);
if (currentDuration > nextDuration) {
calculatedSessionDurations.add(j, calculatedSessionDurations.get(j+1));
calculatedSessionDurations.remove(j+2);
}
}
for (int j = 1; j+1 < calculatedSessionDurations.size(); j += 2) {
String[] currentDurationString = ((String) calculatedSessionDurations.get(j)).split(" ", 2);
long currentDuration = Long.parseLong(currentDurationString[0]);
String[] nextDurationString = ((String) calculatedSessionDurations.get(j+1)).split(" ", 2);
long nextDuration = Long.parseLong(nextDurationString[0]);
if (currentDuration > nextDuration) {
calculatedSessionDurations.add(j, calculatedSessionDurations.get(j+1));
calculatedSessionDurations.remove(j+2);
}
}
}
return calculatedSessionDurations;
}
private ArrayList sortSessionsByNick(ArrayList sortedSessionsByTime) {
ArrayList sortedSessionsByNick = new ArrayList();
while (sortedSessionsByTime.size() != 0) {
String entry = (String) sortedSessionsByTime.get(0);
String[] entryFields = entry.split(" ");
String currentNick = entryFields[2];
sortedSessionsByNick.add(entry);
sortedSessionsByNick.add(sortedSessionsByTime.get(1));
sortedSessionsByTime.remove(0);
sortedSessionsByTime.remove(0);
for (int i = 0; i+1 < sortedSessionsByTime.size(); i += 2) {
String nextEntry = (String) sortedSessionsByTime.get(i);
String[] nextEntryFields = nextEntry.split(" ");
if (nextEntryFields[2].equals(currentNick)) {
sortedSessionsByNick.add(nextEntry);
sortedSessionsByNick.add(sortedSessionsByTime.get(i+1));
sortedSessionsByTime.remove(i);
sortedSessionsByTime.remove(i);
i -= 2;
}
}
}
return sortedSessionsByNick;
}
private ArrayList sortSessionsByQuitReason(ArrayList sortedSessionsByNick) {
ArrayList sortedSessionsByQuitReason = new ArrayList();
while (sortedSessionsByNick.size() != 0) {
String entry = (String) sortedSessionsByNick.get(1);
Pattern p = Pattern.compile("^[^ ]+ [^ ]+ [^ ]+ (.*)$");
Matcher m = p.matcher(entry);
if (m.matches()) {
String currentQuitReason = m.group(1);
sortedSessionsByQuitReason.add(sortedSessionsByNick.get(0));
sortedSessionsByQuitReason.add(entry);
sortedSessionsByNick.remove(0);
sortedSessionsByNick.remove(0);
for (int i = 0; i+1 < sortedSessionsByNick.size(); i += 2) {
String nextEntry = (String) sortedSessionsByNick.get(i+1);
Pattern p2 = Pattern.compile("^[^ ]+ [^ ]+ [^ ]+ (.*)$");
Matcher m2 = p2.matcher(nextEntry);
if (m2.matches()) {
String nextQuitReason = m2.group(1);
if (nextQuitReason.equals(currentQuitReason)) {
sortedSessionsByQuitReason.add(sortedSessionsByNick.get(i));
sortedSessionsByQuitReason.add(nextEntry);
sortedSessionsByNick.remove(i);
sortedSessionsByNick.remove(i);
i -= 2;
}
} else {
System.out.println("\r\nError: Unexpected entry in logfile: " + nextEntry);
System.exit(1);
}
}
} else {
System.out.println("\r\nError: Unexpected entry in logfile: " + entry);
System.exit(1);
}
}
return sortedSessionsByQuitReason;
}
/**
* Sessions terminated with "parts" messages instead of "quits" are filtered
* out.
*/
private ArrayList sortSessionsByTime(ArrayList log) {
ArrayList sortedSessionsByTime = new ArrayList();
mainLoop:
while (log.size() > 0) {
String entry = (String) log.get(0);
String[] entryFields = entry.split(" ");
if (entryFields[1].equals("quits") && !entryFields[1].equals("joins")) {
/*
* Discard entry. The specified log either doesn't contain
* the corresponding "joins" time for this quit entry or the
* entry is a "parts" or unknown message, and in both cases
* the entry's data is useless.
*/
log.remove(0);
continue;
}
for (int i = 1; i < log.size(); i++) { // Find corresponding "quits" entry.
String tempEntry = (String) log.get(i);
String[] tempEntryFields = tempEntry.split(" ");
if (tempEntryFields[2].equals(entryFields[2])) { // Check if the nick fields for the two entries match.
if (!tempEntryFields[1].equals("quits")) {
if (tempEntryFields[1].equals("joins")) { // Don't discard a subsequent "joins" entry.
log.remove(0);
continue mainLoop;
}
log.remove(i);
continue;
}
sortedSessionsByTime.add(entry);
sortedSessionsByTime.add(tempEntry);
log.remove(i);
break;
}
}
/*
* Discard "joins" entry. The specified log doesn't contain the
* corresponding "quits" time for this entry so the entry's
* data is useless.
*/
log.remove(0);
}
return sortedSessionsByTime;
}
}

View File

@ -1,48 +0,0 @@
/*
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "log4j" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation. For more information on the
* Apache Software Foundation, please see <http://www.apache.org/>.
*
*/

View File

@ -1 +0,0 @@
java -cp .;log4j-1.2.8.jar;pircbot.jar Bogobot

View File

@ -1,101 +0,0 @@
#####
# Bogobot user configuration
#####
###
# The bot's nick and backup nick. You will probably want to register these with
# the IRC server's NickServ.(a NickServ interface is forthcoming).
#
botPrimaryNick=somebot
botSecondaryNick=somebot_
###
# The bot's password required by Nickserv service's identify command.
# You have to register the nickname yourself first, the bot will not.
#
botNickservPassword=
###
# The bot's username. Appears in the whois replies
#
botUsername=somebot
#####
# The bot owner's nick and backup nick. One of these must match the owner's
# currently-used nick or else remote shutdown will not be possible. You will
# probably want to register these with the IRC server's NickServ.
#
ownerPrimaryNick=somenick
ownerSecondaryNick=somenick_
###
# The bot will disconnect and shut down when sent this password via private
# message (aka query) from either of the owner nicks specified above. DO NOT USE
# THIS DEFAULT VALUE!
#
botShutdownPassword=take off eh
###
# The server, channel, and port the bot will connect to.
#
ircChannel=#i2p-chat
ircServer=irc.duck.i2p
ircServerPort=6668
###
# Set to "true" to enable logging, else "false" (but don't use quotation marks).
#
isLoggerEnabled=true
###
# Restrict logging of joins and parts on the user hostname.
# Leave empty to log all of them
# Prepend with a @ for a perfect match
# Otherwise, specify the required end of the user hostname
#
loggedHostnamePattern=@free.duck.i2p
###
# The prefix to be used for the filenames of logs.
#
logFilePrefix=irc.duck.i2p.i2p-chat
###
# How often the logs should be rotated. Either "daily", "weekly", or "monthly"
# (but don't use quotation marks).
#
logFileRotationInterval=daily
###
# Set to "true" to enable the regular round-trip delay computation,
# else "false" (but don't use quotation marks).
#
isRoundTripDelayEnabled=false
###
# How often should the round-trip delay be recorded.
# (in seconds)
#
roundTripDelayPeriod=300
###
# Set to "true" to enable the userlist command, else "false" (but don't use
# quotation marks).
#
isUserlistCommandEnabled=true
###
# The userlist trigger command to listen for. It is a good idea to prefix
# triggers with some non-alphanumeric character in order to avoid accidental
# trigger use during normal channel conversation. In most cases you will
# probably want to choose a unique trigger here that no other bots in the
# channel will respond to.
#
userlistCommandTrigger=!who
###
# The number of seconds to rest after replying to a userlist command issued by
# a user in the channel. The bot will ignore subsequent userlist commands during
# this period. This helps prevent flooding.
#
commandAntiFloodInterval=60

View File

@ -1,2 +0,0 @@
#!/bin/sh
java -cp .:log4j-1.2.8.jar:pircbot.jar Bogobot

View File

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ********************************************************** -->
<!-- bogobot - A simple join/part stats logger bot for I2P IRC. -->
<!-- -->
<!-- build-eclipse.xml -->
<!-- 2004 The I2P Project -->
<!-- http://www.i2p.net -->
<!-- This code is public domain. -->
<!-- -->
<!-- authors: hypercubus, oOo -->
<!-- version 0.4 -->
<!-- ********************************************************** -->
<project basedir="." default="dist" name="Bogobot">
<!-- init:
Create distribution directory if missing and initialize time stamp for
archive naming -->
<target name="init">
<mkdir dir="dist" />
<tstamp>
<format pattern="yyyy-MM-dd" property="DSTAMP" />
</tstamp>
</target>
<!-- dist.bin:
Create the binary distribution archive -->
<target depends="init" description="Create the binary distribution archive" name="dist.bin">
<zip destfile="dist/Bogobot_${DSTAMP}.zip">
<zipfileset dir="${basedir}" includes="bogobot.bat bogobot.config Bogobot.class bogobot.sh Bogoparser.class LICENSE_log4j.txt LICENSE_pircbot.txt log4j-1.2.8.jar pircbot.jar" />
</zip>
</target>
<!-- dist.source:
Create the source distribution archive -->
<target depends="init" description="Create the source distribution archive" name="dist.source">
<zip destfile="dist/Bogobot_source_${DSTAMP}.zip">
<zipfileset dir="${basedir}" includes="bogobot.bat bogobot.config Bogobot.java bogobot.sh Bogoparser.java build.xml build_eclipse.xml LICENSE_log4j.txt LICENSE_pircbot.txt log4j-1.2.8.jar pircbot.jar" />
</zip>
</target>
<!-- dist:
Create both the binary and source distribution archives -->
<target depends="dist.bin,dist.source" description="Create both the binary and source distribution archives" name="dist">
<echo message="Successfully created binary and source distribution archives in directory &apos;dist&apos;." />
</target>
<!-- clean:
Delete all class files and temporary directories -->
<target description="Delete all class files and temporary directories" name="clean">
<delete>
<fileset dir="${basedir}" includes="**/*.class" />
</delete>
<echo message="Clean successful." />
</target>
</project>

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ********************************************************** -->
<!-- bogobot - A simple join/part stats logger bot for I2P IRC. -->
<!-- -->
<!-- build.xml -->
<!-- 2004 The I2P Project -->
<!-- http://www.i2p.net -->
<!-- This code is public domain. -->
<!-- -->
<!-- authors: hypercubus, oOo -->
<!-- version 0.4 -->
<!-- ********************************************************** -->
<project basedir="." default="compile" name="Bogobot">
<!-- init:
Create distribution directory if missing and initialize time stamp for
archive naming -->
<target name="init">
<mkdir dir="dist" />
<tstamp>
<format pattern="yyyy-MM-dd" property="DSTAMP" />
</tstamp>
</target>
<!-- compile:
Compile source code -->
<target depends="init" description="Compile source code" name="compile">
<javac classpath="${basedir};log4j-1.2.8.jar;pircbot.jar" source="1.4" srcdir="." />
</target>
<!-- dist.bin:
Create the binary distribution archive -->
<target depends="init,compile" description="Create the binary distribution archive" name="dist.bin">
<zip destfile="dist/Bogobot_${DSTAMP}.zip">
<zipfileset dir="${basedir}" includes="bogobot.bat bogobot.config Bogobot.class Bogobot$BogobotTickTask.class bogobot.sh Bogoparser.class LICENSE_log4j.txt LICENSE_pircbot.txt log4j-1.2.8.jar pircbot.jar" />
</zip>
</target>
<!-- dist.source:
Create the source distribution archive -->
<target depends="init" description="Create the source distribution archive" name="dist.source">
<zip destfile="dist/Bogobot_source_${DSTAMP}.zip">
<zipfileset dir="${basedir}" includes="bogobot.bat bogobot.config Bogobot.java bogobot.sh Bogoparser.java build.xml build_eclipse.xml LICENSE_log4j.txt LICENSE_pircbot.txt log4j-1.2.8.jar pircbot.jar" />
</zip>
</target>
<!-- dist:
Create both the binary and source distribution archives -->
<target depends="dist.bin,dist.source" description="Create both the binary and source distribution archives" name="dist">
<echo message="Successfully created binary and source distribution archives in directory &apos;dist&apos;." />
</target>
<!-- clean:
Delete all class files and temporary directories -->
<target description="Delete all class files and temporary directories" name="clean">
<delete>
<fileset dir="${basedir}" includes="**/*.class" />
</delete>
<echo message="Clean successful." />
</target>
</project>

Binary file not shown.

Binary file not shown.

15
apps/desktopgui/LICENSE Normal file
View File

@ -0,0 +1,15 @@
Desktop GUI: provides a simple GUI for I2P.
Copyright (C) 2009 Mathias De Maré
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; only version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

119
apps/desktopgui/build.xml Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="desktopgui" default="default" basedir=".">
<description>Builds, tests, and runs the project desktopgui.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="BOB-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
<property name="build_src" location="src"/>
<property name="build_bin" location="bin"/>
<property name="build_dist" location="dist"/>
<property name="build_lib" location="lib"/>
<property name="build_i2pref" location="../../build"/>
<property name="build_routerconsole" location="../routerconsole/java/build/"/>
<property name="build_i2ptunnel" location="../i2ptunnel/java/build/"/>
<path id="build_classpath">
<fileset dir="${build_lib}" includes="**/*.jar"/>
<fileset dir="${build_i2pref}" includes="**/*.jar"/>
<fileset dir="${build_routerconsole}" includes="**/*.jar"/>
<fileset dir="${build_i2ptunnel}" includes="**/*.jar"/>
</path>
<target name="build_init">
<!-- Create the time stamp -->
<tstamp/>
<mkdir dir="${build_dist}"/>
<mkdir dir="${build_bin}"/>
</target>
<target name="build_compile" depends="build_init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${bin} -->
<javac srcdir="${build_src}" destdir="${build_bin}" classpathref="build_classpath"/>
<copy todir="${build_bin}">
<fileset dir="${build_src}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="build_jar" depends="build_compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${build_dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<zip destfile="${build_dist}/desktopgui.jar" basedir="${build_bin}" />
</target>
<target name="build_clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build_bin}"/>
<delete dir="${build_dist}"/>
</target>
</project>

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