def safe_stun(udp_port=None, dht_port=None, ): from twisted.internet.defer import Deferred result = Deferred() try: settings.init() dht_port = dht_port or settings.getDHTPort() udp_port = udp_port or settings.getUDPPort() dht_service.init(dht_port) dht_service.connect() udp.listen(udp_port) def _cb(cod, typ, ip, details): # A('shutdown') result.callback({ 'result': cod, # 'stun-success' or 'stun-failed' 'type': typ, 'ip': ip, 'details': details, }) A('init', (udp_port)) A('start', _cb) except Exception as exc: lg.exc() result.callback(dict(ip='127.0.0.1', errors=[str(exc), ])) return result return result
def doSetUp(self, *args, **kwargs): if _Debug: lg.out(_DebugLevel, 'network_connector.doSetUp') if driver.is_on('service_udp_datagrams'): from lib import udp udp_port = settings.getUDPPort() if not udp.proto(udp_port): try: udp.listen(udp_port) except: lg.exc() if driver.is_on('service_service_entangled_dht'): from dht import dht_service dht_service.reconnect() if driver.is_on('service_ip_port_responder'): from stun import stun_server udp_port = int(settings.getUDPPort()) stun_server.A('start', udp_port) if driver.is_on('service_my_ip_port'): from stun import stun_client if not stun_client.A() or stun_client.A().state in ['STOPPED', ]: stun_client.A().dropMyExternalAddress() stun_client.A('start') if driver.is_on('service_private_messages'): from chat import nickname_holder nickname_holder.A('set') self.automat('network-up')
def main(): from twisted.internet import reactor lg.set_debug_level(24) bpio.init() settings.init() dht_service.init(settings.getDHTPort()) dht_service.connect() udp.listen(settings.getUDPPort()) A('start', settings.getUDPPort()) reactor.run()
def on_resume(self, *args, **kwargs): from logs import lg from lib import udp from main import settings udp_port = settings.getUDPPort() if not udp.proto(udp_port): try: udp.listen(udp_port) except: lg.exc() return True
def start(self): from lib import udp from main import settings from main.config import conf udp_port = settings.getUDPPort() conf().addCallback('services/udp-datagrams/udp-port', self._on_udp_port_modified) if not udp.proto(udp_port): try: udp.listen(udp_port) except: return False return True
def main(): from twisted.internet import reactor lg.set_debug_level(24) bpio.init() settings.init() dht_service.init(settings.getDHTPort()) d = dht_service.connect() udp.listen(settings.getUDPPort()) def _go(live_nodes): A('start', settings.getUDPPort()) d.addCallback(_go) reactor.run()
def doSetUp(self, arg): if _Debug: lg.out(_DebugLevel, 'network_connector.doSetUp') # Second attempt # l = [] # for service_name in driver.affecting('service_network'): # d = driver.start_single(service_name) # l.append(d) # # def _ok(x): # lg.info('network child services is UP') # self.automat('network-up') # return None # # def _fail(err): # lg.err(err) # self.automat('network-up') # return None # # dl = DeferredList(l, fireOnOneErrback=True, consumeErrors=True) # dl.addCallback(_ok) # d.addErrback(_fail) # First Solution if driver.is_on('service_service_entangled_dht'): from dht import dht_service dht_service.reconnect() if driver.is_on('service_ip_port_responder'): from stun import stun_server udp_port = int(settings.getUDPPort()) stun_server.A('start', udp_port) if driver.is_on('service_my_ip_port'): from stun import stun_client stun_client.A().dropMyExternalAddress() stun_client.A('start') if driver.is_on('service_private_messages'): from chat import nickname_holder nickname_holder.A('set') if driver.is_on('service_udp_datagrams'): from lib import udp udp_port = settings.getUDPPort() if not udp.proto(udp_port): try: udp.listen(udp_port) except: lg.exc() self.automat('network-up')
def safe_stun(udp_port=None, dht_port=None, result_defer=None): from twisted.internet.defer import Deferred result = result_defer or Deferred() if driver.is_started('service_entangled_dht'): if dht_service.node()._joinDeferred and not dht_service.node()._joinDeferred.called: dht_service.node()._joinDeferred.addCallback(lambda ok: safe_stun(udp_port=udp_port, dht_port=dht_port, result_defer=result)) dht_service.node()._joinDeferred.addErrback(result.errback) return result if not driver.is_on('service_entangled_dht'): result.errback(Exception('service_entangled_dht() is not started')) return result try: settings.init() dht_port = dht_port or settings.getDHTPort() udp_port = udp_port or settings.getUDPPort() if dht_port: dht_service.init(dht_port) d = dht_service.connect() if udp_port: udp.listen(udp_port) def _cb(cod, typ, ip, details): # A('shutdown') result.callback({ 'result': cod, # 'stun-success' or 'stun-failed' 'type': typ, 'ip': ip, 'details': details, }) def _go(live_nodes): A('init', udp_port) A('start', _cb) d.addCallback(_go) d.addErrback(lambda err: result.callback(dict(ip='127.0.0.1', errors=[str(err), ]))) except Exception as exc: lg.exc() result.callback(dict(ip='127.0.0.1', errors=[str(exc), ])) return result return result
def main(): from twisted.internet import reactor # @UnresolvedImport lg.set_debug_level(24) bpio.init() settings.init() dht_port = settings.getDHTPort() if len(sys.argv) > 1: dht_port = int(sys.argv[1]) udp_port = settings.getUDPPort() if len(sys.argv) > 2: udp_port = int(sys.argv[2]) dht_service.init(dht_port) d = dht_service.connect() udp.listen(udp_port) def _go(live_nodes): A('start', udp_port) d.addCallback(_go) reactor.run() # @UndefinedVariable settings.shutdown()
def main(): from twisted.internet import reactor settings.init() lg.set_debug_level(30) dht_port = settings.getDHTPort() udp_port = settings.getUDPPort() if len(sys.argv) > 1: dht_port = int(sys.argv[1]) if len(sys.argv) > 2: udp_port = int(sys.argv[2]) dht_service.init(dht_port) dht_service.connect() udp.listen(udp_port) def _cb(result, typ, ip, details): print result, typ, ip, details A('shutdown') reactor.stop() A('init', (udp_port)) A('start', _cb) reactor.run()
def main(): from twisted.internet import reactor # @UnresolvedImport settings.init() lg.set_debug_level(30) dht_port = settings.getDHTPort() udp_port = settings.getUDPPort() if len(sys.argv) > 1: dht_port = int(sys.argv[1]) if len(sys.argv) > 2: udp_port = int(sys.argv[2]) dht_service.init(dht_port) dht_service.connect() udp.listen(udp_port) def _cb(result, typ, ip, details): print(result, typ, ip, details) A('shutdown') reactor.stop() # @UndefinedVariable A('init', (udp_port)) A('start', _cb) reactor.run() # @UndefinedVariable
def main(): if len(sys.argv) <= 1: print('usage:') print(' natpunch.py server [min port] [max port]') print( ' natpunch.py listen [local port] [servers list filename] [incoming connections filename]' ) print( ' natpunch.py connect [local port] [remote IP] [servers list file] [min port] [max port]' ) return lg.set_debug_level(24) bpio.init() if sys.argv[1] == 'server': min_port = int(sys.argv[2]) max_port = int(sys.argv[3]) for port_num in range(min_port, max_port + 1): udp.listen(port_num) udp.proto(port_num).add_callback( lambda d, a: datagram_received(d, a, port_num)) elif sys.argv[1] == 'listen': port_num = int(sys.argv[2]) udp.listen(port_num) udp.proto(port_num).add_callback( lambda d, a: datagram_received(d, a, port_num)) servers = [] for line in open(sys.argv[3]).read().split('\n'): addr = line.strip().split(':') addr[1] = int(addr[1]) servers.append(tuple(addr)) listen(port_num, servers, sys.argv[4]) elif sys.argv[1] == 'connect': port_num = int(sys.argv[2]) remote_ip = sys.argv[3] udp.listen(port_num) udp.proto(port_num).add_callback( lambda d, a: datagram_received(d, a, port_num)) servers = [] for line in open(sys.argv[4]).read().split('\n'): addr = line.strip().split(':') addr[1] = int(addr[1]) servers.append(tuple(addr)) min_port = int(sys.argv[5]) max_port = int(sys.argv[6]) connect(port_num, remote_ip, servers, min_port, max_port) reactor.run()
def main(): if len(sys.argv) <= 1: print 'usage:' print ' natpunch.py server [min port] [max port]' print ' natpunch.py listen [local port] [servers list filename] [incoming connections filename]' print ' natpunch.py connect [local port] [remote IP] [servers list file] [min port] [max port]' return lg.set_debug_level(24) bpio.init() if sys.argv[1] == 'server': min_port = int(sys.argv[2]) max_port = int(sys.argv[3]) for port_num in range(min_port, max_port + 1): udp.listen(port_num) udp.proto(port_num).add_callback(lambda d, a: datagram_received(d, a, port_num)) elif sys.argv[1] == 'listen': port_num = int(sys.argv[2]) udp.listen(port_num) udp.proto(port_num).add_callback(lambda d, a: datagram_received(d, a, port_num)) servers = [] for line in open(sys.argv[3]).read().split('\n'): addr = line.strip().split(':') addr[1] = int(addr[1]) servers.append(tuple(addr)) listen(port_num, servers, sys.argv[4]) elif sys.argv[1] == 'connect': port_num = int(sys.argv[2]) remote_ip = sys.argv[3] udp.listen(port_num) udp.proto(port_num).add_callback(lambda d, a: datagram_received(d, a, port_num)) servers = [] for line in open(sys.argv[4]).read().split('\n'): addr = line.strip().split(':') addr[1] = int(addr[1]) servers.append(tuple(addr)) min_port = int(sys.argv[5]) max_port = int(sys.argv[6]) connect(port_num, remote_ip, servers, min_port, max_port) reactor.run()
def udp_dht_stun(udp_port=None, dht_port=None, result_defer=None): if not driver.is_on('service_my_ip_port'): if _Debug: lg.out( _DebugLevel, 'stun_client.udp_dht_stun SKIP because service_my_ip_port() is not started' ) if result_defer: result_defer.errback( Exception('service_my_ip_port() is not started')) return False from dht import dht_service if dht_service.node().connectingTask( ) and not dht_service.node().connectingTask().called: if _Debug: lg.out( _DebugLevel, 'stun_client.udp_dht_stun SKIP and run later because dht_service is still joining the network' ) dht_service.node().connectingTask( ).addCallback(lambda ok: udp_dht_stun( udp_port=udp_port, dht_port=dht_port, result_defer=result_defer)) if result_defer: dht_service.node().connectingTask().addErrback( result_defer.errback) return True dht_port = dht_port or settings.getDHTPort() udp_port = udp_port or settings.getUDPPort() if dht_port: dht_service.init(dht_port) d = dht_service.connect() if udp_port: udp.listen(udp_port) def _cb(cod, typ, ip, details): # A('shutdown') ret = { 'result': cod, # 'stun-success' or 'stun-failed' 'type': typ, 'ip': ip, 'details': details, } if _Debug: lg.out(_DebugLevel, 'stun_client.udp_dht_stun result : %r' % ret) result_defer.callback(ret) return None def _go(live_nodes): if _Debug: lg.out(_DebugLevel, 'stun_client.udp_dht_stun GO with nodes: %r' % live_nodes) A('init', udp_port) A('start', _cb) return live_nodes d.addCallback(_go) if result_defer: d.addErrback(result_defer.errback) # d.addErrback(lambda err: result_defer.callback(dict(ip='127.0.0.1', errors=[str(err), ]))) return True