From 8c2636aa99fc31be0a8a3e3eade84e507e060ff0 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 20 Apr 2015 15:33:03 +0000 Subject: [PATCH] Reseed: Honor SSL/non-SSL setting when custom reseed list is set (ticket #1136) patch from "Inondle", cleaned up and tested --- .../i2p/router/networkdb/reseed/Reseeder.java | 68 ++++++++++++++----- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 1782c7d060..79a1d942a9 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -404,36 +404,68 @@ public class Reseeder { boolean defaulted = URLs == null; boolean SSLDisable = _context.getBooleanProperty(PROP_SSL_DISABLE); boolean SSLRequired = _context.getBooleanPropertyDefaultTrue(PROP_SSL_REQUIRED); + if (defaulted) { if (SSLDisable) URLs = DEFAULT_SEED_URL; else URLs = DEFAULT_SSL_SEED_URL; - } - StringTokenizer tok = new StringTokenizer(URLs, " ,"); - while (tok.hasMoreTokens()) { - String u = tok.nextToken().trim(); - if (!u.endsWith("/")) - u = u + '/'; - try { - URLList.add(new URL(u)); - } catch (MalformedURLException mue) {} - } - Collections.shuffle(URLList, _context.random()); - if (defaulted && !SSLDisable && !SSLRequired) { - // put the non-SSL at the end of the SSL - List<URL> URLList2 = new ArrayList<URL>(); - tok = new StringTokenizer(DEFAULT_SEED_URL, " ,"); + StringTokenizer tok = new StringTokenizer(URLs, " ,"); while (tok.hasMoreTokens()) { String u = tok.nextToken().trim(); if (!u.endsWith("/")) u = u + '/'; try { - URLList2.add(new URL(u)); + URLList.add(new URL(u)); } catch (MalformedURLException mue) {} } - Collections.shuffle(URLList2, _context.random()); - URLList.addAll(URLList2); + Collections.shuffle(URLList, _context.random()); + if (!SSLDisable && !SSLRequired) { + // put the non-SSL at the end of the SSL + List<URL> URLList2 = new ArrayList<URL>(); + tok = new StringTokenizer(DEFAULT_SEED_URL, " ,"); + while (tok.hasMoreTokens()) { + String u = tok.nextToken().trim(); + if (!u.endsWith("/")) + u = u + '/'; + try { + URLList2.add(new URL(u)); + } catch (MalformedURLException mue) {} + } + Collections.shuffle(URLList2, _context.random()); + URLList.addAll(URLList2); + } + } else { + // custom list given + List<URL> SSLList = new ArrayList<URL>(); + List<URL> nonSSLList = new ArrayList<URL>(); + StringTokenizer tok = new StringTokenizer(URLs, " ,"); + while (tok.hasMoreTokens()) { + // format tokens + String u = tok.nextToken().trim(); + if (!u.endsWith("/")) + u = u + '/'; + // check if ssl or not then add to respective list + if (u.startsWith("https")) { + try { + SSLList.add(new URL(u)); + } catch (MalformedURLException mue) {} + } else { + try { + nonSSLList.add(new URL(u)); + } catch (MalformedURLException mue) {} + } + } + // shuffle lists + // depending on preferences, add lists to URLList + if (!SSLDisable) { + Collections.shuffle(SSLList,_context.random()); + URLList.addAll(SSLList); + } + if (SSLDisable || !SSLRequired) { + Collections.shuffle(nonSSLList, _context.random()); + URLList.addAll(nonSSLList); + } } return reseed(URLList, echoStatus); } -- GitLab