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.

164 lines
5.1 KiB

8 months ago
from os import system, mkdir
from db import *
8 months ago
from shutil import copyfile, make_archive, rmtree, copytree
from tqdm import tqdm
from time import sleep
from verify import *
from network import *
print("(1) Создать сайт")
print("(2) Обновить сайт")
print("(3) Сменить тип")
print("(4) Авто-раздача сайта")
print("Enter для просто публикации.")
op = input(">> ")
if op == "1":
from domain_check import *
8 months ago
print("\nДомены: .jet, .jw, .404, .dash, .awesome, .mirror")
domain = input("Домен сайта: ")
if not domain_ok(domain):
print("Неправильный формат или домен.")
exit()
print("\n(1) Статичный / (2) Динамичный")
type = input("Тип: ")
# Создаём папку и ключи для подписи
8 months ago
mkdir(f"mysites/{domain}")
key_gen(f"mysites/{domain}")
if type == "1":
conf = {"type": "static", "ver": 1}
print("ПРИМЕЧАНИЕ: index.html обязателен.")
elif type == "2":
print("В разработке...")
exit()
port = input("Порт: ")
conf = {"type": "dynamic", "ver": 1, "port": int(port)}
write(conf, f"mysites/{domain}/config.json")
# Создаём index.html для загрузки сайта
with open(f"mysites/{domain}/index.html", "w") as f:
f.write("<h1> Hello jetwork! </h1>")
f.close()
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
make_archive(f"mysites/{domain}", "zip", f"mysites/{domain}")
sign(f"mysites/{domain}.zip", f"mysites/{domain}.key", f"mysites/{domain}")
elif op == "2":
domain = input("\nДомен сайта: ")
if not os.path.exists(f"mysites/{domain}"):
print("Не существует такого сайта.")
exit()
# Обновляем версию
conf = read(f"mysites/{domain}/config.json")
conf["ver"] = conf["ver"] + 1
write(conf, f"mysites/{domain}/config.json")
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
make_archive(f"mysites/{domain}", "zip", f"mysites/{domain}")
sign(f"mysites/{domain}.zip", f"mysites/{domain}.key", f"mysites/{domain}")
elif op == "3":
from os import rmdir
domain = input("\nДомен сайта: ")
if not os.path.exists(f"mysites/{domain}"):
print("Не существует такого сайта.")
exit()
print("\n(1) Статичный / (2) Динамичный")
type = input("Тип: ")
if type == "1":
conf = read(f"mysites/{domain}/config.json")
conf["type"] = "static"
conf.pop("port")
elif type == "2":
conf = read(f"mysites/{domain}/config.json")
port = input("Порт: ")
clean = input("Удалить все файлы (y/n): ")
if clean == "y":
# Удаляем папку, сохраняем конфиг и копируем публичный ключ
rmtree(f"mysites/{domain}")
system(f"mkdir mysites/{domain}")
copyfile(f"mysites/{domain}.pem", f"mysites/{domain}/{domain}.pem")
conf["type"] = "dynamic"
conf["port"] = int(port)
write(conf, f"mysites/{domain}/config.json")
# Обновляем версию
conf = read(f"mysites/{domain}/config.json")
conf["ver"] = conf["ver"] + 1
write(conf, f"mysites/{domain}/config.json")
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
make_archive(f"mysites/{domain}", "zip", f"mysites/{domain}")
sign(f"mysites/{domain}.zip", f"mysites/{domain}.key", f"mysites/{domain}")
exit()
elif op == "4":
domain = input("\nДомен сайта: ")
if not os.path.exists(f"mysites/{domain}"):
print("Не существует такого сайта.")
exit()
print("\nВведите ваш порт сервера (при запуске main.py)")
serv_port = int(input(">> "))
http_port = client(serv_port, f"is_{domain}")
print("\nСтарт вечной раздачи...")
while True:
ports = port_check(serv_port)
sleep(1)
for port in tqdm(ports):
client(port, f"publish_{domain}<>{http_port}")
sleep(5)
elif op == "":
domain = input("\nДомен сайта: ")
if not os.path.exists(f"mysites/{domain}"):
print("Не существует такого сайта.")
exit()
pub = "y"
# Копируем файлы из mysites в cached
try:
rmtree(f"cached/{domain}")
except:
pass
8 months ago
copytree(f"mysites/{domain}", f"cached/{domain}")
copyfile(f"mysites/{domain}.pem", f"cached/{domain}.pem")
copyfile(f"mysites/{domain}.sig", f"cached/{domain}.sig")
copyfile(f"mysites/{domain}.zip", f"cached/{domain}.zip")
if op != "":
print("Опубликовать сайт?")
pub = input("y/n >> ")
if pub == "n":
exit()
print("Введите ваш порт сервера (при запуске main.py)")
serv_port = int(input(">> "))
http_port = client(serv_port, f"is_{domain}")
print("Получаем все порты...")
ports = port_check(serv_port)
8 months ago
print(ports)
print("Публикуем сайт...")
for port in tqdm(ports):
client(port, f"publish_{domain}<>{http_port}")