def do_external_mode(args): """This function starts obfsproxy's external-mode functionality.""" assert(args) assert(args.name) assert(args.name in transports.transports) from twisted.internet import reactor launch_transport.launch_transport_listener(args.name, args.listen_addr, args.mode, args.dest, args.ext_cookie_file) log.info("Launched '%s' listener at '%s:%s' for transport '%s'." % \ (args.mode, log.safe_addr_str(args.listen_addr[0]), args.listen_addr[1], args.name)) reactor.run()
def do_external_mode(args): """This function starts obfsproxy's external-mode functionality.""" assert(args) assert(args.name) assert(args.name in transports.transports) from twisted.internet import reactor pt_config = transport_config.TransportConfig() pt_config.setStateLocation(args.data_dir) # Run setup() method. run_transport_setup(pt_config) launch_transport.launch_transport_listener(args.name, args.listen_addr, args.mode, args.dest, pt_config, args.ext_cookie_file) log.info("Launched '%s' listener at '%s:%s' for transport '%s'." % \ (args.mode, log.safe_addr_str(args.listen_addr[0]), args.listen_addr[1], args.name)) reactor.run()
def do_external_mode(args): """This function starts obfsproxy's external-mode functionality.""" assert(args) assert(args.name) assert(args.name in transports.transports) from twisted.internet import reactor pt_config = transport_config.TransportConfig() pt_config.setStateLocation(args.data_dir) pt_config.setListenerMode(args.mode) pt_config.setObfsproxyMode("external") if args.proxy: # Set outgoing proxy settings if we have them proxy = parseProxyURI(args.proxy) pt_config.setProxy(proxy) # Run setup() method. run_transport_setup(pt_config, args.name) launch_transport.launch_transport_listener(args.name, args.listen_addr, args.mode, args.dest, pt_config, args.ext_cookie_file) log.info("Launched '%s' listener at '%s:%s' for transport '%s'." % \ (args.mode, log.safe_addr_str(args.listen_addr[0]), args.listen_addr[1], args.name)) reactor.run()
log.debug("pyptlib gave us the following data:\n'%s'", pprint.pformat(ptclient.getDebugData())) for transport in ptclient.getTransports(): # Will hold configuration parameters for the pluggable transport module. pt_config = transport_config.TransportConfig() pt_config.setStateLocation(ptclient.config.getStateLocation()) pt_config.setListenerMode("socks") pt_config.setObfsproxyMode("managed") # Call setup() method for this transport. transport_class = transports.get_transport_class(transport, 'socks') transport_class.setup(pt_config) try: addrport = launch_transport.launch_transport_listener(transport, None, 'socks', None, pt_config) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) ptclient.reportMethodError(transport, "Could not find transport.") continue except error.CannotListenError, e: error_msg = "Could not set up listener (%s:%s) for '%s' (%s)." % \ (e.interface, e.port, transport, e.socketError[1]) log.warning(error_msg) ptclient.reportMethodError(transport, error_msg) continue should_start_event_loop = True log.debug("Successfully launched '%s' at '%s'" % (transport, log.safe_addr_str(str(addrport)))) ptclient.reportMethodSuccess(transport, "socks5", addrport, None, None)
pt_config.setObfsproxyMode("managed") transport_options = "" if server_transport_options and transport in server_transport_options: transport_options = server_transport_options[transport] pt_config.setServerTransportOptions(transport_options) # Call setup() method for this tranpsort. transport_class = transports.get_transport_class(transport, 'server') transport_class.setup(pt_config) try: if ext_orport: addrport = launch_transport.launch_transport_listener(transport, transport_bindaddr, 'ext_server', ext_orport, pt_config, ext_or_cookie_file=authcookie) else: addrport = launch_transport.launch_transport_listener(transport, transport_bindaddr, 'server', orport, pt_config) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) ptserver.reportMethodError(transport, "Could not find transport.") continue except error.CannotListenError, e: error_msg = "Could not set up listener (%s:%s) for '%s' (%s)." % \ (e.interface, e.port, transport, e.socketError[1])
should_start_event_loop = False try: managedInfo = init(transports.transports.keys()) except EnvError, err: log.warning("Server managed-proxy protocol failed (%s)." % err) return log.debug("pyptlib gave us the following data:\n'%s'", pprint.pformat(managedInfo)) for transport, transport_bindaddr in managedInfo['transports'].items(): try: if managedInfo['ext_orport']: addrport = launch_transport.launch_transport_listener(transport, transport_bindaddr, 'ext_server', managedInfo['ext_orport'], managedInfo['auth_cookie_file']) else: addrport = launch_transport.launch_transport_listener(transport, transport_bindaddr, 'server', managedInfo['orport']) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) reportFailure(transport, "Could not find transport.") continue except error.CannotListenError: log.warning("Could not set up listener for '%s'." % transport) reportFailure(transport, "Could not set up listener.") continue
try: managed_info = init(transports.transports.keys()) except EnvError, err: log.warning("Server managed-proxy protocol failed (%s)." % err) return log.debug("pyptlib gave us the following data:\n'%s'", pprint.pformat(managed_info)) for transport, transport_bindaddr in managed_info["transports"].items(): try: if managed_info["ext_orport"]: addrport = launch_transport.launch_transport_listener( transport, transport_bindaddr, "ext_server", managed_info["ext_orport"], managed_info["auth_cookie_file"], ) else: addrport = launch_transport.launch_transport_listener( transport, transport_bindaddr, "server", managed_info["orport"] ) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) reportFailure(transport, "Could not find transport.") continue except error.CannotListenError: log.warning("Could not set up listener for '%s'." % transport) reportFailure(transport, "Could not set up listener.") continue
pt_config.setStateLocation(ptclient.config.getStateLocation()) pt_config.setListenerMode("socks") pt_config.setObfsproxyMode("managed") pt_config.setProxy(proxy) # Call setup() method for this transport. transport_class = transports.get_transport_class(transport, 'socks') try: transport_class.setup(pt_config) except base.TransportSetupFailed, err: log.warning("Transport '%s' failed during setup()." % transport) ptclient.reportMethodError(transport, "setup() failed: %s." % (err)) continue try: addrport = launch_transport.launch_transport_listener(transport, None, 'socks', None, pt_config) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) ptclient.reportMethodError(transport, "Could not find transport.") continue except error.CannotListenError, e: error_msg = "Could not set up listener (%s:%s) for '%s' (%s)." % \ (e.interface, e.port, transport, e.socketError[1]) log.warning(error_msg) ptclient.reportMethodError(transport, error_msg) continue should_start_event_loop = True log.debug("Successfully launched '%s' at '%s'" % (transport, log.safe_addr_str(str(addrport)))) ptclient.reportMethodSuccess(transport, "socks5", addrport, None, None)
def do_managed_client(): """Start the managed-proxy protocol as a client.""" should_start_event_loop = False ptclient = ClientTransportPlugin() try: ptclient.init(transports.transports.keys()) except EnvError as err: log.warning("Client managed-proxy protocol failed (%s)." % err) return log.debug("pyptlib gave us the following data:\n'%s'", pprint.pformat(ptclient.getDebugData())) # Apply the proxy settings if any proxy = ptclient.config.getProxy() if proxy: # Make sure that we have all the necessary dependencies try: network.ensure_outgoing_proxy_dependencies() except network.OutgoingProxyDepsFailure as err: ptclient.reportProxyError(str(err)) return ptclient.reportProxySuccess() for transport in ptclient.getTransports(): # Will hold configuration parameters for the pluggable transport module. pt_config = transport_config.TransportConfig() pt_config.setStateLocation(ptclient.config.getStateLocation()) pt_config.setListenerMode("socks") pt_config.setObfsproxyMode("managed") pt_config.setProxy(proxy) # Call setup() method for this transport. transport_class = transports.get_transport_class(transport, 'socks') try: transport_class.setup(pt_config) except base.TransportSetupFailed as err: log.warning("Transport '%s' failed during setup()." % transport) ptclient.reportMethodError(transport, "setup() failed: %s." % (err)) continue try: addrport = launch_transport.launch_transport_listener(transport, None, 'socks', None, pt_config) except transports.TransportNotFound: log.warning("Could not find transport '%s'" % transport) ptclient.reportMethodError(transport, "Could not find transport.") continue except error.CannotListenError as e: error_msg = "Could not set up listener (%s:%s) for '%s' (%s)." % \ (e.interface, e.port, transport, e.socketError[1]) log.warning(error_msg) ptclient.reportMethodError(transport, error_msg) continue should_start_event_loop = True log.debug("Successfully launched '%s' at '%s'" % (transport, log.safe_addr_str(str(addrport)))) ptclient.reportMethodSuccess(transport, "socks5", addrport, None, None) ptclient.reportMethodsEnd() if should_start_event_loop: log.info("Starting up the event loop.") reactor.run() else: log.info("No transports launched. Nothing to do.")