You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
|
|
import sys |
|
import argparse |
|
from datetime import datetime |
|
|
|
from twisted.internet import reactor |
|
from twisted.internet.endpoints import TCP4ServerEndpoint, TCP4ClientEndpoint |
|
from twisted.internet.error import CannotListenError |
|
from twisted.internet.endpoints import connectProtocol |
|
|
|
import network |
|
from network import NCFactory, NCProtocol |
|
|
|
def _print(*args): |
|
# double, make common module |
|
time = datetime.now().time().isoformat()[:8] |
|
print time, |
|
print " ".join(map(str, args)) |
|
|
|
|
|
if __name__ == "__main__": |
|
if len(sys.argv) == 2: |
|
port = int(sys.argv[1]) |
|
else: |
|
port = 5005 |
|
try: |
|
endpoint = TCP4ServerEndpoint(reactor, port, interface="151.217.219.153") |
|
_print(" [ ] LISTEN:", port) |
|
ncfactory = NCFactory() |
|
endpoint.listen(ncfactory) |
|
except CannotListenError: |
|
_print("[!] Address in use") |
|
sys.exit(1) |
|
|
|
|
|
# connect to bootstrap addresses |
|
_print(" [ ] Trying to connect to bootstrap hosts:") |
|
for bootstrap in network.BOOTSTRAP_NODES: |
|
_print(" [*]", bootstrap) |
|
host, port = bootstrap.split(":") |
|
point = TCP4ClientEndpoint(reactor, host, int(port)) |
|
d = connectProtocol(point, NCProtocol(ncfactory, "SENDHELLO", "SPEAKER")) |
|
d.addCallback(network.gotProtocol) |
|
reactor.run()
|
|
|