diff --git a/domain_check.py b/domain_check.py
index 28503b1..492c4b7 100644
--- a/domain_check.py
+++ b/domain_check.py
@@ -1,15 +1,23 @@
from re import compile, sub
+domains = ['jet', 'mirror', 'org', 'info', 'news', 'me']
def domain_ok(domain):
- domains = ["jet", "jw", "404", "dash", "awesome", "mirror"]
-
- if domain.count(".") == 1:
- if domain.split(".")[1] in domains:
+ global domains
+ if domain.count('.') == 1:
+ if domain.split('.')[1] in domains:
# ../some => some
# Защита от проверки папок выше, чем нужно и др.
- regex = compile('[^a-z.-]')
+ regex = compile('[^a-z0-9.-]')
c_domain = regex.sub('', domain)
if domain == c_domain:
return domain
return False
+
+def domain_list():
+ global domains
+ out = ''
+ for i in domains:
+ out += f'{i}, '
+ out = out[:-2]
+ return out
diff --git a/site_creator.py b/site_creator.py
index b40e037..89af263 100644
--- a/site_creator.py
+++ b/site_creator.py
@@ -1,4 +1,4 @@
-from os import system, mkdir
+from os import system, mkdir, walk
from db import *
from shutil import copyfile, make_archive, rmtree, copytree
from tqdm import tqdm
@@ -6,176 +6,172 @@ from time import sleep
from verify import *
from network import *
+from domain_check import domain_list
-print("(1) Создать сайт")
-print("(2) Обновить сайт")
-print("(3) Сменить тип")
-print("(4) Авто-раздача сайта")
-print("Enter для просто публикации.")
+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
-op = input(">> ")
+print('(1) Создать сайт')
+print('(2) Обновить сайт')
+print('(3) Сменить тип')
+print('(4) Авто-раздача сайта')
+print('Enter для просто публикации.')
-if op == "1":
+op = input('>> ')
+
+if op == '1':
from domain_check import *
- print("\nДомены: .jet, .jw, .404, .dash, .awesome, .mirror")
- domain = input("Домен сайта: ")
+ print(f'\nДоступные 1 lvl домены: {domain_list()}')
+ domain = input('Домен сайта: ')
if not domain_ok(domain):
- print("Неправильный формат или домен.")
+ print('Неправильный формат или домен.')
exit()
- print("\n(1) Статичный / (2) Динамический")
- type = input("Тип: ")
+ print('\n(1) Статичный / (2) Динамический')
+ type = input('Тип: ')
# Создаём папку и ключи для подписи
- mkdir(f"mysites/{domain}")
- key_gen(f"mysites/{domain}")
+ mkdir(f'mysites/{domain}')
+ key_gen(f'mysites/{domain}')
- if type == "1":
- conf = {"type": "static", "ver": 1}
- print("ПРИМЕЧАНИЕ: index.html обязателен.")
- elif type == "2":
- port = input("Порт сервера: ")
- conf = {"type": "dynamic", "ver": 1, "port": int(port)}
- write(conf, f"mysites/{domain}/config.json")
-
- if type == "1":
+ if type == '1':
+ conf = {'type': 'static', 'ver': 1}
+ print('\nПРИМЕЧАНИЕ: index.html обязателен.')
# Создаём index.html для загрузки сайта
- with open(f"mysites/{domain}/index.html", "w") as f:
- f.write("
Hello jetwork!
")
+ with open(f'mysites/{domain}/index.html', 'w') as f:
+ f.write(' Hello jetwork!
')
f.close()
+ elif type == '2':
+ port = input('Порт сервера: ')
+ conf = {'type': 'dynamic', 'ver': 1, 'port': int(port)}
+ 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}")
+ 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()
+elif op == '2':
+ print()
+ sites = your_sites()
- 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")
+ domain = sites[input('Домен сайта: ')]
+
+ 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')
# Обновляем версию
- conf = read(f"mysites/{domain}/config.json")
- conf["ver"] = conf["ver"] + 1
- 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}")
+ make_archive(f'mysites/{domain}', 'zip', f'mysites/{domain}')
+ sign(f'mysites/{domain}.zip', f'mysites/{domain}.key', f'mysites/{domain}')
-elif op == "3":
+elif op == '3':
from os import rmdir
- domain = input("\nДомен сайта: ")
- if not os.path.exists(f"mysites/{domain}"):
- print("Не существует такого сайта.")
- exit()
+ print()
+ sites = your_sites()
+ domain = sites[input('Домен сайта: ')]
- print("\n(1) Статичный / (2) Динамический")
- type = input("Тип: ")
+ print('\n(1) Статичный / (2) Динамический')
+ type = input('Тип: ')
- 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(" Hello jetwork!
")
+ 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(' Hello jetwork!
')
f.close()
- elif type == "2":
- conf = read(f"mysites/{domain}/config.json")
- port = input("Порт сервера: ")
+ elif type == '2':
+ conf = read(f'mysites/{domain}/config.json')
+ port = input('Порт сервера: ')
- clean = input("Удалить все лишние файлы сайта (y/n): ")
- if clean == "y":
+ clean = input('Удалить все лишние файлы сайта (y/n): ')
+ if clean == 'y':
# Удаляем папку, сохраняем конфиг и копируем публичный ключ
- rmtree(f"mysites/{domain}")
+ rmtree(f'mysites/{domain}')
sleep(0.1)
- system(f"mkdir mysites/{domain}")
+ system(f'mkdir mysites/{domain}')
- conf["type"] = "dynamic"
- conf["port"] = int(port)
- write(conf, f"mysites/{domain}/config.json")
+ 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")
+ 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}")
+ make_archive(f'mysites/{domain}', 'zip', f'mysites/{domain}')
+ sign(f'mysites/{domain}.zip', f'mysites/{domain}.key', f'mysites/{domain}')
-elif op == "4":
- domain = input("\nДомен сайта: ")
- if not os.path.exists(f"mysites/{domain}"):
- print("Не существует такого сайта.")
- exit()
+elif op == '4':
+ print()
+ sites = your_sites()
+ domain = sites[input('Домен сайта: ')]
- print("\nВведите ваш порт сервера (при запуске main.py)")
- serv_port = int(input(">> "))
- http_port = client(serv_port, f"is_{domain}")
+ serv_port = int( read()['our_port'] )
+ http_port = client(serv_port, f'is_{domain}')
- print("\nСтарт вечной раздачи...")
+ print('\nСтарт вечной раздачи...')
while True:
ports = port_check(serv_port)
sleep(1)
for port in tqdm(ports):
- client(port, f"publish_{domain}<>{http_port}")
+ 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"
+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"")
+ f.close()
# Копируем файлы из mysites в cached
try:
- rmtree(f"cached/{domain}")
+ rmtree(f'cached/{domain}')
except:
pass
-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")
+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')
-host = "jetwork.404.mn"
-# Проверяем тип сайта
-type = read(f"cached/{domain}/config.json")["type"]
-# Если динамический
-if type == "dynamic":
- port = read(f"cached/{domain}/config.json")["port"]
- with open(f"cached/{domain}/index.html", "w") as f:
- f.write(f'')
- f.close()
+if op != '':
+ print('\nОпубликовать сайт?')
+ pub = input('y/n >> ')
-
-if op != "":
- print("Опубликовать сайт?")
- pub = input("y/n >> ")
-
-if pub == "n":
+if pub == 'n':
exit()
-print("Введите ваш порт сервера (при запуске main.py)")
-serv_port = int(input(">> "))
-http_port = client(serv_port, f"is_{domain}")
+print('Введите ваш порт сервера (при запуске main.py)')
+serv_port = int(input('>> '))
+http_port = client(serv_port, f'is_{domain}')
-print("Получаем все порты...")
+print('Получаем все порты...')
ports = port_check(serv_port)
print(ports)
-print("Публикуем сайт...")
+print('Публикуем сайт...')
for port in tqdm(ports):
- client(port, f"publish_{domain}<>{http_port}")
+ client(port, f'publish_{domain}<>{http_port}')