diff --git a/hlna.py b/hlna.py index b9b6cc5..085e8d9 100755 --- a/hlna.py +++ b/hlna.py @@ -383,8 +383,8 @@ def start(m,b, name_server=list_config): names_serverstart.append(ns) print_line(f"Карта которая запускается {ns}") - if b == '': - names_serverstart = choose_map(names_serverstart) + if b == '': + names_serverstart = choose_map(names_serverstart) server_dir = dir_server + "ShooterGame/Binaries/Linux/" print_line("Валидация файлов сервера") @@ -400,7 +400,14 @@ def start(m,b, name_server=list_config): ntff = "-NoTransferFromFiltering" def starting(i): + pid = os.getpid() + settings = [{data['SessionName']:pid}] + create_dir(f"{home_dir}/.config/hlna/ServerSettings/conf.txt") + with open(f"{home_dir}/.config/hlna/ServerSettings/conf.txt", 'a') as yamlfile: + yaml.dump(settings, yamlfile) + os.system(f"{server_dir}ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']} {ntff}") + if x == 0: print_line("Запускаем карту" + i) threads = threading.Thread(target=starting, args=(starting_map,)) @@ -426,7 +433,36 @@ def delete(m, list_config=list_config): else: continue """ +@hlna.command() +@click.option('-m', default='all', help="Название карты для завершения или all для завершения всех карт") +def shootdown(m): + pids = pid() + print(pids) + shootdown_servers = [] + if list_config != []: + if m == "all": + shootdown_servers = pids + else: + arr = m.split(',') + dict_mapname = {} + for i in list_config: + data = read_yaml(i) + dict_mapname[data['SessionName']] = data['map'] + for ns, v in dict_mapname.items(): + if v in m: + shootdown_servers.append(ns) + shootdown_servers = choose_map(shootdown_servers) + + for i in shootdown_servers: + os.system(f"kill {i}") + else: + print("Ни одной карты не установлено") +def pid(): + with open(f"{home_dir}/.config/hlna/ServerSettings/conf.txt", "r") as yamlfile: + data = yaml.load(yamlfile, Loader=yaml.FullLoader) + return data[0] # возвращаем словарь со всеми значениями + def read_yaml(name_server, flag=True): # Читаем конфиги активных или неактивных карт в зависимости от флага if flag == True: