diff --git a/dodo.py b/dodo.py index be46dd6..4094353 100755 --- a/dodo.py +++ b/dodo.py @@ -1,19 +1,22 @@ #!/usr/bin/env python3 import os import yaml +import threading from pathlib import Path home_dir = Path.home() dir_server = f"{home_dir}/ARK_Servers/" -mods_id = [] +mods_id = "" listen_server = True if not os.path.exists(dir_server): os.mkdir(dir_server) - +if not os.path.exists(f"{home_dir}/.config/dodo/"): + os.mkdir(f"{home_dir}/.config/dodo/") def yaml_edit(): count_maps = 1 + map_server = [] print("""Укажите требуется ли кластер? 1. Да 2. Нет""") @@ -27,7 +30,7 @@ def yaml_edit(): if count_maps.isdigit: break print("Введите цифры") - for i in range(1, int(count_maps) + 1): + for i in range(int(count_maps)): print("""Выберите карту из списка указав номер 1. The Island 2. The Center @@ -43,30 +46,29 @@ def yaml_edit(): 12. Fjordur""") amount_map = input("") if amount_map == "1": - map_server = "TheIsland" + map_server.append("TheIsland") elif amount_map == "2": - map_server = "TheCenter" + map_server.append("TheCenter") elif amount_map == "3": - map_server = "ScorchedEarth_P" + map_server.append("ScorchedEarth_P") elif amount_map == "4": - map_server = "Ragnarok" + map_server.append("Ragnarok") elif amount_map == "5": - map_server = "Aberration_P" + map_server.append("Aberration_P") elif amount_map == "6": - map_server = "Extinction" + map_server.append("Extinction") elif amount_map == "7": - map_server = "Valguero_P" + map_server.append("Valguero_P") elif amount_map == "8": - map_server = "Genesis" + map_server.append("Genesis") elif amount_map == "9": - map_server = "CrystalIsles" + map_server.append("CrystalIsles") elif amount_map == "10": - map_server = "Gen2" + map_server.append("Gen2") elif amount_map == "11": - map_server = "LostIsland" + map_server.append("LostIsland") elif amount_map == "12": - map_server = "Fjordur" - print("Введите цифры") + map_server.append("Fjordur") print("Укажите название Сервера") name_server = input("") @@ -83,65 +85,74 @@ def yaml_edit(): max_players = input("") yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players) - return cluster_server, map_server, name_server, port_server, query_port, password_server, max_players + return cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, count_maps def yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players): - if not os.path.exists(f"{home_dir}/.config/dodo/"): - os.mkdir(f"{home_dir}/.config/dodo/") settings_dodo = [ { - 'Cluster' : f"{cluster_server}", - 'Map' : f"{map_server}", - 'SessionName' : f"{name_server}", - 'Port' : f"{port_server}", - 'QueryPort' : f"{query_port}", - 'ServerPassword' : f"{password_server}", - 'MaxPlayers' : f"{max_players}", - 'ModsId' : f"{mods_id}", - 'Listen' : f"{listen_server}", - 'ServerPath' : f"{dir_server}" + 'Cluster' : cluster_server, + 'Map' : map_server, + 'SessionName' : name_server, + 'Port' : port_server, + 'QueryPort' : query_port, + 'ServerPassword' : password_server, + 'MaxPlayers' : max_players, + 'ModsId' : mods_id, + 'Listen' : listen_server, + 'ServerPath' : dir_server } - ] - with open(f"{home_dir}/.config/dodo/{map_server}.yaml", 'w') as yamlfile: + with open(f"{home_dir}/.config/dodo/{map_server[-1]}.yaml", 'w') as yamlfile: data = yaml.dump(settings_dodo, yamlfile) + print(data) print("Конфиг создан") +def install(map_server): + for i in map_server: + cluster_server, name_server, port_server, query_port, password_server, max_players, dir_server, mods_id, listen_server = read_yaml(i) + if not os.path.isdir(dir_server + i): + os.mkdir(dir_server + i) + print("-"*20) + print("Качаем карту " + i) + print("-"*20) + os.system(f"steamcmd +force_install_dir {dir_server + i} +login anonymous +app_update 376030 +quit") + print("-"*20) + print(i) + print("-"*20) + def start(): + os.chdir(dir_server + i + "/" + "ShooterGame/Binaries/Linux/") + os.system(f"./ShooterGameServer {i}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?MaxPlayers={max_players}?GameModIds={mods_id}?listen={listen_server}") + print("-"*20) + print("server " +i + " Запустился") + print("-"*20) + threads = threading.Thread(target=start, args=(map_server,)) + threads.start() + + def read_yaml(map_server): - print("начало read" "map_server") + print(map_server) with open(f"{home_dir}/.config/dodo/{map_server}.yaml", "r") as yamlfile: data = yaml.load(yamlfile, Loader=yaml.FullLoader) - map_server = 'data.Map' - dir_server = 'data.ServerPath' - name_server = 'data.SessionName' - port_server = 'data.Port' - query_port = 'data.QueryPort' - password_server = 'data.ServerPassword' - max_players = 'data.MaxPlayers' - mods_id = 'data.ModsId' - listen_server = 'data.Listen' - cluster_server = 'data.Cluster' + data = data[0] + print("-"*20) print(data) - print("конец read" "map_server") - return cluster_server, map_server, name_server, port_server, query_port, password_server, dir_server, max_players, mods_id, + print(type(data)) + print("-"*20) + #map_server = data['Map'] + dir_server = data['ServerPath'] + name_server = data['SessionName'] + port_server = data['Port'] + query_port = data['QueryPort'] + password_server = data['ServerPassword'] + max_players = data['MaxPlayers'] + mods_id = data['ModsId'] + listen_server = data['Listen'] + cluster_server = data['Cluster'] + return cluster_server, name_server, port_server, query_port, password_server, max_players, dir_server, mods_id, listen_server -def install(): - read_yaml(map_server) - if not os.path.isdir(dir_server + map_server): - os.mkdir(dir_server + map_server) - else: - os.system(f"steamcmd +force_install_dir {dir_server + map_server} +login anonymous +app_update 376030 +quit") +cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, count_maps = yaml_edit() - -def start(): - read_yaml(map_server) - os.chdir(dir_server + map_server + "/" + "ShooterGame/Binaries/Linux/") - os.system(f"./ShooterGameServer {map_server}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?MaxPlayers={max_players}?GameModIds={mods_id}?listen={listen_server}") - - -cluster_server, map_server, name_server, port_server, query_port, password_server, max_players = yaml_edit() -install() -start() +install(map_server)