Source code for pyptlib.client_config
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Low-level parts of pyptlib that are only useful to clients.
"""
from pyptlib.config import Config
[docs]class ClientConfig(Config):
"""
A client-side pyptlib configuration.
:raises: :class:`pyptlib.config.EnvError` if environment was incomplete or corrupted.
"""
def __init__(self):
Config.__init__(self)
self.transports = self.get('TOR_PT_CLIENT_TRANSPORTS').split(',')
if '*' in self.transports:
self.allTransportsEnabled = True
self.transports.remove('*')
[docs] def getClientTransports(self): # XXX why is this client-specific ???
"""
Return a list of strings representing the client transports reported by Tor.
If present, the wildcard transport, '*', is stripped from this list and used to set allTransportsEnabled to True.
:returns: list of transports
"""
return self.transports
[docs] def writeMethod(self, name, socksVersion, addrport, args=None, optArgs=None):
"""
Write a message to stdout announcing that a transport was
successfully launched.
:param str name: Name of transport.
:param int socksVersion: The SOCKS protocol version.
:param tuple addrport: (addr,port) where this transport is listening for connections.
:param str args: ARGS field for this transport.
:param str optArgs: OPT-ARGS field for this transport.
"""
methodLine = 'CMETHOD %s socks%s %s:%s' % (name, socksVersion,
addrport[0], addrport[1])
if args and len(args) > 0:
methodLine = methodLine + ' ARGS=' + args.join(',')
if optArgs and len(optArgs) > 0:
methodLine = methodLine + ' OPT-ARGS=' + args.join(',')
self.emit(methodLine)
[docs] def writeMethodError(self, name, message):
"""
Write a message to stdout announcing that we failed to launch a transport.
:param str name: Name of transport.
:param str message: Error message.
"""
self.emit('CMETHOD-ERROR %s %s' % (name, message))
[docs] def writeMethodEnd(self):
"""
Write a message to stdout announcing that we finished launching transports..
"""
self.emit('CMETHODS DONE')