class DHTPeerFinder(PeerFinder): # TODO: rename MetaNet to this _default_peers = [ { "host": "violet.shishnet.org", "port": 52525 } ] def __init__(self, core): self.core = core self.sender = Thread(target=self.run, name="DHTPeerFinder[Send]") self.sender.daemon = True def start(self): self.sender.start() def run(self): self._log("Getting external IP info") nat_type, external_ip, external_port = stun.get_ip_info() #nat_type, external_ip, external_port = None, "0.0.0.0", 12345 self._log("Public addr: %s:%s" % (external_ip, external_port)) self._log("Connecting to DHT") self.dht = DHT("0.0.0.0", 52525) self.public_contact = (external_ip, external_port) for peer in self.core.config.get("peers", self._default_peers): self.dht.bootstrap(peer["host"], peer["port"]) def _log(self, msg): log.info("[MetaNet] %s" % msg) def offer(self, chunk): self._log("Offering %s" % chunk.id) if chunk.id not in self.dht: self.dht[chunk.id] = [self.public_contact] else: self.dht[chunk.id] = self.dht[chunk.id] + [self.public_contact] def request(self, chunk): self._log("Requesting %s" % chunk.id)
def run(self): self._log("Getting external IP info") nat_type, external_ip, external_port = stun.get_ip_info() #nat_type, external_ip, external_port = None, "0.0.0.0", 12345 self._log("Public addr: %s:%s" % (external_ip, external_port)) self._log("Connecting to DHT") self.dht = DHT("0.0.0.0", 52525) self.public_contact = (external_ip, external_port) for peer in self.core.config.get("peers", self._default_peers): self.dht.bootstrap(peer["host"], peer["port"])
from pydht import DHT import time dht = DHT('192.168.0.164', 3000, boot_host='192.168.0.6', boot_port=3000) print dht['test']
import sys import os import time #for Kademlia from pydht import DHT from pydht import sign_verify as sv #for cache import anydbm print 'User Server for Kernel Module started' host1, port1 = 'localhost', 3000 host2, port2 = 'localhost', 3001 dht2 = DHT(host2, port2, boot_host=host1, boot_port=port1) server_address = '/tmp/usocket' # Make sure the socket does not already exist try: os.unlink(server_address) except OSError: if os.path.exists(server_address): raise # Create a UDS socket sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) # Bind the socket to the port sock.bind(server_address)
#!/usr/bin/python from pydht import DHT from pydht import sign_verify as sv from pydht.hashing import hash_function import time host1, port1 = 'localhost', 3000 dht1 = DHT(host1, port1) print "Kademlia DHT started" while True: pass
WebSocketServerFactory from pydht import DHT import sys import json import tempfile from twisted.python import log from twisted.internet import reactor NUM_NODES = 2 PORT_START = 4000 HOST = "localhost" print "Creating node, joining network" node = DHT("localhost", PORT_START + 50) node.bootstrap("localhost", PORT_START) print "Done." class MyServerProtocol(WebSocketServerProtocol): def makeUrl(self): return tempfile.NamedTemporaryFile() def onConnect(self, request): print "Client connecting: {}".format(request.peer) def onOpen(self): print "WebSocket connection open." def onMessage(self, payload, isBinary):
#!/usr/bin/python -i from pydht import DHT host,port = '10.251.10.224',7000 strap = 'bl3dr.com' d = DHT(host,port,boot_host=strap,boot_port=port) nodes = d.iterative_find_nodes(2) print nodes server = d['server'] print server import requests r = requests.get(server) print r.json()
def join_network(hostname, port, boot_host, boot_port): n = DHT(hostname, port) n.bootstrap(boot_host, boot_port) return n