чистка
This commit is contained in:
parent
bf2df5238c
commit
ffd37bad3c
91
hlna.py
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/"
|
||||||
|
Loading…
Reference in New Issue
Block a user