Окончательная чистка

This commit is contained in:
Евгений Храмов 2023-05-15 20:36:52 +03:00
parent ffd37bad3c
commit 7ac346f061

93
hlna.py

@ -36,7 +36,7 @@ delist_config = find_file(dir_deactivated)
def path_server():
'Получение пути для хранения файлов серверов, записываем путь в yaml файл'
"""Получение пути для хранения файлов серверов, записываем путь в yaml файл"""
dir_server = input(f"""Укажите путь до каталога, где будут храниться файлы сервера. По-умолчанию {home_dir}/Servers/
:""")
if not dir_server:
@ -51,7 +51,7 @@ def hlna():
def unpack(src, dst):
'Добавить документацию'
"""Добавить документацию"""
with open(src, 'rb') as f:
sigver = struct.unpack('q', f.read(8))[0]
unpacked_chunk = f.read(8)
@ -149,9 +149,9 @@ def check_int(number=""):
print_line("Введите число")
@hlna.command(help='Сбор настроек для сервера или кластера')
@hlna.command(help='Выбор игры и сбор настроек для сервера(-ов)')
def config():
"Выбор игры для создания сервера"
"""Выбор игры для создания сервера"""
while True:
count_game = check_int("""Выберите игру для конфигурирования
1. ARK Survival Evolved
@ -166,9 +166,10 @@ def config():
def config_ark(list_config=list_config):
"конфигурирование сервера арк"
"""конфигурирование сервера арк"""
create_dir(dir_server_ark)
create_dir(dir_maps_ark)
path_server()
"""Сбор данных для конфига"""
port_s = []
rcon_p = []
@ -206,7 +207,7 @@ def config_ark(list_config=list_config):
for i in range(count_maps):
while True:
"Проверка на выбор карты из списка"
"""Проверка на выбор карты из списка"""
amount_map = check_int("""Выберите карту из списка указав номер
1. The Island
2. The Center
@ -332,14 +333,14 @@ def config_ark(list_config=list_config):
listen_server = False
else:
listen_server = True
"""Вызов создания конфига"""
yaml_create("ARK", "", cluster_server, map_s, list_config[-1], port_server, query_port,
rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id,
cluster_dir_override, listen_server)
rcon_enabled, rcon_port, adminpassword_server, password_server, max_players,
cluster_id, cluster_dir_override, listen_server)
def config_7daystodie():
"конфигурирование сервера 7 days to die"
"""конфигурирование сервера 7 days to die"""
list_simvols = ("$","@","-",".","%","{","}","+","/")
create_dir(dir_server_7days)
config_7days = input("Введите имя конфига (serverconfig):\n")
@ -355,15 +356,14 @@ def config_7daystodie():
def xml_parser():
"добавить документацию"
print("Я не умею парсить))")
"""добавить документацию"""
print("Я пока не умею парсить xml))")
def yaml_create(game, dir_server="", cluster_server="", map_s="", name_server="", port_server="", query_port="",
rcon_enabled="", rcon_port="",
adminpassword_server="", password_server="", max_players="", id_mods_ark="", cluster_id="",
cluster_dir_override="", listen_server=""):
"добавить документацию"
rcon_enabled="", rcon_port="", adminpassword_server="", password_server="", max_players="",
id_mods_ark="", cluster_id="", cluster_dir_override="", listen_server=""):
"""Создаёт на основании собранных данных yaml конфиг"""
if game == "ARK":
path_yaml = dir_maps_ark + name_server
settings = [
@ -401,7 +401,7 @@ def yaml_create(game, dir_server="", cluster_server="", map_s="", name_server=""
def systemd_unit_create(game, config_7days="", name_server=list_config):
"добавить документацию"
"""Создаёт на основании yaml конфига systemd юнит"""
if game == "ARK":
id_game = "376030"
for i in name_server:
@ -412,12 +412,11 @@ def systemd_unit_create(game, config_7days="", name_server=list_config):
unit_file = f"{dir_unit}ark_{data['SessionName']}.service".lower()
elif game == "7Days":
id_game = "294420"
# сюда дописать обращение к xml для получения уникального имени сервера
# сюда дописать обращение к xml_parser для получения уникального имени сервера
unit_dir_server = dir_server_7days
systemd_unit_exec = f"{dir_server_7days}startserver.sh -configfile={config_7days}.xml"
unit_file = f"{dir_unit}7days.service".lower()
unit_text = f'''[Unit]
Description={game}: Server
Wants=network-online.target
@ -442,13 +441,13 @@ WantedBy=default.target
os.system(f"systemctl --user enable {unit_name}")
@hlna.command(help='Для скачивания и установки модов')
@hlna.command(help='Для скачивания и установки модов <hlna ark -m all -i 111111111>')
@click.argument('g', nargs=1)
@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт")
@click.option("-i/-u", default=True, help="-i установить моды, -u удалить моды")
@click.argument('id_mods_ark', nargs=-1)
def mod(g, m, i, id_mods_ark):
"добавить документацию"
"""Проводит операции на модами"""
if g == "ark":
id_game_workshop = "346110"
if not os.path.isdir(dir_workshop_ark):
@ -467,7 +466,7 @@ def mod(g, m, i, id_mods_ark):
def modextract(id_mod, id_game_workshop, dir_ark_mods):
"добавить документацию"
"""Распаковывает файлы мода и создаёт .mod файл для него"""
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
dir_extract = dir_ark_mods
if id_mod == "111111111":
@ -561,7 +560,9 @@ def enablemap(m, e):
print("Заменить query port?")
continue
x = os.system(
f"mv {dir_deactivated}{i} {dir_maps_ark} >> {dir_logs}{date} 2>&1") # Добавить текущее время
f"mv {dir_deactivated}{i} {dir_maps_ark} >> {dir_logs}{date} 2>&1")
os.system(f"systemctl --user stop ari_{i}")
os.system(f"systemctl --user disable ari_{i}")
with open(f"{dir_logs}{date}.log", "a") as f:
f.write(f"[{time}] File {i} has been moved to {dir_maps_ark}\n")
if x == 0:
@ -577,7 +578,9 @@ def enablemap(m, e):
print(f"Карта {i} уже есть в деактивированных")
continue
x = os.system(
f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1") # Добавить текущее время
f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1")
os.system(f"systemctl --user enable ari_{i}")
os.system(f"systemctl --user start ari_{i}")
with open(f"{dir_logs}{date}.log", "a") as f:
f.write(f"[{time}] File {i} has been moved to {dir_deactivated}\n")
if x == 0:
@ -590,7 +593,7 @@ def enablemap(m, e):
@hlna.command()
def status(list_config=list_config):
"добавить документацию"
"""Выводит статус настроеных серверов"""
# Добавить сортивку по кластерам и вывод несколько столбиков
if list_config == [] and delist_config == []:
print_line("Сервера не сконфигурированы")
@ -640,9 +643,9 @@ def status(list_config=list_config):
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def start(g, m):
"добавить документацию"
#добавить проверку на ввод аргумента ark/7day если else: давать подсказку
#если нет конфигов, то выводим что серверов нет
"""Запускает сервер выбранной игры"""
# добавить проверку на ввод аргумента ark/7day если else: давать подсказку
# если нет конфигов, то выводим что серверов нет
start_stop("start", g, m)
@ -650,9 +653,7 @@ def start(g, m):
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def stop(g, m):
"добавить документацию"
#добавить проверку на ввод аргумента ark/7day если else: давать подсказку
#если нет конфигов, то выводим что серверов нет
"""Останавливает сервер"""
start_stop("stop", g, m)
@ -660,13 +661,27 @@ def stop(g, m):
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def restart(g, m):
"добавить документацию"
"""Перезагружает сервер"""
start_stop("restart", g, m)
def start_stop(action, g, m, list_config=list_config):
"добавить документацию"
def check_exist_servers(g):
"""Проверяет наличие конфигов для активных карт"""
if g == "ark":
if not os.path.exists(f"{dir_mods_ark}"):
print_line("Нет сконфигурированных серверов") # добавить отсюда вилку на вопрос с конфигурацией
else:
return
elif g == "7days":
print_line("7Days")
def start_stop(action, g, m, list_config=list_config):
"""Функция изменения статусов сервера"""
if g != "ark" or "7days":
return
elif g == "ark":
check_exist_servers(g)
dict_mapname = {}
dict_allmapname = []
for i in list_config:
@ -690,8 +705,6 @@ def start_stop(action, g, m, list_config=list_config):
x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service")
if x == 0:
print_line("Готово")
else:
print("Ни одной карты не установлено")
elif g == "7days":
x = os.system(f"systemctl --user {action} 7days.service")
if x == 0:
@ -699,7 +712,7 @@ def start_stop(action, g, m, list_config=list_config):
def read_yaml(list_config=list_config, flag=True, game=""):
"добавить документацию"
"""Читает конфиги и отдаёт данные туда где их запросили"""
# Читаем конфиги активных или неактивных карт в зависимости от флага
if game == "ARK":
path_yaml = f"{dir_maps_ark}{list_config}" if flag else f"{dir_deactivated}{list_config}"
@ -711,7 +724,7 @@ def read_yaml(list_config=list_config, flag=True, game=""):
def choose_map(arr):
"добавить документацию"
"""Функция выбора карт"""
new_arr = []
arr = sorted(arr)
print('Найдены сервера с этой картой')
@ -736,7 +749,7 @@ def choose_map(arr):
@click.argument('c', nargs=1)
@click.option('-m', required=True, help="Название карты для применения rcon команды")
def rcon(m, c):
"добавить документацию"
"""Функция обеспечивающая отправку команд на игровой сервер через rcon"""
dict_mapname = {}
dict_adminpwd = {}
if list_config:
@ -764,7 +777,7 @@ def rcon(m, c):
def zero(x=""):
"Потом пригодится"
"""Потом пригодится"""
return ""