From d7c46b0cc5af0e3fe06a13381da87eb7568de863 Mon Sep 17 00:00:00 2001 From: xpamych Date: Mon, 15 May 2023 23:57:58 +0300 Subject: [PATCH] 1 --- hlna.py | 182 +++++++++++++++++++++++++++----------------------------- 1 file changed, 89 insertions(+), 93 deletions(-) diff --git a/hlna.py b/hlna.py index 89c6048..ea3e74b 100755 --- a/hlna.py +++ b/hlna.py @@ -40,7 +40,7 @@ def create_dir(directory): """Проверка и создание директории""" if not os.path.exists(directory): os.makedirs(directory) - + create_dir(dir_config) @@ -96,7 +96,6 @@ def unpack(src, dst): logging.critical(msg) return print(msg) - # Read the actual archive data data = b'' read_data = 0 @@ -167,15 +166,44 @@ def config(): print_line("Пока есть только ARK и 7Days xD") +def ports_array(): + port_s = [] + query_p = [] + rcon_p = [] + for k in list_config: + data_port = read_yaml(k, game="ARK") + port_s.append(data_port['Port']) + query_p.append(data_port['QueryPort']) + rcon_p.append(data_port['RCONPort']) + return port_s, query_p, rcon_p + + +def ports(port, ports_arr, flag): + while True: + if not port: + if not ports_arr: + if flag == 0: + port = 7777 + elif flag == 1: + port = 27015 + elif flag == 2: + port = 27044 + print("Port=", port) + return port + else: + port = max(ports_arr) + 2 + if port in ports_arr: + print("Порт уже занят") + else: + return port + + def config_ark(list_config=list_config): """конфигурирование сервера арк""" create_dir(dir_server_ark) create_dir(dir_maps_ark) path_server() """Сбор данных для конфига""" - port_s = [] - rcon_p = [] - query_p = [] cluster_id = "" cluster_dir_override = "" @@ -230,11 +258,9 @@ def config_ark(list_config=list_config): break if list_config: - for k in list_config: - data_port = read_yaml(k, game="ARK") - port_s.append(data_port['Port']) - rcon_p.append(data_port['RCONPort']) - query_p.append(data_port['QueryPort']) + port_s, query_p, rcon_p = ports_array() + else: + port_s = query_p = rcon_p = [] if amount_map == 1: map_s = "TheIsland" @@ -264,19 +290,6 @@ def config_ark(list_config=list_config): # Если вдруг каким-то боком проверка не отработает и не будет нужной цифры map_s = 'TheIsland' - def ports(ports_arr): - while True: - port = check_int("") - if not port: - if not ports_arr: - return 0 - else: - port = max(ports_arr) + 2 - if port in ports_arr: - print("Порт уже занят") - else: - return port - if list_config: data = read_yaml(list_config[-1], game="ARK") while True: @@ -301,22 +314,15 @@ def config_ark(list_config=list_config): list_config.append(name_server) # если enter, то ставим последним элементом карту break - print("Укажите порт сервера: ") - port_server = ports(port_s) - if port_server == 0: - port_server = 7777 - print("Порт Сервера=", port_server) - print("Укажите query порт сервера: ") - query_port = ports(query_p) - if query_port == 0: - query_port = 27015 - print("Query Port=", query_port) + port = check_int("Укажите порт сервера: ") + port_server = ports(port, port_s, True) + port = check_int("Укажите query порт сервера: ") + query_port = ports(port, query_p, False) + + port = check_int("Укажите порт сервера: ") + rcon_port = ports(port, rcon_p, True) rcon_enabled = True - if rcon_p == []: - rcon_port = 27020 - else: - rcon_port = max(rcon_p) + 1 password_server = input("Укажите пароль Сервера: \n") adminpassword_server = 123 @@ -335,7 +341,7 @@ 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) @@ -343,7 +349,7 @@ def config_ark(list_config=list_config): def config_7daystodie(): """конфигурирование сервера 7 days to die""" - list_simvols = ("$","@","-",".","%","{","}","+","/") + list_simvols = ("$", "@", "-", ".", "%", "{", "}", "+", "/") create_dir(dir_server_7days) config_7days = input("Введите имя конфига (serverconfig):\n") if config_7days == "": @@ -494,7 +500,8 @@ def modextract(id_mod, id_game_workshop, dir_ark_mods): os.system(f"rm -rf {dir_ark_mods}") os.system(f"mv -f {dir_steam_workshop} {dir_ark_mods}") - modname = subprocess.check_output(['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8') + modname = subprocess.check_output( + ['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8') modname = re.search(r'
(.+)
', modname) modname = modname and modname.group(1) @@ -531,61 +538,51 @@ def modextract(id_mod, id_game_workshop, dir_ark_mods): @hlna.command(help='Выключение/включение серверов (без удаления) > {dir_logs}{date} 2>&1") - os.system(f"systemctl --user stop ark_{i}") - os.system(f"systemctl --user disable ark_{i}") + f"rm {dir_deactivated}{i} >> {dir_logs}{date} 2>&1") with open(f"{dir_logs}{date}.log", "a") as f: - f.write(f"[{t}] File {i} has been moved to {dir_maps_ark}\n") - if x == 0: - print(f"Карта активирована - {i}") - else: - print(f"{i} либо уже активирована, либо такой карты нет") - except: - print("ошибка при активации карты") - else: - for i in m: - try: - if i in delist_config: - print(f"Карта {i} уже есть в деактивированных") - continue - x = os.system( - f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1") - os.system(f"systemctl --user enable ark_{i}") - os.system(f"systemctl --user start ark_{i}") + f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n")# переписать эту залупу + else: + x = os.system(f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1") with open(f"{dir_logs}{date}.log", "a") as f: - f.write(f"[{t}] File {i} has been moved to {dir_deactivated}\n") - if x == 0: - print(f"Карта деактивирована - {i}") - else: - print(f"{i} либо деактивирована, либо такой карты нет") - except: - print("ошибка при деактивации карты") + f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n") + if x == 0: + print(f"Готов - {i}") + start = "start" if e else "stop" + enable = "enable" if e else "disable" + os.system(f"systemctl --user {start} ark_{i}") + os.system(f"systemctl --user {enable} ark_{i}") + else: + print(f"{i} либо уже активирована, либо такой карты нет") + except: + print("ошибка при активации карты") @hlna.command(help='Выводит статус настроеных серверов') @@ -648,7 +645,6 @@ def start(g, m): @click.option('-g', required=True, help="Название игры для запуска. (ark, 7days") @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") def stop(g, m): - start_stop("stop", g, m) @@ -663,7 +659,7 @@ def check_exist_servers(g): """Проверяет наличие конфигов для активных карт""" if g == "ark": if not os.path.exists(f"{dir_mods_ark}"): - print_line("Нет сконфигурированных серверов") # добавить отсюда вилку на вопрос с конфигурацией + print_line("Нет сконфигурированных серверов") # добавить отсюда вилку на вопрос с конфигурацией else: return elif g == "7days":