Class NodeStatus
- java.lang.Object
-
- org.torproject.metrics.onionoo.docs.Document
-
- org.torproject.metrics.onionoo.docs.NodeStatus
-
public class NodeStatus extends Document
NodeStatus documents contain persistent state for data about relays. These are read by the hourly updater and then updated with new details where there are relevant descriptors, consensuses or other documents available.At the end of each run of the hourly updater, these documents are concatenated and written to a single file in
status/summary
. Each line contains a single document.A new NodeStatus can be created from a string using the
fromString(String)
static method. To create a serialization, thetoString()
method can be used.The lines are formed of tab-separated values. There must be at least 23 fields present in the document. Additional fields may be present but are not required for the document to be valid. A summary of the encoding can be found here:
- "r" or "b" to represent a relay or a bridge
- Nickname
- ASCII representation of hex-encoded fingerprint
- OR Addresses
- Last seen (date portion)
- Last seen (time portion)
- OR Port
- Dir Port
- Relay Flags
- Consensus Weight
- Country Code
- Blank field (previously used for host name)
- Last reverse DNS lookup time (milliseconds)
- Default policy
- Port list
- First seen (date portion)
- First seen (time portion)
- Last address change (date portion)
- Last address change (time portion)
- AS Number
- Contact
- Recommended version (boolean)
- Family
- Version
- Blank field (previously used for host name)
- Version status
- AS Name
- Verified and unverified host names
This list only provides a summary, individual fields can have complex encodings with nested lists.
-
-
Constructor Summary
Constructors Constructor Description NodeStatus(java.lang.String fingerprint)
Instantiates a new node status object from the given fingerprint.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addLastAddresses(long lastSeenMillis, java.lang.String address, int orPort, int dirPort, java.util.SortedSet<java.lang.String> orAddressesAndPorts)
Adds addresses and ports together with the time in milliseconds since the epoch when they were last seen to the history of last seen addresses and ports.static NodeStatus
fromString(java.lang.String documentString)
Instantiates a new node status object from the given string that may have been produced bytoString()
.java.lang.String
getAddress()
java.util.SortedSet<java.lang.String>
getAllegedFamily()
Returns the alleged family consisting of all relays in this relay's declared family that are not in a mutual family relationship with this relay.java.lang.String
getAsName()
java.lang.String
getAsNumber()
long
getConsensusWeight()
java.lang.String
getContact()
java.lang.String
getCountryCode()
java.util.SortedSet<java.lang.String>
getDeclaredFamily()
java.lang.String
getDefaultPolicy()
int
getDirPort()
java.util.SortedSet<java.lang.String>
getEffectiveFamily()
java.util.SortedSet<java.lang.String>
getExitAddresses()
java.util.SortedSet<java.lang.String>
getExtendedFamily()
java.lang.String
getFingerprint()
long
getFirstSeenMillis()
java.lang.String
getHostName()
java.util.SortedSet<java.lang.String>
getIndirectFamily()
Returns the indirect family consisting of all relays that can be reached via mutual family relationships except for those that can be reached directly via such a relationship.java.util.SortedMap<java.lang.Long,java.util.Set<java.lang.String>>
getLastAddresses()
long
getLastChangedOrAddressOrPort()
Returns the time in milliseconds since the epoch when addresses or ports were last changed.long
getLastRdnsLookup()
long
getLastSeenMillis()
java.lang.String
getNickname()
java.lang.String
getOperatingSystem()
java.util.SortedSet<java.lang.String>
getOrAddresses()
Returns all addresses used for the onion-routing protocol which includes the primary address and all additionally configured onion-routing addresses.java.util.SortedSet<java.lang.String>
getOrAddressesAndPorts()
int
getOrPort()
java.lang.String
getPortList()
java.util.SortedSet<java.lang.String>
getRelayFlags()
java.util.SortedSet<java.lang.String>
getUnverifiedHostNames()
java.util.SortedSet<java.lang.String>
getVerifiedHostNames()
java.lang.String
getVersion()
TorVersionStatus
getVersionStatus()
java.lang.Boolean
isRecommendedVersion()
boolean
isRelay()
void
setAddress(java.lang.String address)
void
setAsName(java.lang.String asName)
void
setAsNumber(java.lang.String asNumber)
void
setConsensusWeight(long consensusWeight)
void
setContact(java.lang.String contact)
Sets the contact to a lower-cased variant of the given string with all non-printable characters outside of ASCII code 32 (space) to 126 (dash) replaced with spaces.void
setCountryCode(java.lang.String countryCode)
void
setDeclaredFamily(java.util.SortedSet<java.lang.String> declaredFamily)
void
setDefaultPolicy(java.lang.String defaultPolicy)
void
setDirPort(int dirPort)
void
setEffectiveFamily(java.util.SortedSet<java.lang.String> effectiveFamily)
void
setExitAddresses(java.util.SortedSet<java.lang.String> exitAddresses)
void
setExtendedFamily(java.util.SortedSet<java.lang.String> extendedFamily)
void
setFirstSeenMillis(long firstSeenMillis)
void
setHostName(java.lang.String hostName)
void
setLastRdnsLookup(long lastRdnsLookup)
void
setLastSeenMillis(long lastSeenMillis)
void
setNickname(java.lang.String nickname)
void
setOperatingSystem(java.lang.String operatingSystem)
void
setOrAddressesAndPorts(java.util.SortedSet<java.lang.String> orAddressesAndPorts)
void
setOrPort(int orPort)
void
setPortList(java.lang.String portList)
void
setRecommendedVersion(java.lang.Boolean recommendedVersion)
void
setRelay(boolean isRelay)
void
setRelayFlags(java.util.SortedSet<java.lang.String> relayFlags)
void
setUnverifiedHostNames(java.util.SortedSet<java.lang.String> unverifiedHostNames)
void
setVerifiedHostNames(java.util.SortedSet<java.lang.String> verifiedHostNames)
void
setVersion(java.lang.String version)
void
setVersionStatus(TorVersionStatus versionStatus)
java.lang.String
toString()
Generates a String serialization of the node status object that could be used byfromString(String)
to recreate this object.-
Methods inherited from class org.torproject.metrics.onionoo.docs.Document
getDocumentString, setDocumentString, setFromDocumentString, toDocumentString
-
-
-
-
Method Detail
-
setContact
public void setContact(java.lang.String contact)
Sets the contact to a lower-cased variant of the given string with all non-printable characters outside of ASCII code 32 (space) to 126 (dash) replaced with spaces.
-
getContact
public java.lang.String getContact()
-
setDeclaredFamily
public void setDeclaredFamily(java.util.SortedSet<java.lang.String> declaredFamily)
-
getDeclaredFamily
public java.util.SortedSet<java.lang.String> getDeclaredFamily()
-
setRelay
public void setRelay(boolean isRelay)
-
isRelay
public boolean isRelay()
-
getFingerprint
public java.lang.String getFingerprint()
-
setNickname
public void setNickname(java.lang.String nickname)
-
getNickname
public java.lang.String getNickname()
-
setAddress
public void setAddress(java.lang.String address)
-
getAddress
public java.lang.String getAddress()
-
setOrAddressesAndPorts
public void setOrAddressesAndPorts(java.util.SortedSet<java.lang.String> orAddressesAndPorts)
-
getOrAddressesAndPorts
public java.util.SortedSet<java.lang.String> getOrAddressesAndPorts()
-
getOrAddresses
public java.util.SortedSet<java.lang.String> getOrAddresses()
Returns all addresses used for the onion-routing protocol which includes the primary address and all additionally configured onion-routing addresses.
-
setFirstSeenMillis
public void setFirstSeenMillis(long firstSeenMillis)
-
getFirstSeenMillis
public long getFirstSeenMillis()
-
setLastSeenMillis
public void setLastSeenMillis(long lastSeenMillis)
-
getLastSeenMillis
public long getLastSeenMillis()
-
setOrPort
public void setOrPort(int orPort)
-
getOrPort
public int getOrPort()
-
setDirPort
public void setDirPort(int dirPort)
-
getDirPort
public int getDirPort()
-
setRelayFlags
public void setRelayFlags(java.util.SortedSet<java.lang.String> relayFlags)
-
getRelayFlags
public java.util.SortedSet<java.lang.String> getRelayFlags()
-
setConsensusWeight
public void setConsensusWeight(long consensusWeight)
-
getConsensusWeight
public long getConsensusWeight()
-
setDefaultPolicy
public void setDefaultPolicy(java.lang.String defaultPolicy)
-
getDefaultPolicy
public java.lang.String getDefaultPolicy()
-
setPortList
public void setPortList(java.lang.String portList)
-
getPortList
public java.lang.String getPortList()
-
getLastAddresses
public java.util.SortedMap<java.lang.Long,java.util.Set<java.lang.String>> getLastAddresses()
-
addLastAddresses
public void addLastAddresses(long lastSeenMillis, java.lang.String address, int orPort, int dirPort, java.util.SortedSet<java.lang.String> orAddressesAndPorts)
Adds addresses and ports together with the time in milliseconds since the epoch when they were last seen to the history of last seen addresses and ports.
-
getLastChangedOrAddressOrPort
public long getLastChangedOrAddressOrPort()
Returns the time in milliseconds since the epoch when addresses or ports were last changed.
-
setRecommendedVersion
public void setRecommendedVersion(java.lang.Boolean recommendedVersion)
-
isRecommendedVersion
public java.lang.Boolean isRecommendedVersion()
-
setVersion
public void setVersion(java.lang.String version)
-
getVersion
public java.lang.String getVersion()
-
setVersionStatus
public void setVersionStatus(TorVersionStatus versionStatus)
-
getVersionStatus
public TorVersionStatus getVersionStatus()
-
setOperatingSystem
public void setOperatingSystem(java.lang.String operatingSystem)
-
getOperatingSystem
public java.lang.String getOperatingSystem()
-
setExitAddresses
public void setExitAddresses(java.util.SortedSet<java.lang.String> exitAddresses)
-
getExitAddresses
public java.util.SortedSet<java.lang.String> getExitAddresses()
-
setCountryCode
public void setCountryCode(java.lang.String countryCode)
-
getCountryCode
public java.lang.String getCountryCode()
-
setAsNumber
public void setAsNumber(java.lang.String asNumber)
-
getAsNumber
public java.lang.String getAsNumber()
-
setAsName
public void setAsName(java.lang.String asName)
-
getAsName
public java.lang.String getAsName()
-
setHostName
public void setHostName(java.lang.String hostName)
-
getHostName
public java.lang.String getHostName()
-
setVerifiedHostNames
public void setVerifiedHostNames(java.util.SortedSet<java.lang.String> verifiedHostNames)
-
getVerifiedHostNames
public java.util.SortedSet<java.lang.String> getVerifiedHostNames()
-
setUnverifiedHostNames
public void setUnverifiedHostNames(java.util.SortedSet<java.lang.String> unverifiedHostNames)
-
getUnverifiedHostNames
public java.util.SortedSet<java.lang.String> getUnverifiedHostNames()
-
setLastRdnsLookup
public void setLastRdnsLookup(long lastRdnsLookup)
-
getLastRdnsLookup
public long getLastRdnsLookup()
-
setEffectiveFamily
public void setEffectiveFamily(java.util.SortedSet<java.lang.String> effectiveFamily)
-
getEffectiveFamily
public java.util.SortedSet<java.lang.String> getEffectiveFamily()
-
setExtendedFamily
public void setExtendedFamily(java.util.SortedSet<java.lang.String> extendedFamily)
-
getExtendedFamily
public java.util.SortedSet<java.lang.String> getExtendedFamily()
-
getAllegedFamily
public java.util.SortedSet<java.lang.String> getAllegedFamily()
Returns the alleged family consisting of all relays in this relay's declared family that are not in a mutual family relationship with this relay.
-
getIndirectFamily
public java.util.SortedSet<java.lang.String> getIndirectFamily()
Returns the indirect family consisting of all relays that can be reached via mutual family relationships except for those that can be reached directly via such a relationship.
-
fromString
public static NodeStatus fromString(java.lang.String documentString)
Instantiates a new node status object from the given string that may have been produced bytoString()
. A document that has been written by a previous version of Onionoo that did not include all the currently supported fields will still be accepted, but will contain the new fields if serialized again usingtoString()
. A document that has been generated by a newer version of Onionoo that contains new fields will be accepted, but those new fields will be ignored and the data discarded if serialized again usingtoString()
.
-
toString
public java.lang.String toString()
Generates a String serialization of the node status object that could be used byfromString(String)
to recreate this object.- Overrides:
toString
in classjava.lang.Object
-
-