version 1.3.3: выбор сложности пароля (лёгкий/сложный)

- app.py: gen_password(mode), api_users_create принимает password_mode
- bot.py: меню выбора сложности перед созданием, gen_password(mode)
- mita-ctl.sh: запрос сложности в menu_users, _create_user с pwd_mode
- templates/index.html: селектор «Сложность пароля» в форме создания
- README: обновлена дорожная карта
This commit is contained in:
2026-06-28 15:11:17 +03:00
parent 6e74b9e539
commit e75e5ee211
5 changed files with 63 additions and 16 deletions
+7 -5
View File
@@ -141,10 +141,11 @@ def mita_cmd(*args):
r = subprocess.run(["mita", *args], capture_output=True, text=True)
return r.stdout.strip()
def gen_password(length=64):
# Буквы и цифры только — спецсимволы могут ломать mita protobuf парсинг
# Используем расширенный безопасный набор без проблемных символов
chars = string.ascii_letters + string.digits + "!@#%^*_-=+?."
def gen_password(length=64, mode="hard"):
if mode == "easy":
chars = string.ascii_letters + string.digits + "-._~*+"
else:
chars = string.ascii_letters + string.digits + "!@#%^*_-=+?."
return "".join(secrets.choice(chars) for _ in range(length))
def gen_username():
@@ -509,6 +510,7 @@ def api_users_create():
count = int(data.get("count", 1))
mode = data.get("mode", "manual") # manual | auto
names = data.get("names", []) # для manual
pwd_mode = data.get("password_mode", "hard") # easy | hard
cfg = load_mita_config()
existing = {u["name"] for u in cfg.get("users", [])}
@@ -527,7 +529,7 @@ def api_users_create():
if name in existing:
continue
password = gen_password()
password = gen_password(mode=pwd_mode)
cfg.setdefault("users", []).append({"name": name, "password": password})
existing.add(name)
created.append({