изменили запуск, проверку карт+названия карт
This commit is contained in:
		
							
								
								
									
										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) |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user