Changeset 217cb1f


Ignore:
Timestamp:
Sep 16, 2011 2:45:02 PM (8 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
a7f8560
Parents:
1d179813
Message:
  • Reseed:
    • Add HTTP proxy authorization support
    • Stub out SSL proxy support
    • Disable i2pbote reseed
  • EepGet?: Add some new command line options
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java

    r1d179813 r217cb1f  
    4444    }
    4545
     46    /** @since 0.8.9 */
     47    private void saveString(String config, String param) {
     48        String val = getJettyString(param);
     49        if (val != null && val.length() > 0)
     50            _context.router().setConfigSetting(config, val);
     51        else
     52            _context.router().removeConfigSetting(config);
     53    }
     54
     55    /** @since 0.8.9 */
     56    private void saveBoolean(String config, String param) {
     57        boolean val = getJettyString(param) != null;
     58        _context.router().setConfigSetting(config, Boolean.toString(val));
     59    }
     60
    4661    private void saveChanges() {
    47         String port = getJettyString("port");
    48         if (port != null)
    49             _context.router().setConfigSetting(Reseeder.PROP_PROXY_PORT, port);
    50         String host = getJettyString("host");
    51         if (host != null)
    52             _context.router().setConfigSetting(Reseeder.PROP_PROXY_HOST, host);
     62        saveString(Reseeder.PROP_PROXY_PORT, "port");
     63        saveString(Reseeder.PROP_PROXY_HOST, "host");
     64        saveString(Reseeder.PROP_PROXY_USERNAME, "username");
     65        saveString(Reseeder.PROP_PROXY_PASSWORD, "password");
     66        saveBoolean(Reseeder.PROP_PROXY_AUTH_ENABLE, "auth");
     67        saveString(Reseeder.PROP_SPROXY_PORT, "sport");
     68        saveString(Reseeder.PROP_SPROXY_HOST, "shost");
     69        saveString(Reseeder.PROP_SPROXY_USERNAME, "susername");
     70        saveString(Reseeder.PROP_SPROXY_PASSWORD, "spassword");
     71        saveBoolean(Reseeder.PROP_SPROXY_AUTH_ENABLE, "sauth");
    5372        String url = getJettyString("reseedURL");
    5473        if (url != null)
     
    6180        _context.router().setConfigSetting(Reseeder.PROP_SSL_DISABLE,
    6281                                           Boolean.toString(disabled));
    63         boolean proxy = getJettyString("enable") != null;
    64         _context.router().setConfigSetting(Reseeder.PROP_PROXY_ENABLE, Boolean.toString(proxy));
     82        saveBoolean(Reseeder.PROP_PROXY_ENABLE, "enable");
     83        saveBoolean(Reseeder.PROP_SPROXY_ENABLE, "senable");
    6584        _context.router().saveConfig();
    6685        addFormNotice(_("Configuration saved successfully."));
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java

    r1d179813 r217cb1f  
    2121    }
    2222
     23    /** @since 0.8.9 */
     24    public String getUsername() {
     25        return _context.getProperty(Reseeder.PROP_PROXY_USERNAME, "");
     26    }
     27
     28    /** @since 0.8.9 */
     29    public String getPassword() {
     30        return _context.getProperty(Reseeder.PROP_PROXY_PASSWORD, "");
     31    }
     32
     33    /** @since 0.8.9 */
     34    public String getSport() {
     35        return _context.getProperty(Reseeder.PROP_SPROXY_PORT, "");
     36    }
     37
     38    /** @since 0.8.9 */
     39    public String getShost() {
     40        return _context.getProperty(Reseeder.PROP_SPROXY_HOST, "");
     41    }
     42
     43    /** @since 0.8.9 */
     44    public String getSusername() {
     45        return _context.getProperty(Reseeder.PROP_SPROXY_USERNAME, "");
     46    }
     47
     48    /** @since 0.8.9 */
     49    public String getSpassword() {
     50        return _context.getProperty(Reseeder.PROP_SPROXY_PASSWORD, "");
     51    }
     52
    2353    public String modeChecked(int mode) {
    2454        boolean required =  _context.getBooleanProperty(Reseeder.PROP_SSL_REQUIRED);
     
    3262
    3363    public String getEnable() {
    34         boolean enabled =  _context.getBooleanProperty(Reseeder.PROP_PROXY_ENABLE);
     64        return checked(Reseeder.PROP_PROXY_ENABLE);
     65    }
     66
     67    /** @since 0.8.9 */
     68    public String getAuth() {
     69        return checked(Reseeder.PROP_PROXY_AUTH_ENABLE);
     70    }
     71
     72    public String getSenable() {
     73        return checked(Reseeder.PROP_SPROXY_ENABLE);
     74    }
     75
     76    /** @since 0.8.9 */
     77    public String getSauth() {
     78        return checked(Reseeder.PROP_SPROXY_AUTH_ENABLE);
     79    }
     80
     81    /** @since 0.8.9 */
     82    private String checked(String prop) {
     83        boolean enabled =  _context.getBooleanProperty(prop);
    3584        if (enabled)
    3685            return "checked=\"true\"";
  • apps/routerconsole/jsp/configreseed.jsp

    r1d179813 r217cb1f  
    3434<div class="wideload">
    3535<table border="0" cellspacing="5">
    36 <tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URL Selection")%></b></td>
     36<tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URL Selection")%>:</b></td>
    3737<td><input type="radio" class="optbox" name="mode" value="0" <%=reseedHelper.modeChecked(0) %> >
    38 <%=intl._("Try SSL first then non-SSL")%>
     38<b><%=intl._("Try SSL first then non-SSL")%></b><br>
    3939<input type="radio" class="optbox" name="mode" value="1" <%=reseedHelper.modeChecked(1) %> >
    40 <%=intl._("Use SSL only")%>
     40<b><%=intl._("Use SSL only")%></b><br>
    4141<input type="radio" class="optbox" name="mode" value="2" <%=reseedHelper.modeChecked(2) %> >
    42 <%=intl._("Use non-SSL only")%></td></tr>
    43 <tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URLs")%></b></td>
     42<b><%=intl._("Use non-SSL only")%></b></td></tr>
     43<tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URLs")%>:</b></td>
    4444<td><textarea name="reseedURL" wrap="off" spellcheck="false"><jsp:getProperty name="reseedHelper" property="reseedURL" /></textarea></td></tr>
    45 <tr><td class="mediumtags" align="right"><b><%=intl._("Enable HTTP proxy (not used for SSL)")%></b></td>
     45
     46<tr><td class="mediumtags" align="right"><b><%=intl._("Enable HTTP Proxy?")%></b></td>
    4647<td><input type="checkbox" class="optbox" name="enable" value="true" <jsp:getProperty name="reseedHelper" property="enable" /> ></td></tr>
    4748<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Host")%>:</b></td>
    4849<td><input name="host" type="text" value="<jsp:getProperty name="reseedHelper" property="host" />" ></td></tr>
    4950<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Port")%>:</b></td>
    50 <td><input name="port" type="text" value="<jsp:getProperty name="reseedHelper" property="port" />" ></td></tr>
     51<td><input name="port" type="text" size="5" maxlength="5" value="<jsp:getProperty name="reseedHelper" property="port" />" ></td></tr>
     52
     53<tr><td class="mediumtags" align="right"><b><%=intl._("Use HTTP Proxy Authorization?")%></b></td>
     54<td><input type="checkbox" class="optbox" name="auth" value="true" <jsp:getProperty name="reseedHelper" property="auth" /> ></td></tr>
     55<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Username")%>:</b></td>
     56<td><input name="username" type="text" value="<jsp:getProperty name="reseedHelper" property="username" />" ></td></tr>
     57<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Password")%>:</b></td>
     58<td><input name="password" type="password" value="<jsp:getProperty name="reseedHelper" property="password" />" ></td></tr>
     59
     60<!-- TODO Need SSLEepGet support
     61<tr><td class="mediumtags" align="right"><b><%=intl._("Enable HTTPS Proxy?")%></b></td>
     62<td><input type="checkbox" class="optbox" name="senable" value="true" <jsp:getProperty name="reseedHelper" property="senable" /> ></td></tr>
     63<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Host")%>:</b></td>
     64<td><input name="shost" type="text" value="<jsp:getProperty name="reseedHelper" property="shost" />" ></td></tr>
     65<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Port")%>:</b></td>
     66<td><input name="sport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="reseedHelper" property="sport" />" ></td></tr>
     67
     68<tr><td class="mediumtags" align="right"><b><%=intl._("Use HTTPS Proxy Authorization?")%></b></td>
     69<td><input type="checkbox" class="optbox" name="sauth" value="true" <jsp:getProperty name="reseedHelper" property="sauth" /> ></td></tr>
     70<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Username")%>:</b></td>
     71<td><input name="susername" type="text" value="<jsp:getProperty name="reseedHelper" property="susername" />" ></td></tr>
     72<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Password")%>:</b></td>
     73<td><input name="spassword" type="password" value="<jsp:getProperty name="reseedHelper" property="spassword" />" ></td></tr>
     74-->
     75
    5176</table></div>
    5277<hr><div class="formaction">
  • core/java/src/net/i2p/util/EepGet.java

    r1d179813 r217cb1f  
    1616
    1717import net.i2p.I2PAppContext;
     18import net.i2p.data.Base64;
    1819import net.i2p.data.DataHelper;
    1920import net.i2p.util.InternalSocket;
     
    143144        String saveAs = null;
    144145        String url = null;
     146        List<String> extra = null;
     147        String username = null;
     148        String password = null;
    145149        try {
    146150            for (int i = 0; i < args.length; i++) {
     
    163167                    i++;
    164168                } else if (args[i].equals("-m")) {
    165                     markSize = Integer.parseInt(args[i+1]);
    166                     lineLen = Integer.parseInt(args[i+2]);
    167                     i += 2;
     169                    markSize = Integer.parseInt(args[++i]);
     170                    lineLen = Integer.parseInt(args[++i]);
     171                } else if (args[i].equals("-h")) {
     172                    if (extra == null)
     173                        extra = new ArrayList(2);
     174                    extra.add(args[++i]);
     175                    extra.add(args[++i]);
     176                } else if (args[i].equals("-u")) {
     177                    username = args[++i];
     178                    password = args[++i];
    168179                } else if (args[i].startsWith("-")) {
    169180                    usage();
     
    187198
    188199        EepGet get = new EepGet(I2PAppContext.getGlobalContext(), true, proxyHost, proxyPort, numRetries, saveAs, url, true, etag);
     200        if (extra != null) {
     201            for (int i = 0; i < extra.size(); i += 2) {
     202                get.addHeader(extra.get(i), extra.get(i + 1));
     203            }
     204        }
     205        if (username != null && password != null)
     206            get.addAuthorization(username, password);
    189207        get.addStatusListener(get.new CLIStatusListener(markSize, lineLen));
    190208        get.fetch(CONNECT_TIMEOUT, -1, inactivityTimeout);
     
    222240   
    223241    private static void usage() {
    224         System.err.println("EepGet [-p 127.0.0.1:4444] [-n #retries] [-o outputFile] [-m markSize lineLen] [-t timeout] url");
     242        System.err.println("EepGet [-p 127.0.0.1:4444] [-n #retries] [-o outputFile] " +
     243                           "[-m markSize lineLen] [-t timeout] [-h headerKey headerValue] " +
     244                           "[-u username password] url");
    225245    }
    226246   
     
    10951115        _extraHeaders.add(name + ": " + value);
    10961116    }
     1117
     1118    /**
     1119     *  Add basic authorization header for the proxy.
     1120     *  Only added if the request is going through a proxy.
     1121     *  Must be called before fetch().
     1122     *
     1123     *  @since 0.8.9
     1124     */
     1125    public void addAuthorization(String userName, String password) {
     1126        if (_shouldProxy)
     1127            addHeader("Proxy-Authorization",
     1128                      "Basic " + Base64.encode((userName + ':' + password).getBytes(), true));  // true = use standard alphabet
     1129    }
    10971130}
  • router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java

    r1d179813 r217cb1f  
    6161              "http://reseed.i2p-projekt.de/," +
    6262              "http://forum.i2p2.de/netdb/," +
    63               "http://www.i2pbote.net/netDb/," +
     63         /*   "http://www.i2pbote.net/netDb/," +   NO DATA */
    6464              "http://r31453.ovh.net/static_media/files/netDb/," +
    6565              "http://cowpuncher.drollette.com/netdb/";
     
    7070         /*   "https://c.netdb.i2p2.de/," +   no data */
    7171              "https://forum.i2p2.de/netdb/," +
    72               "https://www.i2pbote.net/netDb/," +
     72         /*   "https://www.i2pbote.net/netDb/," +   NO DATA */
    7373              "https://reseed.i2p-projekt.de/," +
    7474              "https://r31453.ovh.net/static_media/files/netDb/," +
     
    9090    /** @since 0.8.3 */
    9191    public static final String PROP_RESEED_URL = "i2p.reseedURL";
     92    /** all these @since 0.8.9 */
     93    public static final String PROP_PROXY_USERNAME = "router.reseedProxy.username";
     94    public static final String PROP_PROXY_PASSWORD = "router.reseedProxy.password";
     95    public static final String PROP_PROXY_AUTH_ENABLE = "router.reseedProxy.authEnable";
     96    public static final String PROP_SPROXY_HOST = "router.reseedSSLProxyHost";
     97    public static final String PROP_SPROXY_PORT = "router.reseedSSLProxyPort";
     98    public static final String PROP_SPROXY_ENABLE = "router.reseedSSLProxyEnable";
     99    public static final String PROP_SPROXY_USERNAME = "router.reseedSSLProxy.username";
     100    public static final String PROP_SPROXY_PASSWORD = "router.reseedSSLProxy.password";
     101    public static final String PROP_SPROXY_AUTH_ENABLE = "router.reseedSSLProxy.authEnable";
    92102
    93103    public Reseeder(RouterContext ctx) {
     
    394404            if (ssl) {
    395405                SSLEepGet sslget;
     406                // TODO SSL PROXY
    396407                if (_sslState == null) {
    397408                    sslget = new SSLEepGet(I2PAppContext.getGlobalContext(), baos, url.toString());
     
    402413                }
    403414                get = sslget;
     415                // TODO SSL PROXY AUTH
    404416            } else {
    405417                // Do a (probably) non-proxied eepget into our ByteArrayOutputStream with 0 retries
     
    407419                get = new EepGet(I2PAppContext.getGlobalContext(), shouldProxy, _proxyHost, _proxyPort, 0, 0, MAX_RESEED_RESPONSE_SIZE,
    408420                                 null, baos, url.toString(), false, null, null);
     421                if (shouldProxy && _context.getBooleanProperty(PROP_PROXY_AUTH_ENABLE)) {
     422                    String user = _context.getProperty(PROP_PROXY_USERNAME);
     423                    String pass = _context.getProperty(PROP_PROXY_PASSWORD);
     424                    if (user != null && user.length() > 0 &&
     425                        pass != null && pass.length() > 0)
     426                        get.addAuthorization(user, pass);
     427                }
    409428            }
    410429            get.addStatusListener(ReseedRunner.this);
Note: See TracChangeset for help on using the changeset viewer.