commit 7dc17f8e14b3e87f26bd34e1d7c4649546e3476a Author: iwakeh iwakeh@torproject.org Date: Fri Jul 22 09:13:28 2016 +0200
Implements task-19727: make exitlist url configurable and correct default setting. --- .../org/torproject/collector/conf/Configuration.java | 16 ++++++++++++++++ src/main/java/org/torproject/collector/conf/Key.java | 2 ++ .../collector/exitlists/ExitListDownloader.java | 4 +--- src/main/resources/collector.properties | 1 + .../org/torproject/collector/conf/ConfigurationTest.java | 9 ++++++++- 5 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/torproject/collector/conf/Configuration.java b/src/main/java/org/torproject/collector/conf/Configuration.java index 4e05ad4..9295811 100644 --- a/src/main/java/org/torproject/collector/conf/Configuration.java +++ b/src/main/java/org/torproject/collector/conf/Configuration.java @@ -3,6 +3,8 @@
package org.torproject.collector.conf;
+import java.net.MalformedURLException; +import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Properties; @@ -113,4 +115,18 @@ public class Configuration extends Properties { } }
+ /** + * Returns a {@code URL} property, e.g. + * {@code urlProperty = https://my.url.here%7D. + */ + public URL getUrl(Key key) throws ConfigurationException { + try { + checkClass(key, URL.class); + return new URL(getProperty(key.name())); + } catch (MalformedURLException mue) { + throw new ConfigurationException("Corrupt property: " + key + + " reason: " + mue.getMessage(), mue); + } + } + } diff --git a/src/main/java/org/torproject/collector/conf/Key.java b/src/main/java/org/torproject/collector/conf/Key.java index 4f5df64..b4119b6 100644 --- a/src/main/java/org/torproject/collector/conf/Key.java +++ b/src/main/java/org/torproject/collector/conf/Key.java @@ -1,5 +1,6 @@ package org.torproject.collector.conf;
+import java.net.URL; import java.nio.file.Path;
/** @@ -9,6 +10,7 @@ import java.nio.file.Path; public enum Key {
ExitlistOutputDirectory(Path.class), + ExitlistUrl(URL.class), InstanceBaseUrl(String.class), LockFilePath(Path.class), ArchivePath(Path.class), diff --git a/src/main/java/org/torproject/collector/exitlists/ExitListDownloader.java b/src/main/java/org/torproject/collector/exitlists/ExitListDownloader.java index 70de74f..79fe19f 100644 --- a/src/main/java/org/torproject/collector/exitlists/ExitListDownloader.java +++ b/src/main/java/org/torproject/collector/exitlists/ExitListDownloader.java @@ -84,9 +84,7 @@ public class ExitListDownloader extends Thread { sb.append("@type tordnsel 1.0\n"); sb.append("Downloaded " + dateTimeFormat.format(downloadedDate) + "\n"); - String exitAddressesUrl = - "http://exitlist.torproject.org/exit-addresses"; - URL url = new URL(exitAddressesUrl); + URL url = config.getUrl(Key.ExitlistUrl); HttpURLConnection huc = (HttpURLConnection) url.openConnection(); huc.setRequestMethod("GET"); huc.connect(); diff --git a/src/main/resources/collector.properties b/src/main/resources/collector.properties index fb9e1b4..76ae6bd 100644 --- a/src/main/resources/collector.properties +++ b/src/main/resources/collector.properties @@ -98,6 +98,7 @@ SanitizedBridgesWriteDirectory = out/bridge-descriptors/ # ## ExitlistOutputDirectory = out/exit-lists/ +ExitlistUrl = https://check.torproject.org/exit-addresses
######## Torperf downloader ######## # diff --git a/src/test/java/org/torproject/collector/conf/ConfigurationTest.java b/src/test/java/org/torproject/collector/conf/ConfigurationTest.java index 57dda75..ac9fd4f 100644 --- a/src/test/java/org/torproject/collector/conf/ConfigurationTest.java +++ b/src/test/java/org/torproject/collector/conf/ConfigurationTest.java @@ -22,7 +22,7 @@ public class ConfigurationTest { public void testKeyCount() throws Exception { assertEquals("The number of properties keys in enum Key changed." + "\n This test class should be adapted.", - 32, Key.values().length); + 33, Key.values().length); }
@Test() @@ -129,6 +129,13 @@ public class ConfigurationTest { }
@Test( expected = ConfigurationException.class) + public void testUrlValueException() throws Exception { + Configuration conf = new Configuration(); + conf.load(new ByteArrayInputStream("ExitlistUrl = xxx://y.y.y".getBytes())); + conf.getUrl(Key.ExitlistUrl); + } + + @Test( expected = ConfigurationException.class) public void testIntValueException() throws Exception { Configuration conf = new Configuration(); conf.load(new ByteArrayInputStream("BridgeDescriptorMappingsLimit = y7".getBytes()));
tor-commits@lists.torproject.org