проверка имени во время активации

This commit is contained in:
sitisll 2023-06-05 15:28:06 +03:00
parent 10b89ce25f
commit 5eb5eeb9ba
2 changed files with 54 additions and 20 deletions

35
hlna.py

@ -295,6 +295,7 @@ def ports(port, ports_arr, flag):
print_line("Port=", port, flag="CYAN") print_line("Port=", port, flag="CYAN")
if port in ports_arr: if port in ports_arr:
print_line("Порт уже занят", flag="RED") print_line("Порт уже занят", flag="RED")
port = check_int("Введите новый порт")
else: else:
return port return port
@ -311,7 +312,7 @@ def config_cluster():
while True: while True:
cluster_id = input("Укажите id для кластера, любое сочетание символов: \n") cluster_id = input("Укажите id для кластера, любое сочетание символов: \n")
if cluster_id == '': if cluster_id == '':
print_line("Введите символы: ", glag="CYAN") print_line("Введите символы: ", flag="CYAN")
else: else:
create_dir(dir_server_ark + cluster_id) create_dir(dir_server_ark + cluster_id)
cluster_dir_override = (dir_server_ark + cluster_id) cluster_dir_override = (dir_server_ark + cluster_id)
@ -385,9 +386,12 @@ def config_maps(i):
return map_s, port_s, query_p, rcon_p return map_s, port_s, query_p, rcon_p
def config_nameserver(map_s): def config_nameserver(map_s, flag=True):
while True: while True:
name_server = input("Укажите название Сервера: \n") if flag:
name_server = input("Укажите название Сервера: \n")
else:
name_server = map_s
if name_server == "": if name_server == "":
if map_s in list_config: if map_s in list_config:
count = 1 count = 1
@ -407,12 +411,12 @@ def config_nameserver(map_s):
2. Нет 2. Нет
:""") :""")
if choose_reconf == "": if choose_reconf == "":
config_nameserver(map_s) return
elif choose_reconf == "1": elif choose_reconf == "1":
return name_server
else:
print_line("Введите новое имя сервера", flag="YELLOW") print_line("Введите новое имя сервера", flag="YELLOW")
config_nameserver(map_s) flag = True
else:
return
else: else:
list_config.append(name_server) # если enter, то ставим последним элементом карту list_config.append(name_server) # если enter, то ставим последним элементом карту
break break
@ -523,10 +527,8 @@ def config_backup(g, m):
if g == "ark": if g == "ark":
name_server = choose_map(g, m) name_server = choose_map(g, m)
if m == "all": if m == "all":
print_line(f"М: {m}, name_server: {name_server}")
all_empty = True # флаг all_empty = True # флаг
for i in name_server: for i in name_server:
print_line(f"{i},{g}")
data = read_yaml(g, m=i, flag=True) data = read_yaml(g, m=i, flag=True)
if 'ark_backup' not in data or data['ark_backup'] == "" or data['ark_backup'] == "False": if 'ark_backup' not in data or data['ark_backup'] == "" or data['ark_backup'] == "False":
all_empty = False # меняем флаг, если есть значение, которое не пустое all_empty = False # меняем флаг, если есть значение, которое не пустое
@ -783,7 +785,7 @@ def moddownload(g, m, id_mod, dir_mod_ark):
if os.path.isfile(uncompressed): if os.path.isfile(uncompressed):
os.remove(uncompressed) os.remove(uncompressed)
except Exception as e: except Exception as e:
print_line(e, flag="GREEN") print_line(e, flag="RED")
print_line(f"[x] Unpacking .z files failed, aborting mod install", flag="RED") print_line(f"[x] Unpacking .z files failed, aborting mod install", flag="RED")
return False return False
@ -829,6 +831,7 @@ def moddownload(g, m, id_mod, dir_mod_ark):
f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_mod_ark}/appworkshop_{id_game_workshop}.acf") f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_mod_ark}/appworkshop_{id_game_workshop}.acf")
@hlna.command(help='Выключение/включение серверов (без удаления) <hlna switch -m all -d') @hlna.command(help='Выключение/включение серверов (без удаления) <hlna switch -m all -d')
@click.argument('g', nargs=1) @click.argument('g', nargs=1)
@click.option("-m", required=True, help="Название cервера") @click.option("-m", required=True, help="Название cервера")
@ -841,18 +844,13 @@ def switch(g, m, e): # добавить all
create_dir(dir_deactivated) create_dir(dir_deactivated)
if e: if e:
port_s, query_p, rcon_p = ports_array() port_s, query_p, rcon_p = ports_array()
state_config1 = list_config if e else delist_config
state_config = delist_config if e else list_config
state_msg = "активных" if e else "не активных" state_msg = "активных" if e else "не активных"
for i in m: for i in m:
try: try:
state_config1 = list_config if e else delist_config
if i in state_config1:
print_line(f"Карта {i} уже есть в {state_msg}", flag="CYAN")
continue
data = read_yaml(g="ark", m=i, flag=not e) data = read_yaml(g="ark", m=i, flag=not e)
print_line(f"дата {data}", flag="RED")
if e: # добавить проверку занятости имени if e: # добавить проверку занятости имени
data['SessionName'] = config_nameserver(i, flag=False)[-1]
data['Port'] = ports(data['Port'], port_s, e) data['Port'] = ports(data['Port'], port_s, e)
data['QueryPort'] = ports(data['QueryPort'], port_s, e) data['QueryPort'] = ports(data['QueryPort'], port_s, e)
data['RCONPort'] = ports(data['RCONPort'], port_s, e) data['RCONPort'] = ports(data['RCONPort'], port_s, e)
@ -915,7 +913,7 @@ def status(list_config=list_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, flag=False) data = read_yaml(m=i,g="ark", flag=False)
print_line(f""" print_line(f"""
Имя сервера: {i} Имя сервера: {i}
Карта: {data['map']} Карта: {data['map']}
@ -1000,7 +998,6 @@ def start_stop(action, g, m):
def read_yaml(g="", m="", flag=True): def read_yaml(g="", m="", flag=True):
"""Читает конфиги активных или неактивных карт в зависимости от флага и отдаёт данные туда где их запросили""" """Читает конфиги активных или неактивных карт в зависимости от флага и отдаёт данные туда где их запросили"""
g = g.lower() g = g.lower()
print_line(f"g: {g}, m: {m}")
if g == "ark": if g == "ark":
if m == "all": if m == "all":
print_line("Не правильный вызов yaml, должен вызываться из цикла") print_line("Не правильный вызов yaml, должен вызываться из цикла")

@ -3,15 +3,45 @@ import os
import hlna import hlna
import time import time
import unittest import unittest
from unittest.mock import patch
import zipfile import zipfile
from click.testing import CliRunner from click.testing import CliRunner
from pathlib import Path from pathlib import Path
home_dir = Path.home() home_dir = Path.home()
config_hlna = f"{home_dir}/.config/hlna/" config_hlna = f"{home_dir}/.config/hlna/"
from unittest.mock import patch, MagicMock
from hlna import config
class TestConfig(unittest.TestCase):
@patch('builtins.input', side_effect=['1'])
@patch('hlna.config_ark')
def test_config_ark_valid(self, config_ark_mock, input_mock):
config()
config_ark_mock.assert_called_once()
@patch('builtins.input', side_effect=['2'])
@patch('hlna.config_7daystodie')
def test_config_7daystodie_valid(self, config_7daystodie_mock, input_mock):
config()
config_7daystodie_mock.assert_called_once()
@patch('builtins.input', side_effect=['3'])
@patch('sys.stdout', new_callable=MagicMock)
def test_config_invalid_game(self, mocked_stdout, input_mock):
config()
self.assertEqual(mocked_stdout.getvalue().strip(), "Пока есть только ARK и 7Days xD")
@patch('builtins.input', side_effect=['a', '1'])
@patch('hlna.config_ark')
@patch('sys.stdout', new_callable=MagicMock)
def test_config_invalid_input(self, mocked_stdout, config_ark_mock, input_mock):
config()
config_ark_mock.assert_called_once()
self.assertEqual(mocked_stdout.getvalue().strip(),
"Выберите игру для конфигурирования\n1. ARK Survival Evolved\n2. 7 Days to Die\n: ")
class TestFindFile(unittest.TestCase): class TestFindFile(unittest.TestCase):
def setUp(self): def setUp(self):
self.test_dir = 'test_dir' self.test_dir = 'test_dir'
@ -94,6 +124,13 @@ class TestBackup(unittest.TestCase):
self.assertEqual(zip_file.testzip(), None) self.assertEqual(zip_file.testzip(), None)
self.assertTrue(os.path.exists(os.path.join(target, f"{config_hlna}ARK/test_file.txt"))) self.assertTrue(os.path.exists(os.path.join(target, f"{config_hlna}ARK/test_file.txt")))
class TestGetExternalIP(unittest.TestCase):
def test_backup(self):
self.assertTrue(bool(hlna.get_external_ip()))
#class TestGetExternalIP(unittest.TestCase):
# def test_backup(self):
# self.assertTrue(bool(hlna.get_external_ip()))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()