изменили запуск, проверку карт+названия карт
This commit is contained in:
parent
47f0ea7de3
commit
b4d6e5e9aa
122
hlna.py
122
hlna.py
@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@ -46,11 +45,12 @@ delist_config = find_file(config_hlna+"deactivated")
|
|||||||
def print_line(text):
|
def print_line(text):
|
||||||
"""Добавление тире вокруг текста, покраска"""
|
"""Добавление тире вокруг текста, покраска"""
|
||||||
print(colorama.Fore.YELLOW + "-"*30)
|
print(colorama.Fore.YELLOW + "-"*30)
|
||||||
print(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)
|
||||||
|
|
||||||
print_line(f"list_config=, {list_config}")
|
print_line(f"list_config=, {list_config}")
|
||||||
|
|
||||||
|
|
||||||
def create_dir(directory):
|
def create_dir(directory):
|
||||||
"""Проверка и создание директории"""
|
"""Проверка и создание директории"""
|
||||||
if not os.path.exists(directory):
|
if not os.path.exists(directory):
|
||||||
@ -103,8 +103,6 @@ def config(name_server=list_config):
|
|||||||
for i in name_server:
|
for i in name_server:
|
||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
print(f"{i} : {data['map']}")
|
print(f"{i} : {data['map']}")
|
||||||
port_s.append(data['Port'])
|
|
||||||
query_p.append(data['QueryPort'])
|
|
||||||
id_srv[data['SessionName']] = data['id_server']
|
id_srv[data['SessionName']] = data['id_server']
|
||||||
|
|
||||||
count_maps = check_int("Укажите количество карт: \n")
|
count_maps = check_int("Укажите количество карт: \n")
|
||||||
@ -135,6 +133,12 @@ def config(name_server=list_config):
|
|||||||
if 0 < amount_map <= 12:
|
if 0 < amount_map <= 12:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if name_server != []:
|
||||||
|
for i in name_server:
|
||||||
|
data = read_yaml(i)
|
||||||
|
port_s.append(data['Port'])
|
||||||
|
query_p.append(data['QueryPort'])
|
||||||
|
|
||||||
if amount_map == 1:
|
if amount_map == 1:
|
||||||
map_s = "TheIsland"
|
map_s = "TheIsland"
|
||||||
elif amount_map == 2:
|
elif amount_map == 2:
|
||||||
@ -165,34 +169,32 @@ def config(name_server=list_config):
|
|||||||
|
|
||||||
if name_server != []:
|
if name_server != []:
|
||||||
data = read_yaml(name_server[-1])
|
data = read_yaml(name_server[-1])
|
||||||
h = (input("Укажите название Сервера: \n"))
|
name_server.append(input("Укажите название Сервера: \n"))
|
||||||
if h == '':
|
if name_server[-1] == '':
|
||||||
if map_s in name_server:
|
if map_s in name_server:
|
||||||
name_server.pop(); name_server.append(map_s + str(name_server.count(map_s)))
|
name_server.pop(); name_server.append(map_s + str(name_server.count(map_s)))
|
||||||
else:
|
else:
|
||||||
name_server.pop(); name_server.append(map_s) # если enter, то ставим последним элементом карту
|
name_server.pop(); name_server.append(map_s) # если enter, то ставим последним элементом карту
|
||||||
else:
|
|
||||||
name_server.append(h)
|
|
||||||
|
|
||||||
|
# while True:
|
||||||
|
# id_server = input("Укажите метку для запуска или конфигурирования этой карты\n")
|
||||||
while True:
|
# if id_server == "":
|
||||||
id_server = input("Укажите метку для запуска или конфигурирования этой карты")
|
# if id_srv == {}:
|
||||||
if id_server == "":
|
# print_line("Значение по умолчанию")
|
||||||
if id_srv == {}:
|
# else:
|
||||||
print_line("Значение по умолчанию")
|
#
|
||||||
else:
|
#
|
||||||
if id_srv != {}: # Если есть хоть какой-то id
|
# if id_srv != {}: # Если есть хоть какой-то id
|
||||||
if id_server in id_srv[name_server[-1]]: # тут ошибка !
|
# # if id_server == id_srv[name_server[-1]]: # тут ошибка !
|
||||||
break
|
# # break
|
||||||
if id_server in id_srv.values(): # Если введёное уже есть в списке меток
|
# if id_server in id_srv.values(): # Если введёное уже есть в списке меток
|
||||||
print_line("Метка уже занята")
|
# print_line("Метка уже занята")
|
||||||
else:
|
# else:
|
||||||
id_srv[name_server[-1]] = id_server
|
# id_srv[name_server[-1]] = id_server
|
||||||
break
|
# break
|
||||||
else:
|
# else:
|
||||||
id_srv[name_server[-1]] = id_server
|
# id_srv[name_server[-1]] = id_server
|
||||||
break
|
# break
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
port_server = check_int("Укажите порт Сервера <7777>: \n")
|
port_server = check_int("Укажите порт Сервера <7777>: \n")
|
||||||
@ -223,14 +225,13 @@ def config(name_server=list_config):
|
|||||||
if max_players == 0:
|
if max_players == 0:
|
||||||
max_players = 70
|
max_players = 70
|
||||||
|
|
||||||
yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override, id_srv[name_server[-1]])
|
yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override)
|
||||||
|
|
||||||
|
|
||||||
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override, id_srv):
|
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override):
|
||||||
settings_hlna = [
|
settings_hlna = [
|
||||||
{
|
{
|
||||||
'map' : map_s,
|
'map' : map_s,
|
||||||
'id_server' : id_srv,
|
|
||||||
'Cluster' : cluster_server,
|
'Cluster' : cluster_server,
|
||||||
'SessionName' : name_server,
|
'SessionName' : name_server,
|
||||||
'Port' : port_server,
|
'Port' : port_server,
|
||||||
@ -255,7 +256,7 @@ def yaml_create(cluster_server, map_s, name_server, port_server, query_port, pas
|
|||||||
def enablemap(m,e):
|
def enablemap(m,e):
|
||||||
"""Тут переписать надо"""
|
"""Тут переписать надо"""
|
||||||
m = m.split(",")
|
m = m.split(",")
|
||||||
m = check_name_map(m, False)
|
# m = check_name_map(m, False)
|
||||||
create_dir(config_hlna + "deactivated")
|
create_dir(config_hlna + "deactivated")
|
||||||
if e == True:
|
if e == True:
|
||||||
port_s = []
|
port_s = []
|
||||||
@ -312,7 +313,8 @@ def servers(map_server=list_config):
|
|||||||
else:
|
else:
|
||||||
print(colorama.Fore.RED + "Сервер не запущен" + colorama.Style.RESET_ALL)
|
print(colorama.Fore.RED + "Сервер не запущен" + colorama.Style.RESET_ALL)
|
||||||
print(f"""
|
print(f"""
|
||||||
Сервер: {i}
|
Имя сервера: {i}
|
||||||
|
Карта: {data['map']}
|
||||||
Моды: {data['ModsId']}
|
Моды: {data['ModsId']}
|
||||||
Пароль: {data['ServerPassword']}
|
Пароль: {data['ServerPassword']}
|
||||||
Кластер: {data['Cluster']}
|
Кластер: {data['Cluster']}
|
||||||
@ -328,7 +330,8 @@ def servers(map_server=list_config):
|
|||||||
for i in delist_config:
|
for i in delist_config:
|
||||||
data = read_yaml(i, False)
|
data = read_yaml(i, False)
|
||||||
print(f"""
|
print(f"""
|
||||||
Сервер: {i}
|
Имя сервера: {i}
|
||||||
|
Карта: {data['map']}
|
||||||
Моды: {data['ModsId']}
|
Моды: {data['ModsId']}
|
||||||
Пароль: {data['ServerPassword']}
|
Пароль: {data['ServerPassword']}
|
||||||
Кластер: {data['Cluster']}
|
Кластер: {data['Cluster']}
|
||||||
@ -341,22 +344,31 @@ def servers(map_server=list_config):
|
|||||||
|
|
||||||
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
|
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
|
||||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
||||||
def start(m, map_server=list_config):
|
def start(m, name_server=list_config):
|
||||||
if map_server != []:
|
dict_mapname = {}
|
||||||
|
for i in name_server:
|
||||||
|
data = read_yaml(i)
|
||||||
|
print_line(f"Название сервера: {i} | Карта: {data['map']} | Кластер: {data['clusterid']}")
|
||||||
|
dict_mapname[data['SessionName']] = data['map']
|
||||||
|
print_line(f"Словарь названия сервера и карты {dict_mapname}")
|
||||||
|
names_serverstart = []
|
||||||
|
for ns, v in dict_mapname.items():
|
||||||
|
print_line(f"переменные v и m {v} & {m}")
|
||||||
|
if v in m:
|
||||||
|
names_serverstart.append(ns)
|
||||||
|
print_line(f"Карта которая запускается {ns}")
|
||||||
|
if name_server != []:
|
||||||
if m == "all":
|
if m == "all":
|
||||||
print("Запускаем все активные карты")
|
print("Запускаем все активные карты")
|
||||||
else:
|
|
||||||
m = m.split(",")
|
|
||||||
m = check_name_map(m)
|
|
||||||
map_server = m
|
|
||||||
|
|
||||||
for i in map_server:
|
for i in names_serverstart:
|
||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
create_dir(data['ServerPath'] + i)
|
create_dir(data['ServerPath'] + i)
|
||||||
print_line("Качаем карту: " + i)
|
print_line("Качаем карту: " + i)
|
||||||
|
starting_map = dict_mapname[i]
|
||||||
x = os.system(
|
x = os.system(
|
||||||
f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit")
|
f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit")
|
||||||
print_line("Карта скачана: " + i)
|
|
||||||
|
|
||||||
def start(i):
|
def start(i):
|
||||||
os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/")
|
os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/")
|
||||||
@ -364,7 +376,8 @@ def start(m, map_server=list_config):
|
|||||||
f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}")
|
f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}")
|
||||||
|
|
||||||
if x == 0:
|
if x == 0:
|
||||||
threads = threading.Thread(target=start, args=(i,))
|
print_line("Карта скачана: " + i)
|
||||||
|
threads = threading.Thread(target=start, args=(starting_map,))
|
||||||
threads.start()
|
threads.start()
|
||||||
else:
|
else:
|
||||||
print(f"Карта {i} не установлена")
|
print(f"Карта {i} не установлена")
|
||||||
@ -387,35 +400,16 @@ def delete(m, list_config=list_config):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
def read_yaml(map_server, flag=True):
|
def read_yaml(name_server, flag=True):
|
||||||
# Читаем конфиги активных или неактивных карт в зависимости от флага
|
# Читаем конфиги активных или неактивных карт в зависимости от флага
|
||||||
if flag == True:
|
if flag == True:
|
||||||
dirs = f"{home_dir}/.config/hlna/{map_server}"
|
dirs = f"{home_dir}/.config/hlna/{name_server}"
|
||||||
else:
|
else:
|
||||||
dirs = f"{home_dir}/.config/hlna/deactivated/{map_server}"
|
dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}"
|
||||||
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] # возвращаем словарь со всеми значениями
|
||||||
|
|
||||||
|
|
||||||
def check_name_map(maps, flag=True):
|
|
||||||
map_choise = []
|
|
||||||
for i in maps:
|
|
||||||
if flag == True:
|
|
||||||
if map_choise[-1] in list_config:
|
|
||||||
print_line(f"{i} - Подготавливаем карту {map_choise[-1]}")
|
|
||||||
else:
|
|
||||||
map_choise.pop()
|
|
||||||
print("Карта-", i, "не установлена")
|
|
||||||
else:
|
|
||||||
if map_choise[-1] in delist_config or map_choise[-1] in list_config:
|
|
||||||
print_line(f"{i} - Подготавливаем карту {map_choise[-1]}")
|
|
||||||
else:
|
|
||||||
map_choise.pop()
|
|
||||||
print("Карта -", i, "не установлена")
|
|
||||||
|
|
||||||
return map_choise
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
hlna()
|
hlna()
|
||||||
|
27
hlna_bot.py
27
hlna_bot.py
@ -3,11 +3,12 @@ import time
|
|||||||
import os
|
import os
|
||||||
import telebot
|
import telebot
|
||||||
from telebot import types
|
from telebot import types
|
||||||
|
import subprocess
|
||||||
|
|
||||||
import hlna
|
import hlna
|
||||||
|
|
||||||
|
key_api = '6192661772:AAHB1dw4rXHOglgyTOpcsxwvLn4d3AKkvP4'
|
||||||
key_api = input("Укажите ключ бота")
|
#key_api = input("Укажите ключ бота\n")
|
||||||
hlna_bot = telebot.TeleBot(f"{key_api}", parse_mode=None)
|
hlna_bot = telebot.TeleBot(f"{key_api}", parse_mode=None)
|
||||||
map_server = hlna.list_config
|
map_server = hlna.list_config
|
||||||
|
|
||||||
@ -37,7 +38,12 @@ def m_start(m):
|
|||||||
def m_chose(m):
|
def m_chose(m):
|
||||||
if m.text.strip() == '🦖 Старт':
|
if m.text.strip() == '🦖 Старт':
|
||||||
if map_server == []:
|
if map_server == []:
|
||||||
hlna_bot.send_message(m.chat.id, text="{0.first_name}, ниодна карта не установлена".format(m.from_user))
|
menu_install = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
k_install = types.KeyboardButton("Установить")
|
||||||
|
k_back = types.KeyboardButton("Назад")
|
||||||
|
menu_install.add(k_back, k_install)
|
||||||
|
hlna_bot.send_message(m.chat.id, text="{0.first_name}, ниодна карта не установлена".format(m.from_user), reply_markup=menu_install)
|
||||||
|
hlna_bot.register_next_step_handler(m, m_install)
|
||||||
else:
|
else:
|
||||||
menu_start = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
menu_start = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
for i in map_server:
|
for i in map_server:
|
||||||
@ -48,9 +54,15 @@ def m_chose(m):
|
|||||||
hlna_bot.send_message(m.chat.id, text="{0.first_name}, выбери карту".format(m.from_user), reply_markup=menu_start)
|
hlna_bot.send_message(m.chat.id, text="{0.first_name}, выбери карту".format(m.from_user), reply_markup=menu_start)
|
||||||
elif m.text.strip() == 'Назад':
|
elif m.text.strip() == 'Назад':
|
||||||
m_start(m)
|
m_start(m)
|
||||||
elif m.text.strip() == 'TheIsland':
|
# elif m.text.strip() == 'TheIsland':
|
||||||
hlna.start()
|
# hlna.start()
|
||||||
#def m_start(m):
|
def m_install(m):
|
||||||
|
if m.text.strip() == 'Установить':
|
||||||
|
hlna_bot.send_message(m.chat.id, subprocess.check_output(hlna.config(), shell=True))
|
||||||
|
|
||||||
|
print("Bot starting")
|
||||||
|
hlna_bot.polling(none_stop=True, interval=0, timeout=999)
|
||||||
|
|
||||||
# print("Start")
|
# print("Start")
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -108,6 +120,5 @@ def m_chose(m):
|
|||||||
# time.sleep(30)
|
# time.sleep(30)
|
||||||
# pass
|
# pass
|
||||||
|
|
||||||
print("Bot starting")
|
|
||||||
hlna_bot.polling(none_stop=True, interval=0, timeout=999)
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user