[tor-commits] [metrics-lib/release] Remove all deprecation warnings. Test might not compile yet.
karsten at torproject.org
karsten at torproject.org
Wed Jun 28 17:54:51 UTC 2017
commit a56c96d66c880e60ddf818697b006502f3177eac
Author: iwakeh <iwakeh at torproject.org>
Date: Fri Jun 23 08:37:42 2017 +0000
Remove all deprecation warnings. Test might not compile yet.
Part of task-22154.
---
.../descriptor/DescriptorDownloader.java | 201 -------------
.../org/torproject/descriptor/DescriptorFile.java | 84 ------
.../descriptor/DescriptorParseException.java | 4 +-
.../torproject/descriptor/DescriptorParser.java | 17 --
.../torproject/descriptor/DescriptorReader.java | 84 ------
.../torproject/descriptor/DescriptorRequest.java | 104 -------
.../descriptor/DescriptorSourceFactory.java | 40 +--
.../org/torproject/descriptor/DirSourceEntry.java | 10 -
.../descriptor/DirectoryKeyCertificate.java | 10 -
.../torproject/descriptor/DirectorySignature.java | 11 -
.../java/org/torproject/descriptor/ExitList.java | 11 -
.../org/torproject/descriptor/ExitListEntry.java | 55 ----
.../torproject/descriptor/ExtraInfoDescriptor.java | 47 ---
.../org/torproject/descriptor/Microdescriptor.java | 11 -
.../torproject/descriptor/NetworkStatusEntry.java | 11 -
.../org/torproject/descriptor/RelayDirectory.java | 11 -
.../torproject/descriptor/RelayNetworkStatus.java | 11 -
.../descriptor/RelayNetworkStatusConsensus.java | 24 --
.../descriptor/RelayNetworkStatusVote.java | 29 --
.../torproject/descriptor/ServerDescriptor.java | 48 +--
.../impl/BridgeExtraInfoDescriptorImpl.java | 7 +-
.../descriptor/impl/BridgeNetworkStatusImpl.java | 16 +-
.../descriptor/impl/BridgePoolAssignmentImpl.java | 3 +-
.../impl/BridgeServerDescriptorImpl.java | 7 +-
.../descriptor/impl/DescriptorCollectorImpl.java | 264 -----------------
.../descriptor/impl/DescriptorDownloaderImpl.java | 294 -------------------
.../descriptor/impl/DescriptorFileImpl.java | 93 ------
.../torproject/descriptor/impl/DescriptorImpl.java | 13 +-
.../descriptor/impl/DescriptorParseException.java | 23 --
.../descriptor/impl/DescriptorParserImpl.java | 55 ++--
.../descriptor/impl/DescriptorReaderImpl.java | 145 +--------
.../descriptor/impl/DescriptorRequestImpl.java | 137 ---------
.../descriptor/impl/DirSourceEntryImpl.java | 23 +-
.../descriptor/impl/DirectoryDownloader.java | 111 -------
.../impl/DirectoryKeyCertificateImpl.java | 18 +-
.../descriptor/impl/DirectorySignatureImpl.java | 23 +-
.../descriptor/impl/DownloadCoordinator.java | 11 -
.../descriptor/impl/DownloadCoordinatorImpl.java | 323 ---------------------
.../descriptor/impl/ExitListEntryImpl.java | 69 +----
.../torproject/descriptor/impl/ExitListImpl.java | 27 +-
.../descriptor/impl/ExtraInfoDescriptorImpl.java | 50 +---
.../descriptor/impl/MicrodescriptorImpl.java | 21 +-
.../descriptor/impl/NetworkStatusEntryImpl.java | 24 +-
.../descriptor/impl/NetworkStatusImpl.java | 13 +-
.../descriptor/impl/RelayDirectoryImpl.java | 27 +-
.../impl/RelayExtraInfoDescriptorImpl.java | 7 +-
.../impl/RelayNetworkStatusConsensusImpl.java | 36 +--
.../descriptor/impl/RelayNetworkStatusImpl.java | 14 +-
.../impl/RelayNetworkStatusVoteImpl.java | 43 +--
.../descriptor/impl/RelayServerDescriptorImpl.java | 7 +-
.../descriptor/impl/ServerDescriptorImpl.java | 48 +--
.../descriptor/impl/TorperfResultImpl.java | 14 +-
.../descriptor/impl/UnparseableDescriptorImpl.java | 4 +-
.../descriptor/DummyDownloaderImplementation.java | 15 -
.../impl/DescriptorCollectorImplTest.java | 121 --------
55 files changed, 136 insertions(+), 2793 deletions(-)
diff --git a/src/main/java/org/torproject/descriptor/DescriptorDownloader.java b/src/main/java/org/torproject/descriptor/DescriptorDownloader.java
deleted file mode 100644
index 52b25bf..0000000
--- a/src/main/java/org/torproject/descriptor/DescriptorDownloader.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor;
-
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * Descriptor source that downloads relay descriptors from directory
- * authorities or mirrors.
- *
- * <p>Downloading descriptors is done in a batch which starts after
- * setting any configuration options and initiating the download
- * process.</p>
- *
- * @deprecated Removed as descriptor source in favor of the much more widely
- * used {@link DescriptorCollector}.
- *
- * @since 1.0.0
- */
-public interface DescriptorDownloader {
-
- /**
- * Add a directory authority to download descriptors from, which is
- * only required for downloading network status votes and will be used
- * when no directory mirrors are available.
- *
- * @since 1.0.0
- */
- public void addDirectoryAuthority(String nickname, String ip,
- int dirPort);
-
- /**
- * Add a directory mirror to download descriptors from, which is
- * preferred for downloading descriptors, except for network status
- * votes which are only available on directory authorities.
- *
- * @since 1.0.0
- */
- public void addDirectoryMirror(String nickname, String ip, int dirPort);
-
- /**
- * Include the current network status consensus in the downloads.
- *
- * @since 1.0.0
- */
- public void setIncludeCurrentConsensus();
-
- /**
- * Include the current network status consensus in the downloads, and
- * attempt to download it from all directory authorities.
- *
- * <p>The primary purpose of doing this is to compare different
- * consensuses and download characteristics to each other. Typically,
- * downloading from a single directory mirror or authority is
- * sufficient.</p>
- *
- * @since 1.0.0
- */
- public void setIncludeCurrentConsensusFromAllDirectoryAuthorities();
-
- /**
- * Include the current network status votes referenced from a
- * previously downloaded consensus in the downloads, which requires
- * downloading the current consensus from at least one directory mirror
- * or authority.
- *
- * @since 1.0.0
- */
- public void setIncludeCurrentReferencedVotes();
-
- /**
- * Include the current network status vote published by the given
- * directory authority in the downloads, which requires downloading from
- * at least one directory authority.
- *
- * @since 1.0.0
- */
- public void setIncludeCurrentVote(String fingerprint);
-
- /**
- * Include the current network status votes published by the given
- * directory authorities in the downloads, which requires downloading
- * from at least one directory authority.
- *
- * @since 1.0.0
- */
- public void setIncludeCurrentVotes(Set<String> fingerprints);
-
- /**
- * Include all server descriptors referenced from a previously
- * downloaded network status consensus in the downloads.
- *
- * @since 1.0.0
- */
- public void setIncludeReferencedServerDescriptors();
-
- /**
- * Exclude the server descriptor with the given identifier from the
- * downloads even if it's referenced from a consensus and we're supposed
- * to download all referenced server descriptors.
- *
- * @since 1.0.0
- */
- public void setExcludeServerDescriptor(String identifier);
-
- /**
- * Exclude the server descriptors with the given identifiers from the
- * downloads even if they are referenced from a consensus and we're
- * supposed to download all referenced server descriptors.
- *
- * @since 1.0.0
- */
- public void setExcludeServerDescriptors(Set<String> identifier);
-
- /**
- * Include all extra-info descriptors referenced from previously
- * downloaded server descriptors in the downloads.
- *
- * @since 1.0.0
- */
- public void setIncludeReferencedExtraInfoDescriptors();
-
- /**
- * Exclude the extra-info descriptor with the given identifier from the
- * downloads even if it's referenced from a server descriptor and we're
- * supposed to download all referenced extra-info descriptors.
- *
- * @since 1.0.0
- */
- public void setExcludeExtraInfoDescriptor(String identifier);
-
- /**
- * Exclude the extra-info descriptors with the given identifiers from
- * the downloads even if they are referenced from server descriptors
- * and we're supposed to download all referenced extra-info
- * descriptors.
- *
- * @since 1.0.0
- */
- public void setExcludeExtraInfoDescriptors(Set<String> identifiers);
-
- /**
- * Define a connect timeout for a single request.
- *
- * <p>If a timeout expires, no further requests will be sent to the
- * directory authority or mirror. Setting this value to 0 disables the
- * connect timeout. Default value is 1 minute (60 * 1000).</p>
- *
- * @since 1.0.0
- */
- public void setConnectTimeout(long connectTimeoutMillis);
-
- /**
- * Define a read timeout for a single request.
- *
- * <p>If a timeout expires, no further requests will be sent to the
- * directory authority or mirror. Setting this value to 0 disables the
- * read timeout. Default value is 1 minute (60 * 1000).</p>
- *
- * @since 1.0.0
- */
- public void setReadTimeout(long readTimeoutMillis);
-
- /**
- * Define a global timeout for all requests.
- *
- * <p>Once this timeout expires, all running requests are aborted and no
- * further requests are made. Setting this value to 0 disables the
- * global timeout. Default is 1 hour (60 * 60 * 1000).</p>
- *
- * @since 1.0.0
- */
- public void setGlobalTimeout(long globalTimeoutMillis);
-
- /**
- * Fail descriptor parsing when encountering an unrecognized line.
- *
- * <p>This option is not set by default, because the Tor specifications
- * allow for new lines to be added that shall be ignored by older Tor
- * versions. But some applications may want to handle unrecognized
- * descriptor lines explicitly.</p>
- *
- * @since 1.0.0
- */
- public void setFailUnrecognizedDescriptorLines();
-
- /**
- * Download the previously configured relay descriptors and make them
- * available via the returned blocking iterator.
- *
- * <p>Whenever the downloader runs out of descriptors and expects to
- * provide more shortly after, it blocks the caller. This method can
- * only be run once.</p>
- *
- * @since 1.0.0
- */
- public Iterator<DescriptorRequest> downloadDescriptors();
-}
-
diff --git a/src/main/java/org/torproject/descriptor/DescriptorFile.java b/src/main/java/org/torproject/descriptor/DescriptorFile.java
deleted file mode 100644
index e8c0d21..0000000
--- a/src/main/java/org/torproject/descriptor/DescriptorFile.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * Container for descriptors read from a file.
- *
- * <p>When the {@link DescriptorReader} reads descriptors from local files
- * it provides an iterator over these containers which in turn contain
- * references to classes implementing the {@link Descriptor} interface.
- * This container also stores potentially useful meta-data about the
- * descriptor file.</p>
- *
- * @deprecated Irrelevant after introducing
- * {@link DescriptorReader#readDescriptors(File...)}, which returns
- * {@link Descriptor}s rather than {@link DescriptorFile}s, and including
- * the descriptor file reference in {@link Descriptor#getDescriptorFile()}
- * and the first thrown {@link DescriptorParseException} in
- * {@link UnparseableDescriptor#getDescriptorParseException()}.
- *
- * @since 1.0.0
- */
-public interface DescriptorFile {
-
- /**
- * Return the directory where this descriptor file was contained, or
- * null if the file was contained in a tarball.
- *
- * @since 1.0.0
- */
- public File getDirectory();
-
- /**
- * Return the tarball where this descriptor file was contained, or null
- * if the file was not contained in a tarball.
- *
- * @since 1.0.0
- */
- public File getTarball();
-
- /**
- * Return the descriptor file itself, or null if the descriptor file
- * was contained in a tarball.
- *
- * @since 1.0.0
- */
- public File getFile();
-
- /**
- * Return the descriptor file name, which is either the absolute path
- * of the file on disk, or the tar file entry name.
- *
- * @since 1.0.0
- */
- public String getFileName();
-
- /**
- * Return the time in milliseconds since the epoch when the descriptor
- * file on disk was last modified.
- *
- * @since 1.0.0
- */
- public long getLastModified();
-
- /**
- * Return the descriptors contained in the descriptor file.
- *
- * @since 1.0.0
- */
- public List<Descriptor> getDescriptors();
-
- /**
- * Return the first exception that was thrown when reading this file or
- * parsing its content, or null if no exception was thrown.
- *
- * @since 1.0.0
- */
- public Exception getException();
-}
-
diff --git a/src/main/java/org/torproject/descriptor/DescriptorParseException.java b/src/main/java/org/torproject/descriptor/DescriptorParseException.java
index 5f46077..c9e7d93 100644
--- a/src/main/java/org/torproject/descriptor/DescriptorParseException.java
+++ b/src/main/java/org/torproject/descriptor/DescriptorParseException.java
@@ -9,9 +9,7 @@ package org.torproject.descriptor;
*
* @since 1.0.0
*/
- at SuppressWarnings("deprecation")
-public class DescriptorParseException
- extends org.torproject.descriptor.impl.DescriptorParseException {
+public class DescriptorParseException extends Exception {
private static final long serialVersionUID = 100L;
diff --git a/src/main/java/org/torproject/descriptor/DescriptorParser.java b/src/main/java/org/torproject/descriptor/DescriptorParser.java
index 61f69f4..0082b5f 100644
--- a/src/main/java/org/torproject/descriptor/DescriptorParser.java
+++ b/src/main/java/org/torproject/descriptor/DescriptorParser.java
@@ -24,23 +24,6 @@ import java.util.List;
public interface DescriptorParser {
/**
- * Fail descriptor parsing when encountering an unrecognized line.
- *
- * <p>This option is not set by default, because the Tor specifications
- * allow for new lines to be added that shall be ignored by older Tor
- * versions. But some applications may want to handle unrecognized
- * descriptor lines explicitly.</p>
- *
- * @deprecated Removed in an attempt to simplify the interface. Applications
- * that must fail descriptors with unrecognized lines can instead check
- * whether {@link Descriptor#getUnrecognizedLines()} returns any lines.
- *
- * @since 1.0.0
- */
- public void setFailUnrecognizedDescriptorLines(
- boolean failUnrecognizedDescriptorLines);
-
- /**
* Parse descriptors in the given byte array, possibly parsing the
* publication time from the file name, depending on the descriptor
* type.
diff --git a/src/main/java/org/torproject/descriptor/DescriptorReader.java b/src/main/java/org/torproject/descriptor/DescriptorReader.java
index e15e5d9..4adff39 100644
--- a/src/main/java/org/torproject/descriptor/DescriptorReader.java
+++ b/src/main/java/org/torproject/descriptor/DescriptorReader.java
@@ -4,7 +4,6 @@
package org.torproject.descriptor;
import java.io.File;
-import java.util.Iterator;
import java.util.SortedMap;
/**
@@ -38,46 +37,6 @@ import java.util.SortedMap;
public interface DescriptorReader {
/**
- * Add a local directory to read descriptors from, which may contain
- * descriptor files or tarballs containing descriptor files.
- *
- * @deprecated Replaced with a parameter in {@link #readDescriptors(File...)},
- * which ignores any directories added via this deprecated method.
- *
- * @since 1.0.0
- */
- public void addDirectory(File directory);
-
- /**
- * Add a tarball to read descriptors from, which may be uncompressed,
- * bz2-compressed, or xz-compressed.
- *
- * @deprecated Replaced with a parameter in {@link #readDescriptors(File...)},
- * which ignores any tarballs added via this deprecated method.
- *
- * @since 1.0.0
- */
- public void addTarball(File tarball);
-
- /**
- * Exclude files that are listed in the given history file and that
- * haven't changed since they have last been read.
- *
- * <p>Add a new line for each descriptor that is read in this execution
- * and remove lines for files that don't exist anymore.</p>
- *
- * <p>Lines in the history file contain the last modified time in
- * milliseconds since the epoch and the absolute path of a file.</p>
- *
- * @deprecated Replaced by {@link #setHistoryFile(File)} and
- * {@link #saveHistoryFile(File)} which let the application explicitly
- * tell us when it's done processing read descriptors.
- *
- * @since 1.0.0
- */
- public void setExcludeFiles(File historyFile);
-
- /**
* Set a history file to load before reading descriptors and exclude
* descriptor files that haven't changed since they have last been read.
*
@@ -136,35 +95,6 @@ public interface DescriptorReader {
public SortedMap<String, Long> getParsedFiles();
/**
- * Fail descriptor parsing when encountering an unrecognized line.
- *
- * <p>This option is not set by default, because the Tor specifications
- * allow for new lines to be added that shall be ignored by older Tor
- * versions. But some applications may want to handle unrecognized
- * descriptor lines explicitly.</p>
- *
- * @deprecated Removed in an attempt to simplify the interface. Applications
- * that must fail descriptors with unrecognized lines can instead check
- * whether {@link Descriptor#getUnrecognizedLines()} returns any lines.
- *
- * @since 1.0.0
- */
- public void setFailUnrecognizedDescriptorLines();
-
- /**
- * Don't keep more than this number of parsed descriptor files in the
- * queue.
- *
- * <p>The default is 100, but if descriptor files contain hundreds or
- * even thousands of descriptors, that default may be too high.</p>
- *
- * @deprecated Replaced with {@link #setMaxDescriptorsInQueue(int)}.
- *
- * @since 1.0.0
- */
- public void setMaxDescriptorFilesInQueue(int max);
-
- /**
* Don't keep more than this number of descriptors in the queue (default:
* 100).
*
@@ -175,20 +105,6 @@ public interface DescriptorReader {
public void setMaxDescriptorsInQueue(int maxDescriptorsInQueue);
/**
- * Read the previously configured descriptors and make them available
- * via the returned blocking iterator.
- *
- * <p>Whenever the reader runs out of descriptors and expects to provide
- * more shortly after, it blocks the caller. This method can only be
- * run once.</p>
- *
- * @deprecated Replaced with {@link #readDescriptors(File...)}.
- *
- * @since 1.0.0
- */
- public Iterator<DescriptorFile> readDescriptors();
-
- /**
* Read descriptors from the given descriptor file(s) and return the parsed
* descriptors.
*
diff --git a/src/main/java/org/torproject/descriptor/DescriptorRequest.java b/src/main/java/org/torproject/descriptor/DescriptorRequest.java
deleted file mode 100644
index 9009ca8..0000000
--- a/src/main/java/org/torproject/descriptor/DescriptorRequest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor;
-
-import java.util.List;
-
-/**
- * Container for descriptors downloaded from a directory authority or
- * mirror.
- *
- * <p>When the {@link DescriptorDownloader} downloads descriptors from
- * directory authorities or mirrors it provides an iterator over these
- * containers which in turn contain references to classes implementing the
- * {@link Descriptor} interface. This container also stores potentially
- * useful meta-data about the descriptor request.</p>
- *
- * @deprecated Removed as descriptor container together with
- * {@link DescriptorDownloader} in favor of the much more widely used
- * {@link DescriptorCollector}.
- *
- * @since 1.0.0
- */
-public interface DescriptorRequest {
-
- /**
- * Return the request URL that was used in this request.
- *
- * @since 1.0.0
- */
- public String getRequestUrl();
-
- /**
- * Return the nickname of the directory mirror or authority as
- * previously configured.
- *
- * @since 1.0.0
- */
- public String getDirectoryNickname();
-
- /**
- * Return the first exception that was thrown when making this request
- * or parsing the response, or null if no exception was thrown.
- *
- * @since 1.0.0
- */
- public Exception getException();
-
- /**
- * Return the response code that the directory mirror or authority
- * returned.
- *
- * @since 1.0.0
- */
- public int getResponseCode();
-
- /**
- * Return the time in milliseconds since the epoch when this request
- * was started.
- *
- * @since 1.0.0
- */
- public long getRequestStart();
-
- /**
- * Return the time in milliseconds since the epoch when this request
- * ended.
- *
- * @since 1.0.0
- */
- public long getRequestEnd();
-
- /**
- * Return whether this request ended, because the connect timeout has
- * expired.
- *
- * @since 1.0.0
- */
- public boolean connectTimeoutHasExpired();
-
- /**
- * Return whether this request ended, because the read timeout has
- * expired.
- *
- * @since 1.0.0
- */
- public boolean readTimeoutHasExpired();
-
- /**
- * Return whether this request ended, because the global timeout for
- * all requests has expired.
- *
- * @since 1.0.0
- */
- public boolean globalTimeoutHasExpired();
-
- /**
- * Return the descriptors contained in the reply.
- *
- * @since 1.0.0
- */
- public List<Descriptor> getDescriptors();
-}
-
diff --git a/src/main/java/org/torproject/descriptor/DescriptorSourceFactory.java b/src/main/java/org/torproject/descriptor/DescriptorSourceFactory.java
index 7125ace..f2c1a43 100644
--- a/src/main/java/org/torproject/descriptor/DescriptorSourceFactory.java
+++ b/src/main/java/org/torproject/descriptor/DescriptorSourceFactory.java
@@ -11,10 +11,9 @@ import org.slf4j.LoggerFactory;
*
* <p>Descriptor sources are the only producers of classes implementing
* the {@link Descriptor} superinterface. There exist descriptor sources
- * for obtaining remote descriptor data ({@link DescriptorDownloader} and
- * {@link DescriptorCollector}) and descriptor sources for processing
- * local descriptor data ({@link DescriptorReader} and
- * {@link DescriptorParser}).</p>
+ * for obtaining remote descriptor data ({@link DescriptorCollector}) and
+ * descriptor sources for processing local descriptor data
+ * ({@link DescriptorReader} and {@link DescriptorParser}).</p>
*
* <p>By default, this factory returns implementations from the library's
* own impl package. This may be overridden by setting Java properties,
@@ -23,7 +22,6 @@ import org.slf4j.LoggerFactory;
* <p>These properties can be used for setting the implementation:</p>
* <ul>
* <li>{@code descriptor.collector}</li>
- * <li>{@code descriptor.downloader}</li>
* <li>{@code descriptor.parser}</li>
* <li>{@code descriptor.reader}</li>
* </ul>
@@ -46,15 +44,6 @@ public final class DescriptorSourceFactory {
DescriptorSourceFactory.class);
/**
- * Default implementation of the {@link DescriptorDownloader}
- * descriptor source.
- *
- * @since 1.0.0
- */
- public static final String DOWNLOADER_DEFAULT =
- "org.torproject.descriptor.impl.DescriptorDownloaderImpl";
-
- /**
* Default implementation of the {@link DescriptorParser} descriptor
* source.
*
@@ -101,16 +90,6 @@ public final class DescriptorSourceFactory {
/**
* Property name for overriding the implementation of the
- * {@link DescriptorDownloader} descriptor source, which is by default
- * set to the class in {@link #DOWNLOADER_DEFAULT}.
- *
- * @since 1.0.0
- */
- public static final String DOWNLOADER_PROPERTY =
- "descriptor.downloader";
-
- /**
- * Property name for overriding the implementation of the
* {@link DescriptorCollector} descriptor source, which is by default
* set to the class in {@link #COLLECTOR_DEFAULT}.
*
@@ -139,16 +118,6 @@ public final class DescriptorSourceFactory {
}
/**
- * Create a new {@link DescriptorDownloader} by instantiating the class
- * in {@link #DOWNLOADER_PROPERTY}.
- *
- * @since 1.0.0
- */
- public static final DescriptorDownloader createDescriptorDownloader() {
- return (DescriptorDownloader) retrieve(DOWNLOADER_PROPERTY);
- }
-
- /**
* Create a new {@link DescriptorCollector} by instantiating the class
* in {@link #COLLECTOR_PROPERTY}.
*
@@ -166,9 +135,6 @@ public final class DescriptorSourceFactory {
case PARSER_PROPERTY:
clazzName = System.getProperty(type, PARSER_DEFAULT);
break;
- case DOWNLOADER_PROPERTY:
- clazzName = System.getProperty(type, DOWNLOADER_DEFAULT);
- break;
case READER_PROPERTY:
clazzName = System.getProperty(type, READER_DEFAULT);
break;
diff --git a/src/main/java/org/torproject/descriptor/DirSourceEntry.java b/src/main/java/org/torproject/descriptor/DirSourceEntry.java
index 9996ff2..69e8525 100644
--- a/src/main/java/org/torproject/descriptor/DirSourceEntry.java
+++ b/src/main/java/org/torproject/descriptor/DirSourceEntry.java
@@ -89,16 +89,6 @@ public interface DirSourceEntry {
* Return the SHA-1 vote digest, encoded as 40 lower-case hexadecimal
* characters.
*
- * @deprecated Renamed to {@link #getVoteDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getVoteDigest();
-
- /**
- * Return the SHA-1 vote digest, encoded as 40 lower-case hexadecimal
- * characters.
- *
* @since 1.7.0
*/
public String getVoteDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/DirectoryKeyCertificate.java b/src/main/java/org/torproject/descriptor/DirectoryKeyCertificate.java
index f2d37ad..2819fc3 100644
--- a/src/main/java/org/torproject/descriptor/DirectoryKeyCertificate.java
+++ b/src/main/java/org/torproject/descriptor/DirectoryKeyCertificate.java
@@ -102,16 +102,6 @@ public interface DirectoryKeyCertificate extends Descriptor {
* Return the SHA-1 certificate digest, encoded as 40 lower-case
* hexadecimal characters.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getCertificateDigest();
-
- /**
- * Return the SHA-1 certificate digest, encoded as 40 lower-case
- * hexadecimal characters.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/DirectorySignature.java b/src/main/java/org/torproject/descriptor/DirectorySignature.java
index bb3d5c4..9ce44df 100644
--- a/src/main/java/org/torproject/descriptor/DirectorySignature.java
+++ b/src/main/java/org/torproject/descriptor/DirectorySignature.java
@@ -37,17 +37,6 @@ public interface DirectorySignature {
* in the version 3 directory protocol, encoded as 40 upper-case
* hexadecimal characters.
*
- * @deprecated Renamed to {@link #getSigningKeyDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getSigningKeyDigest();
-
- /**
- * Return the SHA-1 digest of the authority's medium-term signing key
- * in the version 3 directory protocol, encoded as 40 upper-case
- * hexadecimal characters.
- *
* @since 1.7.0
*/
public String getSigningKeyDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/ExitList.java b/src/main/java/org/torproject/descriptor/ExitList.java
index 052362a..2623ee5 100644
--- a/src/main/java/org/torproject/descriptor/ExitList.java
+++ b/src/main/java/org/torproject/descriptor/ExitList.java
@@ -74,17 +74,6 @@ public interface ExitList extends Descriptor {
/**
* Return the unordered set of exit scan results.
*
- * @since 1.0.0
- * @deprecated The {@link ExitListEntry} type has been deprecated and
- * superseded by {@link ExitList.Entry} which is returned by
- * {@link #getEntries()}.
- */
- @Deprecated
- public Set<ExitListEntry> getExitListEntries();
-
- /**
- * Return the unordered set of exit scan results.
- *
* @since 1.1.0
*/
public Set<ExitList.Entry> getEntries();
diff --git a/src/main/java/org/torproject/descriptor/ExitListEntry.java b/src/main/java/org/torproject/descriptor/ExitListEntry.java
deleted file mode 100644
index 94d5970..0000000
--- a/src/main/java/org/torproject/descriptor/ExitListEntry.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2012--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor;
-
-/**
- * Exit list entry containing results from a single exit scan.
- *
- * @since 1.0.0
- * @deprecated Superseded by {@link ExitList.Entry}.
- */
- at Deprecated
-public interface ExitListEntry extends ExitList.Entry {
-
- /**
- * Return the scanned relay's fingerprint, which is a SHA-1 digest of
- * the relays's public identity key, encoded as 40 upper-case
- * hexadecimal characters.
- *
- * @since 1.0.0
- */
- public String getFingerprint();
-
- /**
- * Return the time in milliseconds since the epoch when the scanned
- * relay's last known descriptor was published.
- *
- * @since 1.0.0
- */
- public long getPublishedMillis();
-
- /**
- * Return the time in milliseconds since the epoch when the network
- * status that this scan was based on was published.
- *
- * @since 1.0.0
- */
- public long getLastStatusMillis();
-
- /**
- * Return the IPv4 address in dotted-quad format that was determined in
- * the scan.
- *
- * @since 1.0.0
- */
- public String getExitAddress();
-
- /**
- * Return the scan time in milliseconds since the epoch.
- *
- * @since 1.0.0
- */
- public long getScanMillis();
-}
-
diff --git a/src/main/java/org/torproject/descriptor/ExtraInfoDescriptor.java b/src/main/java/org/torproject/descriptor/ExtraInfoDescriptor.java
index 04a46d4..333c853 100644
--- a/src/main/java/org/torproject/descriptor/ExtraInfoDescriptor.java
+++ b/src/main/java/org/torproject/descriptor/ExtraInfoDescriptor.java
@@ -48,18 +48,6 @@ public interface ExtraInfoDescriptor extends Descriptor {
* characters, that is used to reference this descriptor from a server
* descriptor.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getExtraInfoDigest();
-
- /**
- * Return the SHA-1 descriptor digest, encoded as 40 lower-case (relay
- * descriptors) or upper-case (bridge descriptors) hexadecimal
- * characters, that is used to reference this descriptor from a server
- * descriptor.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
@@ -69,17 +57,6 @@ public interface ExtraInfoDescriptor extends Descriptor {
* characters without padding characters, that may be used to reference
* this descriptor from a server descriptor.
*
- * @deprecated Renamed to {@link #getDigestSha256Base64()}.
- *
- * @since 1.1.0
- */
- public String getExtraInfoDigestSha256();
-
- /**
- * Return the SHA-256 descriptor digest, encoded as 43 base64
- * characters without padding characters, that may be used to reference
- * this descriptor from a server descriptor.
- *
* @since 1.7.0
*/
public String getDigestSha256Base64();
@@ -135,18 +112,6 @@ public interface ExtraInfoDescriptor extends Descriptor {
* upper-case hexadecimal characters, or null if no GeoIP database
* digest is included.
*
- * @deprecated Renamed to {@link #getGeoipDbDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getGeoipDbDigest();
-
- /**
- * Return a SHA-1 digest of the GeoIP database file used by this server
- * to resolve client IP addresses to country codes, encoded as 40
- * upper-case hexadecimal characters, or null if no GeoIP database
- * digest is included.
- *
* @since 1.7.0
*/
public String getGeoipDbDigestSha1Hex();
@@ -157,18 +122,6 @@ public interface ExtraInfoDescriptor extends Descriptor {
* upper-case hexadecimal characters, or null if no GeoIPv6 database
* digest is included.
*
- * @deprecated Renamed to {@link #getGeoip6DbDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getGeoip6DbDigest();
-
- /**
- * Return a SHA-1 digest of the GeoIPv6 database file used by this
- * server to resolve client IP addresses to country codes, encoded as 40
- * upper-case hexadecimal characters, or null if no GeoIPv6 database
- * digest is included.
- *
* @since 1.7.0
*/
public String getGeoip6DbDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/Microdescriptor.java b/src/main/java/org/torproject/descriptor/Microdescriptor.java
index b49b8bb..ef69417 100644
--- a/src/main/java/org/torproject/descriptor/Microdescriptor.java
+++ b/src/main/java/org/torproject/descriptor/Microdescriptor.java
@@ -28,17 +28,6 @@ public interface Microdescriptor extends Descriptor {
* characters without padding characters, that is used to reference this
* descriptor from a vote or microdescriptor consensus.
*
- * @deprecated Renamed to {@link #getDigestSha256Base64()}.
- *
- * @since 1.0.0
- */
- public String getMicrodescriptorDigest();
-
- /**
- * Return the SHA-256 descriptor digest, encoded as 43 base64
- * characters without padding characters, that is used to reference this
- * descriptor from a vote or microdescriptor consensus.
- *
* @since 1.7.0
*/
public String getDigestSha256Base64();
diff --git a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
index 9c5dae5..bbc0173 100644
--- a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
+++ b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
@@ -93,17 +93,6 @@ public interface NetworkStatusEntry {
* base64 characters without padding characters, if the containing network
* status is a vote or microdesc consensus, or null otherwise.
*
- * @deprecated Renamed to {@link #getMicrodescriptorDigestsSha256Base64()}.
- *
- * @since 1.0.0
- */
- public Set<String> getMicrodescriptorDigests();
-
- /**
- * Return the (possibly empty) set of microdescriptor digests, encoded as 43
- * base64 characters without padding characters, if the containing network
- * status is a vote or microdesc consensus, or null otherwise.
- *
* @since 1.7.0
*/
public Set<String> getMicrodescriptorDigestsSha256Base64();
diff --git a/src/main/java/org/torproject/descriptor/RelayDirectory.java b/src/main/java/org/torproject/descriptor/RelayDirectory.java
index dd696cf..f05f65d 100644
--- a/src/main/java/org/torproject/descriptor/RelayDirectory.java
+++ b/src/main/java/org/torproject/descriptor/RelayDirectory.java
@@ -97,17 +97,6 @@ public interface RelayDirectory extends Descriptor {
* hexadecimal characters, that the directory authority used to sign the
* directory.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getDirectoryDigest();
-
- /**
- * Return the SHA-1 directory digest, encoded as 40 lower-case
- * hexadecimal characters, that the directory authority used to sign the
- * directory.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/RelayNetworkStatus.java b/src/main/java/org/torproject/descriptor/RelayNetworkStatus.java
index b14d0c3..1197c2e 100644
--- a/src/main/java/org/torproject/descriptor/RelayNetworkStatus.java
+++ b/src/main/java/org/torproject/descriptor/RelayNetworkStatus.java
@@ -169,17 +169,6 @@ public interface RelayNetworkStatus extends Descriptor {
* characters, that the directory authority used to sign the network
* status.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getStatusDigest();
-
- /**
- * Return the SHA-1 status digest, encoded as 40 lower-case hexadecimal
- * characters, that the directory authority used to sign the network
- * status.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/RelayNetworkStatusConsensus.java b/src/main/java/org/torproject/descriptor/RelayNetworkStatusConsensus.java
index fe66007..2b433dc 100644
--- a/src/main/java/org/torproject/descriptor/RelayNetworkStatusConsensus.java
+++ b/src/main/java/org/torproject/descriptor/RelayNetworkStatusConsensus.java
@@ -252,19 +252,6 @@ public interface RelayNetworkStatusConsensus extends Descriptor {
public NetworkStatusEntry getStatusEntry(String fingerprint);
/**
- * Return directory signatures of this consensus, with map keys being
- * SHA-1 digests of the authorities' identity keys in the version 3
- * directory protocol, encoded as 40 upper-case hexadecimal characters.
- *
- * @deprecated Replaced by {@link #getSignatures()} which permits an
- * arbitrary number of signatures made by an authority using the
- * same identity key digest and different algorithms.
- *
- * @since 1.0.0
- */
- public SortedMap<String, DirectorySignature> getDirectorySignatures();
-
- /**
* Return the list of signatures contained in this consensus.
*
* @since 1.3.0
@@ -286,17 +273,6 @@ public interface RelayNetworkStatusConsensus extends Descriptor {
* hexadecimal characters that directory authorities use to sign the
* consensus.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getConsensusDigest();
-
- /**
- * Return the SHA-1 digest of this consensus, encoded as 40 lower-case
- * hexadecimal characters that directory authorities use to sign the
- * consensus.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
diff --git a/src/main/java/org/torproject/descriptor/RelayNetworkStatusVote.java b/src/main/java/org/torproject/descriptor/RelayNetworkStatusVote.java
index 5d9d039..1e4b0a5 100644
--- a/src/main/java/org/torproject/descriptor/RelayNetworkStatusVote.java
+++ b/src/main/java/org/torproject/descriptor/RelayNetworkStatusVote.java
@@ -408,21 +408,6 @@ public interface RelayNetworkStatusVote extends Descriptor {
public String getDirSigningKey();
/**
- * Return the SHA-1 digest of the authority's signing key, encoded as
- * 40 upper-case hexadecimal characters, or null if this digest cannot
- * be obtained from the directory signature.
- *
- * @deprecated Removed in order to be more explicit that authorities may
- * use different digest algorithms than "sha1"; see
- * {@link #getSignatures()} and
- * {@link DirectorySignature#getSigningKeyDigestSha1Hex()} for
- * alternatives.
- *
- * @since 1.0.0
- */
- public String getSigningKeyDigest();
-
- /**
* Return the signature of the authority's identity key made using the
* authority's signing key, or null if the vote does not contain such a
* signature.
@@ -470,20 +455,6 @@ public interface RelayNetworkStatusVote extends Descriptor {
public NetworkStatusEntry getStatusEntry(String fingerprint);
/**
- * Return the directory signature of this vote, with the single map key
- * being the SHA-1 digest of the authority's identity key in the version
- * 3 directory protocol, encoded as 40 upper-case hexadecimal
- * characters.
- *
- * @deprecated Replaced by {@link #getSignatures()} which permits an
- * arbitrary number of signatures made by the authority using the
- * same identity key digest and different algorithms.
- *
- * @since 1.0.0
- */
- public SortedMap<String, DirectorySignature> getDirectorySignatures();
-
- /**
* Return a list of signatures contained in this vote, which is
* typically a single signature made by the authority but which may also
* be more than one signature made with different keys or algorithms.
diff --git a/src/main/java/org/torproject/descriptor/ServerDescriptor.java b/src/main/java/org/torproject/descriptor/ServerDescriptor.java
index 3ac0cc9..0aeb543 100644
--- a/src/main/java/org/torproject/descriptor/ServerDescriptor.java
+++ b/src/main/java/org/torproject/descriptor/ServerDescriptor.java
@@ -51,18 +51,6 @@ public interface ServerDescriptor extends Descriptor {
* characters, that is used to reference this descriptor from a network
* status descriptor.
*
- * @deprecated Renamed to {@link #getDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getServerDescriptorDigest();
-
- /**
- * Return the SHA-1 descriptor digest, encoded as 40 lower-case (relay
- * descriptors) or upper-case (bridge descriptors) hexadecimal
- * characters, that is used to reference this descriptor from a network
- * status descriptor.
- *
* @since 1.7.0
*/
public String getDigestSha1Hex();
@@ -72,17 +60,6 @@ public interface ServerDescriptor extends Descriptor {
* characters without padding characters, that may be used to reference
* this server descriptor from a network status descriptor.
*
- * @deprecated Renamed to {@link #getDigestSha256Base64()}.
- *
- * @since 1.1.0
- */
- public String getServerDescriptorDigestSha256();
-
- /**
- * Return the SHA-256 descriptor digest, encoded as 43 base64
- * characters without padding characters, that may be used to reference
- * this server descriptor from a network status descriptor.
- *
* @since 1.7.0
*/
public String getDigestSha256Base64();
@@ -113,7 +90,7 @@ public interface ServerDescriptor extends Descriptor {
/**
* Return the TCP port where this server accepts SOCKS connections,
- * which is deprecated and should always be 0.
+ * which is deprecated in the Tor Protocol and should always be 0.
*
* @since 1.0.0
*/
@@ -322,17 +299,6 @@ public interface ServerDescriptor extends Descriptor {
* encoded as 40 upper-case hexadecimal characters, or null if the
* server did not upload a corresponding extra-info descriptor.
*
- * @deprecated Renamed to {@link #getExtraInfoDigestSha1Hex()}.
- *
- * @since 1.0.0
- */
- public String getExtraInfoDigest();
-
- /**
- * Return the SHA-1 digest of the server's extra-info descriptor,
- * encoded as 40 upper-case hexadecimal characters, or null if the
- * server did not upload a corresponding extra-info descriptor.
- *
* @since 1.7.0
*/
public String getExtraInfoDigestSha1Hex();
@@ -343,18 +309,6 @@ public interface ServerDescriptor extends Descriptor {
* if the server either did not upload a corresponding extra-info
* descriptor or did not refer to it using a SHA-256 digest.
*
- * @deprecated Renamed to {@link #getExtraInfoDigestSha256Base64()}.
- *
- * @since 1.1.0
- */
- public String getExtraInfoDigestSha256();
-
- /**
- * Return the SHA-256 digest of the server's extra-info descriptor,
- * encoded as 43 base64 characters without padding characters, or null
- * if the server either did not upload a corresponding extra-info
- * descriptor or did not refer to it using a SHA-256 digest.
- *
* @since 1.7.0
*/
public String getExtraInfoDigestSha256Base64();
diff --git a/src/main/java/org/torproject/descriptor/impl/BridgeExtraInfoDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/BridgeExtraInfoDescriptorImpl.java
index b2b3e99..d8941a6 100644
--- a/src/main/java/org/torproject/descriptor/impl/BridgeExtraInfoDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/BridgeExtraInfoDescriptorImpl.java
@@ -12,10 +12,9 @@ public class BridgeExtraInfoDescriptorImpl
extends ExtraInfoDescriptorImpl implements BridgeExtraInfoDescriptor {
protected BridgeExtraInfoDescriptorImpl(byte[] descriptorBytes,
- int[] offsetAndLimit, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(descriptorBytes, offsetAndLimit, descriptorFile,
- failUnrecognizedDescriptorLines);
+ int[] offsetAndLimit, File descriptorFile)
+ throws DescriptorParseException {
+ super(descriptorBytes, offsetAndLimit, descriptorFile);
}
}
diff --git a/src/main/java/org/torproject/descriptor/impl/BridgeNetworkStatusImpl.java b/src/main/java/org/torproject/descriptor/impl/BridgeNetworkStatusImpl.java
index a54c91c..01cd221 100644
--- a/src/main/java/org/torproject/descriptor/impl/BridgeNetworkStatusImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/BridgeNetworkStatusImpl.java
@@ -20,10 +20,10 @@ public class BridgeNetworkStatusImpl extends NetworkStatusImpl
implements BridgeNetworkStatus {
protected BridgeNetworkStatusImpl(byte[] rawDescriptorBytes,
- int[] offsetAndLength, File descriptorFile, String fileName,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
+ int[] offsetAndLength, File descriptorFile, String fileName)
+ throws DescriptorParseException {
super(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false, false);
+ false, false);
this.setPublishedMillisFromFileName(fileName);
}
@@ -86,14 +86,8 @@ public class BridgeNetworkStatusImpl extends NetworkStatusImpl
this.parseFlagThresholdsLine(line, parts);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in bridge network status.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
}
}
diff --git a/src/main/java/org/torproject/descriptor/impl/BridgePoolAssignmentImpl.java b/src/main/java/org/torproject/descriptor/impl/BridgePoolAssignmentImpl.java
index b2015ff..195690b 100644
--- a/src/main/java/org/torproject/descriptor/impl/BridgePoolAssignmentImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/BridgePoolAssignmentImpl.java
@@ -18,8 +18,7 @@ public class BridgePoolAssignmentImpl extends DescriptorImpl
protected BridgePoolAssignmentImpl(byte[] rawDescriptorBytes,
int[] offsetAndlength, File descriptorFile,
boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(rawDescriptorBytes, offsetAndlength, descriptorFile,
- failUnrecognizedDescriptorLines, false);
+ super(rawDescriptorBytes, offsetAndlength, descriptorFile, false);
this.parseDescriptorBytes();
this.checkExactlyOnceKeys(EnumSet.of(Key.BRIDGE_POOL_ASSIGNMENT));
this.checkFirstKey(Key.BRIDGE_POOL_ASSIGNMENT);
diff --git a/src/main/java/org/torproject/descriptor/impl/BridgeServerDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/BridgeServerDescriptorImpl.java
index 30da220..8125102 100644
--- a/src/main/java/org/torproject/descriptor/impl/BridgeServerDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/BridgeServerDescriptorImpl.java
@@ -12,10 +12,9 @@ public class BridgeServerDescriptorImpl extends ServerDescriptorImpl
implements BridgeServerDescriptor {
protected BridgeServerDescriptorImpl(byte[] rawDescriptorBytes,
- int[] offsetAndLength, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines);
+ int[] offsetAndLength, File descriptorFile)
+ throws DescriptorParseException {
+ super(rawDescriptorBytes, offsetAndLength, descriptorFile);
}
}
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorCollectorImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorCollectorImpl.java
deleted file mode 100644
index 214227f..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorCollectorImpl.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/* Copyright 2015--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.DescriptorCollector;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Scanner;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.Stack;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.zip.GZIPInputStream;
-
-/**
- * Download files from a CollecTor instance based on the remote instance's
- * directory listings.
- *
- * @deprecated Replaced by {@link DescriptorIndexCollector} which uses the
- * remote instance's index.json file as a more robust alternative to parsing
- * the remote instance's directory listings.
- */
-public class DescriptorCollectorImpl implements DescriptorCollector {
-
- private static Logger log = LoggerFactory
- .getLogger(DescriptorCollectorImpl.class);
-
- @Override
- public void collectDescriptors(String collecTorBaseUrl,
- String[] remoteDirectories, long minLastModified,
- File localDirectory, boolean deleteExtraneousLocalFiles) {
- collecTorBaseUrl = collecTorBaseUrl.endsWith("/")
- ? collecTorBaseUrl.substring(0, collecTorBaseUrl.length() - 1)
- : collecTorBaseUrl;
- if (minLastModified < 0) {
- throw new IllegalArgumentException("A negative minimum "
- + "last-modified time is not permitted.");
- }
- if (localDirectory.exists() && !localDirectory.isDirectory()) {
- throw new IllegalArgumentException("Local directory already exists "
- + "and is not a directory.");
- }
- SortedMap<String, Long> localFiles =
- this.statLocalDirectory(localDirectory);
- SortedMap<String, String> fetchedDirectoryListings =
- this.fetchRemoteDirectories(collecTorBaseUrl, remoteDirectories);
- SortedSet<String> parsedDirectories = new TreeSet<>();
- SortedMap<String, Long> remoteFiles = new TreeMap<>();
- for (Map.Entry<String, String> e
- : fetchedDirectoryListings.entrySet()) {
- String remoteDirectory = e.getKey();
- String directoryListing = e.getValue();
- SortedMap<String, Long> parsedRemoteFiles =
- this.parseDirectoryListing(remoteDirectory, directoryListing);
- if (parsedRemoteFiles == null) {
- continue;
- }
- parsedDirectories.add(remoteDirectory);
- remoteFiles.putAll(parsedRemoteFiles);
- }
- this.fetchRemoteFiles(collecTorBaseUrl, remoteFiles, minLastModified,
- localDirectory, localFiles);
- if (deleteExtraneousLocalFiles) {
- this.deleteExtraneousLocalFiles(parsedDirectories, remoteFiles,
- localDirectory, localFiles);
- }
- }
-
- SortedMap<String, Long> statLocalDirectory(
- File localDirectory) {
- SortedMap<String, Long> localFiles = new TreeMap<>();
- if (!localDirectory.exists()) {
- return localFiles;
- }
- Stack<File> files = new Stack<>();
- files.add(localDirectory);
- while (!files.isEmpty()) {
- File file = files.pop();
- if (file.isDirectory()) {
- files.addAll(Arrays.asList(file.listFiles()));
- } else {
- String localPath = file.getPath().substring(
- localDirectory.getPath().length());
- localFiles.put(localPath, file.lastModified());
- }
- }
- return localFiles;
- }
-
- SortedMap<String, String> fetchRemoteDirectories(
- String collecTorBaseUrl, String[] remoteDirectories) {
- SortedMap<String, String> fetchedDirectoryListings = new TreeMap<>();
- for (String remoteDirectory : remoteDirectories) {
- String remoteDirectoryWithSlashAtBeginAndEnd =
- (remoteDirectory.startsWith("/") ? "" : "/") + remoteDirectory
- + (remoteDirectory.endsWith("/") ? "" : "/");
- String directoryUrl = collecTorBaseUrl
- + remoteDirectoryWithSlashAtBeginAndEnd;
- String directoryListing = this.fetchRemoteDirectory(directoryUrl);
- if (directoryListing.length() > 0) {
- fetchedDirectoryListings.put(
- remoteDirectoryWithSlashAtBeginAndEnd, directoryListing);
- }
- }
- return fetchedDirectoryListings;
- }
-
- String fetchRemoteDirectory(String urlString) {
- StringBuilder sb = new StringBuilder();
- HttpURLConnection huc = null;
- try {
- URL url = new URL(urlString);
- huc = (HttpURLConnection) url.openConnection();
- huc.setRequestMethod("GET");
- huc.connect();
- int responseCode = huc.getResponseCode();
- if (responseCode == 200) {
- BufferedReader br = new BufferedReader(new InputStreamReader(
- huc.getInputStream()));
- String line;
- while ((line = br.readLine()) != null) {
- sb.append(line).append("\n");
- }
- br.close();
- }
- } catch (IOException e) {
- log.error("Cannot fetch remote directory.", e);
- if (huc != null) {
- huc.disconnect();
- }
- return "";
- }
- return sb.toString();
- }
-
- final Pattern directoryListingLinePattern =
- Pattern.compile(".* href=\"([^\"/]+)\"" /* filename */
- + ".*>(\\d{4}-\\w{2}-\\d{2} \\d{2}:\\d{2})\\s*<.*"); /* dateTime */
-
- SortedMap<String, Long> parseDirectoryListing(
- String remoteDirectory, String directoryListing) {
- SortedMap<String, Long> remoteFiles = new TreeMap<>();
- DateFormat dateTimeFormat = ParseHelper.getDateFormat(
- "yyyy-MM-dd HH:mm");
- try {
- Scanner scanner = new Scanner(directoryListing);
- scanner.useDelimiter("\n");
- while (scanner.hasNext()) {
- String line = scanner.next();
- Matcher matcher = directoryListingLinePattern.matcher(line);
- if (matcher.matches()) {
- String filename = matcher.group(1);
- long lastModifiedMillis = dateTimeFormat.parse(
- matcher.group(2)).getTime();
- remoteFiles.put(remoteDirectory + filename, lastModifiedMillis);
- }
- }
- scanner.close();
- } catch (ParseException e) {
- log.error("Cannot parse directory listing: " + directoryListing, e);
- return null;
- }
- return remoteFiles;
- }
-
- void fetchRemoteFiles(String collecTorBaseUrl,
- SortedMap<String, Long> remoteFiles, long minLastModified,
- File localDirectory, SortedMap<String, Long> localFiles) {
- for (Map.Entry<String, Long> e : remoteFiles.entrySet()) {
- String filename = e.getKey();
- long lastModifiedMillis = e.getValue();
- if (lastModifiedMillis < minLastModified
- || (localFiles.containsKey(filename)
- && localFiles.get(filename) >= lastModifiedMillis)) {
- continue;
- }
- String url = collecTorBaseUrl + filename;
- File destinationFile = new File(localDirectory.getPath()
- + filename);
- this.fetchRemoteFile(url, destinationFile, lastModifiedMillis);
- }
- }
-
- void fetchRemoteFile(String urlString, File destinationFile,
- long lastModifiedMillis) {
- HttpURLConnection huc = null;
- try {
- File destinationDirectory = destinationFile.getParentFile();
- destinationDirectory.mkdirs();
- File tempDestinationFile = new File(destinationDirectory, "."
- + destinationFile.getName());
- BufferedOutputStream bos = new BufferedOutputStream(
- new FileOutputStream(tempDestinationFile));
- URL url = new URL(urlString);
- huc = (HttpURLConnection) url.openConnection();
- huc.setRequestMethod("GET");
- if (!urlString.endsWith(".xz")) {
- huc.addRequestProperty("Accept-Encoding", "gzip");
- }
- huc.connect();
- int responseCode = huc.getResponseCode();
- if (responseCode == 200) {
- InputStream is;
- if (huc.getContentEncoding() != null
- && huc.getContentEncoding().equalsIgnoreCase("gzip")) {
- is = new GZIPInputStream(huc.getInputStream());
- } else {
- is = huc.getInputStream();
- }
- BufferedInputStream bis = new BufferedInputStream(is);
- int len;
- byte[] data = new byte[8192];
- while ((len = bis.read(data, 0, 8192)) >= 0) {
- bos.write(data, 0, len);
- }
- bis.close();
- bos.close();
- tempDestinationFile.renameTo(destinationFile);
- destinationFile.setLastModified(lastModifiedMillis);
- }
- } catch (IOException e) {
- log.error("Cannot fetch remote file.", e);
- if (huc != null) {
- huc.disconnect();
- }
- }
- }
-
- void deleteExtraneousLocalFiles(
- SortedSet<String> parsedDirectories,
- SortedMap<String, Long> remoteFiles, File localDirectory,
- SortedMap<String, Long> localFiles) {
- for (String localPath : localFiles.keySet()) {
- for (String remoteDirectory : parsedDirectories) {
- if (localPath.startsWith(remoteDirectory)) {
- if (!remoteFiles.containsKey(localPath)) {
- new File(localDirectory.getPath() + localPath).delete();
- }
- }
- }
- }
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorDownloaderImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorDownloaderImpl.java
deleted file mode 100644
index 807abac..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorDownloaderImpl.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.DescriptorDownloader;
-import org.torproject.descriptor.DescriptorRequest;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-public class DescriptorDownloaderImpl
- implements DescriptorDownloader {
-
- private boolean hasStartedDownloading = false;
-
- private SortedMap<String, DirectoryDownloader> directoryAuthorities =
- new TreeMap<>();
-
- @Override
- public void addDirectoryAuthority(String nickname, String ip,
- int dirPort) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.checkDirectoryParameters(nickname, ip, dirPort);
- DirectoryDownloader directoryAuthority = new DirectoryDownloader(
- nickname, ip, dirPort);
- this.directoryAuthorities.put(nickname, directoryAuthority);
- }
-
- private SortedMap<String, DirectoryDownloader> directoryMirrors =
- new TreeMap<>();
-
- @Override
- public void addDirectoryMirror(String nickname, String ip,
- int dirPort) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.checkDirectoryParameters(nickname, ip, dirPort);
- DirectoryDownloader directoryMirror = new DirectoryDownloader(
- nickname, ip, dirPort);
- this.directoryMirrors.put(nickname, directoryMirror);
- /* TODO Implement prioritizing mirrors for non-vote downloads. */
- throw new UnsupportedOperationException("Prioritizing directory "
- + "mirrors over directory authorities is not implemented yet. "
- + "Until it is, configuring directory mirrors is misleading and "
- + "therefore not supported.");
- }
-
- private void checkDirectoryParameters(String nickname, String ip,
- int dirPort) {
- if (nickname == null || nickname.length() < 1) {
- throw new IllegalArgumentException("'" + nickname + "' is not a "
- + "valid nickname.");
- }
- if (ip == null || ip.length() < 7 || ip.split("\\.").length != 4) {
- throw new IllegalArgumentException("'" + ip + "' is not a valid IP "
- + "address.");
- }
- if (dirPort < 1 || dirPort > 65535) {
- throw new IllegalArgumentException(String.valueOf(dirPort) + " is "
- + "not a valid DirPort.");
- }
- /* TODO Relax the requirement for directory nicknames to be unique.
- * In theory, we can identify them by ip+port. */
- if (this.directoryAuthorities.containsKey(nickname)
- || this.directoryMirrors.containsKey(nickname)) {
- throw new IllegalArgumentException("Directory nicknames must be "
- + "unique.");
- }
- }
-
- private boolean downloadConsensus = false;
-
- @Override
- public void setIncludeCurrentConsensus() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.downloadConsensus = true;
- }
-
- private boolean downloadConsensusFromAllAuthorities = false;
-
- @Override
- public void setIncludeCurrentConsensusFromAllDirectoryAuthorities() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.downloadConsensusFromAllAuthorities = true;
- }
-
- private boolean includeCurrentReferencedVotes = false;
-
- @Override
- public void setIncludeCurrentReferencedVotes() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.includeCurrentReferencedVotes = true;
- }
-
- private Set<String> downloadVotes = new HashSet<>();
-
- @Override
- public void setIncludeCurrentVote(String fingerprint) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.checkVoteFingerprint(fingerprint);
- this.downloadVotes.add(fingerprint);
- }
-
- @Override
- public void setIncludeCurrentVotes(Set<String> fingerprints) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- if (fingerprints == null) {
- throw new IllegalArgumentException("Set of fingerprints must not "
- + "be null.");
- }
- for (String fingerprint : fingerprints) {
- this.checkVoteFingerprint(fingerprint);
- }
- for (String fingerprint : fingerprints) {
- this.setIncludeCurrentVote(fingerprint);
- }
- }
-
- private void checkVoteFingerprint(String fingerprint) {
- if (fingerprint == null || fingerprint.length() != 40) {
- throw new IllegalArgumentException("'" + fingerprint + "' is not a "
- + "valid fingerprint.");
- }
- }
-
- @Override
- public void setIncludeReferencedServerDescriptors() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading server "
- + "descriptors is not implemented yet.");
- }
-
- @Override
- public void setExcludeServerDescriptor(String identifier) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading server "
- + "descriptors is not implemented yet.");
- }
-
- @Override
- public void setExcludeServerDescriptors(Set<String> identifier) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading server "
- + "descriptors is not implemented yet.");
- }
-
- @Override
- public void setIncludeReferencedExtraInfoDescriptors() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading extra-info "
- + "descriptors is not implemented yet.");
- }
-
- @Override
- public void setExcludeExtraInfoDescriptor(String identifier) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading extra-info "
- + "descriptors is not implemented yet.");
- }
-
- @Override
- public void setExcludeExtraInfoDescriptors(Set<String> identifiers) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- /* TODO Implement me. */
- throw new UnsupportedOperationException("Downloading extra-info "
- + "descriptors is not implemented yet.");
- }
-
- private long readTimeoutMillis = 60L * 1000L;
-
- @Override
- public void setReadTimeout(long readTimeoutMillis) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- if (readTimeoutMillis < 0L) {
- throw new IllegalArgumentException("Read timeout value "
- + String.valueOf(readTimeoutMillis) + " may not be "
- + "negative.");
- }
- this.readTimeoutMillis = readTimeoutMillis;
- }
-
- private long connectTimeoutMillis = 60L * 1000L;
-
- @Override
- public void setConnectTimeout(long connectTimeoutMillis) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- if (connectTimeoutMillis < 0L) {
- throw new IllegalArgumentException("Connect timeout value "
- + String.valueOf(connectTimeoutMillis) + " may not be "
- + "negative.");
- }
- this.connectTimeoutMillis = connectTimeoutMillis;
- }
-
- private long globalTimeoutMillis = 60L * 60L * 1000L;
-
- @Override
- public void setGlobalTimeout(long globalTimeoutMillis) {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- if (globalTimeoutMillis < 0L) {
- throw new IllegalArgumentException("Global timeout value "
- + String.valueOf(globalTimeoutMillis) + " may not be "
- + "negative.");
- }
- this.globalTimeoutMillis = globalTimeoutMillis;
- }
-
- private boolean failUnrecognizedDescriptorLines = false;
-
- @Override
- public void setFailUnrecognizedDescriptorLines() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to download.");
- }
- this.failUnrecognizedDescriptorLines = true;
- }
-
- @Override
- public Iterator<DescriptorRequest> downloadDescriptors() {
- if (this.hasStartedDownloading) {
- throw new IllegalStateException("Initiating downloads is only "
- + "permitted once.");
- }
- this.hasStartedDownloading = true;
- DownloadCoordinatorImpl downloadCoordinator =
- new DownloadCoordinatorImpl(this.directoryAuthorities,
- this.directoryMirrors, this.downloadConsensus,
- this.downloadConsensusFromAllAuthorities, this.downloadVotes,
- this.includeCurrentReferencedVotes, this.connectTimeoutMillis,
- this.readTimeoutMillis, this.globalTimeoutMillis,
- this.failUnrecognizedDescriptorLines);
- Iterator<DescriptorRequest> descriptorQueue = downloadCoordinator
- .getDescriptorQueue();
- return descriptorQueue;
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorFileImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorFileImpl.java
deleted file mode 100644
index 561e0b8..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorFileImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.Descriptor;
-import org.torproject.descriptor.DescriptorFile;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-public class DescriptorFileImpl implements DescriptorFile {
-
- private File directory;
-
- protected void setDirectory(File directory) {
- this.directory = directory;
- }
-
- @Override
- public File getDirectory() {
- return this.directory;
- }
-
- private File tarball;
-
- protected void setTarball(File tarball) {
- this.tarball = tarball;
- }
-
- @Override
- public File getTarball() {
- return this.tarball;
- }
-
- private File file;
-
- protected void setFile(File file) {
- this.file = file;
- }
-
- @Override
- public File getFile() {
- return this.file;
- }
-
- private String fileName;
-
- protected void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- @Override
- public String getFileName() {
- return this.fileName;
- }
-
- private long lastModified;
-
- protected void setLastModified(long lastModified) {
- this.lastModified = lastModified;
- }
-
- @Override
- public long getLastModified() {
- return this.lastModified;
- }
-
- private List<Descriptor> descriptors;
-
- protected void setDescriptors(List<Descriptor> descriptors) {
- this.descriptors = descriptors;
- }
-
- @Override
- public List<Descriptor> getDescriptors() {
- return this.descriptors == null ? new ArrayList<Descriptor>()
- : new ArrayList<>(this.descriptors);
- }
-
- private Exception exception;
-
- protected void setException(Exception exception) {
- this.exception = exception;
- }
-
- @Override
- public Exception getException() {
- return this.exception;
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
index acbee50..eec89a4 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
@@ -184,8 +184,6 @@ public abstract class DescriptorImpl implements Descriptor {
return splitParts;
}
- protected boolean failUnrecognizedDescriptorLines = false;
-
protected List<String> unrecognizedLines;
@Override
@@ -195,7 +193,7 @@ public abstract class DescriptorImpl implements Descriptor {
}
protected DescriptorImpl(byte[] rawDescriptorBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines) {
+ File descriptorFile) {
int offset = offsetAndLength[0];
int length = offsetAndLength[1];
if (offset < 0 || offset + length > rawDescriptorBytes.length
@@ -208,15 +206,12 @@ public abstract class DescriptorImpl implements Descriptor {
this.offset = offset;
this.length = length;
this.descriptorFile = descriptorFile;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
}
protected DescriptorImpl(byte[] rawDescriptorBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines,
- boolean blankLinesAllowed) throws DescriptorParseException {
- this(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines);
+ File descriptorFile, boolean blankLinesAllowed)
+ throws DescriptorParseException {
+ this(rawDescriptorBytes, offsetAndLength, descriptorFile);
this.cutOffAnnotations();
this.countKeys(rawDescriptorBytes, blankLinesAllowed);
}
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorParseException.java b/src/main/java/org/torproject/descriptor/impl/DescriptorParseException.java
deleted file mode 100644
index 8583ef2..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorParseException.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-/**
- * @deprecated Replaced by
- * org.torproject.descriptor.DescriptorParseException
- */
- at Deprecated public class DescriptorParseException extends Exception {
-
- private static final long serialVersionUID = 100L;
-
- protected DescriptorParseException(String message) {
- super(message);
- }
-
- protected DescriptorParseException(String message, Exception ex) {
- super(message, ex);
- }
-
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorParserImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorParserImpl.java
index a0be85c..dbdfca9 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorParserImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorParserImpl.java
@@ -19,15 +19,6 @@ import java.util.List;
public class DescriptorParserImpl implements DescriptorParser {
- private boolean failUnrecognizedDescriptorLines;
-
- @Override
- public void setFailUnrecognizedDescriptorLines(
- boolean failUnrecognizedDescriptorLines) {
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
- }
-
@Override
public List<Descriptor> parseDescriptors(
byte[] rawDescriptorBytes, String fileName)
@@ -46,8 +37,7 @@ public class DescriptorParserImpl implements DescriptorParser {
* below and ran into a parse issue. */
List<Descriptor> parsedDescriptors = new ArrayList<>();
parsedDescriptors.add(new UnparseableDescriptorImpl(rawDescriptorBytes,
- new int[] { 0, rawDescriptorBytes.length }, descriptorFile,
- failUnrecognizedDescriptorLines, e));
+ new int[] { 0, rawDescriptorBytes.length }, descriptorFile, e));
return parsedDescriptors;
}
}
@@ -71,7 +61,7 @@ public class DescriptorParserImpl implements DescriptorParser {
NL + Key.VOTE_STATUS.keyword + SP + "consensus" + NL))) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.NETWORK_STATUS_VERSION, RelayNetworkStatusConsensusImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type network-status-vote-3 1.")
|| ((firstLines.startsWith(
Key.NETWORK_STATUS_VERSION.keyword + SP + "3" + NL)
@@ -81,59 +71,59 @@ public class DescriptorParserImpl implements DescriptorParser {
NL + Key.VOTE_STATUS.keyword + SP + "vote" + NL))) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.NETWORK_STATUS_VERSION, RelayNetworkStatusVoteImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type bridge-network-status 1.")
|| firstLines.startsWith(Key.R.keyword + SP)) {
List<Descriptor> parsedDescriptors = new ArrayList<>();
parsedDescriptors.add(new BridgeNetworkStatusImpl(
rawDescriptorBytes, new int[] { 0, rawDescriptorBytes.length },
- descriptorFile, fileName, this.failUnrecognizedDescriptorLines));
+ descriptorFile, fileName));
return parsedDescriptors;
} else if (firstLines.startsWith("@type bridge-server-descriptor 1.")) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.ROUTER, BridgeServerDescriptorImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type server-descriptor 1.")
|| firstLines.startsWith(Key.ROUTER.keyword + SP)
|| firstLines.contains(NL + Key.ROUTER.keyword + SP)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.ROUTER, RelayServerDescriptorImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type bridge-extra-info 1.")) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.EXTRA_INFO, BridgeExtraInfoDescriptorImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type extra-info 1.")
|| firstLines.startsWith(Key.EXTRA_INFO.keyword + SP)
|| firstLines.contains(NL + Key.EXTRA_INFO.keyword + SP)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.EXTRA_INFO, RelayExtraInfoDescriptorImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type microdescriptor 1.")
|| firstLines.startsWith(Key.ONION_KEY.keyword + NL)
|| firstLines.contains(NL + Key.ONION_KEY.keyword + NL)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.ONION_KEY, MicrodescriptorImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type bridge-pool-assignment 1.")
|| firstLines.startsWith(Key.BRIDGE_POOL_ASSIGNMENT.keyword + SP)
|| firstLines.contains(NL + Key.BRIDGE_POOL_ASSIGNMENT.keyword + SP)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.BRIDGE_POOL_ASSIGNMENT, BridgePoolAssignmentImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type dir-key-certificate-3 1.")
|| firstLines.startsWith(Key.DIR_KEY_CERTIFICATE_VERSION.keyword + SP)
|| firstLines.contains(
NL + Key.DIR_KEY_CERTIFICATE_VERSION.keyword + SP)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.DIR_KEY_CERTIFICATE_VERSION, DirectoryKeyCertificateImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type tordnsel 1.")
|| firstLines.startsWith("ExitNode" + SP)
|| firstLines.contains(NL + "ExitNode" + SP)) {
List<Descriptor> parsedDescriptors = new ArrayList<>();
parsedDescriptors.add(new ExitListImpl(rawDescriptorBytes, descriptorFile,
- fileName, this.failUnrecognizedDescriptorLines));
+ fileName));
return parsedDescriptors;
} else if (firstLines.startsWith("@type network-status-2 1.")
|| firstLines.startsWith(
@@ -142,16 +132,16 @@ public class DescriptorParserImpl implements DescriptorParser {
NL + Key.NETWORK_STATUS_VERSION.keyword + SP + "2" + NL)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.NETWORK_STATUS_VERSION, RelayNetworkStatusImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type directory 1.")
|| firstLines.startsWith(Key.SIGNED_DIRECTORY.keyword + NL)
|| firstLines.contains(NL + Key.SIGNED_DIRECTORY.keyword + NL)) {
return this.parseDescriptors(rawDescriptorBytes, descriptorFile,
Key.SIGNED_DIRECTORY, RelayDirectoryImpl.class,
- this.failUnrecognizedDescriptorLines, includeUnparseableDescriptors);
+ includeUnparseableDescriptors);
} else if (firstLines.startsWith("@type torperf 1.")) {
return TorperfResultImpl.parseTorperfResults(rawDescriptorBytes,
- descriptorFile, this.failUnrecognizedDescriptorLines);
+ descriptorFile);
} else {
throw new DescriptorParseException("Could not detect descriptor "
+ "type in descriptor starting with '" + firstLines + "'.");
@@ -161,7 +151,6 @@ public class DescriptorParserImpl implements DescriptorParser {
private List<Descriptor> parseDescriptors(byte[] rawDescriptorBytes,
File descriptorFile, Key key,
Class<? extends DescriptorImpl> descriptorClass,
- boolean failUnrecognizedDescriptorLines,
boolean includeUnparseableDescriptors) throws DescriptorParseException {
List<Descriptor> parsedDescriptors = new ArrayList<>();
Constructor<? extends DescriptorImpl> constructor;
@@ -213,13 +202,11 @@ public class DescriptorParserImpl implements DescriptorParser {
endDescriptor - startAnnotations };
try {
parsedDescriptors.add(this.parseDescriptor(rawDescriptorBytes,
- offsetAndLength, descriptorFile, constructor,
- failUnrecognizedDescriptorLines));
+ offsetAndLength, descriptorFile, constructor));
} catch (DescriptorParseException e) {
if (includeUnparseableDescriptors) {
parsedDescriptors.add(new UnparseableDescriptorImpl(
- rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, e));
+ rawDescriptorBytes, offsetAndLength, descriptorFile, e));
} else {
throw e;
}
@@ -231,11 +218,11 @@ public class DescriptorParserImpl implements DescriptorParser {
Descriptor parseDescriptor(byte[] rawDescriptorBytes,
int[] offsetAndLength, File descriptorFile,
- Constructor<? extends DescriptorImpl> constructor,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
+ Constructor<? extends DescriptorImpl> constructor)
+ throws DescriptorParseException {
try {
- return constructor.newInstance(rawDescriptorBytes,
- offsetAndLength, descriptorFile, failUnrecognizedDescriptorLines);
+ return constructor.newInstance(rawDescriptorBytes, offsetAndLength,
+ descriptorFile);
} catch (InvocationTargetException e) {
if (null != e.getCause()
&& e.getCause() instanceof DescriptorParseException) {
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
index 54e26fc..e2bf987 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
@@ -4,7 +4,6 @@
package org.torproject.descriptor.impl;
import org.torproject.descriptor.Descriptor;
-import org.torproject.descriptor.DescriptorFile;
import org.torproject.descriptor.DescriptorParseException;
import org.torproject.descriptor.DescriptorParser;
import org.torproject.descriptor.DescriptorReader;
@@ -27,7 +26,6 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -42,40 +40,13 @@ public class DescriptorReaderImpl implements DescriptorReader {
private List<File> directories = new ArrayList<>();
- @Override
- public void addDirectory(File directory) {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to read.");
- }
- this.directories.add(directory);
- }
-
private List<File> tarballs = new ArrayList<>();
- @Override
- public void addTarball(File tarball) {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to read.");
- }
- this.tarballs.add(tarball);
- }
-
private File autoSaveHistoryFile;
private File manualSaveHistoryFile;
@Override
- public void setExcludeFiles(File historyFile) {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to read.");
- }
- this.autoSaveHistoryFile = historyFile;
- }
-
- @Override
public void setHistoryFile(File historyFile) {
if (this.hasStartedReading) {
throw new IllegalStateException("Reconfiguration is not permitted "
@@ -113,28 +84,8 @@ public class DescriptorReaderImpl implements DescriptorReader {
return new TreeMap<>(this.reader.parsedFilesAfter);
}
- private boolean failUnrecognizedDescriptorLines = false;
-
- @Override
- public void setFailUnrecognizedDescriptorLines() {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to read.");
- }
- this.failUnrecognizedDescriptorLines = true;
- }
-
private Integer maxDescriptorFilesInQueue = null;
- @Override
- public void setMaxDescriptorFilesInQueue(int max) {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Reconfiguration is not permitted "
- + "after starting to read.");
- }
- this.maxDescriptorFilesInQueue = max;
- }
-
private int maxDescriptorsInQueue = 100;
@Override
@@ -149,28 +100,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
private DescriptorReaderRunnable reader;
@Override
- public Iterator<DescriptorFile> readDescriptors() {
- if (this.hasStartedReading) {
- throw new IllegalStateException("Initiating reading is only "
- + "permitted once.");
- }
- this.hasStartedReading = true;
- BlockingIteratorImpl<DescriptorFile> descriptorQueue =
- this.maxDescriptorFilesInQueue == null
- ? new BlockingIteratorImpl<DescriptorFile>()
- : new BlockingIteratorImpl<DescriptorFile>(
- this.maxDescriptorFilesInQueue);
- this.reader = new DescriptorReaderRunnable(this.directories,
- this.tarballs, descriptorQueue, this.autoSaveHistoryFile,
- this.manualSaveHistoryFile, this.excludedFiles,
- this.failUnrecognizedDescriptorLines);
- Thread readerThread = new Thread(this.reader);
- readerThread.setDaemon(true);
- readerThread.start();
- return descriptorQueue;
- }
-
- @Override
public Iterable<Descriptor> readDescriptors(File... descriptorFiles) {
if (this.hasStartedReading) {
throw new IllegalStateException("Initiating reading is only "
@@ -181,8 +110,7 @@ public class DescriptorReaderImpl implements DescriptorReader {
new BlockingIteratorImpl<>(this.maxDescriptorsInQueue);
this.reader = new DescriptorReaderRunnable(
descriptorFiles, descriptorQueue, this.autoSaveHistoryFile,
- this.manualSaveHistoryFile, this.excludedFiles,
- this.failUnrecognizedDescriptorLines);
+ this.manualSaveHistoryFile, this.excludedFiles);
Thread readerThread = new Thread(this.reader);
readerThread.setDaemon(true);
readerThread.start();
@@ -208,8 +136,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
private BlockingIteratorImpl<Descriptor> descriptorQueue;
- private BlockingIteratorImpl<DescriptorFile> descriptorFileQueue;
-
private File autoSaveHistoryFile;
private File manualSaveHistoryFile;
@@ -226,31 +152,10 @@ public class DescriptorReaderImpl implements DescriptorReader {
private boolean hasFinishedReading = false;
- private DescriptorReaderRunnable(List<File> directories,
- List<File> tarballs,
- BlockingIteratorImpl<DescriptorFile> descriptorFileQueue,
- File autoSaveHistoryFile, File manualSaveHistoryFile,
- SortedMap<String, Long> excludedFiles,
- boolean failUnrecognizedDescriptorLines) {
- this.directories = directories;
- this.tarballs = tarballs;
- this.descriptorFileQueue = descriptorFileQueue;
- this.autoSaveHistoryFile = autoSaveHistoryFile;
- this.manualSaveHistoryFile = manualSaveHistoryFile;
- if (excludedFiles != null) {
- this.excludedFilesBefore = excludedFiles;
- }
- this.failUnrecognizedDescriptorLines = failUnrecognizedDescriptorLines;
- this.descriptorParser = new DescriptorParserImpl();
- this.descriptorParser.setFailUnrecognizedDescriptorLines(
- failUnrecognizedDescriptorLines);
- }
-
private DescriptorReaderRunnable(File[] descriptorFiles,
BlockingIteratorImpl<Descriptor> descriptorQueue,
File autoSaveHistoryFile, File manualSaveHistoryFile,
- SortedMap<String, Long> excludedFiles,
- boolean failUnrecognizedDescriptorLines) {
+ SortedMap<String, Long> excludedFiles) {
this.descriptorFiles = descriptorFiles;
this.descriptorQueue = descriptorQueue;
this.autoSaveHistoryFile = autoSaveHistoryFile;
@@ -260,8 +165,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
}
this.failUnrecognizedDescriptorLines = failUnrecognizedDescriptorLines;
this.descriptorParser = new DescriptorParserImpl();
- this.descriptorParser.setFailUnrecognizedDescriptorLines(
- failUnrecognizedDescriptorLines);
}
public void run() {
@@ -276,9 +179,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
log.error("Bug: uncaught exception or error while "
+ "reading descriptors: " + t.getMessage(), t);
} finally {
- if (null != this.descriptorFileQueue) {
- this.descriptorFileQueue.setOutOfDescriptors();
- }
if (null != this.descriptorQueue) {
this.descriptorQueue.setOutOfDescriptors();
}
@@ -453,20 +353,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
continue;
}
this.parsedFilesAfter.put(absolutePath, lastModifiedMillis);
- DescriptorFileImpl descriptorFile = new DescriptorFileImpl();
- try {
- descriptorFile.setDirectory(directory);
- descriptorFile.setFile(file);
- descriptorFile.setFileName(file.getAbsolutePath());
- descriptorFile.setLastModified(lastModifiedMillis);
- descriptorFile.setDescriptors(this.readFile(file));
- } catch (DescriptorParseException e) {
- descriptorFile.setException(e);
- } catch (IOException e) {
- descriptorFile.setException(e);
- abortReading = true;
- }
- this.descriptorFileQueue.add(descriptorFile);
}
}
}
@@ -513,33 +399,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
if (tae.isDirectory()) {
continue;
}
- DescriptorFileImpl descriptorFile =
- new DescriptorFileImpl();
- descriptorFile.setTarball(tarball);
- descriptorFile.setFileName(tae.getName());
- descriptorFile.setLastModified(tae.getLastModifiedDate()
- .getTime());
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int len;
- byte[] data = new byte[1024];
- while ((len = bis.read(data, 0, 1024)) >= 0) {
- baos.write(data, 0, len);
- }
- byte[] rawDescriptorBytes = baos.toByteArray();
- if (rawDescriptorBytes.length < 1) {
- continue;
- }
- try {
- String fileName = tae.getName().substring(
- tae.getName().lastIndexOf("/") + 1);
- List<Descriptor> parsedDescriptors =
- this.descriptorParser.parseDescriptors(
- rawDescriptorBytes, fileName);
- descriptorFile.setDescriptors(parsedDescriptors);
- } catch (DescriptorParseException e) {
- descriptorFile.setException(e);
- }
- this.descriptorFileQueue.add(descriptorFile);
}
}
} catch (IOException e) {
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorRequestImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorRequestImpl.java
deleted file mode 100644
index 7362935..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorRequestImpl.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.Descriptor;
-import org.torproject.descriptor.DescriptorRequest;
-
-import java.util.List;
-
-public class DescriptorRequestImpl implements DescriptorRequest {
-
- private String requestedResource;
-
- protected void setRequestedResource(String requestedResource) {
- this.requestedResource = requestedResource;
- }
-
- protected String getRequestedResource() {
- return this.requestedResource;
- }
-
- private String descriptorType;
-
- protected void setDescriptorType(String descriptorType) {
- this.descriptorType = descriptorType;
- }
-
- protected String getDescriptorType() {
- return this.descriptorType;
- }
-
- private byte[] responseBytes;
-
- protected byte[] getResponseBytes() {
- return this.responseBytes;
- }
-
- protected void setResponseBytes(byte[] responseBytes) {
- this.responseBytes = responseBytes;
- }
-
- private String requestUrl;
-
- @Override
- public String getRequestUrl() {
- return this.requestUrl;
- }
-
- private String directoryNickname;
-
- protected void setDirectoryNickname(String directoryNickname) {
- this.directoryNickname = directoryNickname;
- }
-
- @Override
- public String getDirectoryNickname() {
- return this.directoryNickname;
- }
-
- private int responseCode;
-
- protected void setResponseCode(int responseCode) {
- this.responseCode = responseCode;
- }
-
- @Override
- public int getResponseCode() {
- return this.responseCode;
- }
-
- private long requestStart;
-
- protected void setRequestStart(long requestStart) {
- this.requestStart = requestStart;
- }
-
- @Override
- public long getRequestStart() {
- return this.requestStart;
- }
-
- private long requestEnd;
-
- protected void setRequestEnd(long requestEnd) {
- this.requestEnd = requestEnd;
- }
-
- @Override
- public long getRequestEnd() {
- return this.requestEnd;
- }
-
- private boolean connectTimeoutHasExpired;
-
- @Override
- public boolean connectTimeoutHasExpired() {
- return this.connectTimeoutHasExpired;
- }
-
- private boolean readTimeoutHasExpired;
-
- @Override
- public boolean readTimeoutHasExpired() {
- return this.readTimeoutHasExpired;
- }
-
- private boolean globalTimeoutHasExpired;
-
- @Override
- public boolean globalTimeoutHasExpired() {
- return this.globalTimeoutHasExpired;
- }
-
- private List<Descriptor> descriptors;
-
- protected void setDescriptors(List<Descriptor> descriptors) {
- this.descriptors = descriptors;
- }
-
- @Override
- public List<Descriptor> getDescriptors() {
- return this.descriptors;
- }
-
- private Exception exception;
-
- protected void setException(Exception exception) {
- this.exception = exception;
- }
-
- @Override
- public Exception getException() {
- return this.exception;
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DirSourceEntryImpl.java b/src/main/java/org/torproject/descriptor/impl/DirSourceEntryImpl.java
index 770ca61..630b886 100644
--- a/src/main/java/org/torproject/descriptor/impl/DirSourceEntryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DirSourceEntryImpl.java
@@ -31,8 +31,6 @@ public class DirSourceEntryImpl implements DirSourceEntry {
return this.parent.getRawDescriptorBytes(this.offset, this.length);
}
- private boolean failUnrecognizedDescriptorLines;
-
private List<String> unrecognizedLines;
protected List<String> getAndClearUnrecognizedLines() {
@@ -41,14 +39,11 @@ public class DirSourceEntryImpl implements DirSourceEntry {
return lines;
}
- protected DirSourceEntryImpl(DescriptorImpl parent, int offset, int length,
- boolean failUnrecognizedDescriptorLines)
+ protected DirSourceEntryImpl(DescriptorImpl parent, int offset, int length)
throws DescriptorParseException {
this.parent = parent;
this.offset = offset;
this.length = length;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
this.parseDirSourceEntryBytes();
this.checkAndClearKeys();
}
@@ -117,15 +112,10 @@ public class DirSourceEntryImpl implements DirSourceEntry {
break;
default:
if (!skipCrypto) {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in dir-source entry.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -237,11 +227,6 @@ public class DirSourceEntryImpl implements DirSourceEntry {
private String voteDigest;
@Override
- public String getVoteDigest() {
- return this.getVoteDigestSha1Hex();
- }
-
- @Override
public String getVoteDigestSha1Hex() {
return this.voteDigest;
}
diff --git a/src/main/java/org/torproject/descriptor/impl/DirectoryDownloader.java b/src/main/java/org/torproject/descriptor/impl/DirectoryDownloader.java
deleted file mode 100644
index 7b3f977..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DirectoryDownloader.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.DescriptorParser;
-import org.torproject.descriptor.DescriptorSourceFactory;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.zip.InflaterInputStream;
-
-/* Download descriptors from one directory authority or mirror. First,
- * ask the coordinator thread to create a request, run it, and deliver
- * the response. Repeat until the coordinator thread says there are no
- * further requests to make. */
-public class DirectoryDownloader implements Runnable {
-
- private String nickname;
-
- private String ipPort;
-
- private DescriptorParser descriptorParser;
-
- protected DirectoryDownloader(String nickname, String ip, int dirPort) {
- this.nickname = nickname;
- this.ipPort = ip + ":" + String.valueOf(dirPort);
- this.descriptorParser =
- DescriptorSourceFactory.createDescriptorParser();
- }
-
- private DownloadCoordinator downloadCoordinator;
-
- protected void setDownloadCoordinator(
- DownloadCoordinator downloadCoordinator) {
- this.downloadCoordinator = downloadCoordinator;
- }
-
- private long connectTimeout;
-
- protected void setConnectTimeout(long connectTimeout) {
- this.connectTimeout = connectTimeout;
- }
-
- private long readTimeout;
-
- protected void setReadTimeout(long readTimeout) {
- this.readTimeout = readTimeout;
- }
-
- protected void setFailUnrecognizedDescriptorLines(
- boolean failUnrecognizedDescriptorLines) {
- this.descriptorParser.setFailUnrecognizedDescriptorLines(
- failUnrecognizedDescriptorLines);
- }
-
- @Override
- public void run() {
- boolean keepRunning = true;
- do {
- DescriptorRequestImpl request =
- this.downloadCoordinator.createRequest(this.nickname);
- if (request != null) {
- String urlString = "http://" + this.ipPort
- + request.getRequestedResource();
- request.setRequestStart(System.currentTimeMillis());
- HttpURLConnection huc = null;
- try {
- URL url = new URL(urlString);
- huc = (HttpURLConnection) url.openConnection();
- huc.setConnectTimeout((int) this.connectTimeout);
- huc.setReadTimeout((int) this.readTimeout);
- huc.setRequestMethod("GET");
- huc.connect();
- int responseCode = huc.getResponseCode();
- request.setResponseCode(responseCode);
- if (responseCode == 200) {
- BufferedInputStream in = new BufferedInputStream(
- new InflaterInputStream(huc.getInputStream()));
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int len;
- byte[] data = new byte[8192];
- while ((len = in.read(data, 0, 8192)) >= 0) {
- baos.write(data, 0, len);
- }
- in.close();
- byte[] responseBytes = baos.toByteArray();
- request.setResponseBytes(responseBytes);
- request.setRequestEnd(System.currentTimeMillis());
- request.setDescriptors(this.descriptorParser.parseDescriptors(
- responseBytes, null));
- }
- } catch (Exception e) {
- request.setException(e);
- if (huc != null) {
- huc.disconnect();
- }
- /* Stop downloading from this directory if there are any
- * problems, e.g., refused connections. */
- keepRunning = false;
- }
- this.downloadCoordinator.deliverResponse(request);
- } else {
- keepRunning = false;
- }
- } while (keepRunning);
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/DirectoryKeyCertificateImpl.java b/src/main/java/org/torproject/descriptor/impl/DirectoryKeyCertificateImpl.java
index 6beb9b5..59357d5 100644
--- a/src/main/java/org/torproject/descriptor/impl/DirectoryKeyCertificateImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DirectoryKeyCertificateImpl.java
@@ -18,8 +18,7 @@ public class DirectoryKeyCertificateImpl extends DescriptorImpl
protected DirectoryKeyCertificateImpl(byte[] rawDescriptorBytes,
int[] offsetAndLength, File descriptorFile,
boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false);
+ super(rawDescriptorBytes, offsetAndLength, descriptorFile, false);
this.parseDescriptorBytes();
this.calculateDigestSha1Hex(Key.DIR_KEY_CERTIFICATE_VERSION.keyword + SP,
NL + Key.DIR_KEY_CERTIFICATION.keyword + NL);
@@ -107,15 +106,10 @@ public class DirectoryKeyCertificateImpl extends DescriptorImpl
if (crypto != null) {
crypto.append(line).append(NL);
} else {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in directory key certificate.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -261,9 +255,5 @@ public class DirectoryKeyCertificateImpl extends DescriptorImpl
return this.dirKeyCertification;
}
- @Override
- public String getCertificateDigest() {
- return this.getDigestSha1Hex();
- }
}
diff --git a/src/main/java/org/torproject/descriptor/impl/DirectorySignatureImpl.java b/src/main/java/org/torproject/descriptor/impl/DirectorySignatureImpl.java
index be0abf8..b638002 100644
--- a/src/main/java/org/torproject/descriptor/impl/DirectorySignatureImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DirectorySignatureImpl.java
@@ -21,8 +21,6 @@ public class DirectorySignatureImpl implements DirectorySignature {
private int length;
- private boolean failUnrecognizedDescriptorLines;
-
private List<String> unrecognizedLines;
protected List<String> getAndClearUnrecognizedLines() {
@@ -32,13 +30,10 @@ public class DirectorySignatureImpl implements DirectorySignature {
}
protected DirectorySignatureImpl(DescriptorImpl parent, int offset,
- int length, boolean failUnrecognizedDescriptorLines)
- throws DescriptorParseException {
+ int length) throws DescriptorParseException {
this.parent = parent;
this.offset = offset;
this.length = length;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
this.parseDirectorySignatureBytes();
}
@@ -84,15 +79,10 @@ public class DirectorySignatureImpl implements DirectorySignature {
if (crypto != null) {
crypto.append(line).append(NL);
} else {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in dir-source entry.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -117,11 +107,6 @@ public class DirectorySignatureImpl implements DirectorySignature {
private String signingKeyDigest;
@Override
- public String getSigningKeyDigest() {
- return this.getSigningKeyDigestSha1Hex();
- }
-
- @Override
public String getSigningKeyDigestSha1Hex() {
return this.signingKeyDigest;
}
diff --git a/src/main/java/org/torproject/descriptor/impl/DownloadCoordinator.java b/src/main/java/org/torproject/descriptor/impl/DownloadCoordinator.java
deleted file mode 100644
index 0d78f06..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DownloadCoordinator.java
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-public interface DownloadCoordinator {
-
- public DescriptorRequestImpl createRequest(String nickname);
-
- public void deliverResponse(DescriptorRequestImpl request);
-}
diff --git a/src/main/java/org/torproject/descriptor/impl/DownloadCoordinatorImpl.java b/src/main/java/org/torproject/descriptor/impl/DownloadCoordinatorImpl.java
deleted file mode 100644
index c79a7cc..0000000
--- a/src/main/java/org/torproject/descriptor/impl/DownloadCoordinatorImpl.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/* Copyright 2011--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import org.torproject.descriptor.Descriptor;
-import org.torproject.descriptor.DescriptorRequest;
-import org.torproject.descriptor.DirSourceEntry;
-import org.torproject.descriptor.RelayNetworkStatusConsensus;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/* TODO This whole download logic is a mess and needs a cleanup. */
-public class DownloadCoordinatorImpl implements DownloadCoordinator {
-
- private static Logger log = LoggerFactory
- .getLogger(DownloadCoordinatorImpl.class);
-
- private BlockingIteratorImpl<DescriptorRequest> descriptorQueue =
- new BlockingIteratorImpl<>();
-
- protected Iterator<DescriptorRequest> getDescriptorQueue() {
- return this.descriptorQueue;
- }
-
- private SortedSet<String> runningDirectories;
-
- private SortedMap<String, DirectoryDownloader> directoryAuthorities;
-
- private SortedMap<String, DirectoryDownloader> directoryMirrors;
-
- private boolean downloadConsensusFromAllAuthorities;
-
- private boolean includeCurrentReferencedVotes;
-
- private long connectTimeoutMillis;
-
- private long readTimeoutMillis;
-
- private long globalTimeoutMillis;
-
- private boolean failUnrecognizedDescriptorLines;
-
- protected DownloadCoordinatorImpl(
- SortedMap<String, DirectoryDownloader> directoryAuthorities,
- SortedMap<String, DirectoryDownloader> directoryMirrors,
- boolean downloadConsensus,
- boolean downloadConsensusFromAllAuthorities,
- Set<String> downloadVotes, boolean includeCurrentReferencedVotes,
- long connectTimeoutMillis, long readTimeoutMillis,
- long globalTimeoutMillis, boolean failUnrecognizedDescriptorLines) {
- this.directoryAuthorities = directoryAuthorities;
- this.directoryMirrors = directoryMirrors;
- this.runningDirectories = new TreeSet<>();
- this.runningDirectories.addAll(directoryAuthorities.keySet());
- this.runningDirectories.addAll(directoryMirrors.keySet());
- this.missingConsensus = downloadConsensus;
- this.downloadConsensusFromAllAuthorities =
- downloadConsensusFromAllAuthorities;
- this.missingVotes = downloadVotes;
- this.includeCurrentReferencedVotes = includeCurrentReferencedVotes;
- this.connectTimeoutMillis = connectTimeoutMillis;
- this.readTimeoutMillis = readTimeoutMillis;
- this.globalTimeoutMillis = globalTimeoutMillis;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
- if (this.directoryMirrors.isEmpty()
- && this.directoryAuthorities.isEmpty()) {
- this.descriptorQueue.setOutOfDescriptors();
- log.warn("There were no directories configured. Nothing to download.");
- } else {
- GlobalTimer globalTimer = new GlobalTimer(this.globalTimeoutMillis,
- this);
- this.globalTimerThread = new Thread(globalTimer);
- this.globalTimerThread.start();
- for (DirectoryDownloader directoryMirror
- : this.directoryMirrors.values()) {
- directoryMirror.setDownloadCoordinator(this);
- directoryMirror.setConnectTimeout(this.connectTimeoutMillis);
- directoryMirror.setReadTimeout(this.readTimeoutMillis);
- directoryMirror.setFailUnrecognizedDescriptorLines(
- this.failUnrecognizedDescriptorLines);
- new Thread(directoryMirror).start();
- }
- for (DirectoryDownloader directoryAuthority
- : this.directoryAuthorities.values()) {
- directoryAuthority.setDownloadCoordinator(this);
- directoryAuthority.setConnectTimeout(this.connectTimeoutMillis);
- directoryAuthority.setReadTimeout(this.readTimeoutMillis);
- directoryAuthority.setFailUnrecognizedDescriptorLines(
- this.failUnrecognizedDescriptorLines);
- new Thread(directoryAuthority).start();
- }
- }
- }
-
- /* Interrupt all downloads if the total download time exceeds a given
- * time. */
- private Thread globalTimerThread;
-
- private static class GlobalTimer implements Runnable {
-
- private long timeoutMillis;
-
- private DownloadCoordinatorImpl downloadCoordinator;
-
- private GlobalTimer(long timeoutMillis,
- DownloadCoordinatorImpl downloadCoordinator) {
- this.timeoutMillis = timeoutMillis;
- this.downloadCoordinator = downloadCoordinator;
- }
-
- public void run() {
- long started = System.currentTimeMillis();
- long sleep;
- while ((sleep = started + this.timeoutMillis
- - System.currentTimeMillis()) > 0L) {
- try {
- Thread.sleep(sleep);
- } catch (InterruptedException e) {
- return;
- }
- }
- this.downloadCoordinator.interruptAllDownloads();
- }
- }
-
- /* Are we missing the consensus, and should the next directory that
- * hasn't tried downloading it before attempt to download it? */
- private boolean missingConsensus = false;
-
- /* Which directories are currently attempting to download the
- * consensus? */
- private Set<String> requestingConsensuses = new HashSet<>();
-
- /* Which directories have attempted to download the consensus so far,
- * including those directories that are currently attempting it? */
- private Set<String> requestedConsensuses = new HashSet<>();
-
- /* Which votes are we currently missing? */
- private Set<String> missingVotes = new HashSet<>();
-
- /* Which vote (map value) is a given directory (map key) currently
- * attempting to download? */
- private Map<String, String> requestingVotes = new HashMap<>();
-
- /* Which votes (map value) has a given directory (map key) attempted or
- * is currently attempting to download? */
- private Map<String, Set<String>> requestedVotes = new HashMap<>();
-
- private boolean hasFinishedDownloading = false;
-
- /* Look up what request a directory should make next. If there is
- * nothing to do right now, but maybe later, block the caller. If
- * we're done downloading, return null to notify the caller. */
- @Override
- public synchronized DescriptorRequestImpl createRequest(
- String nickname) {
- while (!this.hasFinishedDownloading) {
- DescriptorRequestImpl request = new DescriptorRequestImpl();
- request.setDirectoryNickname(nickname);
- if ((this.missingConsensus
- || (this.downloadConsensusFromAllAuthorities
- && this.directoryAuthorities.containsKey(nickname)))
- && !this.requestedConsensuses.contains(nickname)) {
- if (!this.downloadConsensusFromAllAuthorities) {
- this.missingConsensus = false;
- }
- this.requestingConsensuses.add(nickname);
- this.requestedConsensuses.add(nickname);
- request.setRequestedResource(
- "/tor/status-vote/current/consensus.z");
- request.setDescriptorType("consensus");
- return request;
- }
- if (!this.missingVotes.isEmpty()
- && this.directoryAuthorities.containsKey(nickname)) {
- String requestingVote = null;
- for (String missingVote : this.missingVotes) {
- if (!this.requestedVotes.containsKey(nickname)
- || !this.requestedVotes.get(nickname).contains(
- missingVote)) {
- requestingVote = missingVote;
- }
- }
- if (requestingVote != null) {
- this.requestingVotes.put(nickname, requestingVote);
- if (!this.requestedVotes.containsKey(nickname)) {
- this.requestedVotes.put(nickname, new HashSet<String>());
- }
- this.requestedVotes.get(nickname).add(requestingVote);
- this.missingVotes.remove(requestingVote);
- request.setRequestedResource("/tor/status-vote/current/"
- + requestingVote + ".z");
- request.setDescriptorType("vote");
- return request;
- }
- }
- /* TODO Add server descriptors and extra-info descriptors later. */
- try {
- this.wait();
- } catch (InterruptedException e) {
- /* TODO What shall we do? */
- }
- }
- return null;
- }
-
- /* Deliver a response which may either contain one or more descriptors
- * or a failure response code. Update the lists of missing descriptors,
- * decide if there are more descriptors to download, and wake up any
- * waiting downloader threads. */
- @Override
- public synchronized void deliverResponse(
- DescriptorRequestImpl response) {
- String nickname = response.getDirectoryNickname();
- if (response.getException() != null) {
- this.runningDirectories.remove(nickname);
- }
- switch (response.getDescriptorType()) {
- case "consensus":
- this.requestingConsensuses.remove(nickname);
- if (response.getResponseCode() == 200
- && response.getDescriptors() != null) {
- if (this.includeCurrentReferencedVotes) {
- /* TODO Only add votes if the consensus is not older than one
- * hour. Or does that make no sense? */
- for (Descriptor parsedDescriptor
- : response.getDescriptors()) {
- if (!(parsedDescriptor
- instanceof RelayNetworkStatusConsensus)) {
- continue;
- }
- RelayNetworkStatusConsensus parsedConsensus =
- (RelayNetworkStatusConsensus) parsedDescriptor;
- for (DirSourceEntry dirSource
- : parsedConsensus.getDirSourceEntries().values()) {
- String identity = dirSource.getIdentity();
- if (!this.missingVotes.contains(identity)) {
- boolean alreadyRequested = false;
- for (Set<String> requestedBefore
- : this.requestedVotes.values()) {
- if (requestedBefore.contains(identity)) {
- alreadyRequested = true;
- break;
- }
- }
- if (!alreadyRequested) {
- this.missingVotes.add(identity);
- }
- }
- }
- }
- /* TODO Later, add referenced server descriptors. */
- }
- } else {
- this.missingConsensus = true;
- }
- break;
- case "vote":
- String requestedVote = requestingVotes.remove(nickname);
- if (response.getResponseCode() != 200) {
- this.missingVotes.add(requestedVote);
- }
- break;
- default:
- /* nothing to be done */
- }
- if (response.getRequestEnd() != 0L) {
- this.descriptorQueue.add(response);
- }
- boolean doneDownloading = true;
- if ((this.missingConsensus
- || this.downloadConsensusFromAllAuthorities)
- && (!this.requestedConsensuses.containsAll(
- this.runningDirectories)
- || !this.requestingConsensuses.isEmpty())) {
- doneDownloading = false;
- }
- if (!this.requestingVotes.isEmpty()) {
- doneDownloading = false;
- } else if (!this.missingVotes.isEmpty()) {
- if (!this.requestedVotes.keySet().containsAll(
- this.runningDirectories)) {
- doneDownloading = false;
- } else {
- for (String missingVote : this.missingVotes) {
- for (String runningDirectory : this.runningDirectories) {
- Set<String> reqVotes = this.requestedVotes.get(
- runningDirectory);
- if (!reqVotes.contains(missingVote)) {
- doneDownloading = false;
- }
- }
- }
- }
- }
- if (doneDownloading) {
- this.hasFinishedDownloading = true;
- this.globalTimerThread.interrupt();
- this.descriptorQueue.setOutOfDescriptors();
- }
- /* Wake up all waiting downloader threads. Maybe they can now
- * download something, or they'll realize we're done downloading. */
- this.notifyAll();
- }
-
- private synchronized void interruptAllDownloads() {
- this.hasFinishedDownloading = true;
- this.notifyAll();
- }
-}
-
diff --git a/src/main/java/org/torproject/descriptor/impl/ExitListEntryImpl.java b/src/main/java/org/torproject/descriptor/impl/ExitListEntryImpl.java
index c0d8b52..06b6a96 100644
--- a/src/main/java/org/torproject/descriptor/impl/ExitListEntryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/ExitListEntryImpl.java
@@ -5,7 +5,6 @@ package org.torproject.descriptor.impl;
import org.torproject.descriptor.DescriptorParseException;
import org.torproject.descriptor.ExitList;
-import org.torproject.descriptor.ExitListEntry;
import java.util.ArrayList;
import java.util.HashMap;
@@ -15,12 +14,10 @@ import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;
-public class ExitListEntryImpl implements ExitListEntry, ExitList.Entry {
+public class ExitListEntryImpl implements ExitList.Entry {
private String exitListEntryString;
- private boolean failUnrecognizedDescriptorLines;
-
private List<String> unrecognizedLines;
protected List<String> getAndClearUnrecognizedLines() {
@@ -29,37 +26,9 @@ public class ExitListEntryImpl implements ExitListEntry, ExitList.Entry {
return lines;
}
- @Deprecated
- private ExitListEntryImpl(String fingerprint, long publishedMillis,
- long lastStatusMillis, String exitAddress, long scanMillis) {
- this.fingerprint = fingerprint;
- this.publishedMillis = publishedMillis;
- this.lastStatusMillis = lastStatusMillis;
- this.exitAddresses.put(exitAddress, scanMillis);
- }
-
- @Deprecated
- List<ExitListEntry> oldEntries() {
- List<ExitListEntry> result = new ArrayList<>();
- if (this.exitAddresses.size() > 1) {
- for (Map.Entry<String, Long> entry
- : this.exitAddresses.entrySet()) {
- result.add(new ExitListEntryImpl(this.fingerprint,
- this.publishedMillis, this.lastStatusMillis, entry.getKey(),
- entry.getValue()));
- }
- } else {
- result.add(this);
- }
- return result;
- }
-
- protected ExitListEntryImpl(String exitListEntryString,
- boolean failUnrecognizedDescriptorLines)
+ protected ExitListEntryImpl(String exitListEntryString)
throws DescriptorParseException {
this.exitListEntryString = exitListEntryString;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
this.initializeKeywords();
this.parseExitListEntry();
this.checkAndClearKeywords();
@@ -114,15 +83,10 @@ public class ExitListEntryImpl implements ExitListEntry, ExitList.Entry {
this.parseExitAddressLine(line, parts);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in exit list entry.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -192,34 +156,11 @@ public class ExitListEntryImpl implements ExitListEntry, ExitList.Entry {
return this.lastStatusMillis;
}
- private String exitAddress;
-
- @Override
- public String getExitAddress() {
- if (null == exitAddress) {
- Map.Entry<String, Long> randomEntry =
- this.exitAddresses.entrySet().iterator().next();
- this.exitAddress = randomEntry.getKey();
- this.scanMillis = randomEntry.getValue();
- }
- return this.exitAddress;
- }
-
private Map<String, Long> exitAddresses = new HashMap<>();
@Override
public Map<String, Long> getExitAddresses() {
return new HashMap<>(this.exitAddresses);
}
-
- private long scanMillis;
-
- @Override
- public long getScanMillis() {
- if (null == exitAddress) {
- getExitAddress();
- }
- return scanMillis;
- }
}
diff --git a/src/main/java/org/torproject/descriptor/impl/ExitListImpl.java b/src/main/java/org/torproject/descriptor/impl/ExitListImpl.java
index d16856a..d67ccd9 100644
--- a/src/main/java/org/torproject/descriptor/impl/ExitListImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/ExitListImpl.java
@@ -5,7 +5,6 @@ package org.torproject.descriptor.impl;
import org.torproject.descriptor.DescriptorParseException;
import org.torproject.descriptor.ExitList;
-import org.torproject.descriptor.ExitListEntry;
import java.io.File;
import java.text.ParseException;
@@ -20,10 +19,9 @@ import java.util.TimeZone;
public class ExitListImpl extends DescriptorImpl implements ExitList {
protected ExitListImpl(byte[] rawDescriptorBytes, File descriptorfile,
- String fileName, boolean failUnrecognizedDescriptorLines)
- throws DescriptorParseException {
+ String fileName) throws DescriptorParseException {
super(rawDescriptorBytes, new int[] { 0, rawDescriptorBytes.length },
- descriptorfile, failUnrecognizedDescriptorLines, false);
+ descriptorfile, false);
this.splitAndParseExitListEntries();
this.setPublishedMillisFromFileName(fileName);
}
@@ -88,14 +86,8 @@ public class ExitListImpl extends DescriptorImpl implements ExitList {
sb.append(line).append(ExitList.EOL);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in exit list.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
}
}
@@ -106,9 +98,8 @@ public class ExitListImpl extends DescriptorImpl implements ExitList {
protected void parseExitListEntry(String exitListEntryString)
throws DescriptorParseException {
ExitListEntryImpl exitListEntry = new ExitListEntryImpl(
- exitListEntryString, this.failUnrecognizedDescriptorLines);
+ exitListEntryString);
this.exitListEntries.add(exitListEntry);
- this.oldExitListEntries.addAll(exitListEntry.oldEntries());
List<String> unrecognizedExitListEntryLines = exitListEntry
.getAndClearUnrecognizedLines();
if (unrecognizedExitListEntryLines != null) {
@@ -126,13 +117,7 @@ public class ExitListImpl extends DescriptorImpl implements ExitList {
return this.downloadedMillis;
}
- private Set<ExitListEntry> oldExitListEntries = new HashSet<>();
-
- @Deprecated
- @Override
- public Set<ExitListEntry> getExitListEntries() {
- return new HashSet<>(this.oldExitListEntries);
- }
+ private Set<ExitList.Entry> oldExitListEntries = new HashSet<>();
private Set<ExitList.Entry> exitListEntries = new HashSet<>();
diff --git a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
index 32a4dcc..3f84902 100644
--- a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
@@ -35,10 +35,9 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
Key.PADDING_COUNTS);
protected ExtraInfoDescriptorImpl(byte[] descriptorBytes,
- int[] offsetAndLimit, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(descriptorBytes, offsetAndLimit, descriptorFile,
- failUnrecognizedDescriptorLines, false);
+ int[] offsetAndLimit, File descriptorFile)
+ throws DescriptorParseException {
+ super(descriptorBytes, offsetAndLimit, descriptorFile, false);
this.parseDescriptorBytes();
this.checkExactlyOnceKeys(exactlyOnceKeys);
Set<Key> dirreqStatsKeys = EnumSet.of(
@@ -260,16 +259,10 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
this.parseIdentityEd25519CryptoBlock(cryptoString);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized crypto "
- + "block '" + cryptoString + "' in extra-info "
- + "descriptor.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.addAll(cryptoLines);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.addAll(cryptoLines);
}
cryptoLines = null;
nextCrypto = Key.EMPTY;
@@ -279,15 +272,10 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
cryptoLines.add(line);
} else {
ParseHelper.parseKeyword(line, partsNoOpt[0]);
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in extra-info descriptor.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -833,16 +821,6 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
this.setDigestSha256Base64(partsNoOpt[1]);
}
- @Override
- public String getExtraInfoDigest() {
- return this.getDigestSha1Hex();
- }
-
- @Override
- public String getExtraInfoDigestSha256() {
- return this.getDigestSha256Base64();
- }
-
private String nickname;
@Override
@@ -881,11 +859,6 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
private String geoipDbDigest;
@Override
- public String getGeoipDbDigest() {
- return this.getGeoipDbDigestSha1Hex();
- }
-
- @Override
public String getGeoipDbDigestSha1Hex() {
return this.geoipDbDigest;
}
@@ -893,11 +866,6 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl
private String geoip6DbDigest;
@Override
- public String getGeoip6DbDigest() {
- return this.getGeoip6DbDigestSha1Hex();
- }
-
- @Override
public String getGeoip6DbDigestSha1Hex() {
return this.geoip6DbDigest;
}
diff --git a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
index d9c284e..6acb845 100644
--- a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
@@ -19,10 +19,9 @@ public class MicrodescriptorImpl extends DescriptorImpl
implements Microdescriptor {
protected MicrodescriptorImpl(byte[] descriptorBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines)
+ File descriptorFile)
throws DescriptorParseException {
- super(descriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false);
+ super(descriptorBytes, offsetAndLength, descriptorFile, false);
this.parseDescriptorBytes();
this.calculateDigestSha256Base64(Key.ONION_KEY.keyword + NL);
this.checkExactlyOnceKeys(EnumSet.of(Key.ONION_KEY));
@@ -89,15 +88,10 @@ public class MicrodescriptorImpl extends DescriptorImpl
crypto.append(line).append(NL);
} else {
ParseHelper.parseKeyword(line, parts[0]);
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in microdescriptor.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -213,11 +207,6 @@ public class MicrodescriptorImpl extends DescriptorImpl
}
}
- @Override
- public String getMicrodescriptorDigest() {
- return this.getDigestSha256Base64();
- }
-
private String onionKey;
@Override
diff --git a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
index 64c688e..e6f7bad 100644
--- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
@@ -40,8 +40,6 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
private boolean microdescConsensus;
- private boolean failUnrecognizedDescriptorLines;
-
private List<String> unrecognizedLines;
protected List<String> getAndClearUnrecognizedLines() {
@@ -51,14 +49,12 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
}
protected NetworkStatusEntryImpl(DescriptorImpl parent, int offset,
- int length, boolean microdescConsensus,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
+ int length, boolean microdescConsensus)
+ throws DescriptorParseException {
this.parent = parent;
this.offset = offset;
this.length = length;
this.microdescConsensus = microdescConsensus;
- this.failUnrecognizedDescriptorLines =
- failUnrecognizedDescriptorLines;
this.parseStatusEntryBytes();
this.clearAtMostOnceKeys();
}
@@ -120,15 +116,10 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
this.parseIdLine(line, parts);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in status entry.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -344,11 +335,6 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
private Set<String> microdescriptorDigests;
@Override
- public Set<String> getMicrodescriptorDigests() {
- return this.getMicrodescriptorDigestsSha256Base64();
- }
-
- @Override
public Set<String> getMicrodescriptorDigestsSha256Base64() {
return this.microdescriptorDigests == null ? null
: new HashSet<>(this.microdescriptorDigests);
diff --git a/src/main/java/org/torproject/descriptor/impl/NetworkStatusImpl.java b/src/main/java/org/torproject/descriptor/impl/NetworkStatusImpl.java
index 5695353..b025c1b 100644
--- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusImpl.java
@@ -20,11 +20,10 @@ import java.util.TreeMap;
public abstract class NetworkStatusImpl extends DescriptorImpl {
protected NetworkStatusImpl(byte[] rawDescriptorBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines,
- boolean containsDirSourceEntries, boolean blankLinesAllowed)
- throws DescriptorParseException {
+ File descriptorFile, boolean containsDirSourceEntries,
+ boolean blankLinesAllowed) throws DescriptorParseException {
super(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, blankLinesAllowed);
+ blankLinesAllowed);
this.splitAndParseParts(containsDirSourceEntries);
}
@@ -102,7 +101,7 @@ public abstract class NetworkStatusImpl extends DescriptorImpl {
protected void parseDirSource(int offset, int length)
throws DescriptorParseException {
DirSourceEntryImpl dirSourceEntry = new DirSourceEntryImpl(
- this, offset, length, this.failUnrecognizedDescriptorLines);
+ this, offset, length);
this.dirSourceEntries.put(dirSourceEntry.getIdentity(),
dirSourceEntry);
List<String> unrecognizedDirSourceLines = dirSourceEntry
@@ -141,7 +140,7 @@ public abstract class NetworkStatusImpl extends DescriptorImpl {
protected void parseStatusEntry(int offset, int length)
throws DescriptorParseException {
NetworkStatusEntryImpl statusEntry = new NetworkStatusEntryImpl(
- this, offset, length, false, this.failUnrecognizedDescriptorLines);
+ this, offset, length, false);
this.statusEntries.put(statusEntry.getFingerprint(), statusEntry);
List<String> unrecognizedStatusEntryLines = statusEntry
.getAndClearUnrecognizedLines();
@@ -162,7 +161,7 @@ public abstract class NetworkStatusImpl extends DescriptorImpl {
this.signatures = new ArrayList<>();
}
DirectorySignatureImpl signature = new DirectorySignatureImpl(
- this, offset, length, failUnrecognizedDescriptorLines);
+ this, offset, length);
this.signatures.add(signature);
List<String> unrecognizedStatusEntryLines = signature
.getAndClearUnrecognizedLines();
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayDirectoryImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayDirectoryImpl.java
index 79ab862..a312f24 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayDirectoryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayDirectoryImpl.java
@@ -19,10 +19,8 @@ public class RelayDirectoryImpl extends DescriptorImpl
implements RelayDirectory {
protected RelayDirectoryImpl(byte[] directoryBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines)
- throws DescriptorParseException {
- super(directoryBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, true);
+ File descriptorFile) throws DescriptorParseException {
+ super(directoryBytes, offsetAndLength, descriptorFile, true);
this.splitAndParseParts();
this.calculateDigestSha1Hex(Key.SIGNED_DIRECTORY.keyword + NL,
NL + Key.DIRECTORY_SIGNATURE.keyword + SP);
@@ -144,15 +142,10 @@ public class RelayDirectoryImpl extends DescriptorImpl
if (crypto != null) {
crypto.append(line).append(NL);
} else {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in v1 directory.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -195,8 +188,7 @@ public class RelayDirectoryImpl extends DescriptorImpl
try {
ServerDescriptorImpl serverDescriptor =
new RelayServerDescriptorImpl(this.rawDescriptorBytes,
- new int[] { offset, length }, this.getDescriptorFile(),
- this.failUnrecognizedDescriptorLines);
+ new int[] { offset, length }, this.getDescriptorFile());
this.serverDescriptors.add(serverDescriptor);
} catch (DescriptorParseException e) {
this.serverDescriptorParseExceptions.add(e);
@@ -238,9 +230,6 @@ public class RelayDirectoryImpl extends DescriptorImpl
default:
if (crypto != null) {
crypto.append(line).append(NL);
- } else if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in v2 network status.");
} else {
if (this.unrecognizedLines == null) {
this.unrecognizedLines = new ArrayList<>();
@@ -449,9 +438,5 @@ public class RelayDirectoryImpl extends DescriptorImpl
return this.nickname;
}
- @Override
- public String getDirectoryDigest() {
- return this.getDigestSha1Hex();
- }
}
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayExtraInfoDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayExtraInfoDescriptorImpl.java
index 9644f90..7ed696e 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayExtraInfoDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayExtraInfoDescriptorImpl.java
@@ -12,10 +12,9 @@ public class RelayExtraInfoDescriptorImpl
extends ExtraInfoDescriptorImpl implements RelayExtraInfoDescriptor {
protected RelayExtraInfoDescriptorImpl(byte[] descriptorBytes,
- int[] offsetAndLimit, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(descriptorBytes, offsetAndLimit, descriptorFile,
- failUnrecognizedDescriptorLines);
+ int[] offsetAndLimit, File descriptorFile)
+ throws DescriptorParseException {
+ super(descriptorBytes, offsetAndLimit, descriptorFile);
this.calculateDigestSha1Hex(Key.EXTRA_INFO.keyword + SP,
NL + Key.ROUTER_SIGNATURE.keyword + NL);
this.calculateDigestSha256Base64(Key.EXTRA_INFO.keyword + SP,
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
index 0e853bb..7c6f7e0 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
@@ -23,10 +23,9 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
implements RelayNetworkStatusConsensus {
protected RelayNetworkStatusConsensusImpl(byte[] consensusBytes,
- int[] offsetAndLimit, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(consensusBytes, offsetAndLimit, descriptorFile,
- failUnrecognizedDescriptorLines, true, false);
+ int[] offsetAndLimit, File descriptorFile)
+ throws DescriptorParseException {
+ super(consensusBytes, offsetAndLimit, descriptorFile, true, false);
Set<Key> exactlyOnceKeys = EnumSet.of(
Key.VOTE_STATUS, Key.CONSENSUS_METHOD, Key.VALID_AFTER, Key.FRESH_UNTIL,
Key.VALID_UNTIL, Key.VOTING_DELAY, Key.KNOWN_FLAGS);
@@ -107,14 +106,8 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
this.parseSharedRandCurrentValueLine(line, parts);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in consensus.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
}
}
@@ -125,8 +118,7 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
protected void parseStatusEntry(int offset, int length)
throws DescriptorParseException {
NetworkStatusEntryImpl statusEntry = new NetworkStatusEntryImpl(this,
- offset, length, this.microdescConsensus,
- this.failUnrecognizedDescriptorLines);
+ offset, length, this.microdescConsensus);
this.statusEntries.put(statusEntry.getFingerprint(), statusEntry);
List<String> unrecognizedStatusEntryLines = statusEntry
.getAndClearUnrecognizedLines();
@@ -152,15 +144,10 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
this.parseBandwidthWeightsLine(line, parts);
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in consensus.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -345,11 +332,6 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
parts, 1);
}
- @Override
- public String getConsensusDigest() {
- return this.getDigestSha1Hex();
- }
-
private int networkStatusVersion;
@Override
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusImpl.java
index 8ebea2d..f77e903 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusImpl.java
@@ -22,8 +22,7 @@ public class RelayNetworkStatusImpl extends NetworkStatusImpl
protected RelayNetworkStatusImpl(byte[] statusBytes, int[] offsetAndLength,
File descriptorFile, boolean failUnrecognizedDescriptorLines)
throws DescriptorParseException {
- super(statusBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false, true);
+ super(statusBytes, offsetAndLength, descriptorFile, false, true);
Set<Key> exactlyOnceKeys = EnumSet.of(
Key.NETWORK_STATUS_VERSION, Key.DIR_SOURCE, Key.FINGERPRINT,
Key.CONTACT, Key.DIR_SIGNING_KEY, Key.PUBLISHED);
@@ -97,9 +96,6 @@ public class RelayNetworkStatusImpl extends NetworkStatusImpl
default:
if (crypto != null) {
crypto.append(line).append(NL);
- } else if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in v2 network status.");
} else {
if (this.unrecognizedLines == null) {
this.unrecognizedLines = new ArrayList<>();
@@ -149,9 +145,6 @@ public class RelayNetworkStatusImpl extends NetworkStatusImpl
default:
if (crypto != null) {
crypto.append(line).append(NL);
- } else if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in v2 network status.");
} else {
if (this.unrecognizedLines == null) {
this.unrecognizedLines = new ArrayList<>();
@@ -247,11 +240,6 @@ public class RelayNetworkStatusImpl extends NetworkStatusImpl
this.nickname = ParseHelper.parseNickname(line, parts[1]);
}
- @Override
- public String getStatusDigest() {
- return this.getDigestSha1Hex();
- }
-
private int networkStatusVersion;
@Override
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
index 93d6f12..df36b26 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
@@ -4,7 +4,6 @@
package org.torproject.descriptor.impl;
import org.torproject.descriptor.DescriptorParseException;
-import org.torproject.descriptor.DirectorySignature;
import org.torproject.descriptor.RelayNetworkStatusVote;
import java.io.File;
@@ -25,10 +24,9 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
implements RelayNetworkStatusVote {
protected RelayNetworkStatusVoteImpl(byte[] voteBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines)
+ File descriptorFile)
throws DescriptorParseException {
- super(voteBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false, false);
+ super(voteBytes, offsetAndLength, descriptorFile, false, false);
Set<Key> exactlyOnceKeys = EnumSet.of(
Key.VOTE_STATUS, Key.PUBLISHED, Key.VALID_AFTER, Key.FRESH_UNTIL,
Key.VALID_UNTIL, Key.VOTING_DELAY, Key.KNOWN_FLAGS, Key.DIR_SOURCE,
@@ -213,15 +211,10 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
if (crypto != null) {
crypto.append(line).append(NL);
} else {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in vote.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -588,15 +581,10 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
while (scanner.hasNext()) {
String line = scanner.next();
if (!line.equals(Key.DIRECTORY_FOOTER.keyword)) {
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in vote.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -748,21 +736,6 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
return this.dirKeyCertification;
}
- @Override
- public String getSigningKeyDigest() {
- String signingKeyDigest = null;
- if (this.signatures != null && !this.signatures.isEmpty()) {
- for (DirectorySignature signature : this.signatures) {
- if (DirectorySignatureImpl.DEFAULT_ALGORITHM.equals(
- signature.getAlgorithm())) {
- signingKeyDigest = signature.getSigningKeyDigestSha1Hex();
- break;
- }
- }
- }
- return signingKeyDigest;
- }
-
private int networkStatusVersion;
@Override
diff --git a/src/main/java/org/torproject/descriptor/impl/RelayServerDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/RelayServerDescriptorImpl.java
index 23e9152..fd2464b 100644
--- a/src/main/java/org/torproject/descriptor/impl/RelayServerDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/RelayServerDescriptorImpl.java
@@ -12,10 +12,9 @@ public class RelayServerDescriptorImpl extends ServerDescriptorImpl
implements RelayServerDescriptor {
protected RelayServerDescriptorImpl(byte[] descriptorBytes,
- int[] offsetAndLength, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
- super(descriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines);
+ int[] offsetAndLength, File descriptorFile)
+ throws DescriptorParseException {
+ super(descriptorBytes, offsetAndLength, descriptorFile);
this.calculateDigestSha1Hex(Key.ROUTER.keyword + SP,
NL + Key.ROUTER_SIGNATURE.keyword + NL);
this.calculateDigestSha256Base64(Key.ROUTER.keyword + SP,
diff --git a/src/main/java/org/torproject/descriptor/impl/ServerDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/ServerDescriptorImpl.java
index f434d84..80ed473 100644
--- a/src/main/java/org/torproject/descriptor/impl/ServerDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/ServerDescriptorImpl.java
@@ -36,10 +36,8 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
Key.ROUTER, Key.BANDWIDTH, Key.PUBLISHED);
protected ServerDescriptorImpl(byte[] descriptorBytes, int[] offsetAndLength,
- File descriptorFile, boolean failUnrecognizedDescriptorLines)
- throws DescriptorParseException {
- super(descriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines, false);
+ File descriptorFile) throws DescriptorParseException {
+ super(descriptorBytes, offsetAndLength, descriptorFile, false);
this.parseDescriptorBytes();
this.checkExactlyOnceKeys(exactlyOnce);
this.checkAtMostOnceKeys(atMostOnce);
@@ -210,15 +208,10 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
this.ntorOnionKeyCrosscert = cryptoString;
break;
default:
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized crypto "
- + "block '" + cryptoString + "' in server descriptor.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.addAll(cryptoLines);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.addAll(cryptoLines);
}
cryptoLines = null;
nextCrypto = Key.EMPTY;
@@ -229,15 +222,10 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
cryptoLines.add(line);
} else {
ParseHelper.parseKeyword(line, partsNoOpt[0]);
- if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized line '"
- + line + "' in server descriptor.");
- } else {
- if (this.unrecognizedLines == null) {
- this.unrecognizedLines = new ArrayList<>();
- }
- this.unrecognizedLines.add(line);
+ if (this.unrecognizedLines == null) {
+ this.unrecognizedLines = new ArrayList<>();
}
+ this.unrecognizedLines.add(line);
}
}
}
@@ -676,16 +664,6 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
this.setDigestSha256Base64(partsNoOpt[1]);
}
- @Override
- public String getServerDescriptorDigest() {
- return this.getDigestSha1Hex();
- }
-
- @Override
- public String getServerDescriptorDigestSha256() {
- return this.getDigestSha256Base64();
- }
-
private String nickname;
@Override
@@ -865,11 +843,6 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
private String extraInfoDigest;
@Override
- public String getExtraInfoDigest() {
- return this.getExtraInfoDigestSha1Hex();
- }
-
- @Override
public String getExtraInfoDigestSha1Hex() {
return this.extraInfoDigest;
}
@@ -877,11 +850,6 @@ public abstract class ServerDescriptorImpl extends DescriptorImpl
private String extraInfoDigestSha256;
@Override
- public String getExtraInfoDigestSha256() {
- return this.getExtraInfoDigestSha256Base64();
- }
-
- @Override
public String getExtraInfoDigestSha256Base64() {
return this.extraInfoDigestSha256;
}
diff --git a/src/main/java/org/torproject/descriptor/impl/TorperfResultImpl.java b/src/main/java/org/torproject/descriptor/impl/TorperfResultImpl.java
index 1ff0fe3..408b08c 100644
--- a/src/main/java/org/torproject/descriptor/impl/TorperfResultImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/TorperfResultImpl.java
@@ -22,8 +22,8 @@ public class TorperfResultImpl extends DescriptorImpl
implements TorperfResult {
protected static List<Descriptor> parseTorperfResults(
- byte[] rawDescriptorBytes, File descriptorFile,
- boolean failUnrecognizedDescriptorLines) throws DescriptorParseException {
+ byte[] rawDescriptorBytes, File descriptorFile)
+ throws DescriptorParseException {
if (rawDescriptorBytes.length == 0) {
throw new DescriptorParseException("Descriptor is empty.");
}
@@ -50,18 +50,17 @@ public class TorperfResultImpl extends DescriptorImpl
/* XXX21932 */
parsedDescriptors.add(new TorperfResultImpl(
(typeAnnotation + line).getBytes(StandardCharsets.UTF_8),
- descriptorFile, failUnrecognizedDescriptorLines));
+ descriptorFile));
typeAnnotation = "";
}
}
return parsedDescriptors;
}
- protected TorperfResultImpl(byte[] rawDescriptorBytes, File descriptorFile,
- boolean failUnrecognizedDescriptorLines)
+ protected TorperfResultImpl(byte[] rawDescriptorBytes, File descriptorFile)
throws DescriptorParseException {
super(rawDescriptorBytes, new int[] { 0, rawDescriptorBytes.length },
- descriptorFile, failUnrecognizedDescriptorLines, false);
+ descriptorFile, false);
this.parseTorperfResultLine();
}
@@ -173,9 +172,6 @@ public class TorperfResultImpl extends DescriptorImpl
default:
if (key.startsWith("DATAPERC")) {
this.parseDataPercentile(value, keyValue, line);
- } else if (this.failUnrecognizedDescriptorLines) {
- throw new DescriptorParseException("Unrecognized key '" + key
- + "' in line '" + line + "'.");
} else {
if (this.unrecognizedKeys == null) {
this.unrecognizedKeys = new TreeMap<>();
diff --git a/src/main/java/org/torproject/descriptor/impl/UnparseableDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/UnparseableDescriptorImpl.java
index 4a0e772..7174621 100644
--- a/src/main/java/org/torproject/descriptor/impl/UnparseableDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/UnparseableDescriptorImpl.java
@@ -14,10 +14,8 @@ public class UnparseableDescriptorImpl extends DescriptorImpl
protected UnparseableDescriptorImpl(byte[] rawDescriptorBytes,
int[] offsetAndLength, File descriptorFile,
- boolean failUnrecognizedDescriptorLines,
DescriptorParseException descriptorParseException) {
- super(rawDescriptorBytes, offsetAndLength, descriptorFile,
- failUnrecognizedDescriptorLines);
+ super(rawDescriptorBytes, offsetAndLength, descriptorFile);
this.descriptorParseException = descriptorParseException;
}
diff --git a/src/test/java/org/torproject/descriptor/DummyDownloaderImplementation.java b/src/test/java/org/torproject/descriptor/DummyDownloaderImplementation.java
deleted file mode 100644
index dce3372..0000000
--- a/src/test/java/org/torproject/descriptor/DummyDownloaderImplementation.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Copyright 2016--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor;
-
-import org.torproject.descriptor.impl.DescriptorDownloaderImpl;
-
-class DummyDownloaderImplementation extends DescriptorDownloaderImpl {
-
- static int count;
-
- public DummyDownloaderImplementation() {
- count++;
- }
-}
diff --git a/src/test/java/org/torproject/descriptor/impl/DescriptorCollectorImplTest.java b/src/test/java/org/torproject/descriptor/impl/DescriptorCollectorImplTest.java
deleted file mode 100644
index c2f9674..0000000
--- a/src/test/java/org/torproject/descriptor/impl/DescriptorCollectorImplTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright 2015--2017 The Tor Project
- * See LICENSE for licensing information */
-
-package org.torproject.descriptor.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-import java.util.SortedMap;
-
-public class DescriptorCollectorImplTest {
-
- private static final String REMOTE_DIRECTORY_CONSENSUSES =
- "/recent/relay-descriptors/consensuses/";
-
- @Test
- public void testOneFile() {
- String remoteFilename = "2015-05-24-12-00-00-consensus";
- String directoryListing = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/unknown.gif\" alt=\"[ ]\"></td><td>"
- + "<a href=\"" + remoteFilename + "\">"
- + "2015-05-24-12-00-00-consensus</a></td>"
- + "<td align=\"right\">2015-05-24 12:08 </td>"
- + "<td align=\"right\">1.5M</td><td> </td></tr>";
- SortedMap<String, Long> remoteFiles =
- new DescriptorCollectorImpl().parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNotNull(remoteFiles);
- assertSame(1, remoteFiles.size());
- assertEquals(REMOTE_DIRECTORY_CONSENSUSES + remoteFilename,
- remoteFiles.firstKey());
- assertEquals((Long) 1432469280000L,
- remoteFiles.get(remoteFiles.firstKey()));
- }
-
- @Test
- public void testSameFileTwoTimestampsLastWins() {
- String remoteFilename = "2015-05-24-12-00-00-consensus";
- String firstTimestamp = "2015-05-24 12:04";
- String secondTimestamp = "2015-05-24 12:08";
- String lineFormat = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/unknown.gif\" alt=\"[ ]\"></td><td>"
- + "<a href=\"%s\">2015-05-24-12-00-00-consensus</a></td>"
- + "<td align=\"right\">%s </td>"
- + "<td align=\"right\">1.5M</td><td> </td></tr>\n";
- String directoryListing = String.format(lineFormat + lineFormat,
- remoteFilename, firstTimestamp, remoteFilename, secondTimestamp);
- SortedMap<String, Long> remoteFiles =
- new DescriptorCollectorImpl().parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNotNull(remoteFiles);
- assertSame(1, remoteFiles.size());
- assertEquals(REMOTE_DIRECTORY_CONSENSUSES + remoteFilename,
- remoteFiles.firstKey());
- assertEquals((Long) 1432469280000L,
- remoteFiles.get(remoteFiles.firstKey()));
- }
-
- @Test
- public void testSubDirectoryOnly() {
- String directoryListing = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/folder.gif\" alt=\"[DIR]\"></td><td>"
- + "<a href=\"subdir/\">subdir/</a></td>"
- + "<td align=\"right\">2015-05-27 14:07 </td>"
- + "<td align=\"right\"> - </td><td> </td></tr>";
- DescriptorCollectorImpl collector = new DescriptorCollectorImpl();
- SortedMap<String, Long> remoteFiles = collector.parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNotNull(remoteFiles);
- assertTrue(remoteFiles.isEmpty());
- }
-
- @Test
- public void testParentDirectoryOnly() {
- String directoryListing = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/back.gif\" alt=\"[DIR]\"></td><td>"
- + "<a href=\"/recent/relay-descriptors/\">Parent Directory</a>"
- + "</td><td> </td><td align=\"right\"> - </td>"
- + "<td> </td></tr>";
- DescriptorCollectorImpl collector = new DescriptorCollectorImpl();
- SortedMap<String, Long> remoteFiles = collector.parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNotNull(remoteFiles);
- assertTrue(remoteFiles.isEmpty());
- }
-
- @Test
- public void testUnexpectedDateFormat() {
- String directoryListing = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/unknown.gif\" alt=\"[ ]\"></td><td>"
- + "<a href=\"2015-05-24-12-00-00-consensus\">"
- + "2015-05-24-12-00-00-consensus</a></td>"
- + "<td align=\"right\">24-May-2015 12:08 </td>"
- + "<td align=\"right\">1.5M</td><td> </td></tr>";
- SortedMap<String, Long> remoteFiles =
- new DescriptorCollectorImpl().parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNotNull(remoteFiles);
- assertTrue(remoteFiles.isEmpty());
- }
-
- @Test
- public void testInvalidDate() {
- String directoryListing = "<tr><td valign=\"top\">"
- + "<img src=\"/icons/unknown.gif\" alt=\"[ ]\"></td><td>"
- + "<a href=\"2015-05-24-12-00-00-consensus\">"
- + "2015-05-24-12-00-00-consensus</a></td>"
- + "<td align=\"right\">2015-05-34 12:08 </td>"
- + "<td align=\"right\">1.5M</td><td> </td></tr>";
- SortedMap<String, Long> remoteFiles =
- new DescriptorCollectorImpl().parseDirectoryListing(
- REMOTE_DIRECTORY_CONSENSUSES, directoryListing);
- assertNull(remoteFiles);
- }
-}
-
More information about the tor-commits
mailing list