diff --git a/hlna.py b/hlna.py index cd9bd37..f581ffb 100755 --- a/hlna.py +++ b/hlna.py @@ -97,7 +97,7 @@ def unpack(src, dst): if size_unpacked != size_indexed: msg = f"Header-Index mismatch. Header indicates it should only have {size_unpacked} bytes when uncompressed but the index indicates {size_indexed} bytes." logging.critical(msg) - return print_line(msg, flag=False) + return print_line(msg, flag="RED") # Read the actual archive data data = b'' @@ -115,19 +115,19 @@ def unpack(src, dst): if len(uncompressed_data) != size_unpacked_chunk and read_data != len(compression_index): msg = f"Index contains more than one partial chunk: was {len(uncompressed_data)} when the full chunk size is {size_unpacked_chunk}, chunk {read_data}/{len(compression_index)}" logging.critical(msg) - return print_line(msg, flag=False) + return print_line(msg, flag="RED") else: msg = f"Uncompressed chunk size is not the same as in the index: was {len(uncompressed_data)} but should be {uncompressed}." logging.critical(msg) - return print_line(msg, flag=False) + return print_line(msg, flag="RED") else: msg = f"Data types in the headers should be int's. Size Types: unpacked_chunk({type(size_unpacked_chunk)}), packed({type(size_packed)}), unpacked({type(size_unpacked)})" logging.critical(msg) - return print_line(msg, flag=False) + return print_line(msg, flag="RED") else: msg = "The signature and format version is incorrect. Signature was {} should be 2653586369.".format(sigver) logging.critical(msg) - return print_line(msg,flag=False) + return print_line(msg,flag="RED") # Write the extracted data to disk with open(dst, 'wb') as f: @@ -135,9 +135,16 @@ def unpack(src, dst): logging.info("Archive has been extracted.") -def print_line(*text, flag=True): +def print_line(*text, flag=""): """Добавление обводки вокруг текста, покраска""" - color = colorama.Fore.GREEN if flag else colorama.Fore.RED + if flag == "RED": + color = colorama.Fore.RED + elif flag == "YELLOW": + color = colorama.Fore.YELLOW + elif flag == "GREEN": + color = colorama.Fore.GREEN + elif flag == "CYAN": + color = colorama.Fore.CYAN print(colorama.Fore.YELLOW + "." * 30) print(color, *text) print(colorama.Fore.YELLOW + "." * 30 + colorama.Style.RESET_ALL) @@ -153,7 +160,7 @@ def check_int(number=""): x = int(x) return x except ValueError: - print_line("Введите число") + print_line("Введите число", flag="CYAN") @hlna.command(help='Выбор игры и сбор настроек для сервера(-ов)') @@ -167,7 +174,7 @@ def config(): elif count_game == 2: config_7daystodie() else: - print_line("Пока есть только ARK и 7Days xD") + print_line("Пока есть только ARK и 7Days xD", flag="YELLOW") def ports_array(): @@ -192,13 +199,13 @@ def ports(port, ports_arr, flag): port = 27015 elif flag == 2: port = 23331 - print_line("Port=", port) + print_line("Port=", port, flag="CYAN") return port else: port = max(ports_arr) + 2 - print_line("Port=", port) + print_line("Port=", port, flag="CYAN") if port in ports_arr: - print("Порт уже занят") + print_line("Порт уже занят", flag="RED") else: return port @@ -300,15 +307,13 @@ def config_nameserver(map_s): new_name = f"{map_s}{str(count)}" count += 1 list_config.append(new_name) - print_line(list_config) break else: - print_line(list_config) list_config.append(map_s) break else: if name_server in list_config: - print_line("Имя занято", flag=False) + print_line("Имя занято", flag="RED") config_nameserver(map_s) else: list_config.append(name_server) # если enter, то ставим последним элементом карту @@ -380,10 +385,8 @@ def config_ark(list_config=list_config): data = read_yaml(i, g="ark") print(f"{i} : {data['map']}") count_maps = config_nummap() - print_line(count_maps) for i in range(count_maps): map_s, port_s, query_p, rcon_p = config_maps(i) - print_line(map_s, port_s, query_p, rcon_p) list_config = config_nameserver(map_s) port_server = config_ports(port_s) query_port = config_query(query_p) @@ -409,7 +412,7 @@ def config_7daystodie(): elif config_7days == "serverconfig": config_7days = "serverconfig" elif config_7days in list_simvols: - print_line("Запрещённые символы", flag=False) + print_line("Запрещённые символы", flag="RED") else: xml_parser() systemd_unit_create("7Days", config_7days) @@ -425,9 +428,6 @@ def yaml_create(g, dir_server="", cluster_server="", map_s="", name_server="", p id_mods_ark="", cluster_id="", cluster_dir_override="", listen_server=""): """Создаёт на основании собранных данных yaml конфиг""" if g == "ark": - print_line(type(id_mods_ark)) - print_line(id_mods_ark) - print_line(name_server) path_yaml = dir_maps_ark + name_server settings = [ { @@ -522,15 +522,15 @@ def mod(g, m, i, id_mods_ark): dir_mod_ark = f"{dir_mods_ark}/{id_mod}" if not os.path.isfile(f"{dir_mod_ark}.mod"): if i: - print_line(f"Скачиваем мод {id_mod}") + print_line(f"Скачиваем мод {id_mod}", flag="CYAN") moddownload(g, m, id_mod, dir_mod_ark) else: os.system(f"rm -rf {dir_mod_ark}") - print_line(f"{dir_mod_ark} удалён") + print_line(f"{dir_mod_ark} удалён", flag="CYAN") os.system(f"rm {dir_mods_ark}/{id_mod}.mod") - print_line(f"{dir_mods_ark}/{id_mod}.mod удалён") + print_line(f"{dir_mods_ark}/{id_mod}.mod удалён", flag="CYAN") else: - print_line(f"Мод уже установлен") + print_line(f"Мод уже установлен", flag="CYAN") modupdate(g, m, id_mod, dir_mod_ark) name_server = choose_map(g, m) id_mods = id_mods[1:] @@ -541,14 +541,14 @@ def mod(g, m, i, id_mods_ark): data['RCONEnabled'], data['RCONPort'], data['ServerAdminPassword'], data['ServerPassword'], data['MaxPlayers'], id_mods_ark, data['clusterid'], data['clusterdir'], data['Listen']) else: - print_line("Введите id модов через запятую без пробелов") + print_line("Введите id модов через запятую без пробелов", flag="CYAN") else: - print_line("Не поддерживаемая игра") + print_line("Не поддерживаемая игра", flag="RED") def modupdate(g, m, id_mod, dir_mod_ark): if g == "ark": - print_line(f"Проверяем обновление мода {id_mod}") + print_line(f"Проверяем обновление мода {id_mod}", flag="CYAN") with open(os.path.join(dir_mod_ark, f"appworkshop_346110.acf"), "r") as f: content = f.readlines() content = "".join(content) @@ -571,14 +571,14 @@ def modupdate(g, m, id_mod, dir_mod_ark): steam_date = json_zapros['response']['publishedfiledetails'][0]['time_updated'] if int(steam_date) != int(locale_date): - print_line(f"Обновляем мод {id_mod}") + print_line(f"Обновляем мод {id_mod}", flag="CYAN") moddownload(g, m, id_mod, dir_mod_ark) else: - print_line(f"Мод {id_mod} обновлен") + print_line(f"Мод {id_mod} обновлен", flag="GREEN") def modupdateall(g, m): - print_line("Проверяем обновление всех установленных модов") + print_line("Проверяем обновление всех установленных модов", flag="CYAN") for file in os.listdir(dir_mods_ark): if os.path.isfile(os.path.join(dir_mods_ark, file)): if file.endswith('.mod'): @@ -701,23 +701,23 @@ def switch(g, m, e): #добавить all enable = "enable" if e else "disable" os.system(f"systemctl --user {enable} ark_{i}") else: - print_line(f"Ошибка перемещения {i}", flag=False) + print_line(f"Ошибка перемещения {i}", flag="RED") except: - print_line("ошибка операции", flag=False) + print_line("ошибка операции", flag="RED") @hlna.command(help='Выводит статус настроеных серверов') def status(list_config=list_config): if list_config == [] and delist_config == []: - print_line("Сервера не сконфигурированы", flag=False) + print_line("Сервера не сконфигурированы", flag="RED") else: for i in list_config: data = read_yaml(i, g="ark") x = os.system(f"lsof -w -i :{data['Port']}") if x == 0: - print_line("Сервер запущен") + print_line("Сервер запущен", flag="GREEN") else: - print_line("Сервер не запущен", flag=False) + print_line("Сервер не запущен", flag="RED") # этот принт надо отдельной функцией сделать, чтобы убрать дублирование текста @@ -786,11 +786,11 @@ def check_exist_servers(g): """Проверяет наличие конфигов для активных карт""" if g == "ark": if list_config == []: - print_line("Нет сконфигурированных серверов", flag=False) # добавить отсюда вилку на вопрос с конфигурацией + print_line("Нет сконфигурированных серверов", flag="RED") # добавить отсюда вилку на вопрос с конфигурацией else: return elif g == "7days": - print_line("7Days") + print_line("7Days", flag="CYAN") def start_stop(action, g, m): @@ -805,12 +805,12 @@ def start_stop(action, g, m): x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service") if x == 0: - print_line(f"Готово {action} для {g}") + print_line(f"Готово {action} для {g}", flag="GREEN") elif g == "7days": x = os.system(f"systemctl --user {action} 7days.service") if x == 0: - print_line("Готово") + print_line("Готово", flag="GREEN") else: return @@ -857,7 +857,7 @@ def choose_map(g, m, list_config=list_config): x = [int(i) for i in x] break except: - print_line("Неправильный ввод", flag=False) + print_line("Неправильный ввод", flag="RED") for i in x: name_servers.append(name_servers[i - 1]) print('Выбранные сервера:', name_servers) @@ -894,11 +894,11 @@ def rcon_local(m, c): passwd = dict_adminpwd[port] with Client('127.0.0.1', port, passwd=str(passwd)) as client: response = client.run(c) - print_line(f"Rcon выполнен {response} {dict_mapname[port]}") + print_line(f"Rcon выполнен {response} {dict_mapname[port]}", flag="GREEN") else: pass except: - print_line(f"Ошибка отправки команды {c} в {m}", flag=False) + print_line(f"Ошибка отправки команды {c} в {m}", flag="RED") def zero(x=""):