diff --git a/hlna.py b/hlna.py index 02d7580..0adcedb 100755 --- a/hlna.py +++ b/hlna.py @@ -132,7 +132,7 @@ def create_dir(directory): def print_line(*text): """Добавление тире вокруг текста, покраска""" print(colorama.Fore.YELLOW + "-" * 30) - print(f"{colorama.Fore.GREEN} + {text}") + print(colorama.Fore.GREEN, *text) print(colorama.Fore.YELLOW + "-" * 30 + colorama.Style.RESET_ALL) @@ -151,6 +151,7 @@ def check_int(number=""): @hlna.command(help='Сбор настроек для сервера или кластера') def config(): + "Выбор игры для создания сервера" while True: count_game = check_int("""Выберите игру для конфигурирования 1. ARK Survival Evolved @@ -158,19 +159,17 @@ def config(): : """) if count_game == 1: config_ark() - break elif count_game == 2: config_7daystodie() - break else: print_line("Пока есть только ARK и 7Days xD") def config_ark(list_config=list_config): + "конфигурирование сервера арк" create_dir(dir_server_ark) create_dir(dir_maps_ark) """Сбор данных для конфига""" - data = {} port_s = [] rcon_p = [] query_p = [] @@ -184,9 +183,14 @@ def config_ark(list_config=list_config): : """) if count_cluster == 1: cluster_server = True - cluster_id = input("Укажите id для кластера, любое сочетание символов: \n") - create_dir(dir_server_ark + cluster_id) - cluster_dir_override = (dir_server_ark + cluster_id) + while True: + cluster_id = input("Укажите id для кластера, любое сочетание символов: \n") + if cluster_id == '': + print("Введите символы: ") + else: + create_dir(dir_server_ark + cluster_id) + cluster_dir_override = (dir_server_ark + cluster_id) + break else: cluster_server = False @@ -223,11 +227,11 @@ def config_ark(list_config=list_config): break if list_config: - for i in list_config: - data = read_yaml(i, game="ARK") - port_s.append(data['Port']) - rcon_p.append(data['RCONPort']) - query_p.append(data['QueryPort']) + 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']) if amount_map == 1: map_s = "TheIsland" @@ -329,16 +333,16 @@ def config_ark(list_config=list_config): else: listen_server = True - yaml_create(game := "ARK", dir_server := "", cluster_server, map_s, list_config[-1], port_server, query_port, + 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) def config_7daystodie(): - list_simvols = "$@-.%{}+/".split() + "конфигурирование сервера 7 days to die" + list_simvols = ("$","@","-",".","%","{","}","+","/") create_dir(dir_server_7days) - print("Введите имя конфига (serverconfig):\n") - config_7days = input() + config_7days = input("Введите имя конфига (serverconfig):\n") if config_7days == "": config_7days = "serverconfig" elif config_7days == "serverconfig": @@ -347,10 +351,11 @@ def config_7daystodie(): print_line("Запрещённые символы") else: xml_parser() - systemd_unit_create(game := "7Days", config_7days) + systemd_unit_create("7Days", config_7days) def xml_parser(): + "добавить документацию" print("Я не умею парсить))") @@ -358,9 +363,8 @@ def yaml_create(game, dir_server="", cluster_server="", map_s="", name_server="" rcon_enabled="", rcon_port="", adminpassword_server="", password_server="", max_players="", id_mods_ark="", cluster_id="", cluster_dir_override="", listen_server=""): + "добавить документацию" if game == "ARK": - print_line(dir_maps_ark) - print_line(name_server) path_yaml = dir_maps_ark + name_server settings = [ { @@ -397,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): - print_line(systemd_unit_create) + "добавить документацию" if game == "ARK": id_game = "376030" for i in name_server: @@ -444,17 +448,16 @@ WantedBy=default.target @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): create_dir(dir_workshop_ark) id_mods_ark = id_mods_ark[0].split(',') - print_line(id_mods_ark) for id_mod in id_mods_ark: dir_ark_mods = f"{dir_mods_ark}/{id_mod}" if i: os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit") - print_line("вызов экстракт") modextract(id_mod, id_game_workshop, dir_ark_mods) else: os.system(f"rm -rf {dir_ark_mods}") @@ -464,12 +467,11 @@ def mod(g, m, i, id_mods_ark): def modextract(id_mod, id_game_workshop, dir_ark_mods): - print_line(id_mod) + "добавить документацию" dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor" dir_extract = dir_ark_mods if id_mod == "111111111": return - try: for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)): for file in files: @@ -483,19 +485,19 @@ def modextract(id_mod, id_game_workshop, dir_ark_mods): os.remove(src) if os.path.isfile(uncompressed): os.remove(uncompressed) - except (UnpackException, SignatureUnpackException, CorruptUnpackException) as e: + except Exception as e: + print(e) print("[x] Unpacking .z files failed, aborting mod install") return False + 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'