print_line

This commit is contained in:
Евгений Храмов 2023-05-28 19:57:43 +03:00
parent 1acba298f4
commit 9d7330f560

86
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=""):