Browse Source

Merge branch 'dev' into feat/devcontainer

Jacky 4 months ago
parent
commit
c85a570396

+ 3 - 3
README-es.md

@@ -246,7 +246,7 @@ go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/sett
 **Instalar and Actualizar**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 El puerto de escucha predeterminado es `9000` y el puerto de Desafío HTTP predeterminado es `9180`.
 Si hay un conflicto de puertos, modifique manualmente `/usr/local/etc/nginx-ui/app.ini`,
@@ -255,13 +255,13 @@ luego use `systemctl restart nginx-ui` para recargar el servicio de UI de Nginx.
 **Eliminar UI Nginx UI, excepto los archivos de configuración y la base de datos**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ### Uso avanzado
 
 ````shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ````
 
 ## Ejemplo de configuración de proxy reverso de Nginx

+ 4 - 4
README-vi_VN.md

@@ -300,7 +300,7 @@ go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/sett
 **Cài đặt và nâng cấp**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 Port mặc định để truy cập UI là `9000`, port HTTP Challenge mặc định để xác thực SSL là `9180`.
 Nếu có xung đột port, vui lòng sửa đổi trong file `/usr/local/etc/nginx-ui/app.ini`,
@@ -309,19 +309,19 @@ hãy nhớ restart nginx-ui bằng lệnh `systemctl restart nginx-ui` mỗi khi
 **Gỡ bỏ Nginx UI nhưng giữ lại các tệp cấu hình và cơ sở dữ liệu**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 **Gỡ bỏ Nginx UI đồng thời xoá các tệp cấu hình, cơ sở dữ liệu**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove --purge
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove --purge
 ```
 
 ### Trợ giúp
 
 ````shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ````
 
 ## Ví dụ về cấu hình Nginx Reverse Proxy

+ 3 - 3
README-zh_CN.md

@@ -240,20 +240,20 @@ go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/sett
 **安装或升级**
 
 ```shell
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install -r https://mirror.ghproxy.com/
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install -r https://mirror.ghproxy.com/
 ```
 一键安装脚本默认设置的监听端口为 `9000`,HTTP Challenge 端口默认为 `9180`,如果出现端口冲突请进入 `/usr/local/etc/nginx-ui/app.ini` 修改,并使用 `systemctl restart nginx-ui` 重启 Nginx UI 服务。
 
 **卸载 Nginx UI 但保留配置和数据库文件**
 
 ```shell
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ### 更多用法
 
 ````shell
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ````
 
 ## Nginx 反向代理配置示例

+ 3 - 3
README-zh_TW.md

@@ -245,7 +245,7 @@ go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/sett
 **安裝或升級**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 
 一鍵安裝指令預設的監聽連接埠為 `9000`,HTTP Challenge 埠預設為 `9180`,如果出現連接埠衝突請修改 `/usr/local/etc/nginx-ui/app.ini`,並使用 `systemctl restart nginx-ui` 重啟 Nginx UI 守護行程。
@@ -253,13 +253,13 @@ bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/instal
 **解除安裝 Nginx UI 但保留設定和資料庫檔案**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ### 更多用法
 
 ````shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ````
 
 ## Nginx 反向代理設定範例

+ 8 - 4
README.md

