def launchClient(self, name, managedInfo): """ Launch a client of transport 'name' using the environment information in 'managedInfo'. Return a tuple (<ok>, (<addr>, <port>)), where <ok> is whether the function was successful, and (<addr>, <port> is a tuple representing where we managed to bind. """ clientClass = transports.get_transport_class_from_name_and_mode( name, 'client') if not clientClass: log.error("Could not find transport class for '%s' (%s)." % (name, 'client')) return False, None factory = socks.SOCKSv4Factory(clientClass()) try: addrport = reactor.listenTCP(0, factory, interface='localhost') except error.CannotListenError: log.error("Could not set up a client listener.") return False, None return True, (addrport.getHost().host, addrport.getHost().port)
def launchServer(self, name, bindaddr, managedInfo): """ Launch a client of transport 'name' using the environment information in 'managedInfo'. Return a tuple (<ok>, (<addr>, <port>)), where <ok> is whether the function was successful, and (<addr>, <port> is a tuple representing where we managed to bind. """ serverClass = transports.get_transport_class_from_name_and_mode( name, 'server') if not serverClass: log.error("Could not find transport class for '%s' (%s)." % (name, 'server')) return False, None factory = network.StaticDestinationServerFactory( managedInfo['orport'], 'server', serverClass()) try: addrport = reactor.listenTCP(int(bindaddr[1]), factory) except CannotListenError: log.error("Could not set up a listener for TCP port '%s'." % bindaddr[1]) return False, None return True, (addrport.getHost().host, addrport.getHost().port)
def do_external_mode(args): """This function starts obfsproxy's external-mode functionality.""" assert(args) assert(args.name) assert(args.name in transports.transports) transportClass = transports.get_transport_class_from_name_and_mode(args.name, args.mode) if (transportClass is None): log.error("Transport class was not found for '%s' in mode '%s'" % (args.name, args.mode)) sys.exit(1) # XXX functionify import obfsproxy.network.network as network import obfsproxy.network.socks as socks from twisted.internet import reactor, error, address, tcp if (args.mode == 'client') or (args.mode == 'server'): factory = network.StaticDestinationServerFactory(args.dest, args.mode, transportClass()) elif args.mode == 'socks': factory = socks.SOCKSv4Factory(transportClass()) reactor.listenTCP(int(args.listen_addr[1]), factory) reactor.run()
def launchClient(self, name, managedInfo): """ Launch a client of transport 'name' using the environment information in 'managedInfo'. Return a tuple (<ok>, (<addr>, <port>)), where <ok> is whether the function was successful, and (<addr>, <port> is a tuple representing where we managed to bind. """ clientClass = transports.get_transport_class_from_name_and_mode(name, 'client') if not clientClass: log.error("Could not find transport class for '%s' (%s)." % (name, 'client')) return False, None factory = socks.SOCKSv4Factory(clientClass()) try: addrport = reactor.listenTCP(0, factory, interface='localhost') except error.CannotListenError: log.error("Could not set up a client listener.") return False, None return True, (addrport.getHost().host, addrport.getHost().port)
def launchServer(self, name, bindaddr, managedInfo): """ Launch a client of transport 'name' using the environment information in 'managedInfo'. Return a tuple (<ok>, (<addr>, <port>)), where <ok> is whether the function was successful, and (<addr>, <port> is a tuple representing where we managed to bind. """ serverClass = transports.get_transport_class_from_name_and_mode(name, 'server') if not serverClass: log.error("Could not find transport class for '%s' (%s)." % (name, 'server')) return False, None factory = network.StaticDestinationServerFactory(managedInfo['orport'], 'server', serverClass()) try: addrport = reactor.listenTCP(int(bindaddr[1]), factory) except CannotListenError: log.error("Could not set up a listener for TCP port '%s'." % bindaddr[1]) return False, None return True, (addrport.getHost().host, addrport.getHost().port)