3x-ui/changelog_RU_EN.md
Пичугин Константин df3e483797 see to changelog
2025-09-26 12:29:58 +03:00

6.7 KiB
Raw Blame History

📌 Changelog


🇬🇧 English

🔐 LDAP Integration for Client Access Management

  • Scheduled sync job reads LDAP and:
    • Enables/disables clients by client.email (local status storage, no LDAP lookups on connect).
    • Optionally auto-creates clients in selected inbounds if they dont exist yet.
    • Optionally auto-deletes clients from selected inbounds if they disappear in LDAP or access flag = deny.

⚙️ Access Flag Evaluation

  • Uses:
    • ldapFlagField (fallback: ldapVlessField if empty),
    • ldapTruthyValues (default: true, 1, yes, on),
    • ldapInvertFlag (useful for shadowInactive).
  • Example:
    shadowInactive=1 + ldapTruthyValues=1 + ldapInvertFlag=true → client disabled.
  • Matching: ldapUserAttr (e.g., mail) ↔ client.email.

🆕 New Settings

Panel → Settings → General → LDAP

  • Connection: ldapHost, ldapPort, ldapUseTLS, ldapBindDN, ldapPassword, ldapBaseDN.
  • User Search: ldapUserFilter, ldapUserAttr.
  • Access Flag: ldapFlagField (or ldapVlessField), ldapTruthyValues, ldapInvertFlag.
  • Scheduler: ldapEnable, ldapSyncCron (e.g., @every 1m).
  • Inbound Management (multi-select): ldapInboundTags.
  • Auto Actions: ldapAutoCreate, ldapAutoDelete.
  • Defaults for Auto-Create:
    • ldapDefaultTotalGB
    • ldapDefaultExpiryDays
    • ldapDefaultLimitIP (0 = unlimited).

👉 UI: ldapInboundTags options are fetched from /panel/inbound/list; a hint is shown if none exist.

🛠️ Auto-Create Rules

  • VLESS/VMESS: generate UUID, use security/flow from inbound.
  • Trojan: generate password, email = LDAP mail.
  • Shadowsocks: take method from inbound, generate password.
  • All protocols: enable from LDAP flag, limits/expiry from defaults.

🔧 Implementation

  • Sync job: web/job/ldap_sync_job.go
  • LDAP client: util/ldap/ldap.go (go-ldap/ldap/v3)
  • Backend: web/service/setting.go, web/entity/entity.go
  • Frontend:
    • web/assets/js/model/setting.js
    • web/html/settings/panel/general.html
    • web/html/settings.html
  • Xray restart: handled by scheduler when changes occur.

🗄️ External MySQL Database

  • Support added for external MySQL instead of local DB.
  • Docker env supports external DB parameters.
  • Panel starts as soon as DB is reachable.

🔄 Upgrade Notes

  • Frontend assets are version-busted (config/version) → hard refresh browser after update (Ctrl+F5).
  • If you previously used only vless_enabled, you can now use any LDAP attribute via ldapFlagField + ldapTruthyValues + ldapInvertFlag.
  • To enable auto-create, select inbounds in ldapInboundTags and enable ldapAutoCreate.

🇷🇺 Русский

🔐 Интеграция с LDAP для управления доступом клиентов

  • Периодическая синхронизация (cron):
    • Включает/выключает клиентов по client.email (локально, без онлайн-запросов).
    • Опционально автосоздаёт клиентов в выбранных инбаундах.
    • Опционально автоудаляет клиентов, если их нет в LDAP или флаг запрещает доступ.

⚙️ Логика проверки флага доступа

  • Используется:
    • ldapFlagField (если пусто → ldapVlessField),
    • ldapTruthyValues (по умолчанию: true,1,yes,on),
    • ldapInvertFlag (например, для shadowInactive).
  • Пример:
    shadowInactive=1 + ldapTruthyValues=1 + ldapInvertFlag=true → клиент отключён.
  • Сопоставление: ldapUserAttr (обычно mail) ↔ client.email.

🆕 Новые параметры

Панель → Settings → General → LDAP

  • Подключение: ldapHost, ldapPort, ldapUseTLS, ldapBindDN, ldapPassword, ldapBaseDN.
  • Поиск пользователей: ldapUserFilter, ldapUserAttr.
  • Флаг доступа: ldapFlagField (или ldapVlessField), ldapTruthyValues, ldapInvertFlag.
  • Планировщик: ldapEnable, ldapSyncCron (например, @every 1m).
  • Управление инбаундами: ldapInboundTags.
  • Автодействия: ldapAutoCreate, ldapAutoDelete.
  • Дефолты для автосоздания:
    • ldapDefaultTotalGB
    • ldapDefaultExpiryDays
    • ldapDefaultLimitIP (0 = безлимит).

👉 UI: ldapInboundTags выбираются из /panel/inbound/list. Если инбаундов нет — показывается подсказка.

🛠️ Правила автосоздания

  • VLESS/VMESS: генерируется UUID, параметры security/flow из инбаунда.
  • Trojan: генерируется пароль, email = mail из LDAP.
  • Shadowsocks: берёт method из инбаунда, генерирует пароль.
  • Все протоколы: статус включён/выключен по флагу, лимиты/срок из дефолтов.

🔧 Реализация

  • Job: web/job/ldap_sync_job.go
  • LDAP-клиент: util/ldap/ldap.go (go-ldap/ldap/v3)
  • Backend: web/service/setting.go, web/entity/entity.go
  • Frontend:
    • web/assets/js/model/setting.js
    • web/html/settings/panel/general.html
    • web/html/settings.html
  • Перезапуск Xray: флаг на изменения → обрабатывается планировщиком.

🗄️ Внешняя база MySQL

  • Поддержка подключения к внешней MySQL вместо локальной.
  • Docker-окружение принимает параметры внешней БД.
  • Панель стартует при доступности БД.

🔄 Замечания по обновлению

  • Версия фронтенда контролируется через config/version → после обновления сделайте жёсткое обновление страницы (Ctrl+F5).
  • Если раньше использовался только vless_enabled, теперь можно использовать произвольный атрибут (ldapFlagField + ldapTruthyValues + ldapInvertFlag).
  • Для автосоздания заранее выберите инбаунды в ldapInboundTags и включите ldapAutoCreate.