@@ -102,11 +102,15 @@ URL:[https://demo.nginxui.com](https://demo.nginxui.com)
 
 ### Internationalization
 
+We proudly offer official support for:
+
 - English
 - Simplified Chinese
 - Traditional Chinese
 
-We welcome translations into any language.
+As non-native English speakers, we strive for accuracy, but we know there’s always room for improvement. If you spot any issues, we’d love your feedback!
+
+Thanks to our amazing community, additional languages are also available! Explore and contribute to translations on [Weblate](https://weblate.nginxui.com).
 
 ### Built With
 
@@ -302,7 +306,7 @@ go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/sett
 **Install and Upgrade**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 The default listening port is `9000`, and the default HTTP Challenge port is `9180`.
 If there is a port conflict, please modify `/usr/local/etc/nginx-ui/app.ini` manually,
@@ -311,13 +315,13 @@ then use `systemctl restart nginx-ui` to reload the Nginx UI service.
 **Remove Nginx UI, except configuration and database files**
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ### More Usage
 
 ````shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ````
 
 ## Example of Nginx Reverse Proxy Configuration

+ 24 - 24
app/src/language/zh_TW/app.po

@@ -1,12 +1,13 @@
 # OpenAI <noreply-mt-openai@weblate.org>, 2024.
 # Hintay Lin <hintay@me.com>, 2024.
 # Weblate <noreply-mt-weblate@weblate.org>, 2024.
+# "Xaver Y.R. Chen" <yrchen@atcity.org>, 2025.
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2024-07-31 15:47+0000\n"
-"Last-Translator: Hintay Lin <hintay@me.com>\n"
+"PO-Revision-Date: 2025-02-01 18:25+0000\n"
+"Last-Translator: \"Xaver Y.R. Chen\" <yrchen@atcity.org>\n"
 "Language-Team: Chinese (Traditional) <https://weblate.nginxui.com/projects/"
 "nginx-ui/frontend/zh_Hant/>\n"
 "Language: zh_TW\n"
@@ -64,7 +65,7 @@ msgstr "新增"
 #: src/views/preference/components/AddPasskey.vue:45
 #: src/views/preference/components/AddPasskey.vue:49
 msgid "Add a passkey"
-msgstr ""
+msgstr "新增通行密鑰"
 
 #: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144
 #: src/views/config/ConfigEditor.vue:204
@@ -103,12 +104,12 @@ msgstr "進階模式"
 
 #: src/views/preference/components/AddPasskey.vue:99
 msgid "Afterwards, refresh this page and click add passkey again."
-msgstr ""
+msgstr "然後,重新整理此頁面並再次點選新增通行密鑰。"
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/views/site/site_list/SiteList.vue:98
 msgid "All"
-msgstr ""
+msgstr "全部"
 
 #: src/views/preference/OpenAISettings.vue:44
 msgid "API Base Url"
@@ -116,7 +117,7 @@ msgstr "API 基礎網址"
 
 #: src/views/certificate/DNSChallenge.vue:83
 msgid "API Document"
-msgstr "API 文"
+msgstr "API 文"
 
 #: src/views/preference/OpenAISettings.vue:57
 msgid "API Proxy"
@@ -133,7 +134,7 @@ msgstr "API Token"
 
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
-msgstr ""
+msgstr "套用"
 
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:67
 #, fuzzy
@@ -149,9 +150,8 @@ msgid "Are you sure to delete this banned IP immediately?"
 msgstr "您確定要刪除這個被禁用的 IP 嗎?"
 
 #: src/views/preference/components/Passkey.vue:113
-#, fuzzy
 msgid "Are you sure to delete this passkey immediately?"
-msgstr "您確定要刪除這個被禁用的 IP 嗎?"
+msgstr "您確定要刪除這個被禁用的通行密鑰嗎?"
 
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96
 #, fuzzy
@@ -219,11 +219,11 @@ msgstr "身份驗證"
 
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Authenticate with a passkey"
-msgstr ""
+msgstr "使用通行密鑰認證"
 
 #: src/views/preference/AuthSettings.vue:60
 msgid "Authentication Settings"
-msgstr ""
+msgstr "認證設定"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:106
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:120
@@ -287,9 +287,8 @@ msgid "Basic Mode"
 msgstr "基本模式"
 
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
-#, fuzzy
 msgid "Batch Actions"
-msgstr "操作"
+msgstr "批次操作"
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:448
@@ -352,7 +351,7 @@ msgstr "系統初始使用者"
 #: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/site/site_list/columns.tsx:25
 msgid "Category"
-msgstr ""
+msgstr "類別"
 
 #: src/views/preference/Preference.vue:158
 #, fuzzy
@@ -361,7 +360,7 @@ msgstr "自動憑證"
 
 #: src/constants/errors/cert.ts:3
 msgid "Cert path is not under the nginx conf dir"
-msgstr ""
+msgstr "簽章路徑不在 Nginx 設定檔資料夾下"
 
 #: src/constants/errors/cert.ts:4
 #, fuzzy
@@ -661,7 +660,7 @@ msgstr "描述"
 
 #: src/constants/errors/site.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "目的檔案已存在"
 
 #: src/views/notification/notificationColumns.tsx:52
 msgid "Details"
@@ -829,7 +828,8 @@ msgstr "試運轉模式已啟用"
 msgid ""
 "Due to the security policies of some browsers, you cannot use passkeys on "
 "non-HTTPS websites, except when running on localhost."
-msgstr ""
+msgstr "基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost "
+"上使用通行密鑰。"
 
 #: src/views/site/site_list/SiteDuplicate.vue:72
 #: src/views/site/site_list/SiteList.vue:140
@@ -1036,7 +1036,7 @@ msgstr ""
 
 #: src/constants/errors/self_check.ts:3
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "讀取 nginx.conf 失敗"
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
@@ -1053,7 +1053,7 @@ msgstr "找不到檔案"
 
 #: src/constants/errors/cert.ts:2
 msgid "Filename is empty"
-msgstr ""
+msgstr "檔名空白"
 
 #: src/views/nginx_log/NginxLog.vue:155
 msgid "Filter"
@@ -1140,7 +1140,7 @@ msgstr "HTTP01"
 
 #: src/views/preference/BasicSettings.vue:51
 msgid "ICP Number"
-msgstr ""
+msgstr "ICP 編號"
 
 #: src/views/certificate/ACMEUser.vue:45
 msgid "If left blank, the default CA Dir will be used."
@@ -1553,7 +1553,7 @@ msgstr "Nginx 錯誤日誌路徑"
 
 #: src/views/site/ngx_conf/NginxStatusAlert.vue:15
 msgid "Nginx is not running"
-msgstr ""
+msgstr "Nginx 未執行"
 
 #: src/routes/index.ts:202 src/views/nginx_log/NginxLog.vue:148
 msgid "Nginx Log"
@@ -1707,7 +1707,7 @@ msgstr "OpenAI"
 
 #: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231
 msgid "Or"
-msgstr ""
+msgstr ""
 
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
@@ -1742,7 +1742,7 @@ msgstr "參數"
 
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
-msgstr ""
+msgstr "通行密鑰"
 
 #: src/views/preference/components/Passkey.vue:62
 msgid ""
@@ -1766,7 +1766,7 @@ msgstr "使用者名稱或密碼不正確"
 
 #: src/views/other/Install.vue:48
 msgid "Password length cannot exceed 20 characters"
-msgstr ""
+msgstr "密碼長度不能超過 20 個字元"
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/site/ngx_conf/LocationEditor.vue:111

+ 2 - 0
app/src/views/site/cert/Cert.vue

@@ -8,6 +8,7 @@ const props = defineProps<{
   configName: string
   currentServerIndex: number
   certInfo?: CertificateInfo[]
+  siteEnabled: boolean
 }>()
 
 const enabled = defineModel<boolean>('enabled', {
@@ -68,6 +69,7 @@ function handleCertChange(certs: Cert[]) {
     <ChangeCert @change="handleCertChange" />
 
     <IssueCert
+      v-if="siteEnabled"
       v-model:enabled="enabled"
       :config-name="configName"
     />

+ 9 - 9
app/src/views/site/ngx_conf/NgxServer.vue

@@ -120,15 +120,15 @@ provide('ngx_directives', ngx_directives)
         />
 
         <div class="tab-content">
-          <template v-if="current_support_ssl && enabled">
-            <Cert
-              v-if="current_support_ssl"
-              v-model:enabled="autoCert"
-              :config-name="ngx_config.name"
-              :cert-info="certInfo?.[k]"
-              :current-server-index="current_server_index"
-            />
-          </template>
+          <Cert
+            v-if="current_support_ssl"
+            v-model:enabled="autoCert"
+            class="mb-4"
+            :site-enabled="enabled"
+            :config-name="ngx_config.name"
+            :cert-info="certInfo?.[k]"
+            :current-server-index="current_server_index"
+          />
 
           <template v-if="v.comments">
             <h3>{{ $gettext('Comments') }}</h3>

+ 5 - 1
docs/guide/about.md

@@ -74,11 +74,15 @@ Nginx UI is available on the following platforms:
 
 ## Internationalization
 
+We proudly offer official support for:
+
 - English
 - Simplified Chinese
 - Traditional Chinese
 
-We welcome translations into any language.
+As non-native English speakers, we strive for accuracy, but we know there’s always room for improvement. If you spot any issues, we’d love your feedback!
+
+Thanks to our amazing community, additional languages are also available! Explore and contribute to translations on [Weblate](https://weblate.nginxui.com).
 
 ## Built With
 

+ 4 - 4
docs/guide/install-script-linux.md

@@ -27,7 +27,7 @@ install.sh install [OPTIONS]
 ### Quick Usage
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 
 The default listening port is `9000`, and the default HTTP Challenge port is `9180`.
@@ -60,12 +60,12 @@ install.sh remove [OPTIONS]
 
 ```shell [Remove]
 # Remove Nginx UI, except configuration and database files
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ```shell [Purge]
 # Remove all the Nginx UI file, include configuration and database files
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove --purge
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove --purge
 ```
 
 :::
@@ -85,7 +85,7 @@ install.sh help
 ### Quick Usage
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ```
 
 ## Control Service

+ 5 - 1
docs/zh_CN/guide/about.md

@@ -71,11 +71,15 @@ Nginx UI 可在以下平台中使用:
 
 ## 国际化
 
+我们官方支持以下语言:
+
 - 英语
 - 简体中文
 - 繁体中文
 
-我们欢迎您将项目翻译成任何语言。
+由于我们并非英语母语者,尽管已尽力确保准确性,但仍可能存在改进空间。如果您发现任何问题,欢迎向我们反馈!
+
+此外,感谢我们优秀的社区提供了更多语言,欢迎访问 [Weblate](https://weblate.nginxui.com) 进行查看和贡献翻译。
 
 ## 构建基于
 

+ 4 - 4
docs/zh_CN/guide/install-script-linux.md

@@ -26,7 +26,7 @@ install.sh install [OPTIONS]
 ### 快速使用
 
 ```shell
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install -r https://mirror.ghproxy.com/
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install -r https://mirror.ghproxy.com/
 ```
 
 一键安装脚本默认设置的监听端口为 `9000`,HTTP Challenge 端口默认为 `9180`。如果有端口冲突,请手动修改 `/usr/local/etc/nginx-ui/app.ini`,
@@ -56,12 +56,12 @@ install.sh remove [OPTIONS]
 
 ```shell [移除]
 # 删除 Nginx UI,但不包括配置和数据库文件
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ```shell [清除]
 # 删除所有 Nginx UI 文件,包括配置和数据库文件
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove --purge
+bash -c "$(curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove --purge
 ```
 
 :::
@@ -81,7 +81,7 @@ install.sh help
 ### 快速使用
 
 ```shell
-bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ```
 
 ## 控制服务

+ 7 - 3
docs/zh_TW/guide/about.md

@@ -71,11 +71,15 @@ Nginx UI 可在以下作業系統中使用:
 
 ## 國際化
 
-- 英語
+我們目前官方支援以下語言:
+
+- 英文
 - 簡體中文
-- 繁體中文
+- 正体中文
+
+由於我們並非英文母語者,儘管已盡力確保準確性,仍可能有改進的空間。若您發現任何問題,歡迎提供回饋!
 
-我們歡迎您將專案翻譯成任何語言。
+此外,感謝熱心的社群貢獻更多語言支援,歡迎前往 [Weblate](https://weblate.nginxui.com) 瀏覽並參與翻譯,共同打造更完善的多語言體驗!
 
 ## 構建基於
 

+ 4 - 4
docs/zh_TW/guide/install-script-linux.md

@@ -26,7 +26,7 @@ install.sh install [OPTIONS]
 ### 快速使用
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) install
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
 ```
 
 安裝指令碼預設的監聽埠為 `9000`,HTTP Challenge 埠預設為 `9180`。如果出現埠衝突請修改 `/usr/local/etc/nginx-ui/app.ini`,
@@ -56,12 +56,12 @@ install.sh remove [OPTIONS]
 
 ```shell [移除]
 # 解除安裝 Nginx UI 但保留配置和資料庫檔案
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
 ```
 
 ```shell [清除]
 # 解除安裝並刪除所有 Nginx UI 檔案,包括配置和資料庫檔案
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) remove --purge
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove --purge
 ```
 
 :::
@@ -81,7 +81,7 @@ install.sh help
 ### 快速使用
 
 ```shell
-bash <(curl -L -s https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh) help
+bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ help
 ```
 
 ## 控制服務

+ 15 - 3
internal/cert/cert_info.go

@@ -3,10 +3,11 @@ package cert
 import (
 	"crypto/x509"
 	"encoding/pem"
-	"github.com/0xJacky/Nginx-UI/internal/helper"
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"os"
 	"time"
+
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
 )
 
 type Info struct {
@@ -39,8 +40,19 @@ func GetCertInfo(sslCertificatePath string) (info *Info, err error) {
 		return
 	}
 
+	// for wildcard certificate, the subject name is the first DNS name
+	subjectName := cert.Subject.CommonName
+	if subjectName == "" {
+		for _, name := range cert.DNSNames {
+			if name != "" {
+				subjectName = name
+				break
+			}
+		}
+	}
+
 	info = &Info{
-		SubjectName: cert.Subject.CommonName,
+		SubjectName: subjectName,
 		IssuerName:  cert.Issuer.CommonName,
 		NotAfter:    cert.NotAfter,
 		NotBefore:   cert.NotBefore,