diff --git a/main.py b/main.py index 374be9b..35d7108 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,8 @@ from os import system, name from threading import Thread from time import sleep +from network import * + # Здесь общий запуск всех файлов и команд ''' # Проверка обновлений @@ -16,24 +18,34 @@ print("\nУспешно перезагружено!") ''' # Порт для приёма всяких запросов -from random import randint -dest = randint(4000, 4200) -def reverse_proxy(): - global dest - port = 8000 +def reverse_proxy(dest, port = 8000): if name == "posix": system(f"./bore local {port} --to jetwork.404.mn --port {dest}") elif name == "nt": system(f"bore.exe local {port} --to jetwork.404.mn --port {dest}") # Стартуем проброс порта -rp = Thread(target = reverse_proxy) +# http сервер +global http_port +http_port = port_gen() +rp_http = Thread(target = reverse_proxy, args=(http_port,)) +rp_http.start() +print(f"Порт http сервера: {http_port}") +# сервер для пинга +serv_port = port_gen() +rp = Thread(target = reverse_proxy, args=(serv_port, 8001)) rp.start() -print(f"\nВаш порт: {dest}") +print(f"Порт сервера: {serv_port}") -from network import * +mode = 1 -#server(8000) -pport = int(input()) -client(pport, "is_t") +if mode == 0: + serv_http = Thread(target = server_http) + serv_http.start() + os.chdir("../") # возвращаемся в корень + serv = Thread(target = server, args=(http_port,)) + serv.start() +elif mode == 1: + pport = int(input()) + client(pport) diff --git a/network.py b/network.py index 842ae66..48a0d5b 100644 --- a/network.py +++ b/network.py @@ -1,5 +1,7 @@ import socket +from requests import get import os +from random import randint # Здесь идёт обработка всех запросов через сеть @@ -9,8 +11,22 @@ import os # 3. Передача сайта # 4. Приём рассылки сайтов -def server(port = 8000): +def port_gen(): + port = randint(4000, 4200) + if client(port) == None: + return port + + while client(port) != None: + port = randint(4000, 4200) + return port + +def server_http(): + os.chdir("cached") + os.system("python -m http.server") + +def server(http_port): host = "127.0.0.1" + port = 8001 s = socket.socket() s.bind((host, port)) @@ -34,7 +50,7 @@ def server(port = 8000): elif op[:3] == "is_": check = op[3:] if os.path.exists(f'cached/{check}'): - conn.send("exist".encode()) + conn.send(str(http_port).encode()) else: conn.send("not exist".encode()) conn.close() @@ -42,12 +58,27 @@ def server(port = 8000): # op = operation def client(port, op = "ping"): host = 'jetwork.404.mn' - s = socket.socket() - s.connect((host, port)) - s.send(op.encode()) - data = s.recv(1024).decode() - print('Received from server: ' + data) + #if op == "ping": + # r = get(f"http://{host}:{str(port)}/jetwork") + # print(r.headers['Content-Length']) - s.close() - return data + if op == "ping" or op[:3] == "is_": + s = socket.socket() + try: + s.connect((host, port)) + except: + return None + + s.send(op.encode()) + okay = False + while not okay: + try: + data = s.recv(1024).decode() + okay = True + except: + pass + print(data) + + s.close() + return data diff --git a/setup.py b/setup.py index 3c788e8..cbd7987 100644 --- a/setup.py +++ b/setup.py @@ -26,6 +26,11 @@ else: system("mkdir cached") system("mkdir verify") system("mkdir mysites") +# Создаём файл для проверки что это клиент +# (файл существует -> это клиент jetwork) +with open("cached/jetwork"): + f.write("") +f.close() print("Максимальный размер для кэшированных файлов. (в гигабайтах)") print("Укажите 0 для отключения ограничения.")