From e301e333cb2553f7f4c80c05229cfec55eddca41 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Tue, 14 Jan 2025 16:56:09 +0300 Subject: [PATCH] Settings parameters moved to environment variables --- README.md | 95 ++++++++++++++++++++++++++++++++++++++++ README.ru_RU.md | 96 +++++++++++++++++++++++++++++++++++++++++ config/config.go | 2 - database/db.go | 27 ++++++++---- db/x-ui.db | Bin 0 -> 49152 bytes docker-compose.yml | 2 +- web/service/setting.go | 94 ++++++++++++++++++++++------------------ 7 files changed, 261 insertions(+), 55 deletions(-) create mode 100644 db/x-ui.db diff --git a/README.md b/README.md index 6d765f54..1d77d80a 100644 --- a/README.md +++ b/README.md @@ -533,6 +533,101 @@ Enter the user ID in input field number 4. The Telegram accounts with this id wi
Click for environment variables details +### Set startup settings via environment variables + +WEB_LISTEN - Panel listening domain / By default, leave blank to monitor all domains and IP addresses + +WEB_DOMAIN Panel IP address / Leave blank to connect from any IP + +WEB_PORT - Port used to display this panel + +WEB_CERT_FILE - Path to the panel's public key file / Enter the full path starting with '/' + +WEB_KEY_FILE - Path to the panel's private key file / Enter the full path starting with '/' + +WEB_BASE_PATH - Root path of the panel's URL +Must start with '/' and end with '/' + +SESSION_MAX_AGE - Session duration +Duration of a session in the system (value: minute) + +PAGE_SIZE - Pagination size +Define the page size for the incoming table. Set to 0 to disable + +EXPIRE_DIFF - Session expiration threshold for notification +Receive notification about session expiration before reaching the threshold (value: day) + +TRAFFIC_DIFF - Traffic threshold for notification +Receive notification about traffic exhaustion before reaching the threshold (value: GB) + +TIME_LOCATION (def. "Asia/Tehran")- Time zone +Scheduled tasks are executed according to the time in this time zone + +TG_BOT_ENABLE (def. "false") - Enable Telegram bot +Connect to the functions of this panel via Telegram bot + +TG_BOT_TOKEN - Telegram bot token +You need to get a token from Telegram bot manager @botfather + +TG_BOT_PROXY- Socks5 proxy +If you need a Socks5 proxy to connect to Telegram. Configure its parameters according to the manual. + +TG_BOT_API_SERVER - Telegram API Server +The Telegram API server to use. Leave blank to use the default server. + +TG_BOT_CHAT_ID - Bot Admin Telegram ID +One or more bot admin IDs. To get the ID, use @userinfobot or the '/id' command in the bot. + +TG_RUN_TIME - Telegram bot notification frequency +Use Crontab time format + +TG_BOT_BACKUP - Database Backup +Include database backup file with report notification + +TG_BOT_LOGIN_NOTIFY - Login Notification +Displays the username, IP address, and time when someone tries to log into your dashboard. + +TG_CPU - CPU load threshold for notification +Receive notification if CPU load exceeds this threshold (value: %) + +TG_LANG - Telegram bot language (def. "en-US") + +SUB_ENABLE - Enable service +Subscription feature with separate configuration + +SUB_LISTEN - IP listening +Leave empty by default to monitor all IP addresses + +SUB_PORT - Subscription port +The port number for serving the subscription service should not be used on the server + +SUB_PATH - Root path of the subscription URL +Must start with '/' and end with '/' + +SUB_DOMAIN - Listening domain +Leave empty by default to monitor all domains and IP addresses + +SUB_CERT_FILE - Path to the public key file of the subscription certificate +Enter the full path starting with '/' + +SUB_KEY_FILE - Path to subscription certificate private key file +Enter full path starting with '/' + +SUB_UPDATES - Subscription update intervals +Interval between updates in client application (in hours) + +SUB_ENCRYPT - Encrypt configs +Encrypt returned configs in subscription + +SUB_SHOW_INFO - Show usage information +Show remaining traffic and date after config name + +SUB_URI - Reverse proxy URI +Change base URI of subscription URL for use behind proxy servers + +DATEPICKER (def. gregorian) - Date picker +Scheduled tasks are executed according to this calendar + #### Usage | Variable | Type | Default | diff --git a/README.ru_RU.md b/README.ru_RU.md index 448a3a66..ed989d7b 100644 --- a/README.ru_RU.md +++ b/README.ru_RU.md @@ -177,6 +177,7 @@ systemctl restart x-ui Добавьте параметр ```--pull always``` для автоматического обновления контейнера, когда публикуется новый образ. Подробности: https://docs.docker.com/reference/cli/docker/container/run/#pull + **ИЛИ** ```sh @@ -531,6 +532,101 @@ WARP встроен, и дополнительная установка не т
Нажмите для получения информации о переменных среды +### Задать стартовые настройки через переменные окружения + +WEB_LISTEN - Домен прослушивания панели / По умолчанию оставьте пустым, чтобы отслеживать все домены и IP-адреса + +WEB_DOMAIN IP-адрес панели / Оставьте пустым для подключения с любого IP + +WEB_PORT - Порт, используемый для отображения этой панели + +WEB_CERT_FILE - Путь к файлу публичного ключа сертификата панели / Введите полный путь, начинающийся с '/' + +WEB_KEY_FILE - Путь к файлу приватного ключа сертификата панели / Введите полный путь, начинающийся с '/' + +WEB_BASE_PATH - Корневой путь URL адреса панели +Должен начинаться с '/' и заканчиваться на '/' + +SESSION_MAX_AGE - Продолжительность сессии +Продолжительность сессии в системе (значение: минута) + +PAGE_SIZE - Размер нумерации страниц +Определить размер страницы для входящей таблицы. Установите 0, чтобы отключить + +EXPIRE_DIFF - Порог истечения срока сессии для уведомления +Получение уведомления об истечении срока действия сессии до достижения порогового значения (значение: день) + +TRAFFIC_DIFF - Порог трафика для уведомления +Получение уведомления об исчерпании трафика до достижения порога (значение: ГБ) + +TIME_LOCATION (def. "Asia/Tehran")- Часовой пояс +Запланированные задачи выполняются в соответствии со временем в этом часовом поясе + +TG_BOT_ENABLE (def. "false") - Включить Telegram бота +Подключайтесь к функциям этой панели через Telegram бота + +TG_BOT_TOKEN - Токен Telegram бота +Необходимо получить токен у менеджера ботов Telegram @botfather + +TG_BOT_PROXY- Прокси Socks5 +Если для подключения к Telegram вам нужен прокси Socks5. Настройте его параметры согласно руководству. + +TG_BOT_API_SERVER - API-сервер Telegram +Используемый API-сервер Telegram. Оставьте пустым, чтобы использовать сервер по умолчанию. + +TG_BOT_CHAT_ID - Идентификатор Telegram администратора бота +Один или несколько идентификаторов администратора бота. Чтобы получить идентификатор, используйте @userinfobot или команду '/id' в боте. + +TG_RUN_TIME - Частота уведомлений бота Telegram +Используйте формат времени Crontab + +TG_BOT_BACKUP - Резервное копирование базы данных +Включать файл резервной копии базы данных с уведомлением об отчете + +TG_BOT_LOGIN_NOTIFY - Уведомление о входе +Отображает имя пользователя, IP-адрес и время, когда кто-то пытается войти в вашу панель. + +TG_CPU - Порог нагрузки на ЦП для уведомления +Получение уведомления, если нагрузка на ЦП превышает этот порог (значение: %) + +TG_LANG - Язык телеграмм бота (def. "en-US") + +SUB_ENABLE - Включить службу +Функция подписки с отдельной конфигурацией + +SUB_LISTEN - Прослушивание IP +Оставьте пустым по умолчанию, чтобы отслеживать все IP-адреса + +SUB_PORT - Порт подписки +Номер порта для обслуживания службы подписки не должен использоваться на сервере + +SUB_PATH - Корневой путь URL-адреса подписки +Должен начинаться с '/' и заканчиваться на '/' + +SUB_DOMAIN - Домен прослушивания +Оставьте пустым по умолчанию, чтобы отслеживать все домены и IP-адреса + +SUB_CERT_FILE - Путь к файлу открытого ключа сертификата подписки +Введите полный путь, начинающийся с '/' + +SUB_KEY_FILE - Путь к файлу закрытого ключа сертификата подписки +Введите полный путь, начинающийся с '/' + +SUB_UPDATES - Интервалы обновления подписки +Интервал между обновлениями в клиентском приложении (в часах) + +SUB_ENCRYPT - Шифровать конфиги +Шифровать возвращенные конфиги в подписке + +SUB_SHOW_INFO - Показать информацию об использовании +Показывать оставшиеся трафик и дату после имени конфигурации + +SUB_URI - URI обратного прокси +Изменить базовый URI URL-адреса подписки для использования за прокси-серверами + +DATEPICKER (def. gregorian) - Выбор даты +Запланированные задачи выполняются в соответствии с данным календарём + #### Использование | Переменная | Тип | Значение по умолчанию | diff --git a/config/config.go b/config/config.go index 70be5ae6..e0c1491a 100644 --- a/config/config.go +++ b/config/config.go @@ -7,10 +7,8 @@ import ( "strings" ) -//go:embed version var version string -//go:embed name var name string type LogLevel string diff --git a/database/db.go b/database/db.go index 300a73c0..48e04aa0 100644 --- a/database/db.go +++ b/database/db.go @@ -19,12 +19,6 @@ import ( var db *gorm.DB -const ( - defaultUsername = "admin" - defaultPassword = "admin" - defaultSecret = "" -) - func initModels() error { models := []interface{}{ &model.User{}, @@ -50,10 +44,25 @@ func initUser() error { return err } if empty { + username := os.Getenv("DEFAULT_USERNAME") + if username == "" { + username = "admin" + } + + password := os.Getenv("DEFAULT_PASSWORD") + if password == "" { + password = "admin" + } + + secret := os.Getenv("DEFAULT_SECRET") + if secret == "" { + secret = "" + } + user := &model.User{ - Username: defaultUsername, - Password: defaultPassword, - LoginSecret: defaultSecret, + Username: username, + Password: password, + LoginSecret: secret, } return db.Create(user).Error } diff --git a/db/x-ui.db b/db/x-ui.db new file mode 100644 index 0000000000000000000000000000000000000000..26b1a43aa7a25b6515fa54abc5ed3a5cbe7b0dd6 GIT binary patch literal 49152 zcmeI*&u-&H90zbaY4f+idjYGeDp_!8Xhg^^i{P*lA?vQ9w&~VQ7Rn`dok?Vp*r`44 zb`e6ft9_SByba5}t<;;Xwxsrl-Jo(#H#k3sYSdAsy(2|# zK5O}>!%p<}49b!s@5zeXYRD&2xWZ9=jB;$}u4#lj4TZbGNp@Pz2AJ=l}v`>UBBaxAb*Cet29#x{+ zAgofPUq!k^yoW_s#Cug_&3sT3_3Qdaoi%hXRW8>v8L?Ac6v5;^YKg4u^^a*kfN%Dr zO+9Sj&RU!;XaKA!{^!xkb%-4wsv>BK!6*(?QEk?S?P18B9OUjCyGDjX2^-?3W8cKG zZwIc5IDFv$yls=y%^hkJZQPyDjs)E?4K}`;vqqqeMwYJ8plK$?tkCSv2v*lJ zVq<$z1ZPFVp69HyOK#4)>^@IryerS?wA)QbIES3O#MDVJ;DyO_EQWI{cT8$Z1+@q2g4 zJHrPYC;aIxV1fVyAOHafKmY;|fB*y_009U<;2jVU_;pScOImMinEuTB{GS$n<%EBP zKiC^42tWV=5P$##AOHafKmY;|fB*zmLg4*$y2>Y>K1mf*>Fs>@s6~!Xi+TU)g7E(T zN}L)h2>}Q|00Izz00bZa0SG_<0uX?}QUV396np+369gat0SG_<0uX=z1Rwwb2tWV= z@2-G%|34-C&Iy09872ro00Izz00bZa0SG_<0uX=z1XfjGBbDJcbGcm4u!&Afe1_X% zsWbLXibK-#?*FHRx18`dn_+?g1Rwwb2tWV=5P$##AOHafKw!lM3h7OL`X_)?A-$Ck zKL307|9Rmzj{RVQ00bZa0SG_<0uX=z1Rwwb2tZ(k1U}~1xXr`qzxmVmzp!oPGlgD! z{^G)sj~{;9uGhXlbDus|zO4Q5Y=H0oTcN