From 4648ff60fd34c249614f95ca4c6a687238b847c5 Mon Sep 17 00:00:00 2001 From: xpamych Date: Mon, 8 May 2023 17:40:17 +0300 Subject: [PATCH] =?UTF-8?q?=D1=87=D1=82=D0=BE-=D1=82=D0=BE=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hlna.py | 113 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 52 deletions(-) diff --git a/hlna.py b/hlna.py index c235622..88605f6 100755 --- a/hlna.py +++ b/hlna.py @@ -18,7 +18,6 @@ dir_maps = f"{dir_config}maps/" dir_deactivated = f"{dir_maps}deactivated/" mods_id = "" -listen_server = True @click.group() @@ -58,9 +57,9 @@ delist_config = find_file(dir_deactivated) def print_line(text): """Добавление тире вокруг текста, покраска""" - print(colorama.Fore.YELLOW + "-"*30) + print(colorama.Fore.YELLOW + "-" * 30) print(f"{colorama.Fore.GREEN} + {text}") - print(colorama.Fore.YELLOW + "-"*30 + colorama.Style.RESET_ALL) + print(colorama.Fore.YELLOW + "-" * 30 + colorama.Style.RESET_ALL) def check_int(number=""): @@ -73,10 +72,10 @@ def check_int(number=""): x = int(x) return x except ValueError: - print("Введите число") + print_line("Введите число") -@hlna.command(help='Для конфигурирования параметров запускаемого сервера или кластера серверов') +@hlna.command(help='Сбор настроек для сервера или кластера') def config(list_config=list_config): """Сбор данных для конфига""" data = {} @@ -105,7 +104,6 @@ def config(list_config=list_config): for i in list_config: data = read_yaml(i) print(f"{i} : {data['map']}") - # id_srv[data['SessionName']] = data['id_server'] count_maps = check_int("Укажите количество карт: \n") if count_maps == 0: # 0 возвращает check_int когда, ничего не было введено @@ -114,8 +112,6 @@ def config(list_config=list_config): for i in range(count_maps): while True: "Проверка на выбор карты из списка" - - # os.system("clear") amount_map = check_int("""Выберите карту из списка указав номер 1. The Island 2. The Center @@ -181,11 +177,10 @@ def config(list_config=list_config): if port in ports_arr: print("Порт уже занят") else: - return port + return port if list_config: data = read_yaml(list_config[-1]) - while True: name_server = input("Укажите название Сервера: \n") if name_server == "": @@ -195,7 +190,6 @@ def config(list_config=list_config): while new_name in list_config: new_name = f"{map_s}{str(count)}" count += 1 - list_config.append(new_name) print(list_config) break @@ -204,20 +198,19 @@ def config(list_config=list_config): break else: if name_server in list_config: - print("Имя занято") + print_line("Имя занято") else: list_config.append(name_server) # если enter, то ставим последним элементом карту break + print("Укажите порт сервера:\n") port_server = ports(port_s) print("Укажите query порт сервера:\n") query_port = ports(query_p) - if port_server == 0: port_server = 7777 if query_port == 0: query_port = 27015 - print("Порт Сервера=", port_server) print("Query Port=", query_port) @@ -233,27 +226,41 @@ def config(list_config=list_config): if max_players == 0: max_players = 70 - yaml_create(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) + print("Передавать сервер в глобальный список серверов steam?") + listen_server_amount = check_int("""\n + 1. Да + 2. Нет + :""") + if listen_server_amount == 1: + listen_server = True + elif listen_server_amount == 2: + listen_server = False + else: + listen_server = True + + yaml_create(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 yaml_create(cluster_server, map_s, name_server, port_server, query_port, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override): +def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rcon_enabled, rcon_port, + adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override, listen_server): settings_hlna = [ { - 'map' : map_s, - 'Cluster' : cluster_server, - 'SessionName' : name_server, - 'Port' : port_server, - 'QueryPort' : query_port, - 'RCONEnabled' : rcon_enabled, - 'RCONPort' : rcon_port, + 'map': map_s, + 'Cluster': cluster_server, + 'SessionName': name_server, + 'Port': port_server, + 'QueryPort': query_port, + 'RCONEnabled': rcon_enabled, + 'RCONPort': rcon_port, 'ServerAdminPassword': adminpassword_server, - 'ServerPassword' : password_server, - 'MaxPlayers' : max_players, - 'ModsId' : mods_id, - 'Listen' : listen_server, - 'ServerPath' : dir_server, - 'clusterid' : cluster_id, - 'clusterdir' : cluster_dir_override + 'ServerPassword': password_server, + 'MaxPlayers': max_players, + 'ModsId': mods_id, + 'Listen': listen_server, + 'ServerPath': dir_server, + 'clusterid': cluster_id, + 'clusterdir': cluster_dir_override } ] with open(dir_maps + f"{name_server}", 'w') as yamlfile: @@ -297,8 +304,8 @@ def test_mod_install(): pathTest = f"{dir_server}ShooterGame/Saved/Config/LinuxServer/" if os.path.exists(pathTest): os.chdir(pathTest) -# "Добавить файл в Game.ini, если модов несколько добавляем еще строку ModIDS= [ModInstaller] ModIDS=" -# c этим не разобрался + # "Добавить файл в Game.ini, если модов несколько добавляем еще строку ModIDS= [ModInstaller] ModIDS=" + # c этим не разобрался os.system("echo ActiveMods=2943454417 >> GameUserSettings.ini") else: print_line("Сервер не установлен") @@ -310,9 +317,9 @@ test_mod_install() @hlna.command() @click.option("-m", required=True, help="Название Сервера") @click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать") -def enablemap(m,e): +def enablemap(m, e): """Тут переписать надо""" - m = m.split(",") + m = m.split(",") # m = check_name_map(m, False) create_dir(dir_config + "deactivated") if e == True: @@ -332,7 +339,8 @@ def enablemap(m,e): print("Предлагаем заменить") if data['QueryPort'] in query_p: print("Заменить query port?") - x = os.system(f"mv {dir_config}deactivated/{i} {dir_config + i} 2>> {dir_config}logs") #Добавить текущее время + x = os.system( + f"mv {dir_config}deactivated/{i} {dir_config + i} 2>> {dir_config}logs") # Добавить текущее время if x == 0: print(f"Карта активирована - {i}") else: @@ -347,16 +355,17 @@ def enablemap(m,e): if i in delist_config: print(f"Карта {i} уже есть в деактивированных") continue - x = os.system(f"mv {dir_config + i} {dir_config}deactivated/{i} 2>> {dir_config}logs") #Добавить текущее время + x = os.system( + f"mv {dir_config + i} {dir_config}deactivated/{i} 2>> {dir_config}logs") # Добавить текущее время if x == 0: print(f"Карта деактивирована - {i}") else: print(f"{i} либо деактивирована, либо такой карты нет") except: pass - -@hlna.command() + +@hlna.command() def servers(map_server=list_config): # Добавить сортивку по кластерам и вывод несколько столбиков if map_server == [] and delist_config == []: @@ -382,10 +391,10 @@ def servers(map_server=list_config): Rcon порт : {data['RCONPort']} Максимальное кол-во игроков: {data['MaxPlayers']}""") print("-" * 40) - - if delist_config!=[]: + + if delist_config != []: x = input("Есть неактивные сервера, показать Y/n: ") - if x!="n": + if x != "n": for i in delist_config: data = read_yaml(i, False) print(f""" @@ -401,8 +410,8 @@ def servers(map_server=list_config): Rcon порт : {data['RCONPort']} Максимальное кол-во игроков: {data['MaxPlayers']}""") print("-" * 40) - - + + @hlna.command(help='Для запуска, сконфигурированного сервера или кластера') @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") @click.option('-b', default='', help="") @@ -451,27 +460,27 @@ def choose_map(arr): new_arr = [] arr = sorted(arr) print('Найдены сервера с этой картой') - for i,map in enumerate(arr): - print(f"{i+1}) {map}") + for i, map in enumerate(arr): + print(f"{i + 1}) {map}") while True: try: x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',') - x = [int (i) for i in x] + x = [int(i) for i in x] break except: print("Неправильный ввод") - + for i in x: - new_arr.append(arr[i-1]) + new_arr.append(arr[i - 1]) print('Выбранные сервера:', new_arr) - + return new_arr @hlna.command() -@click.argument('c', nargs=1) +@click.argument('c', nargs=1) @click.option('-m', required=True, help="Название карты для применения rcon команды") -def rcon(m,c): +def rcon(m, c): print_line("Команда: ", c) print_line("Карты: ", m) dict_mapname = {} @@ -482,7 +491,7 @@ def rcon(m,c): dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword'] rcon_ports = [] for ns, v in dict_mapname.items(): - print_line(f"переменные v и m {v} & {m}") # обьединить с таким же блоком в start() + print_line(f"переменные v и m {v} & {m}") # обьединить с таким же блоком в start() if v in m: rcon_ports.append(ns) print_line(f"Карта которая запускается {ns}")