Loading src/main/java/org/torproject/collector/Main.java +2 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ import java.util.Map; */ public class Main { private static Logger log = LoggerFactory.getLogger(Main.class); private static final Logger log = LoggerFactory.getLogger(Main.class); public static final String CONF_FILE = "collector.properties"; /** All possible main classes. Loading src/main/java/org/torproject/collector/bridgedescs/BridgeDescriptorParser.java +3 −4 Original line number Diff line number Diff line Loading @@ -16,14 +16,13 @@ public class BridgeDescriptorParser { private SanitizedBridgesWriter sbw; private Logger logger; private static final Logger logger = LoggerFactory.getLogger( BridgeDescriptorParser.class); /** Initializes a new bridge descriptor parser and links it to a * sanitized bridges writer to sanitize and store bridge descriptors. */ public BridgeDescriptorParser(SanitizedBridgesWriter sbw) { this.sbw = sbw; this.logger = LoggerFactory.getLogger(BridgeDescriptorParser.class); } /** Parses the first line of the given descriptor data to determine the Loading @@ -50,7 +49,7 @@ public class BridgeDescriptorParser { } } } catch (IOException e) { this.logger.warn("Could not parse bridge descriptor.", e); logger.warn("Could not parse bridge descriptor.", e); return; } } Loading src/main/java/org/torproject/collector/bridgedescs/BridgeSnapshotReader.java +3 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ import java.util.TreeSet; public class BridgeSnapshotReader { private static final Logger logger = LoggerFactory.getLogger( BridgeSnapshotReader.class); /** * Reads the half-hourly snapshots of bridge descriptors from Tonga. */ Loading @@ -41,7 +44,6 @@ public class BridgeSnapshotReader { throw new IllegalArgumentException(); } Logger logger = LoggerFactory.getLogger(BridgeSnapshotReader.class); SortedSet<String> parsed = new TreeSet<String>(); File bdDir = bridgeDirectoriesDir; File pbdFile = new File(statsDirectory, "parsed-bridge-directories"); Loading src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java +50 −49 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ import java.util.TreeMap; */ public class SanitizedBridgesWriter extends CollecTorMain { private static Logger logger = LoggerFactory.getLogger(SanitizedBridgesWriter.class); private static final Logger logger = LoggerFactory.getLogger( SanitizedBridgesWriter.class); public SanitizedBridgesWriter(Configuration config) { super(config); Loading Loading @@ -117,7 +118,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { try { this.secureRandom = SecureRandom.getInstance("SHA1PRNG", "SUN"); } catch (GeneralSecurityException e) { this.logger.warn("Could not initialize secure " logger.warn("Could not initialize secure " + "random number generator! Not calculating any IP address " + "hashes in this execution!", e); this.persistenceProblemWithSecrets = true; Loading @@ -139,7 +140,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if ((line.length() != ("yyyy-MM,".length() + 31 * 2) && line.length() != ("yyyy-MM,".length() + 50 * 2)) || parts.length != 2) { this.logger.warn("Invalid line in bridge-ip-secrets file " logger.warn("Invalid line in bridge-ip-secrets file " + "starting with '" + line.substring(0, 7) + "'! " + "Not calculating any IP address hashes in this " + "execution!"); Loading @@ -152,17 +153,17 @@ public class SanitizedBridgesWriter extends CollecTorMain { } br.close(); if (!this.persistenceProblemWithSecrets) { this.logger.debug("Read " logger.debug("Read " + this.secretsForHashingIpAddresses.size() + " secrets for " + "hashing bridge IP addresses."); } } catch (DecoderException e) { this.logger.warn("Failed to decode hex string in " logger.warn("Failed to decode hex string in " + this.bridgeIpSecretsFile + "! Not calculating any IP " + "address hashes in this execution!", e); this.persistenceProblemWithSecrets = true; } catch (IOException e) { this.logger.warn("Failed to read " logger.warn("Failed to read " + this.bridgeIpSecretsFile + "! Not calculating any IP " + "address hashes in this execution!", e); this.persistenceProblemWithSecrets = true; Loading Loading @@ -344,7 +345,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { } if (month.compareTo( this.bridgeSanitizingCutOffTimestamp) < 0) { this.logger.warn("Generated a secret that we won't make " logger.warn("Generated a secret that we won't make " + "persistent, because it's outside our bridge descriptor " + "sanitizing interval."); } else { Loading @@ -360,7 +361,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.write(month + "," + Hex.encodeHexString(secret) + "\n"); bw.close(); } catch (IOException e) { this.logger.warn("Could not store new secret " logger.warn("Could not store new secret " + "to disk! Not calculating any IP address hashes in " + "this execution!", e); this.persistenceProblemWithSecrets = true; Loading Loading @@ -396,9 +397,9 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "publication time outside our descriptor sanitizing " + "interval."; if (this.haveWarnedAboutInterval) { this.logger.debug(text); logger.debug(text); } else { this.logger.warn(text); logger.warn(text); this.haveWarnedAboutInterval = true; } } Loading Loading @@ -484,7 +485,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (scrubbedOrAddress != null) { scrubbed.append("a " + scrubbedOrAddress + "\n"); } else { this.logger.warn("Invalid address in line '" + line logger.warn("Invalid address in line '" + line + "' in bridge network status. Skipping line!"); } Loading @@ -498,7 +499,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { * network status. If there is, we should probably learn before * writing anything to the sanitized descriptors. */ } else { this.logger.debug("Unknown line '" + line + "' in bridge " logger.debug("Unknown line '" + line + "' in bridge " + "network status. Not writing to disk!"); return; } Loading @@ -518,18 +519,18 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (formatter.parse(publicationTime).getTime() - formatter.parse(mostRecentDescPublished).getTime() > 60L * 60L * 1000L) { this.logger.warn("The most recent descriptor in the bridge " logger.warn("The most recent descriptor in the bridge " + "network status published at " + publicationTime + " was " + "published at " + mostRecentDescPublished + " which is " + "more than 1 hour before the status. This is a sign for " + "the status being stale. Please check!"); } } catch (ParseException e) { this.logger.warn("Could not parse timestamp in " logger.warn("Could not parse timestamp in " + "bridge network status.", e); return; } catch (IOException e) { this.logger.warn("Could not parse bridge network " logger.warn("Could not parse bridge network " + "status.", e); return; } Loading Loading @@ -563,7 +564,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (IOException e) { this.logger.warn("Could not write sanitized bridge " logger.warn("Could not write sanitized bridge " + "network status to disk.", e); return; } Loading Loading @@ -634,9 +635,9 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "server descriptor with publication time outside our " + "descriptor sanitizing interval."; if (this.haveWarnedAboutInterval) { this.logger.debug(text); logger.debug(text); } else { this.logger.warn(text); logger.warn(text); this.haveWarnedAboutInterval = true; } } Loading Loading @@ -664,7 +665,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (scrubbedOrAddress != null) { scrubbedOrAddresses.add(scrubbedOrAddress); } else { this.logger.warn("Invalid address in line " logger.warn("Invalid address in line " + "'or-address " + orAddress + "' in bridge server " + "descriptor. Skipping line!"); } Loading Loading @@ -754,7 +755,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "\n"); if (masterKeyEd25519 != null && !masterKeyEd25519.equals( masterKeyEd25519FromIdentityEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading @@ -765,7 +766,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (masterKeyEd25519FromIdentityEd25519 != null && !masterKeyEd25519FromIdentityEd25519.equals( masterKeyEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading Loading @@ -832,14 +833,14 @@ public class SanitizedBridgesWriter extends CollecTorMain { * that we need to remove or replace for the sanitized descriptor * version. */ } else { this.logger.warn("Unrecognized line '" + line logger.warn("Unrecognized line '" + line + "'. Skipping."); return; } } br.close(); } catch (Exception e) { this.logger.warn("Could not parse server " logger.warn("Could not parse server " + "descriptor.", e); return; } Loading @@ -861,7 +862,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigest == null) { this.logger.warn("Could not calculate server " logger.warn("Could not calculate server " + "descriptor digest."); return; } Loading @@ -884,7 +885,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigestSha256Base64 == null) { this.logger.warn("Could not calculate server " logger.warn("Could not calculate server " + "descriptor SHA256 digest."); return; } Loading Loading @@ -925,7 +926,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (ConfigurationException | IOException e) { this.logger.warn("Could not write sanitized server " logger.warn("Could not write sanitized server " + "descriptor to disk.", e); return; } Loading @@ -935,26 +936,26 @@ public class SanitizedBridgesWriter extends CollecTorMain { String identityEd25519Base64) { byte[] identityEd25519 = Base64.decodeBase64(identityEd25519Base64); if (identityEd25519.length < 40) { this.logger.warn("Invalid length of identity-ed25519 (in " logger.warn("Invalid length of identity-ed25519 (in " + "bytes): " + identityEd25519.length); } else if (identityEd25519[0] != 0x01) { this.logger.warn("Unknown version in identity-ed25519: " logger.warn("Unknown version in identity-ed25519: " + identityEd25519[0]); } else if (identityEd25519[1] != 0x04) { this.logger.warn("Unknown cert type in identity-ed25519: " logger.warn("Unknown cert type in identity-ed25519: " + identityEd25519[1]); } else if (identityEd25519[6] != 0x01) { this.logger.warn("Unknown certified key type in " logger.warn("Unknown certified key type in " + "identity-ed25519: " + identityEd25519[1]); } else if (identityEd25519[39] == 0x00) { this.logger.warn("No extensions in identity-ed25519 (which " logger.warn("No extensions in identity-ed25519 (which " + "would contain the encoded master-key-ed25519): " + identityEd25519[39]); } else { int extensionStart = 40; for (int i = 0; i < (int) identityEd25519[39]; i++) { if (identityEd25519.length < extensionStart + 4) { this.logger.warn("Invalid extension with id " + i logger.warn("Invalid extension with id " + i + " in identity-ed25519."); break; } Loading @@ -964,7 +965,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { int extensionType = identityEd25519[extensionStart + 2]; if (extensionLength == 32 && extensionType == 4) { if (identityEd25519.length < extensionStart + 4 + 32) { this.logger.warn("Invalid extension with id " + i logger.warn("Invalid extension with id " + i + " in identity-ed25519."); break; } Loading @@ -980,7 +981,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { extensionStart += 4 + extensionLength; } } this.logger.warn("Unable to locate master-key-ed25519 in " logger.warn("Unable to locate master-key-ed25519 in " + "identity-ed25519."); return null; } Loading Loading @@ -1028,7 +1029,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { * name. */ } else if (line.startsWith("transport ")) { if (parts.length < 3) { this.logger.debug("Illegal line in extra-info descriptor: '" logger.debug("Illegal line in extra-info descriptor: '" + line + "'. Skipping descriptor."); return; } Loading Loading @@ -1058,7 +1059,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "\n"); if (masterKeyEd25519 != null && !masterKeyEd25519.equals( masterKeyEd25519FromIdentityEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading @@ -1069,7 +1070,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (masterKeyEd25519FromIdentityEd25519 != null && !masterKeyEd25519FromIdentityEd25519.equals( masterKeyEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading Loading @@ -1106,18 +1107,18 @@ public class SanitizedBridgesWriter extends CollecTorMain { * that we need to remove or replace for the sanitized descriptor * version. */ } else { this.logger.warn("Unrecognized line '" + line logger.warn("Unrecognized line '" + line + "'. Skipping."); return; } } br.close(); } catch (IOException e) { this.logger.warn("Could not parse extra-info " logger.warn("Could not parse extra-info " + "descriptor.", e); return; } catch (DecoderException e) { this.logger.warn("Could not parse extra-info " logger.warn("Could not parse extra-info " + "descriptor.", e); return; } Loading @@ -1139,7 +1140,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigest == null) { this.logger.warn("Could not calculate extra-info " logger.warn("Could not calculate extra-info " + "descriptor digest."); return; } Loading @@ -1162,7 +1163,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigestSha256Base64 == null) { this.logger.warn("Could not calculate extra-info " logger.warn("Could not calculate extra-info " + "descriptor SHA256 digest."); return; } Loading Loading @@ -1203,7 +1204,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (Exception e) { this.logger.warn("Could not write sanitized " logger.warn("Could not write sanitized " + "extra-info descriptor to disk.", e); } } Loading Loading @@ -1237,10 +1238,10 @@ public class SanitizedBridgesWriter extends CollecTorMain { } } bw.close(); this.logger.info("Deleted " + deleted + " secrets that we don't " logger.info("Deleted " + deleted + " secrets that we don't " + "need anymore and kept " + kept + "."); } catch (IOException e) { this.logger.warn("Could not store reduced set of " logger.warn("Could not store reduced set of " + "secrets to disk! This is a bad sign, better check what's " + "going on!", e); } Loading @@ -1257,7 +1258,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { dateTimeFormat.parse(maxNetworkStatusPublishedTime).getTime(); if (maxNetworkStatusPublishedMillis > 0L && maxNetworkStatusPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge network status was " logger.warn("The last known bridge network status was " + "published " + maxNetworkStatusPublishedTime + ", which is " + "more than 5:30 hours in the past."); } Loading @@ -1266,7 +1267,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { .getTime(); if (maxServerDescriptorPublishedMillis > 0L && maxServerDescriptorPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge server descriptor was " logger.warn("The last known bridge server descriptor was " + "published " + maxServerDescriptorPublishedTime + ", which " + "is more than 5:30 hours in the past."); } Loading @@ -1275,12 +1276,12 @@ public class SanitizedBridgesWriter extends CollecTorMain { .getTime(); if (maxExtraInfoDescriptorPublishedMillis > 0L && maxExtraInfoDescriptorPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge extra-info descriptor " logger.warn("The last known bridge extra-info descriptor " + "was published " + maxExtraInfoDescriptorPublishedTime + ", which is more than 5:30 hours in the past."); } } catch (ParseException e) { this.logger.warn("Unable to parse timestamp for " logger.warn("Unable to parse timestamp for " + "stale check.", e); } } Loading src/main/java/org/torproject/collector/conf/Configuration.java +5 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ import java.util.concurrent.TimeUnit; */ public class Configuration extends Observable implements Cloneable { private static final Logger log = LoggerFactory.getLogger(Configuration.class); private static final Logger logger = LoggerFactory.getLogger( Configuration.class); private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); Loading Loading @@ -55,18 +56,18 @@ public class Configuration extends Observable implements Cloneable { } this.scheduler.scheduleAtFixedRate(new Runnable() { public void run() { log.trace("Check configuration file."); logger.trace("Check configuration file."); try { FileTime ftNow = Files.getLastModifiedTime(confPath); if (ft.compareTo(ftNow) < 0) { log.info("Configuration file was changed."); logger.info("Configuration file was changed."); reload(); setChanged(); notifyObservers(null); } ft = ftNow; } catch (Throwable th) { // Catch all and keep running. log.error("Cannot reload configuration file.", th); logger.error("Cannot reload configuration file.", th); } } }, 5, 5, TimeUnit.SECONDS); Loading Loading
src/main/java/org/torproject/collector/Main.java +2 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ import java.util.Map; */ public class Main { private static Logger log = LoggerFactory.getLogger(Main.class); private static final Logger log = LoggerFactory.getLogger(Main.class); public static final String CONF_FILE = "collector.properties"; /** All possible main classes. Loading
src/main/java/org/torproject/collector/bridgedescs/BridgeDescriptorParser.java +3 −4 Original line number Diff line number Diff line Loading @@ -16,14 +16,13 @@ public class BridgeDescriptorParser { private SanitizedBridgesWriter sbw; private Logger logger; private static final Logger logger = LoggerFactory.getLogger( BridgeDescriptorParser.class); /** Initializes a new bridge descriptor parser and links it to a * sanitized bridges writer to sanitize and store bridge descriptors. */ public BridgeDescriptorParser(SanitizedBridgesWriter sbw) { this.sbw = sbw; this.logger = LoggerFactory.getLogger(BridgeDescriptorParser.class); } /** Parses the first line of the given descriptor data to determine the Loading @@ -50,7 +49,7 @@ public class BridgeDescriptorParser { } } } catch (IOException e) { this.logger.warn("Could not parse bridge descriptor.", e); logger.warn("Could not parse bridge descriptor.", e); return; } } Loading
src/main/java/org/torproject/collector/bridgedescs/BridgeSnapshotReader.java +3 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ import java.util.TreeSet; public class BridgeSnapshotReader { private static final Logger logger = LoggerFactory.getLogger( BridgeSnapshotReader.class); /** * Reads the half-hourly snapshots of bridge descriptors from Tonga. */ Loading @@ -41,7 +44,6 @@ public class BridgeSnapshotReader { throw new IllegalArgumentException(); } Logger logger = LoggerFactory.getLogger(BridgeSnapshotReader.class); SortedSet<String> parsed = new TreeSet<String>(); File bdDir = bridgeDirectoriesDir; File pbdFile = new File(statsDirectory, "parsed-bridge-directories"); Loading
src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java +50 −49 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ import java.util.TreeMap; */ public class SanitizedBridgesWriter extends CollecTorMain { private static Logger logger = LoggerFactory.getLogger(SanitizedBridgesWriter.class); private static final Logger logger = LoggerFactory.getLogger( SanitizedBridgesWriter.class); public SanitizedBridgesWriter(Configuration config) { super(config); Loading Loading @@ -117,7 +118,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { try { this.secureRandom = SecureRandom.getInstance("SHA1PRNG", "SUN"); } catch (GeneralSecurityException e) { this.logger.warn("Could not initialize secure " logger.warn("Could not initialize secure " + "random number generator! Not calculating any IP address " + "hashes in this execution!", e); this.persistenceProblemWithSecrets = true; Loading @@ -139,7 +140,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if ((line.length() != ("yyyy-MM,".length() + 31 * 2) && line.length() != ("yyyy-MM,".length() + 50 * 2)) || parts.length != 2) { this.logger.warn("Invalid line in bridge-ip-secrets file " logger.warn("Invalid line in bridge-ip-secrets file " + "starting with '" + line.substring(0, 7) + "'! " + "Not calculating any IP address hashes in this " + "execution!"); Loading @@ -152,17 +153,17 @@ public class SanitizedBridgesWriter extends CollecTorMain { } br.close(); if (!this.persistenceProblemWithSecrets) { this.logger.debug("Read " logger.debug("Read " + this.secretsForHashingIpAddresses.size() + " secrets for " + "hashing bridge IP addresses."); } } catch (DecoderException e) { this.logger.warn("Failed to decode hex string in " logger.warn("Failed to decode hex string in " + this.bridgeIpSecretsFile + "! Not calculating any IP " + "address hashes in this execution!", e); this.persistenceProblemWithSecrets = true; } catch (IOException e) { this.logger.warn("Failed to read " logger.warn("Failed to read " + this.bridgeIpSecretsFile + "! Not calculating any IP " + "address hashes in this execution!", e); this.persistenceProblemWithSecrets = true; Loading Loading @@ -344,7 +345,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { } if (month.compareTo( this.bridgeSanitizingCutOffTimestamp) < 0) { this.logger.warn("Generated a secret that we won't make " logger.warn("Generated a secret that we won't make " + "persistent, because it's outside our bridge descriptor " + "sanitizing interval."); } else { Loading @@ -360,7 +361,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.write(month + "," + Hex.encodeHexString(secret) + "\n"); bw.close(); } catch (IOException e) { this.logger.warn("Could not store new secret " logger.warn("Could not store new secret " + "to disk! Not calculating any IP address hashes in " + "this execution!", e); this.persistenceProblemWithSecrets = true; Loading Loading @@ -396,9 +397,9 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "publication time outside our descriptor sanitizing " + "interval."; if (this.haveWarnedAboutInterval) { this.logger.debug(text); logger.debug(text); } else { this.logger.warn(text); logger.warn(text); this.haveWarnedAboutInterval = true; } } Loading Loading @@ -484,7 +485,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (scrubbedOrAddress != null) { scrubbed.append("a " + scrubbedOrAddress + "\n"); } else { this.logger.warn("Invalid address in line '" + line logger.warn("Invalid address in line '" + line + "' in bridge network status. Skipping line!"); } Loading @@ -498,7 +499,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { * network status. If there is, we should probably learn before * writing anything to the sanitized descriptors. */ } else { this.logger.debug("Unknown line '" + line + "' in bridge " logger.debug("Unknown line '" + line + "' in bridge " + "network status. Not writing to disk!"); return; } Loading @@ -518,18 +519,18 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (formatter.parse(publicationTime).getTime() - formatter.parse(mostRecentDescPublished).getTime() > 60L * 60L * 1000L) { this.logger.warn("The most recent descriptor in the bridge " logger.warn("The most recent descriptor in the bridge " + "network status published at " + publicationTime + " was " + "published at " + mostRecentDescPublished + " which is " + "more than 1 hour before the status. This is a sign for " + "the status being stale. Please check!"); } } catch (ParseException e) { this.logger.warn("Could not parse timestamp in " logger.warn("Could not parse timestamp in " + "bridge network status.", e); return; } catch (IOException e) { this.logger.warn("Could not parse bridge network " logger.warn("Could not parse bridge network " + "status.", e); return; } Loading Loading @@ -563,7 +564,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (IOException e) { this.logger.warn("Could not write sanitized bridge " logger.warn("Could not write sanitized bridge " + "network status to disk.", e); return; } Loading Loading @@ -634,9 +635,9 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "server descriptor with publication time outside our " + "descriptor sanitizing interval."; if (this.haveWarnedAboutInterval) { this.logger.debug(text); logger.debug(text); } else { this.logger.warn(text); logger.warn(text); this.haveWarnedAboutInterval = true; } } Loading Loading @@ -664,7 +665,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (scrubbedOrAddress != null) { scrubbedOrAddresses.add(scrubbedOrAddress); } else { this.logger.warn("Invalid address in line " logger.warn("Invalid address in line " + "'or-address " + orAddress + "' in bridge server " + "descriptor. Skipping line!"); } Loading Loading @@ -754,7 +755,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "\n"); if (masterKeyEd25519 != null && !masterKeyEd25519.equals( masterKeyEd25519FromIdentityEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading @@ -765,7 +766,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (masterKeyEd25519FromIdentityEd25519 != null && !masterKeyEd25519FromIdentityEd25519.equals( masterKeyEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading Loading @@ -832,14 +833,14 @@ public class SanitizedBridgesWriter extends CollecTorMain { * that we need to remove or replace for the sanitized descriptor * version. */ } else { this.logger.warn("Unrecognized line '" + line logger.warn("Unrecognized line '" + line + "'. Skipping."); return; } } br.close(); } catch (Exception e) { this.logger.warn("Could not parse server " logger.warn("Could not parse server " + "descriptor.", e); return; } Loading @@ -861,7 +862,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigest == null) { this.logger.warn("Could not calculate server " logger.warn("Could not calculate server " + "descriptor digest."); return; } Loading @@ -884,7 +885,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigestSha256Base64 == null) { this.logger.warn("Could not calculate server " logger.warn("Could not calculate server " + "descriptor SHA256 digest."); return; } Loading Loading @@ -925,7 +926,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (ConfigurationException | IOException e) { this.logger.warn("Could not write sanitized server " logger.warn("Could not write sanitized server " + "descriptor to disk.", e); return; } Loading @@ -935,26 +936,26 @@ public class SanitizedBridgesWriter extends CollecTorMain { String identityEd25519Base64) { byte[] identityEd25519 = Base64.decodeBase64(identityEd25519Base64); if (identityEd25519.length < 40) { this.logger.warn("Invalid length of identity-ed25519 (in " logger.warn("Invalid length of identity-ed25519 (in " + "bytes): " + identityEd25519.length); } else if (identityEd25519[0] != 0x01) { this.logger.warn("Unknown version in identity-ed25519: " logger.warn("Unknown version in identity-ed25519: " + identityEd25519[0]); } else if (identityEd25519[1] != 0x04) { this.logger.warn("Unknown cert type in identity-ed25519: " logger.warn("Unknown cert type in identity-ed25519: " + identityEd25519[1]); } else if (identityEd25519[6] != 0x01) { this.logger.warn("Unknown certified key type in " logger.warn("Unknown certified key type in " + "identity-ed25519: " + identityEd25519[1]); } else if (identityEd25519[39] == 0x00) { this.logger.warn("No extensions in identity-ed25519 (which " logger.warn("No extensions in identity-ed25519 (which " + "would contain the encoded master-key-ed25519): " + identityEd25519[39]); } else { int extensionStart = 40; for (int i = 0; i < (int) identityEd25519[39]; i++) { if (identityEd25519.length < extensionStart + 4) { this.logger.warn("Invalid extension with id " + i logger.warn("Invalid extension with id " + i + " in identity-ed25519."); break; } Loading @@ -964,7 +965,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { int extensionType = identityEd25519[extensionStart + 2]; if (extensionLength == 32 && extensionType == 4) { if (identityEd25519.length < extensionStart + 4 + 32) { this.logger.warn("Invalid extension with id " + i logger.warn("Invalid extension with id " + i + " in identity-ed25519."); break; } Loading @@ -980,7 +981,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { extensionStart += 4 + extensionLength; } } this.logger.warn("Unable to locate master-key-ed25519 in " logger.warn("Unable to locate master-key-ed25519 in " + "identity-ed25519."); return null; } Loading Loading @@ -1028,7 +1029,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { * name. */ } else if (line.startsWith("transport ")) { if (parts.length < 3) { this.logger.debug("Illegal line in extra-info descriptor: '" logger.debug("Illegal line in extra-info descriptor: '" + line + "'. Skipping descriptor."); return; } Loading Loading @@ -1058,7 +1059,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { + "\n"); if (masterKeyEd25519 != null && !masterKeyEd25519.equals( masterKeyEd25519FromIdentityEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading @@ -1069,7 +1070,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { if (masterKeyEd25519FromIdentityEd25519 != null && !masterKeyEd25519FromIdentityEd25519.equals( masterKeyEd25519)) { this.logger.warn("Mismatch between identity-ed25519 and " logger.warn("Mismatch between identity-ed25519 and " + "master-key-ed25519. Skipping."); return; } Loading Loading @@ -1106,18 +1107,18 @@ public class SanitizedBridgesWriter extends CollecTorMain { * that we need to remove or replace for the sanitized descriptor * version. */ } else { this.logger.warn("Unrecognized line '" + line logger.warn("Unrecognized line '" + line + "'. Skipping."); return; } } br.close(); } catch (IOException e) { this.logger.warn("Could not parse extra-info " logger.warn("Could not parse extra-info " + "descriptor.", e); return; } catch (DecoderException e) { this.logger.warn("Could not parse extra-info " logger.warn("Could not parse extra-info " + "descriptor.", e); return; } Loading @@ -1139,7 +1140,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigest == null) { this.logger.warn("Could not calculate extra-info " logger.warn("Could not calculate extra-info " + "descriptor digest."); return; } Loading @@ -1162,7 +1163,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { /* Handle below. */ } if (descriptorDigestSha256Base64 == null) { this.logger.warn("Could not calculate extra-info " logger.warn("Could not calculate extra-info " + "descriptor SHA256 digest."); return; } Loading Loading @@ -1203,7 +1204,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { bw.close(); } } catch (Exception e) { this.logger.warn("Could not write sanitized " logger.warn("Could not write sanitized " + "extra-info descriptor to disk.", e); } } Loading Loading @@ -1237,10 +1238,10 @@ public class SanitizedBridgesWriter extends CollecTorMain { } } bw.close(); this.logger.info("Deleted " + deleted + " secrets that we don't " logger.info("Deleted " + deleted + " secrets that we don't " + "need anymore and kept " + kept + "."); } catch (IOException e) { this.logger.warn("Could not store reduced set of " logger.warn("Could not store reduced set of " + "secrets to disk! This is a bad sign, better check what's " + "going on!", e); } Loading @@ -1257,7 +1258,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { dateTimeFormat.parse(maxNetworkStatusPublishedTime).getTime(); if (maxNetworkStatusPublishedMillis > 0L && maxNetworkStatusPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge network status was " logger.warn("The last known bridge network status was " + "published " + maxNetworkStatusPublishedTime + ", which is " + "more than 5:30 hours in the past."); } Loading @@ -1266,7 +1267,7 @@ public class SanitizedBridgesWriter extends CollecTorMain { .getTime(); if (maxServerDescriptorPublishedMillis > 0L && maxServerDescriptorPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge server descriptor was " logger.warn("The last known bridge server descriptor was " + "published " + maxServerDescriptorPublishedTime + ", which " + "is more than 5:30 hours in the past."); } Loading @@ -1275,12 +1276,12 @@ public class SanitizedBridgesWriter extends CollecTorMain { .getTime(); if (maxExtraInfoDescriptorPublishedMillis > 0L && maxExtraInfoDescriptorPublishedMillis < tooOldMillis) { this.logger.warn("The last known bridge extra-info descriptor " logger.warn("The last known bridge extra-info descriptor " + "was published " + maxExtraInfoDescriptorPublishedTime + ", which is more than 5:30 hours in the past."); } } catch (ParseException e) { this.logger.warn("Unable to parse timestamp for " logger.warn("Unable to parse timestamp for " + "stale check.", e); } } Loading
src/main/java/org/torproject/collector/conf/Configuration.java +5 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ import java.util.concurrent.TimeUnit; */ public class Configuration extends Observable implements Cloneable { private static final Logger log = LoggerFactory.getLogger(Configuration.class); private static final Logger logger = LoggerFactory.getLogger( Configuration.class); private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); Loading Loading @@ -55,18 +56,18 @@ public class Configuration extends Observable implements Cloneable { } this.scheduler.scheduleAtFixedRate(new Runnable() { public void run() { log.trace("Check configuration file."); logger.trace("Check configuration file."); try { FileTime ftNow = Files.getLastModifiedTime(confPath); if (ft.compareTo(ftNow) < 0) { log.info("Configuration file was changed."); logger.info("Configuration file was changed."); reload(); setChanged(); notifyObservers(null); } ft = ftNow; } catch (Throwable th) { // Catch all and keep running. log.error("Cannot reload configuration file.", th); logger.error("Cannot reload configuration file.", th); } } }, 5, 5, TimeUnit.SECONDS); Loading