Пример #1
0
    def __init__(self, ksize=20, alpha=3, id=None, storage=None,
                 talos_vc=None, rebub_delay=3600, tls_port=-1):
        """
        Create a server instance.  This will start listening on the given port.
        Args:
            ksize (int): The k parameter from the paper
            alpha (int): The alpha parameter from the paper
            id: The id for this node on the network.
            storage: An instance that implements :interface:`~kademlia.storage.IStorage`
        """
        self.ksize = ksize
        self.alpha = alpha
        self.log = Logger(system=self)
        self.storage = storage or TalosLevelDBDHTStorage("./leveldb")
        self.node = Node(id or digest(random.getrandbits(255)))

        def start_looping_call(num_seconds):
            self.refreshLoop = LoopingCall(self.refreshTable).start(num_seconds)

        self.delay = rebub_delay
        task.deferLater(reactor, rebub_delay, start_looping_call, rebub_delay)
        self.talos_vc = talos_vc or AsyncPolicyApiClient()
        self.protocol = TalosKademliaProtocol(self.node, self.storage, ksize, talos_vc=self.talos_vc)
        self.httpprotocol_client = None
        self.tls_port = tls_port
Пример #2
0
 def __init__(self, ttl=STORAGE_TTL):
     """
     By default, max age is three years.
     """
     self.data = OrderedDict()
     self.ttl = ttl
     self.log = Logger(system=self)
Пример #3
0
    def __init__(self, ksize=20, alpha=3, priv_key=None, storage=None,
                 talos_vc=None, rebub_delay=3600, c1bits=1, tls_port=-1):
        """
        Create a server instance.  This will start listening on the given port.
        Args:
            ksize (int): The k parameter from the paper
            alpha (int): The alpha parameter from the paper
            id: The id for this node on the network.
            storage: An instance that implements :interface:`~kademlia.storage.IStorage`
        """
        self.ksize = ksize
        self.alpha = alpha
        self.log = Logger(system=self)
        self.storage = storage or TalosLevelDBDHTStorage("./leveldb")
        self.c1bits = c1bits

        if priv_key is None:
            self.priv_key, node_id = generate_keys_with_crypto_puzzle(c1bits)
        else:
            self.priv_key = priv_key
            node_id = pub_to_node_id(self.priv_key.public_key())

        self.node = Node(node_id)

        def start_looping_call(num_seconds):
            self.refreshLoop = LoopingCall(self.refreshTable).start(num_seconds)

        self.delay = rebub_delay
        task.deferLater(reactor, rebub_delay, start_looping_call, rebub_delay)

        self.talos_vc = talos_vc or AsyncPolicyApiClient()
        self.protocol = TalosSKademliaProtocol(self.priv_key, self.node,
                                               self.storage, ksize, talos_vc=self.talos_vc, cbits=c1bits)
        self.httpprotocol_client = None
        self.tls_port = tls_port
Пример #4
0
 def __init__(self, sourceNode, storage, ksize):
     RPCProtocol.__init__(self)
     self.router = RoutingTable(self, ksize, sourceNode)
     self.storage = storage
     self.sourceNode = sourceNode
     self.log = Logger(system=self)
     self.messages = []
Пример #5
0
 def __init__(self,
              waitTimeout=10,
              max_packet_size=MAX_UDP_SIZE_PCK,
              noisy=False):
     self.max_packet_size = max_packet_size
     self.noisy = noisy
     self._waitTimeout = waitTimeout
     self._outstanding = {}
     self.log = Logger(system=self)
Пример #6
0
 def __init__(self,
              sourceNode,
              storage,
              ksize,
              talos_vc=TalosVCRestClient()):
     TalosRPCProtocol.__init__(self)
     self.router = TalosKademliaRoutingTable(self, ksize, sourceNode)
     self.storage = storage
     self.sourceNode = sourceNode
     self.log = Logger(system=self)
     self.talos_vc = talos_vc
     self.http_client = None
