feat(api,install): исключения fail2ban и смена своего никнейма

- установщик: `[DEFAULT] ignoreip` в jail.local — локальные сети и WireGuard
  исключены всегда, свой адрес добавляется флагом `--ignore-ip <ip|cidr>`;
  админ, часто заходящий в панель, больше не банит сам себя;
- участник может менять свой никнейм на сервере без MANAGE_NICKNAMES и без
  проверки иерархии (тайм-аут на себя по-прежнему запрещён);
- тест на смену своего ника и запрет self-тайм-аута.
This commit is contained in:
2026-09-19 23:27:26 +03:00
parent ac2b2cb18a
commit 0a82dd3a02
4 changed files with 62 additions and 4 deletions
+6
View File
@@ -1,4 +1,10 @@
# Сгенерировано deploy/install.sh — не редактируйте вручную.
# Исключения: локальные и доверенные адреса не банятся никогда. Админ,
# который часто перезаходит в панель, не должен блокировать сам себя
# (AGENT.md 9.6: баны за атаки, а не за работу).
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 ${FAIL2BAN_IGNOREIP}
# Jail для неудачных входов в приложение (AGENT.md 9.6).
[glchat-auth]
enabled = true
+8 -1
View File
@@ -81,6 +81,9 @@ ADMIN_EMAIL="${ADMIN_EMAIL:-}"
ENABLE_ADMIN_2FA="${ENABLE_ADMIN_2FA:-0}"
# Явная ротация секретов: по умолчанию секреты существующего .env сохраняются.
ROTATE_SECRETS="${ROTATE_SECRETS:-0}"
# Список адресов, которые fail2ban не банит. Локальные сети и WireGuard-туннель
# добавляются всегда: иначе администратор блокирует сам себя при работе в панели.
FAIL2BAN_IGNOREIP="${FAIL2BAN_IGNOREIP:-192.168.0.0/16 10.0.0.0/8 172.16.0.0/12}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-}"
REGISTRATION_ENABLED="${REGISTRATION_ENABLED:-true}"
TURN_ENABLED="${TURN_ENABLED:-true}"
@@ -121,6 +124,9 @@ install.sh — установка glchat (AGENT.md 10).
--email <email> email для Let's Encrypt (обязателен, если TLS включён)
--admin <email> логин инстанс-администратора
--password <password> пароль инстанс-администратора (иначе — интерактивный ввод)
--ignore-ip <ip|cidr> адрес, который fail2ban никогда не банит
(можно указывать несколько раз; локальные сети
и WireGuard уже включены по умолчанию)
--rotate-secrets сменить секреты (MASTER_KEY, SESSION_PEPPER и др.):
ломает существующие данные, нужен чистый инстанс
--admin-2fa включить 2FA инстанс-админу и напечатать секрет и
@@ -193,6 +199,7 @@ parse_args() {
--password) ADMIN_PASSWORD="${2:?}"; shift 2 ;;
--admin-2fa) ENABLE_ADMIN_2FA=1; shift ;;
--rotate-secrets) ROTATE_SECRETS=1; shift ;;
--ignore-ip) FAIL2BAN_IGNOREIP="${FAIL2BAN_IGNOREIP} ${2:?}"; shift 2 ;;
--instance-name) INSTANCE_NAME="${2:?}"; shift 2 ;;
--main-guild) MAIN_GUILD_NAME="${2:?}"; shift 2 ;;
--ssh-port) SSH_PORT="${2:?}"; shift 2 ;;
@@ -1091,7 +1098,7 @@ render_all_templates() {
if [ "$ENABLE_FAIL2BAN" = "true" ]; then
render_template "${DEPLOY_DIR}/fail2ban/jail.local.tpl" "${TARGET_DIR}/fail2ban/jail.local" \
"SSH_PORT=${SSH_PORT}"
"SSH_PORT=${SSH_PORT}" "FAIL2BAN_IGNOREIP=${FAIL2BAN_IGNOREIP}"
fi
if [ "$ENABLE_NFTABLES" = "true" ]; then