diff --git a/hlna.py b/hlna.py index c615c91..b4b32cd 100755 --- a/hlna.py +++ b/hlna.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import os +import datetime import yaml import click @@ -10,15 +11,18 @@ from rcon.source import Client home_dir = Path.home() dir_server = f"{home_dir}/Servers/" -dir_server_ark = f"{dir_server}/ARK" -server_dir = dir_server + "ShooterGame/Binaries/Linux/" +dir_server_ark = f"{dir_server}/ARK/" +server_dir = f"{dir_server_ark}ShooterGame/Binaries/Linux/" dir_unit = f"{home_dir}/.config/systemd/user/" dir_config = f"{home_dir}/.config/hlna/" -dir_logs = f"{dir_config}logs" +dir_logs = f"{dir_config}logs/" dir_maps = f"{dir_config}maps/" dir_deactivated = f"{dir_maps}deactivated/" mods_id = "" +now = datetime.datetime.now() +date = now.strftime("%Y-%m-%d") +time = now.strftime("%H:%M:%S") @click.group() @@ -38,7 +42,6 @@ create_dir(dir_unit) create_dir(dir_config) create_dir(dir_logs) create_dir(dir_maps) -create_dir(dir_deactivated) def find_file(path): @@ -298,7 +301,7 @@ After=syslog.target network.target nss-lookup.target network-online.target [Service] ExecStartPre=/usr/bin/steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit TimeoutStartSec=1200 -ExecStart={server_dir}ShooterGameServer {data['map']}?listen={data['Listen']}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']} {ntff} +ExecStart={dir_server_ark}ShooterGameServer {data['map']}?listen={data['Listen']}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']} {ntff} LimitNOFILE=100000 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s INT $MAINPID @@ -331,10 +334,11 @@ test_mod_install() @click.option("-m", required=True, help="Название Сервера") @click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать") def enablemap(m, e): - """Тут переписать надо""" + """Включение/выключение карт""" + m = m.split(",") - # m = check_name_map(m, False) - create_dir(dir_config + "deactivated") + if not os.path.isdir(dir_deactivated): + create_dir(dir_deactivated) if e == True: port_s = [] query_p = [] @@ -350,26 +354,32 @@ def enablemap(m, e): data = read_yaml(i) if data['Port'] in port_s: print("Предлагаем заменить") + continue 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") # Добавить текущее время + continue + x = os.system(f"mv {dir_deactivated}{i} {dir_maps} >> {dir_logs}{date} 2>&1") # Добавить текущее время + with open(f"{dir_logs}{date}.log", "a") as f: + f.write(f"[{time}] File {i} has been moved to {dir_maps}\n") if x == 0: print(f"Карта активирована - {i}") else: print(f"{i} либо уже активирована, либо такой карты нет") - except: - print("ошибка") + finally: pass + # except: + # print("ошибка при активации карты") + # pass else: - for i in m: try: 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") # Добавить текущее время + f"mv {dir_maps}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1") # Добавить текущее время + 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: print(f"Карта деактивирована - {i}") else: @@ -458,12 +468,12 @@ def start(m, b, name_server=list_config): print("Ни одной карты не установлено") -def read_yaml(name_server, flag=True): +def read_yaml(list_config, flag=True): # Читаем конфиги активных или неактивных карт в зависимости от флага if flag: - dirs = f"{dir_maps}{name_server}" + dirs = f"{dir_maps}{list_config}" else: - dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}" + dirs = f"{dir_deactivated}{list_config}" with open(dirs, "r") as yamlfile: data = yaml.load(yamlfile, Loader=yaml.FullLoader) return data[0] # возвращаем словарь со всеми значениями