def run_lan_node(name=None): node_name = name or os.getpid() lan = UDPLink('en0', 2010) node = Node((lan, ), node_name, Program=BlockchainNode) # Filters=(UniqueFilter,), lan.start() node.start() node.program.setup(node_name) subprocess.Popen([NODE_BINARY, name] if name else [NODE_BINARY], stdin=subprocess.PIPE, stdout=sys.stdout, stderr=sys.stderr) return node
def __init__(self, name, port=5000, blockchain=Blockchain()): threading.Thread.__init__(self) self.name = name self.address = ni.ifaddresses('en0')[ni.AF_INET][0]['addr'] self.blockchain = blockchain self.peer_info = {} self.peers = set() self.links = [UDPLink('en0', port=port)] self.network = NetworkComponent(self.links, name, Filters=(DuplicateFilter, )) self.keep_listening = True self.ready = False self.synced = False self.heartbeat_thread = threading.Thread(target=self.send_heartbeat) # Start Network Component [link.start() for link in self.links] self.network.start() self.heartbeat_thread.start() self.start()
while gpsp.running: gpsd.next() if __name__ == "__main__": port = 2001 num_nodes = ask(int, "number of nodes ? [50000]:", 50000) num_links = ask(int, "number of links ? [50]:", 50) real_link = ask(bool, "Link to local networks? [y]/n:", True) print('Reaching Out') links = [] if real_link: links += [ UDPLink('en0', port), UDPLink('en1', port + 1), UDPLink('en2', port + 2) ] links += [VirtualLink("vl%s" % (x + 1)) for x in range(num_links)] print('Establishing connection') nodes = [ Node(None, "n%s" % x, Filters=[UniqueFilter], Program=random.choice((Printer, Switch))) for x in range(num_nodes) ] print("You are now a part of something bigger")
# -*- coding: utf-8 -*- # MIT License: Nick Sweeting import time from mesh.links import UDPLink from mesh.programs import Printer from mesh.filters import UniqueFilter from mesh.node import Node links = [ UDPLink('en0', 2010), UDPLink('en1', 2011), UDPLink('en2', 2012), UDPLink('en3', 2013) ] node = Node(links, 'me', Filters=(UniqueFilter, ), Program=Printer) [link.start() for link in links] node.start() if __name__ == "__main__": print( "Run lan-chat.py on another laptop to talk between the two of you on en0." ) try: while True: print("------------------------------") message = input("[me] OUT:".ljust(49)) node.send(bytes(message, 'UTF-8')) time.sleep(0.3) except (EOFError, KeyboardInterrupt): # CTRL-D, CTRL-C
# hardware_iface = netifaces.gateways()['default'][2][1] port = 2016 # if len(sys.argv) > 1: # hardware_iface = sys.argv[1] num_nodes = ask(int, "How many nodes do you want? [30]:", 30) num_links = ask(int, "How many links do you want? [8]:", 8) irc_link = ask(bool, "Link to internet? y/[n]:", False) real_link = ask(bool, "Link to local networks? [y]/n:", True) randomize = ask(bool, "Randomize connections? [y]/n:", True) print('Creating Links...') links = [] if real_link: links += [ UDPLink('en0', port), UDPLink('en1', port + 1), UDPLink('en2', port + 2) ] if irc_link: links += [IRCLink('irc0')] links += [VirtualLink("vl%s" % (x + 1)) for x in range(num_links)] print('Creating Nodes...') nodes = [ Node(None, "n%s" % x, Filters=[UniqueFilter], Program=random.choice((Printer, Switch))) for x in range(num_nodes) ]
'node_name': 'beta', 'node_location': 'living_room', 'available_input_devices': [], 'available_output_devices': ['speaker'] } bedroom_config = { 'node_name': 'alpha', 'node_location': 'bedroom', 'available_input_devices': ['microphone'], 'available_output_devices': [] } config = bedroom_config links = [UDPLink('en0', 2010)] node = Node(links, config['node_name'], Filters=[], Program=Albus) node.program.apply_config(config) [link.start() for link in links] node.start() print( "Run lan-chat.py on another laptop to talk between the two of you on en0." ) try: while True: message = input('<< ')
#!/usr/bin/env python2.7 # -*- coding: utf-8 -*- # MIT License: Nick Sweeting import time from mesh.links import UDPLink from mesh.programs import Printer from mesh.filters import UniqueFilter from mesh.node import Node links = [ UDPLink('en0', 2010), UDPLink('en1', 2010), UDPLink('eth0', 2010), UDPLink('eth1', 2010) ] # add your network interface here if it isn't one of these (find the name using ifconfig) node = Node(links, 'me', Filters=(UniqueFilter, ), Program=Printer) [link.start() for link in links] node.start() if __name__ == "__main__": print( "Run lan-chat.py on another computer to talk between yourselves on a LAN." ) try: while True: print("------------------------------") message = input("[me] OUT:".ljust(49)) node.send(bytes(message, 'UTF-8')) time.sleep(0.3)
# -*- coding: utf-8 -*- # MIT Liscence : Nick Sweeting from time import sleep from mesh.links import VirtualLink, UDPLink from mesh.programs import Switch, Printer from mesh.filters import DuplicateFilter, StringFilter from mesh.node import Node # ls = (UDPLink('en0', 2014), VirtualLink('vl1'), VirtualLink('vl2'), IRCLink('irc3'), UDPLink('en4', 2016), IRCLink('irc5')) # slow, but impressive to connect over IRC ls = (UDPLink('en0', 2010), VirtualLink('vl1'), VirtualLink('vl2'), UDPLink('irc3', 2013), UDPLink('en4', 2014), UDPLink('irc5', 2013)) # faster setup for quick testing nodes = ( Node([ls[0]], 'start'), Node([ls[0], ls[2]], 'l1', Program=Switch), Node([ls[0], ls[1]], 'r1', Program=Switch), Node([ls[2], ls[3]], 'l2', Filters=(DuplicateFilter,), Program=Switch), # l2 wont forward two of the same packet in a row Node([ls[1], ls[4]], 'r2', Filters=(StringFilter.match(b'red'),), Program=Switch), # r2 wont forward any packet unless it contains the string 'red' Node([ls[4], ls[5]], 'end', Program=Printer), ) [l.start() for l in ls] [n.start() for n in nodes] if __name__ == "__main__": print("Using a mix of real and vitual links to make a little network...\n") print(" /[r1]<--vlan1-->[r2]<----vlan4---\\") print("[start]-en0 [end]") print(" \[l1]<--vlan2-->[l2]<--irc3:irc5-/\n")