запуск с одной директории

This commit is contained in:
sitisll 2023-02-28 16:40:52 +03:00
parent 03da3ffa1c
commit 1e25eac454
2 changed files with 43 additions and 71 deletions

75
hlna.py

@ -61,8 +61,6 @@ def check_int(number=""):
x = input(number) x = input(number)
if x == "": if x == "":
return 0 return 0
x = x.replace(' ', '')
x = x.replace(',', '')
x = int(x) x = int(x)
return x return x
except ValueError: except ValueError:
@ -189,7 +187,6 @@ def config(list_config=list_config):
if map_s in list_config: if map_s in list_config:
count = 1 count = 1
new_name = map_s new_name = map_s
print(list_config)
while new_name in list_config: while new_name in list_config:
new_name = f"{map_s}({str(count)})" new_name = f"{map_s}({str(count)})"
count += 1 count += 1
@ -214,33 +211,10 @@ def config(list_config=list_config):
port_server = 7777 port_server = 7777
if query_port == 0: if query_port == 0:
query_port = 27015 query_port = 27015
print("Порт Сервера=",port_server) print("Порт Сервера=",port_server)
print("Query Port=", query_port) print("Query Port=", query_port)
'''
while True:
port_server = check_int("Укажите порт Сервера <7777>: \n")
if port_server == 0:
if port_s == []:
port_server = 7777
else:
port_server = max(port_s) + 2
if port_server is port_s: # если веденный порт есть в списке портов
print("Этот порт уже занят")
else:
break
while True:
query_port = check_int("Укажите Query-порт Сервера <27015>: \n")
if query_port == 0:
if query_p == []:
query_port = 27015
else:
query_port = max(query_p) + 1
if query_port is query_p: # если веденный порт есть в списке портов
print("Этот порт уже занят")
else:
break
'''
rcon_enabled = True rcon_enabled = True
if rcon_p == []: if rcon_p == []:
rcon_port = 27020 rcon_port = 27020
@ -255,7 +229,6 @@ def config(list_config=list_config):
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) 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)
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):
settings_hlna = [ settings_hlna = [
{ {
@ -395,28 +368,25 @@ def start(m, name_server=list_config):
if name_server != []: if name_server != []:
if m == "all": if m == "all":
print("Запускаем все активные карты") print("Запускаем все активные карты")
names_serverstart = choose_map(names_serverstart)
server_dir = dir_server + "Server" + "/ShooterGame/Binaries/Linux/"
print_line("Качаем сервер")
x = os.system(f"steamcmd +force_install_dir {server_dir} +login anonymous +app_update 376030 +quit")
for i in names_serverstart: for i in names_serverstart:
data = read_yaml(i) data = read_yaml(i)
create_dir(data['ServerPath'] + i)
print_line("Качаем карту: " + i)
starting_map = dict_mapname[i] starting_map = dict_mapname[i]
x = os.system(
f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit")
def starting(i): def starting(i):
# os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/") os.chdir(server_dir)
os.chdir(dir_server + "Server" + "/ShooterGame/Binaries/Linux/")
os.system( os.system(
f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?multihome=127.0.0.1?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}") f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?multihome=127.0.0.1?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}")
if x == 0: if x == 0:
print_line("Карта скачана: " + i) print_line("Запускаем карту" + i)
threads = threading.Thread(target=starting, args=(starting_map,)) threads = threading.Thread(target=starting, args=(starting_map,))
threads.start() threads.start()
else: else:
print(f"Карта {i} не установлена") print(f"Карта не запущена, сервер не установлен")
else: else:
print("Ни одной карты не установлено") print("Ни одной карты не установлено")
@ -446,12 +416,33 @@ def read_yaml(name_server, flag=True):
data = yaml.load(yamlfile, Loader=yaml.FullLoader) data = yaml.load(yamlfile, Loader=yaml.FullLoader)
return data[0] # возвращаем словарь со всеми значениями return data[0] # возвращаем словарь со всеми значениями
def choose_map(arr):
new_arr = []
arr = sorted(arr)
print('Найдены сервера с этой картой')
for i,map in enumerate(arr):
print(f"{i+1}) {map}")
while True:
try:
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
x = [int (i) for i in x]
break
except:
print("Неправильный ввод")
for i in x:
new_arr.append(arr[i-1])
print('Выбранные сервера:', new_arr)
return new_arr
@hlna.command() @hlna.command()
@click.argument('c', nargs=1) @click.argument('c', nargs=1)
@click.option('-m', required=True, help="Название карты для применения rcon команды") @click.option('-m', required=True, help="Название карты для применения rcon команды")
def rcon(m,c): def rcon(m,c):
print_line(c) print_line("Команда: ", c)
print_line(m) print_line("Карты: ", m)
dict_mapname = {} dict_mapname = {}
dict_adminpwd = {} dict_adminpwd = {}
for i in list_config: for i in list_config:
@ -460,7 +451,7 @@ def rcon(m,c):
dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword'] dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword']
rcon_ports = [] rcon_ports = []
for ns, v in dict_mapname.items(): for ns, v in dict_mapname.items():
print_line(f"переменные v и m {v} & {m}") print_line(f"переменные v и m {v} & {m}") # обьединить с таким же блоком в start()
if v in m: if v in m:
rcon_ports.append(ns) rcon_ports.append(ns)
print_line(f"Карта которая запускается {ns}") print_line(f"Карта которая запускается {ns}")

@ -1,55 +1,36 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from colorama import Fore, Style from colorama import Fore, Style
import os import os
import unittest
import time import time
from threading import Thread from threading import Thread
from pathlib import Path
def zero(x=""):
return 0
input = zero
import hlna import hlna
home_dir = Path.home()
config_hlna = f"{home_dir}/.config/hlna/"
"---------------import подменяем через unittest.mock -----------------------"
"---------------------------------------------------------------------------"
def config(): def config():
hlna.config() hlna.config()
def servers(): def servers():
x = input() x = os.system("./hlna.py servers >> /dev/null")
print('x=',x)
x = os.system("./hlna.py servers")
if x == 0: if x == 0:
print("Servers - "+Fore.GREEN + "OK" + Style.RESET_ALL) print("Servers - "+Fore.GREEN + "OK" + Style.RESET_ALL)
else: else:
print(Fore.RED + "Servers Fail" + Style.RESET_ALL) print(Fore.RED + "Servers Fail" + Style.RESET_ALL)
def delete(): def delete():
print("Delete - " + Fore.RED + "False" + Style.RESET_ALL) print("Delete - " + Fore.RED + "False" + Style.RESET_ALL)
class TestHlna(unittest.TestCase):
def setUp(self):
self.p1
def test_config(self):
pass
# self.assert _input(hlna.config(input(1), 11))
def test_servers(self):
pass
def test_enablemap(self):
passs
def test_start(self):
pass
def test_delete(self):
pass
def test_rcon(self):
pass
if __name__ == "__main__": if __name__ == "__main__":
#unittest.main()
#servers() servers()
config()
delete() delete()
config()
#print(f"{Fore.GREEN} + {text}") #print(f"{Fore.GREEN} + {text}")