All Classes and Interfaces
Class
Description
A record payload (ip pointer).
AAAA payload (an ipv6 pointer).
Defines the structure for why abuse was reported either by the client to
the router or by the router to the client
Provides a severity level (larger numbers are more severe) in association with
a client reporting abusive behavior to the router or the router reporting it
to the client
As this does not (yet) extend ServerSocketChannel it cannot be returned by StandardServerSocket.getChannel(),
until we implement an I2P SocketAddress class.
Counts connection attempts and decides if specified thresholds have been
breached.
A filter for incoming connections which can be configured
based on access list rules.
Generic means of SACK/NACK transmission for partially or fully
received messages
Send an empty message if the timer expires.
An address book for storing human readable names mapped to base64 i2p
destinations.
Methods to get the local addresses, and other IP utilities
Dummy wrapper for AES cipher operation.
Deprecated.
This class is deprecated.
A tunnel pool with its own settings and Destination,
but uses another pool for its tunnels.
An interface for classes that provide lowlevel information about AMD CPU's
Moved out of CPUID.java
Ref: http://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures
Class to represent single archive definition within the RRD.
Class to represent single RRD archive in a RRD with its internal state.
Instances of this class model an archive section of an RRD file.
Class to represent internal RRD archive state for a single datasource.
A small, fast Set with a maximum size, backed by a fixed-size array.
ArrayUtils contains some methods that you can call to find out
the most efficient increments by which to grow arrays.
fortuna instance that tries to avoid blocking if at all possible by using separate
filled buffer segments rather than one buffer (and blocking when that buffer's data
has been eaten)
Note that this class is not fully Thread safe!
The following methods must be synchronized externally, they are not
synced here or in super():
addRandomByte(), addRandomBytes(), nextByte(), nextBytes(), seed()
Check for new mail periodically
A Westwood bandwidth estimator
Tell the other side the limits
Routers are banlisted only if none of our transports can talk to them
or their signed router info is completely screwy.
Moved from Banlist.java
Enumerates barcode formats known to this package.
Encodes and decodes to and from Base32 notation.
Very minimal Base32 encoder.
Encodes and decodes to and from Base64 notation.
Very minimal Base64 encoder.
Holds methods common to several Beans.
An abstract class to facilitate implementing PRNG algorithms.
Based on DefaultServlet from Jetty 6.1.26, heavily simplified
and modified to remove all dependencies on Jetty libs.
from Jetty HttpContent.java
Batching preprocessor that will briefly delay the sending of a message
if it doesn't fill up a full tunnel message, in which case it queues up
an additional flush task.
Honor the 'batchFrequency' tunnel pool setting or the 'router.batchFrequency'
router config setting, and track fragmentation.
BCrypt implements OpenBSD-style Blowfish password hashing using
the scheme described in "A Future-Adaptable Password Scheme" by
Niels Provos and David Mazieres.
Decodes a bencoded stream to
BEValue
s.Holds different types that a bencoded byte array can represent.
A particular element of the field \Z/(2^255-19).
A simple, fast array of bits, represented compactly by an array of ints internally.
Container of a byte array representing set and unset bits.
Represents a 2D matrix of bits.
Cache of blinding data.
Cache data for Blinding EdDSA keys.
Utilities for Blinding EdDSA keys.
Advise the router that the endpoint is blinded.
On-disk format:
Magic number (6 bytes)
Version major/minor (2 bytes)
file length (long)
free list start (unsigned int)
is mounted (unsigned short) 0 = no, 1 = yes
span size (unsigned short)
block size (unsigned int)
Metaindex skiplist is on page 2
Pages are 1 KB and are numbered starting from 1.
A naming service using the net.metanotion BlockFile database.
Manage blocking by IP address, in a manner similar to the Banlist,
which blocks by router hash.
One Blocklist.
Manage the IV validation for all of the router's tunnels by way of a big
decaying bloom filter.
A Bloom filter for sets of SHA1 digests.
Store the (opaque) bloom filter offsets for reuse.
This actually boots almost everything
start up the network database
start up the peer manager
On-disk format:
On-disk format:
On-disk format:
Base interface for all Buffers.
Note - if no filter is defined in stat.logFilters at startup, this class will not
be instantiated - see StatManager.
Single threaded controller of the tunnel creation process, spanning all tunnel pools.
Handle the received tunnel build message requests and replies,
including sending responsses to requests, updating the
lists of our tunnels and participating tunnels,
and updating stats.
Fill in the encrypted BuildRequestRecords in a TunnelBuildMessage
Receive the build message at a certain hop, decrypt its encrypted record,
read the enclosed tunnel request, decide how to reply, write the reply,
encrypt the reply record, and return a TunnelBuildMessage to forward on to
the next hop.
Decrypt the layers of a tunnel build reply message, determining whether the individual
hops agreed to participate in the tunnel, or if not, why not.
Methods for creating Tunnel Build Messages, i.e.
As of 0.9.48, supports two formats.
Class that creates an encrypted tunnel build message record.
Get the build date as set in i2p.jar,
and reasonable min and max values for the current time,
to be used as sanity checks.
For future restricted routes.
Connect via I2CP and ask the router the bandwidth limits.
Handle I2CP BW replies from the router
Wrap up an array of bytes so that they can be compared and placed in hashes,
maps, and the like.
OutputStream to InputStream adapter.
A backend that store and provides access to data using a
ByteBuffer
, using java internal methods for
long, integer and others types.Cache the objects frequently used to reduce memory churn.
JAVAPORT: The original code was a 2D array of ints, but since it only ever gets assigned
-1, 0, and 1, I'm going to use less memory and go with bytes.
ArrayList that uses a single iterator.
Extend java.util.AbstractCollection to create a collection that can be
iterated over without creation of a new object
Estimate how many of our tunnels the peer can join per hour.
For CoDelPriorityQueue
Instances of this class model the consolidation data point status from an RRD file.
For CoDelQueue
Dump out our local SSL certs, if any
Defines a certificate that can be attached to various I2P structures, such
as RouterIdentity and Destination, allowing routers and clients to help
manage denial of service attacks and the network utilization.
Java X.509 certificate utilities, consolidated from various places.
ChaCha20, wrapper around Noise ChaChaCore.
Implementation of the ChaCha20 core hash transformation.
Implements the ChaChaPoly cipher for Noise.
Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1
of ISO 18004.
Controls one or more types of updates.
Thrown when a barcode was successfully detected and decoded, but
was not returned because its checksum feature failed.
A simplistic cache using a
ConcurrentHashMap
.Interface to an authenticated cipher for use in the Noise protocol.
Class that contains a pair of CipherState objects.
If a class started via clients.config implements this interface,
it will be used to manage the client, instead of starting with main()
Clients implementing this interface MUST provide the following constructor:
public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args) {...}
All parameters are non-null.
Contains a really simple ClientApp "structure" and some static methods
so they can be used both by LoadClientAppsJob and by the configuration
page in the router console.
Notify the router of events, and provide methods for
client apps to find each other.
A simple ClientAppManager that supports register/unregister only,
so that client apps may find each other in AppContext.
Status of a client application.
Bridge the router and the client - managing state for a client.
Listen for connections on the specified port, and toss them onto the client manager's
set of connections once they are established.
Coordinate connections and various tasks
Manage all interactions with clients
Base impl of the client facade
Wrap a message either destined for a local client or received from one.
Receive events from the client and handle them accordingly (updating the runner when
necessary)
Manage all of the inbound and outbound client messages maintained by the router.
Pick peers randomly out of the fast pool, and put them into tunnels
ordered by XOR distance from a random key.
Wrap up the client settings specifying their tunnel criteria
Copied from net.i2p.router.client
We need a single thread that writes so we don't have issues with
the Piped Streams used in InternalSocket.
Async writer class so that if a client app hangs, they wont take down the
whole router with them (since otherwise the JobQueue would block until
the client reads from their i2cp socket, causing all sorts of bad things to
happen)
For external I2CP connections only.
Alternate location for determining the time which takes into account an offset.
Signals that the underlying database has been closed.
Wrap up the data contained in a GarlicMessage after being decrypted
CNAME payload (pointer to another domain / address).
Coalesce the stats framework every minute
Serve plugin icons, at /Plugins/pluginicon?plugin=foo
CoDel implementation of Active Queue Management.
CoDel implementation of Active Queue Management.
Simple command line access to various utilities.
Simple command line access to various utilities.
Simple command line access to various utilities.
Simple command line access to various utilities.
Simple command line access to various utilities.
Store a single comment and/or rating.
Store comments.
Manages the communication subsystem between peers, including connections,
listeners, transports, connection keys, etc.
Since the codes may change.
Callback for Snark events.
Implement on top of a ConcurrentHashMap with a dummy value.
Warning - static - not for use by multiple applications or prefixes
Handler to deal with form submissions from the advanced config form and act
upon the values.
Saves changes to clients.config or webapps.config
Simple config file handler.
Simple home page configuration.
Support additions via B64 Destkey, B64 Desthash, blahblah.i2p, and others supported by ConvertToHash
Handler to deal with form submissions from the logging config form and act
upon the values.
Render the configuration menu at the top of all the config pages.
Handler to deal with form submissions from the main config form and act
upon the values.
Used for both /config and /confignet
Utility class providing methods to parse and write files in config file
format, and subscription file format.
simple helper to control restarts/shutdowns in the left hand nav
Handler to deal with form submissions from the service config form and act
upon the values.
Handler to deal with form submissions from the stats config form and act
upon the values.
Simple sidebar configuration.
Handler to deal with form submissions from the tunnel config form and act
upon the values.
set the theme
Helper for /configui
Standalone (app context) only.
Manage the configuration of I2PControl.
Tools to check transport compatibility.
Maintain the state controlling a streaming connection between two
destinations.
Accepts connections on a I2PServerSocket and routes them to PeerAcceptors.
Receive data from the MessageOutputStream, build a packet,
and send it through a connection.
Receive new connection attempts
Use a bounded queue to limit the damage from SYN floods,
router overload, or a slow client
Coordinate all of the connections for a single local destination.
The callback interface for a pong.
Define the current options for the con (and allow custom tweaking midstream)
TODO many of these are not per-connection options, and should be migrated
somewhere so they aren't copied for every connection
Receive a packet for a particular connection - placing the data onto the
queue, marking packets as acked, updating various fields, etc.
Count how often we have received an incoming connection
This offers basic DOS protection but is not a complete solution.
Count how often something happens with a particular peer and all peers.
Manage both plaintext and salted/hashed password storage in
router.config.
The central resource coordinating updates.
Enumeration of available consolidation functions.
Class ConsolidationFunctionType
Convert any kind of destination String to a hash
Supported:
Base64 dest
Base64 dest.i2p
Base64 Hash
Base64 Hash.i2p
Base32 Hash
Base32 desthash.b32.i2p
example.i2p
Callback used when some peer changes state.
This class is used by the installer to copy files.
Expose a version string.
An InputStream that implements ReadCounter.
An OutputStream that counts how many bytes are written
and returns the count via getWritten().
Represents a country.
A class for retrieveing details about the CPU using the CPUID assembly instruction.
A class that can (amongst other things I assume) represent the state of the
different CPU registers after a call to the CPUID assembly method
Moved out of CPUID.java
Ref: http://en.wikipedia.org/wiki/CPUID
An interface for classes that provide lowlevel information about CPU's
Like CreateLeaseSetMessage, but supports both old
and new LeaseSet types, including LS2, Meta, and Encrypted.
Defines the message a client sends to a router when authorizing
the LeaseSet
Warning - misnamed.
Given an established connection, walk through the process of establishing the
lease set.
Defines the message a client sends to a router when establishing a new
session.
One CRL.
Wrapper for AES cypher operation using Cryptix's Rijndael implementation.
Cache the objects used in CryptixRijndael_Algorithm.makeKey to reduce
memory churn.
all the data alloc'ed in a makeKey call
Rijndael --pronounced Reindaal-- is a variable block-size (128-, 192- and
256-bit), variable key-size (128-, 192- and 256-bit) symmetric cipher.
Moved from CryptixAESEngine and net.i2p.router.tasks.CryptoChecker.
Warn about unavailable crypto to router and wrapper logs
Prime for ElGamal from http://tools.ietf.org/html/rfc3526
Primes for DSA: Generated by TheCrypto http://article.gmane.org/gmane.comp.security.invisiblenet.iip.devel/343
See also: ECConstants, RSAConstants
Copied and modded from I2PTunnel IndexBean (GPL)
Class used to interpolate datasource values from the collection of (timestamp, values)
points using natural cubic spline interpolation.
A twisted Edwards curve.
Implementation of the Curve25519 elliptic curve algorithm.
Implementation of the Curve25519 algorithm for the Noise protocol.
Main class of addressbook.
A thread that waits five minutes, then runs the addressbook daemon.
Generic payload class.
Base implementation of common methods for the two data structures
that are stored in the netDb, i.e.
Encapsulates metadata about the GeoIP database.
Defines the message a router sends to another router to search for a
key in the network database.
Modified and simplified for I2P
Constructs a Builder for the
DatabaseReader
.Defines the message a router sends to another router in response to a
search (DatabaseFindNearest or DatabaseLookup) when it doesn't have the value,
specifying what routers it would search.
Defines the message a router sends to another router to test the network
database reachability, as well as the reply message sent back.
Models a chunk of result data from an RRDatabase.
Thrown when the data was not available to read or write a DataStructure
Defines some simple IO routines for dealing with marshalling data structures
An abstract class to import data from external source.
Callback used to fetch data
Defines a message containing arbitrary bytes of data
This is what goes in a GarlicClove.
Class which should be used for all calculations based on the data fetched from RRD files.
Class to represent single datasource within RRD.
Instances of this class model a data source in an RRD file.
Class DataSourceType
Defines the class as a standard object with particular bit representation,
exposing methods to read and write that representation.
Base implementation of all data structures
A six-byte Date and 2 bytes of flags, since a Date won't encroach
on the top two bytes until the year 10889.
History of NetDb related activities (lookups, replies, stores, etc)
Start, track, and expire the I2PTunnelDCCClients.
Hooks to create and maintain DCC client and server tunnels
Periodic check
ref: https://dzone.com/articles/how-detect-java-deadlocks
In routerconsole because java.lang.management is
not available in Android.
Series of bloom filters which decay over time, allowing their continual use
for time sensitive data.
Double buffered hash set.
Buffering decoder, with output to a Writer.
Default
HostnameVerifier
implementation.Utility class for parsing filter definitions
Queue UIDLs for later deletion.
DS (Delegation Signer) record payload.
This class is used by the installer to delete one or more specified files.
Contains the delivery instructions for garlic cloves.
Defines the message sent back in reply to a message when requested, containing
the private ack id.
DeserializationException explains how and where the problem occurs in the source JSON text during deserialization.
The kinds of exceptions that can trigger a DeserializationException.
Defines an end point in the I2P network.
Request the router look up the dest for a hash
Response to DestLookupMessage.
Handle I2CP dest replies from the router
Interface for objects that implement destroying.
Defines the message a client sends to a router when destroying
existing session.
Tracks the connection attempts for a given remote Destination
Class returned by a FredPluginIPDetector.
I2P added multiple location support
Check for an updated su3 version.
Handles the request to update the router by firing off an
EepGet
call to download the latest su3 file
and display the status.Eepget the .su3 file to the temp dir, then notify.
Generate a new session key through a diffie hellman exchange.
Try to keep DH pairs at the ready.
Interface to a Diffie-Hellman algorithm for the Noise protocol.
Stub for KRPC
All the nodes we know about, stored as a mapping from
node ID to a Destination and Port.
The tracker stores peers, i.e.
Ask a connected peer for his RI.
Override to not call failed() in setMessage(),
as it will be called from runJob()
Simple storage of each cert in a separate file in a directory.
Defines the message a client sends to a router when destroying
existing session.
Handle I2CP disconnect messages from the router
Dispatcher for JSON-RPC 2.0 requests and notifications.
DLV record payload.
A DNAME resource record.
DNSKEY record payload.
A DNS label is an individual component of a DNS name.
A DNS message as defined by RFC 1035.
Symbolic DNS Opcode values.
Possible DNS response codes.
A DNS name, also called "domain name".
Simple implemetation of DNS over HTTPS.
DNSSEC Digest Algorithms.
DNSSEC Signature Algorithms.
A class that implement a downsampler, used to reduce the number of point to display.
Holds a draft message and reference to attachments, if any
Differences from Mail:
- Never multipart, body is always text/plain UTF-8
- Attachments are just headers containing name, type, encoding, and path to file
- Bcc is a header
DS (Delegation Signer) record payload.
Sign and verify using DSA-SHA1 and other signature algorithms.
Class to represent single data source definition within the RRD.
Enumeration of available datasource types.
Exists only to enable package.html to be included in javadoc.
Exists only to enable package.html to be included in javadoc.
Manage all interactions with clients
Dummy to lock up the updates for a period of time
A Dummy naming service that can only handle base64 and b32 destinations.
Write to nowhere
Manage peer references and keep them up to date so that when asked for peers,
it can provide appropriate peers according to the criteria provided.
Since the TimedWeightedPriorityMessageQueue.add()
was disabled by jrandom in UDPTransport.java
on 2006-02-19, and the choke/unchoke was disabled at the same time,
all of TWPMQ is pointless, so just do this for now.
Build and maintain tunnels throughout the network.
accept everything
Constants for elliptic curves, from NIST FIPS 186-4 (2013) / ANSI X9.62
Handles the actual ECIES+AEAD encryption and decryption scenarios using the
supplied keys and data.
Used by KeyGenerator.getSigningPublicKey()
Modified from
http://stackoverflow.com/questions/15727147/scalar-multiplication-of-point-over-elliptic-curve
Apparently public domain.
Class to represent a field element of the finite field $p = 2^{255} - 19$ elements.
Helper class for encoding/decoding from/to the 32 byte representation.
Class for reducing a huge integer modulo the group order q and
doing a combined multiply plus add plus reduce operation.
Utilities for Blinding EdDSA keys.
Signing and verification for EdDSA.
Implementation of AlgorithmParameterSpec that holds the name of a named
EdDSA curve specification.
Common interface for all EdDSA keys.
EdDSA Curve specification that can also be referred to by name.
The named EdDSA curves.
Parameter specification for an EdDSA algorithm.
An EdDSA private key.
An EdDSA public key.
Ugly little accessor for the edit page
Warning - This class is not part of the i2ptunnel API,
it has been moved from the jar to the war.
EDNS - Extension Mechanism for DNS.
The EDNS option code.
EepGet [-p 127.0.0.1:4444]
[-n #retries]
[-o outputFile]
[-m markSize lineLen]
url
Callback interface
Deprecated.
use HostsTxtNamingService.put()
A network-based naming service using HTTP, with in-memory caching.
This is a quick hack to get a working EepHead, primarily for the following usage:
Decode only.
The elements of the graph.
Elligator2 for X25519 keys.
X25519 keys, with the public key Elligator2 encoding pre-calculated
Handles the actual ElGamal+AES encryption and decryption scenarios using the
supplied keys and data.
Wrapper for ElGamal encryption/signature schemes.
Copied from org.bouncycastle.jce.spec
This can't actually be passed to the BC provider, we would have to
use reflection to create a "real" org.bouncycasle.jce.spec.ElGamalParameterSpec.
This class specifies an ElGamal private key with its associated parameters.
This class specifies an ElGamal public key with its associated parameters.
ElG signatures with SHA-256
ref: https://en.wikipedia.org/wiki/ElGamal_signature_scheme
Elligator2 for X25519 keys.
Immutable OrderedProperties, to reduce object churn
in LS2 where it's expected to be empty.
Base encryption algorithm type
These are a set of hints that you may pass to Writers to specify their behavior.
Interface to encode/decode content transfer encodings like quoted-printable, base64 etc.
Common interface for all $(b-1)$-bit encodings of elements
of EdDSA finite fields.
Converted from Exception to IOException in 0.9.33
Manager class to handle content transfer encodings.
ElGamal-encrypted request or response.
Use getSigningKey() / setSigningKey() (revocation key in super) for the blinded key.
Defines the properties for various encryption types
that I2P supports or may someday support.
Allow various components with some entropy to feed that entropy back
into some PRNG.
A stream that returns EOF when the input matches
the bytes provided.
Small swing-based utility to convert timestamps (seconds since epoch) to readable dates and vice versa.
See ISO 18004:2006, 6.5.1.
Common servlet for errors
This is intended for webapps and local plugins.
Escape HTML on the fly.
Escape HTML on the fly.
Inbound NTCP 2 only.
Coordinate the establishment of new sessions - both inbound and outbound.
Handle the establishment
Event dispatching interface.
An implementation of the EventDispatcher interface.
Simple event logger for occasional events,
with caching for reads.
/events.jsp
The main NTCP NIO thread.
An implementation of the EventDispatcher interface for
receiving events via in-line notifyEvent() only.
This class can be used by the installer to execute shell commands.
Deprecated - used only by SimpleTimer
This runs twice for each tunnel.
Periodically search through all leases to find expired ones, failing those
keys and firing up a new search for each (in case we want it later, might as
well preemptively fetch it)
Go through the routing table pick routers that are
is out of date, but don't expire routers we're actively connected to.
A filter definition element that includes a single, explicitly defined
remote destination
Pick peers randomly out of the not-failing pool, and put them into a tunnel
ordered by XOR distance from a random key.
Search for a particular key iteratively until we either find a value, we run
out of peers, or the bucket the key belongs in has sufficient values in it.
Deprecated.
unused, see comments in KNDF
REF: BEP 10 Extension Protocol
A simplified Main that does not require router.jar, for App Context only.
When started before the router, e.g.
Utilities for creating, storing, retrieving the signing keys for
the netdb family feature
Only STORED_KEY is fully trusted.
Ignore, but save, the SHA-256 checksum in the full 16-byte header when read in.
A cancellable torrent file downloader.
Class used to represent data fetched from the RRD.
Class to represent fetch request.
An EdDSA finite field.
Note: concrete subclasses must implement hashCode() and equals()
Concurrent plan:
It's difficult to get rid of the locks on _pendingInboundRequests
since locked_satisyInboundAvailable() leaves Requests on the head
of the queue.
A bandwidth request, either inbound or outbound.
Thread that runs several times a second to "give" bandwidth to
FIFOBandwidthLimiter.
File implementation of Buffer.
Dump info on jars and wars
An element of filter definition that reads hashes of remote destinations
from a file.
File-based log writer thread that pulls log records from the LogManager,
writes them to the current logfile, and rotates the logs as necessary.
File name encoding methods
A FileFilter that accepts regular files
with a suffix and optionally a prefix, case-insensitive.
General helper methods for messing with files
These are static methods that do NOT convert arguments
to absolute paths for a particular context and directory.
Definition of an access filter.
Base class for elements found in filter definition files
Factory for incoming connection filters.
Replace plain \n with \r\n on the fly.
This class is used by the installer in Windows to process the
wrapper.config
file.Build a HandleDatabaseLookupMessageJob whenever a DatabaseLookupMessage arrives
Create a HandleDatabaseStoreMessageJob whenever a DatabaseStoreMessage arrives
Simple job to monitor the floodfill pool.
The network database
This is where we implement semi-Kademlia with the floodfills, by
selecting floodfills closest to a given key for
searches and stores.
Job to flood nearby floodfill routers with our RI.
This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
Send a netDb lookup to a floodfill peer - If it is found, great,
but if they reply back saying they dont know it, queue up a store of the
key to a random floodfill peer again (via FloodfillStoreJob)
Mostly replaced by IterativeLookupSelector
This is the timeout for the whole search.
Uunused directly, replaced by IterativeSearchJob, but still extended by
SingleSearchJob.
Try sending a search to some floodfill peers, but if we don't get a successful
match within half the allowed lookup time, give up and start querying through
the normal (kademlia) channels.
Count how often we have recently flooded a key
This offers basic DOS protection but is not a complete solution.
Folder object manages a array Object[] to support
paging and sorting.
Thrown when a barcode was successfully detected, but some aspect of
the content did not conform to the barcode's format rules.
Encapsulates a QR Code's format information, including the data mask used and
error correction level.
Simple form handler base class - does not depend on servlets or jsp,
but instead the subclasses are populated with javabean properties.
Wrapper around GNU-Crypto's Fortuna PRNG.
The Fortuna continuously-seeded pseudo-random number generator.
The Fortuna generator function.
A public Internet Protocol port on the node which needs to be forwarded if the
node is NATed.
Callback called by port forwarding plugins to indicate success or failure.
Gather fragments of I2NPMessages at a tunnel endpoint, making them available
for reading when complete.
Handle fragments at the endpoint of a tunnel, peeling off fully completed
I2NPMessages when they arrive, and dropping fragments if they take too long
to arrive.
Receive messages out of the tunnel endpoint.
On-disk format:
Manage the calculation of a moving average event frequency over a certain period.
coordinate an event frequency over various periods
Contains one deliverable message encrypted to a router along with instructions
and a certificate 'paying for' the delivery.
Define the contents of a garlic chunk that contains 1 or more sub garlics.
Defines the wrapped garlic message
Build garlic messages based on a GarlicConfig
HandlerJobBuilder to build jobs to handle GarlicMessages
This is the handler for garlic message not received down a tunnel, which is the
case for floodfills receiving netdb messages.
Read a GarlicMessage, decrypt it, and return the resulting CloveSet.
Decrypt a garlic message and pass off any valid cloves to the configured
receiver to dispatch as they choose.
General helper functions used by all UIs.
This class contains utility methods for performing mathematical operations over
the Galois Fields.
Represents a polynomial whose coefficients are elements of a GF.
Manage geoip lookup in a file with the Tor geoip format.
Generate compressed geoipv6.dat.gz file, and
lookup entries in it.
Request the router tells us the current bw limits
Retrieve a set of bids for a particular outbound message, and if any are found
that meet the message's requirements, register the message as in process and
pass it on to the transport for processing
Request the other side to send us what they think the current time is.
This is a Java port of GNU getopt, a class for parsing command line
arguments passed to programs.
This class implements the main GNU libintl functions in Java.
Simple thread that sits and waits forever, managing the
graceful shutdown "process" (describing it would take more text
than just reading the code...)
Basic graph defaults
/graphs.jsp, including form, and /graph.jsp
A point $(x,y)$ on an EdDSA curve.
Available representations for a group element.
A helper class that aims to provide comparable growth performance to ArrayList, but on primitive
arrays.
Gunzip implementation per
RFC 1952, reusing
java's standard CRC32 and Inflater and InflaterOutputStream implementations.
Gzip File implementation of Buffer.
Handle a lookup for a key received from a remote peer.
Handle a lookup for a key received from a remote peer.
Receive DatabaseStoreMessage data and store it in the local net db
Unencrypt a garlic message and handle each of the cloves - locally destined
messages are tossed into the inbound network message pool so they're handled
as if they arrived locally.
Something that can be stopped by the SAMBridge.
Base class for handling I2CP messages
Defines a class that builds jobs to handle a particular message - these
builders are registered with the InNetMessagePool for various I2NP message
types, allowing immediate queueing of a handler job rather than waiting for
a polling job to come pick it up.
Interface to a Noise handshake.
Implementations of this interface can generate one hash value for a given
object.
Defines the hash as defined by the I2P data structure spec.
48 byte hash
64 byte hash
Class for generation and parsing of HashCash
Copyright 2006 Gregory Rubin grrubin@gmail.com
Permission is given to use, modify, and or distribute this code so long as this message remains attached
Please see the spec at: http://www.hashcash.org/
Copyright 2006 Gregory Rubin grrubin@gmail.com
Permission is given to use, modify, and or distribute this code so long as this message remains attached
Please see the spec at: http://www.hashcash.org/
Moved from PeerSelector
Records the range of values that a hash value may take.
Deprecated.
unused
Class to represent RRD header.
Instances of this class model the header section of an RRD file.
Ref:
http://en.wikipedia.org/wiki/MIME#Encoded-Word
http://tools.ietf.org/html/rfc2047
https://jeffreystedfast.blogspot.com/2013/09/time-for-rant-on-mime-parsers.html
https://jeffreystedfast.blogspot.com/2013/08/why-decoding-rfc2047-encoded-headers-is.html
Base helper
Hexdump class (well, it's actually a namespace with some functions,
but let's stick with java terminology :-).
Various flavors of HKDF using HMAC-SHA256.
Calculate the HMAC-SHA256 of a key+message.
Like SecretKeySpec but doesn't copy the key in the construtor, for speed.
Calculate the HMAC of a key+message.
For /home and /confighome
Defines the general configuration for a hop in a tunnel.
Take a received tunnel message, verify that it isn't a
duplicate, and translate it into what the next hop will
want.
Block certain Host headers to prevent DNS rebinding attacks.
Block certain Host headers to prevent DNS rebinding attacks.
Block certain Host headers to prevent DNS rebinding attacks.
Request the router look up the dest for a hash
or a host.
Response to HostLookupMessage.
Handle I2CP dest replies from the router
A naming service based on multiple "hosts.txt" files.
A hostname, b64 destination, and optional properties.
A class to iterate through a hosts.txt or config file without
reading the whole thing into memory.
Utility class providing methods to parse and write files in a hosts.txt file
format, and subscription file format.
This class rappresnet an HTTP request, and act as HTTP client when it sends the request
This does the transparent gzip decompression on the client side.
This class identifies an HTTP over TCP server
The server must be initialized iether by the
Optionally a set of
The server then can be started or stopped by the method
The server must be initialized iether by the
HTTPServer.open(InetAddress, int)
or the HTTPServer.open(String, int)
method.Optionally a set of
HTTPRequestListener
may be setThe server then can be started or stopped by the method
HTTPServer.start()
and HTTPServer.stop()
Defines the base functionality of API messages
As of 0.9.48, does NOT extend DataStructure.
Represent an error serializing or deserializing a message
Define a way to handle a particular type of message
Handle messages from the server for the client or vice versa
Defines the base message implementation.
Produce the various messages the session needs to send to the router.
Contains the methods to talk to a router or client via I2CP,
when both are in the same JVM.
Contains the methods to talk to a router or client via I2CP,
when both are in the same JVM.
The I2CPMessageReader reads an InputStream (using
I2CPMessageHandler
) and passes out events to a registered
listener, where events are either messages being received, exceptions being
thrown, or the connection being closed.Defines the different events the reader produces while reading the stream
Base interface for all I2NP messages
Note: No longer extends DataStructure as of 0.9.48
Represent an error serializing or deserializing an APIMessage
Handle messages from router to router.
Defines the base message implementation.
interface for extending the types of messages handled - unused
Provide a base scope for accessing singletons that I2P exposes.
Like
I2PThread
but with per-thread OOM listeners,
rather than a static router-wide listener list,
so that an OOM in an app won't call the router listener
to shutdown the whole router.Define the standard means of interacting with the I2P system
An I2PClient contains no state, it is just a facility for creating private key files
and generating sesssions from existing private key files.
Provide a means of hooking into an appropriate I2PClient implementation
Base client implementation.
Contains a map of message handlers that a session will want to use
This handles the starting and stopping of Jetty
from a single static class so it can be called via clients.config.
Class for dissecting I2P repliable datagrams, checking the authenticity of
the sender.
Class for creating I2P repliable datagrams.
Extends DefaultServlet to set locale for the displayed time of directory listings,
to prevent leaking of the locale.
Base class of I2P exceptions
This was originally used to provide chained exceptions, but
those were added to Exception in Java 1.4, so this class provides nothing
extra at the moment.
HMAC implementation based on RFC2104
H(K XOR opad, H(K XOR ipad, text))
modified by jrandom to use the session key byte array directly and to cache
a frequently used buffer (called on doFinal).
Warning - not necessarily a stable API.
Exception thrown when I2P repliable datagram signature verification fails.
Modified from Jetty 6.1.26 StdErrLog.java and Slf4jLog.java
Usage: org.eclipse.log.Log.setLog(new I2PLogger(ctx));
This class contains a number of properties ((key,value)-pairs).
This
RequestLog
implementation outputs logs in the pseudo-standard NCSA common log format.Streaming server socket returned by
I2PSocketManager.getServerSocket()
.Bridge to allow accepting new connections
Define the standard means of sending and receiving messages on the
I2P network by using the I2CP (the client protocol).
Implement multiplexing with a 1-byte 'protocol' and a two-byte 'port'.
Thrown when there is a problem doing something on the session
Implementation of an I2P session running over TCP.
Thread safe implementation of an I2P session running over TCP.
Define a means for the router to asynchronously notify the client that a
new message is available or the router is under attack.
I2PSession with protocol and ports
Streaming lib has been modified to send I2PSession.PROTO_STREAMING but
still receives all.
Define a means for the router to asynchronously notify the client that a
new message is available or the router is under attack.
Simple client implementation with no Destination,
just used to talk to the router.
Create a new session for doing naming and bandwidth queries only.
Producer
This sends to a fixed destination specified in the constructor
Producer
This sends to any destination specified in send()
Refactored to eliminate Jetty dependencies.
I2P specific helpers for I2PSnark
We use this class as a sort of context for i2psnark
so we can run multiple instances of single Snarks
(but not multiple SnarkManagers, it is still static)
Streaming socket returned by
I2PSocketManager.connect(Destination)
.Deprecated, unimplemented, does nothing.
A SocketAddress (Destination + port) so we can have SocketChannels.
Fetch a URL using a socket from the supplied I2PSocketManager.
An I2P-specific IOException thrown from input and output streams,
with a stored status code to be used for programmatic responses.
Bridge between the full streaming lib and the I2PSocket API
Centralize the coordination and multiplexing of the local client's streaming.
Simplify the creation of I2PSession and transient I2P Destination objects if
necessary to create a socket manager.
Deprecated.
Centralize the coordination and multiplexing of the local client's streaming.
Define the configuration for streaming and verifying data on the socket.
Define the configuration for streaming and verifying data on the socket.
Refactored in 0.9.53 to support I2CP protocols and ports
Loads trusted ASCII certs from ~/.i2p/certificates/ and $I2P/certificates/.
Preferred over
Thread
for all router uses.An I2PTunnel tracks one or more I2PTunnelTasks and one or more I2PSessions.
Callback routine to find out
Supports the following:
A standard client, using an existing socket manager.
A standard server that only answers for registered ports,
and each port can only be used once.
Reuse HTTP server's I2PSocketManager for a proxy with no outproxy capability.
Act as a mini HTTP proxy, handling various different types of requests,
forwarding them through I2P appropriately, and displaying the reply.
Common things for HTTPClient and ConnectClient
Retrofit over them in 0.8.2
Override the response with a stream filtering the HTTP headers
received.
Simple extension to the I2PTunnelServer that filters the HTTP
headers sent from the client to the server, replacing the Host
header with whatever this instance has been configured with, and
if the browser set Accept-Encoding: x-i2p-gzip, gzip the http
message body and set Content-Encoding: x-i2p-gzip.
Todo: Can we extend I2PTunnelClient instead and remove some duplicated code?
Simple extension to the I2PTunnelServer that filters the registration
sequence to pass the destination hash of the client through as the hostname,
so an IRC Server may track users across nick changes.
Like I2PTunnelRunner but socket-to-socket
Warning - not maintained as a stable API for external use.
A thread that starts two more threads, one to forward traffic in each direction.
For use in new constructor
Either a Server or a Client.
Base client class that sets up an I2P Datagram client destination.
Base client class that sets up an I2P Datagram server destination.
I2P
Overridden to load the span when required and null out the keys and values
when the iterator leaves the span.
I2P version of BSkipSpan
BSkipSpan stores all keys and values in-memory, backed by the file.
Identicon renderer interface.
This servlet generates identicon (visual identifier) images ranging
from 16x16 to 512x512 in size.
Utility methods useful for implementing identicon functionality.
May be used to scan and repair the database nondestructively.
Periodically check for idle condition based on connected peers,
and reduce/restore tunnel count as necessary.
Close the POP3 connection after a certain idle time
Receive the inbound tunnel message, removing all of the layers
added by earlier hops to recover the preprocessed data sent
by the gateway.
NTCP 2.
Data for a new connection being established, where the remote peer has
initiated the connection with us.
Data for a new connection being established, where the remote peer has
initiated the connection with us.
Override the hop processor to seed the message with a random
IV.
Handle messages at the IBGW.
When a message arrives at the inbound tunnel endpoint, this distributor
honors the instructions (safely)
Organize the received data message fragments, feeding completed messages
to the
MessageReceiver
and telling the PeerState
to ACK.Modifiable Long, no locking
Hold the raw data fragments of an inbound message.
Receive the preprocessed data for an inbound gateway, encrypt it, and forward
it on to the first hop.
Byte range inclusive of end points.
Something that filters incoming streaming connections.
Simple accessor for exposing tunnel info, but also an ugly form handler
Warning - This class is not part of the i2ptunnel API,
it has been moved from the jar to the war.
A collection of utilities relating to InetAddresses.
A 20-byte SHA1 info hash
Manage a pool of inbound InNetMessages.
If the i2pupdate.zip file is present,
unzip it and JVM exit.
Determine how well integrated the peer is - how likely they will be useful
to us if we are trying to get further connected.
An interface for classes that provide lowlevel information about Intel CPU's
Moved out of CPUID.java
Ref: https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers
Ref: http://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures
A manager for the in-JVM I2CP message interface
A simple in-JVM ServerSocket using Piped Streams.
A simple in-JVM Socket using Piped Streams.
Listen for in-JVM connections on the internal "socket"
java -cp i2p.jar:router.jar:desktopgui.jar net.i2p.desktopgui.Main
Full access to router context.
A resource record representing a internet address.
Keep track of inbound and outbound introductions.
Exception thrown when a bencoded stream is corrupted.
Signals that there was an issue reading from the MaxMind DB file due to
unexpected data formatting.
Signals that there was an issue reading from the database file due to
unexpected data formatting.
Exception thrown if the filter definition file cannot be
parsed for some reason.
An exception indicating a corrupted RRD.
Order profiles by their capacity, but backwards (highest capacity / value first).
Interface to be used for custom datasources.
Count IPs
The basic visible methods of any pseudo-random number generator.
Static methods to filter individual lines.
Thread to do inbound filtering.
Thread to do outbound filtering.
Ask a single peer for a single key.
Ask the peer who sent us the DSRM for the RouterInfos...
Slightly modified version of FloodOnlyLookupSelector.
A traditional Kademlia search that continues to search
when the initial lookup fails, by iteratively searching the
closer-to-the-key peers returned by the query in a DSRM.
This is the timeout for a single lookup, not for the whole search.
Provide a generic interface for IV validation which may be implemented
through something as simple as a hashtable or more a complicated
bloom filter.
Start Jetty where the args are one or more XML files.
Parses a Jetty XML configuration file.
Defines an executable task
For use by the router only.
Base implementation of a Job
For use by the router only.
Manage the pending jobs according to whatever algorithm is appropriate, giving
preference to earlier scheduled jobs.
a do run run run a do run run
Glorified struct to contain basic job stats.
Define the timing requirements and statistics for a particular job
For use by the router only.
Jsonables can be serialized in java script object notation (JSON).
JsonArray is a common non-thread safe data format for a collection of data.
Jsoner provides JSON utilities for escaping strings to be JSON compatible, thread safe parsing (RFC 4627) JSON
strings, and serializing data to strings in JSON format.
Should be implemented by Enums so that keys are easily maintained.
JsonObject is a common non-thread safe data format for string to data mappings.
Represents a JSON-RPC 2.0 error that occurred during the processing of a
request.
Represents a JSON-RPC 2.0 error that occured during the processing of a
request.
The base abstract class for JSON-RPC 2.0 requests, notifications and
responses.
Represents a JSON-RPC 2.0 notification.
Enumeration of the three parameter types in JSON-RPC 2.0 requests and
notifications.
Thrown to indicate an exception during the parsing of a JSON-RPC 2.0
message string.
Parses JSON-RPC 2.0 request, notification and response messages.
Represents a JSON-RPC 2.0 request.
Represents a JSON-RPC 2.0 response.
Provide an JSON-RPC 2.0 API for remote controlling of I2P
Created by Sebastian Malecki on 13.05.14.
Simply call org.apache.jasper.JspC, then exit.
Kademlia based version of the network database.
Removes an element older than 15 minutes, but only if the bucket hasn't changed in 5 minutes.
Group, without inherent ordering, a set of keys a certain distance away from
a local key, using XOR as the distance metric
Refactored from net.i2p.router.networkdb.kademlia
A concurrent implementation using ConcurrentHashSet.
In-memory storage of buckets sorted by the XOR metric from the base (us)
passed in via the constructor.
Called when a kbucket can no longer be split and is too big
This certificate type gets its own class because it's going to be used a lot.
Modified from eddsa
Make KeyPairs
Define a way of generating asymmetrical key pairs as well as symmetrical keys
Maintain all of the key pairs for the router.
Same as java.security.KeyPair, but with I2P keys
Default keysize is 256 (Ed25519)
Modified from eddsa
Only supported strength is 2048
A backend for storing and retrieving SigningPublicKeys
to be used for verifying signatures.
simple
KeysAndCert has a public key, a signing key, and a certificate.
Given a key, populates arrays determining word and bit offsets into
a Bloom filter.
Keystore utilities, consolidated from various places.
Standard BEP 5
Mods for I2P:
A LDH (Letters, Digits, Hyphen) label, which is the classical label form.
A DNS label with a leading or trailing hyphen ('-').
Defines the proof that a particular router / tunnel is allowed to receive
messages for a particular Destination during some period of time.
Like Lease but with 4-byte timestamps.
Bundle up the data points necessary when asynchronously requesting a lease
from a client
Defines the set of leases a destination currently has.
See proposal 123
Wrap up the keys given to the router when a destination connects to it.
A LinkedHashMap with a maximum size, for use as
an LRU cache.
Limit total reads and skips to a specified maximum, then return EOF
Class used to interpolate datasource values from the collection of (timestamp, values)
points.
A enumeration of interpolation methods
The return value of I2PSession.lookupDest2()
Run any client applications specified in clients.config.
Public for router console only, not for use by others, subject to change
Run once or twice at startup by StartupJob,
and then runs BootCommSystemJob
Convert foo.jsp to foo_xx.jsp for language xx.
Pull the caching used only by KBucketImpl out of Hash and put it here.
Very simple web server.
A simple log with automatic time stamping.
Wrapper class for whatever logging system I2P uses.
Offer a glimpse into the last few console messages generated.
Defines the log limit for a particular set of logs
Manages the logging system, loading (and reloading) the configuration file,
coordinating the log limits, and storing the set of log records pending.
Keep track of a log entry, unformatted.
Render a log record according to the log manager's settings
Log writer thread that pulls log records from the LogManager and writes them to
the log.
This object represents the definition of a long option in the Java port
of GNU getopt.
Simple lookahead buffer to keep the last K bytes in reserve,
configured to easily be reused.
Connect via I2CP and ask the router to look up
the lease of a hash, convert it to a Destination and return it.
Look up the lease of a hash, to convert it to a Destination for the client.
The return value of I2PSession.lookupDest2()
Provides a lookup service for information based on an IP address.
Count how often we have recently received a lookup request with
the reply specified to go to a peer/TunnelId pair.
Simple state for the download of the metainfo, shared between
Peer and ExtensionHandler.
data structure to hold a single message, mostly used with folder view and sorting
There's one of these for each Folder.
The main class of the application.
Execute one of the other classes in this package.
Write a timestamp to the ping file where
other routers trying to use the same configuration can see it
Used for detection of routers with matching IPs or family.
Encapsulates custom configuration used in methods of
MatrixToImageWriter
.Writes a
BitMatrix
to BufferedImage
,
file or stream.Buffer backed by a byte array.
Class to define Message.
Used to queue outgoing connections
sendMessage() should be used to translate them to wire format.
Context information about JSON-RPC 2.0 request and notification messages.
Receive raw information from the I2PSession and turn it into
Packets, if we can.
Simply act as a pen register of messages sent in and out of the router.
Defines the message ID of a message delivered between a router and a client
in a particular session.
Stream that can be given messages out of order
yet present them in order.
A stream that we can shove data into that fires off those bytes
on flush or when the buffer is full.
Define a component to receive data flushed from this stream
Define a way to detect the status of a write
Defines the payload message a router sends to the client
Handle I2CP MessagePayloadMessages from the router delivering the contents
of a message by accepting it, decrypting the payload, adding it to the set of
recieved messages, and telling the router that it has been recieved correctly.
Base queue for messages not yet packetized
Async job to notify the client that a new message is available for them,
or just send it directly if specified.
Pull fully completed fragments off the
InboundMessageFragments
queue,
parse 'em into I2NPMessages, and stick them on the
InNetMessagePool
by way of the UDPTransport
.Translate strings for this package.
Translate strings for this package.
Translate strings for this package.
Translate strings for this package.
Define a mechanism to select what messages are associated with a particular
OutNetMessage.
Contains the state of a payload message being sent to a peer.
Defines the message a router sends to a client about a single message.
Handle I2CP MessageStatusMessages from the router.
Singleton to manage the logic (and historical data) to determine whether a message
is valid or not (meaning it isn't expired and hasn't already been received).
Method and class for garlic encrypting outbound netdb traffic,
and sending keys and tags for others to encrypt inbound netdb traffic,
including management of the ElGamal/AES tags.
A single key and tag, for receiving a single message.
Wrapper so that we can keep track of the key and tags
for later notification to the SKM
Note: this class is buggy, as it doesn't propogate custom meta fields into the bencoded
info data, and from there to the info_hash.
Like a Lease, but points to another LeaseSet.
PRELIMINARY - Subject to change - see proposal 123
A naming service of multiple naming services.
Migrate the clients.config and jetty.xml files
from Jetty 5/6 to Jetty 7/8.
Based on MimeTypes from Jetty 6.1.26, heavily simplified
and modified to remove all dependencies on Jetty libs.
As modified from BiglyBT MLabPlugin
The parameter for runNDT()
Returned from runNDT
The listener for ToolRun
See ISO 18004:2006, 6.4.1, Tables 2 and 3.
Used for both incoming and outgoing message IDs
Get the MTU for the network interface of an address.
Fire up multiple routers in the same VM, all with their own RouterContext
(and all that entails).
Sends to one of many Sinks based on the toPort
Sends to many Sinks
Handles the actual decryption using the
supplied keys and data.
Both.
MX record payload (mail service pointer).
Utility class for retrieving JSON-RPC 2.0 named parameters (key-value pairs
packed into a JSON Object).
Naming services create a subclass of this class.
Talk to the NamingService API instead of modifying the hosts.txt files directly,
except for the 'published' addressbook.
BigInteger that takes advantage of the jbigi library for the modPow operation,
which accounts for a massive segment of the processing cost of asymmetric
crypto.
Service to put links on the console.
Class to hold constants.
Class that defines utility methods used by the NDT code
Track lookup fails
/netdb
A FormHandler since 0.9.38.
Sort by style, then host
Defines the mechanism for interacting with I2P's network database
Utility class that creates a new "Frame" with a window closing functionality.
Listen for indication of new mail, maybe
One news item.
HTML-formatted full news entries
Task to fetch updates to the news.xml, and to keep
track of whether that has an announcement for a new version.
Task to periodically look for updates to the news.xml, and to keep
track of whether that has an announcement for a new version.
If news file does not exist, use file from the initialNews directory
in $I2P
Manage current news.
The update metadata.
Task to periodically look for updates to the news.xml, and to keep
track of whether that has an announcement for a new version.
Parse out the news.xml file which is in Atom format (RFC4287).
The action taken when encountering a non-whitelisted
XHTML element or blacklisted attribute in the feed content.
A X25519 key and key ID.
A 20-byte peer ID, used as a Map key in lots of places.
9-block Identicon renderer.
A no-op cache singleton.
Closest to a InfoHash or NID key.
Utility functions for the Noise protocol library.
A DNS label which contains more than just letters, digits and a hyphen.
A Non-Reserved LDH label (NR-LDH label), which do not have "--" in the third and fourth position.
Interface for handling JSON-RPC 2.0 notifications.
A service to send messages to users.
Nameserver record.
NSEC record payload.
NSEC3 record payload.
DNSSEC NSEC3 Hash Algorithms.
NSEC3PARAM record payload.
NTCP2 Padding/Dummy/Delay configuration for data phase.
NTCP2 Payload generation and parsing
Base class for blocks to be transmitted.
For all callbacks, recommend throwing exceptions only from the handshake.
Coordinate the connection to a single peer.
Previously, NTCP was using SimpleTimer with a delay of 0, which
was a real abuse.
The NIO TCP transport
NtpClient - an NTP client for Java.
This class represents a NTP message, as specified in RFC 2030.
Count things.
Kaboom
OPT payload (see RFC 2671 for details).
Properties map that has its keySet ordered consistently (via the key's lexicographical ordering).
OsfwWorker creates a thread that listens for a message from the server.
A Non-LDH label which does not begin with an underscore ('_'), hyphen ('-') or ends with an hyphen.
Helper for OCMOSJ
This is the place where we make I2P go fast.
Key used to cache things with based on source + dest
Static methods to create a Garlic Message with one or more cloves, as follows:
Send a client message out an outbound tunnel and into an inbound
tunnel on the target leaseSet.
Data for a new connection being established, where we initiated the
connection with a remote peer.
Data for a new connection being established, where we initiated the
connection with a remote peer.
Per-introducer introduction states
Stores all the state for an unsent or partially-sent message
Turn the preprocessed tunnel data into something that can be delivered to the
first hop in the tunnel.
When a message arrives at the outbound tunnel endpoint, this distributor
honors the instructions.
Coordinate the outbound fragments and select the next one to be built.
throttle
Tracks outbound messages.
Maintain the outbound fragmentation for resending, for a single message.
NTCP 2 only.
We are the outbound gateway - we created this outbound tunnel.
Blocking thread to grab new messages off the outbound queue and
plopping them into our active pool.
Receive the preprocessed data for an outbound gateway, encrypt all of the
layers, and forward it on to the first hop.
Sent from the OBEP to the tunnel creator via an inbound tunnel.
We are the end of an outbound tunnel that we did not create.
Wrap up an outbound I2NP message, along with the information associated with its
delivery and jobs to be fired off if particular events occur.
Maintain a pool of OutNetMessages destined for other routers, organized by
priority, expiring messages as necessary.
Output only.
This contains solely the data that goes out on the wire,
including the local and remote port which is embedded in
the I2CP overhead, not in the packet itself.
Big ol' class to do all our packet formatting.
Class for passing multiple fragments to buildPacket()
SSU2 only
receive a packet and dispatch it correctly to the connection specified,
the server socket, or queue a reply RST packet.
Pull inbound packets from the inbound receiver's queue, figure out what
peer session they belong to (if any), authenticate and decrypt them
with the appropriate keys, and push them to the appropriate handler.
This is the class used for outbound packets.
Blocking thread to grab new packets off the outbound fragment
pool and toss 'em onto the outbound packet queues.
Queue out packets to be sent through the session.
A pair of routers and the distance between them.
The base abstract class for the JSON-RPC 2.0 parameter retrievers.
Fetch exactly the first 'size' bytes into a stream
Anything less or more will throw an IOException
No retries, no min and max size options, no timeout option
If the server does not return a Content-Length header of the correct size,
the fetch will fail.
Store the received data either on the heap or in a temp file.
Count how often we have accepted a tunnel with the peer
as the previous or next hop.
Manage both plaintext and salted/hashed password storage in
router.config.
Information about all supported handshake patterns.
Defines the actual payload of a message being delivered, including the
standard encryption wrapping, as defined by the I2P data structure spec.
Garlic config for a single clove, containing an I2NP message and no sub-cloves.
Write a standard pcap file with a "TCP" packet that can be analyzed with
standard tools such as wireshark.
Instances of this class model the primary data point status from an RRD file.
A single peer for a single torrent.
Accepts incomming connections from peers.
A unique exception so we can tell the ConnectionAcceptor about non-BT connections
TimerTask that checks for good/bad up/downloader.
Coordinates what peer does what.
Hmm, any guesses as to what this is? Used by the multitorrent functionality
in the PeerAcceptor to pick the right PeerCoordinator to accept the con for.
Store the address information about a peer.
Listener for Peer events.
Manage the current state of the statistics
Also maintain Sets for each of the capabilities in TRACKED_CAPS.
Manage peer references and keep them up to date so that when asked for peers,
it can provide appropriate peers according to the criteria provided.
Base implementation that has simple algorithms and periodically saves state
Deprecated.
unused, for command line client only, commented out in Snark.java
Copied from http://www.i2p2.i2p/how_peerselection.html
See also main() below for additional commentary by zzz.
All the peers for a single torrent
Defines the criteria for selecting a set of peers for use when searching the
PeerManager
Only used by PeerTestJob, which may not have a point.
Mostly unused, see overrides in FloodfillPeerSelector
Contain all of the state about a UDP connection to a peer.
Contain all of the state about a UDP connection to a peer.
Initiate a test (we are Alice)
Grab some peers that we want to test and probe them briefly to get some
more accurate and up to date performance data.
Entry points are runTest() to start a new test as Alice,
and receiveTest() for all received test packets.
Track the state of a peer test.
Stores all the state for an unsent or partially-sent message
A "minimal perfect hash" for Strings.
Retrieve / Store the local DHT in a file
Output rate data.
Write out keys to disk when we get them and periodically read ones we don't know
about into memory, with newly read routers are also added to the routing table.
ConcurrentHashMap with backing in the router.config file.
Manage the on-disk cache.
Store and retrieve news entries from disk.
Update the router.info file whenever its, er, updated
Store and retrieve analysis files from disk.
This class is used solely by PeerCoordinator.
Deprecated.
use implementations of
IPlottable
insteadStart/stop/delete plugins that are already installed
Get properties of installed plugins
Get or change settings in plugins.config
Stop all plugins that are installed and running
Check for an updated version of a plugin.
Check for or download an updated version of a plugin.
Check for an updated version of a plugin.
A total score and a List of reason Strings
For marking end-of-queues in a standard manner.
Simple implementation of the Poly1305 message authenticator.
Data about a tunnel we created
Get a relative working directory for i2p based upon properties by parent process.
Map services to internal or external application ports
for this context.
Utility class for retrieving JSON-RPC 2.0 positional parameters (packed into
a JSON Array).
For PriBlockingQueue
Priority Blocking Queue using methods in the entries,
as defined in PQEntry, to store priority and sequence number,
ensuring FIFO order within a priority.
A session that does nothing, but implements interfaces for raw, datagram, and streaming
for convenience.
Defines the PrivateKey as defined by the I2P data structure spec.
This helper class reads and writes files in the
same "eepPriv.dat" format used by the client code.
Methods to update profiles.
Keep the peer profiles organized according to the tiered model.
Replaces integer subTierMode argument, for clarity
Helper class to refactor the HTML rendering from out of the ProfileOrganizer
Write profiles to disk at shutdown,
read at startup.
Class aggregating operations that can be performed for
sending/receiving/reading Protocol messages
A PTR record is handled like a CNAME.
Defines the PublicKey as defined by the I2P data structure spec.
Public suffix is a set of DNS names or wildcards concatenated with dots.
Parses the list from publicsuffix.org
and configures a PublicSuffixFilter.
Utility class that can test if DNS names match the content of the Public Suffix List.
Publish the local router's RouterInfo periodically.
This is used for all gateways with more than zero hops.
This object renders a QR Code as a BitMatrix 2D array of greyscale values.
This servlet generates QR code images.
A DNS question (request).
Zero-copy in-JVM.
Get messages off an In-JVM queue, zero-copy.
ref: https://en.wikipedia.org/wiki/Quoted-printable
Draw an ASCII-Art representing the fingerprint so human brain can
profit from its built-in pattern recognition ability.
This servlet generates random art (visual identifier) images.
Removes a random element, but only if the bucket hasn't changed in 5 minutes.
This is some Java code I wrote for a school project to save some time when iterating in
random order over a part of list (until some condition becomes true):
Here is a sample on how to use the code:
Singleton for whatever PRNG i2p uses.
Removes a random element.
Simple object with outbound tag, key, and nonce,
and an optional next keys.
Ratchet payload generation and parsing
Base class for blocks to be transmitted.
For all callbacks, recommend throwing exceptions only from the handshake.
8 bytes of random data.
A tagset class for one direction, either inbound or outbound.
Simple rate calculator for periodically sampled data points - determining an
average value over a period, the number of events in that period, the maximum number
of events (using the interval between events), and lifetime data.
Storage space for computations of various averages.
coordinate a moving rate over various periods
Receive the state of the rate when its coallesced
Input only for constant data, initialized from a byte array.
Simply read the router config periodically,
so that the user may make config changes externally.
Count the bytes that have been read or skipped
Instances of this class provide a reader for the MaxMind DB format.
Pool of running threads which will process any read bytes on any of the
NTCPConnections, including the decryption of the data read, connection
handshaking, parsing bytes into I2NP messages, etc.
The file mode to use when opening a MaxMind DB.
The general exception class throw when something goes wrong during decoding of a barcode.
Modified from I2PTunnelHTTPServer
Handles UTF-8.
This used be called from StartAcceptingClientsJob but is now disabled.
Defines the message a client sends to a router when asking the
router to start sending a message to it.
Defines the message a client sends to a router when asking the
router to start sending a message to it.
Defines the message a client sends to a router when
updating the config on an existing session.
A generic DNS record.
The symbolic class of a DNS record (usually
Record.CLASS.IN
for Internet).The resource record type.
Definition of a recorder.
Signing and verification for REdDSA using SHA-512 and the Ed25519 curve.
Default keysize is 256 (Ed25519)
Implements Reed-Solomon encoding, as the name implies.
Go through all the routers once, after startup, and refetch their router infos.
Removes nothing and always rejects the add.
Unique ID for a peer - its IP + port, all bundled into a tidy obj.
Like Collections.singleton() but item is removable,
clear() is supported, and the iterator supports remove().
ECIES will call this back if an ack was requested and received.
Defines an executable task that can be fired off in reply to a message
Async job to send an abuse message to the client
Defines the message a client sends to a router when asking the
router what its address visibility is
Periodically publish our RouterInfo to the netdb
Run periodically for each locally created leaseSet to cause it to be republished
if the client is still connected.
Holds all information needed for a partial piece request.
Interface for handling JSON-RPC 2.0 requests.
Async job to walk the client through generating a lease set.
Defines the message a router sends to a client to request that
a leaseset be created and signed.
Handle I2CP RequestLeaseSetMessage from the router by granting all leases,
using the specified expiration time for each lease.
Like ParticipatingThrottler, but checked much earlier,
cleaned more frequently, and with more than double the min and max limits.
Defines the message a router sends to a client to request that
a leaseset be created and signed.
Handle I2CP RequestVariableLeaseSetMessage from the router by granting all leases,
retaining the individual expiration time for each lease.
Refactored in 0.9.33 to use Servlet 3.0 API and remove dependency
on old Jetty 5 MultiPartRequest code.
Copy a random selection of 'count' router infos from configDir/netDb
to 'toDir'.
Moved from RouterConsoleRunner.java
Reseeding is not strictly a router function, it used to be
in the routerconsole app, but this made it impossible to
bootstrap an embedded router lacking a routerconsole,
in iMule or android for example, without additional modifications.
Moved from ReseedHandler in routerconsole.
Handler to create a i2preseed.zip file
Handler to deal with reseed requests.
A reserved LDH label (R-LDH label), which have the property that they contain "--" in the third and fourth characters.
GZIP implementation per
RFC 1952, reusing
java's standard CRC32 and Inflater and InflaterInputStream implementations.
GZIP implementation per
RFC 1952, reusing
java's standard CRC32 and Deflater implementations.
Per-destination timer
Provide a cache of reusable GZIP unzipper streams.
Provide a cache of reusable GZIP streams, each handling up to 40 KB output without
expansion.
Adapted from net.i2p.router.util.RFC822Date.
Moved from NewsFetcher
Class to represent archive values for a single datasource.
Class to represent archive values for a single datasource.
Class to represent archive values for a single datasource.
Main driver for the router.
Defines a method of communicating with a router
For efficiency, the options methods and structures here are unsynchronized.
If a class started via clients.config implements this interface,
it will be used to manage the client, instead of starting with main()
Clients implementing this interface MUST provide the following constructor:
public MyClientApp(RouterContext context, ClientAppManager listener, String[] args) {...}
All parameters are non-null.
Notify the router of events, and provide methods for
client apps to find each other.
Alternate location for determining the time which takes into account an offset.
Start the router console.
Build off the core I2P context to provide a root for a router instance to
coordinate its resources.
Deprecated.
unused
Minor extension to allow message history integration
Defines the unique identifier of a router, including any certificate or
public key.
Defines the data that a router either publishes to the global routing table or
provides to trusted peers.
Component to manage the munging of hashes into routing keys - given a hash,
perform some consistent transformation against it and return the result.
This is the class called by the runplain.sh script on linux
and the i2p.exe launcher on Windows.
Handle communications with the router instance.
Manage both plaintext and salted/hashed password storage in
router.config.
Same format as super, simply adds a method to
treat it as a RouterIdentity instead of a Destination.
An I2PException thrown from I2PServerSocket.accept()
when the router is restarting.
Gatekeeper for deciding whether to throttle the further processing
of messages through the router.
Simple throttle that basically stops accepting messages or nontrivial
requests if the jobQueue lag is too large.
Periodically query a series of NTP servers and update any associated
listeners.
Expose a version string
Periodically check to make sure things haven't gone totally haywire (and if
they have, restart the JVM)
Component to manage the munging of hashes into routing keys - given a hash,
perform some consistent transformation against it and return the result.
An internal usage class.
Instances of this class model
Round Robin Database
(RRD) files.
Base implementation class for all backend classes.
Description of a
RrdBackendFactory
Wrap a exception generated by the backend store
Base (abstract) backend factory class which holds references to all concrete
backend factories and defines abstract methods which must be implemented in
all concrete factory implementations.
Abstract byte array based backend.
Main class used to create and manipulate round robin databases (RRDs).
Builder for
RrdDb
instances.This class should be used to synchronize access to RRD files
in a multithreaded environment.
Class to represent definition of new Round Robin Database (RRD).
Class used to create an arbitrary number of
RrdDef
(RRD definition) objects
from a single XML template.A general purpose RRD4J exception.
This class is used read information from an RRD file.
An abstract backend which is used to store RRD data to ordinary files on the disk.
An abstract backend factory which is used to store RRD data to ordinary files on the disk.
Class which actually creates Rrd4j graphs (does the hard work).
Class to represent various constants used for graphing.
Font constructor, to use embedded fonts.
Allowed font tag names which can be used in
RrdGraphDef.setFont(org.rrd4j.graph.RrdGraphConstants.FontTag, java.awt.Font)
methodClass which should be used to define new Rrd4j graph.
Implementations of this class can be used to generate image than can be
layered on graph.
Class to represent successfully created Rrd4j graph.
Backend to be used to store all RRD bytes in memory.
Factory class which creates actual
RrdMemoryBackend
objects.Backend which is used to store RRD data to ordinary disk files
using java.nio.* package.
Factory class which creates actual
RrdNioBackend
objects.Backend which is used to store RRD data to ordinary files on the disk.
Factory class which creates actual
RrdRandomAccessFileBackend
objects.Backend which is used to store RRD data to ordinary files on the disk, using locking.
Factory class which creates actual
RrdSafeFileBackend
objects.Thread pool used by
RrdNioBackend
instances to periodically sync the mapped file to disk.Daemon thread factory used by the monitor executors.
Class used to perform various complex operations on RRD files.
RRSIG record payload.
A resource record pointing to a target.
Constants for RSA
A SigningPrivateKey that retains the Chinese Remainder Theorem
parameters, so it can be converted back to a Java CRT key.
SAM bridge implementation.
Basic noop client event listener
Interface for sending raw data to a SAM client
SAM DATAGRAM session class.
Simple helper implementation of a the SAMClientEventListener
Exception thrown by SAM methods
Base class for SAM protocol handlers.
SAM handler factory class.
Exception thrown by SAM methods when an application tries to create outgoing
connections through a receive-only SAM session.
Base interface for SAMMessageSession, which is the base for
v1/v3 datagram and raw sessions.
Base abstract class for SAM message-based sessions.
Class to represent data source values for the given timestamp.
Interface for sending raw data to a SAM client
SAM RAW session class.
Read from a socket, producing events for any SAM message read
Async event notification interface for SAM clients
This is the "default" implementation of the SAMSecureSession @interface
that behaves exactly like SAM without interactive authentication.
SAMSecureSessionInterface is used for implementing interactive authentication
to SAM applications.
Interface for sending streaming data to a SAM client
Swiss army knife tester.
SAM STREAM session class.
Lets us push data through the stream without blocking, (even after exceeding
the I2PSocket's buffer)
Swiss army knife tester.
Miscellaneous utility methods used by SAM protocol handlers.
Class able to handle a SAM version 1 client connections.
Class able to handle a SAM version 2 client connection.
SAMv2 STREAM session class.
This is the thread listening on 127.0.0.1:7655 or as specified by
sam.udp.host and sam.udp.port properties.
Class able to handle a SAM version 3 client connection.
SAMv3 STREAM session class.
Examine a connection's state and pick the right scheduler for it.
Scheduler used for after both sides have had their close packets
ACKed, but the final timeout hasn't passed.
Scheduler used for after both SYNs have been ACKed and both sides
have closed the stream, but either we haven't ACKed their close or
they haven't ACKed ours.
Scheduler used for after our SYN has been sent and ACKed but one
(or more) sides haven't closed the stream yet.
Scheduler used once we've sent our SYN but it hasn't been ACKed yet.
Scheduler used for after the final timeout has passed or the
connection was reset.
Scheduler used after we've locally done a hard disconnect,
but the final timeout hasn't passed.
Base scheduler
Scheduler used for locally created connections where we have not yet
sent the initial SYN packet.
Scheduler used after receiving an inbound connection but before
we have sent our own SYN.
A least recently used cache with a max size, for SimpleDataStructures.
Helper for searches.
Search for a particular key iteratively until we either find a value or we
run out of peers
Note that this is rarely if ever used directly, and is primary used by the ExploreJob extension.
Check to see the message is a reply from the peer regarding the current
search
Data related to a particular search
Called after a match to a db search is found
Used only by SearchJob which is only used by ExploreJob
Same as File but sets the file mode after mkdir() so it can
be read and written by the owner only (i.e.
Same as SecureDirectory but sets the file mode after createNewFile()
and createTempFile() also.
Same as FileOutputStream but sets the file mode so it can only
be read and written by the owner only (i.e.
Manage the password storing for I2PControl.
Visit kbuckets, gathering matches
Generate keys and a selfsigned certificate, suitable for
storing in a Keystore with KeyStoreUtil.storePrivateKey().
Send a message directly to another router, i.e.
Same as SendMessageMessage, but with an expiration to be passed to the router
As of 0.8.4, retrofitted to use DateAndFlags.
Defines the message a client sends to a router to ask it to deliver
a new message
Advanced options attached to a single outgoing I2CP message.
Overrides i2cp.gzip session option and size threshold
for this message only.
Reliability bits 9-10
Asynchronously notify the client of the status
of a sent message.
Define the manageable service interface for the subsystems in the I2P router
A wrapper for addressbook to allow it to be started as a web application.
Simple utilities for servlets.
A V3 session.
Defines the information a client must provide to create a session
Defines the token passed between the router and client to associate messages
with a particular session.
Reduce tunnels or shutdown the session on idle if so configured
Defines the SessionKey as defined by the I2P data structure spec.
A session key is 32 bytes of data.
Manage the session keys and session tags used for encryption and decryption.
The values in the SessionsDB
basically a HashMap from String to SessionRecord
Defines the message a router sends to a client indicating the
status of the session.
Handle I2CP SessionStatusMessagese from the router, updating the session as
necssary.
32 bytes, usually of random data.
Something that looks for SessionTags.
Tell the other side what time it is.
Handle I2CP time messages from the router
Decode only.
NOTE: As of 0.8.7, use getInstance() instead of new SHA1(), which will
return the JVM's MessageDigest if it is faster.
Because DSAEngine was abusing Hash for 20-byte hashes
Defines a wrapper for SHA-256 operation.
Passes a command to the OS shell for execution and manages the input and
output.
Alternative to ShellCommand for plugins based on ProcessBuilder, which
manages
a process and keeps track of it's state by maintaining a Process object.
Small records.
Variable size, small records.
Internal use only, to convert an inbound STBM to a reply.
Just for failsafe.
Callback for end of shutdown sequence.
Base signature algorithm type
Defines the context for signing with personalized hashes.
The AlgorithmParameterSpec.
Defines the signature as defined by the I2P data structure spec.
Defines the SigningPrivateKey as defined by the I2P data structure spec.
Defines the SigningPublicKey as defined by the I2P data structure spec.
Defines the properties for various signature types
that I2P supports or may someday support.
Utilities for Signing keys and Signatures
A Westwood+ bandwidth estimator with
a first stage anti-aliasing low pass filter based on RTT,
and the time-varying Westwood filter based on inter-arrival time.
A Westwood+ bandwidth estimator with
a first stage anti-aliasing low pass filter based on RTT,
and the time-varying Westwood filter based on inter-arrival time.
Like ByteCache but works directly with byte arrays, not ByteArrays.
A SimpleDataStructure contains only a single fixed-length byte array.
Deprecated.
in 0.9.20, use SimpleTimer2 instead
Deprecated - used only by SimpleTimer
Simple time label using a format similar to
strftime
.Simple event scheduler - toss an event on the queue and it gets fired at the
appropriate time.
Simple interface for events to be queued up and notified on expiration
Simple event scheduler - toss an event on the queue and it gets fired at the
appropriate time.
Similar to SimpleTimer.TimedEvent but users must extend instead of implement,
and all schedule and cancel methods are through this class rather than SimpleTimer2.
A naming service based on a single file using the "hosts.txt" format.
Ask the peer who sent us the DSRM for the RouterInfos...
Ask a single peer for a single key.
Inbound ES tagset with a single tag and key.
Wrapper around SipHashInline with constant per-JVM keys
SipHash implementation with hand inlining the SIPROUND.
A basic iterator for a skip list.
Main Snark program startup class.
A unique exception class to blame the router that can be caught by SnarkManager
Manage multiple snarks
Deprecated.
unused
SOA (start of authority) record payload.
This handles the starting and stopping of a ServerSocket
from a single static class so it can be called via clients.config.
Implements one or two timers; one for inactivity, that is reset by resetTimer(),
and optionally, a total time since instantiation, that is configured by setTotalTimeoutPeriod().
Wrapper around the Socket obtained from the Outproxy, which is a
wrapper around the Orchid Stream.
A simple SOCKS 4/4a client.
A simple SOCKS 5 client.
Exception thrown by socket methods
Save the SOCKS header from a datagram
Ref: RFC 1928
Abstract base class used by all SOCKS servers.
Factory class for creating SOCKS forwarders through I2P
Implements a UDP port and Socks encapsulation / decapsulation.
A Datagram Tunnel that can have multiple bidirectional ports on the UDP side.
Strip a SOCKS header off a datagram, convert it to a Destination and port
Ref: RFC 1928
Put a SOCKS header on a datagram
Ref: RFC 1928
Sorters
Comparators for various columns
sorts Mail objects by date field
Class to precompute and efficiently sort data
on a torrent file entry.
sorts Mail objects by sender field
sorts Mail objects by message size
sorts Mail objects by subject field
sorts Mail objects by to: fields
The sorting of addresses in RIs
SparseArray
maps integers to Objects and, unlike a normal array of Objects,
its indices can contain gaps.Quantify how fast the peer is - how fast they respond to our requests, how fast
they pass messages on, etc.
Order profiles by their speed (lowest first).
A non-daemon thread to let
the shutdown task get all the way to the end
Standard Noise split().
SRV record payload (service pointer).
This class defines constant value related to SSDP.
All the values defined here are complaint to the UPnP Standard
All the values defined here are complaint to the UPnP Standard
This class identifies a SSDP socket only for notifing packet.
SSL version of ClientListenerRunner
Utilities for I2PTunnel client SSL server sockets.
HTTPS only, no retries, no min and max size options, no timeout option
As of 0.9.45, supports redirect to https (redirect to http will still fail).
Not all may be supported.
An opaque class for the caller to pass to repeated instantiations of SSLEepGet.
Helper class for ssl.jsp
Simple wrapper for a SSLServerSocket.
Simple wrapper for a SSLSocket.
Utilities for SAM SSL server sockets.
Utilities for SAM SSL server sockets.
Container of a long array representing set and unset bits.
Encrypt/decrypt headers
A temporary structure returned from trial decrypt,
with methods to access the fields.
SSU2 Payload generation and parsing
Base class for blocks to be transmitted.
Same format as I2NPBlock
For all callbacks, recommend throwing exceptions only from the handshake.
SSU2 Utils and constants
Calculate the HMAC-MD5-128 of a key+message.
Bridge to I2PServerSocket.
Bridge to I2PSocket.
start I2CP interface
Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN
at a time.
The StartupJob should be run once on router startup to initialize the system
and set things in motion.
A ConnectionFilter that may hold state, can be started and stopped
Dump the peer profile data if given a full B64 peer string or prefix.
Main snark startup class for staticly linking with gcj.
Publishes some statistics about the router in the netDB.
Component to be notified when a particular event occurs
Coordinate the management of various frequencies and rates within I2P components,
both allowing central update and retrieval, as well as distributed creation and
use.
Dump the stats to the web admin interface
A thread started by RouterConsoleRunner that
checks the configuration for stats to be tracked via jrobin,
and adds or deletes RRDs as necessary.
Class that displays status of tests being run.
Maintains pieces on disk.
Callback used when Storage changes.
Stores through this always request a reply.
Check to see the message is a reply from the peer regarding the current
store
Tracks the state of a StoreJob
Compared to a standard I2PTunnel,
this acts like a client on the I2P side (no privkey file)
but a server on the UDP side (sends to a configured host/port)
Compared to a standard I2PTunnel,
this acts like a server on the I2P side (persistent privkey file)
but a client on the UDP side (receives on a configured port)
Maintain a list of countries that may have
tight restrictions on applications like ours.
StringBuilder version of StringWriter
Succesor to the ".sud" format used in TrustedUpdate.
server-mode
A subscription to a remote address book.
An iterator over the subscriptions in a SubscriptionList.
A list of Subscriptions loaded from a file.
An additional session using another session's connection.
Refactored from summarynoframe.jsp to save ~100KB
Simple helper to query the appropriate router for data necessary to render
the summary sections on the router console.
State message to be displayed to the user in the summary bar.
Creates and updates the in-memory or on-disk RRD database,
and provides methods to generate graphs of the data
Generate the RRD graph png images,
including the combined rate graph.
For debugging only.
Symmetric state for helping manage a Noise handshake.
A "synthetic" queue in that it doesn't actually queue anything.
Methods to find out what system we are running on
An opaque handle to a TagSet returned by the SessionKeyManager,
so that OCMOSJ can report that the tags were later acked, or not.
Coordinates what we do 'next'.
Share important TCP Control Block parameters across Connections
to the same remote peer.
Main Applet class that creates UI, defines tests and interprets results from
the tests.
Repeatedly test a single tunnel for its entire lifetime,
or until the pool is shut down or removed from the client manager.
Only works with wrapper on non-windows platforms
Definition of a Threshold.
Same as PTG, but check to see if a message should be dropped before queueing it.
Weighted priority queue implementation for the outbound messages, coupled
with code to fail messages that expire.
Simplified version of DateFormat for just defining how to map a timestamp into a label for
presentation.
Adds setReadTimeout().
Helper for TimeoutPipedInputStream.
Class which parses at-style time specification (described in detail on the rrdfetch man page),
used in all RRDTool commands.
Simple class to represent time obtained by parsing at-style date specification (described
in detail on the rrdfetch man page.
Dummy.
Interface to receive update notifications for when we query the time
Only used by Clock.
Used for Both outgoing and incoming tokens
Used to index incoming Tokens
We attempted to have more open streams than we are willing to put up with
All the torrents
A structure for known trackers
Informs metainfo tracker of events and gets new peers for peer
coordinator.
The data structure for the tracker response.
Stores in-memory only.
Implement the session key management, but keep everything in memory (don't write
to disk).
Translate strings efficiently.
Translate.
Translate a svg file on-the-fly.
Defines a way to send a message to another peer and start listening for messages.
Provide a bid for how much it would "cost" to transfer a message of a
particular peer
Defines a way to send a message to another peer and start listening for messages
Keeps track of the enabled transports.
Manages the tray icon life.
Do the simplest thing possible for preprocessing - for each message available,
turn it into the minimum number of fragmented preprocessed blocks, sending
each of those out.
Deprecated.
unused
Plugin keys we know about.
Handles DSA signing and verification of update files.
An object cache which is safe to use by multiple threads without blocking.
Something that creates objects of the type cached by this cache
The basic build message with 8 records.
Base for TBM, TBRM, VTBM, VTBRM
Retrofitted over them.
The basic build reply message with 8 records.
Helper class to generate a valid TunnelController configuration from provided
settings.
Coordinate the runtime operation and configuration of a single I2PTunnel.
Coordinate a set of tunnels within the JVM, loading and storing their config
to disk, and building new ones as requested.
Not really needed for now but in case we want to add some hooks like afterExecute().
Coordinate the info that the tunnel creator keeps track of, including what
peers are in the tunnel and what their configuration is
See PooledTunnelCreatorConfig for the non-abstract class
Defines the message sent between routers as part of the tunnel delivery
The tunnel ID is changed in-place by TunnelParticipant.send(), so
we can't reuse the checksum on output, but we still subclass
FastI2NPMessageImpl so we don't verify the checksum on input...
Handle the actual processing and forwarding of messages through the
various tunnels.
for shouldDropParticipatingMessage()
Serve as the gatekeeper for a tunnel, accepting messages, coallescing and/or
fragmenting them before wrapping them up for tunnel delivery.
Defines the message sent between one tunnel's endpoint and another's gateway.
Run through the tunnel gateways that have had messages added to them and push
those messages through the preprocessing and sending process.
Serve as the gatekeeper for a tunnel with no hops, either inbound or outbound.
Tunnel related history information
Defines the tunnel ID that messages are passed through on a set of routers.
Defines the information associated with a tunnel
Build and maintain tunnels throughout the network.
Participate in a tunnel at a location other than the gateway or outbound
endpoint.
Coordinate the selection of peers to go into a tunnel for one particular
pool.
A group of tunnels for the router or a particular client, in a single direction.
Manage all the exploratory and client tunnel pools.
Wrap up the settings for a pool of tunnels.
For /tunnels.jsp, used by TunnelHelper.
A TXT record.
basic helper to parse out peer info from a udp address
Coordinate the low-level datagram socket, creating and managing the UDPSender and
UDPReceiver.
Basic delivery unit containing the datagram.
To read a packet, initialize this reader with the data and fetch out
the appropriate fields.
Lowest level component to pull raw UDP datagrams off the wire as fast
as possible, controlled by both the bandwidth limiter and the router's
throttle.
Lowest level packet sender, pushes anything on its queue ASAP.
Comparators for various columns
One of these for all trackers and info hashes.
The SSU transport
A queue of messages, where each has an ID number.
A DNS label which begins with an underscore ('_').
This class is used to read a unival from a file
unival is a rrdtool type, defined in rrd_format.h
This is similar to DataMessage or GarlicMessage but with a variable message type.
Efficient implementation of a SortedSet stored in a fixed-size array.
Does a simple EepHead to get the last-modified header.
Handles the request to update the router by firing off an
EepGet
call to download the latest unsigned zip file
and displaying the status to anyone who asks.Eepget the .zip file to the temp dir, then notify.r
Moved from UnsignedUpdateHandler and turned into an UpdateTask.
Signature verification failed because the
sig type is unknown or unavailable.
Handles the request to update the router by firing one or more
EepGet
calls to download the latest signed update file
and displaying the status to anyone who asks.Handles the request to update the router by firing one or more
EepGet
calls to download the latest signed update file
and displaying the status to anyone who asks.Handles the request to update the router by firing up a magnet.
The central resource coordinating updates.
Transport mechanism for getting something.
An external class to handle complex processing of update files,
where necessary instead of simply copying i2pupdate.zip to the config dir.
Controls one or more types of updates.
Update the routing Key modifier every day at midnight (plus on startup).
The downloader for router signed updates,
and the base class for all the other Checkers and Runners.
The downloader for router signed updates.
A running check or download.
What to update
This (and all in org/freenet, org/cybergarage, org/xmlpull)
grabbed from freenet SVN, mid-February 2009 by zzz.
Extended to store the requested IP to be forwarded.
Bridge from the I2P RouterAddress data structure to
the freenet data structures
For Android MulticastLock.
URI Holder.
A quick and simple multi-platform URL launcher.
An unbuffered version of InputStreamReader.
Added by I2P
For NetDbRenderer and Sybil
http://forums.sun.com/thread.jspa?threadID=597652
Class defines various utility functions used in Rrd4j.
Various DOM utility functions.
Basic utilities for EdDSA.
An abstract class to help extract single value from a set of value (VDEF in rrdtool)
It can be used to add new fancy statistical calculation with rrd values
Calculate the average of the data points.
The sort used by rrdtool for percent, where NaN < -INF < finite values < INF
Find the first valid data point and it's timestamp
Find the first last valid point and it's timestamp
Calculate the correlation coefficient of the least squares line.
Calculate the y-intercept of the least squares line.
Calculate the slop of the least squares line.
The biggest of the data points and it's time stamp (the first one) is stored.
The smallest of the data points and it's time stamp (the first one) is stored.
Store all the informations about a datasource point, for predictive and consistent sorting
Find the point at the n-th percentile.
Calculate the standard deviation for the data point.
Calculate the sum of the data points.
This class store both the value and the time stamp
It will be used by graph rendering legend
Variable number of records.
Transmitted from the new outbound endpoint to the creator through a
reply tunnel.
Extend Destination with methods to verify its Certificate.
See ISO 18004:2006 Annex D
Encapsulates the parameters for one error-correction block in one symbol version.
Encapsulates a set of error-correction blocks in one symbol version.
Compares versions.
Moved out of CPUID.java
Moved out of CPUID.java
Hacked up in-VM comm system for talking between contexts.
Add to the webapp classpath as specified in webapps.config.
Work around the
"No org.apache.tomcat.InstanceManager set in ServletContext" problem
for eepsites with webapps.
Add, start or stop a webapp.
BEP 19.
The new user wizard.
The new user wizard.
Get a working directory for i2p.
Listen for events.
The base class for all objects which encode/generate a barcode image.
Pool of running threads which will transform the next I2NP message into
something ready to be transferred over an NTCP connection, including the
encryption of the data read.
A base class which covers the range of exceptions which may occur when encoding a barcode using
the Writer framework.
Treat a writer as an output stream.
DH wrapper around Noise's Curve25519 with I2P types.
Try to keep DH pairs at the ready.
Adds a header, X-I2P-Location, to requests when they do **not** come in on an I2P hostname.
Override so that XHTML is parsed correctly.
Class used as a base class for various XML template related classes.
Extremely simple utility class used to create XML documents.
A label that begins with "xn--" and follows the LDH rule.
Help sort Hashes in relation to a base key using the XOR metric
Precalculate the Y and K for ElGamal encryption operations.
This class is a scanner generated by
JFlex 1.4.3
on 8/30/16 5:50 PM from the specification file
/home/davinloegering/cliftonlabs/workspace/json-simple/src/main/lex/jsonstrict.lex
Represents structural entities in JSON.
Represents the different kinds of tokens.
Deprecated.
scheduled for removal late 2017, not for external use
Country to continent mapping for NTP.