Changeset d89f589f
- Timestamp:
- Sep 16, 2005 4:12:24 AM (16 years ago)
- Branches:
- master
- Children:
- 6ca3f010
- Parents:
- 8c1895e
- git-author:
- jrandom <jrandom> (09/16/05 04:12:24)
- git-committer:
- zzz <zzz@…> (09/16/05 04:12:24)
- Files:
-
- 4 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/addressbook/java/src/addressbook/Daemon.java
r8c1895e rd89f589f 37 37 public class Daemon { 38 38 public static final String VERSION = "2.0.3"; 39 private static final Daemon _instance = new Daemon(); 39 40 40 41 /** … … 57 58 * The log to write changes and conflicts to. 58 59 */ 59 public staticvoid update(AddressBook master, AddressBook router,60 public void update(AddressBook master, AddressBook router, 60 61 File published, SubscriptionList subscriptions, Log log) { 61 62 router.merge(master, true, null); … … 78 79 * The directory containing addressbook's configuration files. 79 80 */ 80 public staticvoid update(Map settings, String home) {81 public void update(Map settings, String home) { 81 82 File masterFile = new File(home, (String) settings 82 83 .get("master_addressbook")); … … 105 106 Log log = new Log(logFile); 106 107 107 Daemon.update(master, router, published, subscriptions, log);108 update(master, router, published, subscriptions, log); 108 109 } 109 110 … … 119 120 */ 120 121 public static void main(String[] args) { 122 _instance.run(args); 123 } 124 125 public void run(String[] args) { 121 126 String settingsLocation = "config.txt"; 122 127 Map settings = new HashMap(); … … 152 157 File settingsFile = new File(homeFile, settingsLocation); 153 158 159 settings = ConfigParser.parse(settingsFile, defaultSettings); 160 // wait 161 try { 162 Thread.currentThread().sleep(5*60*1000); 163 } catch (InterruptedException ie) {} 164 154 165 while (true) { 155 settings = ConfigParser.parse(settingsFile, defaultSettings);156 157 166 long delay = Long.parseLong((String) settings.get("update_delay")); 158 167 if (delay < 1) { … … 160 169 } 161 170 162 Daemon.update(settings, home);171 update(settings, home); 163 172 try { 164 Thread.sleep(delay * 60 * 60 * 1000); 173 synchronized (this) { 174 wait(delay * 60 * 60 * 1000); 175 } 165 176 } catch (InterruptedException exp) { 166 177 } 178 settings = ConfigParser.parse(settingsFile, defaultSettings); 179 } 180 } 181 182 /** 183 * Call this to get the addressbook to reread its config and 184 * refetch its subscriptions. 185 */ 186 public static void wakeup() { 187 synchronized (_instance) { 188 _instance.notifyAll(); 167 189 } 168 190 } -
apps/addressbook/java/src/addressbook/DaemonThread.java
r8c1895e rd89f589f 45 45 */ 46 46 public void run() { 47 try {48 Thread.sleep(5 * 60 * 1000);49 } catch (InterruptedException exp) {50 }47 //try { 48 // Thread.sleep(5 * 60 * 1000); 49 //} catch (InterruptedException exp) { 50 //} 51 51 Daemon.main(this.args); 52 52 } -
apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
r8c1895e rd89f589f 9 9 */ 10 10 11 import java.io.ByteArrayOutputStream; 12 import java.io.IOException; 13 import java.io.FilterOutputStream; 14 import java.io.OutputStream; 11 import java.io.*; 15 12 import java.util.ArrayList; 16 13 import java.util.HashMap; 17 14 import java.util.Iterator; 15 import java.util.zip.GZIPInputStream; 16 import net.i2p.I2PAppContext; 18 17 import net.i2p.data.ByteArray; 19 18 import net.i2p.util.ByteCache; 19 import net.i2p.util.I2PThread; 20 20 import net.i2p.util.Log; 21 21 … … 23 23 * Simple stream for delivering an HTTP response to 24 24 * the client, trivially filtered to make sure "Connection: close" 25 * is always in the response. 25 * is always in the response. Perhaps add transparent handling of the 26 * Content-encoding: x-i2p-gzip, adjusting the headers to say Content-encoding: identity? 27 * Content-encoding: gzip is trivial as well, but Transfer-encoding: chunked makes it 28 * more work than is worthwhile at the moment. 26 29 * 27 30 */ 28 31 class HTTPResponseOutputStream extends FilterOutputStream { 29 private static final Log _log = new Log(HTTPResponseOutputStream.class); 32 private I2PAppContext _context; 33 private Log _log; 30 34 private ByteCache _cache; 31 35 protected ByteArray _headerBuffer; 32 36 private boolean _headerWritten; 33 37 private byte _buf1[]; 38 protected boolean _gzip; 39 private long _dataWritten; 34 40 private static final int CACHE_SIZE = 8*1024; 35 41 36 42 public HTTPResponseOutputStream(OutputStream raw) { 37 43 super(raw); 44 _context = I2PAppContext.getGlobalContext(); 45 _context.statManager().createRateStat("i2ptunnel.http.compressionRatio", "ratio of compressed size to decompressed size after transfer", "i2ptunnel", new long[] { 60*1000, 30*60*1000 }); 46 _context.statManager().createRateStat("i2ptunnel.http.compressed", "compressed size transferred", "i2ptunnel", new long[] { 60*1000, 30*60*1000 }); 47 _context.statManager().createRateStat("i2ptunnel.http.expanded", "size transferred after expansion", "i2ptunnel", new long[] { 60*1000, 30*60*1000 }); 48 _log = _context.logManager().getLog(getClass()); 38 49 _cache = ByteCache.getInstance(8, CACHE_SIZE); 39 50 _headerBuffer = _cache.acquire(); 40 51 _headerWritten = false; 52 _gzip = false; 53 _dataWritten = 0; 41 54 _buf1 = new byte[1]; 42 55 } … … 52 65 if (_headerWritten) { 53 66 out.write(buf, off, len); 67 _dataWritten += len; 54 68 return; 55 69 } … … 63 77 writeHeader(); 64 78 _headerWritten = true; 65 if (i + 1 < len) // write out the remaining 79 if (i + 1 < len) { 80 // write out the remaining 66 81 out.write(buf, off+i+1, len-i-1); 82 _dataWritten += len-i-1; 83 } 67 84 return; 68 85 } … … 129 146 throw new IOException("Invalid header @ " + j); 130 147 String key = new String(_headerBuffer.getData(), lastEnd+1, keyLen); 131 String val = new String(_headerBuffer.getData(), j+2, valLen); 148 String val = new String(_headerBuffer.getData(), j+2, valLen).trim(); 149 150 if (_log.shouldLog(Log.INFO)) 151 _log.info("Response header [" + key + "] = [" + val + "]"); 132 152 133 153 if ("Connection".equalsIgnoreCase(key)) { … … 137 157 out.write("Proxy-Connection: close\n".getBytes()); 138 158 proxyConnectionSent = true; 159 } else if ( ("Content-encoding".equalsIgnoreCase(key)) && ("x-i2p-gzip".equalsIgnoreCase(val)) ) { 160 _gzip = true; 139 161 } else { 140 162 out.write((key.trim() + ": " + val.trim() + "\n").getBytes()); … … 153 175 out.write("Proxy-Connection: close\n".getBytes()); 154 176 155 out.write("\n".getBytes()); // end of the headers177 finishHeaders(); 156 178 157 179 // done, shove off … … 160 182 else 161 183 _headerBuffer = null; 184 if (_log.shouldLog(Log.INFO)) 185 _log.info("After headers: gzip? " + _gzip); 186 if (shouldCompress()) { 187 beginProcessing(); 188 } 189 } 190 191 protected boolean shouldCompress() { return _gzip; } 192 193 protected void finishHeaders() throws IOException { 194 out.write("\n".getBytes()); // end of the headers 195 } 196 197 protected void beginProcessing() throws IOException { 198 out.flush(); 199 PipedInputStream pi = new PipedInputStream(); 200 PipedOutputStream po = new PipedOutputStream(pi); 201 new I2PThread(new Pusher(pi, out), "HTTP decompresser").start(); 202 out = po; 203 } 204 205 private class Pusher implements Runnable { 206 private InputStream _in; 207 private OutputStream _out; 208 public Pusher(InputStream in, OutputStream out) { 209 _in = in; 210 _out = out; 211 } 212 public void run() { 213 OutputStream to = null; 214 InternalGZIPInputStream in = null; 215 try { 216 long start = System.currentTimeMillis(); 217 in = new InternalGZIPInputStream(_in); 218 byte buf[] = new byte[8192]; 219 int read = -1; 220 while ( (read = in.read(buf)) != -1) { 221 if (_log.shouldLog(Log.INFO)) 222 _log.info("Read " + read + " and writing it to the browser/streams"); 223 _out.write(buf, 0, read); 224 } 225 if (_log.shouldLog(Log.INFO)) 226 _log.info("Decompressed: " + _dataWritten + ", " + in.getTotalRead() + "/" + in.getTotalExpanded()); 227 long end = System.currentTimeMillis(); 228 long compressed = in.getTotalRead(); 229 long expanded = in.getTotalExpanded(); 230 double ratio = 0; 231 if (expanded > 0) 232 ratio = compressed/expanded; 233 234 _context.statManager().addRateData("i2ptunnel.http.compressionRatio", (int)(100d*ratio), end-start); 235 _context.statManager().addRateData("i2ptunnel.http.compressed", compressed, end-start); 236 _context.statManager().addRateData("i2ptunnel.http.expanded", expanded, end-start); 237 } catch (IOException ioe) { 238 if (_log.shouldLog(Log.WARN)) 239 _log.warn("Error decompressing: " + _dataWritten + ", " + in.getTotalRead() + "/" + in.getTotalExpanded(), ioe); 240 } finally { 241 if (_out != null) try { _out.close(); } catch (IOException ioe) {} 242 } 243 } 244 } 245 private class InternalGZIPInputStream extends GZIPInputStream { 246 public InternalGZIPInputStream(InputStream in) throws IOException { 247 super(in); 248 } 249 public long getTotalRead() { return super.inf.getTotalIn(); } 250 public long getTotalExpanded() { return super.inf.getTotalOut(); } 162 251 } 163 252 -
apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
r8c1895e rd89f589f 370 370 371 371 if (line.length() == 0) { 372 373 String ok = getTunnel().getContext().getProperty("i2ptunnel.gzip"); 374 boolean gzip = true; 375 if (ok != null) 376 gzip = Boolean.valueOf(ok).booleanValue(); 377 if (gzip) 378 newRequest.append("Accept-Encoding: x-i2p-gzip\r\n"); 372 379 newRequest.append("User-Agent: MYOB/6.66 (AN/ON)\r\n"); 373 380 newRequest.append("Connection: close\r\n\r\n"); -
apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
r8c1895e rd89f589f 4 4 package net.i2p.i2ptunnel; 5 5 6 import java.io.File; 7 import java.io.IOException; 8 import java.io.InputStream; 6 import java.io.*; 9 7 import java.net.InetAddress; 10 8 import java.net.Socket; … … 12 10 import java.util.Iterator; 13 11 import java.util.Properties; 12 import java.util.zip.GZIPOutputStream; 14 13 15 14 import net.i2p.I2PAppContext; … … 25 24 * Simple extension to the I2PTunnelServer that filters the HTTP 26 25 * headers sent from the client to the server, replacing the Host 27 * header with whatever this instance has been configured with. 26 * header with whatever this instance has been configured with, and 27 * if the browser set Accept-encoding: x-i2p-gzip, gzip the http 28 * message body and set Content-encoding: x-i2p-gzip. 28 29 * 29 30 */ … … 63 64 // give them 5 seconds to send in the HTTP request 64 65 socket.setReadTimeout(5*1000); 65 String modifiedHeader = getModifiedHeader(socket); 66 67 InputStream in = socket.getInputStream(); 68 69 StringBuffer command = new StringBuffer(128); 70 Properties headers = readHeaders(in, command); 71 headers.setProperty("Host", _spoofHost); 72 headers.setProperty("Connection", "close"); 73 String modifiedHeader = formatHeaders(headers, command); 74 75 //String modifiedHeader = getModifiedHeader(socket); 66 76 if (_log.shouldLog(Log.DEBUG)) 67 77 _log.debug("Modified header: [" + modifiedHeader + "]"); … … 70 80 Socket s = new Socket(remoteHost, remotePort); 71 81 afterSocket = getTunnel().getContext().clock().now(); 72 new I2PTunnelRunner(s, socket, slock, null, modifiedHeader.getBytes(), null); 82 // instead of i2ptunnelrunner, use something that reads the HTTP 83 // request from the socket, modifies the headers, sends the request to the 84 // server, reads the response headers, rewriting to include Content-encoding: x-i2p-gzip 85 // if it was one of the Accept-encoding: values, and gzip the payload 86 String enc = headers.getProperty("Accept-encoding"); 87 if (_log.shouldLog(Log.INFO)) 88 _log.info("HTTP server encoding header: " + enc); 89 if ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) ) { 90 I2PThread req = new I2PThread(new CompressedRequestor(s, socket, modifiedHeader), "http compressor"); 91 req.start(); 92 } else { 93 new I2PTunnelRunner(s, socket, slock, null, modifiedHeader.getBytes(), null); 94 } 73 95 } catch (SocketException ex) { 74 96 try { … … 89 111 _log.warn("Took a while to handle the request [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]"); 90 112 } 91 92 private String getModifiedHeader(I2PSocket handleSocket) throws IOException {93 InputStream in = handleSocket.getInputStream();94 95 StringBuffer command = new StringBuffer(128);96 Properties headers = readHeaders(in, command);97 headers.setProperty("Host", _spoofHost);98 headers.setProperty("Connection", "close");99 return formatHeaders(headers, command);100 }101 113 114 private class CompressedRequestor implements Runnable { 115 private Socket _webserver; 116 private I2PSocket _browser; 117 private String _headers; 118 public CompressedRequestor(Socket webserver, I2PSocket browser, String headers) { 119 _webserver = webserver; 120 _browser = browser; 121 _headers = headers; 122 } 123 public void run() { 124 if (_log.shouldLog(Log.INFO)) 125 _log.info("Compressed requestor running"); 126 OutputStream serverout = null; 127 OutputStream browserout = null; 128 InputStream browserin = null; 129 InputStream serverin = null; 130 try { 131 serverout = _webserver.getOutputStream(); 132 133 if (_log.shouldLog(Log.INFO)) 134 _log.info("request headers: " + _headers); 135 serverout.write(_headers.getBytes()); 136 browserin = _browser.getInputStream(); 137 I2PThread sender = new I2PThread(new Sender(serverout, browserin, "server: browser to server"), "http compressed sender"); 138 sender.start(); 139 140 browserout = _browser.getOutputStream(); 141 serverin = _webserver.getInputStream(); 142 Sender s = new Sender(new CompressedResponseOutputStream(browserout), serverin, "server: server to browser"); 143 if (_log.shouldLog(Log.INFO)) 144 _log.info("Before pumping the compressed response"); 145 s.run(); // same thread 146 if (_log.shouldLog(Log.INFO)) 147 _log.info("After pumping the compressed response"); 148 } catch (IOException ioe) { 149 if (_log.shouldLog(Log.WARN)) 150 _log.warn("error compressing", ioe); 151 } finally { 152 if (browserout != null) try { browserout.close(); } catch (IOException ioe) {} 153 if (serverout != null) try { serverout.close(); } catch (IOException ioe) {} 154 if (browserin != null) try { browserin.close(); } catch (IOException ioe) {} 155 if (serverin != null) try { serverin.close(); } catch (IOException ioe) {} 156 } 157 } 158 } 159 private class Sender implements Runnable { 160 private OutputStream _out; 161 private InputStream _in; 162 private String _name; 163 public Sender(OutputStream out, InputStream in, String name) { 164 _out = out; 165 _in = in; 166 _name = name; 167 } 168 public void run() { 169 if (_log.shouldLog(Log.INFO)) 170 _log.info(_name + ": Begin sending"); 171 try { 172 byte buf[] = new byte[4096]; 173 int read = 0; 174 int total = 0; 175 while ( (read = _in.read(buf)) != -1) { 176 if (_log.shouldLog(Log.INFO)) 177 _log.info(_name + ": read " + read + " and sending through the stream"); 178 _out.write(buf, 0, read); 179 total += read; 180 } 181 if (_log.shouldLog(Log.INFO)) 182 _log.info(_name + ": Done sending: " + total); 183 _out.flush(); 184 } catch (IOException ioe) { 185 if (_log.shouldLog(Log.WARN)) 186 _log.warn("Error sending", ioe); 187 } finally { 188 if (_in != null) try { _in.close(); } catch (IOException ioe) {} 189 if (_out != null) try { _out.close(); } catch (IOException ioe) {} 190 } 191 } 192 } 193 private class CompressedResponseOutputStream extends HTTPResponseOutputStream { 194 public CompressedResponseOutputStream(OutputStream o) { 195 super(o); 196 } 197 198 protected boolean shouldCompress() { return true; } 199 protected void finishHeaders() throws IOException { 200 if (_log.shouldLog(Log.INFO)) 201 _log.info("Including x-i2p-gzip as the content encoding in the response"); 202 out.write("Content-encoding: x-i2p-gzip\n".getBytes()); 203 super.finishHeaders(); 204 } 205 206 protected void beginProcessing() throws IOException { 207 if (_log.shouldLog(Log.INFO)) 208 _log.info("Beginning compression processing"); 209 out.flush(); 210 out = new GZIPOutputStream(out); 211 } 212 } 213 102 214 private String formatHeaders(Properties headers, StringBuffer command) { 103 215 StringBuffer buf = new StringBuffer(command.length() + headers.size() * 64); … … 134 246 String name = buf.substring(0, split); 135 247 String value = buf.substring(split+2); // ": " 248 if ("Accept-encoding".equalsIgnoreCase(name)) 249 name = "Accept-encoding"; 136 250 headers.setProperty(name, value); 137 251 if (_log.shouldLog(Log.DEBUG)) -
apps/routerconsole/jsp/help.jsp
r8c1895e rd89f589f 46 46 which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use. 47 47 There is also an optimized library for doing large number calculations - jbigi - which in turn uses the 48 LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. For48 LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>. For 49 49 details on other applications available, as well as their licenses, please see the 50 50 <a href="http://www.i2p.net/licenses">license policy</a>. Source for the I2P code and most bundled -
apps/routerconsole/jsp/nav.jsp
r8c1895e rd89f589f 16 16 17 17 <h4> 18 <a href="susimail/susimail">Susimail</a> | 19 <a href="susidns/">SusiDNS</a> | 20 <a href="syndie/">Syndie</a> | 21 <a href="i2ptunnel/">I2PTunnel</a> | 18 22 <a href="tunnels.jsp">Tunnels</a> | 19 23 <a href="profiles.jsp">Profiles</a> | 20 24 <a href="netdb.jsp">NetDB</a> | 21 25 <a href="logs.jsp">Logs</a> | 22 <a href="oldconsole.jsp">Internals</a> |23 26 <a href="oldstats.jsp">Stats</a> | 24 <a href="i2ptunnel/" target="_blank">I2PTunnel</a> | 25 <a href="susimail/susimail" target="_blank">Susimail</a> 27 <a href="oldconsole.jsp">Internals</a> 26 28 <jsp:useBean class="net.i2p.router.web.NavHelper" id="navhelper" scope="request" /> 27 29 <jsp:setProperty name="navhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -
build.xml
r8c1895e rd89f589f 13 13 <target name="dist" depends="pkg, javadoc"> 14 14 </target> 15 <target name="build" depends="builddep, jar, buildWEB " />15 <target name="build" depends="builddep, jar, buildWEB, buildexe" /> 16 16 <target name="buildclean" depends="distclean, build" /> 17 17 <target name="builddep"> … … 29 29 <ant dir="apps/addressbook/" target="war" /> 30 30 <ant dir="apps/susimail/" target="war" /> 31 <ant dir="apps/susidns/src" target="all" /> 31 32 <ant dir="apps/syndie/java/" target="jar" /> <!-- not pushed in the update... yet --> 32 33 </target> … … 44 45 <copy file="apps/jetty/jettylib/xercesImpl.jar" todir="build/" /> 45 46 <copy file="apps/jetty/jettylib/javax.servlet.jar" todir="build/" /> 47 </target> 48 <target name="buildexe"> 49 <jar destfile="./build/launchi2p.jar"> 50 <manifest> 51 <attribute name="Main-Class" value="net.i2p.router.RouterLaunch" /> 52 <attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/ant.jar lib/xercesImpl.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar" /> 53 </manifest> 54 </jar> 55 <!-- now the standalone launcher exe --> 56 <taskdef name="launch4j" 57 classname="net.sf.launch4j.ant.Launch4jTask" 58 classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" /> 59 <launch4j configFile="./installer/i2pstandalone.xml" /> 60 <!-- thazzit --> 46 61 </target> 47 62 <target name="compile" /> … … 60 75 <copy file="apps/addressbook/dist/addressbook.war" todir="build/" /> 61 76 <copy file="apps/susimail/susimail.war" todir="build/" /> 77 <copy file="apps/susidns/src/susidns.war" todir="build/" /> 62 78 <copy file="apps/syndie/syndie.war" todir="build/" /> 63 79 <copy file="apps/syndie/java/build/syndie.jar" todir="build/" /> … … 100 116 <target name="clean" depends="pkgclean" > 101 117 <delete dir="./build" /> 118 <delete file="i2pinstall.exe" /> 119 <delete file="i2p.exe" /> 102 120 </target> 103 121 <target name="distclean" depends="clean"> … … 113 131 <ant dir="apps/addressbook/" target="distclean" /> 114 132 <ant dir="apps/susimail/" target="distclean" /> 133 <ant dir="apps/susidns/src/" target="distclean" /> 115 134 <ant dir="apps/systray/java/" target="distclean" /> 116 135 <ant dir="installer/java/" target="distclean" /> … … 181 200 <copy file="build/sam.jar" todir="pkg-temp/lib/" /> 182 201 <copy file="build/systray.jar" todir="pkg-temp/lib" /> 202 <copy file="i2p.exe" todir="pkg-temp/" /> 203 <copy file="installer/resources/runplain.sh" todir="pkg-temp/" /> 183 204 <copy file="apps/systray/java/lib/systray4j.jar" todir="pkg-temp/lib" /> 184 205 <copy file="apps/systray/java/lib/systray4j.dll" todir="pkg-temp/lib" /> … … 190 211 <copy file="build/addressbook.war" todir="pkg-temp/webapps/" /> 191 212 <copy file="build/susimail.war" todir="pkg-temp/webapps/" /> 213 <copy file="build/susidns.war" todir="pkg-temp/webapps/" /> 192 214 <copy file="build/syndie.war" todir="pkg-temp/webapps/" /> 193 215 <copy file="installer/resources/clients.config" todir="pkg-temp/" /> … … 269 291 <copy file="build/router.jar" todir="pkg-temp/lib/" /> 270 292 <copy file="build/routerconsole.jar" todir="pkg-temp/lib/" /> 293 <copy file="i2p.exe" todir="pkg-temp/" /> 294 <copy file="installer/resources/runplain.sh" todir="pkg-temp/" /> 271 295 272 296 <!-- for the i2p 0.5 release, push jetty 5.2.1 --> … … 289 313 <copy file="build/addressbook.war" todir="pkg-temp/webapps/" /> 290 314 <copy file="build/susimail.war" todir="pkg-temp/webapps/" /> 315 <copy file="build/susidns.war" todir="pkg-temp/webapps/" /> 291 316 <copy file="build/syndie.war" todir="pkg-temp/webapps/" /> 292 317 <copy file="history.txt" todir="pkg-temp/" /> … … 314 339 </jar> 315 340 <izpack input="${basedir}/installer/install.xml" output="${basedir}/install.jar" installerType="standard" basedir="${basedir}" /> 341 342 <ant target="installerexe" /> 343 </target> 344 <target name="installerexe"> 345 <!-- now the installer exe --> 346 <taskdef name="launch4j" 347 classname="net.sf.launch4j.ant.Launch4jTask" 348 classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" /> 349 <launch4j configFile="./installer/i2pinstaller.xml" /> 350 <launch4j configFile="./installer/i2pstandalone.xml" /> 351 <!-- thazzit --> 316 352 </target> 317 353 <target name="test"> -
history.txt
r8c1895e rd89f589f 1 $Id: history.txt,v 1.249 2005/09/13 18:02:44 jrandom Exp $ 1 $Id: history.txt,v 1.250 2005/09/15 00:39:31 jrandom Exp $ 2 3 2005-09-16 jrandom 4 * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j. 5 * Added runplain.sh for *nix/osx users having problems using the java 6 service wrapper (called from the install dir as: sh runplain.sh) 7 * Bundle susidns and syndie, with links on the top nav 8 * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip 9 content-encoding (if offered), reducing the payload size before it 10 reaches the streaming lib. The existing compression is at the i2cp 11 level, so we've been packetizing 4KB of uncompressed data and then 12 compressing those messages, rather than compressing and then packetizing 13 4KB of compressed data. This should reduce the number of round trips 14 to fetch web pages substantially. 15 * Adjust the startup and timing of the addressbook so that susidns always 16 has config to work off, and expose a method for susidns to tell it to 17 reload its config and rerun. 2 18 3 19 2005-09-15 jrandom -
installer/install.xml
r8c1895e rd89f589f 5 5 <info> 6 6 <appname>i2p</appname> 7 <appversion>0.6.0. 4</appversion>7 <appversion>0.6.0.5</appversion> 8 8 <authors> 9 9 <author name="I2P" email="support@i2p.net"/> -
installer/resources/postinstall.sh
r8c1895e rd89f589f 65 65 rm -f ./lib/*.dll 66 66 rm -f ./*.bat 67 rm -f ./*.exe 67 68 ./i2prouter start 68 69 exit 0 -
router/java/src/net/i2p/router/RouterVersion.java
r8c1895e rd89f589f 16 16 */ 17 17 public class RouterVersion { 18 public final static String ID = "$Revision: 1.23 5 $ $Date: 2005/09/13 18:02:40$";18 public final static String ID = "$Revision: 1.236 $ $Date: 2005/09/15 00:39:31 $"; 19 19 public final static String VERSION = "0.6.0.5"; 20 public final static long BUILD = 1 0;20 public final static long BUILD = 11; 21 21 public static void main(String args[]) { 22 22 System.out.println("I2P Router version: " + VERSION + "-" + BUILD); -
router/java/src/net/i2p/router/transport/udp/PeerTestState.java
r8c1895e rd89f589f 34 34 public synchronized long getNonce() { return _testNonce; } 35 35 public synchronized void setNonce(long nonce) { _testNonce = nonce; } 36 /** who are we? Alice, bob, or charlie?*/36 /** Are we Alice, bob, or Charlie. */ 37 37 public synchronized short getOurRole() { return _ourRole; } 38 38 public synchronized void setOurRole(short role) { _ourRole = role; }
Note: See TracChangeset
for help on using the changeset viewer.