изменили работу status, изменили reconf, rename, printline
This commit is contained in:
parent
09edcffd1f
commit
4fed6b897c
131
hlna.py
131
hlna.py
@ -1,11 +1,13 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import os
|
import os
|
||||||
|
import pprint
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import zlib
|
import zlib
|
||||||
import time
|
import time
|
||||||
import struct
|
import struct
|
||||||
import curses
|
import curses
|
||||||
|
import pprint
|
||||||
import tarfile
|
import tarfile
|
||||||
import logging
|
import logging
|
||||||
import datetime
|
import datetime
|
||||||
@ -155,9 +157,10 @@ def print_line(*text, flag="", sep=" ", end="\n"):
|
|||||||
color = colorama.Fore.CYAN
|
color = colorama.Fore.CYAN
|
||||||
else:
|
else:
|
||||||
color = colorama.Fore.WHITE
|
color = colorama.Fore.WHITE
|
||||||
len_text = str(text)
|
|
||||||
|
len_text = str(*text)
|
||||||
len_text = len_text.split("\n")
|
len_text = len_text.split("\n")
|
||||||
max_length = max(len(string) for string in len_text) + 2
|
max_length = max(len(str(string)) for string in len_text) + 2
|
||||||
print(color + "." * max_length)
|
print(color + "." * max_length)
|
||||||
print(color, *text, sep=sep, end=end)
|
print(color, *text, sep=sep, end=end)
|
||||||
print(color + "." * max_length + colorama.Style.RESET_ALL)
|
print(color + "." * max_length + colorama.Style.RESET_ALL)
|
||||||
@ -288,11 +291,11 @@ def ports(port, ports_arr, flag):
|
|||||||
port = 27015
|
port = 27015
|
||||||
elif flag == 2:
|
elif flag == 2:
|
||||||
port = 23331
|
port = 23331
|
||||||
print_line("Port=", port, flag="CYAN")
|
print_line(f"Port={port}", flag="CYAN")
|
||||||
return port
|
return port
|
||||||
else:
|
else:
|
||||||
port = max(ports_arr) + 2
|
port = max(ports_arr) + 2
|
||||||
print_line("Port=", port, flag="CYAN")
|
print_line(f"Port={port}", flag="CYAN")
|
||||||
if port in ports_arr:
|
if port in ports_arr:
|
||||||
print_line("Порт уже занят", flag="RED")
|
print_line("Порт уже занят", flag="RED")
|
||||||
port = check_int("Введите новый порт")
|
port = check_int("Введите новый порт")
|
||||||
@ -388,10 +391,7 @@ def config_maps(i):
|
|||||||
|
|
||||||
def config_nameserver(map_s):
|
def config_nameserver(map_s):
|
||||||
while True:
|
while True:
|
||||||
name_exist_server = choose_map(g="ark", m=map_s)[-1] # вызывается когда не нужен, затем когда доходит до создания юнита в config_ark туда приходит не то имя, которое ожидалось
|
|
||||||
name_server = input("Укажите название Сервера: \n")
|
name_server = input("Укажите название Сервера: \n")
|
||||||
if name_exist_server != name_server:
|
|
||||||
os.system(f"mv {dir_unit}ark_{name_exist_server}.service {dir_unit}ark_{name_server}.service")
|
|
||||||
if name_server == "":
|
if name_server == "":
|
||||||
if map_s in list_config:
|
if map_s in list_config:
|
||||||
count = 1
|
count = 1
|
||||||
@ -414,9 +414,21 @@ def config_nameserver(map_s):
|
|||||||
if choose_reconf == "" or choose_reconf == "3":
|
if choose_reconf == "" or choose_reconf == "3":
|
||||||
exit()
|
exit()
|
||||||
elif choose_reconf == "1":
|
elif choose_reconf == "1":
|
||||||
|
new_nameserver = input("Укажите название Сервера: \n")
|
||||||
|
try:
|
||||||
|
if new_nameserver != name_server:
|
||||||
|
os.system(f"systemctl --user disable {dir_unit}ark_{name_server.lower()}.service")
|
||||||
|
os.system(f"rm {dir_unit}ark_{name_server.lower()}.service")
|
||||||
|
os.system(f"mv {dir_maps_ark}{name_server} {dir_maps_ark}{new_nameserver}")
|
||||||
|
return new_nameserver, True
|
||||||
|
else:
|
||||||
|
print_line("Вы ввели тоже имя.")
|
||||||
continue
|
continue
|
||||||
|
except Exception:
|
||||||
|
print_line(Exception)
|
||||||
elif choose_reconf == "2":
|
elif choose_reconf == "2":
|
||||||
config_ark(flag=True)
|
config_ark(flag=False)
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
print_line("Выберите ВОЗМОЖНОЕ действие")
|
print_line("Выберите ВОЗМОЖНОЕ действие")
|
||||||
else:
|
else:
|
||||||
@ -486,19 +498,20 @@ def config_ark(list_config=list_config, flag=False):
|
|||||||
|
|
||||||
id_mods_ark = ""
|
id_mods_ark = ""
|
||||||
cluster_server, cluster_id, cluster_dir_override = config_cluster()
|
cluster_server, cluster_id, cluster_dir_override = config_cluster()
|
||||||
|
count_maps = config_nummap()
|
||||||
if list_config:
|
if list_config:
|
||||||
print_line("Уже установленные карты: ", flag="CYAN")
|
print_line("Существующие активные карты: ", flag="CYAN")
|
||||||
for i in list_config:
|
for i in list_config:
|
||||||
data = read_yaml(g="ark", m=i)
|
data = read_yaml(g="ark", m=i)
|
||||||
print_line(f"Карта - {i} : Имя сервера {data['SessionName']}", flag="CYAN")
|
print_line(f"Карта - {data['map']} : Имя сервера {i}", flag="CYAN")
|
||||||
count_maps = config_nummap()
|
|
||||||
for i in range(count_maps):
|
for i in range(count_maps):
|
||||||
map_s, port_s, query_p, rcon_p = config_maps(i)
|
map_s, port_s, query_p, rcon_p = config_maps(i)
|
||||||
if flag:
|
if flag == True:
|
||||||
list_config = [reconf_yaml()]
|
reconf_yaml()
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
list_config = config_nameserver(map_s)
|
name_server, flag = config_nameserver(map_s)
|
||||||
|
if flag == False:
|
||||||
port_server = config_ports(port_s)
|
port_server = config_ports(port_s)
|
||||||
query_port = config_query(query_p)
|
query_port = config_query(query_p)
|
||||||
rcon_port = config_rcon(rcon_p)
|
rcon_port = config_rcon(rcon_p)
|
||||||
@ -508,9 +521,14 @@ def config_ark(list_config=list_config, flag=False):
|
|||||||
max_players = config_players()
|
max_players = config_players()
|
||||||
listen_server = config_listen()
|
listen_server = config_listen()
|
||||||
|
|
||||||
yaml_create("ark", "", cluster_server, map_s, list_config[-1], port_server, query_port,
|
yaml_create("ark", "", cluster_server, map_s, name_server, port_server, query_port,
|
||||||
rcon_enabled, rcon_port, adminpassword_server, password_server, max_players,
|
rcon_enabled, rcon_port, adminpassword_server, password_server, max_players,
|
||||||
id_mods_ark, cluster_id, cluster_dir_override, listen_server)
|
id_mods_ark, cluster_id, cluster_dir_override, listen_server)
|
||||||
|
data = read_yaml(g="ark", m=map_s)
|
||||||
|
yaml_create("ark", data['ServerPath'], data['Cluster'], data['map'], name_server, data['Port'],
|
||||||
|
data['QueryPort'], data['RCONEnabled'], data['RCONPort'], data['ServerAdminPassword'],
|
||||||
|
data['ServerPassword'],data['MaxPlayers'], id_mods_ark, data['clusterid'], data['clusterdir'],
|
||||||
|
data['Listen'])
|
||||||
|
|
||||||
|
|
||||||
def config_7daystodie():
|
def config_7daystodie():
|
||||||
@ -533,7 +551,7 @@ def config_7daystodie():
|
|||||||
@click.argument('g', nargs=1)
|
@click.argument('g', nargs=1)
|
||||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт")
|
@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт")
|
||||||
def config_backup(g, m):
|
def config_backup(g, m):
|
||||||
if g == "ark":
|
if g.lower() == "ark":
|
||||||
name_server = choose_map(g, m)
|
name_server = choose_map(g, m)
|
||||||
if m == "all":
|
if m == "all":
|
||||||
all_empty = True # флаг
|
all_empty = True # флаг
|
||||||
@ -889,44 +907,16 @@ def switch(g, m, e): # добавить all
|
|||||||
print_line("ошибка операции", flag="RED")
|
print_line("ошибка операции", flag="RED")
|
||||||
|
|
||||||
|
|
||||||
# Добавить возможность вывода информации по запрошенной игре + карте (серверу), а так же по всем.
|
|
||||||
@hlna.command(help='Выводит статус настроеных серверов')
|
@hlna.command(help='Выводит статус настроеных серверов')
|
||||||
def status(list_config=list_config):
|
@click.argument('g', nargs=1)
|
||||||
ext_ip = get_external_ip()
|
@click.option("-m", default='all', help="Название cервера")
|
||||||
if list_config == [] and delist_config == []:
|
def status(g, m="all", list_config=list_config):
|
||||||
print_line("Сервера не сконфигурированы", flag="RED")
|
"""print_status делает вывод, flag - отвечает за показ активных/неактивных, под 7days надо будет дописать"""
|
||||||
else:
|
def print_status(g, status_map, flag=True):
|
||||||
for i in list_config:
|
data = status_map
|
||||||
data = read_yaml(g="ark", m=i)
|
print_line(data["status"], flag=("YELLOW", "RED")[flag] if data['status'] == "Не запущен" else "GREEN")
|
||||||
x = os.system(f"lsof -w -i :{data['Port']}")
|
|
||||||
if x == 0:
|
|
||||||
print_line("Сервер запущен", flag="GREEN")
|
|
||||||
else:
|
|
||||||
print_line("Сервер не запущен", flag="RED")
|
|
||||||
|
|
||||||
# этот принт надо отдельной функцией сделать, чтобы убрать дублирование текста
|
|
||||||
|
|
||||||
print_line(f"""
|
print_line(f"""
|
||||||
Имя сервера: {i}
|
Имя сервера: {data['SessionName']}
|
||||||
Карта: {data['map']}
|
|
||||||
Моды: {data['ModsId']}
|
|
||||||
Пароль: {data['ServerPassword']}S
|
|
||||||
Кластер: {data['Cluster']}
|
|
||||||
Кластер id: {data['clusterid']}
|
|
||||||
Query порт: {data['QueryPort']}
|
|
||||||
Порт сервера: {data['Port']}
|
|
||||||
Rcon включен: {data['RCONEnabled']}
|
|
||||||
Rcon порт : {data['RCONPort']}
|
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}
|
|
||||||
steam://connect/{ext_ip}:{data['QueryPort']}""", flag="CYAN")
|
|
||||||
|
|
||||||
if delist_config != []:
|
|
||||||
x = input("Есть неактивные сервера, показать Y/n: ")
|
|
||||||
if x != "n":
|
|
||||||
for i in delist_config:
|
|
||||||
data = read_yaml(m=i,g="ark", flag=False)
|
|
||||||
print_line(f"""
|
|
||||||
Имя сервера: {i}
|
|
||||||
Карта: {data['map']}
|
Карта: {data['map']}
|
||||||
Моды: {data['ModsId']}
|
Моды: {data['ModsId']}
|
||||||
Пароль: {data['ServerPassword']}
|
Пароль: {data['ServerPassword']}
|
||||||
@ -936,8 +926,35 @@ def status(list_config=list_config):
|
|||||||
Порт сервера: {data['Port']}
|
Порт сервера: {data['Port']}
|
||||||
Rcon включен: {data['RCONEnabled']}
|
Rcon включен: {data['RCONEnabled']}
|
||||||
Rcon порт : {data['RCONPort']}
|
Rcon порт : {data['RCONPort']}
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}""", flag="YELLOW")
|
Максимальное кол-во игроков: {data['MaxPlayers']}
|
||||||
|
steam://connect/{get_external_ip()}:{data['QueryPort']}""", flag=("YELLOW","CYAN")[flag])
|
||||||
|
|
||||||
|
def get_param(g, list_con, flag=True):
|
||||||
|
for i in list_con:
|
||||||
|
data = read_yaml(g=g, m=i, flag=flag)
|
||||||
|
status_map["ark"][flag][data["SessionName"]] = data
|
||||||
|
status_map["ark"][flag][data["SessionName"]]['status'] = "Не запущен" if os.system(f"lsof -w -i :{data['Port']}") else "Запущен"
|
||||||
|
if list_config == [] and delist_config == []:
|
||||||
|
print_line("Сервера не сконфигурированы", flag="RED")
|
||||||
|
exit()
|
||||||
|
"Это скорее всего можно как то покрасивее записать, но пока так)"
|
||||||
|
status_map = {}
|
||||||
|
status_map["ark"] = {}
|
||||||
|
status_map["ark"][True] = {}
|
||||||
|
status_map["ark"][False] = {}
|
||||||
|
get_param("ark", list_config)
|
||||||
|
get_param("ark", delist_config, False)
|
||||||
|
if g == "ark":
|
||||||
|
name_servers = choose_map(g, m)
|
||||||
|
for i in name_servers:
|
||||||
|
print_status(g, status_map[g][True][i])
|
||||||
|
|
||||||
|
if delist_config != []:
|
||||||
|
x = input("Есть неактивные сервера, показать Y/n: ")
|
||||||
|
if x != "n":
|
||||||
|
for i in delist_config:
|
||||||
|
print_status(g, status_map[g][False][i], False)
|
||||||
|
return status_map
|
||||||
|
|
||||||
@hlna.command(help='Запуск, сконфигурированного сервера или кластера <hlna start ark -m all>')
|
@hlna.command(help='Запуск, сконфигурированного сервера или кластера <hlna start ark -m all>')
|
||||||
@click.argument('g', nargs=1)
|
@click.argument('g', nargs=1)
|
||||||
@ -1046,11 +1063,15 @@ def choose_map(g, m, list_config=list_config):
|
|||||||
print_line('Найдены сервера с этой картой', flag="CYAN")
|
print_line('Найдены сервера с этой картой', flag="CYAN")
|
||||||
for i, map in enumerate(name_servers):
|
for i, map in enumerate(name_servers):
|
||||||
print_line(f"{i + 1}) {map}", flag="CYAN")
|
print_line(f"{i + 1}) {map}", flag="CYAN")
|
||||||
|
print_line(f"{i + 2} Все", flag="CYAN")
|
||||||
|
x = None
|
||||||
if i != 0:
|
if i != 0:
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
||||||
x = [int(i) for i in x]
|
x = [int(j) for j in x]
|
||||||
|
if i + 2 in x:
|
||||||
|
return name_servers
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
print_line("Неправильный ввод", flag="RED")
|
print_line("Неправильный ввод", flag="RED")
|
||||||
|
Loading…
Reference in New Issue
Block a user