AnonControlClient

The AnonControlClient class provides a way to interact with the Anon Control Port, allowing you to authenticate, send commands, and manage circuits.

Constructor

constructor(host: string = '127.0.0.1', port: number = 9051) Creates a new instance of the AnonControlClient class.

  • host: string - The host of the Anon Control Port. Default: '127.0.0.1'

  • port: number - The port number of the Anon Control Port. Default: 9051

Methods

authenticate(password: string = 'password'): Promise<void>

Authenticates the client with the Anon Control Port.

  • password: string - The password for authentication. Default: 'password' Returns: A promise that resolves when authentication is successful.

sendCommand(command: string): Promise<string>

Sends a command to the Anon Control Port.

  • command: string - The command to send Returns: A promise that resolves with the response from the Anon Control Port.

circuitStatus(): Promise<CircuitStatus[]>

Retrieves the current circuit status. Returns: A promise that resolves with an array of CircuitStatus objects.

extendCircuit(options: ExtendCircuitOptions = {}): Promise<number>

Extends an existing circuit or creates a new one.

  • options: ExtendCircuitOptions - Options for extending the circuit Returns: A promise that resolves with the circuit ID.

closeCircuit(circuitId: number): Promise<void>

Closes a specified circuit.

  • circuitId: number - The ID of the circuit to close Returns: A promise that resolves when the circuit is closed.

getRelayInfo(fingerprint: string): Promise<RelayInfo>

Retrieves information about a relay.

  • fingerprint: string - The fingerprint of the relay Returns: A promise that resolves with a RelayInfo object.

end(): void

Closes the connection to the Anon Control Port.

Interfaces

CircuitStatus

  • circuitId: number

  • state: string

  • relays: Relay[]

  • buildFlags: string[]

  • purpose: string

  • timeCreated: Date

Relay

  • fingerprint: string

  • nickname: string

ExtendCircuitOptions

  • circuitId?: number

  • serverSpecs?: string[]

  • purpose?: 'general' | 'controller'

RelayInfo

  • fingerprint: string

  • nickname: string

  • ip: string

  • orPort: number

  • flags: string[]

  • bandwidth: number

Usage Example