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