-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestapp_libpeerunix.py
More file actions
83 lines (63 loc) · 2.36 KB
/
Copy pathtestapp_libpeerunix.py
File metadata and controls
83 lines (63 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from LibPeerUnix import LibPeerUnixConnection
from LibPeerUnix.Models import *
libpeer = LibPeerUnixConnection()
print("Connected to Daemon!")
print("Available discoverers:")
for d in libpeer.available_discoverers():
print("\t%s" % d)
print()
print("Available networks:")
for n in libpeer.available_networks():
if(n.active):
print("\t[ ACTIVE ] %s" % n.name)
else:
print("\t[INACTIVE] %s" % n.name)
print()
transport_names = {}
print("Available transports:")
for t in libpeer.available_transports():
print("\t%s" % t.name)
transport_names[t.protocol] = t.name
print()
discovered_peers = []
def new_peer(args):
peer: Peer = args[0]
# print("--------")
# print("Found peer %s://%s:%s with AD of %i" % (peer.address.protocol.decode("utf-8"), peer.address.address.decode("utf-8"), peer.address.port.decode("utf-8"), peer.administrative_distance))
discovered_peers.append(peer)
# Subscribe to new peer discoveries
libpeer.new_peer.subscribe(new_peer)
def new_message(args):
message: Message = args[0]
print("--------")
print("Got message: %s\nFrom: %s://%s:%s, via transport: %s" % (message.payload.decode("utf-8"), message.address.protocol.decode("utf-8"), message.address.address.decode("utf-8"), message.address.port.decode("utf-8"), transport_names[message.transport]))
# Subscribe to new messages
libpeer.receive.subscribe(new_message)
# Bind to the app namespace
libpeer.bind(b"helloworld")
print("Bound to 'helloworld'")
libpeer.set_discoverable(True)
print("Enabled discovery")
libpeer.add_label(b"yeet" * 8)
print("Added label")
libpeer.remove_label(b"yeet" * 8)
print("Removed label")
libpeer.add_label(b"yeet" * 8)
print("Added label")
libpeer.clear_labels()
print("Cleared labels")
libpeer.add_label(b"yeet" * 8)
print("Added label")
while True:
print()
msg = input("Type your message at any time\n")
print()
peers = libpeer.get_peers()
print("Found %i peers to send to" % len([p for p in peers if p.administrative_distance != 0]))
for peer in peers:
if(peer.administrative_distance != 0):
try:
libpeer.send(Message(peer.address, msg.encode("utf-8"), b"\x00"*16, b"\x06"))
print("Sent to IP %s" % str(peer.address.address))
except Exception as e:
print("Failed to send to %s: %s" % (str(peer.address.address), str(e)))