def start(self, iface='', network=None, bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] if network is None: network = _conf.get_in_order("dht_network_filter", "ALL") self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("Register service %s %s:%s" % (network, ip, port)) self._ssdps.register_service(network, ip, port) _log.debug("Set client filter %s" % (network)) self._ssdps.set_client_filter(network) start_cb = defer.Deferred() def bootstrap_proxy(addrs): def started(args): _log.debug("DHT Started %s" % (args)) if not self._started: reactor.callLater(.2, start_cb.callback, True) if cb: reactor.callLater(.2, cb, True) self._started = True def failed(args): _log.debug("DHT failed to bootstrap %s" % (args)) #reactor.callLater(.5, bootstrap_proxy, addrs) _log.debug("Trying to bootstrap with %s" % (repr(addrs))) d = self.dht_server.bootstrap(addrs) d.addCallback(started) d.addErrback(failed) def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) return start_cb
def start(self, iface='', network='ALL', bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("%s %s:%s" % (self, ip, port)) self._ssdps.register_service(network, ip, port) start_cb = defer.Deferred() def bootstrap_proxy(addrs): _log.debug("** proxy %s" % repr(addrs)) self.dht_server.bootstrap(addrs) if not self._started: reactor.callLater(.2, start_cb.callback, True) self._started = True def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) if cb: start_cb.addBoth(cb) return start_cb
def start(self, iface='', network=None, bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] if network is None: network = _conf.get_in_order("dht_network_filter", "ALL") self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("Register service %s %s:%s" % (network, ip, port)) self._ssdps.register_service(network, ip, port) _log.debug("Set client filter %s" % (network)) self._ssdps.set_client_filter(network) start_cb = defer.Deferred() def bootstrap_proxy(addrs): def started(args): _log.debug("DHT Started %s" % (args)) if not self._started: reactor.callLater(.2, start_cb.callback, True) if cb: reactor.callLater(.2, cb, True) self._started = True def failed(args): _log.debug("DHT failed to bootstrap %s" % (args)) #reactor.callLater(.5, bootstrap_proxy, addrs) _log.debug("Trying to bootstrap with %s" % (repr(addrs))) d = self.dht_server.bootstrap(addrs) d.addCallback(started) d.addErrback(failed) def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) return start_cb
def start(self, iface='', network='ALL', bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("%s %s:%s" % (self, ip, port)) self._ssdps.register_service(network, ip, port) start_cb = defer.Deferred() def bootstrap_proxy(addrs): _log.debug("** proxy %s" % repr(addrs)) self.dht_server.bootstrap(addrs) if not self._started: reactor.callLater(.2, start_cb.callback, True) self._started = True def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) if cb: start_cb.addBoth(cb) return start_cb
class AutoDHTServer(StorageBase): def __init__(self): super(AutoDHTServer, self).__init__() self.dht_server = None self._ssdps = None self._started = False def start(self, iface='', network=None, bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] if network is None: network = _conf.get_in_order("dht_network_filter", "ALL") self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("Register service %s %s:%s" % (network, ip, port)) self._ssdps.register_service(network, ip, port) _log.debug("Set client filter %s" % (network)) self._ssdps.set_client_filter(network) start_cb = defer.Deferred() def bootstrap_proxy(addrs): def started(args): _log.debug("DHT Started %s" % (args)) if not self._started: reactor.callLater(.2, start_cb.callback, True) if cb: reactor.callLater(.2, cb, True) self._started = True def failed(args): _log.debug("DHT failed to bootstrap %s" % (args)) #reactor.callLater(.5, bootstrap_proxy, addrs) _log.debug("Trying to bootstrap with %s" % (repr(addrs))) d = self.dht_server.bootstrap(addrs) d.addCallback(started) d.addErrback(failed) def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) return start_cb def set(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.set, key=key, value=value, cb=cb) def get(self, key, cb=None): return TwistedWaitObject(self.dht_server.get, key=key, cb=cb) def get_concat(self, key, cb=None): return TwistedWaitObject(self.dht_server.get_concat, key=key, cb=cb) def append(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.append, key=key, value=value, cb=cb) def remove(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.remove, key=key, value=value, cb=cb) def bootstrap(self, addrs, cb=None): return TwistedWaitObject(self.dht_server.bootstrap, addr=addrs, cb=cb) def stop_search(self): return self._ssdps.stop_search() def stop(self, cb=None): d1 = self.dht_server.stop() d2 = self._ssdps.stop() dl = defer.DeferredList((d1, d2)) if cb: dl.addBoth(cb) return dl
class AutoDHTServer(StorageBase): def __init__(self, node_id, control_uri): super(AutoDHTServer, self).__init__() self.dht_server = None self._ssdps = None self._started = False self._node_id = node_id self._control_uri = control_uri def start(self, iface='', network=None, bootstrap=None, cb=None, name=None, nodeid=None): if bootstrap is None: bootstrap = [] if network is None: network = _conf.get_in_order("dht_network_filter", "ALL") self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(self._node_id, self._control_uri, iface) dlist += self._ssdps.start() domain = _conf.get("security", "domain_name") is_ca = False try: if _conf.get("security", "certificate_authority") == "True": is_ca = True except: is_ca = False self._ssdps.update_server_params(CA_SERVICE_UUID, sign=is_ca, name=name) _log.debug("Register service %s %s:%s" % (network, ip, port)) self._ssdps.register_service(network, ip, port) _log.debug("Set client filter %s" % (network)) self._ssdps.set_client_filter(network) start_cb = defer.Deferred() def bootstrap_proxy(addrs): def started(args): _log.debug("DHT Started %s" % (args)) if not self._started: reactor.callLater(.2, start_cb.callback, True) if cb: reactor.callLater(.2, cb, True) self._started = True def failed(args): _log.debug("DHT failed to bootstrap %s" % (args)) #reactor.callLater(.5, bootstrap_proxy, addrs) _log.debug("Trying to bootstrap with %s" % (repr(addrs))) d = self.dht_server.bootstrap(addrs) d.addCallback(started) d.addErrback(failed) def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) return start_cb def set(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.set, key=key, value=value, cb=cb) def get(self, key, cb=None): return TwistedWaitObject(self.dht_server.get, key=key, cb=cb) def get_concat(self, key, cb=None): return TwistedWaitObject(self.dht_server.get_concat, key=key, cb=cb) def append(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.append, key=key, value=value, cb=cb) def remove(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.remove, key=key, value=value, cb=cb) def bootstrap(self, addrs, cb=None): return TwistedWaitObject(self.dht_server.bootstrap, addr=addrs, cb=cb) def stop_search(self): return self._ssdps.stop_search() def stop(self, cb=None): d1 = self.dht_server.stop() d2 = self._ssdps.stop() dl = defer.DeferredList((d1, d2)) if cb: dl.addBoth(cb) return dl
class AutoDHTServer(StorageBase): def __init__(self): super(AutoDHTServer, self).__init__() self.dht_server = None self._ssdps = None self._started = False def start(self, iface='', network='ALL', bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("%s %s:%s" % (self, ip, port)) self._ssdps.register_service(network, ip, port) start_cb = defer.Deferred() def bootstrap_proxy(addrs): _log.debug("** proxy %s" % repr(addrs)) self.dht_server.bootstrap(addrs) if not self._started: reactor.callLater(.2, start_cb.callback, True) self._started = True def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) if cb: start_cb.addBoth(cb) return start_cb def set(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.set, key=key, value=value, cb=cb) def get(self, key, cb=None): return TwistedWaitObject(self.dht_server.get, key=key, cb=cb) def append(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.append, key=key, value=value, cb=cb) def bootstrap(self, addrs, cb=None): return TwistedWaitObject(self.dht_server.bootstrap, addr=addrs, cb=cb) def stop_search(self): return self._ssdps.stop_search() def stop(self, cb=None): d1 = self.dht_server.stop() d2 = self._ssdps.stop() dl = defer.DeferredList((d1, d2)) if cb: dl.addBoth(cb) return dl
class AutoDHTServer(StorageBase): def __init__(self): super(AutoDHTServer, self).__init__() self.dht_server = None self._ssdps = None self._started = False def start(self, iface='', network='ALL', bootstrap=None, cb=None): if bootstrap is None: bootstrap = [] self.dht_server = ServerApp(AppendServer) ip, port = self.dht_server.start(iface=iface) dlist = [] dlist.append(self.dht_server.bootstrap(bootstrap)) self._ssdps = SSDPServiceDiscovery(iface) dlist += self._ssdps.start() _log.debug("%s %s:%s" % (self, ip, port)) self._ssdps.register_service(network, ip, port) start_cb = defer.Deferred() def bootstrap_proxy(addrs): _log.debug("** proxy %s" % repr(addrs)) self.dht_server.bootstrap(addrs) if not self._started: reactor.callLater(.2, start_cb.callback, True) self._started = True def start_msearch(args): _log.debug("** msearch %s args: %s" % (self, repr(args))) reactor.callLater(0, self._ssdps.start_search, bootstrap_proxy, stop=False) # Wait until servers all listen dl = defer.DeferredList(dlist) dl.addBoth(start_msearch) if cb: start_cb.addBoth(cb) return start_cb def set(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.set, key=key, value=value, cb=cb) def get(self, key, cb=None): return TwistedWaitObject(self.dht_server.get, key=key, cb=cb) def append(self, key, value, cb=None): return TwistedWaitObject(self.dht_server.append, key=key, value=value, cb=cb) def bootstrap(self, addrs, cb=None): return TwistedWaitObject(self.dht_server.bootstrap, addr=addrs, cb=cb) def stop_search(self): return self._ssdps.stop_search() def stop(self, cb=None): d1 = self.dht_server.stop() d2 = self._ssdps.stop() dl = defer.DeferredList((d1, d2)) if cb: dl.addBoth(cb) return dl