чистка

This commit is contained in:
sitisll 2023-05-15 17:12:51 +03:00
parent bf2df5238c
commit ffd37bad3c

91
hlna.py

@ -132,7 +132,7 @@ def create_dir(directory):
def print_line(*text): def print_line(*text):
"""Добавление тире вокруг текста, покраска""" """Добавление тире вокруг текста, покраска"""
print(colorama.Fore.YELLOW + "-" * 30) print(colorama.Fore.YELLOW + "-" * 30)
print(f"{colorama.Fore.GREEN} + {text}") print(colorama.Fore.GREEN, *text)
print(colorama.Fore.YELLOW + "-" * 30 + colorama.Style.RESET_ALL) print(colorama.Fore.YELLOW + "-" * 30 + colorama.Style.RESET_ALL)
@ -151,6 +151,7 @@ def check_int(number=""):
@hlna.command(help='Сбор настроек для сервера или кластера') @hlna.command(help='Сбор настроек для сервера или кластера')
def config(): def config():
"Выбор игры для создания сервера"
while True: while True:
count_game = check_int("""Выберите игру для конфигурирования count_game = check_int("""Выберите игру для конфигурирования
1. ARK Survival Evolved 1. ARK Survival Evolved
@ -158,19 +159,17 @@ def config():
: """) : """)
if count_game == 1: if count_game == 1:
config_ark() config_ark()
break
elif count_game == 2: elif count_game == 2:
config_7daystodie() config_7daystodie()
break
else: else:
print_line("Пока есть только ARK и 7Days xD") print_line("Пока есть только ARK и 7Days xD")
def config_ark(list_config=list_config): def config_ark(list_config=list_config):
"конфигурирование сервера арк"
create_dir(dir_server_ark) create_dir(dir_server_ark)
create_dir(dir_maps_ark) create_dir(dir_maps_ark)
"""Сбор данных для конфига""" """Сбор данных для конфига"""
data = {}
port_s = [] port_s = []
rcon_p = [] rcon_p = []
query_p = [] query_p = []
@ -184,9 +183,14 @@ def config_ark(list_config=list_config):
: """) : """)
if count_cluster == 1: if count_cluster == 1:
cluster_server = True cluster_server = True
while True:
cluster_id = input("Укажите id для кластера, любое сочетание символов: \n") cluster_id = input("Укажите id для кластера, любое сочетание символов: \n")
if cluster_id == '':
print("Введите символы: ")
else:
create_dir(dir_server_ark + cluster_id) create_dir(dir_server_ark + cluster_id)
cluster_dir_override = (dir_server_ark + cluster_id) cluster_dir_override = (dir_server_ark + cluster_id)
break
else: else:
cluster_server = False cluster_server = False
@ -223,11 +227,11 @@ def config_ark(list_config=list_config):
break break
if list_config: if list_config:
for i in list_config: for k in list_config:
data = read_yaml(i, game="ARK") data_port = read_yaml(k, game="ARK")
port_s.append(data['Port']) port_s.append(data_port['Port'])
rcon_p.append(data['RCONPort']) rcon_p.append(data_port['RCONPort'])
query_p.append(data['QueryPort']) query_p.append(data_port['QueryPort'])
if amount_map == 1: if amount_map == 1:
map_s = "TheIsland" map_s = "TheIsland"
@ -329,16 +333,16 @@ def config_ark(list_config=list_config):
else: else:
listen_server = True listen_server = True
yaml_create(game := "ARK", dir_server := "", cluster_server, map_s, list_config[-1], port_server, query_port, yaml_create("ARK", "", cluster_server, map_s, list_config[-1], port_server, query_port,
rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id,
cluster_dir_override, listen_server) cluster_dir_override, listen_server)
def config_7daystodie(): def config_7daystodie():
list_simvols = "$@-.%{}+/".split() "конфигурирование сервера 7 days to die"
list_simvols = ("$","@","-",".","%","{","}","+","/")
create_dir(dir_server_7days) create_dir(dir_server_7days)
print("Введите имя конфига (serverconfig):\n") config_7days = input("Введите имя конфига (serverconfig):\n")
config_7days = input()
if config_7days == "": if config_7days == "":
config_7days = "serverconfig" config_7days = "serverconfig"
elif config_7days == "serverconfig": elif config_7days == "serverconfig":
@ -347,10 +351,11 @@ def config_7daystodie():
print_line("Запрещённые символы") print_line("Запрещённые символы")
else: else:
xml_parser() xml_parser()
systemd_unit_create(game := "7Days", config_7days) systemd_unit_create("7Days", config_7days)
def xml_parser(): def xml_parser():
"добавить документацию"
print("Я не умею парсить))") print("Я не умею парсить))")
@ -358,9 +363,8 @@ def yaml_create(game, dir_server="", cluster_server="", map_s="", name_server=""
rcon_enabled="", rcon_port="", rcon_enabled="", rcon_port="",
adminpassword_server="", password_server="", max_players="", id_mods_ark="", cluster_id="", adminpassword_server="", password_server="", max_players="", id_mods_ark="", cluster_id="",
cluster_dir_override="", listen_server=""): cluster_dir_override="", listen_server=""):
"добавить документацию"
if game == "ARK": if game == "ARK":
print_line(dir_maps_ark)
print_line(name_server)
path_yaml = dir_maps_ark + name_server path_yaml = dir_maps_ark + name_server
settings = [ settings = [
{ {
@ -397,7 +401,7 @@ def yaml_create(game, dir_server="", cluster_server="", map_s="", name_server=""
def systemd_unit_create(game, config_7days="", name_server=list_config): def systemd_unit_create(game, config_7days="", name_server=list_config):
print_line(systemd_unit_create) "добавить документацию"
if game == "ARK": if game == "ARK":
id_game = "376030" id_game = "376030"
for i in name_server: for i in name_server:
@ -444,17 +448,16 @@ WantedBy=default.target
@click.option("-i/-u", default=True, help="-i установить моды, -u удалить моды") @click.option("-i/-u", default=True, help="-i установить моды, -u удалить моды")
@click.argument('id_mods_ark', nargs=-1) @click.argument('id_mods_ark', nargs=-1)
def mod(g, m, i, id_mods_ark): def mod(g, m, i, id_mods_ark):
"добавить документацию"
if g == "ark": if g == "ark":
id_game_workshop = "346110" id_game_workshop = "346110"
if not os.path.isdir(dir_workshop_ark): if not os.path.isdir(dir_workshop_ark):
create_dir(dir_workshop_ark) create_dir(dir_workshop_ark)
id_mods_ark = id_mods_ark[0].split(',') id_mods_ark = id_mods_ark[0].split(',')
print_line(id_mods_ark)
for id_mod in id_mods_ark: for id_mod in id_mods_ark:
dir_ark_mods = f"{dir_mods_ark}/{id_mod}" dir_ark_mods = f"{dir_mods_ark}/{id_mod}"
if i: if i:
os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit") os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit")
print_line("вызов экстракт")
modextract(id_mod, id_game_workshop, dir_ark_mods) modextract(id_mod, id_game_workshop, dir_ark_mods)
else: else:
os.system(f"rm -rf {dir_ark_mods}") os.system(f"rm -rf {dir_ark_mods}")
@ -464,12 +467,11 @@ def mod(g, m, i, id_mods_ark):
def modextract(id_mod, id_game_workshop, dir_ark_mods): def modextract(id_mod, id_game_workshop, dir_ark_mods):
print_line(id_mod) "добавить документацию"
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor" dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
dir_extract = dir_ark_mods dir_extract = dir_ark_mods
if id_mod == "111111111": if id_mod == "111111111":
return return
try: try:
for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)): for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)):
for file in files: for file in files:
@ -483,19 +485,19 @@ def modextract(id_mod, id_game_workshop, dir_ark_mods):
os.remove(src) os.remove(src)
if os.path.isfile(uncompressed): if os.path.isfile(uncompressed):
os.remove(uncompressed) os.remove(uncompressed)
except (UnpackException, SignatureUnpackException, CorruptUnpackException) as e: except Exception as e:
print(e)
print("[x] Unpacking .z files failed, aborting mod install") print("[x] Unpacking .z files failed, aborting mod install")
return False return False
os.system(f"rm -rf {dir_ark_mods}") os.system(f"rm -rf {dir_ark_mods}")
os.system(f"mv -f {dir_steam_workshop} {dir_ark_mods}") os.system(f"mv -f {dir_steam_workshop} {dir_ark_mods}")
modname = subprocess.check_output( modname = subprocess.check_output(['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8')
['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8')
modname = re.search(r'<div class="workshopItemTitle">(.+)</div>', modname) modname = re.search(r'<div class="workshopItemTitle">(.+)</div>', modname)
modname = modname and modname.group(1) modname = modname and modname.group(1)
if os.path.isfile(f"{dir_ark_mods}.mod"): if os.path.isfile(f"{dir_ark_mods}.mod"):
print_line(id_mod)
os.remove(f"{dir_ark_mods}.mod") os.remove(f"{dir_ark_mods}.mod")
with open(f"{dir_extract}/mod.info", "rb") as modinfo: with open(f"{dir_extract}/mod.info", "rb") as modinfo:
@ -539,7 +541,7 @@ def enablemap(m, e):
m = m.split(",") m = m.split(",")
if not os.path.isdir(dir_deactivated): if not os.path.isdir(dir_deactivated):
create_dir(dir_deactivated) create_dir(dir_deactivated)
if e == True: if e:
port_s = [] port_s = []
query_p = [] query_p = []
for k in list_config: for k in list_config:
@ -566,11 +568,8 @@ def enablemap(m, e):
print(f"Карта активирована - {i}") print(f"Карта активирована - {i}")
else: else:
print(f"{i} либо уже активирована, либо такой карты нет") print(f"{i} либо уже активирована, либо такой карты нет")
finally: except:
pass print("ошибка при активации карты")
# except:
# print("ошибка при активации карты")
# pass
else: else:
for i in m: for i in m:
try: try:
@ -586,14 +585,15 @@ def enablemap(m, e):
else: else:
print(f"{i} либо деактивирована, либо такой карты нет") print(f"{i} либо деактивирована, либо такой карты нет")
except: except:
pass print("ошибка при деактивации карты")
@hlna.command() @hlna.command()
def status(list_config=list_config): def status(list_config=list_config):
"добавить документацию"
# Добавить сортивку по кластерам и вывод несколько столбиков # Добавить сортивку по кластерам и вывод несколько столбиков
if list_config == [] and delist_config == []: if list_config == [] and delist_config == []:
print("Сервера не сконфигурированы") print_line("Сервера не сконфигурированы")
else: else:
for i in list_config: for i in list_config:
data = read_yaml(i, game="ARK") data = read_yaml(i, game="ARK")
@ -606,7 +606,7 @@ def status(list_config=list_config):
Имя сервера: {i} Имя сервера: {i}
Карта: {data['map']} Карта: {data['map']}
Моды: {data['ModsId']} Моды: {data['ModsId']}
Пароль: {data['ServerPassword']} Пароль: {data['ServerPassword']}S
Кластер: {data['Cluster']} Кластер: {data['Cluster']}
Кластер id: {data['clusterid']} Кластер id: {data['clusterid']}
Query порт: {data['QueryPort']} Query порт: {data['QueryPort']}
@ -637,27 +637,35 @@ def status(list_config=list_config):
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера') @hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
@click.option('-g', help="Название игры для запуска. (ark, 7days") @click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def start(g, m): def start(g, m):
"добавить документацию"
#добавить проверку на ввод аргумента ark/7day если else: давать подсказку
#если нет конфигов, то выводим что серверов нет
start_stop("start", g, m) start_stop("start", g, m)
@hlna.command(help='Для остановки, сконфигурированного сервера или кластера') @hlna.command(help='Для остановки, сконфигурированного сервера или кластера')
@click.option('-g', help="Название игры для запуска. (ark, 7days") @click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def stop(g, m): def stop(g, m):
"добавить документацию"
#добавить проверку на ввод аргумента ark/7day если else: давать подсказку
#если нет конфигов, то выводим что серверов нет
start_stop("stop", g, m) start_stop("stop", g, m)
@hlna.command(help='Для перезапуска, сконфигурированного сервера или кластера') @hlna.command(help='Для перезапуска, сконфигурированного сервера или кластера')
@click.option('-g', help="Название игры для запуска. (ark, 7days") @click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
def restart(g, m): def restart(g, m):
"добавить документацию"
start_stop("restart", g, m) start_stop("restart", g, m)
def start_stop(action, g, m, list_config=list_config): def start_stop(action, g, m, list_config=list_config):
"добавить документацию"
if g == "ark": if g == "ark":
dict_mapname = {} dict_mapname = {}
dict_allmapname = [] dict_allmapname = []
@ -680,7 +688,6 @@ def start_stop(action, g, m, list_config=list_config):
y = os.system( y = os.system(
f"~/git/hln-a/hlna.py rcon SaveWorld -m {i}") if action == "restart" or action == "stop" else "" f"~/git/hln-a/hlna.py rcon SaveWorld -m {i}") if action == "restart" or action == "stop" else ""
x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service") x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service")
print_line(y)
if x == 0: if x == 0:
print_line("Готово") print_line("Готово")
else: else:
@ -692,6 +699,7 @@ def start_stop(action, g, m, list_config=list_config):
def read_yaml(list_config=list_config, flag=True, game=""): def read_yaml(list_config=list_config, flag=True, game=""):
"добавить документацию"
# Читаем конфиги активных или неактивных карт в зависимости от флага # Читаем конфиги активных или неактивных карт в зависимости от флага
if game == "ARK": if game == "ARK":
path_yaml = f"{dir_maps_ark}{list_config}" if flag else f"{dir_deactivated}{list_config}" path_yaml = f"{dir_maps_ark}{list_config}" if flag else f"{dir_deactivated}{list_config}"
@ -703,6 +711,7 @@ def read_yaml(list_config=list_config, flag=True, game=""):
def choose_map(arr): def choose_map(arr):
"добавить документацию"
new_arr = [] new_arr = []
arr = sorted(arr) arr = sorted(arr)
print('Найдены сервера с этой картой') print('Найдены сервера с этой картой')
@ -727,8 +736,7 @@ def choose_map(arr):
@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(f"Команда: , {c}") "добавить документацию"
print_line(f"Карты: , {m}")
dict_mapname = {} dict_mapname = {}
dict_adminpwd = {} dict_adminpwd = {}
if list_config: if list_config:
@ -742,7 +750,6 @@ def rcon(m, c):
rcon_ports.append(rcon_p) rcon_ports.append(rcon_p)
else: else:
for rcon_p, name_map in dict_mapname.items(): for rcon_p, name_map in dict_mapname.items():
print_line(f"переменные name_map и m {name_map} & {m}") # обьединить с таким же блоком в start()
if name_map in m: if name_map in m:
rcon_ports.append(rcon_p) rcon_ports.append(rcon_p)
print_line(f"Карта которая запускается {name_map}") print_line(f"Карта которая запускается {name_map}")
@ -757,6 +764,7 @@ def rcon(m, c):
def zero(x=""): def zero(x=""):
"Потом пригодится"
return "" return ""
@ -767,7 +775,6 @@ else:
if data['path_server'] == "": if data['path_server'] == "":
path_server() path_server()
else: else:
print_line(data['path_server'])
dir_server = data['path_server'] dir_server = data['path_server']
dir_unit = f"{home_dir}/.config/systemd/user/" dir_unit = f"{home_dir}/.config/systemd/user/"