2024-02-19 16:13:39 +00:00
|
|
|
import socket
|
2024-02-20 20:12:22 +00:00
|
|
|
from requests import get
|
2024-02-19 16:13:39 +00:00
|
|
|
import os
|
2024-02-20 20:12:22 +00:00
|
|
|
from random import randint
|
2024-02-19 16:13:39 +00:00
|
|
|
|
|
|
|
# Здесь идёт обработка всех запросов через сеть
|
|
|
|
|
|
|
|
# TODO:
|
|
|
|
# 1. [+] Пинг
|
2024-02-19 19:54:43 +00:00
|
|
|
# 2. [+] Проверка существования сайта
|
2024-02-19 16:13:39 +00:00
|
|
|
# 3. Передача сайта
|
|
|
|
# 4. Приём рассылки сайтов
|
|
|
|
|
2024-02-20 20:12:22 +00:00
|
|
|
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):
|
2024-02-19 19:54:43 +00:00
|
|
|
host = "127.0.0.1"
|
2024-02-20 20:12:22 +00:00
|
|
|
port = 8001
|
2024-02-19 19:54:43 +00:00
|
|
|
|
|
|
|
s = socket.socket()
|
|
|
|
s.bind((host, port))
|
|
|
|
|
|
|
|
while True:
|
|
|
|
s.listen(2)
|
|
|
|
conn, address = s.accept()
|
|
|
|
|
|
|
|
print("Connection from: " + str(address))
|
|
|
|
|
|
|
|
while True:
|
|
|
|
try:
|
|
|
|
op = conn.recv(1024).decode()
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
if not op:
|
|
|
|
break
|
|
|
|
|
|
|
|
if op == "ping":
|
2024-02-20 19:13:39 +00:00
|
|
|
conn.send("pong".encode())
|
|
|
|
elif op[:3] == "is_":
|
|
|
|
check = op[3:]
|
|
|
|
if os.path.exists(f'cached/{check}'):
|
2024-02-20 20:12:22 +00:00
|
|
|
conn.send(str(http_port).encode())
|
2024-02-20 19:13:39 +00:00
|
|
|
else:
|
|
|
|
conn.send("not exist".encode())
|
2024-02-19 19:54:43 +00:00
|
|
|
conn.close()
|
|
|
|
|
2024-02-19 16:13:39 +00:00
|
|
|
# op = operation
|
2024-02-19 19:54:43 +00:00
|
|
|
def client(port, op = "ping"):
|
|
|
|
host = 'jetwork.404.mn'
|
|
|
|
|
2024-02-20 20:12:22 +00:00
|
|
|
#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()
|
|
|
|
okay = True
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
print(data)
|
2024-02-19 19:54:43 +00:00
|
|
|
|
2024-02-20 20:12:22 +00:00
|
|
|
s.close()
|
|
|
|
return data
|