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

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

@ -3,15 +3,45 @@ import os
import hlna
import time
import unittest
from unittest.mock import patch
import zipfile
from click.testing import CliRunner
from pathlib import Path
home_dir = Path.home()
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):
def setUp(self):
self.test_dir = 'test_dir'
@ -94,6 +124,13 @@ class TestBackup(unittest.TestCase):
self.assertEqual(zip_file.testzip(), None)
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__':
unittest.main()