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
Exemple #2
0
    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()
Exemple #3
0
        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")
Exemple #4
0
# -*- 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('<< ')
Exemple #7
0
#!/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")