поправлен choose_map и всего по чут-чуть
This commit is contained in:
parent
56a39f2b84
commit
2a5e46a90d
128
hlna.py
128
hlna.py
@ -145,6 +145,8 @@ def print_line(*text, flag=""):
|
||||
color = colorama.Fore.GREEN
|
||||
elif flag == "CYAN":
|
||||
color = colorama.Fore.CYAN
|
||||
else:
|
||||
color = colorama.Fore.WHITE
|
||||
print(colorama.Fore.YELLOW + "." * 30)
|
||||
print(color, *text)
|
||||
print(colorama.Fore.YELLOW + "." * 30 + colorama.Style.RESET_ALL)
|
||||
@ -465,6 +467,7 @@ def yaml_create(g, dir_server="", cluster_server="", map_s="", name_server="", p
|
||||
|
||||
def systemd_unit_create(g, name_server=list_config, config_7days=""):
|
||||
"""Создаёт на основании yaml конфига systemd юнит"""
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
id_game = "376030"
|
||||
data = read_yaml(name_server, g="ark")
|
||||
@ -479,6 +482,8 @@ def systemd_unit_create(g, name_server=list_config, config_7days=""):
|
||||
unit_dir_server = dir_server_7days
|
||||
systemd_unit_exec = f"{dir_server_7days}startserver.sh -configfile={config_7days}.xml"
|
||||
unit_file = f"{dir_unit}7days.service".lower()
|
||||
else:
|
||||
print_line("Пока доступно 2 игры: ark и 7Days")
|
||||
|
||||
unit_text = f'''[Unit]
|
||||
Description={g}: Server
|
||||
@ -508,8 +513,9 @@ WantedBy=default.target
|
||||
@click.argument('g', nargs=1)
|
||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт")
|
||||
@click.option("-i/-u", default=True, help="-i установить/обновить моды, -u удалить моды")
|
||||
@click.argument('id_mods_ark', nargs=-1)
|
||||
@click.argument('id_mods_ark',required=True, nargs=-1)
|
||||
def mod(g, m, i, id_mods_ark):
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
check_exist_servers(g)
|
||||
if not os.path.isdir(dir_mods_ark):
|
||||
@ -544,10 +550,11 @@ def mod(g, m, i, id_mods_ark):
|
||||
else:
|
||||
print_line("Введите id модов через запятую без пробелов", flag="CYAN")
|
||||
else:
|
||||
print_line("Не поддерживаемая игра", flag="RED")
|
||||
print_line("Не поддерживаемая игра, возможно вы иммели ввиду ark?", flag="RED")
|
||||
|
||||
|
||||
def modupdate(g, m, id_mod, dir_mod_ark):
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
print_line(f"Проверяем обновление мода {id_mod}", flag="CYAN")
|
||||
with open(os.path.join(dir_mod_ark, f"appworkshop_346110.acf"), "r") as f:
|
||||
@ -594,6 +601,7 @@ def modupdateall(g, m):
|
||||
|
||||
def moddownload(g, m, id_mod, dir_mod_ark):
|
||||
"""Распаковывает файлы мода и создаёт .mod файл для него"""
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
id_game_workshop = "346110"
|
||||
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
|
||||
@ -664,9 +672,10 @@ def moddownload(g, m, id_mod, dir_mod_ark):
|
||||
|
||||
@hlna.command(help='Выключение/включение серверов (без удаления) <hlna switch -m all -d')
|
||||
@click.argument('g', nargs=1)
|
||||
@click.option("-m", required=False, help="Название cервера")
|
||||
@click.option("-m", required=True, help="Название cервера")
|
||||
@click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать")
|
||||
def switch(g, m, e): #добавить all
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
m = m.split(",")
|
||||
if not os.path.isdir(dir_deactivated):
|
||||
@ -674,39 +683,39 @@ def switch(g, m, e): #добавить all
|
||||
if e:
|
||||
port_s, query_p, rcon_p = ports_array()
|
||||
|
||||
state_config = list_config if e else delist_config
|
||||
state_msg = "активных" if e else "не активных"
|
||||
for i in m:
|
||||
try:
|
||||
if i in state_config:
|
||||
print_line(f"Карта {i} уже есть в {state_msg}", flag="CYAN")
|
||||
continue
|
||||
data = read_yaml(i, not e)
|
||||
if e:
|
||||
data['Port'] = ports(data['Port'], port_s, e)
|
||||
data['QueryPort'] = ports(data['QueryPort'], port_s, e)
|
||||
data['RCONPort'] = ports(data['RCONPort'], port_s, e)
|
||||
yaml_create("ark", data['ServerPath'], data['Cluster'], data['map'], data['SessionName'], data['Port'],
|
||||
data['QueryPort'], data['RCONEnabled'], data['RCONPort'], data['ServerAdminPassword'],
|
||||
data['ServerPassword'], data['MaxPlayers'], data['ModsId'], data['clusterid'], data['clusterdir'],
|
||||
data['Listen'])
|
||||
x = os.system(
|
||||
f"rm {dir_deactivated}{i} >> {dir_logs}{date} 2>&1")
|
||||
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||
f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n")# переписать эту залупу
|
||||
else:
|
||||
x = os.system(f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1")
|
||||
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||
f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n")
|
||||
if x == 0:
|
||||
print_line(f"Готов - {i}", flag="GREEN")
|
||||
#start = "start" if e else "stop"
|
||||
enable = "enable" if e else "disable"
|
||||
os.system(f"systemctl --user {enable} ark_{i}")
|
||||
else:
|
||||
print_line(f"Ошибка перемещения {i}", flag="RED")
|
||||
except:
|
||||
print_line("ошибка операции", flag="RED")
|
||||
state_config = list_config if e else delist_config
|
||||
state_msg = "активных" if e else "не активных"
|
||||
for i in m:
|
||||
try:
|
||||
if i in state_config:
|
||||
print_line(f"Карта {i} уже есть в {state_msg}", flag="CYAN")
|
||||
continue
|
||||
data = read_yaml(i, not e)
|
||||
if e:
|
||||
data['Port'] = ports(data['Port'], port_s, e)
|
||||
data['QueryPort'] = ports(data['QueryPort'], port_s, e)
|
||||
data['RCONPort'] = ports(data['RCONPort'], port_s, e)
|
||||
yaml_create("ark", data['ServerPath'], data['Cluster'], data['map'], data['SessionName'], data['Port'],
|
||||
data['QueryPort'], data['RCONEnabled'], data['RCONPort'], data['ServerAdminPassword'],
|
||||
data['ServerPassword'], data['MaxPlayers'], data['ModsId'], data['clusterid'], data['clusterdir'],
|
||||
data['Listen'])
|
||||
x = os.system(
|
||||
f"rm {dir_deactivated}{i} >> {dir_logs}{date} 2>&1")
|
||||
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||
f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n")# переписать эту залупу
|
||||
else:
|
||||
x = os.system(f"mv {dir_maps_ark}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1")
|
||||
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||
f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n")
|
||||
if x == 0:
|
||||
print_line(f"Готов - {i}", flag="GREEN")
|
||||
#start = "start" if e else "stop"
|
||||
enable = "enable" if e else "disable"
|
||||
os.system(f"systemctl --user {enable} ark_{i}")
|
||||
else:
|
||||
print_line(f"Ошибка перемещения {i}", flag="RED")
|
||||
except:
|
||||
print_line("ошибка операции", flag="RED")
|
||||
|
||||
|
||||
@hlna.command(help='Выводит статус настроеных серверов')
|
||||
@ -763,6 +772,7 @@ def start(g, m):
|
||||
"""Запускает сервер выбранной игры"""
|
||||
# добавить проверку на ввод аргумента ark/7day если else: давать подсказку
|
||||
# если нет конфигов, то выводим что серверов нет
|
||||
g = g.lower()
|
||||
modupdateall(g, m)
|
||||
start_stop("start", g, m)
|
||||
|
||||
@ -771,6 +781,7 @@ def start(g, m):
|
||||
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
|
||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
||||
def stop(g, m):
|
||||
g = g.lower()
|
||||
start_stop("stop", g, m)
|
||||
|
||||
|
||||
@ -778,12 +789,14 @@ def stop(g, m):
|
||||
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
|
||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
||||
def restart(g, m):
|
||||
g = g.lower()
|
||||
modupdateall(g, m)
|
||||
start_stop("restart", g, m)
|
||||
|
||||
|
||||
def check_exist_servers(g):
|
||||
"""Проверяет наличие конфигов для активных карт"""
|
||||
g = g.lower()
|
||||
if g == "ark" and not list_config:
|
||||
print_line("Нет сконфигурированных серверов", flag="RED") # добавить отсюда вилку на вопрос с конфигурацией
|
||||
elif g == "7days":
|
||||
@ -794,11 +807,11 @@ def check_exist_servers(g):
|
||||
|
||||
def start_stop(action, g, m):
|
||||
"""Функция изменения статусов сервера"""
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
x = check_exist_servers(g)
|
||||
if x:
|
||||
name_servers = choose_map(g,m) if m !='all' else list_config
|
||||
print("name_servers=",name_servers)
|
||||
for i in name_servers:
|
||||
data = read_yaml(i, g="ark", flag=True)
|
||||
if action == "stop" or action == "restart":
|
||||
@ -811,10 +824,13 @@ def start_stop(action, g, m):
|
||||
x = os.system(f"systemctl --user {action} 7days.service")
|
||||
if x == 0:
|
||||
print_line("Готово", flag="GREEN")
|
||||
else:
|
||||
print_line("доступные игры: ark и 7days")
|
||||
|
||||
|
||||
def read_yaml(list_config=list_config, flag=True, m="", g=""):
|
||||
"""Читает конфиги активных или неактивных карт в зависимости от флага и отдаёт данные туда где их запросили"""
|
||||
g = g.lower()
|
||||
if g == "ark":
|
||||
if m == "all":
|
||||
list_config=list_config
|
||||
@ -828,6 +844,8 @@ def read_yaml(list_config=list_config, flag=True, m="", g=""):
|
||||
|
||||
def choose_map(g, m, list_config=list_config):
|
||||
"""Функция выбора карт"""
|
||||
g = g.lower()
|
||||
new_arr = []
|
||||
if g == "ark":
|
||||
dict_mapname = {}
|
||||
dict_allmapname = []
|
||||
@ -841,25 +859,29 @@ def choose_map(g, m, list_config=list_config):
|
||||
name_servers.append(ns)
|
||||
if list_config != []: # Перенести выше для проверки наличия конфигов
|
||||
if m == "all":
|
||||
name_servers = dict_allmapname
|
||||
new_arr = dict_allmapname
|
||||
print_line(f"Выполняется для карт(-ы) {name_servers}", flag="CYAN")
|
||||
else:
|
||||
name_servers = sorted(name_servers)
|
||||
print_line('Найдены сервера с этой картой', flag="CYAN")
|
||||
for i, map in enumerate(name_servers):
|
||||
print_line(f"{i + 1}) {map}", flag="CYAN")
|
||||
while True:
|
||||
try:
|
||||
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
||||
x = [int(i) for i in x]
|
||||
break
|
||||
except:
|
||||
print_line("Неправильный ввод", flag="RED")
|
||||
for i in x:
|
||||
name_servers.append(name_servers[i - 1])
|
||||
print_line(f"Выбранные сервера: {name_servers}", flag="CYAN")
|
||||
if name_servers:
|
||||
name_servers = sorted(name_servers)
|
||||
print_line('Найдены сервера с этой картой', flag="CYAN")
|
||||
for i, map in enumerate(name_servers):
|
||||
print_line(f"{i + 1}) {map}", flag="CYAN")
|
||||
while True:
|
||||
try:
|
||||
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
||||
x = [int(i) for i in x]
|
||||
break
|
||||
except:
|
||||
print_line("Неправильный ввод", flag="RED")
|
||||
print(name_servers)
|
||||
for i in x:
|
||||
new_arr.append(name_servers[i - 1])
|
||||
print_line(f"Выбранные сервера: {name_servers}", flag="CYAN")
|
||||
else:
|
||||
print_line("Не найдено серверов с картой")
|
||||
|
||||
return name_servers
|
||||
return new_arr
|
||||
|
||||
|
||||
@hlna.command(help='Отправка команд на игровой сервер через rcon <rcon SaveWorld -m all>')
|
||||
|
Loading…
Reference in New Issue
Block a user