Changeset 3dd3bf8


Ignore:
Timestamp:
Aug 8, 2009 2:30:07 PM (11 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
3febcf6
Parents:
bdcad06 (diff), 69fdfb0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

propagate from branch 'i2p.i2p' (head 6ab0f64b9f4992591ed989f8d89a859fc3ceaeaf)

to branch 'i2p.i2p.zzz.test2' (head 3e85c6cfff244d09df42d967d3a3cdf77053890d)

Files:
3 added
31 edited
4 moved

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    rbdcad06 r3dd3bf8  
    402402            filename = filename.substring(0, i);
    403403        if (filename.length() > MAX_DISPLAYED_FILENAME_LENGTH)
    404             filename = filename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH) + "...";
     404            filename = filename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH) + "&hellip;";
    405405        long total = snark.meta.getTotalLength();
    406406        // Early typecast, avoid possibly overflowing a temp integer
     
    454454            else {
    455455                if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
    456                     err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "...";
     456                    err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "&hellip;";
    457457                statusString = "TrackerErr<br />(" + err + ")";
    458458            }
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java

    rbdcad06 r3dd3bf8  
    374374            privKeyFile = new File(args[2]);
    375375            if (!privKeyFile.isAbsolute())
    376                 privKeyFile = new File(_context.getAppDir(), args[2]);
     376                privKeyFile = new File(_context.getConfigDir(), args[2]);
    377377            if (!privKeyFile.canRead()) {
    378378                l.log("private key file does not exist");
     
    423423            privKeyFile = new File(args[2]);
    424424            if (!privKeyFile.isAbsolute())
    425                 privKeyFile = new File(_context.getAppDir(), args[2]);
     425                privKeyFile = new File(_context.getConfigDir(), args[2]);
    426426            if (!privKeyFile.canRead()) {
    427427                l.log("private key file does not exist");
     
    482482            privKeyFile = new File(args[3]);
    483483            if (!privKeyFile.isAbsolute())
    484                 privKeyFile = new File(_context.getAppDir(), args[3]);
     484                privKeyFile = new File(_context.getConfigDir(), args[3]);
    485485            if (!privKeyFile.canRead()) {
    486486                l.log("private key file does not exist");
     
    878878            File privKeyFile = new File(args[1]);
    879879            if (!privKeyFile.isAbsolute())
    880                 privKeyFile = new File(_context.getAppDir(), args[1]);
     880                privKeyFile = new File(_context.getConfigDir(), args[1]);
    881881            if (!privKeyFile.canRead()) {
    882882                l.log("private key file does not exist");
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java

    rbdcad06 r3dd3bf8  
    405405                       
    406406                        line = method + " " + request.substring(pos);
     407                    } else if (host.toLowerCase().equals("localhost") || host.equals("127.0.0.1")) {
     408                        if (out != null) {
     409                            out.write(ERR_LOCALHOST);
     410                            out.write("<p /><i>Generated on: ".getBytes());
     411                            out.write(new Date().toString().getBytes());
     412                            out.write("</i></body></html>\n".getBytes());
     413                            out.flush();
     414                        }
     415                        s.close();
     416                        return;
    407417                    } else if (host.indexOf(".") != -1) {
    408418                        // rebuild host
     
    432442                        if (_log.shouldLog(Log.DEBUG))
    433443                            _log.debug(getPrefix(requestId) + "Host doesnt end with .i2p and it contains a period [" + host + "]: wwwProxy!");
    434                     } else if (host.toLowerCase().startsWith("localhost:")) {
    435                         if (out != null) {
    436                             out.write(ERR_LOCALHOST);
    437                             out.write("<p /><i>Generated on: ".getBytes());
    438                             out.write(new Date().toString().getBytes());
    439                             out.write("</i></body></html>\n".getBytes());
    440                             out.flush();
    441                         }
    442                         s.close();
    443                         return;
    444444                    } else {
    445445                        request = request.substring(pos + 1);
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java

    rbdcad06 r3dd3bf8  
    7474        File keyFile = new File(getPrivKeyFile());
    7575        if (!keyFile.isAbsolute())
    76             keyFile = new File(I2PAppContext.getGlobalContext().getAppDir(), getPrivKeyFile());
     76            keyFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), getPrivKeyFile());
    7777        if (keyFile.exists()) {
    7878            //log("Not overwriting existing private keys in " + keyFile.getAbsolutePath());
  • apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketOptionsImpl.java

    rbdcad06 r3dd3bf8  
    5454    }
    5555   
    56     protected int getInt(Properties opts, String name, int defaultVal) {
     56    protected static int getInt(Properties opts, String name, int defaultVal) {
    5757        if (opts == null) return defaultVal;
    5858        String val = opts.getProperty(name);
  • apps/routerconsole/java/build.xml

    rbdcad06 r3dd3bf8  
    124124                <pathelement location="../../jetty/jettylib/commons-logging.jar" />
    125125                <pathelement location="../../jetty/jettylib/commons-el.jar" />
     126                <pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" />
    126127                <pathelement location="../../systray/java/build/obj" />
    127128                <pathelement location="../../systray/java/lib/systray4j.jar" />
  • apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java

    rbdcad06 r3dd3bf8  
    116116                       + "\" /><br />\n");
    117117            _out.write("Refresh delay: <select name=\"refreshDelay\"><option value=\"60\">1 minute</option><option value=\"120\">2 minutes</option><option value=\"300\">5 minutes</option><option value=\"600\">10 minutes</option><option value=\"1800\">30 minutes</option><option value=\"3600\">1 hour</option><option value=\"-1\">Never</option></select><br />\n");
    118             _out.write("<hr /><input type=\"submit\" value=\"Redraw\" /></div>");
     118            _out.write("<hr /><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\" /></div></div>");
    119119        } catch (IOException ioe) {
    120120            ioe.printStackTrace();
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java

    rbdcad06 r3dd3bf8  
    6565    }
    6666   
    67     private static final DateFormat _fmt = new java.text.SimpleDateFormat("HH:mm:ss", Locale.UK);
    68     public String getTime() {
     67    private String timeSkew() {
    6968        if (_context == null) return "";
    70        
    71         String now = null;
    72         synchronized (_fmt) {
    73             now = _fmt.format(new Date(_context.clock().now()));
    74         }
    75        
    76         if (!_context.clock().getUpdatedSuccessfully())
    77             return now + " (Unknown skew)";
    78        
     69        //if (!_context.clock().getUpdatedSuccessfully())
     70        //    return " (Unknown skew)";
    7971        long ms = _context.clock().getOffset();
    80        
    8172        long diff = Math.abs(ms);
    82         if (diff < 100)
    83             return now;
    84         return now + " (" + DataHelper.formatDuration(diff) + " skew)";
     73        if (diff < 3000)
     74            return "";
     75        return " (" + DataHelper.formatDuration(diff) + " skew)";
    8576    }
    8677   
     
    9182    }
    9283   
    93     public int getAllPeers() { return _context.netDb().getKnownRouters(); }
     84    /** subtract one for ourselves, so if we know no other peers it displays zero */
     85    public int getAllPeers() { return Math.max(_context.netDb().getKnownRouters() - 1, 0); }
    9486   
    9587    public String getReachability() {
     88        return reachability() + timeSkew();
     89    }
     90
     91    private String reachability() {
    9692        if (_context.router().getUptime() > 60*1000 && (!_context.router().gracefulShutdownInProgress()) &&
    9793            !_context.clientManager().isAlive())
     
    355351            buf.append("<a href=\"tunnels.jsp#").append(client.calculateHash().toBase64().substring(0,4));
    356352            buf.append("\" target=\"_top\" title=\"Show tunnels\">");
    357             buf.append(name).append("</a><br />\n");
     353            if (name.length() < 16)
     354                buf.append(name);
     355            else
     356                buf.append(name.substring(0,15)).append("&hellip;");
     357            buf.append("</a><br />\n");
    358358            LeaseSet ls = _context.netDb().lookupLeaseSetLocally(client.calculateHash());
    359359            if (ls != null) {
  • apps/routerconsole/jsp/index.jsp

    rbdcad06 r3dd3bf8  
    44
    55<html><head>
     6<%@include file="css.jsp" %>
    67<title>I2P Router Console - home</title>
    78<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    8 <%@include file="css.jsp" %>
    99<link rel="shortcut icon" href="/themes/console/images/favicon.ico" />
    1010</head><body>
  • apps/routerconsole/jsp/summarynoframe.jsp

    rbdcad06 r3dd3bf8  
    2727<% } else { %>
    2828<u><b>I2P Services</b></u><br />
    29 <a href="susimail/susimail" target="blank">Susimail</a>
    30 <a href="susidns/index.jsp" target="_blank">SusiDNS</a>
    31 <a href="i2psnark/" target="_blank">Torrents</a>
     29<a href="susidns/index.jsp" target="_blank">Addressbook</a>
     30<a href="i2psnark/" target="_blank">Torrents</a>
     31<a href="susimail/susimail" target="blank">Webmail</a>
    3232<a href="http://127.0.0.1:7658/" target="_blank">Webserver</a><hr />
    3333<u><b>I2P Internals</b></u><br />
     
    4949<b>Version:</b> <jsp:getProperty name="helper" property="version" /><br />
    5050<b>Uptime:</b> <jsp:getProperty name="helper" property="uptime" /><br />
    51 <b>Now:</b> <jsp:getProperty name="helper" property="time" /><br />
    5251<b>Reachability:</b> <a href="config.jsp#help" target="_top"><jsp:getProperty name="helper" property="reachability" /></a>
    5352<%
     
    5554        // display all the time so we display the final failure message
    5655        out.print("<br />" + update.getStatus());
    57         if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) {
    58         } else if(!update.isDone()) {
     56        if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress"))) {
     57        } else if((!update.isDone()) &&
     58                  request.getParameter("action") == null &&
     59                  request.getParameter("updateNonce") == null &&
     60                  net.i2p.router.web.ConfigRestartBean.getRestartTimeRemaining() > 12*60*1000) {
    5961            long nonce = new java.util.Random().nextLong();
    6062            String prev = System.getProperty("net.i2p.router.web.UpdateHandler.nonce");
  • apps/routerconsole/jsp/web.xml

    rbdcad06 r3dd3bf8  
    2222        <welcome-file>index.jsp</welcome-file>
    2323    </welcome-file-list>
     24    <error-page>
     25        <error-code>404</error-code>
     26        <location>/error.jsp</location>
     27    </error-page>
    2428</web-app>
  • apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java

    rbdcad06 r3dd3bf8  
    285285    public ConnectionHandler getConnectionHandler() { return _connectionHandler; }
    286286    public PacketQueue getPacketQueue() { return _outboundQueue; }
     287    /** do we respond to pings that aren't on an existing connection? */
     288    public boolean answerPings() { return _defaultOptions.getAnswerPings(); }
    287289   
    288290    /**
  • apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java

    rbdcad06 r3dd3bf8  
    1010    private int _connectDelay;
    1111    private boolean _fullySigned;
     12    private boolean _answerPings;
    1213    private volatile int _windowSize;
    1314    private int _receiveWindow;
     
    5253    public static final String PROP_CONGESTION_AVOIDANCE_GROWTH_RATE_FACTOR = "i2p.streaming.congestionAvoidanceGrowthRateFactor";
    5354    public static final String PROP_SLOW_START_GROWTH_RATE_FACTOR = "i2p.streaming.slowStartGrowthRateFactor";
     55    public static final String PROP_ANSWER_PINGS = "i2p.streaming.answerPings";
    5456   
    5557    private static final int TREND_COUNT = 3;
     
    5860    public static final int DEFAULT_INITIAL_RTT = 8*1000;   
    5961    static final int MIN_WINDOW_SIZE = 1;
     62    private static final boolean DEFAULT_ANSWER_PINGS = true;
     63
    6064    // Syncronization fix, but doing it this way causes NPE...
    6165    // private final int _trend[] = new int[TREND_COUNT];
     
    199203            setWriteTimeout(opts.getWriteTimeout());
    200204            setReadTimeout(opts.getReadTimeout());
     205            setAnswerPings(opts.getAnswerPings());
    201206        }
    202207    }
     
    222227        setCongestionAvoidanceGrowthRateFactor(getInt(opts, PROP_CONGESTION_AVOIDANCE_GROWTH_RATE_FACTOR, 1));
    223228        setSlowStartGrowthRateFactor(getInt(opts, PROP_SLOW_START_GROWTH_RATE_FACTOR, 1));
    224        
    225229        setConnectTimeout(getInt(opts, PROP_CONNECT_TIMEOUT, Connection.DISCONNECT_TIMEOUT));
     230        setAnswerPings(getBool(opts, PROP_ANSWER_PINGS, DEFAULT_ANSWER_PINGS));
    226231    }
    227232   
     
    261266        if (opts.contains(PROP_SLOW_START_GROWTH_RATE_FACTOR))
    262267            setSlowStartGrowthRateFactor(getInt(opts, PROP_SLOW_START_GROWTH_RATE_FACTOR, 2));
    263        
    264268        if (opts.containsKey(PROP_CONNECT_TIMEOUT))
    265269            setConnectTimeout(getInt(opts, PROP_CONNECT_TIMEOUT, Connection.DISCONNECT_TIMEOUT));
     270        if (opts.containsKey(PROP_ANSWER_PINGS))
     271            setAnswerPings(getBool(opts, PROP_ANSWER_PINGS, DEFAULT_ANSWER_PINGS));
    266272    }
    267273   
     
    283289     * only?
    284290     *
     291     * There is no property name defined for this, so it's safe to
     292     * say this is unused and always false.
     293     *
    285294     * @return if we want signatures on all packets.
    286295     */
    287296    public boolean getRequireFullySigned() { return _fullySigned; }
    288297    public void setRequireFullySigned(boolean sign) { _fullySigned = sign; }
     298   
     299    /**
     300     * Do we respond to a ping?
     301     *
     302     * @return if we do
     303     */
     304    public boolean getAnswerPings() { return _answerPings; }
     305    public void setAnswerPings(boolean yes) { _answerPings = yes; }
    289306   
    290307    /**
     
    493510    }
    494511   
     512    private static boolean getBool(Properties opts, String name, boolean defaultVal) {
     513        if (opts == null) return defaultVal;
     514        String val = opts.getProperty(name);
     515        if (val == null)  return defaultVal;
     516        return Boolean.valueOf(val).booleanValue();
     517    }
     518
    495519    public static void main(String args[]) {
    496520        Properties p = new Properties();
  • apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java

    rbdcad06 r3dd3bf8  
    130130        if (packet.isFlagSet(Packet.FLAG_ECHO)) {
    131131            if (packet.getSendStreamId() > 0) {
    132                 receivePing(packet);
     132                if (con.getOptions().getAnswerPings())
     133                    receivePing(packet);
     134                else if (_log.shouldLog(Log.WARN))
     135                    _log.warn("Dropping Echo packet on existing con: " + packet);
    133136            } else if (packet.getReceiveStreamId() > 0) {
    134137                receivePong(packet);
     
    231234        if (packet.isFlagSet(Packet.FLAG_ECHO)) {
    232235            if (packet.getSendStreamId() > 0) {
    233                 receivePing(packet);
     236                if (_manager.answerPings())
     237                    receivePing(packet);
     238                else if (_log.shouldLog(Log.WARN))
     239                    _log.warn("Dropping Echo packet on unknown con: " + packet);
    234240            } else if (packet.getReceiveStreamId() > 0) {
    235241                receivePong(packet);
  • build.xml

    rbdcad06 r3dd3bf8  
    206206        </delete>
    207207    </target>
    208     <target name="pkg" depends="distclean, updaterWithJettyFixes, preppkg, installer" />
     208    <target name="pkg" depends="distclean, updater, preppkg, installer" />
    209209    <target name="pkgclean" depends="deletepkg-temp">
    210210        <delete>
     
    572572        <ant dir="apps/desktopgui" target="build_clean" />
    573573    </target>
     574    <target name="release" depends="pkg">
     575        <echo message="================================================================" />
     576        <echo message="Did you update these files?" />
     577        <exec executable="ls">
     578            <arg value="-l" />
     579            <arg value="history.txt" />
     580            <arg value="initialNews.xml" />
     581            <arg value="installer/install.xml" />
     582            <arg value="news.xml" />
     583            <arg value="core/java/src/net/i2p/CoreVersion.java" />
     584            <arg value="router/java/src/net/i2p/router/RouterVersion.java" />
     585        </exec>
     586        <echo message="Everything is checked in, right?" />
     587        <input message="Enter new version number:" addproperty="release.number" />
     588        <fail message="You must enter a version number." >
     589            <condition>
     590                <equals arg1="${release.number}" arg2=""/>
     591            </condition>
     592        </fail>
     593        <copy file="i2pupdate.zip" tofile="i2pupdate_${release.number}.zip" />
     594        <copy file="i2pinstall.exe" tofile="i2pinstall_${release.number}.exe" />
     595        <delete file="i2pupdate.sud" failonerror="false" />
     596        <input message="Enter private signing key file:" addproperty="release.privkey" />
     597        <fail message="You must enter a path." >
     598            <condition>
     599                <equals arg1="${release.privkey}" arg2=""/>
     600            </condition>
     601        </fail>
     602        <java classname="net.i2p.crypto.TrustedUpdate" fork="true" failonerror="true">
     603            <classpath>
     604                <pathelement location="build/i2p.jar" />
     605            </classpath>
     606            <arg value="sign" />
     607            <arg value="i2pupdate.zip" />
     608            <arg value="i2pupdate.sud" />
     609            <arg value="${release.privkey}" />
     610            <arg value="${release.number}" />
     611        </java>
     612        <fail message="i2pupdate.sud generation failed!" >
     613            <condition>
     614                <length file="i2pupdate.sud" when="lt" length="1000000" />
     615            </condition>
     616        </fail>
     617        <echo message="Verify version and VALID signature:" />
     618        <java classname="net.i2p.crypto.TrustedUpdate" fork="true" failonerror="true">
     619            <classpath>
     620                <pathelement location="build/i2p.jar" />
     621            </classpath>
     622            <arg value="verifysig" />
     623            <arg value="i2pupdate.sud" />
     624        </java>
     625        <java classname="net.i2p.crypto.TrustedUpdate" fork="true" failonerror="true">
     626            <classpath>
     627                <pathelement location="build/i2p.jar" />
     628            </classpath>
     629            <arg value="showversion" />
     630            <arg value="i2pupdate.sud" />
     631        </java>
     632        <!-- will this use the monotonerc file in the current workspace? -->
     633        <echo message="Checking out fresh copy into ../i2p-${release-number} for tarballing:" />
     634        <exec executable="mtn">
     635            <arg value="co" />
     636            <arg value="-b" />
     637            <arg value="i2p.i2p" />
     638            <arg value="../i2p-${release.number}/" />
     639        </exec>
     640        <exec executable="tar">
     641            <arg value="cjf" />
     642            <arg value="i2psource_${release.number}.tar.bz2" />
     643            <arg value="-C" />
     644            <arg value=".." />
     645            <arg value="--exclude" />
     646            <arg value="i2p-${release.number}/_MTN/" />
     647            <arg value="i2p-${release.number}/" />
     648        </exec>
     649        <echo message="Sign the files:" />
     650        <exec executable="gpg">
     651            <arg value="-b" />
     652            <arg value="i2pinstall_${release.number}.exe" />
     653        </exec>
     654        <exec executable="gpg">
     655            <arg value="-b" />
     656            <arg value="i2psource_${release.number}.tar.bz2" />
     657        </exec>
     658        <exec executable="gpg">
     659            <arg value="-b" />
     660            <arg value="i2pupdate_${release.number}.zip" />
     661        </exec>
     662        <echo message="File sizes:" />
     663        <exec executable="ls">
     664            <arg value="-l" />
     665            <arg value="i2pinstall_${release.number}.exe" />
     666            <arg value="i2psource_${release.number}.tar.bz2" />
     667            <arg value="i2pupdate_${release.number}.zip" />
     668            <arg value="i2pupdate.sud" />
     669            <arg value="i2pinstall_${release.number}.exe.sig" />
     670            <arg value="i2psource_${release.number}.tar.bz2.sig" />
     671            <arg value="i2pupdate_${release.number}.zip.sig" />
     672        </exec>
     673        <echo message="SHA256 sums:" />
     674        <exec executable="sha256sum">
     675            <arg value="i2pinstall_${release.number}.exe" />
     676            <arg value="i2psource_${release.number}.tar.bz2" />
     677            <arg value="i2pupdate_${release.number}.zip" />
     678            <arg value="i2pupdate.sud" />
     679        </exec>
     680        <echo message="Don't forget to mtn tag h: i2p-${release-number}" />
     681    </target>
    574682</project>
  • core/java/src/net/i2p/data/DataHelper.java

    rbdcad06 r3dd3bf8  
    872872        if (ms < 5 * 1000) {
    873873            return ms + "ms";
    874         } else if (ms < 5 * 60 * 1000) {
     874        } else if (ms < 3 * 60 * 1000) {
    875875            return (ms / 1000) + "s";
    876876        } else if (ms < 120 * 60 * 1000) {
  • core/java/src/net/i2p/time/Timestamper.java

    rbdcad06 r3dd3bf8  
    5353    }
    5454    public Timestamper(I2PAppContext ctx, UpdateListener lsnr, boolean daemon) {
     55        // Don't bother starting a thread if we are disabled.
     56        // This means we no longer check every 5 minutes to see if we got enabled,
     57        // so the property must be set at startup.
     58        // We still need to be instantiated since the router calls clock().getTimestamper().waitForInitialization()
     59        String disabled = ctx.getProperty(PROP_DISABLED, DEFAULT_DISABLED);
     60        if (Boolean.valueOf(disabled).booleanValue()) {
     61            _initialized = true;
     62            return;
     63        }
    5564        _context = ctx;
    5665        _daemon = daemon;
  • core/java/src/net/i2p/util/FileUtil.java

    rbdcad06 r3dd3bf8  
    7777   
    7878    public static boolean extractZip(File zipfile, File targetDir) {
     79        ZipFile zip = null;
    7980        try {
    8081            byte buf[] = new byte[16*1024];
    81             ZipFile zip = new ZipFile(zipfile);
     82            zip = new ZipFile(zipfile);
    8283            Enumeration entries = zip.entries();
    8384            while (entries.hasMoreElements()) {
     
    125126                }
    126127            }
    127             zip.close();
    128128            return true;
    129129        } catch (IOException ioe) {
     
    131131            ioe.printStackTrace();
    132132            return false;
    133         }
     133        } finally {
     134            if (zip != null) {
     135                try { zip.close(); } catch (IOException ioe) {}
     136            }
     137        }
    134138    }
    135139   
  • history.txt

    rbdcad06 r3dd3bf8  
     12009-08-07 zzz
     2    * build.xml:
     3      - Try to automate the release process
     4      - Take jetty back out of the updater after 4 releases
     5    * Console:
     6      - Add a custom error page
     7      - Don't count ourselves in known peers
     8      - Hide update button when shutting down
     9      - Increase skew warning threshold to 3s (was 100ms)
     10      - Remove UTC time from summary bar
     11      - Truncate long dest names
     12      - Try to reduce servlet problems on index page
     13    * Core:
     14      - Catch unzip fd leaks on error
     15      - Move 2 test classes out of the lib
     16    * Eepsite:
     17      - Quote the jetty.xml path in clients.config,
     18        and adjust the migration function, to fix the
     19        eepsite-won't-start bug on windows
     20    * HTTP Proxy:
     21      - Restore the localhost error message
     22      - Catch 127.0.0.1:xxxx addresses too
     23    * I2PTunnel:
     24      - Move the privkey files from the app dir to the
     25        config dir, in preparation for splitting the two
     26        dirs by default
     27    * Ministreaming:
     28      - Make getInt() static
     29      - Move the big TestSwarm class out of the lib
     30    * NetDb stats: Post-release cleanup
     31    * PersistentKeyRing: Fix broken storage of keys in config file
     32    * Router: Move the WorkingDir class from i2p.jar to router.jar
     33    * Streaming: New option i2p.streaming.answerPings (default true)
     34    * Timestamper: Don't start thread if not enabled
     35    * Wrapper:
     36      - Extend timeout to 20s (was 5s)
     37      - Shorten ping interval to 5m (was 10m)
     38
    1392009-08-03 dr|z3d
    240    * Extensive update to the Classic theme; custom css hacks for IE.
  • installer/resources/clients.config

    rbdcad06 r3dd3bf8  
    2121clientApp.3.main=org.mortbay.jetty.Server
    2222clientApp.3.name=My eepsite web server
    23 clientApp.3.args=eepsite/jetty.xml
     23clientApp.3.args="eepsite/jetty.xml"
    2424clientApp.3.delay=30
    2525clientApp.3.startOnLoad=true
  • installer/resources/themes/console/classic/console.css

    rbdcad06 r3dd3bf8  
    131131     text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7);
    132132     color: #f60;
     133}
     134
     135div.routersummary input[type=text] {
     136     text-align: right !important;
    133137}
    134138
     
    177181div.main li {
    178182     padding-bottom: 10px;
     183     list-style: square;
    179184}
    180185
     
    224229}
    225230
     231div.news a:visited {
     232     color: #f00 !important;
     233     text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3);
     234}
     235
    226236div.news hr {
    227237     color: #cc7;
     
    332342
    333343table hr {
    334      padding: 1px 0;
     344     padding: 0px 0;
     345     color: #bbf;
     346     background: #bbf;
     347     border: 0px solid #bbf;
     348     margin: 0px -5px;
     349     height: 1px;
     350}
     351
     352table tt {
     353     font-size: 7.5pt;
    335354}
    336355
    337356th {
    338      background-color: #def;
     357     background-color: #fff;
    339358     padding: 8px 2px;
    340359     text-align: center;
     
    346365}
    347366
     367tt, pre {
     368     font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
     369}
     370     
    348371td {
    349372     padding: 4px;
  • installer/resources/themes/console/classic/ieshim.css

    rbdcad06 r3dd3bf8  
    3737
    3838h1 {
    39      padding: 15px 10px 16px 10px !important;
     39     padding: 15px 10px 16px -10px !important;
    4040     margin: 0 0px 0 175px !important;
     41     background-color: #bbf !important;
     42     color: #001;
    4143}
    4244
     
    98100}
    99101
     102div.routersummary submit {
     103     padding: 0;
     104     margin-bottom: 5px;
     105}
     106
    100107div.news li {
    101108     padding-top: 0px   0px !important;
     
    133140     padding: 0;
    134141}
     142
     143div.graphspanel img {
     144     border: 1px solid #99f;
     145     margin: 6px 0 !important;
     146     background: #ddf;
     147     -moz-box-shadow: inset 0px 0px 1px 1px #99f;
     148}
     149
     150div.graphspanel hr {
     151     margin: 20px 0;
     152}
  • installer/resources/themes/console/dark/console.css

    rbdcad06 r3dd3bf8  
    9090     padding: 10px;
    9191     text-align: center;
    92      border: 1px solid #9999ff;
     92     border: 1px solid #99f;
    9393     background: #003;
    9494     background: url(images/darkbluebg.png);
     
    101101     float: left;
    102102     -moz-box-shadow: inset 0px 0px 1px 0px #eef;
     103}
     104
     105div.routersummary input[type=text] {
     106     text-align: right !important;
     107     -moz-box-shadow: inset 1px 1px 1px 0px #000;
     108}
     109
     110div.routersummary hr {
     111     color: #99f;
     112     background: #99f;
     113     height: 1px;
     114     border-bottom: 1px outset #bbf;
     115     margin: 5px -10px 4px -10px;
     116}
     117
     118div.routersummary hr {
     119     color: #bbf;
     120     background: #bbf;
     121     height: 2px;
     122     border-bottom: 1px outset #bbf;
     123     margin: 8px -10px 7px -10px;
     124     -moz-box-shadow: inset 0px -4px 2px 1px #001;
    103125}
    104126
     
    253275     font-size: 7pt;
    254276     background: #003;
     277}
     278
     279table hr {
     280     padding: 0px 0;
     281     color: #99f;
     282     background: #99f;
     283     border: 0px solid #99f;
     284     margin: 0px 0px;
     285     height: 1px;
     286     display: none;
    255287}
    256288
     
    393425     text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5);
    394426     letter-spacing: 0.05em;
    395      background: #003 url('images/darkbluebg.png');
     427     background: #003 url('images/titletile.png');
    396428     padding: 5px 10px 8px 10px;
    397429     wordwrap: none;
     
    436468}
    437469
    438 button {
     470button, button:visited {
    439471     font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
    440      border: 1px outset #ddddc0;
     472     border: 1px outset #77f;
    441473     padding: 1px 3px;
    442474     background: #bbf;
     
    451483     vertical-align: middle;
    452484     min-width: 76px;
    453 }
    454 
     485     -moz-box-shadow: inset 0px 1px 1px 0px #55f;
     486     background: #003;
     487     color: #99f;
     488}
     489
     490button:hover {
     491     border: 1px solid #f60;
     492     -moz-box-shadow: inset 0px 1px 1px 0px #eef;
     493     background: #001;
     494     color: #f60;
     495}     
     496         
    455497button:active {
    456498     border: 1px inset #f60;
    457499     background: #f60;
    458500     color: #fff;
     501     -moz-box-shadow: inset 0px 0px 0px 0px #f60;
    459502}
    460503
     
    489532
    490533input {
    491      border: 1px outset #bbf;
    492      background: #bbf;
    493      color: #002;
     534     border: 1px outset #55f;
     535     -moz-box-shadow: inset 0px 1px 1px 0px #55f;
     536     background: #003;
     537     color: #99f;
    494538     margin: 5px;
    495539     font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
     
    503547
    504548input:hover {
    505      background: #003;
     549     background: #001;
    506550     color: #f60;
    507551     border: 1px solid #f60;
     552     -moz-box-shadow: inset 0px 1px 1px 0px #eef;
    508553}
    509554
     
    531576     -moz-border-radius: 4px;
    532577     -khtml-border-radius: 4px;
     578     -moz-box-shadow: inset 1px 1px 1px 0px #000;
    533579}
    534580
  • installer/resources/themes/console/light/console.css

    rbdcad06 r3dd3bf8  
    104104*/     
    105105     -moz-box-shadow: inset 0px 0px 1px 0px #002;
     106}
     107
     108div.routersummary input[type=text] {
     109     text-align: right !important;
     110}
     111
     112div.routersummary hr {
     113     color: #eef;
     114     background: #eef;
     115     height: 2px;
     116     border-bottom: 1px solid #eef;
     117     margin: 8px -10px 7px -10px;
     118     -moz-box-shadow: inset 0px 1px 1px 1px #001;
    106119}
    107120
     
    227240     border: 1px solid #000022;
    228241     -moz-box-shadow: inset 0px 0px 1px 0px #002;
     242     min-width: 400px;
    229243}
    230244
     
    238252     border: 1px solid #000022;
    239253     -moz-box-shadow: inset 0px 0px 1px 0px #002;
    240 }
    241 
     254     text-align: center !important;
     255}
    242256
    243257div.graphspanel img {
     
    248262     background: #001;
    249263     -moz-box-shadow: inset 0px 0px 1px 1px #99f;
    250      opacity: 0.9;
     264     opacity: 0.8;
    251265}
    252266
     
    259273     -moz-box-shadow: inset 0px 0px 2px 1px #f60;
    260274     opacity: 1;
     275}
     276
     277div.graphspanel form {
     278     text-align: left;
    261279}
    262280
     
    302320}
    303321
     322table hr {
     323     padding: 0px 0;
     324     color: #99f;
     325     background: #99f;
     326     border: 0px solid #99f;
     327     margin: 0px 0px;
     328     height: 1px;
     329     display: none;
     330}
     331
    304332th {
    305333     padding: 6px 2px;
     
    434462     color: #001;
    435463     letter-spacing: 0.05em;
    436      background: #ddf url('images/lightbluetile.png');
     464     background: #ddf url('images/titletile.png');
    437465     text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5);
    438466     padding: 7px 10px;
     
    477505button, button:visited {
    478506     font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
    479      border: 1px outset #ddddc0;
     507     border: 1px outset #999;
    480508     padding: 1px 3px;
    481      background: #bbf !important;
     509     background: #ddf !important;
    482510     text-decoration: none;
    483511     border-radius: 4px;
     
    489517     text-align: center;
    490518     min-width: 80px;
     519     -moz-box-shadow: inset 0px 2px 8px 0px #fff;
     520     color: #006;
    491521}
    492522
     
    495525     background: #f60 !important;
    496526     color: #fff;
     527     -moz-box-shadow: inset 0px 0px 0px 1px #fff;
    497528}
    498529
     
    501532     background: #001 !important;
    502533     color: #f60;
     534     -moz-box-shadow: inset 0px 0px 0px 1px #f60;
    503535}
    504536
     
    532564
    533565input, input:visited {
    534      border: 1px outset #bbf;
    535      background: #bbf;
     566     border: 1px outset #999;
     567     background: #ddf;
    536568     color: #001;
    537569     margin: 5px;
     
    543575     -moz-border-radius: 4px;
    544576     -khtml-border-radius: 4px;
     577     -moz-box-shadow: inset 0px 2px 8px 0px #fff;
     578     color: #006;
     579     opacity: 0.9;
    545580}
    546581
     
    550585     color: #fff;
    551586     border: 1px solid #f60;
    552      opacity: 0.9;
     587     opacity: 1.0;
     588     -moz-box-shadow: inset 0px 0px 0px 1px #fff;
     589
    553590}
    554591
     
    558595     border: 1px solid #f60;
    559596     opacity: 1.0;
     597     -moz-box-shadow: inset 0px 0px 0px 1px #f60;
    560598}
    561599
     
    596634     -moz-border-radius: 4px;
    597635     -khtml-border-radius: 4px;
     636     text-align: left !important;
    598637}
    599638
  • installer/resources/themes/console/snark.css

    rbdcad06 r3dd3bf8  
    5757  font-weight: bold;
    5858  text-align: left;
    59   margin: 0 0 15px 0;
    60   padding: 0px;
     59  margin: 0 0px 10px 0px;
     60  padding: 0;
    6161  border-spacing: 0px;
    6262  -moz-border-radius: 4px 0 0 0;
     
    6969  color: #531;
    7070  height: 64px;
    71   width: 100%;
     71  width: auto;
    7272}
    7373
     
    9696  border-bottom: 1px inset #001; 
    9797  background: #f60 url('/themes/console/images/tabletitleorange.png') repeat-x;
    98   text-align: left;
     98  text-align: right;
    9999  whitespace: nowrap;
    100100}
     
    108108td {
    109109        padding: 5px;
    110   text-align: left;
     110  text-align: right;
    111111}
    112112.snarkTorrentEven {
     
    177177
    178178a:link{
    179   color: #830;
     179  color: #930;
    180180  text-decoration: none;
    181181  font-weight: bold;
     
    190190
    191191a:hover{
    192   color: #f40;
     192  color: #900;
    193193  font-weight: bold;
    194194}
  • installer/resources/wrapper.config

    rbdcad06 r3dd3bf8  
    159159wrapper.restart.delay=15
    160160
    161 wrapper.ping.interval=600
    162 wrapper.ping.timeout=605
     161wrapper.ping.interval=300
     162# The ping timeout must be at least 5 seconds longer than the value of wrapper.ping.interval.
     163# Extend this if you are getting 'JVM appears hung' shutdowns.
     164wrapper.ping.timeout=320
    163165
    164166# use the wrapper's internal timer thread.  otherwise this would
  • router/java/src/net/i2p/router/PersistentKeyRing.java

    rbdcad06 r3dd3bf8  
    5454                continue;
    5555            String hb = prop.substring(PROP_PFX.length());
    56             hb.replace("$", "=");
     56            hb = hb.replace("$", "=");
    5757            Hash dest = new Hash();
    5858            SessionKey sk = new SessionKey();
     
    7272            buf.append("\n<tr><td>");
    7373            Hash h = e.getKey();
    74             buf.append(h.toBase64().substring(0, 6)).append("...");
     74            buf.append(h.toBase64().substring(0, 6)).append("&hellip;");
    7575            buf.append("<td>");
    7676            LeaseSet ls = _ctx.netDb().lookupLeaseSetLocally(h);
     
    8282                        buf.append(in.getDestinationNickname());
    8383                    else
    84                         buf.append(dest.toBase64().substring(0, 6)).append("...");
     84                        buf.append(dest.toBase64().substring(0, 6)).append("&hellip;");
    8585                } else {
    8686                    String host = _ctx.namingService().reverseLookup(dest);
     
    8888                        buf.append(host);
    8989                    else
    90                         buf.append(dest.toBase64().substring(0, 6)).append("...");
     90                        buf.append(dest.toBase64().substring(0, 6)).append("&hellip;");
    9191                }
    9292            }
  • router/java/src/net/i2p/router/Router.java

    rbdcad06 r3dd3bf8  
    3636import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
    3737import net.i2p.router.startup.StartupJob;
     38import net.i2p.router.startup.WorkingDir;
    3839import net.i2p.router.transport.FIFOBandwidthLimiter;
    3940import net.i2p.stat.Rate;
     
    4546import net.i2p.util.SimpleScheduler;
    4647import net.i2p.util.SimpleTimer;
    47 import net.i2p.util.WorkingDir;
    4848
    4949/**
  • router/java/src/net/i2p/router/RouterVersion.java

    rbdcad06 r3dd3bf8  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 07;
     21    public final static long BUILD = 8;
    2222    /** for example "-test" */
    2323    public final static String EXTRA = "";
  • router/java/src/net/i2p/router/StatisticsManager.java

    rbdcad06 r3dd3bf8  
    140140            //includeRate("tunnel.buildRequestTime", stats, new long[] { 10*60*1000 });
    141141            long rate = 60*60*1000;
    142             boolean commentOutIn076 = RouterVersion.VERSION.equals("0.7.5");
    143             if (commentOutIn076) {
    144                 includeRate("tunnel.buildClientExpire", stats, new long[] { rate });
    145                 includeRate("tunnel.buildClientReject", stats, new long[] { rate });
    146                 includeRate("tunnel.buildClientSuccess", stats, new long[] { rate });
    147                 includeRate("tunnel.buildExploratoryExpire", stats, new long[] { rate });
    148                 includeRate("tunnel.buildExploratoryReject", stats, new long[] { rate });
    149                 includeRate("tunnel.buildExploratorySuccess", stats, new long[] { rate });
    150             } else {
    151                 includeTunnelRates("Client", stats, rate);
    152                 includeTunnelRates("Exploratory", stats, rate);
    153             }
     142            includeTunnelRates("Client", stats, rate);
     143            includeTunnelRates("Exploratory", stats, rate);
    154144            //includeRate("tunnel.rejectTimeout", stats, new long[] { 10*60*1000 });
    155145            //includeRate("tunnel.rejectOverloaded", stats, new long[] { 10*60*1000 });
  • router/java/src/net/i2p/router/startup/WorkingDir.java

    rbdcad06 r3dd3bf8  
    1 package net.i2p.util;
     1package net.i2p.router.startup;
    22
    33import java.io.BufferedWriter;
     
    196196            String s = null;
    197197            while ((s = DataHelper.readLine(in)) != null) {
    198                 if (s.endsWith("=eepsite/jetty.xml")) {
    199                     s = s.replace("=eepsite", '=' + todir.getAbsolutePath() + File.separatorChar + "eepsite");
     198                if (s.endsWith("=\"eepsite/jetty.xml\"")) {
     199                    s = s.replace("=\"eepsite/jetty.xml\"", "=\"" + todir.getAbsolutePath() +
     200                                                            File.separatorChar + "eepsite" +
     201                                                            File.separatorChar + "jetty.xml\"");
    200202                }
    201203                out.println(s);
Note: See TracChangeset for help on using the changeset viewer.