Пример #7
0
 def __init__(self,
              storage,
              talos_vc=TalosVCRestClient(),
              max_nonce_cache=1000,
              nonce_ttl=10):
     Resource.__init__(self)
     self.storage = storage
     self.log = Logger(system=self)
     self.talos_vc = talos_vc
     self.nonce_cache = TTLCache(max_nonce_cache, nonce_ttl)
     self.refreshLoop = LoopingCall(self.nonce_cache.expire).start(3600)
     self.sem = Semaphore(1)
Пример #8
0
    def __init__(self, ksize=20, alpha=3, id=None, storage=None):
        """
        Create a server instance.  This will start listening on the given port.

        @param port: UDP port to listen on
        @param k: The k parameter from the paper
        @param alpha: The alpha parameter from the paper
        """
        self.ksize = ksize
        self.alpha = alpha
        self.log = Logger(system=self)
        self.storage = storage or ForgetfulStorage()
        self.node = Node(id or digest(random.getrandbits(255)))
        self.protocol = KademliaProtocol(self.node, self.storage, ksize)
        self.refreshLoop = LoopingCall(self.refreshTable).start(3600)
Пример #9
0
    def __init__(self, ksize=20, alpha=3, id=None, storage=None):
        """
        Create a server instance.  This will start listening on the given port.

        Args:
            ksize (int): The k parameter from the paper
            alpha (int): The alpha parameter from the paper
            id: The id for this node on the network.
            storage: An instance that implements :interface:`~kademlia.storage.IStorage`
        """
        self.ksize = ksize
        self.alpha = alpha
        self.log = Logger(system=self)
        self.storage = storage or ForgetfulStorage()
        self.node = Node(id or digest(random.getrandbits(255)))
        self.protocol = KademliaProtocol(self.node, self.storage, ksize)
        self.refreshLoop = LoopingCall(self.refreshTable).start(3600)
Пример #10
0
 def __init__(self,
              ecdsa_privkey,
              sourceNode,
              storage,
              ksize,
              talos_vc=TalosVCRestClient(),
              cbits=10,
              bench_mode=True):
     TalosWeakSignedRPCProtocol.__init__(self,
                                         ecdsa_privkey,
                                         sourceNode.id,
                                         cbits=cbits)
     self.router = TalosKademliaRoutingTable(self, ksize, sourceNode)
     self.storage = storage
     self.sourceNode = sourceNode
     self.log = Logger(system=self)
     self.talos_vc = talos_vc
     self.http_client = None
     self.bench_mode = bench_mode
Пример #11
0
    def __init__(self, protocol, node, peers, ksize, alpha):
        """
        Create a new C{SpiderCrawl}er.

        Args:
            protocol: A :class:`~kademlia.protocol.KademliaProtocol` instance.
            node: A :class:`~kademlia.node.Node` representing the key we're looking for
            peers: A list of :class:`~kademlia.node.Node` instances that provide the entry point for the network
            ksize: The value for k based on the paper
            alpha: The value for alpha based on the paper
        """
        self.protocol = protocol
        self.ksize = ksize
        self.alpha = alpha
        self.node = node
        self.nearest = NodeHeap(self.node, self.ksize)
        self.lastIDsCrawled = []
        self.log = Logger(system=self)
        self.log.info("creating spider with peers: %s" % peers)
        self.nearest.push(peers)
Пример #12
0
 def __init__(self, dht_server=None):
     self.dht_server = dht_server
     self.log = Logger(system=self)
Пример #13
0
 def __init__(self, storage, rpc_protocol, talos_vc=TalosVCRestClient()):
     Resource.__init__(self)
     self.storage = storage
     self.log = Logger(system=self)
     self.talos_vc = talos_vc
     self.rpc_protocol = rpc_protocol
Пример #14
0
 def __init__(self, dhtstorage):
     Resource.__init__(self)
     self.dhtstorage = dhtstorage
     self.log = Logger(system=self)