Revert "change if else and fix function servers"
This reverts commit d4eece79e3a7f904a5424a98c68b626c8075ec1a.
This commit is contained in:
parent
fdccb54b45
commit
cbecbcecda
0
LICENSE.md
Executable file → Normal file
0
LICENSE.md
Executable file → Normal file
0
README.md
Executable file → Normal file
0
README.md
Executable file → Normal file
276
hlna.py
276
hlna.py
@ -1,23 +1,28 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import os
|
import os
|
||||||
import time
|
import datetime
|
||||||
import threading
|
|
||||||
|
|
||||||
from pathlib import Path
|
|
||||||
from pprint import pprint
|
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
import click
|
import click
|
||||||
import colorama
|
import colorama
|
||||||
import click_completion
|
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
from rcon.source import Client
|
from rcon.source import Client
|
||||||
|
|
||||||
home_dir = Path.home()
|
home_dir = Path.home()
|
||||||
dir_server = f"{home_dir}/ARK_Servers/"
|
dir_server = f"{home_dir}/Servers/"
|
||||||
dir_config = f"{home_dir}/.config/hlna/maps/"
|
dir_server_ark = f"{dir_server}/ARK/"
|
||||||
|
server_dir = f"{dir_server_ark}ShooterGame/Binaries/Linux/"
|
||||||
|
dir_unit = f"{home_dir}/.config/systemd/user/"
|
||||||
|
dir_config = f"{home_dir}/.config/hlna/"
|
||||||
|
dir_logs = f"{dir_config}logs/"
|
||||||
|
dir_maps = f"{dir_config}maps/"
|
||||||
|
dir_deactivated = f"{dir_maps}deactivated/"
|
||||||
|
|
||||||
mods_id = ""
|
mods_id = ""
|
||||||
listen_server = True
|
now = datetime.datetime.now()
|
||||||
|
date = now.strftime("%Y-%m-%d")
|
||||||
|
time = now.strftime("%H:%M:%S")
|
||||||
|
|
||||||
|
|
||||||
@click.group()
|
@click.group()
|
||||||
@ -25,6 +30,20 @@ def hlna():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def create_dir(directory):
|
||||||
|
"""Проверка и создание директории"""
|
||||||
|
if not os.path.exists(directory):
|
||||||
|
os.mkdir(directory)
|
||||||
|
|
||||||
|
|
||||||
|
create_dir(dir_server)
|
||||||
|
create_dir(dir_server_ark)
|
||||||
|
create_dir(dir_unit)
|
||||||
|
create_dir(dir_config)
|
||||||
|
create_dir(dir_logs)
|
||||||
|
create_dir(dir_maps)
|
||||||
|
|
||||||
|
|
||||||
def find_file(path):
|
def find_file(path):
|
||||||
"""Находим все конфиги в зависимости от пути"""
|
"""Находим все конфиги в зависимости от пути"""
|
||||||
arr = next(os.walk(path), (None, None, []))[2] # [] if no file
|
arr = next(os.walk(path), (None, None, []))[2] # [] if no file
|
||||||
@ -37,28 +56,17 @@ def find_file(path):
|
|||||||
return arr
|
return arr
|
||||||
|
|
||||||
|
|
||||||
list_config = find_file(dir_config)
|
list_config = find_file(dir_maps)
|
||||||
delist_config = find_file(dir_config+"deactivated")
|
delist_config = find_file(dir_deactivated)
|
||||||
|
|
||||||
|
|
||||||
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(f"{colorama.Fore.GREEN} + {text}")
|
||||||
print(colorama.Fore.YELLOW + "-"*30 + colorama.Style.RESET_ALL)
|
print(colorama.Fore.YELLOW + "-" * 30 + colorama.Style.RESET_ALL)
|
||||||
|
|
||||||
|
|
||||||
def create_dir(directory):
|
|
||||||
"""Проверка и создание директории"""
|
|
||||||
if not os.path.exists(directory):
|
|
||||||
os.mkdir(directory)
|
|
||||||
if not os.path.exists(f"{home_dir}/.config/hlna/"):
|
|
||||||
os.chdir(f"{home_dir}/.config/")
|
|
||||||
os.mkdir("hlna")
|
|
||||||
if not os.path.exists(f"{home_dir}/.config/hlna/maps"):
|
|
||||||
os.chdir(f"{home_dir}/.config/hlna/")
|
|
||||||
os.mkdir("maps")
|
|
||||||
|
|
||||||
def check_int(number=""):
|
def check_int(number=""):
|
||||||
"""Проверка на ввод числа"""
|
"""Проверка на ввод числа"""
|
||||||
while True:
|
while True:
|
||||||
@ -69,28 +77,36 @@ def check_int(number=""):
|
|||||||
x = int(x)
|
x = int(x)
|
||||||
return x
|
return x
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Введите число")
|
print_line("Введите число")
|
||||||
|
|
||||||
|
|
||||||
create_dir(dir_server)
|
@hlna.command(help='Сбор настроек для сервера или кластера')
|
||||||
create_dir(dir_config)
|
def config():
|
||||||
|
while True:
|
||||||
|
count_server = check_int("""Выберите игру для конфигурирования
|
||||||
|
1. ARK Survival Evolved
|
||||||
|
: """)
|
||||||
|
if count_server == 1:
|
||||||
|
config_ark()
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print_line("Пока есть только ARK xD")
|
||||||
|
|
||||||
|
|
||||||
@hlna.command(help='Для конфигурирования параметров запускаемого сервера или кластера серверов')
|
def config_ark(list_config=list_config):
|
||||||
def config(list_config=list_config):
|
"""Сбор данных для конфига"""
|
||||||
data = {}
|
data = {}
|
||||||
port_s = []
|
port_s = []
|
||||||
rcon_p = []
|
rcon_p = []
|
||||||
query_p = []
|
query_p = []
|
||||||
|
|
||||||
cluster_id = ""
|
cluster_id = ""
|
||||||
cluster_dir_override = ""
|
cluster_dir_override = ""
|
||||||
|
|
||||||
count_cluster = check_int("""Укажите требуется ли кластер?
|
count_cluster = check_int("""Укажите требуется ли кластер?
|
||||||
1. Да
|
1. Да
|
||||||
2. Нет
|
2. Нет
|
||||||
: """)
|
: """)
|
||||||
|
|
||||||
if count_cluster == 1:
|
if count_cluster == 1:
|
||||||
cluster_server = True
|
cluster_server = True
|
||||||
cluster_id = input("Укажите id для кластера, любое сочетание символов: \n")
|
cluster_id = input("Укажите id для кластера, любое сочетание символов: \n")
|
||||||
@ -104,17 +120,14 @@ def config(list_config=list_config):
|
|||||||
for i in list_config:
|
for i in list_config:
|
||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
print(f"{i} : {data['map']}")
|
print(f"{i} : {data['map']}")
|
||||||
# id_srv[data['SessionName']] = data['id_server']
|
|
||||||
|
|
||||||
count_maps = check_int("Укажите количество карт: \n")
|
count_maps = check_int("Укажите количество карт: \n")
|
||||||
if count_maps == 0: # 0 возвращает check_int когда, ничего не было введено
|
if count_maps == 0: # 0 возвращает check_int когда, ничего не было введено
|
||||||
count_maps = 1
|
count_maps = 1
|
||||||
|
|
||||||
for i in range(count_maps):
|
for i in range(count_maps):
|
||||||
while True:
|
while True:
|
||||||
"Проверка на выбор карты из списка"
|
"Проверка на выбор карты из списка"
|
||||||
|
|
||||||
# os.system("clear")
|
|
||||||
amount_map = check_int("""Выберите карту из списка указав номер
|
amount_map = check_int("""Выберите карту из списка указав номер
|
||||||
1. The Island
|
1. The Island
|
||||||
2. The Center
|
2. The Center
|
||||||
@ -180,11 +193,10 @@ def config(list_config=list_config):
|
|||||||
if port in ports_arr:
|
if port in ports_arr:
|
||||||
print("Порт уже занят")
|
print("Порт уже занят")
|
||||||
else:
|
else:
|
||||||
return port
|
return port
|
||||||
|
|
||||||
if list_config:
|
if list_config:
|
||||||
data = read_yaml(list_config[-1])
|
data = read_yaml(list_config[-1])
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
name_server = input("Укажите название Сервера: \n")
|
name_server = input("Укажите название Сервера: \n")
|
||||||
if name_server == "":
|
if name_server == "":
|
||||||
@ -194,7 +206,6 @@ def config(list_config=list_config):
|
|||||||
while new_name in list_config:
|
while new_name in list_config:
|
||||||
new_name = f"{map_s}{str(count)}"
|
new_name = f"{map_s}{str(count)}"
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
list_config.append(new_name)
|
list_config.append(new_name)
|
||||||
print(list_config)
|
print(list_config)
|
||||||
break
|
break
|
||||||
@ -203,20 +214,19 @@ def config(list_config=list_config):
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
if name_server in list_config:
|
if name_server in list_config:
|
||||||
print("Имя занято")
|
print_line("Имя занято")
|
||||||
else:
|
else:
|
||||||
list_config.append(name_server) # если enter, то ставим последним элементом карту
|
list_config.append(name_server) # если enter, то ставим последним элементом карту
|
||||||
break
|
break
|
||||||
|
|
||||||
print("Укажите порт сервера:\n")
|
print("Укажите порт сервера:\n")
|
||||||
port_server = ports(port_s)
|
port_server = ports(port_s)
|
||||||
print("Укажите query порт сервера:\n")
|
print("Укажите query порт сервера:\n")
|
||||||
query_port = ports(query_p)
|
query_port = ports(query_p)
|
||||||
|
|
||||||
if port_server == 0:
|
if port_server == 0:
|
||||||
port_server = 7777
|
port_server = 7777
|
||||||
if query_port == 0:
|
if query_port == 0:
|
||||||
query_port = 27015
|
query_port = 27015
|
||||||
|
|
||||||
print("Порт Сервера=", port_server)
|
print("Порт Сервера=", port_server)
|
||||||
print("Query Port=", query_port)
|
print("Query Port=", query_port)
|
||||||
|
|
||||||
@ -231,41 +241,87 @@ def config(list_config=list_config):
|
|||||||
max_players = check_int("Укажите максимальное количество игроков: \n")
|
max_players = check_int("Укажите максимальное количество игроков: \n")
|
||||||
if max_players == 0:
|
if max_players == 0:
|
||||||
max_players = 70
|
max_players = 70
|
||||||
|
|
||||||
yaml_create(cluster_server, map_s, list_config[-1], port_server, query_port, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override)
|
print("Передавать сервер в глобальный список серверов steam?")
|
||||||
|
listen_server_amount = check_int("""\n
|
||||||
|
1. Да
|
||||||
|
2. Нет
|
||||||
|
:""")
|
||||||
|
if listen_server_amount == 1:
|
||||||
|
listen_server = True
|
||||||
|
elif listen_server_amount == 2:
|
||||||
|
listen_server = False
|
||||||
|
else:
|
||||||
|
listen_server = True
|
||||||
|
|
||||||
|
yaml_create(cluster_server, map_s, list_config[-1], port_server, query_port, rcon_enabled, rcon_port,
|
||||||
|
adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override, listen_server)
|
||||||
|
|
||||||
|
|
||||||
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override):
|
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rcon_enabled, rcon_port,
|
||||||
|
adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override, listen_server):
|
||||||
settings_hlna = [
|
settings_hlna = [
|
||||||
{
|
{
|
||||||
'map' : map_s,
|
'map': map_s,
|
||||||
'Cluster' : cluster_server,
|
'Cluster': cluster_server,
|
||||||
'SessionName' : name_server,
|
'SessionName': name_server,
|
||||||
'Port' : port_server,
|
'Port': port_server,
|
||||||
'QueryPort' : query_port,
|
'QueryPort': query_port,
|
||||||
'RCONEnabled' : rcon_enabled,
|
'RCONEnabled': rcon_enabled,
|
||||||
'RCONPort' : rcon_port,
|
'RCONPort': rcon_port,
|
||||||
'ServerAdminPassword': adminpassword_server,
|
'ServerAdminPassword': adminpassword_server,
|
||||||
'ServerPassword' : password_server,
|
'ServerPassword': password_server,
|
||||||
'MaxPlayers' : max_players,
|
'MaxPlayers': max_players,
|
||||||
'ModsId' : mods_id,
|
'ModsId': mods_id,
|
||||||
'Listen' : listen_server,
|
'Listen': listen_server,
|
||||||
'ServerPath' : dir_server,
|
'ServerPath': dir_server,
|
||||||
'clusterid' : cluster_id,
|
'clusterid': cluster_id,
|
||||||
'clusterdir' : cluster_dir_override
|
'clusterdir': cluster_dir_override
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
with open(dir_config + f"{name_server}", 'w') as yamlfile:
|
with open(dir_maps + f"{name_server}", 'w') as yamlfile:
|
||||||
yaml.dump(settings_hlna, yamlfile)
|
yaml.dump(settings_hlna, yamlfile)
|
||||||
print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL)
|
print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL)
|
||||||
|
systemd_unit_create()
|
||||||
|
|
||||||
|
|
||||||
|
def systemd_unit_create(name_server=list_config):
|
||||||
|
for i in name_server:
|
||||||
|
data = read_yaml(i)
|
||||||
|
if not data['Cluster']:
|
||||||
|
ntff = ""
|
||||||
|
else:
|
||||||
|
ntff = "-NoTransferFromFiltering"
|
||||||
|
unit_file = f"{dir_unit}ARK_{data['SessionName']}.service"
|
||||||
|
unit_text = f'''[Unit]
|
||||||
|
Description=ARK: Survival Evolved dedicated server - {data['map']}
|
||||||
|
Wants=network-online.target
|
||||||
|
After=syslog.target network.target nss-lookup.target network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=/usr/bin/steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit
|
||||||
|
TimeoutStartSec=1200
|
||||||
|
ExecStart={dir_server_ark}ShooterGameServer {data['map']}?listen={data['Listen']}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']} {ntff}
|
||||||
|
LimitNOFILE=100000
|
||||||
|
ExecReload=/bin/kill -s HUP $MAINPID
|
||||||
|
ExecStop=/bin/kill -s INT $MAINPID
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
'''
|
||||||
|
with open(unit_file, 'w') as systemd_unit:
|
||||||
|
systemd_unit.write(unit_text)
|
||||||
|
os.system(f"systemctl --user unmask ARK_{data['SessionName']}.service")
|
||||||
|
os.system(f"systemctl --user enable ARK_{data['SessionName']}.service")
|
||||||
|
os.system('systemctl --user daemon-reload')
|
||||||
|
|
||||||
|
|
||||||
def test_mod_install():
|
def test_mod_install():
|
||||||
pathTest = f"{dir_server}ShooterGame/Saved/Config/LinuxServer/"
|
pathTest = f"{dir_server}ShooterGame/Saved/Config/LinuxServer/"
|
||||||
if os.path.exists(pathTest):
|
if os.path.exists(pathTest):
|
||||||
os.chdir(pathTest)
|
os.chdir(pathTest)
|
||||||
# "Добавить файл в Game.ini, если модов несколько добавляем еще строку ModIDS=<ModId> [ModInstaller] ModIDS=<ModID>"
|
# "Добавить файл в Game.ini, если модов несколько добавляем еще строку ModIDS=<ModId> [ModInstaller] ModIDS=<ModID>"
|
||||||
# c этим не разобрался
|
# c этим не разобрался
|
||||||
os.system("echo ActiveMods=2943454417 >> GameUserSettings.ini")
|
os.system("echo ActiveMods=2943454417 >> GameUserSettings.ini")
|
||||||
else:
|
else:
|
||||||
print_line("Сервер не установлен")
|
print_line("Сервер не установлен")
|
||||||
@ -277,11 +333,12 @@ test_mod_install()
|
|||||||
@hlna.command()
|
@hlna.command()
|
||||||
@click.option("-m", required=True, help="Название Сервера")
|
@click.option("-m", required=True, help="Название Сервера")
|
||||||
@click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать")
|
@click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать")
|
||||||
def enablemap(m,e):
|
def enablemap(m, e):
|
||||||
"""Тут переписать надо"""
|
"""Включение/выключение карт"""
|
||||||
m = m.split(",")
|
|
||||||
# m = check_name_map(m, False)
|
m = m.split(",")
|
||||||
create_dir(dir_config + "deactivated")
|
if not os.path.isdir(dir_deactivated):
|
||||||
|
create_dir(dir_deactivated)
|
||||||
if e == True:
|
if e == True:
|
||||||
port_s = []
|
port_s = []
|
||||||
query_p = []
|
query_p = []
|
||||||
@ -297,33 +354,41 @@ def enablemap(m,e):
|
|||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
if data['Port'] in port_s:
|
if data['Port'] in port_s:
|
||||||
print("Предлагаем заменить")
|
print("Предлагаем заменить")
|
||||||
|
continue
|
||||||
if data['QueryPort'] in query_p:
|
if data['QueryPort'] in query_p:
|
||||||
print("Заменить query port?")
|
print("Заменить query port?")
|
||||||
x = os.system(f"mv {dir_config}deactivated/{i} {dir_config + i} 2>> {dir_config}logs") #Добавить текущее время
|
continue
|
||||||
|
x = os.system(f"mv {dir_deactivated}{i} {dir_maps} >> {dir_logs}{date} 2>&1") # Добавить текущее время
|
||||||
|
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||||
|
f.write(f"[{time}] File {i} has been moved to {dir_maps}\n")
|
||||||
if x == 0:
|
if x == 0:
|
||||||
print(f"Карта активирована - {i}")
|
print(f"Карта активирована - {i}")
|
||||||
else:
|
else:
|
||||||
print(f"{i} либо уже активирована, либо такой карты нет")
|
print(f"{i} либо уже активирована, либо такой карты нет")
|
||||||
except:
|
finally:
|
||||||
print("ошибка")
|
|
||||||
pass
|
pass
|
||||||
|
# except:
|
||||||
|
# print("ошибка при активации карты")
|
||||||
|
# pass
|
||||||
else:
|
else:
|
||||||
|
|
||||||
for i in m:
|
for i in m:
|
||||||
try:
|
try:
|
||||||
if i in delist_config:
|
if i in delist_config:
|
||||||
print(f"Карта {i} уже есть в деактивированных")
|
print(f"Карта {i} уже есть в деактивированных")
|
||||||
continue
|
continue
|
||||||
x = os.system(f"mv {dir_config + i} {dir_config}deactivated/{i} 2>> {dir_config}logs") #Добавить текущее время
|
x = os.system(
|
||||||
|
f"mv {dir_maps}{i} {dir_deactivated} >> {dir_logs}{date} 2>&1") # Добавить текущее время
|
||||||
|
with open(f"{dir_logs}{date}.log", "a") as f:
|
||||||
|
f.write(f"[{time}] File {i} has been moved to {dir_deactivated}\n")
|
||||||
if x == 0:
|
if x == 0:
|
||||||
print(f"Карта деактивирована - {i}")
|
print(f"Карта деактивирована - {i}")
|
||||||
else:
|
else:
|
||||||
print(f"{i} либо деактивирована, либо такой карты нет")
|
print(f"{i} либо деактивирована, либо такой карты нет")
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@hlna.command()
|
|
||||||
|
@hlna.command()
|
||||||
def servers(map_server=list_config):
|
def servers(map_server=list_config):
|
||||||
# Добавить сортивку по кластерам и вывод несколько столбиков
|
# Добавить сортивку по кластерам и вывод несколько столбиков
|
||||||
if map_server == [] and delist_config == []:
|
if map_server == [] and delist_config == []:
|
||||||
@ -349,10 +414,10 @@ def servers(map_server=list_config):
|
|||||||
Rcon порт : {data['RCONPort']}
|
Rcon порт : {data['RCONPort']}
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
||||||
print("-" * 40)
|
print("-" * 40)
|
||||||
|
|
||||||
if delist_config!=[]:
|
if delist_config != []:
|
||||||
x = input("Есть неактивные сервера, показать Y/n: ")
|
x = input("Есть неактивные сервера, показать Y/n: ")
|
||||||
if x!="n":
|
if x != "n":
|
||||||
for i in delist_config:
|
for i in delist_config:
|
||||||
data = read_yaml(i, False)
|
data = read_yaml(i, False)
|
||||||
print(f"""
|
print(f"""
|
||||||
@ -368,8 +433,8 @@ def servers(map_server=list_config):
|
|||||||
Rcon порт : {data['RCONPort']}
|
Rcon порт : {data['RCONPort']}
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
||||||
print("-" * 40)
|
print("-" * 40)
|
||||||
|
|
||||||
|
|
||||||
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
|
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
|
||||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
||||||
@click.option('-b', default='', help="")
|
@click.option('-b', default='', help="")
|
||||||
@ -396,36 +461,19 @@ def start(m, b, name_server=list_config):
|
|||||||
else:
|
else:
|
||||||
names_serverstart = choose_map(names_serverstart)
|
names_serverstart = choose_map(names_serverstart)
|
||||||
|
|
||||||
server_dir = dir_server + "ShooterGame/Binaries/Linux/"
|
|
||||||
print_line("Валидация файлов сервера")
|
|
||||||
x = os.system(f"steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit")
|
|
||||||
os.chdir(server_dir)
|
|
||||||
for i in names_serverstart:
|
for i in names_serverstart:
|
||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
starting_map = dict_mapname[i]
|
os.system(f"systemctl --user start ARK_{data['SessionName']}.service")
|
||||||
print_line(data['Cluster'])
|
|
||||||
ntff = '' if not data['Cluster'] else "-NoTransferFromFiltering"
|
|
||||||
def starting(i):
|
|
||||||
os.system(f"{server_dir}ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}\
|
|
||||||
?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}\
|
|
||||||
?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']}\
|
|
||||||
?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']}\
|
|
||||||
-ClusterDirOverride={data['clusterdir']} {ntff}")
|
|
||||||
if x == 0:
|
|
||||||
print_line("Запускаем карту" + i)
|
|
||||||
threads = threading.Thread(target=starting, args=(starting_map,))
|
|
||||||
threads.start()
|
|
||||||
else:
|
|
||||||
print(f"Карта не запущена, сервер не установлен")
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("Ни одной карты не установлено")
|
print("Ни одной карты не установлено")
|
||||||
|
|
||||||
|
|
||||||
def read_yaml(name_server, flag=True):
|
|
||||||
|
def read_yaml(list_config, flag=True):
|
||||||
# Читаем конфиги активных или неактивных карт в зависимости от флага
|
# Читаем конфиги активных или неактивных карт в зависимости от флага
|
||||||
dirs = f"{dir_config}{name_server}" if flag else f"{dir_config}deactivated/{name_server}"
|
if flag:
|
||||||
|
dirs = f"{dir_maps}{list_config}"
|
||||||
|
else:
|
||||||
|
dirs = f"{dir_deactivated}{list_config}"
|
||||||
with open(dirs, "r") as yamlfile:
|
with open(dirs, "r") as yamlfile:
|
||||||
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
|
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
|
||||||
return data[0] # возвращаем словарь со всеми значениями
|
return data[0] # возвращаем словарь со всеми значениями
|
||||||
@ -435,27 +483,27 @@ def choose_map(arr):
|
|||||||
new_arr = []
|
new_arr = []
|
||||||
arr = sorted(arr)
|
arr = sorted(arr)
|
||||||
print('Найдены сервера с этой картой')
|
print('Найдены сервера с этой картой')
|
||||||
for i,map in enumerate(arr):
|
for i, map in enumerate(arr):
|
||||||
print(f"{i+1}) {map}")
|
print(f"{i + 1}) {map}")
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',')
|
||||||
x = [int (i) for i in x]
|
x = [int(i) for i in x]
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
print("Неправильный ввод")
|
print("Неправильный ввод")
|
||||||
|
|
||||||
for i in x:
|
for i in x:
|
||||||
new_arr.append(arr[i-1])
|
new_arr.append(arr[i - 1])
|
||||||
print('Выбранные сервера:', new_arr)
|
print('Выбранные сервера:', new_arr)
|
||||||
|
|
||||||
return new_arr
|
return new_arr
|
||||||
|
|
||||||
|
|
||||||
@hlna.command()
|
@hlna.command()
|
||||||
@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("Команда: ", c)
|
print_line("Команда: ", c)
|
||||||
print_line("Карты: ", m)
|
print_line("Карты: ", m)
|
||||||
dict_mapname = {}
|
dict_mapname = {}
|
||||||
@ -466,7 +514,7 @@ def rcon(m,c):
|
|||||||
dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword']
|
dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword']
|
||||||
rcon_ports = []
|
rcon_ports = []
|
||||||
for ns, v in dict_mapname.items():
|
for ns, v in dict_mapname.items():
|
||||||
print_line(f"переменные v и m {v} & {m}") # обьединить с таким же блоком в start()
|
print_line(f"переменные v и m {v} & {m}") # обьединить с таким же блоком в start()
|
||||||
if v in m:
|
if v in m:
|
||||||
rcon_ports.append(ns)
|
rcon_ports.append(ns)
|
||||||
print_line(f"Карта которая запускается {ns}")
|
print_line(f"Карта которая запускается {ns}")
|
||||||
@ -482,7 +530,5 @@ def zero(x=""):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
# if __name__ == 'hlna':
|
|
||||||
# input = zero
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
hlna()
|
hlna()
|
||||||
|
0
hlna_discord_bot.py
Executable file → Normal file
0
hlna_discord_bot.py
Executable file → Normal file
0
logo.png
Executable file → Normal file
0
logo.png
Executable file → Normal file
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
0
pytest.py
Executable file → Normal file
0
pytest.py
Executable file → Normal file
Loading…
Reference in New Issue
Block a user