Changeset b5df13d


Ignore:
Timestamp:
Apr 4, 2015 5:04:52 PM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
f7577e7
Parents:
9d76790 (diff), 75a8d8f (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 2cb50c2864d750f33039bdbaeb6c15d2bd636ce4)

to branch 'i2p.i2p.zzz.test2' (head 9775e688503ec47dc12efa860a5571317af5f063)

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java

    r9d76790 rb5df13d  
    7575    private ConnThrottler _postThrottler;
    7676
    77     private final static byte[] ERR_UNAVAILABLE =
    78         ("HTTP/1.1 503 Service Unavailable\r\n"+
     77    private final static String ERR_UNAVAILABLE =
     78         "HTTP/1.1 503 Service Unavailable\r\n"+
    7979         "Content-Type: text/html; charset=iso-8859-1\r\n"+
    8080         "Cache-control: no-cache\r\n"+
     
    8585         "<body><h2>503 Service Unavailable</h2>\n" +
    8686         "<p>This I2P website is unavailable. It may be down or undergoing maintenance.</p>\n" +
    87          "</body></html>")
    88          .getBytes();
    89 
    90     private final static byte[] ERR_DENIED =
    91         ("HTTP/1.1 403 Denied\r\n"+
     87         "</body></html>";
     88
     89    private final static String ERR_DENIED =
     90         "HTTP/1.1 403 Denied\r\n"+
    9291         "Content-Type: text/html; charset=iso-8859-1\r\n"+
    9392         "Cache-control: no-cache\r\n"+
     
    9897         "<body><h2>403 Denied</h2>\n" +
    9998         "<p>Denied due to excessive requests. Please try again later.</p>\n" +
    100          "</body></html>")
    101          .getBytes();
    102 
    103     private final static byte[] ERR_INPROXY =
    104         ("HTTP/1.1 403 Denied\r\n"+
     99         "</body></html>";
     100
     101    private final static String ERR_INPROXY =
     102         "HTTP/1.1 403 Denied\r\n"+
    105103         "Content-Type: text/html; charset=iso-8859-1\r\n"+
    106104         "Cache-control: no-cache\r\n"+
     
    111109         "<body><h2>403 Denied</h2>\n" +
    112110         "<p>Inproxy access denied. You must run <a href=\"https://geti2p.net/\">I2P</a> to access this site.</p>\n" +
    113          "</body></html>")
    114          .getBytes();
     111         "</body></html>";
     112
     113    private final static String ERR_SSL =
     114         "HTTP/1.1 503 Service Unavailable\r\n"+
     115         "Content-Type: text/html; charset=iso-8859-1\r\n"+
     116         "Cache-control: no-cache\r\n"+
     117         "Connection: close\r\n"+
     118         "Proxy-Connection: close\r\n"+
     119         "\r\n"+
     120         "<html><head><title>503 Service Unavailable</title></head>\n"+
     121         "<body><h2>503 Service Unavailable</h2>\n" +
     122         "<p>This I2P website is not configured for SSL.</p>\n" +
     123         "</body></html>";
    115124
    116125    public I2PTunnelHTTPServer(InetAddress host, int port, String privData, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel) {
     
    209218        //threads.
    210219        try {
     220            if (socket.getLocalPort() == 443) {
     221                if (getTunnel().getClientOptions().getProperty("targetForPort.443") == null) {
     222                    try {
     223                        socket.getOutputStream().write(ERR_SSL.getBytes("UTF-8"));
     224                    } catch (IOException ioe) {
     225                    } finally {
     226                        try {
     227                            socket.close();
     228                        } catch (IOException ioe) {}
     229                    }
     230                    return;
     231                }
     232                Socket s = getSocket(socket.getPeerDestination().calculateHash(), 443);
     233                Runnable t = new I2PTunnelRunner(s, socket, slock, null, null,
     234                                                 null, (I2PTunnelRunner.FailCallback) null);
     235                _clientExecutor.execute(t);
     236                return;
     237            }
     238
    211239            long afterAccept = getTunnel().getContext().clock().now();
     240
    212241            // The headers _should_ be in the first packet, but
    213242            // may not be, depending on the client-side options
     
    240269                    // Send a 403, so the user doesn't get an HTTP Proxy error message
    241270                    // and blame his router or the network.
    242                     socket.getOutputStream().write(ERR_INPROXY);
     271                    socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8"));
    243272                } catch (IOException ioe) {}
    244273                try {
     
    257286                        // Send a 403, so the user doesn't get an HTTP Proxy error message
    258287                        // and blame his router or the network.
    259                         socket.getOutputStream().write(ERR_DENIED);
     288                        socket.getOutputStream().write(ERR_DENIED.getBytes("UTF-8"));
    260289                    } catch (IOException ioe) {}
    261290                    try {
     
    342371                // Send a 503, so the user doesn't get an HTTP Proxy error message
    343372                // and blame his router or the network.
    344                 socket.getOutputStream().write(ERR_UNAVAILABLE);
     373                socket.getOutputStream().write(ERR_UNAVAILABLE.getBytes("UTF-8"));
    345374            } catch (IOException ioe) {}
    346375            try {
     
    363392                // Send a 503, so the user doesn't get an HTTP Proxy error message
    364393                // and blame his router or the network.
    365                 socket.getOutputStream().write(ERR_UNAVAILABLE);
     394                socket.getOutputStream().write(ERR_UNAVAILABLE.getBytes("UTF-8"));
    366395            } catch (IOException ioe) {}
    367396            try {
     
    454483                    if (browserout == null)
    455484                        browserout = _browser.getOutputStream();
    456                     browserout.write(ERR_UNAVAILABLE);
     485                    browserout.write(ERR_UNAVAILABLE.getBytes("UTF-8"));
    457486                } catch (IOException ioe) {}
    458487            } catch (IOException ioe) {
  • installer/resources/eepsite/jetty-ssl.xml

    r9d76790 rb5df13d  
    11<?xml version="1.0"?>
    22<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
     3
     4<!-- ========================================================================= -->
     5<!-- If you have a 'split' directory installation, with configuration          -->
     6<!-- files in ~/.i2p (Linux) or %APPDATA%\I2P (Windows), be sure to            -->
     7<!-- edit the file in the configuration directory, NOT the install directory.  -->
     8<!-- When running as a Linux daemon, the configuration directory is            -->
     9<!-- /var/lib/i2p and the install directory is /usr/share/i2p .                -->
     10<!--                                                                           -->
     11<!-- ========================================================================= -->
    312
    413<!-- =============================================================== -->
    514<!-- Configure SSL for the Jetty Server                              -->
    615<!-- this configuration file should be used in combination with      -->
    7 <!-- other configuration files.  e.g.                                -->
    8 <!--    java -jar start.jar etc/jetty-ssl.xml                        -->
    9 <!--                                                                 -->
    10 <!--  alternately, add to the start.ini for easier usage             -->
     16<!-- other configuration files.                                      -->
     17<!--                                                                 -->
    1118<!-- =============================================================== -->
     19<!-- Add a HTTPS SSL listener on port 7668                           -->
     20<!--                                                                 -->
     21<!-- NOTE:                                                           -->
     22<!--                                                                 -->
     23<!-- While I2P already encrypts end-to-end, HTTPS support            -->
     24<!-- is valuable for authentication.                                 -->
     25<!--                                                                 -->
     26<!-- These instructions are to add SSL support to an existing        -->
     27<!-- HTTP Jetty website.                                             -->
     28<!--                                                                 -->
     29<!-- For HTTPS ONLY, create a standard server tunnel                 -->
     30<!-- (NOT HTTP server), and skip step 8.                             -->
     31<!--                                                                 -->
     32<!-- For non-Jetty servers (e.g. Apache), follow your server         -->
     33<!-- instructions to generate and configure the certificates,        -->
     34<!-- and skip steps 1-7.                                             -->
     35<!--                                                                 -->
     36<!-- =============================================================== -->
     37<!--                                                                 -->
     38<!-- To add SSL support for your existing website:                   -->
     39<!--                                                                 -->
     40<!-- Step 1:                                                         -->
     41<!-- Get the b32 for your wehsite, it's the link at the              -->
     42<!-- "preview" button in the Hidden Services Manager in              -->
     43<!-- the console. If you aren't running i2p, you can                 -->
     44<!-- get it from your private key file                               -->
     45<!-- (probably ~/.i2p/eepsite/eepPriv.dat)                           -->
     46<!-- with the command:                                               -->
     47<!--     java -cp ~/i2p/lib/i2p.jar net.i2p.data.PrivateKeyFile ~/.i2p/eepsite/eepPriv.dat  -->
     48<!-- Save the b32 to put in the certificate's CN in Step 2.          -->
     49<!--                                                                 -->
     50<!--                                                                 -->
     51<!-- Step 2:                                                         -->
     52<!-- Generate selfsigned certificates.                               -->
     53<!-- We recommend two: one for the hostname, and one for the b32.    -->
     54<!-- Note that server-side SNI to serve the correct certificate      -->
     55<!-- requires Java 8. Otherwise it will pick one.                    -->
     56<!-- (at random? first one?)                                         -->
     57<!-- Change the CN and key password in the example, of course.       -->
     58<!-- It's OK to keep the keystore password as "changeit" if you like.  -->
     59<!-- Use the same passwords for both certificates.                   -->
     60<!-- See https://wiki.eclipse.org/Jetty/Howto/Configure_SSL          -->
     61<!-- for alternate methods.                                          -->
     62<!--
     63   keytool -genkey -keystore ~/.i2p/eepsite/etc/keystore.ks -storepass changeit -alias b32 -dname CN=biglongkey.b32.i2p,OU=Eepsite,O=XX,L=XX,ST=XX,C=XX -validity 3652 -keyalg RSA -keysize 2048 -keypass myKeyPassword
     64   keytool -genkey -keystore ~/.i2p/eepsite/etc/keystore.ks -storepass changeit -alias hostname -dname CN=example.i2p,OU=Eepsite,O=XX,L=XX,ST=XX,C=XX -validity 3652 -keyalg RSA -keysize 2048 -keypass myKeyPassword
     65   chmod 600 ~/.i2p/eepsite/etc/keystore.ks
     66 -->
     67<!--                                                                 -->
     68<!-- But does SNI work? see:                                         -->
     69<!-- http://blog.ivanristic.com/2014/03/ssl-tls-improvements-in-java-8.html -->
     70<!-- http://stackoverflow.com/questions/20887504/tls-extension-server-name-indication-sni-value-not-available-on-server-side -->
     71<!--                                                                 -->
     72<!-- And no, you can't get a real certificate for an i2p             -->
     73<!-- address from a Certificate Authority, but someday               -->
     74<!-- it may be possible. Here's how Tor did it:                      -->
     75<!-- https://cabforum.org/2015/02/18/ballot-144-validation-rules-dot-onion-names/ -->
     76<!--                                                                 -->
     77<!--                                                                 -->
     78<!-- Step 3:                                                         -->
     79<!-- Update this configuration file.                                 -->
     80<!-- Edit the KeyStorePassword, TrustStorePassword, and              -->
     81<!-- KeyManagerPassword below to match the passwords from Step 2.    -->
     82<!--                                                                 -->
     83<!--                                                                 -->
     84<!-- Step 4:                                                         -->
     85<!-- If running I2P, stop the website Jetty on /configclients        -->
     86<!-- in the console.                                                 -->
     87<!--                                                                 -->
     88<!--                                                                 -->
     89<!-- Step 5:                                                         -->
     90<!-- Configure Jetty to read in this file at startup.                -->
     91<!-- If running I2P, edit the website Jetty on /configclients        -->
     92<!-- to add the argument "/path/to/.i2p/eepsite/jetty-ssl.xml".      -->
     93<!--                                                                 -->
     94<!-- If I2P is not running, edit the file ~/.i2p/clients.config      -->
     95<!-- to add the argument "/path/to/.i2p/eepsite/jetty-ssl.xml"       -->
     96<!-- at the end of the line:                                         -->
     97<--    clientApp.3.args="eepsite/jetty.xml"                          -->
     98<!-- so it now looks like:                                           -->
     99<--    clientApp.3.args="/path to/.i2p/eepsite/jetty.xml" "/path/to/.i2p/eepsite/jetty-ssl.xml" -->
     100<!--                                                                 -->
     101<!--                                                                 -->
     102<!-- Step 6:                                                         -->
     103<!-- Start Jetty.                                                    -->
     104<!-- If running I2P, start the website Jetty on /configclients       -->
     105<!-- in the console.                                                 -->
     106<!-- If I2P is not running, start it.                                -->
     107<!--                                                                 -->
     108<!-- Now go to the /logs page in the console and check for errors    -->
     109<!-- in both the router and wrapper logs.                            -->
     110<!--                                                                 -->
     111<!--                                                                 -->
     112<!-- Step 7:                                                         -->
     113<!-- Test Jetty.                                                     -->
     114<!-- If there were no errors, test your Jetty SSL by                 -->
     115<!-- going to https://127.0.0.1:7668/ in your browser.               -->
     116<!-- You will have to confirm the security exception for             -->
     117<!-- the selfsigned certificate.                                     -->
     118<!--                                                                 -->
     119<!--                                                                 -->
     120<!-- Step 8:                                                         -->
     121<!-- Configure i2ptunnel.                                            -->
     122<!-- Tell i2ptunnel to route SSL to port 7668 by adding the          -->
     123<!-- following custom option on the i2ptunnel edit page              -->
     124<!-- for your website:                                               -->
     125<!--        targetForPort.443=127.0.0.1:7668                         -->
     126<!-- Also, verify that "Use SSL" near the top is NOT set.            -->
     127<!-- That would be SSL-over-SSL, which won't work.                   -->
     128<!--                                                                 -->
     129<!--                                                                 -->
     130<!-- Step 9:                                                         -->
     131<!-- Start the tunnel if it isn't started.                           -->
     132<!--                                                                 -->
     133<!--                                                                 -->
     134<!-- Step 10:                                                        -->
     135<!-- In the i2ptunnel HTTP Client configuration,                     -->
     136<!-- enable "Allow SSL to I2P addresses" if it isn't already.        -->
     137<!--                                                                 -->
     138<!--                                                                 -->
     139<!-- Step 11:                                                        -->
     140<!-- Test SSL via i2ptunnel.                                         -->
     141<!-- Test SSL to your website through I2P by entering                -->
     142<!-- https://yoursite.i2p/ in your browser.                          -->
     143<!-- If it doesn't work, check the /logs page in the console.        -->
     144<!-- You may need to adjust your browser proxy settings to           -->
     145<!-- ensure that https i2p URLs are fetched through the I2P proxy.   -->
     146<!-- For example, in privoxy, add                                    -->
     147<!-- https://*.i2p/* and https://*.i2p:*/*                           -->
     148<!--                                                                 -->
     149<!--                                                                 -->
     150<!-- Step 12:                                                        -->
     151<!-- Tell your users.                                                -->
     152<!-- Put a link to the https version on your                         -->
     153<!-- home page. Remind them that in                                  -->
     154<!-- the i2ptunnel HTTP Client configuration,                        -->
     155<!-- enable "Allow SSL to I2P addresses" if it isn't already.        -->
     156<!-- Remind them to confirm the security exception for               -->
     157<!-- the selfsigned certificate (but not one for a hostname          -->
     158<!-- mismatch) (but see SNI issues above).                           -->
     159<!-- Users may need to adjust their browser proxy settings to        -->
     160<!-- ensure that https i2p URLs are fetched through the I2P proxy.   -->
     161<!-- For example, in privoxy, add                                    -->
     162<!-- https://*.i2p/* and https://*.i2p:*/*                           -->
     163<!--                                                                 -->
     164<!-- Decide what link to use. The hostname is not secure,            -->
     165<!-- as users may have a different hostname in their browser.        -->
     166<!-- Also, new address helpers won't work with SSL.                  -->
     167<!-- The b32 is the recommended hostname.                            -->
     168<!--                                                                 -->
     169<!--                                                                 -->
     170<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
     171
    12172<Configure id="Server" class="org.eclipse.jetty.server.Server">
    13173
     
    15175 
    16176  <New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory">
    17     <Set name="KeyStore">./eepsite/etc/keystore</Set>
    18     <Set name="KeyStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
    19     <Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
    20     <Set name="TrustStore">./eepsite/etc/keystore</Set>
    21     <Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
     177    <Set name="KeyStore">./eepsite/etc/keystore.ks</Set>
     178    <Set name="KeyStorePassword">changeit</Set>
     179    <Set name="KeyManagerPassword">myKeyPassword</Set>
     180    <Set name="TrustStore">./eepsite/etc/keystore.ks</Set>
     181    <Set name="TrustStorePassword">changeit</Set>
    22182  </New>
    23183
     
    26186      <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
    27187        <Arg><Ref id="sslContextFactory" /></Arg>
    28         <Set name="Port">8443</Set>
     188        <Set name="host">127.0.0.1</Set>
     189        <Set name="port">7668</Set>
    29190        <Set name="maxIdleTime">600000</Set>
    30191        <Set name="useDirectBuffers">false</Set>
    31         <Set name="Acceptors">2</Set>
    32         <Set name="AcceptQueueSize">100</Set>
     192        <Set name="acceptors">1</Set>
     193        <Set name="statsOn">false</Set>
     194        <Set name="lowResourcesConnections">5000</Set>
     195        <Set name="lowResourcesMaxIdleTime">5000</Set>
     196        <Set name="ExcludeCipherSuites">
     197          <Array type="java.lang.String">
     198            <Item>SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA</Item>
     199            <Item>SSL_DH_anon_EXPORT_WITH_RC4_40_MD5</Item>
     200            <Item>SSL_DH_anon_WITH_3DES_EDE_CBC_SHA</Item>
     201            <Item>SSL_DH_anon_WITH_DES_CBC_SHA</Item>
     202            <Item>SSL_DH_anon_WITH_RC4_128_MD5</Item>
     203            <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
     204            <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
     205            <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
     206            <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
     207            <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
     208            <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
     209            <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
     210            <Item>SSL_RSA_WITH_NULL_MD5</Item>
     211            <Item>SSL_RSA_WITH_NULL_SHA</Item>
     212            <Item>TLS_DH_anon_WITH_AES_128_CBC_SHA</Item>
     213            <Item>TLS_DH_anon_WITH_AES_128_CBC_SHA256</Item>
     214            <Item>TLS_DH_anon_WITH_AES_128_GCM_SHA256</Item>
     215            <Item>TLS_DH_anon_WITH_AES_256_CBC_SHA</Item>
     216            <Item>TLS_DH_anon_WITH_AES_256_CBC_SHA256</Item>
     217            <Item>TLS_DH_anon_WITH_AES_256_GCM_SHA384</Item>
     218            <Item>TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA</Item>
     219            <Item>TLS_ECDH_anon_WITH_AES_128_CBC_SHA</Item>
     220            <Item>TLS_ECDH_anon_WITH_AES_256_CBC_SHA</Item>
     221            <Item>TLS_ECDH_anon_WITH_NULL_SHA</Item>
     222            <Item>TLS_ECDH_anon_WITH_RC4_128_SHA</Item>
     223            <Item>TLS_ECDH_ECDSA_WITH_NULL_SHA</Item>
     224            <Item>TLS_ECDHE_ECDSA_WITH_NULL_SHA</Item>
     225            <Item>TLS_ECDHE_RSA_WITH_NULL_SHA</Item>
     226            <Item>TLS_ECDH_RSA_WITH_NULL_SHA</Item>
     227            <Item>TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5</Item>
     228            <Item>TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA</Item>
     229            <Item>TLS_KRB5_EXPORT_WITH_RC4_40_MD5</Item>
     230            <Item>TLS_KRB5_EXPORT_WITH_RC4_40_SHA</Item>
     231            <Item>TLS_KRB5_WITH_3DES_EDE_CBC_MD5</Item>
     232            <Item>TLS_KRB5_WITH_3DES_EDE_CBC_SHA</Item>
     233            <Item>TLS_KRB5_WITH_DES_CBC_MD5</Item>
     234            <Item>TLS_KRB5_WITH_DES_CBC_SHA</Item>
     235            <Item>TLS_KRB5_WITH_RC4_128_MD5</Item>
     236            <Item>TLS_KRB5_WITH_RC4_128_SHA</Item>
     237            <Item>TLS_RSA_WITH_NULL_SHA256</Item>
     238            <Item>SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA</Item>
     239            <Item>SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
     240            <Item>SSL_RSA_WITH_3DES_EDE_CBC_SHA</Item>
     241            <Item>SSL_RSA_WITH_RC4_128_MD5</Item>
     242            <Item>SSL_RSA_WITH_RC4_128_SHA</Item>
     243            <Item>TLS_ECDH_ECDSA_WITH_RC4_128_SHA</Item>
     244            <Item>TLS_ECDH_RSA_WITH_RC4_128_SHA</Item>
     245            <Item>TLS_ECDHE_ECDSA_WITH_RC4_128_SHA</Item>
     246            <Item>TLS_ECDHE_RSA_WITH_RC4_128_SHA</Item>
     247            <Item>TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA</Item>
     248            <Item>TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA</Item>
     249            <Item>TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA</Item>
     250            <Item>TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
     251          </Array>
     252        </Set>
    33253      </New>
    34254    </Arg>
  • installer/resources/eepsite/jetty.xml

    r9d76790 rb5df13d  
    136136            <Set name="Acceptors">1</Set>
    137137            <Set name="statsOn">false</Set>
    138             <Set name="confidentialPort">8443</Set>
    139138            <Set name="lowResourcesConnections">5000</Set>
    140139            <Set name="lowResourcesMaxIdleTime">5000</Set>
     
    156155            <Set name="Acceptors">1</Set>
    157156            <Set name="statsOn">false</Set>
    158             <Set name="confidentialPort">8443</Set>
    159157          </New>
    160158      </Arg>
     
    169167    <!--   clientApp3.args=etc/jetty.xml etc/jetty-ssl.xml               -->
    170168    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    171   <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    172   <!-- Add a HTTPS SSL listener on port 8443                               -->
    173   <!--                                                                     -->
    174   <!-- In the unlikely event you would want SSL support for your eepsite.  -->
    175   <!-- You would need to generate a selfsigned certificate in a keystore   -->
    176   <!-- in ~/.i2p/eepsite/keystore.ks, for example with the command line:   -->
    177   <!--
    178        keytool -genkey -storetype JKS -keystore ~/.i2p/eepsite/etc/keystore.ks -storepass changeit -alias console -dname CN=xyz123.eepsite.i2p.net,OU=Eepsite,O=I2P Anonymous Network,L=XX,ST=XX,C=XX -validity 3650 -keyalg DSA -keysize 1024 -keypass myKeyPassword
    179    -->
    180   <!-- Change the CN and key password in the example, of course.           -->
    181   <!-- You wouldn't want to open this up to the regular internet,          -->
    182   <!-- would you?? Untested and not recommended.                           -->
    183   <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    184169
    185170    <!-- =========================================================== -->
  • router/java/src/net/i2p/router/JobQueue.java

    r9d76790 rb5df13d  
    7676    /** default max # job queue runners operating */
    7777    private final static int DEFAULT_MAX_RUNNERS = 1;
    78     /** router.config parameter to override the max runners @deprecated unimplemented */
     78    /** router.config parameter to override the max runners */
    7979    private final static String PROP_MAX_RUNNERS = "router.maxJobRunners";
    8080   
     
    331331    public void allowParallelOperation() {
    332332        _allowParallelOperation = true;
    333         runQueue(RUNNERS);
     333        runQueue(_context.getProperty(PROP_MAX_RUNNERS, RUNNERS));
    334334    }
    335335   
Note: See TracChangeset for help on using the changeset viewer.