commit 285be4447deb0bd35e28dd9aab74567c1c6541b8 Author: Karsten Loesing karsten.loesing@gmx.net Date: Wed Oct 10 15:48:12 2018 +0200
Add graph with total cw across bwauths.
Implements #25459. --- CHANGELOG.md | 7 + build.xml | 11 + src/main/R/rserver/graphs.R | 32 +++ .../metrics/stats/collectdescs/Main.java | 1 + .../metrics/stats/totalcw/Configuration.java | 18 ++ .../torproject/metrics/stats/totalcw/Database.java | 184 ++++++++++++++++ .../org/torproject/metrics/stats/totalcw/Main.java | 79 +++++++ .../metrics/stats/totalcw/OutputLine.java | 41 ++++ .../torproject/metrics/stats/totalcw/Parser.java | 62 ++++++ .../totalcw/TotalcwRelayNetworkStatusVote.java | 50 +++++ .../torproject/metrics/stats/totalcw/Writer.java | 36 +++ src/main/resources/web.xml | 4 + src/main/resources/web/json/categories.json | 1 + src/main/resources/web/json/metrics.json | 11 + .../resources/web/jsps/reproducible-metrics.jsp | 36 ++- src/main/resources/web/jsps/stats.jsp | 20 ++ src/main/sql/totalcw/init-totalcw.sql | 74 +++++++ .../totalcw/TotalcwRelayNetworkStatusVoteTest.java | 126 +++++++++++ ...E-55A38ED50848BE1F13C6A35C3CA637B0D962C2EF.part | 239 ++++++++++++++++++++ ...1-049AB3179B12DACC391F06A10C2A8904E4339D33.part | 239 ++++++++++++++++++++ ...6-2669AD153408F88E416CE6206D1A75EC3324A2F4.part | 241 +++++++++++++++++++++ ...7-38C6A19F78948B689345EE41D7119D76246C4D3E.part | 239 ++++++++++++++++++++ 22 files changed, 1747 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md index 7890d2d..f604ff9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# Changes in version 1.3.0 - 2018-??-?? + + * Medium changes + - Start downloading and processing votes. + - Add Apache Commons Math 3.6.1 as dependency. + + # Changes in version 1.2.0 - 2018-08-25
* Medium changes diff --git a/build.xml b/build.xml index e5a9794..3614d78 100644 --- a/build.xml +++ b/build.xml @@ -45,6 +45,7 @@ <patternset id="common" > <include name="commons-codec-1.10.jar"/> <include name="commons-lang3-3.5.jar"/> + <include name="commons-math3-3.6.1.jar"/> <include name="jackson-annotations-2.8.6.jar"/> <include name="jackson-core-2.8.6.jar"/> <include name="jackson-databind-2.8.6.jar"/> @@ -319,6 +320,7 @@ <antcall target="clients" /> <antcall target="ipv6servers" /> <antcall target="webstats" /> + <antcall target="totalcw" /> <antcall target="make-data-available" /> </target>
@@ -470,6 +472,14 @@ </antcall> </target>
+ <target name="totalcw" > + <property name="module.name" value="totalcw" /> + <antcall target="run-java" > + <param name="module.main" + value="org.torproject.metrics.stats.totalcw.Main" /> + </antcall> + </target> + <!-- The run-rserver target documents a working option of configuring an R server for running metrics-web. @@ -506,6 +516,7 @@ includes="clients*.csv userstats-combined.csv" /> <fileset dir="${modulebase}/ipv6servers/stats" includes="ipv6servers.csv" /> <fileset dir="${modulebase}/webstats/stats" includes="webstats.csv" /> + <fileset dir="${modulebase}/totalcw/stats" includes="totalcw.csv" /> </copy> <copy todir="${rdatadir}" > <fileset dir="${modulebase}/clients/RData" includes="*.RData" /> diff --git a/src/main/R/rserver/graphs.R b/src/main/R/rserver/graphs.R index 66a1414..12915fa 100644 --- a/src/main/R/rserver/graphs.R +++ b/src/main/R/rserver/graphs.R @@ -1572,3 +1572,35 @@ write_advbw_ipv6 <- function(start_p = NULL, end_p = NULL, path_p) { write.csv(path_p, quote = FALSE, row.names = FALSE, na = "") }
+prepare_totalcw <- function(start_p, end_p) { + read.csv(paste(stats_dir, "totalcw.csv", sep = ""), + colClasses = c("valid_after_date" = "Date")) %>% + filter(if (!is.null(start_p)) + valid_after_date >= as.Date(start_p) else TRUE) %>% + filter(if (!is.null(end_p)) + valid_after_date <= as.Date(end_p) else TRUE) +} + +plot_totalcw <- function(start_p, end_p, path_p) { + prepare_totalcw(start_p, end_p) %>% + complete(valid_after_date = full_seq(valid_after_date, period = 1), + nesting(nickname)) %>% + ggplot(aes(x = valid_after_date, y = measured_sum_avg, + colour = nickname)) + + geom_line(na.rm = TRUE) + + scale_x_date(name = "", breaks = custom_breaks, + labels = custom_labels, minor_breaks = custom_minor_breaks) + + scale_y_continuous(name = "", labels = formatter, limits = c(0, NA)) + + scale_colour_hue(name = "") + + ggtitle("Total consensus weights across bandwidth authorities") + + labs(caption = copyright_notice) + ggsave(filename = path_p, width = 8, height = 5, dpi = 150) +} + +write_totalcw <- function(start_p = NULL, end_p = NULL, path_p) { + prepare_totalcw(start_p, end_p) %>% + rename(date = valid_after_date, totalcw = measured_sum_avg) %>% + arrange(date, nickname) %>% + write.csv(path_p, quote = FALSE, row.names = FALSE, na = "") +} + diff --git a/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java b/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java index 4c64425..a9620f5 100644 --- a/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java +++ b/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java @@ -24,6 +24,7 @@ public class Main { "/recent/relay-descriptors/consensuses/", "/recent/relay-descriptors/extra-infos/", "/recent/relay-descriptors/server-descriptors/", + "/recent/relay-descriptors/votes/", "/recent/torperf/", "/recent/webstats/" }, 0L, new File("../../shared/in"), true); diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/Configuration.java b/src/main/java/org/torproject/metrics/stats/totalcw/Configuration.java new file mode 100644 index 0000000..a424f84 --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/Configuration.java @@ -0,0 +1,18 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +/** Configuration options parsed from Java properties with reasonable hard-coded + * defaults. */ +class Configuration { + static String descriptors = System.getProperty("totalcw.descriptors", + "../../shared/in/"); + static String database = System.getProperty("totalcw.database", + "jdbc:postgresql:totalcw"); + static String history = System.getProperty("totalcw.history", + "status/read-descriptors"); + static String output = System.getProperty("totalcw.output", + "stats/totalcw.csv"); +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/Database.java b/src/main/java/org/torproject/metrics/stats/totalcw/Database.java new file mode 100644 index 0000000..be4cad3 --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/Database.java @@ -0,0 +1,184 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Timestamp; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; + +/** Database wrapper to connect to the database, insert data, run the stored + * procedure for aggregating data, and query aggregated data as output. */ +class Database implements AutoCloseable { + + /** Database connection string. */ + private String jdbcString; + + /** Connection object for all interactions with the database. */ + private Connection connection; + + /** Prepared statement for finding out whether a given authority is already + * contained in the authority table. */ + private PreparedStatement psAuthoritySelect; + + /** Prepared statement for inserting an authority into the authority table. */ + private PreparedStatement psAuthorityInsert; + + /** Prepared statement for checking whether a vote has been inserted into the + * vote table before. */ + private PreparedStatement psVoteSelect; + + /** Prepared statement for inserting a vote into the vote table. */ + private PreparedStatement psVoteInsert; + + /** Create a new Database instance and prepare for inserting or querying + * data. */ + Database(String jdbcString) throws SQLException { + this.jdbcString = jdbcString; + this.connect(); + this.prepareStatements(); + } + + private void connect() throws SQLException { + this.connection = DriverManager.getConnection(this.jdbcString); + this.connection.setAutoCommit(false); + } + + private void prepareStatements() throws SQLException { + this.psAuthoritySelect = this.connection.prepareStatement( + "SELECT authority_id FROM authority " + + "WHERE nickname = ? AND identity_hex = ?"); + this.psAuthorityInsert = this.connection.prepareStatement( + "INSERT INTO authority (nickname, identity_hex) VALUES (?, ?)", + Statement.RETURN_GENERATED_KEYS); + this.psVoteSelect = this.connection.prepareStatement( + "SELECT EXISTS (SELECT 1 FROM vote " + + "WHERE valid_after = ? AND authority_id = ?)"); + this.psVoteInsert = this.connection.prepareStatement( + "INSERT INTO vote (valid_after, authority_id, measured_count, " + + "measured_sum, measured_mean, measured_min, measured_q1, " + + "measured_median, measured_q3, measured_max) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + Statement.RETURN_GENERATED_KEYS); + } + + /** Insert a parsed vote into the vote table. */ + void insertVote(TotalcwRelayNetworkStatusVote vote) throws SQLException { + if (null == vote) { + /* Nothing to insert. */ + return; + } + int authorityId = -1; + this.psAuthoritySelect.clearParameters(); + this.psAuthoritySelect.setString(1, vote.nickname); + this.psAuthoritySelect.setString(2, vote.identityHex); + try (ResultSet rs = this.psAuthoritySelect.executeQuery()) { + if (rs.next()) { + authorityId = rs.getInt(1); + } + } + if (authorityId < 0) { + this.psAuthorityInsert.clearParameters(); + this.psAuthorityInsert.setString(1, vote.nickname); + this.psAuthorityInsert.setString(2, vote.identityHex); + this.psAuthorityInsert.execute(); + try (ResultSet rs = this.psAuthorityInsert.getGeneratedKeys()) { + if (rs.next()) { + authorityId = rs.getInt(1); + } + } + if (authorityId < 0) { + throw new SQLException("Could not retrieve auto-generated key for new " + + "authority entry."); + } + } + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"), + Locale.US); + this.psVoteSelect.clearParameters(); + this.psVoteSelect.setTimestamp(1, + Timestamp.from(ZonedDateTime.of(vote.validAfter, + ZoneId.of("UTC")).toInstant()), calendar); + this.psVoteSelect.setInt(2, authorityId); + try (ResultSet rs = this.psVoteSelect.executeQuery()) { + if (rs.next()) { + if (rs.getBoolean(1)) { + /* Vote is already contained. */ + return; + } + } + } + int voteId = -1; + this.psVoteInsert.clearParameters(); + this.psVoteInsert.setTimestamp(1, + Timestamp.from(ZonedDateTime.of(vote.validAfter, + ZoneId.of("UTC")).toInstant()), calendar); + this.psVoteInsert.setInt(2, authorityId); + this.psVoteInsert.setLong(3, vote.measuredCount); + this.psVoteInsert.setLong(4, vote.measuredSum); + this.psVoteInsert.setLong(5, vote.measuredMean); + this.psVoteInsert.setLong(6, vote.measuredMin); + this.psVoteInsert.setLong(7, vote.measuredQ1); + this.psVoteInsert.setLong(8, vote.measuredMedian); + this.psVoteInsert.setLong(9, vote.measuredQ3); + this.psVoteInsert.setLong(10, vote.measuredMax); + this.psVoteInsert.execute(); + try (ResultSet rs = this.psVoteInsert.getGeneratedKeys()) { + if (rs.next()) { + voteId = rs.getInt(1); + } + } + if (voteId < 0) { + throw new SQLException("Could not retrieve auto-generated key for new " + + "vote entry."); + } + } + + /** Roll back any changes made in this execution. */ + void rollback() throws SQLException { + this.connection.rollback(); + } + + /** Commit all changes made in this execution. */ + void commit() throws SQLException { + this.connection.commit(); + } + + /** Query the totalcw view to obtain aggregated statistics. */ + Iterable<OutputLine> queryTotalcw() throws SQLException { + List<OutputLine> statistics = new ArrayList<>(); + Statement st = this.connection.createStatement(); + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"), + Locale.US); + String queryString = "SELECT " + OutputLine.columnHeadersDelimitedBy(", ") + + " FROM totalcw"; + try (ResultSet rs = st.executeQuery(queryString)) { + while (rs.next()) { + OutputLine outputLine = new OutputLine(); + outputLine.validAfterDate = rs.getDate( + OutputLine.Column.VALID_AFTER_DATE.name(), calendar).toLocalDate(); + outputLine.nickname = rs.getString(OutputLine.Column.NICKNAME.name()); + outputLine.measuredSumAvg = rs.getLong( + OutputLine.Column.MEASURED_SUM_AVG.name()); + statistics.add(outputLine); + } + } + return statistics; + } + + /** Release database connection. */ + public void close() throws SQLException { + this.connection.close(); + } +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/Main.java b/src/main/java/org/torproject/metrics/stats/totalcw/Main.java new file mode 100644 index 0000000..7c77160 --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/Main.java @@ -0,0 +1,79 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import org.torproject.descriptor.Descriptor; +import org.torproject.descriptor.DescriptorReader; +import org.torproject.descriptor.DescriptorSourceFactory; +import org.torproject.descriptor.RelayNetworkStatusVote; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.nio.file.Paths; +import java.sql.SQLException; +import java.util.Arrays; + +/** Main class of the totalcw module that imports bandwidth measurement + * statistics from votes into a database and exports aggregate statistics to a + * CSV file. */ +public class Main { + + private static Logger log = LoggerFactory.getLogger(Main.class); + + private static String[][] paths = { + {"recent", "relay-descriptors", "votes"}, + {"archive", "relay-descriptors", "votes"}}; + + /** Run the module. */ + public static void main(String[] args) throws Exception { + + log.info("Starting totalcw module."); + + log.info("Reading votes and inserting relevant parts into the database."); + DescriptorReader reader = DescriptorSourceFactory.createDescriptorReader(); + File historyFile = new File(Configuration.history); + reader.setHistoryFile(historyFile); + Parser parser = new Parser(); + try (Database database = new Database(Configuration.database)) { + try { + for (Descriptor descriptor : reader.readDescriptors( + Arrays.stream(paths).map((String[] path) + -> Paths.get(Configuration.descriptors, path).toFile()) + .toArray(File[]::new))) { + if (descriptor instanceof RelayNetworkStatusVote) { + database.insertVote(parser.parseRelayNetworkStatusVote( + (RelayNetworkStatusVote) descriptor)); + } else { + log.debug("Skipping unknown descriptor of type {}.", + descriptor.getClass()); + } + } + + log.info("Committing all updated parts in the database."); + database.commit(); + } catch (SQLException sqle) { + log.error("Cannot recover from SQL exception while inserting data. " + + "Rolling back and exiting.", sqle); + database.rollback(); + return; + } + reader.saveHistoryFile(historyFile); + + log.info("Querying aggregated statistics from the database."); + Iterable<OutputLine> output = database.queryTotalcw(); + log.info("Writing aggregated statistics to {}.", Configuration.output); + if (null != output) { + new Writer().write(Paths.get(Configuration.output), output); + } + + log.info("Terminating totalcw module."); + } catch (SQLException sqle) { + log.error("Cannot recover from SQL exception while querying. Not writing " + + "output file.", sqle); + } + } +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/OutputLine.java b/src/main/java/org/torproject/metrics/stats/totalcw/OutputLine.java new file mode 100644 index 0000000..450dbac --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/OutputLine.java @@ -0,0 +1,41 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.stream.Collectors; + +/** Data object holding all parts of an output line. */ +class OutputLine { + + /** Column names used in the database and in the first line of the output + * file. */ + enum Column { + VALID_AFTER_DATE, NICKNAME, MEASURED_SUM_AVG + } + + /** Column headers joined together with the given delimiter. */ + static String columnHeadersDelimitedBy(String delimiter) { + return Arrays.stream(Column.values()).map(c -> c.toString().toLowerCase()) + .collect(Collectors.joining(delimiter)); + } + + /** Date. */ + LocalDate validAfterDate; + + /** Server type, which can be "relay" or "bridge". */ + String nickname; + + /** Mean value of total measured bandwidths of all relays over the day. */ + Long measuredSumAvg; + + /** Format all fields in a single output line for inclusion in a CSV + * file. */ + @Override + public String toString() { + return String.format("%s,%s,%d", validAfterDate, nickname, measuredSumAvg); + } +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/Parser.java b/src/main/java/org/torproject/metrics/stats/totalcw/Parser.java new file mode 100644 index 0000000..155b6b0 --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/Parser.java @@ -0,0 +1,62 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import org.apache.commons.math3.stat.descriptive.rank.Percentile; +import org.torproject.descriptor.NetworkStatusEntry; +import org.torproject.descriptor.RelayNetworkStatusVote; + +import java.time.Instant; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** Parser that extracts bandwidth measurement statistics from votes and creates + * data objects for them. */ +class Parser { + + /** Parse and return a vote, but return <code>null</code> if the vote did not + * contain any bandwidth measurements. */ + TotalcwRelayNetworkStatusVote parseRelayNetworkStatusVote( + RelayNetworkStatusVote vote) { + List<Long> measuredBandwidths = new ArrayList<>(); + for (NetworkStatusEntry entry : vote.getStatusEntries().values()) { + if (entry.getMeasured() >= 0L) { + measuredBandwidths.add(entry.getMeasured()); + } + } + if (measuredBandwidths.isEmpty()) { + /* Return null, because we wouldn't want to add this vote to the database + * anyway. */ + return null; + } + TotalcwRelayNetworkStatusVote parsedVote + = new TotalcwRelayNetworkStatusVote(); + parsedVote.validAfter = Instant.ofEpochMilli(vote.getValidAfterMillis()) + .atZone(ZoneId.of("UTC")).toLocalDateTime(); + parsedVote.identityHex = vote.getIdentity(); + parsedVote.nickname = vote.getNickname(); + Collections.sort(measuredBandwidths); + long totalValue = 0L; + double[] values = new double[measuredBandwidths.size()]; + for (int i = 0; i < measuredBandwidths.size(); i++) { + values[i] = (double) measuredBandwidths.get(i); + totalValue += measuredBandwidths.get(i); + } + parsedVote.measuredCount = values.length; + parsedVote.measuredSum = totalValue; + parsedVote.measuredMean = totalValue / values.length; + parsedVote.measuredMin = (long) Math.floor(values[0]); + parsedVote.measuredMax = (long) Math.floor(values[values.length - 1]); + Percentile percentile = new Percentile().withEstimationType( + Percentile.EstimationType.R_7); + percentile.setData(values); + parsedVote.measuredQ1 = (long) Math.floor(percentile.evaluate(25.0)); + parsedVote.measuredMedian = (long) Math.floor(percentile.evaluate(50.0)); + parsedVote.measuredQ3 = (long) Math.floor(percentile.evaluate(75.0)); + return parsedVote; + } +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVote.java b/src/main/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVote.java new file mode 100644 index 0000000..c139cdc --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVote.java @@ -0,0 +1,50 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import java.time.LocalDateTime; + +/** Data object holding all relevant parts parsed from a vote. */ +class TotalcwRelayNetworkStatusVote { + + /** Valid-after time of the vote. */ + LocalDateTime validAfter; + + /** The 1 to 19 character long alphanumeric nickname assigned to the authority + * by its operator. */ + String nickname; + + /** Uppercase hex fingerprint of the authority's (v3 authority) identity + * key. */ + String identityHex; + + /** Count of status entries containing bandwidth measurements. */ + long measuredCount; + + /** Sum of bandwidth measurements of all contained status entries. */ + long measuredSum; + + /** Mean value of bandwidth measurements of all contained status entries. */ + long measuredMean; + + /** Minimum value of bandwidth measurements of all contained status + * entries. */ + long measuredMin; + + /** First quartile value of bandwidth measurements of all contained status + * entries. */ + long measuredQ1; + + /** Median value of bandwidth measurements of all contained status entries. */ + long measuredMedian; + + /** Third quartile value of bandwidth measurements of all contained status + * entries. */ + long measuredQ3; + + /** Maximum value of bandwidth measurements of all contained status + * entries. */ + long measuredMax; +} + diff --git a/src/main/java/org/torproject/metrics/stats/totalcw/Writer.java b/src/main/java/org/torproject/metrics/stats/totalcw/Writer.java new file mode 100644 index 0000000..6688eae --- /dev/null +++ b/src/main/java/org/torproject/metrics/stats/totalcw/Writer.java @@ -0,0 +1,36 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +/** Writer that takes output line objects and writes them to a file, preceded + * by a column header line. */ +class Writer { + + /** Write output lines to the given file. */ + void write(Path filePath, Iterable<OutputLine> outputLines) + throws IOException { + File parentFile = filePath.toFile().getParentFile(); + if (null != parentFile && !parentFile.exists()) { + if (!parentFile.mkdirs()) { + throw new IOException("Unable to create parent directory of output " + + "file. Not writing this file."); + } + } + List<String> formattedOutputLines = new ArrayList<>(); + formattedOutputLines.add(OutputLine.columnHeadersDelimitedBy(",")); + for (OutputLine line : outputLines) { + formattedOutputLines.add(line.toString()); + } + Files.write(filePath, formattedOutputLines, StandardCharsets.UTF_8); + } +} + diff --git a/src/main/resources/web.xml b/src/main/resources/web.xml index 0c79916..6ff82ad 100644 --- a/src/main/resources/web.xml +++ b/src/main/resources/web.xml @@ -55,6 +55,7 @@ <url-pattern>/relays-ipv6.html</url-pattern> <url-pattern>/bridges-ipv6.html</url-pattern> <url-pattern>/advbw-ipv6.html</url-pattern> + <url-pattern>/totalcw.html</url-pattern> </servlet-mapping>
<servlet> @@ -193,6 +194,9 @@ <url-pattern>/advbw-ipv6.png</url-pattern> <url-pattern>/advbw-ipv6.pdf</url-pattern> <url-pattern>/advbw-ipv6.csv</url-pattern> + <url-pattern>/totalcw.png</url-pattern> + <url-pattern>/totalcw.pdf</url-pattern> + <url-pattern>/totalcw.csv</url-pattern> </servlet-mapping>
<servlet> diff --git a/src/main/resources/web/json/categories.json b/src/main/resources/web/json/categories.json index af05085..73d2f01 100644 --- a/src/main/resources/web/json/categories.json +++ b/src/main/resources/web/json/categories.json @@ -30,6 +30,7 @@ "platforms", "relays-ipv6", "bridges-ipv6", + "totalcw", "uptimes", "networkchurn", "bubbles" diff --git a/src/main/resources/web/json/metrics.json b/src/main/resources/web/json/metrics.json index ab5d98d..ed74959 100644 --- a/src/main/resources/web/json/metrics.json +++ b/src/main/resources/web/json/metrics.json @@ -427,5 +427,16 @@ "start", "end" ] + }, + { + "id": "totalcw", + "title": "Total consensus weights across bandwidth authorities", + "type": "Graph", + "description": "<p>This graph shows total consensus weights across bandwidth authorities. This graph may be useful for comparing bandwidth authority implementations by comparing their total bandwidth weights.</p>", + "function": "totalcw", + "parameters": [ + "start", + "end" + ] } ] diff --git a/src/main/resources/web/jsps/reproducible-metrics.jsp b/src/main/resources/web/jsps/reproducible-metrics.jsp index c590142..4bed5cc 100644 --- a/src/main/resources/web/jsps/reproducible-metrics.jsp +++ b/src/main/resources/web/jsps/reproducible-metrics.jsp @@ -242,11 +242,9 @@ We therefore refer to Step 4 of the <a href="#relay-users">Relay users</a> descr <h2><i class="fa fa-server fa-fw" aria-hidden="true"></i> Servers <a href="#servers" name="servers" class="anchor">#</a></h2>
-<p>The following description applies to the following graphs and table:</p> - <p>Statistics on the number of servers—<a href="/glossary.html#relay">relays</a> and <a href="/glossary.html#bridge">bridges</a>—were among the first to appear on Tor Metrics. -These statistics have one thing in common: they use the number of running servers as their metric. -Possible alternatives would be to use <a href="/glossary.html#consensus-weight">consensus weight</a> fractions or guard/middle/exit probabilities as metrics, but we're not doing that yet. +Most of these statistics have one thing in common: they use the number of running servers as their metric. +Possible alternatives are to use <a href="/glossary.html#consensus-weight">consensus weight</a> totals/fractions or guard/middle/exit probabilities as metrics, but we only recently started doing that. In the following, we describe how exactly we count servers.</p>
<h3 id="running-relays" class="hover">Running relays @@ -394,6 +392,36 @@ However, a small number of missing server descriptors per status is acceptable a For the <a href="/bridges-ipv6.html">Bridges by IP version</a> graph we further skip days for which fewer than 12 statuses are known. The goal is to avoid over-representing a few statuses during periods when the bridge directory authority had trouble producing a status for at least half of the day.</p>
+<h3 id="consensus-weight" class="hover">Consensus weight +<a href="#consensus-weight" class="anchor">#</a> +</h3> + +<p>The following statistic uses measured bandwidth, also known as <a href="/glossary.html#consensus-weight">consensus weight</a>, as metric for relay statistics, rather than absolute relay counts.</p> + +<p>The following description applies to the following graph:</p> + +<ul> +<li>Total consensus weights across bandwidth authorities <a href="/totalcw.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a></li> +</ul> + +<h4>Step 1: Parse votes.</h4> + +<p>Obtain votes from <a href="/collector.html#type-network-status-vote-3">CollecTor</a>. +Refer to the <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">Tor directory protocol, version 3</a> for details on the descriptor format.</p> + +<p>Parse and memorize the <code>"valid-after"</code> time from the vote header. We use this UTC timestamp to aggregate by the UTC date.</p> + +<p>Also parse the <code>"nickname"</code> and <code>"identity"</code> fields from the <code>"dir-source"</code> line. We use the identity to aggregate by authority and the nickname for display purposes.</p> + +<p>Parse the (optional) <code>"w"</code> lines of all status entries and compute the total of all measured bandwidth values denoted by the <code>"Measured="</code> keyword. If an entry does not contain such a value, skip the entry. If a vote does not contain a single measured bandwidth value, skip the vote.</code> + +<h4>Step 2: Compute daily averages</h4> + +<p>Go through all previously processed votes by valid-after UTC date and authority. +If an authority published less than 12 votes on a given UTC date, skip this date and authority. +Also skip the last date of the results, because those averages may still change throughout the day. +For all remaining combinations of date and authority, compute the arithmetic mean of total measured bandwidth, rounded down to the next-smaller integer number.</p> + </div>
<div class="container"> diff --git a/src/main/resources/web/jsps/stats.jsp b/src/main/resources/web/jsps/stats.jsp index bb038e4..c6da19f 100644 --- a/src/main/resources/web/jsps/stats.jsp +++ b/src/main/resources/web/jsps/stats.jsp @@ -304,6 +304,26 @@ Servers <a href="#servers" name="servers" class="anchor">#</a></h2> <li><b>total:</b> Average number of bridges.</li> </ul>
+<h3>Total consensus weights across bandwidth authorities +<a href="/totalcw.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a> +<a href="/totalcw.csv" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> data</a> +<a href="#totalcw" name="totalcw" class="anchor">#</a></h3> + +<h4>Parameters</h4> + +<ul> +<li><b>start:</b> First UTC date (YYYY-MM-DD) to include in the file.</li> +<li><b>end:</b> Last UTC date (YYYY-MM-DD) to include in the file.</li> +</ul> + +<h4>Columns</h4> + +<ul> +<li><b>date:</b> UTC date (YYYY-MM-DD) when bridges have been listed as running.</li> +<li><b>nickname:</b> Bandwidth authority nickname.</li> +<li><b>totalcw:</b> Total consensus weight of all relays measured by the bandwidth authority.</li> +</ul> + </div>
<div class="container"> diff --git a/src/main/sql/totalcw/init-totalcw.sql b/src/main/sql/totalcw/init-totalcw.sql new file mode 100644 index 0000000..bbb6cac --- /dev/null +++ b/src/main/sql/totalcw/init-totalcw.sql @@ -0,0 +1,74 @@ +-- Copyright 2018 The Tor Project +-- See LICENSE for licensing information + +-- Table of v3 authorities that stores nicknames and identity fingerprints and +-- assigns much shorter numeric identifiers for internal-only use. +CREATE TABLE authority ( + + -- The auto-incremented numeric identifier for an authority. + authority_id SERIAL PRIMARY KEY, + + -- The 1 to 19 character long alphanumeric nickname assigned to the authority by + -- its operator. + nickname CHARACTER VARYING(19) NOT NULL, + + -- Uppercase hex fingerprint of the authority's (v3 authority) identity key. + identity_hex CHARACTER(40) NOT NULL, + + UNIQUE (nickname, identity_hex) +); + +-- Table of all votes with statistics on contained bandwidth measurements. Only +-- contains votes containing bandwidth measurements. +CREATE TABLE vote ( + + -- The auto-incremented numeric identifier for a vote. + vote_id SERIAL PRIMARY KEY, + + -- Timestamp at which the consensus is supposed to become valid. + valid_after TIMESTAMP WITHOUT TIME ZONE NOT NULL, + + -- Numeric identifier uniquely identifying the authority generating this vote. + authority_id INTEGER REFERENCES authority (authority_id), + + -- Count of status entries containing bandwidth measurements. + measured_count BIGINT NOT NULL, + + -- Sum of bandwidth measurements of all contained status entries. + measured_sum BIGINT NOT NULL, + + -- Mean value of bandwidth measurements of all contained status entries. + measured_mean BIGINT NOT NULL, + + -- Minimum value of bandwidth measurements of all contained status entries. + measured_min BIGINT NOT NULL, + + -- First quartile value of bandwidth measurements of all contained status + -- entries. + measured_q1 BIGINT NOT NULL, + + -- Median value of bandwidth measurements of all contained status entries. + measured_median BIGINT NOT NULL, + + -- Third quartile value of bandwidth measurements of all contained status + -- entries. + measured_q3 BIGINT NOT NULL, + + -- Maximum value of bandwidth measurements of all contained status entries. + measured_max BIGINT NOT NULL, + + UNIQUE (valid_after, authority_id) +); + +-- View on aggregated total consensus weight statistics in a format that is +-- compatible for writing to an output CSV file. Votes are only included in the +-- output if at least 12 votes are known for a given authority and day. +CREATE OR REPLACE VIEW totalcw AS +SELECT DATE(valid_after) AS valid_after_date, nickname, + FLOOR(AVG(measured_sum)) AS measured_sum_avg +FROM vote NATURAL JOIN authority +GROUP BY DATE(valid_after), nickname +HAVING COUNT(vote_id) >= 12 + AND DATE(valid_after) < (SELECT MAX(DATE(valid_after)) FROM vote) +ORDER BY DATE(valid_after), nickname; + diff --git a/src/test/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVoteTest.java b/src/test/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVoteTest.java new file mode 100644 index 0000000..085a976 --- /dev/null +++ b/src/test/java/org/torproject/metrics/stats/totalcw/TotalcwRelayNetworkStatusVoteTest.java @@ -0,0 +1,126 @@ +/* Copyright 2018 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.metrics.stats.totalcw; + +import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.assertNull; + +import org.torproject.descriptor.Descriptor; +import org.torproject.descriptor.DescriptorSourceFactory; +import org.torproject.descriptor.RelayNetworkStatusVote; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.time.LocalDateTime; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.Collection; + +@RunWith(Parameterized.class) +public class TotalcwRelayNetworkStatusVoteTest { + + @Parameters + public static Collection<Object[]> data() { + return Arrays.asList(new Object[][] { + { "2018-10-15-00-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-" + + "55A38ED50848BE1F13C6A35C3CA637B0D962C2EF.part", + ZonedDateTime.parse("2018-10-15T00:00:00Z").toLocalDateTime(), + "dannenberg", "0232AF901C31A04EE9848595AF9BB7620D4C5B2E", + 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L }, + { "2018-10-15-00-00-00-vote-27102BC123E7AF1D4741AE047E160C91ADC76B21-" + + "049AB3179B12DACC391F06A10C2A8904E4339D33.part", + ZonedDateTime.parse("2018-10-15T00:00:00Z").toLocalDateTime(), + "bastet", "27102BC123E7AF1D4741AE047E160C91ADC76B21", + 20L, 138803L, 6940L, 5L, 76L, 2490L, 9732L, 34800L }, + { "2018-10-15-00-00-00-vote-ED03BB616EB2F60BEC80151114BB25CEF515B226-" + + "2669AD153408F88E416CE6206D1A75EC3324A2F4.part", + ZonedDateTime.parse("2018-10-15T00:00:00Z").toLocalDateTime(), + "gabelmoo", "ED03BB616EB2F60BEC80151114BB25CEF515B226", + 19, 133441L, 7023L, 2L, 153L, 3920L, 11030L, 31600L }, + { "2018-10-15-00-00-00-vote-EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97-" + + "38C6A19F78948B689345EE41D7119D76246C4D3E.part", + ZonedDateTime.parse("2018-10-15T00:00:00Z").toLocalDateTime(), + "Faravahar", "EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97", + 20, 158534L, 7926L, 6L, 109L, 3215L, 9582L, 40700L } + }); + } + + @Parameter + public String fileName; + + @Parameter(1) + public LocalDateTime expectedValidAfter; + + @Parameter(2) + public String expectedNickname; + + @Parameter(3) + public String expectedIdentityHex; + + @Parameter(4) + public long expectedMeasuredCount; + + @Parameter(5) + public long expectedMeasuredSum; + + @Parameter(6) + public long expectedMeasuredMean; + + @Parameter(7) + public long expectedMeasuredMin; + + @Parameter(8) + public long expectedMeasuredQ1; + + @Parameter(9) + public long expectedMeasuredMedian; + + @Parameter(10) + public long expectedMeasuredQ3; + + @Parameter(11) + public long expectedMeasuredMax; + + @Test + public void testParseVote() throws Exception { + InputStream is = getClass().getClassLoader().getResourceAsStream( + "totalcw/" + this.fileName); + StringBuilder sb = new StringBuilder(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String line = br.readLine(); + while (null != line) { + sb.append(line).append('\n'); + line = br.readLine(); + } + for (Descriptor descriptor + : DescriptorSourceFactory.createDescriptorParser().parseDescriptors( + sb.toString().getBytes(), new File(this.fileName), this.fileName)) { + TotalcwRelayNetworkStatusVote parsedVote = new Parser() + .parseRelayNetworkStatusVote((RelayNetworkStatusVote) descriptor); + if (0L == expectedMeasuredCount) { + assertNull(parsedVote); + } else { + assertEquals(this.expectedValidAfter, parsedVote.validAfter); + assertEquals(this.expectedNickname, parsedVote.nickname); + assertEquals(this.expectedIdentityHex, parsedVote.identityHex); + assertEquals(this.expectedMeasuredCount, parsedVote.measuredCount); + assertEquals(this.expectedMeasuredSum, parsedVote.measuredSum); + assertEquals(this.expectedMeasuredMean, parsedVote.measuredMean); + assertEquals(this.expectedMeasuredMin, parsedVote.measuredMin); + assertEquals(this.expectedMeasuredQ1, parsedVote.measuredQ1); + assertEquals(this.expectedMeasuredMedian, parsedVote.measuredMedian); + assertEquals(this.expectedMeasuredQ3, parsedVote.measuredQ3); + assertEquals(this.expectedMeasuredMax, parsedVote.measuredMax); + } + } + } +} diff --git a/src/test/resources/totalcw/2018-10-15-00-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-55A38ED50848BE1F13C6A35C3CA637B0D962C2EF.part b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-55A38ED50848BE1F13C6A35C3CA637B0D962C2EF.part new file mode 100644 index 0000000..827fcfd --- /dev/null +++ b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-55A38ED50848BE1F13C6A35C3CA637B0D962C2EF.part @@ -0,0 +1,239 @@ +@type network-status-vote-3 1.0 +network-status-version 3 +vote-status vote +consensus-methods 25 26 27 28 +published 2018-10-14 23:50:00 +valid-after 2018-10-15 00:00:00 +fresh-until 2018-10-15 01:00:00 +valid-until 2018-10-15 03:00:00 +voting-delay 300 300 +recommended-relay-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +recommended-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +required-relay-protocols Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=3-4 Microdesc=1 Relay=1-2 +required-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +known-flags Authority Exit Fast Guard HSDir Running Stable V2Dir Valid +flag-thresholds stable-uptime=1216200 stable-mtbf=3386731 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=7752000 guard-bw-exc-exits=6436000 enough-mtbf=1 ignoring-advertised-bws=0 +params CircuitPriorityHalflifeMsec=30000 DoSCircuitCreationEnabled=1 DoSConnectionEnabled=1 DoSConnectionMaxConcurrentCount=50 DoSRefuseSingleHopClientRendezvous=1 NumDirectoryGuards=3 NumEntryGuards=1 NumNTorsPerTAP=100 Support022HiddenServices=0 UseNTorHandshake=1 UseOptimisticData=1 bwauthpid=1 cbttestfreq=10 hs_service_max_rdv_failures=1 hsdir_spread_store=4 pb_disablepct=0 usecreatefast=0 +dir-source dannenberg 0232AF901C31A04EE9848595AF9BB7620D4C5B2E dannenberg.torauth.de 193.23.244.244 80 443 +contact Andreas Lehner +shared-rand-participate +shared-rand-commit 1 sha3-256 0232AF901C31A04EE9848595AF9BB7620D4C5B2E AAAAAFvD2IC9EM7ZZhuBysL9TCuY3vE/XuQsscEXKDtk9ATYpyGJSA== +shared-rand-previous-value 9 Vd2znClwwth89jp91diG/Bs1AH+0ExSgRFmyVOMJwwE= +shared-rand-current-value 9 oiXRUZGkT26O9aQmu/A52utoBF3gp27h0TvJ4gkDHkw= +dir-key-certificate-version 3 +fingerprint 0232AF901C31A04EE9848595AF9BB7620D4C5B2E +dir-key-published 2018-06-05 08:39:04 +dir-key-expires 2018-12-05 08:39:04 +dir-identity-key +-----BEGIN RSA PUBLIC KEY----- +MIIBigKCAYEAu9O0Pueesn0+29BlxZs60mBqehjdQtgSnKOm9QZxbQ0xrMQgbFnR +hWbKD8erenyeFk2SF6AJkbyzgYC89hyPW+8GBDmg5bE8fRKjgV/nI3tY2m4rkY3u +zSmYIdwqHUUc98Xzt9PaQ8IJAlDBY4XLKrWmJMxSyhBlVEept7+9Tj23qowW44Mz +xPJZ1aFkB1FpkD6qmoCzVZbhXy3cGt1nDwdJK7KqlaXziz9pFiw8PzTVU2xFgJNy ++nEcT72DBtk3G5K2Riu/aXY/D541Cioj9KMV4Nv4g8aBKx58Xq2tq1pFkc1Bqj1y +2MomVR3iskFzlqC8yKWGVe4OP2IaOhtcQJYp5GR9q+dWnr53WWNVxNu3sA9iMal3 +PJUk5pIYrsmArGew5gmlCe+Al46nPINxc7ouztmStAV+2F6SpZlKOcstnT+KJ52O +1xnOSaj/WnzG2o4KZ9UrFQoUNOLQJcelPcC+vrinMk9BQPcB072l9NjpUBC9brsW +qTCMStn1jfDDAgMBAAE= +-----END RSA PUBLIC KEY----- +dir-signing-key +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEAy5TDIInDMMHEMdDoEgpmqGJDZ2EwtLjOeUxQD7TEy4uYd5XcsJP0 +cjkJDm1FAWU02AJFMtoT+Pg7Ge4+30jRytySp+mibQLs6s8O2xLV7mwH8if9oHZ5 +xl8aPcx7mOG6J9Ak3k610bMDkEDrxmNqg0pl+krtpWrxuh6GcA5bbfPqf0ZPyUaE +MKKcFp/XxhLjvCOnryrQbeDYZySy2GkIx28A+u15prQnKm+6KskMC6SQIbo5QcBq +R0bumjdl7OcuTvQsP5h/7jHovFHhA/j/5b2osbHWbG9kqn3fN50anJBNaGHnYbFQ +gFSLZHfm8vSb5HnfzmsaDxYO/4xtfEi85wIDAQAB +-----END RSA PUBLIC KEY----- +dir-key-crosscert +-----BEGIN ID SIGNATURE----- +a0fX/ln8gMXpNGpC9ZXujMZep616AKu5DuECcKoqtAeoUeIIaAMdvMS/5RWUKDl7 +L8LeTjkUdhUpbodOtaRS+IGy9dXjSMOGUOgyLlvUSZ29jIAcTa5xBcBNgpUPkC6Y +AbdTmNjvaq+oAkWooPnER58/iivSRrBbh8G9Cqe22AKlQUTRH87L/b5tpKDaxg3W +89CmcsUulUVNt+Sj++kS2PqXMIySRwCv3xXQ/OLAsKJZvqByBBIY7y7TLkewiHcq +8KdpxmvFdE/bjPnErzd3Dcdv6FW+QIgt+3XEqamXD06lTw6xUsKlX2IP+3Cei00r +mQnm434h3FaGocvXuijjXw== +-----END ID SIGNATURE----- +dir-key-certification +-----BEGIN SIGNATURE----- +OyofWQWvPhRHhaMck1a8msuFf3AmZfLWBc/GOp8sxOvRU08pk+4hvjGGE8OpBqyF +Lps5387U6bfqlppCvC/qvManCuViyEYqCpn1iiClq+VmcgfL9GgvjsAc8V0G6INy +I8N19D3r/Htg44HNdW9yNgAeyv7PHzbQ9P6RyxXLawjFu4Mlho+a1IABeeFjE2f/ +PC6bDA5ix5K11AcVWAJKuTRAhQ0zOyLqnwD5UvjmqvO9jQrtK3kgrqvQ6ZJEakc9 +wDOB7+1I14gee2rvSD8rpyrPi3ystat1I4Tt2WlUGz9GX32Q7Mngq4muMVAY6bPS +6ujDrCgTKP+bF0+WhlVO9v71NMpi+uNEwnd4FO2Tt06XM2GKbEzty5yjMPhy9b12 +GR9BaI2wMnwQ7m0Y/57Nh1w90u+GbjgBYgRVEldk7WDB5wxjBVxcfKFDzU18kLcf +t94cSxk6CFPAPAr/LhCop7fU+4fkH0bveFm3dj0z8t6KMf5fMQvWVu5VFyUetSlV +-----END SIGNATURE----- +r seele AAoQ1DAR6kkoo19hBAX5K0QztNw xlbC5aW8ovDVh2t6VcKF/phheSg 2018-10-14 21:41:22 67.174.243.193 9001 0 +s Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=60 +p reject 1-65535 +id ed25519 ZtzhbIWHJpGQG+5N7hbRTtenyzq2RNJrx0QegtoY+bY +m 25,26,27,28 sha256=4l7u4Oy1sCG/08MtsHimtWtaC1ydC/GOtCqRD/5ewgs +r PutoElQueLee293884 AAwffNL+oHO5EdyUoWAOwvEX3ws Ay3cnaaHjnolSRe3ZjKcGlY17Q8 2018-10-14 08:06:47 174.127.217.73 55554 0 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=4950 +p reject 1-65535 +id ed25519 /58lPWzxxQfwoxed8I9l+D3+hTdOQ6RpgVgM9FCxil4 +m 25,26,27,28 sha256=0/b37HV9enGTzbwrxxg/0R5PfwRtRosXgtU5+vi/gBk +r CalyxInstitute14 ABG9JIWtRdmE7EFZyI/AZuXjMA4 +8xNQyAVPkKgtLH0AISVZFNuAq0 2018-10-14 11:10:20 162.247.74.201 443 80 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464,531,543-544,554,563,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8087-8088,8332-8333,8443,8888,9418,9999-10000,11371,12350,19294,19638,23456,33033,64738 +id ed25519 /AcSvVFxaIBxaB5I/7mwdVbMdP6JjDsEPVLU6Hj22a0 +m 25,26,27,28 sha256=7nBT4mYr4H5Jj71Qq7Nan7R7KqWPTRG89Oq1/5m4c1M +r Neldoreth ABUk3UA9cp8I9+XXeBPvEnVs+o0 nms8ZM18C/K5XzLmgO5fHchjhFc 2018-10-14 19:09:56 185.13.39.197 443 80 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=5242 +p reject 1-65535 +id ed25519 eZ49J/mRCMtMbD2GDZsjZm/gqqG9z5S6M5GykZmd2ro +m 25,26,27,28 sha256=IxCWEdRM6Hqk1fiYx+DK9ufUPI49SE6Z4C8onbsBVXo +r UbuntuCore246 ACenhGJF+i26Aj46wfqAaI8dc7s EmwRg8iMnKJc8GEusZxhsVf9PJI 2018-10-14 23:13:35 212.199.61.38 43511 0 +s Fast V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=121 +p reject 1-65535 +id ed25519 crWebog3RcKMV49zyu6pF5A/MxQM89x2cKNRK1wbTjM +m 25,26,27,28 sha256=98nmfhxVBZqk7VUfyXQWpJmLAfWloZtMXu5H9FVt+p8 +r rotor25 ADQsDhVdRULlU5F4iy13nxRXjes m/3hkTP+ETmoYWZ3JrniJAeRHho 2018-10-14 17:19:08 188.24.22.193 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=3987 +p reject 1-65535 +id ed25519 8ybCWdul+E3HdzEb1YR3Fbp6EIwnGGPsUhsSh7FUnfs +m 25,26,27,28 sha256=ZeMCL1T4SogPYK0iyuzYZoyFx+mp9/Ng8vGmE8wI9rU +r torbogen AEHgFQsKMHUGwoY+/J8rfjpSOzY DXa3G+iPbGQo4AK2iazVY6R4eKs 2018-10-14 20:19:33 178.142.72.49 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=1275 +p reject 1-65535 +id ed25519 NzIv9KWavK4f+6426ctrr9UnsFl/Yt8ixEAP6OO/kVo +m 25,26,27,28 sha256=lFXLHMP6Map0qD298F+eeybL4pqtXDRG7a7r4R7knlw +r nicolass67atoll AES/YhfxWxj3ZvK1O85bPg4BV+k iK+QhopNtEipMSL+EeI6b/DitVc 2018-10-14 15:48:15 163.172.10.89 9001 0 +s Fast Running Stable V2Dir Valid +v Tor 0.2.9.16 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=1048 +p reject 1-65535 +id ed25519 ++ezzEs6r+0m0YDwFAjwpIIbNKtzMbKB13osAAoGQ/c +m 25,26,27,28 sha256=kGlToMt+rD0tL3N+5Plqj8Nav1FVQMiSYpz0adtzs0I +r zzzzzzzzzzzzzzzzzzz AEVz/pNLpV0H2ucjF3k69OQbdbY 1FUGYNQtQo1MgV4jRP2XJapWemI 2018-10-14 23:43:10 77.12.174.141 9002 9031 +s Fast Running V2Dir Valid +v Tor 0.3.2.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=565 +p reject 1-65535 +id ed25519 QnM3RTCh53wbKiC6N6IsCQHs3pj9J547xUNtrk5FnYE +m 25,26,27,28 sha256=+1jqHQZNEebT5DFJHZIPE35at9TzFCB5hzqDWAxrXGk +r helga AFnZKULbO4TlLrTYfp97GVz00AU ngp++P8hEV+Pj/j9OvvDCyuDqKA 2018-10-14 17:09:42 88.99.216.194 9001 9030 +s Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=409 +p reject 1-65535 +id ed25519 M1nVVuHebCChHayS1hsajAkzpe4c8bEFKP499V3yBG4 +m 25,26,27,28 sha256=//iWXvWzIkvqFqwTf367uZJ2UoNwcrCrLcOs7DY5xvE +r Torpi AHJ/OiwdDxcxqRJnxBFQecFrILQ bLi/i6JuuPmoWm1aGd73dy2tYlA 2018-10-14 15:51:48 110.146.4.151 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.4.29 +pr Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2 +w Bandwidth=92 +p reject 1-65535 +id ed25519 none +m 25,26,27,28 sha256=TiQfeDGlZq6VrCEKFDCA0uvS6hiv8CVMdkLyRxuRZpU +r VeespRU2 AHTsqCvVi4uxkJycTyN/2XebI/w r3AsIyXKvSFzC+5eDuiUgPTmG9g 2018-10-14 09:25:26 185.22.172.237 443 80 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 +p reject 1-65535 +id ed25519 obR35oXyInFbtgitDsbasslq2SNFSTZeI1+2bJfK6HE +m 25,26,27,28 sha256=+tNKyFkcOSA/CufXMtSfprtve7qkoDx4yjGG/XdH6Ec +r Quintex13 AHe8unJE2z5qXtJ0boYXAGZoSIc GwoBS5ddT7ktxwqHjHYNc2u53xU 2018-10-14 07:38:44 199.249.223.62 443 80 +s Exit Fast Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9426 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8082,8087-8088,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 cHUct3VAkb+T4KQQQg9fLuH5feoGyjxang+Jihs0E80 +m 25,26,27,28 sha256=/JQIKi/L0aSZ8uMKc0DsHBeH2OmsvAj9GbXq8i8QQcE +r UbuntuCore246 AH4Yastcf3fGnzddzt9ZT/1r9pk 9kJql4jbylNMYXhvn4OasP55fck 2018-10-14 11:03:40 77.146.180.194 40523 0 +s Fast V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=382 +p reject 1-65535 +id ed25519 rSPYL+kdnVmyJ9/Ni96SNABxuvE4DDLwO9l9tqeicoA +m 25,26,27,28 sha256=hGcbcAmK7x/tNRe7iBBqNlj6sZByhmhTSwWw/wYZo3s +r torrelay04 AH/ZCOnPz1nmT7pCt1cdLPQBvF0 n5XUymNehFnO8hTftwd4NIozrjQ 2018-10-14 18:52:54 159.69.153.73 9000 0 +a [2a01:4f8:1c1c:5cec::1]:9000 +s Fast Running Stable Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=8030 +p reject 1-65535 +id ed25519 OJfT1k1R4UB3eNZ7+Mx9MCh9a5RBXqCcqtDfqQw4UvA +m 25,26,27 sha256=R60ONtNwXwpVOajWfWlH4yQ7a6rBYwgLJ87p5wH55fk +m 28 sha256=8oP/xai6UYcjJY5gx9fgrLTYY66vgdAr4y2F+R7tqUQ +r bigamy AH/cDMglli4ShKYaaMk4pmr75XA dMrr7wRTfKoVfCRHLuR0IZFSWsI 2018-10-14 13:28:57 185.24.218.171 9001 8080 +s Exit Fast Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 fTOvB48qkzbEyLpBemkuyBv9UieAUeM8RNfCypusrs0 +m 25,26,27,28 sha256=GpLj/6GejSGtvDxUAUrZgarLCVjbcZVDduWCqvShOBk +r zech1989 AI57cMO0p1ILW+q4Bnq83I5j8f0 boK7UYxCaZy4lpe8irfYPFsX6SY 2018-10-14 21:18:08 185.243.53.99 9001 9030 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9726 +p reject 1-65535 +id ed25519 wPhoSjgH8xrZ/K2wKhYKd2IR6iQ2/pO4V9rIObVIZ30 +m 25,26,27,28 sha256=hx94DElvCTLaJLuCbKr5rShGxcpKpz8f5eZdYhXwfEQ +r paris AJf70aisEQPfmPHoXdUsUPAdOtY 9x4Jiv45IDG4EDSSXfOd+Ss9qtc 2018-10-14 22:06:20 178.19.111.147 9001 8000 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 s49ps0kX/BuncEzm6dG6ZmLs7DCanj/WcXlPVt0D7Tw +m 25,26,27,28 sha256=L9vWM3tYYI2RLlnofu1m9nMTckLVSKMXftVTDUwidhw +r jactr AJhR35M3VLAN3odvzkCIzhtJQME RLckbaDnNUH4qGCkOmDo20UwE28 2018-10-14 23:26:36 84.40.112.70 9001 9030 +s Fast HSDir Running Stable V2Dir Valid +v Tor 0.2.9.15 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=131 +p reject 1-65535 +id ed25519 +Jc2Ppp+/hmdtaE8T2uxkZIhOD5/kCEfz8gyDCMiDpg +m 25,26,27,28 sha256=tD+2RMOICoOQRFeZH6D4Kx8mRN4JzhfrtcQs8q78hPA +r IsThisAGoodIdea AJ2M8WzPcSMatc5VyCoDRG2j+Us Gce3qKSpkK8w2D+9k75V7vNdWzI 2018-10-14 16:51:45 220.233.27.93 9001 0 +s Running Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=80 +p reject 1-65535 +id ed25519 peXjh3W6mWzg9iZALqNEDyP3ONQO7Vp9uSzqSszVHOA +m 25,26,27,28 sha256=1jmLpMLTUMJr2IoHyDpGCrc/ZuBakhVUWivZ7NKwAz4 +directory-footer +directory-signature 0232AF901C31A04EE9848595AF9BB7620D4C5B2E CD1FD971855430880D3C31E0331C5C55800C2F79 +-----BEGIN SIGNATURE----- +CS6wJMEd74jA1bBTBt0CFPZXivvrvB9c8jf80z2TgHPo9WgUByCMx1+Gp5dHEKqy +r3C2fgqF+1v8cMDy6vGGEkHTGWiyYt1Ge0mztr/tUcR7+sqqZychdUcVA9+abJ8P +iI5whpWDieH+njn1BvphBVo2Hpzd/wCIqDanwaz6xHPxToINdGnA830SHGbs1b8H +lLXWHuUjVSbkjHgN3NLd8nPjw1uOVIZBsWJa2dT6SCDkQCgbj5+g73kyk+OKJw4r +ue8POxm8SOQT4BHTUfQH4Cgrje33nDJibTSymBOPAYkF6tIZsK7ujWEhnXbyciTQ +dYM8WH+IZ9Iu31hyg277bQ== +-----END SIGNATURE----- diff --git a/src/test/resources/totalcw/2018-10-15-00-00-00-vote-27102BC123E7AF1D4741AE047E160C91ADC76B21-049AB3179B12DACC391F06A10C2A8904E4339D33.part b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-27102BC123E7AF1D4741AE047E160C91ADC76B21-049AB3179B12DACC391F06A10C2A8904E4339D33.part new file mode 100644 index 0000000..c73c6f5 --- /dev/null +++ b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-27102BC123E7AF1D4741AE047E160C91ADC76B21-049AB3179B12DACC391F06A10C2A8904E4339D33.part @@ -0,0 +1,239 @@ +@type network-status-vote-3 1.0 +network-status-version 3 +vote-status vote +consensus-methods 25 26 27 28 +published 2018-10-14 23:50:00 +valid-after 2018-10-15 00:00:00 +fresh-until 2018-10-15 01:00:00 +valid-until 2018-10-15 03:00:00 +voting-delay 300 300 +recommended-relay-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +recommended-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +required-relay-protocols Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=3-4 Microdesc=1 Relay=1-2 +required-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +known-flags Authority Exit Fast Guard HSDir Running Stable V2Dir Valid +flag-thresholds stable-uptime=1219572 stable-mtbf=3460952 fast-speed=90000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=10400000 guard-bw-exc-exits=8880000 enough-mtbf=1 ignoring-advertised-bws=1 +params CircuitPriorityHalflifeMsec=30000 DoSCircuitCreationEnabled=1 DoSConnectionEnabled=1 DoSConnectionMaxConcurrentCount=50 DoSRefuseSingleHopClientRendezvous=1 NumDirectoryGuards=3 NumEntryGuards=1 NumNTorsPerTAP=100 Support022HiddenServices=0 UseNTorHandshake=1 UseOptimisticData=1 bwauthpid=1 cbttestfreq=10 hs_service_max_rdv_failures=1 hsdir_spread_store=4 pb_disablepct=0 usecreatefast=0 +dir-source bastet 27102BC123E7AF1D4741AE047E160C91ADC76B21 204.13.164.118 204.13.164.118 80 443 +contact stefani <nocat at readthefinemanual dot net> +shared-rand-participate +shared-rand-commit 1 sha3-256 27102BC123E7AF1D4741AE047E160C91ADC76B21 AAAAAFvD2IDJPppI/HhEtjCnUnd+nCJlpUZYS1f6jHZvFxFgnFtQXQ== +shared-rand-previous-value 9 Vd2znClwwth89jp91diG/Bs1AH+0ExSgRFmyVOMJwwE= +shared-rand-current-value 9 oiXRUZGkT26O9aQmu/A52utoBF3gp27h0TvJ4gkDHkw= +dir-key-certificate-version 3 +fingerprint 27102BC123E7AF1D4741AE047E160C91ADC76B21 +dir-key-published 2018-10-10 00:02:19 +dir-key-expires 2019-10-10 00:02:19 +dir-identity-key +-----BEGIN RSA PUBLIC KEY----- +MIIBigKCAYEAuxgnMVH4vwBjMeGvrEODOYcjbCS4N+Wt0SZ6XA5I08HyMf5AbaaF +MDscJBRIUOp7DyLmUwK+jp+QI8pUjjKsB8S0ctb/J3Im2T6CXnP2KgEfVmpNVQmV +XdMm8cRZl1uIZDDBAXizSQ51f9A17TJh7pF/5khYp/SAzl6aO5ETn7ry0ITiJnNa +6cY+400F7ZBA8NuXnCHVGfmpFFsiJKFrS1Kve629eeaNEd3mynRviBXJy5a4NEGf +y42Ev8on6SxEnF9OG0NMJ081/+mP+j8Dsl3+Uehzr9B42MQQfDo4RdYGrt9XolBm +L4eay1ieZEsFeDy0TMfiGGbr90wo1fgGLHIRSfTNLhhPJ/f9cTZPe98rhSgGWiAd +RvK5SljoIOR4qdS9/aiZkj1P+etvh1rIQUcG4/xCOBnouEBK+DDHZFqyMtpMPtV0 +Bxi20DVaMJcyhdfjVqcRSyuR8tlOnTid6QwBj6kgIIfMaC+4Ht6yO/SYquCWlaZl +y7Pu7li8WyW9AgMBAAE= +-----END RSA PUBLIC KEY----- +dir-signing-key +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEAp/+6CgR/ptxWIt6uLCLt0t4e+yCq9i7MOcmcZlWHzIsP+sJxsPJO +jqg5MycQsWt4wMUGCWj5ag+cozTGClfZ7dSxEzee5DoLa65RFK9ymFAnhUNs97sx +F5CionrnUdjMO4MShALJgr7tXZ7I2/mwAG8foszEcl+dWhcaQio3WaT5rK/hLpiT +URgYmieXaZWm1kLraI5DWnRY7GdFyWdBJKboStYpoJuYexUL7lbG7u7wqEG25N4+ +yFt8fiS7yjdlCf0WJRZlwmTLz87nn4Sqb/nYeqXKmT88LBs9D1csd8KgwOgyTkfb +e7v+dTZSkqZYd0QXsqqxynZVKk63vWSXHwIDAQAB +-----END RSA PUBLIC KEY----- +dir-key-crosscert +-----BEGIN ID SIGNATURE----- +BNgMpEDYtEohkX1c0imNg4ATBxwPFeO01t1mgEQqyRZkihcfFi6Eb9stAqXto7Xs +03QxovdfUP3kQvsidBBpt2WHBpW8CpARhwK8LvIPzu3q7SkLcW0d82qY29cRadfx +yX2jBJVV4faH41IY5rt/EN6BAATFSnJ+IORFAX8A/75ZQ2H9EIOhdufkmA4zMGUx +qKzU/L5LDyfTwWUJmsDYb492d1luws3EBkD5cDFyo5ab1rV7NwJw0al1m0pUF4Dm +GSNtWlY1Lr/IUnPBksxY98TCkapgHKyq2FsnPJeSiTAHDIo1gpl2oJ0Lg5y2SBxZ +FMmLq/Wt9rqbS216qVxX7w== +-----END ID SIGNATURE----- +dir-key-certification +-----BEGIN SIGNATURE----- +VEmK8S0LdEXDEGuF4QxLNQBtkQYEAParbBNLDT83XsLhXUfHja1MmkWJUemMpO0n +R5eOVuHEegIbZzaIztYhgc0+4PKovx7q79rmPADwPACQxdB9dbzGhfgnxV1gfvQC +CM6gfkruUDUqLoAtjeM++CMd8LgIOZBKmq4T4cQSUH2Mx7r+HYt/h2oqpWLGVufv +wlE388tksfTdK9gVVht0MFBSTYjB5XEVLfF0LdxuOkHaiFJTUgJdGSecl8rtRSbq +npy+Ex8Mjzsm//6asIdl2pWqkkmYNyqNeLxUl1r9xn1EOg8ZEWZ/L9L5EHkZvH1j +YUS3ucYipsaT5QYOCmniLjLtQ6rkDABwn8F5co0RdIIrlIYjKMPGNUmwWz9rcYnC +6L1DBttnMeLFC8zrn6OD3nI7Q7vrxj73Yl+gZhx2PIriHO01supq3+NGk743lHQu +jF33Pili9eZU0J4bJzE/LLeVcEnlZPV3CRRvPuG/PTl/O2OCCyI2pM1IHVmp06SQ +-----END SIGNATURE----- +r seele AAoQ1DAR6kkoo19hBAX5K0QztNw xlbC5aW8ovDVh2t6VcKF/phheSg 2018-10-14 21:41:22 67.174.243.193 9001 0 +s Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=60 Measured=23 +p reject 1-65535 +id ed25519 ZtzhbIWHJpGQG+5N7hbRTtenyzq2RNJrx0QegtoY+bY +m 25,26,27,28 sha256=4l7u4Oy1sCG/08MtsHimtWtaC1ydC/GOtCqRD/5ewgs +r PutoElQueLee293884 AAwffNL+oHO5EdyUoWAOwvEX3ws Ay3cnaaHjnolSRe3ZjKcGlY17Q8 2018-10-14 08:06:47 174.127.217.73 55554 0 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=4950 Measured=5620 +p reject 1-65535 +id ed25519 /58lPWzxxQfwoxed8I9l+D3+hTdOQ6RpgVgM9FCxil4 +m 25,26,27,28 sha256=0/b37HV9enGTzbwrxxg/0R5PfwRtRosXgtU5+vi/gBk +r CalyxInstitute14 ABG9JIWtRdmE7EFZyI/AZuXjMA4 +8xNQyAVPkKgtLH0AISVZFNuAq0 2018-10-14 11:10:20 162.247.74.201 443 80 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=25900 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464,531,543-544,554,563,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8087-8088,8332-8333,8443,8888,9418,9999-10000,11371,12350,19294,19638,23456,33033,64738 +id ed25519 /AcSvVFxaIBxaB5I/7mwdVbMdP6JjDsEPVLU6Hj22a0 +m 25,26,27,28 sha256=7nBT4mYr4H5Jj71Qq7Nan7R7KqWPTRG89Oq1/5m4c1M +r Neldoreth ABUk3UA9cp8I9+XXeBPvEnVs+o0 nms8ZM18C/K5XzLmgO5fHchjhFc 2018-10-14 19:09:56 185.13.39.197 443 80 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=5242 Measured=10400 +p reject 1-65535 +id ed25519 eZ49J/mRCMtMbD2GDZsjZm/gqqG9z5S6M5GykZmd2ro +m 25,26,27,28 sha256=IxCWEdRM6Hqk1fiYx+DK9ufUPI49SE6Z4C8onbsBVXo +r UbuntuCore246 ACenhGJF+i26Aj46wfqAaI8dc7s EmwRg8iMnKJc8GEusZxhsVf9PJI 2018-10-14 23:13:35 212.199.61.38 43511 0 +s V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=121 Measured=80 +p reject 1-65535 +id ed25519 crWebog3RcKMV49zyu6pF5A/MxQM89x2cKNRK1wbTjM +m 25,26,27,28 sha256=98nmfhxVBZqk7VUfyXQWpJmLAfWloZtMXu5H9FVt+p8 +r rotor25 ADQsDhVdRULlU5F4iy13nxRXjes m/3hkTP+ETmoYWZ3JrniJAeRHho 2018-10-14 17:19:08 188.24.22.193 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=3987 Measured=3910 +p reject 1-65535 +id ed25519 8ybCWdul+E3HdzEb1YR3Fbp6EIwnGGPsUhsSh7FUnfs +m 25,26,27,28 sha256=ZeMCL1T4SogPYK0iyuzYZoyFx+mp9/Ng8vGmE8wI9rU +r torbogen AEHgFQsKMHUGwoY+/J8rfjpSOzY DXa3G+iPbGQo4AK2iazVY6R4eKs 2018-10-14 20:19:33 178.142.72.49 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=1275 Measured=1070 +p reject 1-65535 +id ed25519 NzIv9KWavK4f+6426ctrr9UnsFl/Yt8ixEAP6OO/kVo +m 25,26,27,28 sha256=lFXLHMP6Map0qD298F+eeybL4pqtXDRG7a7r4R7knlw +r nicolass67atoll AES/YhfxWxj3ZvK1O85bPg4BV+k iK+QhopNtEipMSL+EeI6b/DitVc 2018-10-14 15:48:15 163.172.10.89 9001 0 +s Fast Running Stable V2Dir Valid +v Tor 0.2.9.16 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=1048 Measured=320 +p reject 1-65535 +id ed25519 ++ezzEs6r+0m0YDwFAjwpIIbNKtzMbKB13osAAoGQ/c +m 25,26,27,28 sha256=kGlToMt+rD0tL3N+5Plqj8Nav1FVQMiSYpz0adtzs0I +r zzzzzzzzzzzzzzzzzzz AEVz/pNLpV0H2ucjF3k69OQbdbY 1FUGYNQtQo1MgV4jRP2XJapWemI 2018-10-14 23:43:10 77.12.174.141 9002 9031 +s Fast Running V2Dir Valid +v Tor 0.3.2.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=565 Measured=163 +p reject 1-65535 +id ed25519 QnM3RTCh53wbKiC6N6IsCQHs3pj9J547xUNtrk5FnYE +m 25,26,27,28 sha256=+1jqHQZNEebT5DFJHZIPE35at9TzFCB5hzqDWAxrXGk +r helga AFnZKULbO4TlLrTYfp97GVz00AU ngp++P8hEV+Pj/j9OvvDCyuDqKA 2018-10-14 17:09:42 88.99.216.194 9001 9030 +s Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=409 Measured=245 +p reject 1-65535 +id ed25519 M1nVVuHebCChHayS1hsajAkzpe4c8bEFKP499V3yBG4 +m 25,26,27,28 sha256=//iWXvWzIkvqFqwTf367uZJ2UoNwcrCrLcOs7DY5xvE +r Torpi AHJ/OiwdDxcxqRJnxBFQecFrILQ bLi/i6JuuPmoWm1aGd73dy2tYlA 2018-10-14 15:51:48 110.146.4.151 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.4.29 +pr Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2 +w Bandwidth=92 Measured=18 +p reject 1-65535 +id ed25519 none +m 25,26,27,28 sha256=TiQfeDGlZq6VrCEKFDCA0uvS6hiv8CVMdkLyRxuRZpU +r VeespRU2 AHTsqCvVi4uxkJycTyN/2XebI/w r3AsIyXKvSFzC+5eDuiUgPTmG9g 2018-10-14 09:25:26 185.22.172.237 443 80 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=20500 +p reject 1-65535 +id ed25519 obR35oXyInFbtgitDsbasslq2SNFSTZeI1+2bJfK6HE +m 25,26,27,28 sha256=+tNKyFkcOSA/CufXMtSfprtve7qkoDx4yjGG/XdH6Ec +r Quintex13 AHe8unJE2z5qXtJ0boYXAGZoSIc GwoBS5ddT7ktxwqHjHYNc2u53xU 2018-10-14 07:38:44 199.249.223.62 443 80 +s Exit Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9426 Measured=7570 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8082,8087-8088,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 cHUct3VAkb+T4KQQQg9fLuH5feoGyjxang+Jihs0E80 +m 25,26,27,28 sha256=/JQIKi/L0aSZ8uMKc0DsHBeH2OmsvAj9GbXq8i8QQcE +r UbuntuCore246 AH4Yastcf3fGnzddzt9ZT/1r9pk 9kJql4jbylNMYXhvn4OasP55fck 2018-10-14 11:03:40 77.146.180.194 40523 0 +s V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=382 Measured=23 +p reject 1-65535 +id ed25519 rSPYL+kdnVmyJ9/Ni96SNABxuvE4DDLwO9l9tqeicoA +m 25,26,27,28 sha256=hGcbcAmK7x/tNRe7iBBqNlj6sZByhmhTSwWw/wYZo3s +r torrelay04 AH/ZCOnPz1nmT7pCt1cdLPQBvF0 n5XUymNehFnO8hTftwd4NIozrjQ 2018-10-14 18:52:54 159.69.153.73 9000 0 +a [2a01:4f8:1c1c:5cec::1]:9000 +s Fast Running Stable Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=8030 Measured=7880 +p reject 1-65535 +id ed25519 OJfT1k1R4UB3eNZ7+Mx9MCh9a5RBXqCcqtDfqQw4UvA +m 25,26,27 sha256=R60ONtNwXwpVOajWfWlH4yQ7a6rBYwgLJ87p5wH55fk +m 28 sha256=8oP/xai6UYcjJY5gx9fgrLTYY66vgdAr4y2F+R7tqUQ +r bigamy AH/cDMglli4ShKYaaMk4pmr75XA dMrr7wRTfKoVfCRHLuR0IZFSWsI 2018-10-14 13:28:57 185.24.218.171 9001 8080 +s Exit Fast Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=9510 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 fTOvB48qkzbEyLpBemkuyBv9UieAUeM8RNfCypusrs0 +m 25,26,27,28 sha256=GpLj/6GejSGtvDxUAUrZgarLCVjbcZVDduWCqvShOBk +r zech1989 AI57cMO0p1ILW+q4Bnq83I5j8f0 boK7UYxCaZy4lpe8irfYPFsX6SY 2018-10-14 21:18:08 185.243.53.99 9001 9030 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9726 Measured=10700 +p reject 1-65535 +id ed25519 wPhoSjgH8xrZ/K2wKhYKd2IR6iQ2/pO4V9rIObVIZ30 +m 25,26,27,28 sha256=hx94DElvCTLaJLuCbKr5rShGxcpKpz8f5eZdYhXwfEQ +r paris AJf70aisEQPfmPHoXdUsUPAdOtY 9x4Jiv45IDG4EDSSXfOd+Ss9qtc 2018-10-14 22:06:20 178.19.111.147 9001 8000 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=34800 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 s49ps0kX/BuncEzm6dG6ZmLs7DCanj/WcXlPVt0D7Tw +m 25,26,27,28 sha256=L9vWM3tYYI2RLlnofu1m9nMTckLVSKMXftVTDUwidhw +r jactr AJhR35M3VLAN3odvzkCIzhtJQME RLckbaDnNUH4qGCkOmDo20UwE28 2018-10-14 23:26:36 84.40.112.70 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.9.15 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=131 Measured=66 +p reject 1-65535 +id ed25519 +Jc2Ppp+/hmdtaE8T2uxkZIhOD5/kCEfz8gyDCMiDpg +m 25,26,27,28 sha256=tD+2RMOICoOQRFeZH6D4Kx8mRN4JzhfrtcQs8q78hPA +r IsThisAGoodIdea AJ2M8WzPcSMatc5VyCoDRG2j+Us Gce3qKSpkK8w2D+9k75V7vNdWzI 2018-10-14 16:51:45 220.233.27.93 9001 0 +s Running Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=80 Measured=5 +p reject 1-65535 +id ed25519 peXjh3W6mWzg9iZALqNEDyP3ONQO7Vp9uSzqSszVHOA +m 25,26,27,28 sha256=1jmLpMLTUMJr2IoHyDpGCrc/ZuBakhVUWivZ7NKwAz4 +directory-footer +directory-signature 27102BC123E7AF1D4741AE047E160C91ADC76B21 6FF3CD454038B7FDD7862B2DD778E4F702C31419 +-----BEGIN SIGNATURE----- +ICRgDdm/BcGDGUaofpzbAwYibBsX9o88sIZ8Wec0w+LD8RBQT0G6/9S+joAJECZv +WkJk+IqLhcipWAsTdts3ckCgPfP8x8DNmfdk0RhXf4otaYPs3wn5LD6hXnoXh+OU +QJ7DQbM+Hw5+K3F5gd8s2AW3GgL1g6REBC3kfZwijI8ovG8SIbr7+npVTGHRwm11 +F0IiEGRMnhedDRAdhhEVnVgyRWjfJEdFe8VzUzFAF7yjCNgVzVE++e+g2afrMXaJ +GYiWsJcKsgwbEUcFI6nvyPnbBGm8bTBnhhZFf60Ao5b0gNXpdGQVwAAHTwncLMCZ +/faPhIKZreAjmt5vtvPsXg== +-----END SIGNATURE----- diff --git a/src/test/resources/totalcw/2018-10-15-00-00-00-vote-ED03BB616EB2F60BEC80151114BB25CEF515B226-2669AD153408F88E416CE6206D1A75EC3324A2F4.part b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-ED03BB616EB2F60BEC80151114BB25CEF515B226-2669AD153408F88E416CE6206D1A75EC3324A2F4.part new file mode 100644 index 0000000..13c618f --- /dev/null +++ b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-ED03BB616EB2F60BEC80151114BB25CEF515B226-2669AD153408F88E416CE6206D1A75EC3324A2F4.part @@ -0,0 +1,241 @@ +@type network-status-vote-3 1.0 +network-status-version 3 +vote-status vote +consensus-methods 25 26 27 28 +published 2018-10-14 23:50:00 +valid-after 2018-10-15 00:00:00 +fresh-until 2018-10-15 01:00:00 +valid-until 2018-10-15 03:00:00 +voting-delay 300 300 +client-versions 0.2.9.14,0.2.9.15,0.2.9.16,0.2.9.17,0.3.2.6-alpha,0.3.2.7-rc,0.3.2.8-rc,0.3.2.9,0.3.2.10,0.3.2.11,0.3.2.12,0.3.3.1-alpha,0.3.3.2-alpha,0.3.3.3-alpha,0.3.3.4-alpha,0.3.3.5-rc,0.3.3.6,0.3.3.7,0.3.3.8,0.3.3.9,0.3.3.10,0.3.4.1-alpha,0.3.4.2-alpha,0.3.4.3-alpha,0.3.4.4-rc,0.3.4.5-rc,0.3.4.6-rc,0.3.4.7-rc,0.3.4.8,0.3.5.1-alpha,0.3.5.2-alpha,0.3.5.3-alpha +server-versions 0.2.9.14,0.2.9.15,0.2.9.16,0.2.9.17,0.3.2.10,0.3.2.11,0.3.2.12,0.3.3.2-alpha,0.3.3.3-alpha,0.3.3.4-alpha,0.3.3.5-rc,0.3.3.6,0.3.3.7,0.3.3.8,0.3.3.9,0.3.3.10,0.3.4.1-alpha,0.3.4.2-alpha,0.3.4.3-alpha,0.3.4.4-rc,0.3.4.5-rc,0.3.4.6-rc,0.3.4.7-rc,0.3.4.8,0.3.5.1-alpha,0.3.5.2-alpha,0.3.5.3-alpha +recommended-relay-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +recommended-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +required-relay-protocols Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=3-4 Microdesc=1 Relay=1-2 +required-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +known-flags Authority BadExit Exit Fast Guard HSDir Running Stable V2Dir Valid +flag-thresholds stable-uptime=1260391 stable-mtbf=3650978 fast-speed=53000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=11000000 guard-bw-exc-exits=9050000 enough-mtbf=1 ignoring-advertised-bws=1 +params CircuitPriorityHalflifeMsec=30000 DoSCircuitCreationEnabled=1 DoSConnectionEnabled=1 DoSConnectionMaxConcurrentCount=50 DoSRefuseSingleHopClientRendezvous=1 NumDirectoryGuards=3 NumEntryGuards=1 NumNTorsPerTAP=100 Support022HiddenServices=0 UseNTorHandshake=1 UseOptimisticData=1 bwauthpid=1 cbttestfreq=10 hs_service_max_rdv_failures=1 hsdir_spread_store=4 pb_disablepct=0 usecreatefast=0 +dir-source gabelmoo ED03BB616EB2F60BEC80151114BB25CEF515B226 131.188.40.189 131.188.40.189 80 443 +contact 4096R/261C5FBE77285F88FB0C343266C8C2D7C5AA446D Sebastian Hahn tor@sebastianhahn.net - 12NbRAjAG5U3LLWETSF7fSTcdaz32Mu5CN +shared-rand-participate +shared-rand-commit 1 sha3-256 ED03BB616EB2F60BEC80151114BB25CEF515B226 AAAAAFvD2ID7sH6uVUd8dxs2u8VPr+JTJ14S6SLVjh69b5m7hTQEJA== +shared-rand-previous-value 9 Vd2znClwwth89jp91diG/Bs1AH+0ExSgRFmyVOMJwwE= +shared-rand-current-value 9 oiXRUZGkT26O9aQmu/A52utoBF3gp27h0TvJ4gkDHkw= +dir-key-certificate-version 3 +fingerprint ED03BB616EB2F60BEC80151114BB25CEF515B226 +dir-key-published 2018-08-19 12:38:04 +dir-key-expires 2019-08-19 12:38:04 +dir-identity-key +-----BEGIN RSA PUBLIC KEY----- +MIIBigKCAYEA1d6uTRiqdMp4BHBYIHKR6NB599Z1Bqw4TbOVkM2N1aSA4V/L/hKI +nl6m/2LL/UAS+E3NCFX0dhw2+D7r7BTJyfGwz0H2MR6Py5/rCMAnPl20wCjXk2qY +ACQa0rJvIqXobwGnDlvxn4ezsj0IEY/FEb61zHnnPHf6d3uyFR1QT06qEOQyYzML +76f/Lud8MUt+8KzsdnadAPL8okNvcS/nqa2bWbbGhC8S8rtDpPg5BhX2ikXa88RM +QdrrackdppB2ttHlq9+iH3c8Wyp7bvdH8uhv410W7RnIE4P+KIxt3L0gqkxCjjyh +mn9ONcdgNOKe31q2cdW5LOPSIK+I5/VTjYjICza7Euyg03drpoBMGLuuJZY6FXEV +auIBncWe+So8FMxqU/fwo5xm6x085U1MwXUmi4XDYpr/kau6ytPnzzw9J++4W9iC +em5Jp0vaxrDnPdphqT0FWsBAwsZFL7nZRnmUlTgGsXUa0oSM9/MErDwzELh/NwG4 +DNyyzRG8iP61AgMBAAE= +-----END RSA PUBLIC KEY----- +dir-signing-key +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEAxtiD0MuGDfRBqibc06jZXSPoF5s0ToVSrVfNO75dYvfM9zabW+1q +EP18KUFxeShMqd2mmj685XbGnGX49I5gjzezjaIMcszpiPHQNmr9McnX97yR62YJ +XKy0i6lvKXLUb5y8V5HmdqKQ8HyCqsRcYFTFrHNCWC+oIhRrqpeQ5kSIdWiO2HCt +rzx9mAgGLRNFTy+EsxAFzuHaJVV5U7g/G4RMYXMP514aSpJVNgd2kdkXWsSIQ4HX +a/vRNECuBQyJ1YpHySqqpdOogJxFot8oW/WkmFTGh/amJjMrTUNGgDMD5mpwMCRV +ifA4hQzvJljkmfGMwgU8kYraMLDHvKzu4wIDAQAB +-----END RSA PUBLIC KEY----- +dir-key-crosscert +-----BEGIN ID SIGNATURE----- +ruE2woKIct6glnXsJOjnj0thwiv2KYTr/vVMcX5I4OBgzNj9jQPuXe84fUvFNsyQ +DVf0p6xrjnSmDjdsEpmZUtN16So9m/Zw7Xmn7v7Ktq8TS4jguA1xfhvPxlk7KTz4 +Fxkg3si4qWs00PZxiLERBK3bqMSChPOrzO9AZTjCAngeMIc8+TkXX8EowfqJDO92 +uGCtZReWfFMPObr0Ki4UDOzlTsx4zriRvMNjNqKC43tj2l0jj8RpSDmsWG0QeS+A +983kODQiVx5URr0O4eev1l0+pI+i8o2+05ZRci32cqvtlonKEtREbgUXzlMHU/ps +V3kONRvhP+0ABHL/JCVTzg== +-----END ID SIGNATURE----- +dir-key-certification +-----BEGIN SIGNATURE----- +MYFZL03QkjZKPN8uckION+Yzb3icKjxnzUqtgmTeBaxrjLCsxAXhKFgzgDZkDzun +REk+fSc9yG2YpxxUgE/l2ya36gr695q0EyJjnbQoNNgBX8YbeN0WaJER/jQtd5tY +3hEPnSqz33jUGf/BmBqO+ZHOrSKY7CLhMrSxY+NgjcdGWwI0eDrnAklGfgG6xVFe +YcXjj9aPB4+CtGJ0pgGM9SCZxETtCyBsJNYuYzowA/tz7VnymD8o3/CnW7bAlkGa +6YsMibhAKxKl/lBcBDcRz8HPVdj4txME9d5YAmejIDIIRscEQ56LqDBrwvHJ6Gkl +KQJXUwEiMAjM/wVLxd7zvgHOrR/hipCPe9vnVpYaSO446Z5d85p39BXR2x+vDfiT +nOsiF+J+Sk13KTt+45gp26lMzY5E03BxKXY3izs7zEl6BZHM+95dC211C6xlojuP +c8WkUcJuyb0xFS3nUy+dhLBzdW8nKlu/7Hn7uzugUUN4AWX/34+2qTqhNy0d2+Et +-----END SIGNATURE----- +r seele AAoQ1DAR6kkoo19hBAX5K0QztNw xlbC5aW8ovDVh2t6VcKF/phheSg 2018-10-14 21:41:22 67.174.243.193 9001 0 +s Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=60 Measured=4 +p reject 1-65535 +id ed25519 ZtzhbIWHJpGQG+5N7hbRTtenyzq2RNJrx0QegtoY+bY +m 25,26,27,28 sha256=4l7u4Oy1sCG/08MtsHimtWtaC1ydC/GOtCqRD/5ewgs +r PutoElQueLee293884 AAwffNL+oHO5EdyUoWAOwvEX3ws Ay3cnaaHjnolSRe3ZjKcGlY17Q8 2018-10-14 08:06:47 174.127.217.73 55554 0 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=4950 Measured=4380 +p reject 1-65535 +id ed25519 /58lPWzxxQfwoxed8I9l+D3+hTdOQ6RpgVgM9FCxil4 +m 25,26,27,28 sha256=0/b37HV9enGTzbwrxxg/0R5PfwRtRosXgtU5+vi/gBk +r CalyxInstitute14 ABG9JIWtRdmE7EFZyI/AZuXjMA4 +8xNQyAVPkKgtLH0AISVZFNuAq0 2018-10-14 11:10:20 162.247.74.201 443 80 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=14400 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464,531,543-544,554,563,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8087-8088,8332-8333,8443,8888,9418,9999-10000,11371,12350,19294,19638,23456,33033,64738 +id ed25519 /AcSvVFxaIBxaB5I/7mwdVbMdP6JjDsEPVLU6Hj22a0 +m 25,26,27,28 sha256=7nBT4mYr4H5Jj71Qq7Nan7R7KqWPTRG89Oq1/5m4c1M +r Neldoreth ABUk3UA9cp8I9+XXeBPvEnVs+o0 nms8ZM18C/K5XzLmgO5fHchjhFc 2018-10-14 19:09:56 185.13.39.197 443 80 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=5242 Measured=13600 +p reject 1-65535 +id ed25519 eZ49J/mRCMtMbD2GDZsjZm/gqqG9z5S6M5GykZmd2ro +m 25,26,27,28 sha256=IxCWEdRM6Hqk1fiYx+DK9ufUPI49SE6Z4C8onbsBVXo +r UbuntuCore246 ACenhGJF+i26Aj46wfqAaI8dc7s EmwRg8iMnKJc8GEusZxhsVf9PJI 2018-10-14 23:13:35 212.199.61.38 43511 0 +s Fast V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=121 Measured=71 +p reject 1-65535 +id ed25519 crWebog3RcKMV49zyu6pF5A/MxQM89x2cKNRK1wbTjM +m 25,26,27,28 sha256=98nmfhxVBZqk7VUfyXQWpJmLAfWloZtMXu5H9FVt+p8 +r rotor25 ADQsDhVdRULlU5F4iy13nxRXjes m/3hkTP+ETmoYWZ3JrniJAeRHho 2018-10-14 17:19:08 188.24.22.193 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=3987 Measured=6730 +p reject 1-65535 +id ed25519 8ybCWdul+E3HdzEb1YR3Fbp6EIwnGGPsUhsSh7FUnfs +m 25,26,27,28 sha256=ZeMCL1T4SogPYK0iyuzYZoyFx+mp9/Ng8vGmE8wI9rU +r torbogen AEHgFQsKMHUGwoY+/J8rfjpSOzY DXa3G+iPbGQo4AK2iazVY6R4eKs 2018-10-14 20:19:33 178.142.72.49 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=1275 Measured=1030 +p reject 1-65535 +id ed25519 NzIv9KWavK4f+6426ctrr9UnsFl/Yt8ixEAP6OO/kVo +m 25,26,27,28 sha256=lFXLHMP6Map0qD298F+eeybL4pqtXDRG7a7r4R7knlw +r nicolass67atoll AES/YhfxWxj3ZvK1O85bPg4BV+k iK+QhopNtEipMSL+EeI6b/DitVc 2018-10-14 15:48:15 163.172.10.89 9001 0 +s Fast Running Stable V2Dir Valid +v Tor 0.2.9.16 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=1048 Measured=1180 +p reject 1-65535 +id ed25519 ++ezzEs6r+0m0YDwFAjwpIIbNKtzMbKB13osAAoGQ/c +m 25,26,27,28 sha256=kGlToMt+rD0tL3N+5Plqj8Nav1FVQMiSYpz0adtzs0I +r zzzzzzzzzzzzzzzzzzz AEVz/pNLpV0H2ucjF3k69OQbdbY 1FUGYNQtQo1MgV4jRP2XJapWemI 2018-10-14 23:43:10 77.12.174.141 9002 9031 +s Fast Running V2Dir Valid +v Tor 0.3.2.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=565 Measured=235 +p reject 1-65535 +id ed25519 QnM3RTCh53wbKiC6N6IsCQHs3pj9J547xUNtrk5FnYE +m 25,26,27,28 sha256=+1jqHQZNEebT5DFJHZIPE35at9TzFCB5hzqDWAxrXGk +r helga AFnZKULbO4TlLrTYfp97GVz00AU ngp++P8hEV+Pj/j9OvvDCyuDqKA 2018-10-14 17:09:42 88.99.216.194 9001 9030 +s Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=409 Measured=328 +p reject 1-65535 +id ed25519 M1nVVuHebCChHayS1hsajAkzpe4c8bEFKP499V3yBG4 +m 25,26,27,28 sha256=//iWXvWzIkvqFqwTf367uZJ2UoNwcrCrLcOs7DY5xvE +r Torpi AHJ/OiwdDxcxqRJnxBFQecFrILQ bLi/i6JuuPmoWm1aGd73dy2tYlA 2018-10-14 15:51:48 110.146.4.151 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.4.29 +pr Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2 +w Bandwidth=92 Measured=14 +p reject 1-65535 +id ed25519 none +m 25,26,27,28 sha256=TiQfeDGlZq6VrCEKFDCA0uvS6hiv8CVMdkLyRxuRZpU +r VeespRU2 AHTsqCvVi4uxkJycTyN/2XebI/w r3AsIyXKvSFzC+5eDuiUgPTmG9g 2018-10-14 09:25:26 185.22.172.237 443 80 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=21300 +p reject 1-65535 +id ed25519 obR35oXyInFbtgitDsbasslq2SNFSTZeI1+2bJfK6HE +m 25,26,27,28 sha256=+tNKyFkcOSA/CufXMtSfprtve7qkoDx4yjGG/XdH6Ec +r Quintex13 AHe8unJE2z5qXtJ0boYXAGZoSIc GwoBS5ddT7ktxwqHjHYNc2u53xU 2018-10-14 07:38:44 199.249.223.62 443 80 +s Exit Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9426 Measured=4550 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8082,8087-8088,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 cHUct3VAkb+T4KQQQg9fLuH5feoGyjxang+Jihs0E80 +m 25,26,27,28 sha256=/JQIKi/L0aSZ8uMKc0DsHBeH2OmsvAj9GbXq8i8QQcE +r UbuntuCore246 AH4Yastcf3fGnzddzt9ZT/1r9pk 9kJql4jbylNMYXhvn4OasP55fck 2018-10-14 11:03:40 77.146.180.194 40523 0 +s V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=382 +p reject 1-65535 +id ed25519 rSPYL+kdnVmyJ9/Ni96SNABxuvE4DDLwO9l9tqeicoA +m 25,26,27,28 sha256=hGcbcAmK7x/tNRe7iBBqNlj6sZByhmhTSwWw/wYZo3s +r torrelay04 AH/ZCOnPz1nmT7pCt1cdLPQBvF0 n5XUymNehFnO8hTftwd4NIozrjQ 2018-10-14 18:52:54 159.69.153.73 9000 0 +a [2a01:4f8:1c1c:5cec::1]:9000 +s Fast Running Stable Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=8030 Measured=8460 +p reject 1-65535 +id ed25519 OJfT1k1R4UB3eNZ7+Mx9MCh9a5RBXqCcqtDfqQw4UvA +m 25,26,27 sha256=R60ONtNwXwpVOajWfWlH4yQ7a6rBYwgLJ87p5wH55fk +m 28 sha256=8oP/xai6UYcjJY5gx9fgrLTYY66vgdAr4y2F+R7tqUQ +r bigamy AH/cDMglli4ShKYaaMk4pmr75XA dMrr7wRTfKoVfCRHLuR0IZFSWsI 2018-10-14 13:28:57 185.24.218.171 9001 8080 +s Exit Fast Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=21600 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 fTOvB48qkzbEyLpBemkuyBv9UieAUeM8RNfCypusrs0 +m 25,26,27,28 sha256=GpLj/6GejSGtvDxUAUrZgarLCVjbcZVDduWCqvShOBk +r zech1989 AI57cMO0p1ILW+q4Bnq83I5j8f0 boK7UYxCaZy4lpe8irfYPFsX6SY 2018-10-14 21:18:08 185.243.53.99 9001 9030 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9726 Measured=3920 +p reject 1-65535 +id ed25519 wPhoSjgH8xrZ/K2wKhYKd2IR6iQ2/pO4V9rIObVIZ30 +m 25,26,27,28 sha256=hx94DElvCTLaJLuCbKr5rShGxcpKpz8f5eZdYhXwfEQ +r paris AJf70aisEQPfmPHoXdUsUPAdOtY 9x4Jiv45IDG4EDSSXfOd+Ss9qtc 2018-10-14 22:06:20 178.19.111.147 9001 8000 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=31600 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 s49ps0kX/BuncEzm6dG6ZmLs7DCanj/WcXlPVt0D7Tw +m 25,26,27,28 sha256=L9vWM3tYYI2RLlnofu1m9nMTckLVSKMXftVTDUwidhw +r jactr AJhR35M3VLAN3odvzkCIzhtJQME RLckbaDnNUH4qGCkOmDo20UwE28 2018-10-14 23:26:36 84.40.112.70 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.9.15 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=131 Measured=37 +p reject 1-65535 +id ed25519 +Jc2Ppp+/hmdtaE8T2uxkZIhOD5/kCEfz8gyDCMiDpg +m 25,26,27,28 sha256=tD+2RMOICoOQRFeZH6D4Kx8mRN4JzhfrtcQs8q78hPA +r IsThisAGoodIdea AJ2M8WzPcSMatc5VyCoDRG2j+Us Gce3qKSpkK8w2D+9k75V7vNdWzI 2018-10-14 16:51:45 220.233.27.93 9001 0 +s Running Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=80 Measured=2 +p reject 1-65535 +id ed25519 peXjh3W6mWzg9iZALqNEDyP3ONQO7Vp9uSzqSszVHOA +m 25,26,27,28 sha256=1jmLpMLTUMJr2IoHyDpGCrc/ZuBakhVUWivZ7NKwAz4 +directory-footer +directory-signature ED03BB616EB2F60BEC80151114BB25CEF515B226 E1249D5F87EAD43CD4A48DF9CFCFE810BEEE5287 +-----BEGIN SIGNATURE----- +sj0ppS2fGOktEGRBXEQJ7KjG+rjBUWNlTUGa9XDbUEbrSDGsKC7ik2r/k0nTCmYI +FFDmaOhIgpEoz8548RkA0ZdKt8SQQHGHQ82zeDQ8IxLP2bsZj+Jmn/NHN3KwUnpc +tc+/olUskXOVpKZaoZDXXTzOSypOhV6MHJFQ6AjkGj6BO6VnTVfmdDNf/McEPQvw +4y6KF3NDjgXoea7sDy6IswuZK+Neia0GPTQVOIit1F06ka2cvOk2gOVEIXqHyGQi +erJUZfMCbKUIX3IFlhuOgnx9x0Wp/U+Jx8JO+i7NxIyUhR56EY1Go6+mxxRR2wTB +p1+T39J1+80MEXuRaguLCg== +-----END SIGNATURE----- diff --git a/src/test/resources/totalcw/2018-10-15-00-00-00-vote-EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97-38C6A19F78948B689345EE41D7119D76246C4D3E.part b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97-38C6A19F78948B689345EE41D7119D76246C4D3E.part new file mode 100644 index 0000000..c7ffb53 --- /dev/null +++ b/src/test/resources/totalcw/2018-10-15-00-00-00-vote-EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97-38C6A19F78948B689345EE41D7119D76246C4D3E.part @@ -0,0 +1,239 @@ +@type network-status-vote-3 1.0 +network-status-version 3 +vote-status vote +consensus-methods 25 26 27 28 +published 2018-10-14 23:50:00 +valid-after 2018-10-15 00:00:00 +fresh-until 2018-10-15 01:00:00 +valid-until 2018-10-15 03:00:00 +voting-delay 300 300 +recommended-relay-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +recommended-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +required-relay-protocols Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=3-4 Microdesc=1 Relay=1-2 +required-client-protocols Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=4 Microdesc=1-2 Relay=2 +known-flags Authority BadExit Exit Fast Guard HSDir Running Stable V2Dir Valid +flag-thresholds stable-uptime=1224875 stable-mtbf=2831347 fast-speed=96000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=9950000 guard-bw-exc-exits=8290000 enough-mtbf=1 ignoring-advertised-bws=1 +params CircuitPriorityHalflifeMsec=30000 DoSCircuitCreationEnabled=1 DoSConnectionEnabled=1 DoSConnectionMaxConcurrentCount=50 DoSRefuseSingleHopClientRendezvous=1 NumDirectoryGuards=3 NumEntryGuards=1 NumNTorsPerTAP=100 Support022HiddenServices=0 UseNTorHandshake=1 UseOptimisticData=1 bwauthpid=1 cbttestfreq=10 hs_service_max_rdv_failures=1 hsdir_spread_store=4 pb_disablepct=0 usecreatefast=0 +dir-source Faravahar EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 154.35.175.225 154.35.175.225 80 443 +contact 0x0B47D56D Sina Rabbani (inf0) <sina redteam net> +shared-rand-participate +shared-rand-commit 1 sha3-256 EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 AAAAAFvD2IDD8w9Bf35KfCrPuE49LIm5bKHISapdb3PoYLGv5ZOo6w== +shared-rand-previous-value 9 Vd2znClwwth89jp91diG/Bs1AH+0ExSgRFmyVOMJwwE= +shared-rand-current-value 9 oiXRUZGkT26O9aQmu/A52utoBF3gp27h0TvJ4gkDHkw= +dir-key-certificate-version 3 +fingerprint EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 +dir-key-published 2018-06-30 16:50:42 +dir-key-expires 2019-06-30 16:50:42 +dir-identity-key +-----BEGIN RSA PUBLIC KEY----- +MIIBigKCAYEAwBmqdD+G0q3smN5OBFHCcK5pQH5G1GIpFJ1JxCVEp92tTK4ZHnot +9RzMfag6zQFqwLaJ+yEb1DOjTdTMfcUTsj5f3GUqPB+U7shSMAvvAAM+Bx/4m1AU +u6sk4XmPB1bCBfcRl4zhnY6XFIbj0ktuBDblcxHz3lDgHFpBoci9sF59mM14MZ09 +EdwgeckcU5oeq6ApuSlUVaOT8xsKV/yeK4SKaFfDclwPAJuitQ5CpqctP7ExmlrY +sboTDtz7/Xa6OccaGDEUf7TRlipvUX6rvlmvHm3qjdixVfExpa8E5QG79GZTL82p +1zBd3iqc6QEnRDTiW9cMUeQt4EvrwOUVVYPWo3hp1C/iiNzWraDays2xuhaSB0gj +fPatu2CFW5XB2vd9IvIiWeklSFqnF8DL38jDL7DbFiETJreGsDMR03yHWVd0MbPz +OrvAxG4tJn+JtnwhzlbRjnfk53jOTbiM0vMV8h/ztapCiJeT/6i7nVQ1xL2boeYw +5RDUlwZaQiaXAgMBAAE= +-----END RSA PUBLIC KEY----- +dir-signing-key +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEA5KK/zS8zPPinA7QGbcPEPH90hoagF9EmvvgYjQ8m2L2g15/3WrdQ +J8Ue0n0JaOb2crZEJ+d1IwbvX9mFpFx4xNsGA3CPg1/RAHwvmB7HctGOO39Y+I4h +KLyV4AWVPXb7uvWr8Stec9sW6QLwkz2bhW61DvBlCapBzQPPqm2R+dNCUXE6ATQv +se8jzggu1YHKk5GSLrXUvuWKbZFBb5WKaZjRXAXt3I9jSS61SG6rxJmM7uujfrkF +UOmb5T83oWCU1zgjyz5bs0j39A7K+FxQPlMUYUe8eyo0dNu6bwSwnm0C6JGmEZXn +ee+KeQd6Kai8++uOiPWxfqIpSD8XkF0PkwIDAQAB +-----END RSA PUBLIC KEY----- +dir-key-crosscert +-----BEGIN ID SIGNATURE----- +gVMfY1HWevSFyr5COCTcd3Y7MdSF1WnaSNUQ1YjGrM1TC4leTRAuJ1ds1uQ/jt4w +0vbM+1X0PRuOeb7o3+Cdn2DAgjeZE5R2BCk/qowXwxHpGwCjsjkCAhHWoiXtNprj +hUveHhMgESRK5e7l/bXC/EIFnwvmw1caQZdfwMsxzJMU8is3XJGZIEtHgAvk5AzV +SUL+CamS/S22FdHKzvsxtLM54lWu2IQZh3QYKQnST3kdDg2fVO8eDSn5iROS58oU +FRB8duf4knv2PGPaCB9SVfM4XouXePZZkC73VEvqnjQSxjYK3yP/msL/bbqwIgu9 +6DE1Rfqw3bfT3/yObotAYg== +-----END ID SIGNATURE----- +dir-key-certification +-----BEGIN SIGNATURE----- +ZfZ6bRHneOwthgn3/yKeLTixlaj/xVBEtFGrB5sISPAOS3XddBPMR1w2eGMZ5Dlm +DT6Gd+C4jTOt3KjMo0NiJVpWJBNqb9sBUR0Qkc23urjgvWvy8e9AmaIKFuTrtNCX +4qHFs3ZDElNwyIQEhLsLTtbKd1/EO0rDUlhKOT1U4rJAc+Vc51FqlFPHON8d34GK +Qsmj+njIsMV06K1XO9TF4ERtbglzFAw+QjrzEsUSa3EIzmeYAxekiWI/KfG38WuL +zW+11z0aJbGRtbfQbTbOuq02R3VlpkyxKDwOn0lOCXdUUpN2BK5+noAxyZeESjuN ++1rzNl5QdHgOddQA8rwUeeLYpCublWiDpm231K4q/CrT0+PJTjApfyGY5OK9HSUB +pF/wudq+aeGT94w6A27YAQufzRYZssJZx/XOD+ptY22ddJMF8d5vvL4ZqAkd6HI6 +V55pW4NgCu6pAliAarFo3y0SUXQaiDSOzJiB9Sm6NyPpVvmVywfUvD7380u6YHf/ +-----END SIGNATURE----- +r seele AAoQ1DAR6kkoo19hBAX5K0QztNw xlbC5aW8ovDVh2t6VcKF/phheSg 2018-10-14 21:41:22 67.174.243.193 9001 0 +s Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=60 Measured=15 +p reject 1-65535 +id ed25519 ZtzhbIWHJpGQG+5N7hbRTtenyzq2RNJrx0QegtoY+bY +m 25,26,27,28 sha256=4l7u4Oy1sCG/08MtsHimtWtaC1ydC/GOtCqRD/5ewgs +r PutoElQueLee293884 AAwffNL+oHO5EdyUoWAOwvEX3ws Ay3cnaaHjnolSRe3ZjKcGlY17Q8 2018-10-14 08:06:47 174.127.217.73 55554 0 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=4950 Measured=5550 +p reject 1-65535 +id ed25519 /58lPWzxxQfwoxed8I9l+D3+hTdOQ6RpgVgM9FCxil4 +m 25,26,27,28 sha256=0/b37HV9enGTzbwrxxg/0R5PfwRtRosXgtU5+vi/gBk +r CalyxInstitute14 ABG9JIWtRdmE7EFZyI/AZuXjMA4 +8xNQyAVPkKgtLH0AISVZFNuAq0 2018-10-14 11:10:20 162.247.74.201 443 80 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=12900 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464,531,543-544,554,563,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8087-8088,8332-8333,8443,8888,9418,9999-10000,11371,12350,19294,19638,23456,33033,64738 +id ed25519 /AcSvVFxaIBxaB5I/7mwdVbMdP6JjDsEPVLU6Hj22a0 +m 25,26,27,28 sha256=7nBT4mYr4H5Jj71Qq7Nan7R7KqWPTRG89Oq1/5m4c1M +r Neldoreth ABUk3UA9cp8I9+XXeBPvEnVs+o0 nms8ZM18C/K5XzLmgO5fHchjhFc 2018-10-14 19:09:56 185.13.39.197 443 80 +s Fast Guard Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=5242 Measured=8480 +p reject 1-65535 +id ed25519 eZ49J/mRCMtMbD2GDZsjZm/gqqG9z5S6M5GykZmd2ro +m 25,26,27,28 sha256=IxCWEdRM6Hqk1fiYx+DK9ufUPI49SE6Z4C8onbsBVXo +r UbuntuCore246 ACenhGJF+i26Aj46wfqAaI8dc7s EmwRg8iMnKJc8GEusZxhsVf9PJI 2018-10-14 23:13:35 212.199.61.38 43511 0 +s Fast V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=121 Measured=120 +p reject 1-65535 +id ed25519 crWebog3RcKMV49zyu6pF5A/MxQM89x2cKNRK1wbTjM +m 25,26,27,28 sha256=98nmfhxVBZqk7VUfyXQWpJmLAfWloZtMXu5H9FVt+p8 +r rotor25 ADQsDhVdRULlU5F4iy13nxRXjes m/3hkTP+ETmoYWZ3JrniJAeRHho 2018-10-14 17:19:08 188.24.22.193 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=3987 Measured=5580 +p reject 1-65535 +id ed25519 8ybCWdul+E3HdzEb1YR3Fbp6EIwnGGPsUhsSh7FUnfs +m 25,26,27,28 sha256=ZeMCL1T4SogPYK0iyuzYZoyFx+mp9/Ng8vGmE8wI9rU +r torbogen AEHgFQsKMHUGwoY+/J8rfjpSOzY DXa3G+iPbGQo4AK2iazVY6R4eKs 2018-10-14 20:19:33 178.142.72.49 9001 9030 +s Fast Running V2Dir Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=1275 Measured=1430 +p reject 1-65535 +id ed25519 NzIv9KWavK4f+6426ctrr9UnsFl/Yt8ixEAP6OO/kVo +m 25,26,27,28 sha256=lFXLHMP6Map0qD298F+eeybL4pqtXDRG7a7r4R7knlw +r nicolass67atoll AES/YhfxWxj3ZvK1O85bPg4BV+k iK+QhopNtEipMSL+EeI6b/DitVc 2018-10-14 15:48:15 163.172.10.89 9001 0 +s Fast Running Stable V2Dir Valid +v Tor 0.2.9.16 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=1048 Measured=773 +p reject 1-65535 +id ed25519 ++ezzEs6r+0m0YDwFAjwpIIbNKtzMbKB13osAAoGQ/c +m 25,26,27,28 sha256=kGlToMt+rD0tL3N+5Plqj8Nav1FVQMiSYpz0adtzs0I +r zzzzzzzzzzzzzzzzzzz AEVz/pNLpV0H2ucjF3k69OQbdbY 1FUGYNQtQo1MgV4jRP2XJapWemI 2018-10-14 23:43:10 77.12.174.141 9002 9031 +s Fast Running V2Dir Valid +v Tor 0.3.2.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=565 Measured=189 +p reject 1-65535 +id ed25519 QnM3RTCh53wbKiC6N6IsCQHs3pj9J547xUNtrk5FnYE +m 25,26,27,28 sha256=+1jqHQZNEebT5DFJHZIPE35at9TzFCB5hzqDWAxrXGk +r helga AFnZKULbO4TlLrTYfp97GVz00AU ngp++P8hEV+Pj/j9OvvDCyuDqKA 2018-10-14 17:09:42 88.99.216.194 9001 9030 +s Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=409 Measured=254 +p reject 1-65535 +id ed25519 M1nVVuHebCChHayS1hsajAkzpe4c8bEFKP499V3yBG4 +m 25,26,27,28 sha256=//iWXvWzIkvqFqwTf367uZJ2UoNwcrCrLcOs7DY5xvE +r Torpi AHJ/OiwdDxcxqRJnxBFQecFrILQ bLi/i6JuuPmoWm1aGd73dy2tYlA 2018-10-14 15:51:48 110.146.4.151 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.4.29 +pr Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2 +w Bandwidth=92 Measured=31 +p reject 1-65535 +id ed25519 none +m 25,26,27,28 sha256=TiQfeDGlZq6VrCEKFDCA0uvS6hiv8CVMdkLyRxuRZpU +r VeespRU2 AHTsqCvVi4uxkJycTyN/2XebI/w r3AsIyXKvSFzC+5eDuiUgPTmG9g 2018-10-14 09:25:26 185.22.172.237 443 80 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.3.7 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=26700 +p reject 1-65535 +id ed25519 obR35oXyInFbtgitDsbasslq2SNFSTZeI1+2bJfK6HE +m 25,26,27,28 sha256=+tNKyFkcOSA/CufXMtSfprtve7qkoDx4yjGG/XdH6Ec +r Quintex13 AHe8unJE2z5qXtJ0boYXAGZoSIc GwoBS5ddT7ktxwqHjHYNc2u53xU 2018-10-14 07:38:44 199.249.223.62 443 80 +s Exit Fast HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9426 Measured=5000 +p accept 20-23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,873,902-904,981,989-995,1194,1220,1293,1500,1533,1677,1723,1755,1863,2082-2083,2086-2087,2095-2096,2102-2104,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000,8008,8074,8080,8082,8087-8088,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 cHUct3VAkb+T4KQQQg9fLuH5feoGyjxang+Jihs0E80 +m 25,26,27,28 sha256=/JQIKi/L0aSZ8uMKc0DsHBeH2OmsvAj9GbXq8i8QQcE +r UbuntuCore246 AH4Yastcf3fGnzddzt9ZT/1r9pk 9kJql4jbylNMYXhvn4OasP55fck 2018-10-14 11:03:40 77.146.180.194 40523 0 +s V2Dir Valid +v Tor 0.3.3.10 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=382 Measured=19 +p reject 1-65535 +id ed25519 rSPYL+kdnVmyJ9/Ni96SNABxuvE4DDLwO9l9tqeicoA +m 25,26,27,28 sha256=hGcbcAmK7x/tNRe7iBBqNlj6sZByhmhTSwWw/wYZo3s +r torrelay04 AH/ZCOnPz1nmT7pCt1cdLPQBvF0 n5XUymNehFnO8hTftwd4NIozrjQ 2018-10-14 18:52:54 159.69.153.73 9000 0 +a [2a01:4f8:1c1c:5cec::1]:9000 +s Fast Running Stable Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=8030 Measured=9010 +p reject 1-65535 +id ed25519 OJfT1k1R4UB3eNZ7+Mx9MCh9a5RBXqCcqtDfqQw4UvA +m 25,26,27 sha256=R60ONtNwXwpVOajWfWlH4yQ7a6rBYwgLJ87p5wH55fk +m 28 sha256=8oP/xai6UYcjJY5gx9fgrLTYY66vgdAr4y2F+R7tqUQ +r bigamy AH/cDMglli4ShKYaaMk4pmr75XA dMrr7wRTfKoVfCRHLuR0IZFSWsI 2018-10-14 13:28:57 185.24.218.171 9001 8080 +s Exit Fast Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=30400 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 fTOvB48qkzbEyLpBemkuyBv9UieAUeM8RNfCypusrs0 +m 25,26,27,28 sha256=GpLj/6GejSGtvDxUAUrZgarLCVjbcZVDduWCqvShOBk +r zech1989 AI57cMO0p1ILW+q4Bnq83I5j8f0 boK7UYxCaZy4lpe8irfYPFsX6SY 2018-10-14 21:18:08 185.243.53.99 9001 9030 +s Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=9726 Measured=11300 +p reject 1-65535 +id ed25519 wPhoSjgH8xrZ/K2wKhYKd2IR6iQ2/pO4V9rIObVIZ30 +m 25,26,27,28 sha256=hx94DElvCTLaJLuCbKr5rShGxcpKpz8f5eZdYhXwfEQ +r paris AJf70aisEQPfmPHoXdUsUPAdOtY 9x4Jiv45IDG4EDSSXfOd+Ss9qtc 2018-10-14 22:06:20 178.19.111.147 9001 8000 +s Exit Fast Guard HSDir Running Stable V2Dir Valid +v Tor 0.3.4.8 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=10000 Measured=40700 +p accept 20-21,23,43,53,79-81,88,110,143,194,220,389,443,464-465,531,543-544,554,563,587,636,706,749,853,873,902-904,981,989-995,1220,1293,1500,1533,1677,1723,1755,1863,2082-2087,2095-2096,2102-2104,2374-2382,3128,3389,3690,4321,4643,5050,5190,5222-5223,5228,5900,6660-6669,6679,6697,8000-8100,8232-8233,8332-8333,8443,8888,9418,9999-10000,11371,19294,19638,50002,64738 +id ed25519 s49ps0kX/BuncEzm6dG6ZmLs7DCanj/WcXlPVt0D7Tw +m 25,26,27,28 sha256=L9vWM3tYYI2RLlnofu1m9nMTckLVSKMXftVTDUwidhw +r jactr AJhR35M3VLAN3odvzkCIzhtJQME RLckbaDnNUH4qGCkOmDo20UwE28 2018-10-14 23:26:36 84.40.112.70 9001 9030 +s Running Stable V2Dir Valid +v Tor 0.2.9.15 +pr Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2 +w Bandwidth=131 Measured=77 +p reject 1-65535 +id ed25519 +Jc2Ppp+/hmdtaE8T2uxkZIhOD5/kCEfz8gyDCMiDpg +m 25,26,27,28 sha256=tD+2RMOICoOQRFeZH6D4Kx8mRN4JzhfrtcQs8q78hPA +r IsThisAGoodIdea AJ2M8WzPcSMatc5VyCoDRG2j+Us Gce3qKSpkK8w2D+9k75V7vNdWzI 2018-10-14 16:51:45 220.233.27.93 9001 0 +s Running Valid +v Tor 0.3.3.9 +pr Cons=1-2 Desc=1-2 DirCache=1-2 HSDir=1-2 HSIntro=3-4 HSRend=1-2 Link=1-5 LinkAuth=1,3 Microdesc=1-2 Relay=1-2 +w Bandwidth=80 Measured=6 +p reject 1-65535 +id ed25519 peXjh3W6mWzg9iZALqNEDyP3ONQO7Vp9uSzqSszVHOA +m 25,26,27,28 sha256=1jmLpMLTUMJr2IoHyDpGCrc/ZuBakhVUWivZ7NKwAz4 +directory-footer +directory-signature EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 517095062288D1B5C7BD6517A677C586D996818B +-----BEGIN SIGNATURE----- +RdWrXeRxh4lZB1oTsOTy+AcYFruKg6Xzfl/D/srqmSfihcLoBIwWXePe2aLDycTj +fcLPRt3HUnHzII61reqsVKzDXGAybMdYpPE9kygA60INsyAYFAdigMEDwY0C2qIZ +MMJrSyORovHh4YOQHoesZPDgCUuYkuAjheKwwxdJ4O6mcYJyusm9OWVy8Iej4lKW +ySFXC6sQt3L81MVAE24eBA1eTmUUf3fWpK/UbD0GjHYD8J+qgxm8hDwrYwVUQKmU +u3RuRcuPYfC0tPgKLNB8sHP2o292q026M8RbcE0GnvPBQS6r2uIDfBfQLETwg0do +h7HVCq11GZIdYe4eCZu8rQ== +-----END SIGNATURE-----