2024-06-21 16:56:55 +00:00
|
|
|
from os import system, mkdir, walk
|
2024-02-19 16:13:39 +00:00
|
|
|
from db import *
|
2024-02-23 19:53:17 +00:00
|
|
|
from shutil import copyfile, make_archive, rmtree, copytree
|
2024-02-23 19:27:48 +00:00
|
|
|
from tqdm import tqdm
|
2024-02-25 12:45:06 +00:00
|
|
|
from time import sleep
|
2024-02-19 16:13:39 +00:00
|
|
|
|
2024-02-19 16:43:53 +00:00
|
|
|
from verify import *
|
2024-02-23 19:27:48 +00:00
|
|
|
from network import *
|
2024-06-21 16:56:55 +00:00
|
|
|
from domain_check import domain_list
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
def your_sites():
|
|
|
|
sites = {}; num = 1
|
|
|
|
for i in next(walk('cached/'), (None, None, []))[1]:
|
|
|
|
sites[str(num)] = i
|
|
|
|
print(f'{str(num)}. {i}')
|
|
|
|
num += 1
|
|
|
|
return sites
|
2024-02-24 15:34:05 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('(1) Создать сайт')
|
|
|
|
print('(2) Обновить сайт')
|
|
|
|
print('(3) Сменить тип')
|
|
|
|
print('(4) Авто-раздача сайта')
|
|
|
|
print('Enter для просто публикации.')
|
2024-02-19 16:13:39 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
op = input('>> ')
|
|
|
|
|
|
|
|
if op == '1':
|
2024-02-19 16:13:39 +00:00
|
|
|
from domain_check import *
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print(f'\nДоступные 1 lvl домены: {domain_list()}')
|
|
|
|
domain = input('Домен сайта: ')
|
2024-02-19 16:13:39 +00:00
|
|
|
if not domain_ok(domain):
|
2024-06-21 16:56:55 +00:00
|
|
|
print('Неправильный формат или домен.')
|
2024-02-19 16:13:39 +00:00
|
|
|
exit()
|
2024-06-21 16:56:55 +00:00
|
|
|
print('\n(1) Статичный / (2) Динамический')
|
|
|
|
type = input('Тип: ')
|
2024-02-19 16:13:39 +00:00
|
|
|
|
2024-02-19 16:43:53 +00:00
|
|
|
# Создаём папку и ключи для подписи
|
2024-06-21 16:56:55 +00:00
|
|
|
mkdir(f'mysites/{domain}')
|
|
|
|
key_gen(f'mysites/{domain}')
|
|
|
|
|
|
|
|
if type == '1':
|
|
|
|
conf = {'type': 'static', 'ver': 1}
|
|
|
|
print('\nПРИМЕЧАНИЕ: index.html обязателен.')
|
2024-02-28 16:27:49 +00:00
|
|
|
# Создаём index.html для загрузки сайта
|
2024-06-21 16:56:55 +00:00
|
|
|
with open(f'mysites/{domain}/index.html', 'w') as f:
|
|
|
|
f.write('<h1> Hello jetwork! </h1>')
|
2024-02-28 16:27:49 +00:00
|
|
|
f.close()
|
2024-06-21 16:56:55 +00:00
|
|
|
elif type == '2':
|
|
|
|
port = input('Порт сервера: ')
|
|
|
|
conf = {'type': 'dynamic', 'ver': 1, 'port': int(port)}
|
|
|
|
write(conf, f'mysites/{domain}/config.json')
|
2024-02-23 20:52:15 +00:00
|
|
|
|
2024-02-19 16:43:53 +00:00
|
|
|
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
|
2024-06-21 16:56:55 +00:00
|
|
|
make_archive(f'mysites/{domain}', 'zip', f'mysites/{domain}')
|
|
|
|
sign(f'mysites/{domain}.zip', f'mysites/{domain}.key', f'mysites/{domain}')
|
2024-02-19 16:13:39 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
elif op == '2':
|
|
|
|
print()
|
|
|
|
sites = your_sites()
|
|
|
|
|
|
|
|
domain = sites[input('Домен сайта: ')]
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
conf = read(f'mysites/{domain}/config.json')
|
|
|
|
type = conf['type']
|
|
|
|
if type == 'dynamic':
|
|
|
|
port = input('Порт сервера: ')
|
|
|
|
conf['port'] = port
|
|
|
|
write(conf, f'mysites/{domain}/config.json')
|
2024-02-28 16:27:49 +00:00
|
|
|
|
2024-02-19 16:43:53 +00:00
|
|
|
# Обновляем версию
|
2024-06-21 16:56:55 +00:00
|
|
|
conf = read(f'mysites/{domain}/config.json')
|
|
|
|
conf['ver'] = conf['ver'] + 1
|
|
|
|
write(conf, f'mysites/{domain}/config.json')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
|
|
|
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
|
2024-06-21 16:56:55 +00:00
|
|
|
make_archive(f'mysites/{domain}', 'zip', f'mysites/{domain}')
|
|
|
|
sign(f'mysites/{domain}.zip', f'mysites/{domain}.key', f'mysites/{domain}')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
elif op == '3':
|
2024-02-19 16:43:53 +00:00
|
|
|
from os import rmdir
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print()
|
|
|
|
sites = your_sites()
|
|
|
|
domain = sites[input('Домен сайта: ')]
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('\n(1) Статичный / (2) Динамический')
|
|
|
|
type = input('Тип: ')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
if type == '1':
|
|
|
|
conf = read(f'mysites/{domain}/config.json')
|
|
|
|
conf['type'] = 'static'
|
|
|
|
conf.pop('port')
|
|
|
|
with open(f'mysites/{domain}/index.html', 'w') as f:
|
|
|
|
f.write('<h1> Hello jetwork! </h1>')
|
2024-02-28 16:27:49 +00:00
|
|
|
f.close()
|
2024-06-21 16:56:55 +00:00
|
|
|
elif type == '2':
|
|
|
|
conf = read(f'mysites/{domain}/config.json')
|
|
|
|
port = input('Порт сервера: ')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
clean = input('Удалить все лишние файлы сайта (y/n): ')
|
|
|
|
if clean == 'y':
|
2024-02-19 16:43:53 +00:00
|
|
|
# Удаляем папку, сохраняем конфиг и копируем публичный ключ
|
2024-06-21 16:56:55 +00:00
|
|
|
rmtree(f'mysites/{domain}')
|
2024-02-28 16:45:17 +00:00
|
|
|
sleep(0.1)
|
2024-06-21 16:56:55 +00:00
|
|
|
system(f'mkdir mysites/{domain}')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
conf['type'] = 'dynamic'
|
|
|
|
conf['port'] = int(port)
|
|
|
|
write(conf, f'mysites/{domain}/config.json')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
|
|
|
# Обновляем версию
|
2024-06-21 16:56:55 +00:00
|
|
|
conf = read(f'mysites/{domain}/config.json')
|
|
|
|
conf['ver'] = conf['ver'] + 1
|
|
|
|
write(conf, f'mysites/{domain}/config.json')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
|
|
|
# Архивируем и создаём сигнатуру для подтверждения неизменности архива
|
2024-06-21 16:56:55 +00:00
|
|
|
make_archive(f'mysites/{domain}', 'zip', f'mysites/{domain}')
|
|
|
|
sign(f'mysites/{domain}.zip', f'mysites/{domain}.key', f'mysites/{domain}')
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
elif op == '4':
|
|
|
|
print()
|
|
|
|
sites = your_sites()
|
|
|
|
domain = sites[input('Домен сайта: ')]
|
2024-02-25 12:45:06 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
serv_port = int( read()['our_port'] )
|
|
|
|
http_port = client(serv_port, f'is_{domain}')
|
2024-02-25 12:45:06 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('\nСтарт вечной раздачи...')
|
2024-02-25 12:45:06 +00:00
|
|
|
while True:
|
|
|
|
ports = port_check(serv_port)
|
|
|
|
sleep(1)
|
|
|
|
for port in tqdm(ports):
|
2024-06-21 16:56:55 +00:00
|
|
|
client(port, f'publish_{domain}<>{http_port}')
|
2024-02-25 12:45:06 +00:00
|
|
|
sleep(5)
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
host = 'bore.pub'
|
|
|
|
# Проверяем тип сайта
|
|
|
|
type = read(f'mysites//{domain}/config.json')['type']
|
|
|
|
# Если динамический - вставляем спец страницу
|
|
|
|
if type == 'dynamic':
|
|
|
|
port = read(f'mysites//{domain}/config.json')['port']
|
|
|
|
with open(f'mysites//{domain}/index.html', 'w') as f:
|
|
|
|
f.write(f"<iframe src='http://{host}:{port}' style='position:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden; z-index:999999;'></iframe>")
|
|
|
|
f.close()
|
2024-02-24 15:34:05 +00:00
|
|
|
|
2024-02-23 19:27:48 +00:00
|
|
|
|
|
|
|
# Копируем файлы из mysites в cached
|
2024-02-23 20:52:15 +00:00
|
|
|
try:
|
2024-06-21 16:56:55 +00:00
|
|
|
rmtree(f'cached/{domain}')
|
2024-02-23 20:52:15 +00:00
|
|
|
except:
|
|
|
|
pass
|
2024-06-21 16:56:55 +00:00
|
|
|
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')
|
2024-02-28 16:27:49 +00:00
|
|
|
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
if op != '':
|
|
|
|
print('\nОпубликовать сайт?')
|
|
|
|
pub = input('y/n >> ')
|
2024-02-23 19:27:48 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
if pub == 'n':
|
2024-02-23 19:27:48 +00:00
|
|
|
exit()
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('Введите ваш порт сервера (при запуске main.py)')
|
|
|
|
serv_port = int(input('>> '))
|
|
|
|
http_port = client(serv_port, f'is_{domain}')
|
2024-02-23 19:27:48 +00:00
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('Получаем все порты...')
|
2024-02-23 19:27:48 +00:00
|
|
|
ports = port_check(serv_port)
|
2024-02-19 16:43:53 +00:00
|
|
|
|
2024-02-23 19:53:17 +00:00
|
|
|
print(ports)
|
|
|
|
|
2024-06-21 16:56:55 +00:00
|
|
|
print('Публикуем сайт...')
|
2024-02-23 19:27:48 +00:00
|
|
|
for port in tqdm(ports):
|
2024-06-21 16:56:55 +00:00
|
|
|
client(port, f'publish_{domain}<>{http_port}')
|