From 177fc53f1d029ea57085663c06d4df3634e83a92 Mon Sep 17 00:00:00 2001 From: xpamych Date: Sun, 7 May 2023 17:37:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20systemd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hlna.py | 61 ++++++++++++++++++++------------------------------------- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/hlna.py b/hlna.py index ad4e78d..f8056f2 100755 --- a/hlna.py +++ b/hlna.py @@ -229,7 +229,6 @@ def config(list_config=list_config): if max_players == 0: max_players = 70 - systemd_unit_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) 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) @@ -256,34 +255,38 @@ def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rco with open(dir_maps + f"{name_server}", 'w') as yamlfile: yaml.dump(settings_hlna, yamlfile) print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL) + systemd_unit_create() -def systemd_unit_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): - if not cluster_server: - ntff = "" - else: - ntff = "-NoTransferFromFiltering" - unit_file = f'{dir_unit}ARK_{name_server}.service' - unit_text = f'''[Unit] -Description=ARK: Survival Evolved dedicated server - {map_s} +def systemd_unit_create(name_server=list_config): + for i in name_server: + data = read_yaml(i) + if not data['Cluster']: + ntff = "" + else: + ntff = "-NoTransferFromFiltering" + unit_file = f"{dir_unit}ARK_{data['SessionName']}.service" + unit_text = f'''[Unit] +Description=ARK: Survival Evolved dedicated server - {data['map']} Wants=network-online.target 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=60 -ExecStart={server_dir}ShooterGameServer {map_s}?{listen_server}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?RCONEnabled={rcon_enabled}?RCONPort={rcon_port}?ServerAdminPassword={adminpassword_server}?MaxPlayers={max_players} -clusterid={cluster_id}-ClusterDirOverride={cluster_dir_override} {ntff} -WorkingDirectory={server_dir} +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} LimitNOFILE=100000 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s INT $MAINPID [Install] -WantedBy=multi-user.target +WantedBy=default.target ''' - with open(unit_file, 'w') as systemd_unit: - systemd_unit.write(unit_text) - os.system('systemctl daemon-reload') + with open(unit_file, 'w') as systemd_unit: + systemd_unit.write(unit_text) + os.system(f"systemctl --user unmask ARK_{data['SessionName']}.service") + os.system(f"systemctl --user enable ARK_{data['SessionName']}.service") + os.system('systemctl --user daemon-reload') def test_mod_install(): @@ -422,31 +425,9 @@ def start(m, b, name_server=list_config): else: names_serverstart = choose_map(names_serverstart) - print_line("Валидация файлов сервера") - x = os.system(f"steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit") - os.chdir(server_dir) for i in names_serverstart: data = read_yaml(i) - starting_map = dict_mapname[i] - print_line(data['Cluster']) - if not data['Cluster']: - ntff = "" - else: - ntff = "-NoTransferFromFiltering" - - def starting(i): - 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,)) - threads.start() - else: - print(f"Карта не запущена, сервер не установлен") - + os.system(f"systemctl --user start ARK_{data['SessionName']}.service") else: print("Ни одной карты не установлено")