add a hole punch test server
This commit is contained in:
16
extras/hole-punch-test-server.py
Normal file
16
extras/hole-punch-test-server.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import socket
|
||||||
|
|
||||||
|
SERVER_PORT = 41234
|
||||||
|
SERVER_SEND_PORT = 41235
|
||||||
|
|
||||||
|
sock_recv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
sock_recv.bind(("0.0.0.0", SERVER_PORT))
|
||||||
|
sock_send = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
sock_send.bind(("0.0.0.0", SERVER_SEND_PORT))
|
||||||
|
|
||||||
|
print("Running...")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
data, addr = sock_recv.recvfrom(1024)
|
||||||
|
print(f"Recieved test from addr {addr}")
|
||||||
|
sock_send.sendto(data, addr)
|
||||||
25
main.py
25
main.py
@@ -15,6 +15,8 @@ import ipaddress
|
|||||||
import pyperclip
|
import pyperclip
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
HOLE_PUNCH_TEST = ("0.0.0.0", 41234)
|
||||||
|
|
||||||
|
|
||||||
class SetupApp(App):
|
class SetupApp(App):
|
||||||
DEFAULT_CSS = """
|
DEFAULT_CSS = """
|
||||||
@@ -446,12 +448,35 @@ class SettingsScreen(Screen):
|
|||||||
id="instructions",
|
id="instructions",
|
||||||
)
|
)
|
||||||
yield Button("Add Contact", id="add-contact")
|
yield Button("Add Contact", id="add-contact")
|
||||||
|
with TabPane("Extras"):
|
||||||
|
yield Label(
|
||||||
|
"This button will run a test to see if this application will work correctly."
|
||||||
|
)
|
||||||
|
yield Button("Test hole punching", id="test-hole")
|
||||||
|
|
||||||
|
def test_hole_punch(self):
|
||||||
|
test_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
test_sock.bind((my_ip, 0))
|
||||||
|
test_sock.settimeout(5)
|
||||||
|
|
||||||
|
test_sock.sendto(b"TEST", HOLE_PUNCH_TEST)
|
||||||
|
|
||||||
|
try:
|
||||||
|
data, addr = test_sock.recvfrom(1024)
|
||||||
|
except socket.timeout:
|
||||||
|
self.app.call_from_thread(self.notify, "Test failed", severity="error")
|
||||||
|
else:
|
||||||
|
self.app.call_from_thread(self.notify, "Test worked!")
|
||||||
|
test_sock.close()
|
||||||
|
|
||||||
def on_button_pressed(self, event):
|
def on_button_pressed(self, event):
|
||||||
if event.button.id == "close-btn":
|
if event.button.id == "close-btn":
|
||||||
self.dismiss()
|
self.dismiss()
|
||||||
elif event.button.id == "add-contact":
|
elif event.button.id == "add-contact":
|
||||||
self.app.push_screen(ChoiceScreen(), self.on_screen_done)
|
self.app.push_screen(ChoiceScreen(), self.on_screen_done)
|
||||||
|
elif event.button.id == "test-hole":
|
||||||
|
self.notify("Test started....", severity="information")
|
||||||
|
threading.Thread(target=self.test_hole_punch).start()
|
||||||
elif event.button.id == "profile-confirm":
|
elif event.button.id == "profile-confirm":
|
||||||
valid_ip = True
|
valid_ip = True
|
||||||
valid_port = True
|
valid_port = True
|
||||||
|
|||||||
Reference in New Issue
Block a user