From f7198c4c2f8111171832be3f470d952d742e5d6c Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Tue, 18 Mar 2025 13:39:07 +0100 Subject: [PATCH 1/4] Update index.html --- web/html/xui/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/html/xui/index.html b/web/html/xui/index.html index dc9b4750..f98e9716 100644 --- a/web/html/xui/index.html +++ b/web/html/xui/index.html @@ -299,16 +299,16 @@ - + - + From fa5fb927c1fbe4dc969a2f804ea89a9511bede9c Mon Sep 17 00:00:00 2001 From: somebodywashere <68244480+somebodywashere@users.noreply.github.com> Date: Tue, 18 Mar 2025 15:47:58 +0300 Subject: [PATCH 2/4] Update to regular cert issue (#2790) --- x-ui.sh | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/x-ui.sh b/x-ui.sh index 87d18262..36a98b23 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -1136,10 +1136,36 @@ ssl_cert_issue() { LOGE "Issuing certificate succeeded, installing certificates..." fi + reloadCmd="x-ui restart" + + LOGI "Default --reloadcmd for ACME is: ${yellow}x-ui restart" + LOGI "This command will run on every certificate issue and renew." + read -p "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd + if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then + echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" + echo -e "${green}\t2.${plain} Input your own command" + echo -e "${green}\t0.${plain} Keep default reloadcmd" + read -p "Choose an option: " choice + case "$choice" in + 1) + LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" + reloadCmd="systemctl reload nginx ; x-ui restart" + ;; + 2) + LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" + read -p "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd + LOGI "Your reloadcmd is: ${reloadCmd}" + ;; + *) + LOGI "Keep default reloadcmd" + ;; + esac + fi + # install the certificate ~/.acme.sh/acme.sh --installcert -d ${domain} \ --key-file /root/cert/${domain}/privkey.pem \ - --fullchain-file /root/cert/${domain}/fullchain.pem + --fullchain-file /root/cert/${domain}/fullchain.pem --reloadcmd "${reloadCmd}" if [ $? -ne 0 ]; then LOGE "Installing certificate failed, exiting." @@ -1261,17 +1287,18 @@ ssl_cert_issue_CF() { LOGI "This command will run on every certificate issue and renew." read -p "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then - echo -e "\n${green}\t1.${plain} Preset: x-ui restart ; systemctl reload nginx" + echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" echo -e "${green}\t2.${plain} Input your own command" echo -e "${green}\t0.${plain} Keep default reloadcmd" read -p "Choose an option: " choice case "$choice" in 1) - LOGI "Reloadcmd is: x-ui restart ; systemctl reload nginx" - reloadCmd="x-ui restart ; systemctl reload nginx" + LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" + reloadCmd="systemctl reload nginx ; x-ui restart" ;; - 2) - read -p "Please enter your reloadcmd (example: x-ui restart ; systemctl reload nginx): " reloadCmd + 2) + LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" + read -p "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd LOGI "Your reloadcmd is: ${reloadCmd}" ;; *) @@ -1282,6 +1309,7 @@ ssl_cert_issue_CF() { ~/.acme.sh/acme.sh --installcert -d ${CF_Domain} -d *.${CF_Domain} \ --key-file ${certPath}/privkey.pem \ --fullchain-file ${certPath}/fullchain.pem --reloadcmd "${reloadCmd}" + if [ $? -ne 0 ]; then LOGE "Certificate installation failed, script exiting..." exit 1 From d52c50fd9ec8c74ca42a2682d8e5991b171f0c70 Mon Sep 17 00:00:00 2001 From: Kirill Dunaev <83133484+saberkovich@users.noreply.github.com> Date: Tue, 18 Mar 2025 18:56:58 +0500 Subject: [PATCH 3/4] Russian translation fixes (#2792) --- web/translation/translate.ru_RU.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index dcaf0855..d97e0a35 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -41,7 +41,7 @@ "offline" = "Офлайн" "online" = "Онлайн" "domainName" = "Домен" -"monitor" = "Слушать IP" +"monitor" = "Мониторинг IP" "certificate" = "Цифровой сертификат" "fail" = "Ошибка" "comment" = "Комментарий" @@ -187,7 +187,7 @@ "emailDesc" = "Пожалуйста, укажите уникальный Email" "IPLimit" = "Лимит по IP" "IPLimitDesc" = "Ограничение количества подключений с одного IP (0 – отключить)" -"IPLimitlog" = "IP лог" +"IPLimitlog" = "Лог IP-адресов" "IPLimitlogDesc" = "Лог IP-адресов (перед включением лога IP-адресов, вы должны очистить список)" "IPLimitlogclear" = "Очистить лог" "setDefaultCert" = "Установить сертификат с панели" @@ -258,7 +258,7 @@ "privateKeyPath" = "Путь к файлу приватного ключа сертификата панели" "privateKeyPathDesc" = "Введите полный путь, начинающийся с '/'" "panelUrlPath" = "Корневой путь URL адреса панели" -"panelUrlPathDesc" = "Должен начинаться с '/' и заканчиваться на '/'" +"panelUrlPathDesc" = "Должен начинаться с '/' и заканчиваться '/'" "pageSize" = "Размер нумерации страниц" "pageSizeDesc" = "Определить размер страницы для входящей таблицы. Установите 0, чтобы отключить" "remarkModel" = "Модель примечания и символ разделения" @@ -279,7 +279,7 @@ "telegramAPIServer" = "API-сервер Telegram" "telegramAPIServerDesc" = "Используемый API-сервер Telegram. Оставьте пустым, чтобы использовать сервер по умолчанию." "telegramChatId" = "Идентификатор Telegram администратора бота" -"telegramChatIdDesc" = "Один или несколько идентификаторов администратора бота. Чтобы получить идентификатор, используйте @userinfobot или команду '/id' в боте." +"telegramChatIdDesc" = "Один или несколько идентификаторов администратора бота. Для получения идентификатора используйте @userinfobot или команду '/id' в боте." "telegramNotifyTime" = "Частота уведомлений бота Telegram" "telegramNotifyTimeDesc" = "Укажите интервал уведомлений в формате Crontab" "tgNotifyBackup" = "Резервное копирование базы данных" @@ -297,7 +297,7 @@ "timeZone" = "Часовой пояс" "timeZoneDesc" = "Запланированные задачи выполняются в соответствии со временем в этом часовом поясе" "subSettings" = "Подписка" -"subEnable" = "Включить службу" +"subEnable" = "Включить подписку" "subEnableDesc" = "Функция подписки с отдельной конфигурацией" "subTitle" = "Заголовок подписки" "subTitleDesc" = "Название подписки, которое видит клиент в VPN клиенте" @@ -360,9 +360,9 @@ "basicRouting" = "Базовые соединения" "blockConnectionsConfigsDesc" = "Эти параметры будут блокировать трафик в зависимости от запрашиваемой страны." "directConnectionsConfigsDesc" = "Прямое соединение гарантирует, что определенный трафик не будет перенаправлен через другой сервер." -"blockips" = "Блокировать IP" +"blockips" = "Блокировать IP-адреса" "blockdomains" = "Блокировать домены" -"directips" = "Прямые IP" +"directips" = "Прямые IP-адреса" "directdomains" = "Прямые домены" "ipv4Routing" = "Правила IPv4" "ipv4RoutingDesc" = "Эти параметры позволят пользователям маршрутизироваться к целевым доменам только через IPv4" @@ -419,7 +419,7 @@ "info" = "Информация" "add" = "Добавить правило" "edit" = "Редактировать правило" -"useComma" = "Элементы, разделенные запятыми" +"useComma" = "Элементы, разделённые запятыми" [pages.xray.outbound] "addOutbound" = "Добавить исходящий" @@ -529,7 +529,7 @@ "usage" = "❗ Пожалуйста, укажите текст для поиска!" "getID" = "🆔 Ваш ID: {{ .ID }}" "helpAdminCommands" = "Для перезапуска Xray Core:\r\n/restart\r\n\r\nДля поиска электронной почты клиента:\r\n/usage [Email]\r\n\r\nДля поиска входящих (со статистикой клиента):\r\n/inbound [Примечание]\r\n\r\nID чата Telegram:\r\n/id" -"helpClientCommands" = "Для поиска статистики используйте следующую команду:\r\n/usage [Email]\r\n\r\nID чата Telegram:\r\n/id" +"helpClientCommands" = "Для поиска статистики используйте команду:\r\n/usage [Email]\r\n\r\nID чата Telegram:\r\n/id" "restartUsage" = "\r\n\r\n/restart" "restartSuccess" = "✅ Операция успешно завершена!" "restartFailed" = "❗ Ошибка в операции.\r\n\r\nОшибка: {{ .Error }}." From 6e5ed881f23c59603ce68629cd7fe643527f0052 Mon Sep 17 00:00:00 2001 From: "Shishkevich D." <135337715+shishkevichd@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:06:55 +0700 Subject: [PATCH 4/4] chore: pretty `Inbounds` page (#2791) * chore: pretty 'Inbounds' page * chore: return styles for aCustomStatistic styles was intended to properly display a-statistic in the app, but for some unknown reason it was removed * fix: switch style in dark mode --------- --- web/html/xui/component/aCustomStatistic.html | 12 + web/html/xui/inbounds.html | 773 ++++++++++--------- web/html/xui/index.html | 13 +- web/translation/translate.en_US.toml | 2 + web/translation/translate.es_ES.toml | 2 + web/translation/translate.fa_IR.toml | 2 + web/translation/translate.id_ID.toml | 2 + web/translation/translate.ja_JP.toml | 2 + web/translation/translate.pt_BR.toml | 2 + web/translation/translate.ru_RU.toml | 2 + web/translation/translate.tr_TR.toml | 2 + web/translation/translate.uk_UA.toml | 2 + web/translation/translate.vi_VN.toml | 2 + web/translation/translate.zh_CN.toml | 2 + web/translation/translate.zh_TW.toml | 2 + 15 files changed, 445 insertions(+), 377 deletions(-) diff --git a/web/html/xui/component/aCustomStatistic.html b/web/html/xui/component/aCustomStatistic.html index a8ede41c..0bff128d 100644 --- a/web/html/xui/component/aCustomStatistic.html +++ b/web/html/xui/component/aCustomStatistic.html @@ -12,6 +12,18 @@ {{end}} {{define "component/aCustomStatistic"}} + + {{template "component/aThemeSwitch" .}} +{{template "component/aCustomStatistic" .}} {{template "component/aPersianDatepicker" .}}