Комбинированная версия работы с сетью, более проще чем чистый socket

main
none 8 months ago
parent f393a647a0
commit dcff67c8f0

@ -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)

@ -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'
#if op == "ping":
# r = get(f"http://{host}:{str(port)}/jetwork")
# print(r.headers['Content-Length'])
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()
print('Received from server: ' + data)
okay = True
except:
pass
print(data)
s.close()
return data

@ -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 для отключения ограничения.")

Loading…
Cancel
Save