|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectanon.infoservice.AbstractDatabaseEntry
anon.infoservice.AbstractDistributableDatabaseEntry
anon.infoservice.AbstractDistributableCertifiedDatabaseEntry
anon.infoservice.InfoServiceDBEntry
public class InfoServiceDBEntry
Holds the information for an infoservice.
Nested Class Summary | |
---|---|
private static class |
InfoServiceDBEntry.EntryGetter
|
Nested classes/interfaces inherited from class anon.infoservice.AbstractDistributableDatabaseEntry |
---|
AbstractDistributableDatabaseEntry.SerialDBEntry, AbstractDistributableDatabaseEntry.Serials |
Field Summary | |
---|---|
private static int |
BLOCK_FACTOR_IF_UNREACHABLE
|
static int |
DEFAULT_GET_XML_CONNECTION_TIMEOUT
|
static java.lang.String |
HEADER_STATISTICS
|
private boolean |
m_bPerfServerEnabled
|
private boolean |
m_bPrimaryForwarderList
Stores whether this infoservice has a primary forwarder list (true) or not (false). |
private boolean |
m_bTemp
Indicates if this is a temporary InfoService entry creates for bootstrapping. |
private MultiCertPath |
m_certPath
|
private long |
m_creationTimeStamp
Stores the time when this infoservice entry was created by the origin infoservice or by the JAP client (if it is a user-defined entry). |
private static int |
m_getXmlConnectionTimeout
|
private ServiceSoftware |
m_infoserviceSoftware
Some information about the used infoservice software. |
private java.util.Vector |
m_listenerInterfaces
The ListenerInterfaces of all interfaces (internet-address and port) this infoservice is (virtually) listening on. |
private boolean |
m_neighbour
Describes whether this infoservice is a neighbour of our one. |
private int |
m_preferedListenerInterface
Stores the number of the preferred ListenerInterface in the listenerInterfaces list. |
private long |
m_serial
|
private XMLSignature |
m_signature
|
private java.lang.String |
m_strInfoServiceId
This is the ID of this infoservice. |
private java.lang.String |
m_strName
The name of the infoservice. |
private static java.lang.Runnable |
m_threadHandleAfterJVMSocketError
|
private static long |
m_timeFirstJVMSocketError
|
private static long |
m_timeHandleAfterJVMSocketError
|
private boolean |
m_userDefined
Stores whether this InfoServiceDBEntry is user-defined within the JAP client (true) or was generated from the InfoService itself (false). |
private org.w3c.dom.Element |
m_xmlDescription
Stores the XML representation of this InfoServiceDBEntry. |
private static IBrowserIdentification |
ms_browserIdentification
|
private static IMutableProxyInterface |
ms_proxyInterface
A proxy interface that is used for all connections and may change over time. |
static java.lang.String |
XML_ELEMENT_CONTAINER_NAME
|
static java.lang.String |
XML_ELEMENT_NAME
|
Fields inherited from class anon.infoservice.AbstractDistributableDatabaseEntry |
---|
XML_ATTR_LAST_UPDATE, XML_ATTR_SERIAL, XML_ATTR_VALID, XML_ATTR_VERIFIED |
Fields inherited from class anon.infoservice.AbstractDatabaseEntry |
---|
XML_LAST_UPDATE |
Fields inherited from interface anon.infoservice.IDistributable |
---|
FIELD_HTTP_REQUEST_STRING, FIELD_HTTP_SERIALS_REQUEST_STRING |
Fields inherited from interface anon.util.IXMLEncodable |
---|
FIELD_XML_ELEMENT_CONTAINER_NAME, FIELD_XML_ELEMENT_NAME, XML_ATTR_ID, XML_ATTR_LANGUAGE, XML_ATTR_VERSION |
Constructor Summary | |
---|---|
InfoServiceDBEntry(org.w3c.dom.Element a_infoServiceNode)
Creates a new InfoService from XML description (InfoService node). |
|
InfoServiceDBEntry(org.w3c.dom.Element a_infoServiceNode,
long a_timeout)
Creates a new InfoService from XML description (InfoService node). |
|
InfoServiceDBEntry(java.lang.String a_host,
int a_port)
This is a JAP-only constructor needed to initialise JAP with default InfoServices. |
|
InfoServiceDBEntry(java.lang.String a_strName,
java.lang.String a_id,
java.util.Vector a_listeners,
boolean a_primaryForwarderList,
boolean a_japClientContext,
long a_creationTime,
long a_serialNumber,
boolean a_bPerfServerEnabled)
Creates a new InfoServiceDBEntry. |
|
InfoServiceDBEntry(java.util.Vector a_ListenerInterfaces)
|
Method Summary | |
---|---|
private static void |
addPropertyHeader(java.lang.String a_systemPropertyName,
java.lang.String strVersion,
java.util.Vector a_headers)
|
private static void |
addPropertyHeader(java.lang.String a_systemPropertyName,
java.util.Vector a_headers)
|
private static void |
addPropertyHeader(java.util.Vector a_systemPropertyNames,
java.lang.String strVersion,
java.util.Vector a_headers)
|
private static void |
addPropertyHeader(java.util.Vector a_systemPropertyNames,
java.util.Vector a_headers)
|
boolean |
checkId()
Checks if the ID is valid. |
private HTTPConnectionDescriptor |
connectToInfoService(HTTPConnectionDescriptor lastConnectionDescriptor,
ImmutableProxyInterface a_proxy,
int a_supportedEncodings)
Creates a new HTTPConnection to a ListenerInterface from the list of all listener interfaces. |
void |
deletePersistence()
|
private byte[] |
doHttpRequest(HttpRequestStructure a_httpRequest,
int a_supportedEncodings)
|
boolean |
equals(java.lang.Object a_object)
Compares this object to another one. |
private static java.lang.String |
generateId(ListenerInterface a_listenerInterface)
This is only for compatibility and will be rewritten next time. |
private org.w3c.dom.Element |
generateXmlRepresentation()
Generates the XML representation for this InfoServiceDBEntry. |
MultiCertPath |
getCertPath()
|
static int |
getConnectionTimeout()
|
private java.util.Hashtable |
getEntries(InfoServiceDBEntry.EntryGetter a_getter)
|
java.lang.Object |
getExitAddresses()
|
org.w3c.dom.Element |
getForwarder()
Downloads a forwarder entry from the infoservice. |
java.lang.String |
getId()
Returns the ID of the infoservice. |
java.util.Hashtable |
getInfoServices()
Get a Vector of all infoservices the infoservice knows. |
java.util.Hashtable |
getInfoServices(boolean a_bJAPClientContext)
|
java.util.Hashtable |
getInfoServiceSerials()
|
JAPVersionInfo |
getJAPVersionInfo(int a_japVersionType)
Returns the JAPVersionInfo for the specified type. |
long |
getLastUpdate()
Returns the time in milliseconds when this db entry was created from the origin instance. |
java.util.Hashtable |
getLatestJava()
Get the latest java versions the infoservice knows ordered by vendors. |
java.util.Hashtable |
getLatestJavaSerials()
|
java.util.Vector |
getListenerInterfaces()
Returns a snapshot of all listener interfaces of this infoservice. |
ListenerInterface[] |
getListenerInterfacesArray()
|
java.util.Hashtable |
getMessages()
|
java.util.Hashtable |
getMessageSerials()
|
MixCascade |
getMixCascadeInfo(java.lang.String a_cascadeID)
Gets information about a specific cascade from the InfoService. |
java.util.Hashtable |
getMixCascades()
Get a Vector of all mixcascades the infoservice knows. |
java.util.Hashtable |
getMixCascades(boolean a_bJAPClientContext)
|
java.util.Hashtable |
getMixCascadeSerials()
|
java.util.Hashtable |
getMixes(boolean a_bJAPClientContext)
|
MixInfo |
getMixInfo(java.lang.String mixId)
Get the MixInfo for the mix with the given ID. |
byte[] |
getMixminionNodesList()
Get the list with the mixminion nodes from the infoservice. |
java.lang.String |
getName()
Returns the name of the infoservice. |
JAPMinVersion |
getNewVersionNumber()
Get the version String of the currently minimum required JAP version from the infoservice. |
PaymentInstanceDBEntry |
getPaymentInstance(java.lang.String a_piID)
|
java.util.Hashtable |
getPaymentInstances()
Get a Vector of all payment instances the infoservice knows. |
java.util.Hashtable |
getPaymentInstances(boolean a_bJAPClientContext)
|
PerformanceInfo |
getPerformanceInfo()
Sends a /performanceinfo request to the Info Service, retrieves the data and creates a new PerformanceInfo object. |
java.lang.String |
getPostFile()
This returns the filename (InfoService command), where this InfoServerDBEntry is posted at other InfoServices. |
XMLSignature |
getSignature()
|
StatusInfo |
getStatusInfo(MixCascade a_cascade)
Get the StatusInfo for the cascade with the given ID. |
StatusInfo |
getStatusInfo(MixCascade a_cascade,
long a_timeout)
Get the StatusInfo for the cascade with the given ID. |
TermsAndConditionsTemplate |
getTCTemplate(java.lang.String a_id)
Get the MixInfo for the mix with the given ID. |
byte[] |
getTorNodesList()
Get the list with the tor nodes from the infoservice. |
private java.util.Hashtable |
getUpdateEntries(java.lang.Class a_distributable,
boolean a_bSerials)
|
long |
getVersionNumber()
Returns the time when this infoservice entry was created by the origin infoservice or by the JAP client (if it is a user-defined entry). |
private org.w3c.dom.Document |
getXmlDocument(HttpRequestStructure a_httpRequest)
|
private org.w3c.dom.Document |
getXmlDocument(HttpRequestStructure a_httpRequest,
int a_supportedEncodings)
|
org.w3c.dom.Element |
getXmlStructure()
Returns the XML structure for this db entry. |
int |
hashCode()
Returns a hashcode for this instance of InfoServiceDBEntry. |
boolean |
hasPrimaryForwarderList()
Returns, whether this infoservice keeps a list of JAP forwarders (true) or not (false). |
boolean |
isBootstrap()
|
boolean |
isNeighbour()
Returns whether this infoservice is a neighbour of our one. |
boolean |
isPerfServerEnabled()
|
boolean |
isPersistanceDeletionAllowed()
|
boolean |
isUserDefined()
Returns whether this InfoServiceDBEntry was generated by a user within the JAP client (true) or was generated by the InfoService itself (false). |
boolean |
isValid()
Returns if the object is valid at this time |
boolean |
isVerified()
Returns if this entry has been verified with a certificate chain. |
void |
markAsBootstrap()
|
org.w3c.dom.Element |
postNewForwarder(org.w3c.dom.Element a_japForwarderNode)
Posts a new forwarder to an infoservice with a JAP forwarder list. |
org.w3c.dom.Element |
postRenewForwarder(org.w3c.dom.Element a_japForwarderNode)
Posts the renew message for a forwarder to an infoservice with a JAP forwarder list. |
static void |
setBrowserIdentification(IBrowserIdentification a_browserIdentification)
|
static void |
setConnectionTimeout(int a_timeoutMS)
|
static void |
setJVMNetworkErrorHandling(java.lang.Runnable a_threadRestartAfterJVMSocketError,
long a_timeRestartAfterJVMSocketError)
Sets the options for handling a JVM socket error that cannot be recovered. |
static void |
setMutableProxyInterface(IMutableProxyInterface a_proxyInterface)
|
void |
setNeighbour(boolean a_bNeighbour)
Forces this InfoService to be a neighbour or not. |
void |
setUserDefined(boolean b)
|
java.lang.String |
toString()
Returns a String representation for this InfoService object. |
Methods inherited from class anon.infoservice.AbstractDistributableDatabaseEntry |
---|
getHttpRequestString, getHttpSerialsRequestString, getPostData, getPostEncoding, toXmlElement |
Methods inherited from class anon.infoservice.AbstractDatabaseEntry |
---|
getCreationTime, getExpireTime, isNewerThan, resetCreationTime |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String XML_ELEMENT_CONTAINER_NAME
public static final java.lang.String XML_ELEMENT_NAME
public static final java.lang.String HEADER_STATISTICS
public static final int DEFAULT_GET_XML_CONNECTION_TIMEOUT
private static final int BLOCK_FACTOR_IF_UNREACHABLE
private static int m_getXmlConnectionTimeout
private static long m_timeFirstJVMSocketError
private static long m_timeHandleAfterJVMSocketError
private static java.lang.Runnable m_threadHandleAfterJVMSocketError
private static IMutableProxyInterface ms_proxyInterface
private static IBrowserIdentification ms_browserIdentification
private java.lang.String m_strInfoServiceId
private java.lang.String m_strName
private boolean m_bTemp
private ServiceSoftware m_infoserviceSoftware
private java.util.Vector m_listenerInterfaces
private int m_preferedListenerInterface
private boolean m_bPrimaryForwarderList
private boolean m_neighbour
private org.w3c.dom.Element m_xmlDescription
private boolean m_userDefined
private long m_creationTimeStamp
private XMLSignature m_signature
private MultiCertPath m_certPath
private long m_serial
private boolean m_bPerfServerEnabled
Constructor Detail |
---|
public InfoServiceDBEntry(org.w3c.dom.Element a_infoServiceNode) throws XMLParseException
a_infoServiceNode
- The InfoService node from an XML document.
XMLParseException
- if an error in the xml structure occurspublic InfoServiceDBEntry(org.w3c.dom.Element a_infoServiceNode, long a_timeout) throws XMLParseException
a_infoServiceNode
- The InfoService node from an XML document.a_timeout
- The timeout of the new InfoServiceDBEntry within the database of all
InfoServices, see System.currentTimeMillis().
XMLParseException
- if an error in the xml structure occurspublic InfoServiceDBEntry(java.lang.String a_host, int a_port) throws java.lang.IllegalArgumentException
a_host
- host name of this info servicea_port
- the port where this IS is reachable
java.lang.IllegalArgumentException
public InfoServiceDBEntry(java.util.Vector a_ListenerInterfaces) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
public InfoServiceDBEntry(java.lang.String a_strName, java.lang.String a_id, java.util.Vector a_listeners, boolean a_primaryForwarderList, boolean a_japClientContext, long a_creationTime, long a_serialNumber, boolean a_bPerfServerEnabled) throws java.lang.IllegalArgumentException
a_strName
- The name of the infoservice or null, if a generic name shall be used.a_listeners
- The listeners the infoservice is (virtually) listening on.a_primaryForwarderList
- Whether the infoservice holds a primary forwarder list.a_japClientContext
- Whether the new entry will be created within the context of the
JAP client (true) or the context of the InfoService (false). This
setting influences the timeout of the created entry within the
database of all infoservices.a_serialNumber
- the serial number that indicates if the document has changed since the last
time it was updated
java.lang.IllegalArgumentException
- if invalid listener interfaces are givenMethod Detail |
---|
private static java.lang.String generateId(ListenerInterface a_listenerInterface)
a_listenerInterface
- a ListenerInterface of this InfoService
public boolean isPersistanceDeletionAllowed()
isPersistanceDeletionAllowed
in class AbstractDatabaseEntry
public void deletePersistence()
deletePersistence
in class AbstractDatabaseEntry
public static void setConnectionTimeout(int a_timeoutMS)
public static int getConnectionTimeout()
public static void setBrowserIdentification(IBrowserIdentification a_browserIdentification)
public static void setMutableProxyInterface(IMutableProxyInterface a_proxyInterface)
public static void setJVMNetworkErrorHandling(java.lang.Runnable a_threadRestartAfterJVMSocketError, long a_timeRestartAfterJVMSocketError)
a_threadRestartAfterJVMSocketError
- Runnablea_timeRestartAfterJVMSocketError
- longprivate org.w3c.dom.Element generateXmlRepresentation()
public java.lang.String getId()
getId
in interface IDistributable
getId
in class AbstractDatabaseEntry
public org.w3c.dom.Element getXmlStructure()
AbstractDistributableDatabaseEntry
getXmlStructure
in class AbstractDistributableDatabaseEntry
public java.lang.String getName()
public boolean isVerified()
AbstractDistributableCertifiedDatabaseEntry
isVerified
in interface IVerifyable
isVerified
in interface ICertifiedDatabaseEntry
isVerified
in class AbstractDistributableCertifiedDatabaseEntry
public boolean isValid()
IVerifyable
isValid
in interface IVerifyable
isValid
in interface ICertifiedDatabaseEntry
public boolean isPerfServerEnabled()
public boolean checkId()
AbstractDistributableCertifiedDatabaseEntry
checkId
in interface ICertifiedDatabaseEntry
checkId
in class AbstractDistributableCertifiedDatabaseEntry
public XMLSignature getSignature()
getSignature
in interface ICertifiedDatabaseEntry
getSignature
in class AbstractDistributableCertifiedDatabaseEntry
public MultiCertPath getCertPath()
getCertPath
in interface IVerifyable
getCertPath
in interface ICertifiedDatabaseEntry
public long getLastUpdate()
AbstractDatabaseEntry
getLastUpdate
in class AbstractDatabaseEntry
public long getVersionNumber()
getVersionNumber
in class AbstractDatabaseEntry
public boolean hasPrimaryForwarderList()
public java.util.Vector getListenerInterfaces()
public ListenerInterface[] getListenerInterfacesArray()
public boolean isUserDefined()
isUserDefined
in class AbstractDatabaseEntry
public void setUserDefined(boolean b)
public void markAsBootstrap()
public boolean isBootstrap()
isBootstrap
in interface IBoostrapable
public java.lang.String toString()
toString
in class java.lang.Object
public boolean equals(java.lang.Object a_object)
equals
in class java.lang.Object
a_object
- The object with which to compare.
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String getPostFile()
getPostFile
in interface IDistributable
public boolean isNeighbour()
public void setNeighbour(boolean a_bNeighbour)
a_bNeighbour
- if this IS should be a neighbourprivate HTTPConnectionDescriptor connectToInfoService(HTTPConnectionDescriptor lastConnectionDescriptor, ImmutableProxyInterface a_proxy, int a_supportedEncodings)
lastConnectionDescriptor
- The HTTPConnectionDescriptor of the last connection try (the
last output of this function) or null, if you want a new
connection (connection to preferedListenerInterface is opened).a_supportedEncodings
- supported http encodings used to receive the data (e.g. HTTP_ENCODING_ZLIB)
private static void addPropertyHeader(java.lang.String a_systemPropertyName, java.util.Vector a_headers)
private static void addPropertyHeader(java.lang.String a_systemPropertyName, java.lang.String strVersion, java.util.Vector a_headers)
private static void addPropertyHeader(java.util.Vector a_systemPropertyNames, java.util.Vector a_headers)
private static void addPropertyHeader(java.util.Vector a_systemPropertyNames, java.lang.String strVersion, java.util.Vector a_headers)
private org.w3c.dom.Document getXmlDocument(HttpRequestStructure a_httpRequest) throws java.lang.Exception
java.lang.Exception
private org.w3c.dom.Document getXmlDocument(HttpRequestStructure a_httpRequest, int a_supportedEncodings) throws java.lang.Exception
java.lang.Exception
private byte[] doHttpRequest(HttpRequestStructure a_httpRequest, int a_supportedEncodings) throws java.lang.Exception
java.lang.Exception
public MixCascade getMixCascadeInfo(java.lang.String a_cascadeID) throws java.lang.Exception
a_cascadeID
- String
java.lang.Exception
public java.util.Hashtable getMixCascades() throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getPaymentInstances() throws java.lang.Exception
java.lang.Exception
public PaymentInstanceDBEntry getPaymentInstance(java.lang.String a_piID) throws java.lang.Exception
java.lang.Exception
private java.util.Hashtable getEntries(InfoServiceDBEntry.EntryGetter a_getter) throws ExpiredSignatureException, java.security.SignatureException, java.lang.Exception
ExpiredSignatureException
java.security.SignatureException
java.lang.Exception
public java.util.Hashtable getInfoServices(boolean a_bJAPClientContext) throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getMixCascades(boolean a_bJAPClientContext) throws java.lang.Exception
java.lang.Exception
public TermsAndConditionsTemplate getTCTemplate(java.lang.String a_id) throws java.lang.Exception
mixId
- The ID of the mix to get the MixInfo for.
java.lang.Exception
public java.util.Hashtable getPaymentInstances(boolean a_bJAPClientContext) throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getMixes(boolean a_bJAPClientContext) throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getInfoServices() throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getMixCascadeSerials() throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getInfoServiceSerials() throws java.lang.Exception
java.lang.Exception
public MixInfo getMixInfo(java.lang.String mixId) throws java.lang.Exception
mixId
- The ID of the mix to get the MixInfo for.
java.lang.Exception
public StatusInfo getStatusInfo(MixCascade a_cascade) throws java.lang.Exception
cascadeId
- The ID of the mixcascade to get the StatusInfo for.cascadeLength
- The length of the mixcascade (number of mixes). We need this for
calculating the AnonLevel in the StatusInfo.
java.lang.Exception
public java.lang.Object getExitAddresses() throws java.lang.Exception
java.lang.Exception
public StatusInfo getStatusInfo(MixCascade a_cascade, long a_timeout) throws java.lang.Exception
cascadeId
- The ID of the mixcascade to get the StatusInfo for.cascadeLength
- The length of the mixcascade (number of mixes). We need this for
calculating the AnonLevel in the StatusInfo.
java.lang.Exception
public JAPMinVersion getNewVersionNumber() throws java.lang.Exception
java.lang.Exception
private java.util.Hashtable getUpdateEntries(java.lang.Class a_distributable, boolean a_bSerials) throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getMessages() throws java.lang.Exception
java.lang.Exception
public java.util.Hashtable getMessageSerials() throws java.lang.Exception
java.lang.Exception
public PerformanceInfo getPerformanceInfo() throws java.lang.Exception
java.lang.Exception
- if the Signature can't be verified, the Info Service doesn't have
the information available or can't be reached.public java.util.Hashtable getLatestJava() throws java.lang.Exception
java.lang.Exception
- If we can't get a connection to the infoservicepublic java.util.Hashtable getLatestJavaSerials() throws java.lang.Exception
java.lang.Exception
public JAPVersionInfo getJAPVersionInfo(int a_japVersionType) throws java.lang.Exception
a_japVersionType
- Selects the JAPVersionInfo (release / development). See the constants
in JAPVersionInfo.
java.lang.Exception
public byte[] getTorNodesList() throws java.lang.Exception
java.lang.Exception
public byte[] getMixminionNodesList() throws java.lang.Exception
java.lang.Exception
public org.w3c.dom.Element postNewForwarder(org.w3c.dom.Element a_japForwarderNode) throws java.lang.Exception
a_japForwarderNode
- The JapForwarder node of the "post forwarder to infoservice"
XML structure.
java.lang.Exception
public org.w3c.dom.Element postRenewForwarder(org.w3c.dom.Element a_japForwarderNode) throws java.lang.Exception
a_japForwarderNode
- The JapForwarder node of the "renew forwarder" XML structure.
java.lang.Exception
public org.w3c.dom.Element getForwarder() throws java.lang.Exception
java.lang.Exception
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |