Browse Source

feat: support https

Jacky 1 month ago
parent
commit
1ca802d829
40 changed files with 1833 additions and 724 deletions
  1. 47 1
      .vscode/tasks.json
  2. 28 0
      api/settings/settings.go
  3. 1 1
      app/package.json
  4. 7 0
      app/src/api/settings.ts
  5. 1 1
      app/src/components/Chart/UsageProgressLine.vue
  6. 1 0
      app/src/constants/errors/middleware.ts
  7. 6 0
      app/src/constants/errors/system.ts
  8. 122 55
      app/src/language/ar/app.po
  9. 117 52
      app/src/language/de_DE/app.po
  10. 115 52
      app/src/language/en/app.po
  11. 122 55
      app/src/language/es/app.po
  12. 123 55
      app/src/language/fr_FR/app.po
  13. 122 55
      app/src/language/ko_KR/app.po
  14. 107 51
      app/src/language/messages.pot
  15. 123 55
      app/src/language/ru_RU/app.po
  16. 122 55
      app/src/language/tr_TR/app.po
  17. 115 52
      app/src/language/vi_VN/app.po
  18. 113 57
      app/src/language/zh_CN/app.po
  19. 123 55
      app/src/language/zh_TW/app.po
  20. 1 1
      app/src/version.json
  21. 20 0
      app/src/views/preference/AppSettings.vue
  22. 1 1
      app/src/views/preference/AuthSettings.vue
  23. 4 1
      app/src/views/preference/CertSettings.vue
  24. 31 0
      app/src/views/preference/HTTPSettings.vue
  25. 1 1
      app/src/views/preference/LogrotateSettings.vue
  26. 7 1
      app/src/views/preference/NginxSettings.vue
  27. 10 28
      app/src/views/preference/NodeSettings.vue
  28. 1 1
      app/src/views/preference/OpenAISettings.vue
  29. 42 8
      app/src/views/preference/Preference.vue
  30. 47 0
      app/src/views/preference/ServerSettings.vue
  31. 17 0
      app/src/views/preference/TerminalSettings.vue
  32. 27 0
      app/src/views/site/cert/Cert.vue
  33. 24 23
      app/src/views/site/cert/components/ChangeCert/ChangeCert.vue
  34. 1 1
      app/src/views/site/ngx_conf/NgxConfigEditor.vue
  35. 2 1
      app/src/views/site/ngx_conf/NgxServer.vue
  36. 4 4
      go.mod
  37. 9 0
      go.sum
  38. 8 0
      internal/system/errors.go
  39. 47 0
      internal/system/ssl.go
  40. 14 1
      main.go

+ 47 - 1
.vscode/tasks.json

@@ -43,6 +43,52 @@
         "isDefault": true
       },
       "problemMatcher": []
+    },
+    {
+      "label": "[App] Gettext Extract",
+      "type": "shell",
+      "command": "cd app && pnpm gettext:extract",
+      "isBackground": true,
+      "presentation": {
+        "panel": "new"
+      },
+      "problemMatcher": []
+    },
+    {
+      "label": "[App] ESLint Fix",
+      "type": "shell",
+      "command": "cd app && pnpm lint --fix",
+      "presentation": {
+        "panel": "new"
+      },
+      "problemMatcher": []
+    },
+    {
+      "label": "[App] Typecheck",
+      "type": "shell",
+      "command": "cd app && pnpm typecheck",
+      "presentation": {
+        "panel": "new"
+      },
+      "problemMatcher": []
+    },
+    {
+      "label": "Go Generate",
+      "type": "shell",
+      "command": "./gen.sh",
+      "presentation": {
+        "panel": "new"
+      },
+      "problemMatcher": []
+    },
+    {
+      "label": "Bump Version",
+      "type": "shell",
+      "command": "./version.sh",
+      "presentation": {
+        "panel": "new"
+      },
+      "problemMatcher": []
     }
   ]
-}
+}

+ 28 - 0
api/settings/settings.go

@@ -3,11 +3,14 @@ package settings
 import (
 	"fmt"
 	"net/http"
+	"time"
 
 	"github.com/0xJacky/Nginx-UI/internal/cron"
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/internal/system"
 	"github.com/0xJacky/Nginx-UI/settings"
 	"github.com/gin-gonic/gin"
+	"github.com/jpillora/overseer"
 	"github.com/uozi-tech/cosy"
 	cSettings "github.com/uozi-tech/cosy/settings"
 )
@@ -61,6 +64,8 @@ func GetSettings(c *gin.Context) {
 
 func SaveSettings(c *gin.Context) {
 	var json struct {
+		App       cSettings.App      `json:"app"`
+		Server    cSettings.Server   `json:"server"`
 		Auth      settings.Auth      `json:"auth"`
 		Cert      settings.Cert      `json:"cert"`
 		Http      settings.HTTP      `json:"http"`
@@ -78,6 +83,22 @@ func SaveSettings(c *gin.Context) {
 		go cron.RestartLogrotate()
 	}
 
+	// Validate SSL certificates if HTTPS is enabled
+	needRestart := false
+	if json.Server.EnableHTTPS != cSettings.ServerSettings.EnableHTTPS {
+		needRestart = true
+	}
+
+	if json.Server.EnableHTTPS {
+		err := system.ValidateSSLCertificates(json.Server.SSLCert, json.Server.SSLKey)
+		if err != nil {
+			cosy.ErrHandler(c, err)
+			return
+		}
+	}
+
+	cSettings.ProtectedFill(cSettings.AppSettings, &json.App)
+	cSettings.ProtectedFill(cSettings.ServerSettings, &json.Server)
 	cSettings.ProtectedFill(settings.AuthSettings, &json.Auth)
 	cSettings.ProtectedFill(settings.CertSettings, &json.Cert)
 	cSettings.ProtectedFill(settings.HTTPSettings, &json.Http)
@@ -91,5 +112,12 @@ func SaveSettings(c *gin.Context) {
 		return
 	}
 
+	if needRestart {
+		go func() {
+			time.Sleep(2 * time.Second)
+			overseer.Restart()
+		}()
+	}
+
 	GetSettings(c)
 }

+ 1 - 1
app/package.json

@@ -1,7 +1,7 @@
 {
   "name": "nginx-ui-app-next",
   "type": "module",
-  "version": "2.0.0-rc.4",
+  "version": "2.0.0-rc.5",
   "packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6",
   "scripts": {
     "dev": "vite --host",

+ 7 - 0
app/src/api/settings.ts

@@ -9,6 +9,9 @@ export interface ServerSettings {
   host: string
   port: number
   run_mode: 'debug' | 'release'
+  enable_https: boolean
+  ssl_cert: string
+  ssl_key: string
 }
 
 export interface DatabaseSettings {
@@ -54,8 +57,10 @@ export interface NginxSettings {
   access_log_path: string
   error_log_path: string
   config_dir: string
+  config_path: string
   log_dir_white_list: string[]
   pid_path: string
+  test_config_cmd: string
   reload_cmd: string
   restart_cmd: string
 }
@@ -63,6 +68,8 @@ export interface NginxSettings {
 export interface NodeSettings {
   name: string
   secret: string
+  skip_installation: boolean
+  demo: boolean
   icp_number: string
   public_security_number: string
 }

+ 1 - 1
app/src/components/Chart/UsageProgressLine.vue

@@ -2,7 +2,7 @@
 import { computed } from 'vue'
 
 const props = withDefaults(defineProps<{
-  percent: number
+  percent?: number
 }>(), {
   percent: 0,
 })

+ 1 - 0
app/src/constants/errors/middleware.ts

@@ -1,4 +1,5 @@
 export default {
   40000: () => $gettext('Invalid request format'),
   40001: () => $gettext('Decryption failed'),
+  40002: () => $gettext('Form parse failed'),
 }

+ 6 - 0
app/src/constants/errors/system.ts

@@ -1,4 +1,10 @@
 export default {
   40301: () => $gettext('Nginx UI already installed'),
   40302: () => $gettext('Installation is not allowed after 10 minutes of system startup'),
+  40303: () => $gettext('SSL certificate path is required when HTTPS is enabled'),
+  40304: () => $gettext('SSL key path is required when HTTPS is enabled'),
+  40305: () => $gettext('SSL certificate file not found'),
+  40306: () => $gettext('SSL key file not found'),
+  40307: () => $gettext('SSL certificate file must be under Nginx configuration directory: {0}'),
+  40308: () => $gettext('SSL key file must be under Nginx configuration directory: {0}'),
 }

+ 122 - 55
app/src/language/ar/app.po

@@ -49,9 +49,9 @@ msgstr "إجراء"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -132,6 +132,10 @@ msgstr "رمز API"
 msgid "API Type"
 msgstr "رمز API"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -198,7 +202,7 @@ msgstr "هل أنت متأكد أنك تريد استرداد هذا العنص
 msgid "Are you sure you want to remove this directive?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا التوجيه؟"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
 
@@ -223,7 +227,7 @@ msgstr "محاولات"
 msgid "Attempts"
 msgstr "محاولات"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "مصادقة"
 
@@ -308,7 +312,6 @@ msgid "Base information"
 msgstr "المعلومات الأساسية"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -349,7 +352,7 @@ msgstr "بناء مع"
 msgid "CA Dir"
 msgstr "مجلد سلطة التصديق"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "مجلد سلطة التصديق"
 
@@ -382,7 +385,7 @@ msgstr "مستخدم النظام الأولي"
 msgid "Category"
 msgstr "فئة"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr "شهادة"
 
@@ -400,7 +403,7 @@ msgstr "خطأ في مزامنة الشهادة"
 msgid "Certificate parse error"
 msgstr "خطأ في مزامنة الشهادة"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "الفاصل الزمني لتجديد الشهادة"
 
@@ -410,7 +413,7 @@ msgid "Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "صفر"
@@ -438,7 +441,7 @@ msgstr "طريقة التحدي"
 msgid "Change Certificate"
 msgstr "تغيير الشهادة"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "صفر"
@@ -515,7 +518,7 @@ msgstr "أمر"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "تعليقات"
 
@@ -657,7 +660,7 @@ msgstr "الإصدار الحالي"
 msgid "Custom"
 msgstr "مخصص"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -672,7 +675,7 @@ msgstr "لوحة المعلومات"
 msgid "Database (Optional, default: database)"
 msgstr "قاعدة البيانات (اختياري، الافتراضي: قاعدة البيانات)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "أيام"
 
@@ -745,6 +748,10 @@ msgstr "حذف البث: ‎%{stream_name}"
 msgid "Deleted successfully"
 msgstr "تم الحذف بنجاح"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "نشر"
@@ -835,6 +842,9 @@ msgstr "تم تعطيل الموقع %{site} على %{node} بنجاح"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -978,6 +988,7 @@ msgid "Edit Stream"
 msgstr "تعديل البث"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "بريد إلكتروني"
 
@@ -1002,6 +1013,11 @@ msgstr "فشل تفعيل التجديد التلقائي لـ %{name}"
 msgid "Enable failed"
 msgstr "فشل التفعيل"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "تفعيل TOTP"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgstr "خطأ في تفعيل الموقع البعيد"
@@ -1050,7 +1066,10 @@ msgstr "تفعيل TOTP"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1409,12 +1428,12 @@ msgid ""
 "process."
 msgstr "اتبع التعليمات في الحوار لإكمال عملية تسجيل مفتاح المرور."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "للمستخدمين الصين: /https://mirror.ghproxy.com"
 
@@ -1466,7 +1485,7 @@ msgstr "خطأ في الحصول على معلومات الإصدار"
 msgid "Getting the certificate, please wait..."
 msgstr "جارٍ الحصول على الشهادة، يرجى الانتظار..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "وكيل Github"
 
@@ -1482,23 +1501,25 @@ msgstr "إخفاء"
 msgid "Home"
 msgstr "الصفحة الرئيسية"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "منفذ تحدي HTTP"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "مضيف HTTP"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "منفذ HTTP"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "منفذ تحدي HTTP"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1556,6 +1577,10 @@ msgstr "أدخل الرمز من التطبيق:"
 msgid "Input the recovery code:"
 msgstr "أدخل رمز الاسترداد:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "تثبيت"
@@ -1659,7 +1684,7 @@ msgstr "تم إصدار الشهادة بنجاح"
 msgid "Issuer: %{issuer}"
 msgstr "المُصدر: %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "سر JWT"
 
@@ -1765,7 +1790,7 @@ msgstr "تم تسجيل الدخول بنجاح"
 msgid "Logout successful"
 msgstr "تم تسجيل الخروج بنجاح"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "تدوير السجلات"
 
@@ -1917,7 +1942,7 @@ msgstr "تم إصدار نسخة جديدة"
 msgid "Next"
 msgstr "التالي"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1964,6 +1989,11 @@ msgstr "خطأ في تحليل تكوين Nginx"
 msgid "Nginx Configuration Parse Error"
 msgstr "خطأ في تحليل تكوين Nginx"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "خطأ في تحليل تكوين Nginx"
+
 #: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Configurations Directory"
 msgstr "مجلد تكوينات Nginx"
@@ -1984,15 +2014,15 @@ msgstr "Nginx لا يعمل"
 msgid "Nginx Log"
 msgstr "سجل Nginx"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "قائمة السماح لمجلد سجلات Nginx"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr "مسار PID لـ Nginx"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "أمر إعادة تحميل Nginx"
 
@@ -2000,7 +2030,7 @@ msgstr "أمر إعادة تحميل Nginx"
 msgid "Nginx reloaded successfully"
 msgstr "تم إعادة تحميل Nginx بنجاح"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr "أمر إعادة تشغيل Nginx"
 
@@ -2008,6 +2038,11 @@ msgstr "أمر إعادة تشغيل Nginx"
 msgid "Nginx restarted successfully"
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "أمر إعادة تشغيل Nginx"
+
 #: src/constants/errors/system.ts:2
 #, fuzzy
 msgid "Nginx UI already installed"
@@ -2034,7 +2069,7 @@ msgstr "خطأ في تحليل تكوين Nginx"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2042,11 +2077,16 @@ msgstr "خطأ في تحليل تكوين Nginx"
 msgid "No"
 msgstr "لا"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "اسم العقدة"
+
+#: src/views/preference/NodeSettings.vue:15
 msgid "Node name"
 msgstr "اسم العقدة"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "سر العقدة"
 
@@ -2149,7 +2189,7 @@ msgstr "متصل"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "أوبن أي آي"
 
@@ -2186,6 +2226,11 @@ msgstr "الكتابة فوق"
 msgid "Overwrite exist file"
 msgstr "الكتابة فوق الملف الموجود"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "إدارة المواقع"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "عوامل"
@@ -2330,7 +2375,7 @@ msgstr "يرجى إدخال كلمة المرور الخاصة بك!"
 msgid "Please input your username!"
 msgstr "يرجى إدخال اسم المستخدم الخاص بك!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2352,13 +2397,18 @@ msgstr "يرجى اختيار عقدة واحدة على الأقل!"
 msgid "Please select at least one node to upgrade"
 msgstr "يرجى اختيار عقدة واحدة على الأقل للترقية"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "منفذ HTTP"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "ما قبل الإصدار"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "تفضيل"
 
@@ -2386,7 +2436,7 @@ msgstr "مزود"
 msgid "Proxy"
 msgstr "وكيل"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2428,7 +2478,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "خوادم الأسماء التكرارية"
 
@@ -2654,7 +2704,7 @@ msgstr "أصول RP"
 msgid "RPID"
 msgstr "معرّف الجهاز عن بُعد"
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "وضع التشغيل"
 
@@ -2669,7 +2719,7 @@ msgstr "يعمل"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2729,7 +2779,7 @@ msgstr "تم حفظ الموقع %{site} إلى %{node} بنجاح"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "تم الحفظ بنجاح"
 
@@ -2776,6 +2826,11 @@ msgstr ""
 msgid "Send"
 msgstr "إرسال"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "معلومات الخادم"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "معلومات الخادم"
@@ -2793,7 +2848,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "لم يتم العثور على الملف"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2880,6 +2935,11 @@ msgstr "مجلد"
 msgid "Sites-enabled directory not exist"
 msgstr "مجلد"
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "تثبيت"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr "محتوى شهادة SSL"
@@ -2893,9 +2953,15 @@ msgid "SSL Certificate Key Path"
 msgstr "مسار مفتاح شهادة SSL"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "مسار شهادة SSL"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "مسار مفتاح شهادة SSL"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr "تسجيل الدخول عبر SSO"
@@ -3061,7 +3127,7 @@ msgstr "مستخدم النظام الأولي"
 msgid "System Restore"
 msgstr "نظام"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "تم إعادة تشغيل Nginx بنجاح"
@@ -3071,11 +3137,12 @@ msgstr "تم إعادة تشغيل Nginx بنجاح"
 msgid "Task not found"
 msgstr "غير موجود"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "محطة"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "أمر البدء في المحطة الطرفية"
 
@@ -3092,7 +3159,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "لا يمكن أن يحتوي اسم الملف على الأحرف التالية: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 #, fuzzy
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
@@ -3121,7 +3188,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr "يجب أن يحتوي اسم النموذج على حروف وأرقام ويونيكود وشرطات ونقاط فقط."
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -3143,7 +3210,7 @@ msgstr "المسار موجود، لكن الملف ليس شهادة"
 msgid "The path exists, but the file is not a private key"
 msgstr "المسار موجود، لكن الملف ليس مفتاحًا خاصًا"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 #, fuzzy
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
@@ -3169,8 +3236,8 @@ msgstr ""
 "اسم الخادم في التكوين الحالي يجب أن يكون اسم النطاق الذي تحتاج للحصول على "
 "الشهادة، ويدعم عدة نطاقات."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "عنوان URL غير صالح"
 
@@ -3539,7 +3606,7 @@ msgid "Writing certificate to disk"
 msgstr "كتابة الشهادة إلى القرص"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 117 - 52
app/src/language/de_DE/app.po

@@ -46,9 +46,9 @@ msgstr "Aktion"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -134,6 +134,11 @@ msgstr "API-Token"
 msgid "API Type"
 msgstr "API-Typ"
 
+#: src/views/preference/Preference.vue:162
+#, fuzzy
+msgid "App"
+msgstr "Anwenden"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr "Anwenden"
@@ -209,7 +214,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 #, fuzzy
 msgid "Are you sure you want to remove this item?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -236,7 +241,7 @@ msgstr "Versuche"
 msgid "Attempts"
 msgstr "Versuche"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "Authentifizierung"
 
@@ -322,7 +327,6 @@ msgid "Base information"
 msgstr "Basisinformationen"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
@@ -366,7 +370,7 @@ msgstr "Build mit"
 msgid "CA Dir"
 msgstr "CA-Verzeichnis"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "CA-Verzeichnis"
 
@@ -399,7 +403,7 @@ msgstr "System-Startbenutzer"
 msgid "Category"
 msgstr "Kategorie"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr "Zertifikat"
 
@@ -417,7 +421,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Certificate parse error"
 msgstr "Certificate has expired"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 #, fuzzy
 msgid "Certificate Renewal Interval"
 msgstr "Zeitifikat ist gültig"
@@ -428,7 +432,7 @@ msgid "Certificate renewed successfully"
 msgstr "Erfolgreich deaktiviert"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -456,7 +460,7 @@ msgstr "Challenge-Methode"
 msgid "Change Certificate"
 msgstr "Zertifikat ist gültig"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -533,7 +537,7 @@ msgstr "Kommando"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Kom"
 
@@ -680,7 +684,7 @@ msgstr "Aktuelle Version"
 msgid "Custom"
 msgstr "Benutzerdefiniert"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -696,7 +700,7 @@ msgstr "Übersicht"
 msgid "Database (Optional, default: database)"
 msgstr "Datenbank (Optional, Standard: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "Tage"
 
@@ -772,6 +776,10 @@ msgstr "Stream löschen: %{stream_name}"
 msgid "Deleted successfully"
 msgstr "Erfolgreich deaktiviert"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Ausführen"
@@ -865,6 +873,9 @@ msgstr "Speichern erfolgreich"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -1018,6 +1029,7 @@ msgid "Edit Stream"
 msgstr "Seite bearbeiten"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 #, fuzzy
 msgid "Email"
 msgstr "Email (*)"
@@ -1045,6 +1057,11 @@ msgstr "Aktiviere automatische Verlängerung fehlgeschlagen für %{name}"
 msgid "Enable failed"
 msgstr "Aktivieren fehlgeschlagen"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Aktiviere TLS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1096,7 +1113,10 @@ msgstr "Aktiviere TLS"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1456,12 +1476,12 @@ msgstr ""
 "Folge den Anweisungen im Dialog, um den Passkey-Registrierungsprozess "
 "abzuschließen."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr "Für chinesische Benutzer"
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Für chinesische Benutzer: https://mirror.ghproxy.com/"
 
@@ -1517,7 +1537,7 @@ msgstr "Basisinformationen"
 msgid "Getting the certificate, please wait..."
 msgstr "Hole das Zertifikat, bitte warten..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr ""
 
@@ -1533,23 +1553,23 @@ msgstr "Verstecken"
 msgid "Home"
 msgstr "Startseite"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/Preference.vue:174
+msgid "HTTP"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr "ICP-Nummer"
 
@@ -1611,6 +1631,10 @@ msgstr "Füge den Code aus der App ein:"
 msgid "Input the recovery code:"
 msgstr "Füge den Wiederherstellungscode ein:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Installieren"
@@ -1717,7 +1741,7 @@ msgstr "Aktivieren erfolgreich"
 msgid "Issuer: %{issuer}"
 msgstr "Aussteller: %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt-Secret"
 
@@ -1832,7 +1856,7 @@ msgstr "Login erfolgreich"
 msgid "Logout successful"
 msgstr "Logout erfolgreich"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -1995,7 +2019,7 @@ msgstr "Neue Version veröffentlicht"
 msgid "Next"
 msgstr "Nächster"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr ""
 
@@ -2043,6 +2067,11 @@ msgstr "Name der Konfiguration"
 msgid "Nginx Configuration Parse Error"
 msgstr "Name der Konfiguration"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Name der Konfiguration"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2064,15 +2093,15 @@ msgstr "Nginx läuft nicht"
 msgid "Nginx Log"
 msgstr "Nginx-Log"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "Nginx-Log-Verzeichnis-Whitelist"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr "Nginx PID-Pfad"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "Befehl zum Neuladen von Nginx"
 
@@ -2081,7 +2110,7 @@ msgstr "Befehl zum Neuladen von Nginx"
 msgid "Nginx reloaded successfully"
 msgstr "Speichern erfolgreich"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr "Beffehl zum Neustarten von Nginx"
 
@@ -2090,6 +2119,11 @@ msgstr "Beffehl zum Neustarten von Nginx"
 msgid "Nginx restarted successfully"
 msgstr "Speichern erfolgreich"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Beffehl zum Neustarten von Nginx"
+
 #: src/constants/errors/system.ts:2
 #, fuzzy
 msgid "Nginx UI already installed"
@@ -2116,7 +2150,7 @@ msgstr "Name der Konfiguration"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2124,12 +2158,17 @@ msgstr "Name der Konfiguration"
 msgid "No"
 msgstr "Nein"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Benuztername"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Benuztername"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "Node-Secret"
 
@@ -2237,7 +2276,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr ""
 
@@ -2275,6 +2314,11 @@ msgstr "Überschreiben"
 msgid "Overwrite exist file"
 msgstr "Zu überschreibende Datei existiert"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Verwalte Seiten"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Parameter"
@@ -2429,7 +2473,7 @@ msgstr "Bitte gib dein Passwort ein!"
 msgid "Please input your username!"
 msgstr "Bitte gib deinen Benutzernamen ein!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2453,13 +2497,17 @@ msgstr "Bitte wähle mindestens einen Knoten aus!"
 msgid "Please select at least one node to upgrade"
 msgstr "Bitte wähle mindestens einen Knoten zum Upgrade aus"
 
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr ""
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "Vorabversion"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "Einstellungen"
 
@@ -2488,7 +2536,7 @@ msgstr "Anbieter"
 msgid "Proxy"
 msgstr "Proxy"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr "Öffentliche Sicherheitsnummer"
 
@@ -2531,7 +2579,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "Rekursive Nameserver"
 
@@ -2777,7 +2825,7 @@ msgstr "RP-Ursprünge"
 msgid "RPID"
 msgstr "RPID"
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 #, fuzzy
 msgid "Run Mode"
 msgstr "Erweiterter Modus"
@@ -2793,7 +2841,7 @@ msgstr "Arbeite"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2855,7 +2903,7 @@ msgstr "Speichern erfolgreich"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 #, fuzzy
 msgid "Save successfully"
 msgstr "Speichern erfolgreich"
@@ -2904,6 +2952,11 @@ msgstr ""
 msgid "Send"
 msgstr "Senden"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Serverinformationen"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Serverinformationen"
@@ -2921,7 +2974,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "File Not Found"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -3007,6 +3060,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Installieren"
+
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 msgid "SSL Certificate Content"
@@ -3023,10 +3081,16 @@ msgid "SSL Certificate Key Path"
 msgstr "Zertifikatsstatus"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 #, fuzzy
 msgid "SSL Certificate Path"
 msgstr "Zertifikatsstatus"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Zertifikatsstatus"
+
 #: src/views/other/Login.vue:197
 #, fuzzy
 msgid "SSO Login"
@@ -3199,7 +3263,7 @@ msgstr "System-Startbenutzer"
 msgid "System Restore"
 msgstr "System"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Speichern erfolgreich"
@@ -3209,11 +3273,12 @@ msgstr "Speichern erfolgreich"
 msgid "Task not found"
 msgstr "File Not Found"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "Terminal-Startbefehl"
 
@@ -3231,7 +3296,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Der Dateiname darf die folgenden Zeichen nicht enthalten: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3261,7 +3326,7 @@ msgstr ""
 "Der Modellname sollte nur Buchstaben, Unicode, Zahlen, Bindestriche, "
 "Doppelpunkte und Punkte enthalten."
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3283,7 +3348,7 @@ msgstr "Zertifikatsstatus"
 msgid "The path exists, but the file is not a private key"
 msgstr "Der Pfad existiert, aber die Datei ist kein privater Schlüssel"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3310,8 +3375,8 @@ msgstr ""
 "Beachten: Der server_name in der aktuellen Konfiguration muss der Domainname "
 "sein, für den das Zertifikat benötigt wird."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "Die URL ist ungültig"
 
@@ -3689,7 +3754,7 @@ msgid "Writing certificate to disk"
 msgstr "Schreibe Zertifikat auf die Festplatte"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 115 - 52
app/src/language/en/app.po

@@ -47,9 +47,9 @@ msgstr "Action"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -134,6 +134,10 @@ msgstr ""
 msgid "API Type"
 msgstr ""
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -208,7 +212,7 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 #, fuzzy
 msgid "Are you sure you want to remove this item?"
 msgstr "Are you sure you want to remove this directive?"
@@ -234,7 +238,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr ""
 
@@ -320,7 +324,6 @@ msgid "Base information"
 msgstr "Base information"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
@@ -363,7 +366,7 @@ msgstr "Build with"
 msgid "CA Dir"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr ""
 
@@ -394,7 +397,7 @@ msgstr ""
 msgid "Category"
 msgstr ""
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr ""
 
@@ -412,7 +415,7 @@ msgstr "Certificate is valid"
 msgid "Certificate parse error"
 msgstr "Certificate has expired"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 #, fuzzy
 msgid "Certificate Renewal Interval"
 msgstr "Certificate is valid"
@@ -423,7 +426,7 @@ msgid "Certificate renewed successfully"
 msgstr "Disabled successfully"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -451,7 +454,7 @@ msgstr ""
 msgid "Change Certificate"
 msgstr "Certificate is valid"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -528,7 +531,7 @@ msgstr "Comments"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Comments"
 
@@ -673,7 +676,7 @@ msgstr ""
 msgid "Custom"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -688,7 +691,7 @@ msgstr "Dashboard"
 msgid "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr ""
 
@@ -764,6 +767,10 @@ msgstr ""
 msgid "Deleted successfully"
 msgstr "Disabled successfully"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr ""
@@ -857,6 +864,9 @@ msgstr "Saved successfully"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -1005,6 +1015,7 @@ msgid "Edit Stream"
 msgstr "Edit Site"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 #, fuzzy
 msgid "Email"
 msgstr "Email (*)"
@@ -1032,6 +1043,11 @@ msgstr "Enable auto-renewal failed for %{name}"
 msgid "Enable failed"
 msgstr "Enable failed"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Enable TLS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1083,7 +1099,10 @@ msgstr "Enable TLS"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1446,12 +1465,12 @@ msgid ""
 "process."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr ""
 
@@ -1506,7 +1525,7 @@ msgstr "Base information"
 msgid "Getting the certificate, please wait..."
 msgstr "Getting the certificate, please wait..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr ""
 
@@ -1522,23 +1541,23 @@ msgstr ""
 msgid "Home"
 msgstr "Home"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/Preference.vue:174
+msgid "HTTP"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1593,6 +1612,10 @@ msgstr ""
 msgid "Input the recovery code:"
 msgstr ""
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Install"
@@ -1703,7 +1726,7 @@ msgstr "Enabled successfully"
 msgid "Issuer: %{issuer}"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr ""
 
@@ -1819,7 +1842,7 @@ msgstr "Login successful"
 msgid "Logout successful"
 msgstr "Logout successful"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr ""
 
@@ -1975,7 +1998,7 @@ msgstr ""
 msgid "Next"
 msgstr "Next"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr ""
 
@@ -2023,6 +2046,11 @@ msgstr "Configuration Name"
 msgid "Nginx Configuration Parse Error"
 msgstr "Configuration Name"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Configuration Name"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2044,16 +2072,16 @@ msgstr ""
 msgid "Nginx Log"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 #, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgstr "Configuration Name"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr ""
 
@@ -2062,7 +2090,7 @@ msgstr ""
 msgid "Nginx reloaded successfully"
 msgstr "Saved successfully"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr ""
 
@@ -2071,6 +2099,10 @@ msgstr ""
 msgid "Nginx restarted successfully"
 msgstr "Saved successfully"
 
+#: src/views/preference/NginxSettings.vue:33
+msgid "Nginx Test Config Command"
+msgstr ""
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2096,7 +2128,7 @@ msgstr "Configuration Name"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2104,12 +2136,17 @@ msgstr "Configuration Name"
 msgid "No"
 msgstr "No"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Username"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Username"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 #, fuzzy
 msgid "Node Secret"
 msgstr "Username"
@@ -2213,7 +2250,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr ""
 
@@ -2250,6 +2287,11 @@ msgstr ""
 msgid "Overwrite exist file"
 msgstr ""
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Manage Sites"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Params"
@@ -2390,7 +2432,7 @@ msgstr "Please input your password!"
 msgid "Please input your username!"
 msgstr "Please input your username!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2412,13 +2454,17 @@ msgstr "Please input your username!"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr ""
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr ""
 
@@ -2447,7 +2493,7 @@ msgstr ""
 msgid "Proxy"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2490,7 +2536,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr ""
 
@@ -2736,7 +2782,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 #, fuzzy
 msgid "Run Mode"
 msgstr "Advance Mode"
@@ -2752,7 +2798,7 @@ msgstr ""
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2814,7 +2860,7 @@ msgstr "Saved successfully"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 #, fuzzy
 msgid "Save successfully"
 msgstr "Saved successfully"
@@ -2863,6 +2909,11 @@ msgstr ""
 msgid "Send"
 msgstr "Send"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Server Info"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Server Info"
@@ -2880,7 +2931,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "File Not Found"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2966,6 +3017,11 @@ msgstr "Directive"
 msgid "Sites-enabled directory not exist"
 msgstr "Directive"
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Install"
+
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 msgid "SSL Certificate Content"
@@ -2982,10 +3038,16 @@ msgid "SSL Certificate Key Path"
 msgstr "Certificate Status"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 #, fuzzy
 msgid "SSL Certificate Path"
 msgstr "Certificate Status"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Certificate Status"
+
 #: src/views/other/Login.vue:197
 #, fuzzy
 msgid "SSO Login"
@@ -3159,7 +3221,7 @@ msgstr ""
 msgid "System Restore"
 msgstr ""
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Saved successfully"
@@ -3169,11 +3231,12 @@ msgstr "Saved successfully"
 msgid "Task not found"
 msgstr "File Not Found"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr ""
 
@@ -3191,7 +3254,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3218,7 +3281,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3239,7 +3302,7 @@ msgstr "Certificate Status"
 msgid "The path exists, but the file is not a private key"
 msgstr "Certificate Status"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3261,8 +3324,8 @@ msgstr ""
 "Note: The server_name in the current configuration must be the domain name "
 "you need to get the certificate."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr ""
 
@@ -3619,7 +3682,7 @@ msgid "Writing certificate to disk"
 msgstr "Certificate is valid"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 122 - 55
app/src/language/es/app.po

@@ -52,9 +52,9 @@ msgstr "Acción"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -137,6 +137,10 @@ msgstr "Token de la API"
 msgid "API Type"
 msgstr "Token de la API"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -203,7 +207,7 @@ msgstr "¿Está seguro de que quiere recuperar este elemento?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "¿Está seguro de que quiere borrar esta directiva?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "¿Está seguro de que desea eliminar este elemento?"
 
@@ -228,7 +232,7 @@ msgstr "Intentos"
 msgid "Attempts"
 msgstr "Intentos"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "Autenticación"
 
@@ -313,7 +317,6 @@ msgid "Base information"
 msgstr "Información general"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -356,7 +359,7 @@ msgstr "Desarrollado con"
 msgid "CA Dir"
 msgstr "Dir CA"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "Directorio CA"
 
@@ -389,7 +392,7 @@ msgstr "Usuario inicial del sistema"
 msgid "Category"
 msgstr "Categoría"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr "Certificado"
 
@@ -407,7 +410,7 @@ msgstr "Error de Certificado de Sincronización"
 msgid "Certificate parse error"
 msgstr "El certificado expiró"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "Intervalo de renovación del Certificado"
 
@@ -417,7 +420,7 @@ msgid "Certificate renewed successfully"
 msgstr "Limpiado exitoso"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Estado del Certificado"
@@ -441,7 +444,7 @@ msgstr "Método de desafío"
 msgid "Change Certificate"
 msgstr "Cambiar Certificado"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Cambiar Certificado"
@@ -514,7 +517,7 @@ msgstr "Comando"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Comentarios"
 
@@ -656,7 +659,7 @@ msgstr "Versión actual"
 msgid "Custom"
 msgstr "Personalizado"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -673,7 +676,7 @@ msgstr "Panel"
 msgid "Database (Optional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "Días"
 
@@ -746,6 +749,10 @@ msgstr "Eliminar stream: %{site_name}"
 msgid "Deleted successfully"
 msgstr "Borrado exitoso"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Desplegar"
@@ -836,6 +843,9 @@ msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -978,6 +988,7 @@ msgid "Edit Stream"
 msgstr "Editar Transmisión"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "Correo"
 
@@ -1002,6 +1013,11 @@ msgstr "No se pudo activar la renovación automática por %{name}"
 msgid "Enable failed"
 msgstr "Falló la habilitación"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Habilitar TLS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1053,7 +1069,10 @@ msgstr "Habilitar TLS"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1410,12 +1429,12 @@ msgstr ""
 "Siga las instrucciones del cuadro de diálogo para completar el proceso de "
 "registro de la llave de acceso."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Para usuario chino: https://mirror.ghproxy.com/"
 
@@ -1467,7 +1486,7 @@ msgstr "Obtener error de información de versión"
 msgid "Getting the certificate, please wait..."
 msgstr "Obteniendo el certificado, por favor espere..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Proxy Github"
 
@@ -1483,23 +1502,25 @@ msgstr "Ocultar"
 msgid "Home"
 msgstr "Inicio"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "Puerto de desafío HTTP"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "Host HTTP"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "Puerto HTTP"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "Puerto de desafío HTTP"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1559,6 +1580,10 @@ msgstr "Ingrese el código de la aplicación:"
 msgid "Input the recovery code:"
 msgstr "Ingrese el código de recuperación:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Instalar"
@@ -1659,7 +1684,7 @@ msgstr "Certificado emitido con éxito"
 msgid "Issuer: %{issuer}"
 msgstr "Emisor: %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Secreto Jwt"
 
@@ -1767,7 +1792,7 @@ msgstr "Acceso exitoso"
 msgid "Logout successful"
 msgstr "Cierre de sesión exitoso"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Rotación de logs"
 
@@ -1920,7 +1945,7 @@ msgstr "Se liberó una nueva versión"
 msgid "Next"
 msgstr "Siguiente"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1967,6 +1992,11 @@ msgstr "Error de análisis de configuración de Nginx"
 msgid "Nginx Configuration Parse Error"
 msgstr "Error de análisis de configuración de Nginx"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Error de análisis de configuración de Nginx"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -1988,16 +2018,16 @@ msgstr "Nginx no se está ejecutando"
 msgid "Nginx Log"
 msgstr "Registro Nginx"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "Lista blanca de directorios de registro de Nginx"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Ruta de registro de errores de Nginx"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "Comando de recarga de Nginx"
 
@@ -2005,7 +2035,7 @@ msgstr "Comando de recarga de Nginx"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx recargado con éxito"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 #, fuzzy
 msgid "Nginx Restart Command"
 msgstr "Comando de inicio de terminal"
@@ -2014,6 +2044,11 @@ msgstr "Comando de inicio de terminal"
 msgid "Nginx restarted successfully"
 msgstr "Nginx reiniciado con éxito"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Comando de inicio de terminal"
+
 #: src/constants/errors/system.ts:2
 #, fuzzy
 msgid "Nginx UI already installed"
@@ -2040,7 +2075,7 @@ msgstr "Error de análisis de configuración de Nginx"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2048,12 +2083,17 @@ msgstr "Error de análisis de configuración de Nginx"
 msgid "No"
 msgstr "No"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Nuevo nombre"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Nuevo nombre"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "Secreto del nodo"
 
@@ -2157,7 +2197,7 @@ msgstr "En línea"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2194,6 +2234,11 @@ msgstr "Sobrescribir"
 msgid "Overwrite exist file"
 msgstr "Sobrescribir archivo existente"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Administrar sitios"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Parámetros"
@@ -2348,7 +2393,7 @@ msgstr "¡Por favor ingrese su contraseña!"
 msgid "Please input your username!"
 msgstr "¡Por favor ingrese su nombre de usuario!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2372,13 +2417,18 @@ msgstr "¡Seleccione al menos un nodo!"
 msgid "Please select at least one node to upgrade"
 msgstr "Seleccione al menos un nodo para actualizar"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "Puerto HTTP"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "Prelanzamiento"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "Configuración"
 
@@ -2407,7 +2457,7 @@ msgstr "Proveedor"
 msgid "Proxy"
 msgstr "Proxy de la API"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2449,7 +2499,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "Servidores de nombres recursivos"
 
@@ -2682,7 +2732,7 @@ msgstr "Orígenes RP"
 msgid "RPID"
 msgstr "RPID"
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "Modo de ejecución"
 
@@ -2697,7 +2747,7 @@ msgstr "Corriendo"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2759,7 +2809,7 @@ msgstr "Duplicado con éxito de %{conf_name} a %{node_name}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "Guardado con éxito"
 
@@ -2808,6 +2858,11 @@ msgstr ""
 msgid "Send"
 msgstr "Enviado"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Información del servidor"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Información del servidor"
@@ -2825,7 +2880,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "Archivo no Encontrado"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2910,6 +2965,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Instalar"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr "Contenido de certificado SSL"
@@ -2923,9 +2983,15 @@ msgid "SSL Certificate Key Path"
 msgstr "Ruta de la llave del certificado SSL"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "Ruta del certificado SSL"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Ruta de la llave del certificado SSL"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr "Acceso SSO"
@@ -3092,7 +3158,7 @@ msgstr "Usuario inicial del sistema"
 msgid "System Restore"
 msgstr "Sistema"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx reiniciado con éxito"
@@ -3102,11 +3168,12 @@ msgstr "Nginx reiniciado con éxito"
 msgid "Task not found"
 msgstr "Archivo no Encontrado"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "Comando de inicio de terminal"
 
@@ -3125,7 +3192,7 @@ msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 "El nombre del archivo no puede contener los siguientes caracteres: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 #, fuzzy
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
@@ -3156,7 +3223,7 @@ msgstr ""
 "El nombre del modelo solo debe contener letras, unicode, números, guiones, "
 "rayas y puntos."
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -3178,7 +3245,7 @@ msgstr "La ruta existe, pero el archivo no es un certificado"
 msgid "The path exists, but the file is not a private key"
 msgstr "La ruta existe, pero el archivo no es una clave privada"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 #, fuzzy
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
@@ -3205,8 +3272,8 @@ msgstr ""
 "El server_name en la configuración actual debe ser el nombre de dominio que "
 "necesita para obtener el certificado, soporta dominios múltiples."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "La URL es inválida"
 
@@ -3584,7 +3651,7 @@ msgid "Writing certificate to disk"
 msgstr "Escribir certificado a disco"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 123 - 55
app/src/language/fr_FR/app.po

@@ -51,9 +51,9 @@ msgstr "Action"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -140,6 +140,11 @@ msgstr "Jeton d'API"
 msgid "API Type"
 msgstr "Jeton d'API"
 
+#: src/views/preference/Preference.vue:162
+#, fuzzy
+msgid "App"
+msgstr "Appliquer"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr "Appliquer"
@@ -213,7 +218,7 @@ msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 #, fuzzy
 msgid "Are you sure you want to remove this item?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
@@ -239,7 +244,7 @@ msgstr "Tenter de corriger"
 msgid "Attempts"
 msgstr "Tentatives"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 #, fuzzy
 msgid "Auth"
 msgstr "Autheur"
@@ -325,7 +330,6 @@ msgid "Base information"
 msgstr "Information générale"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -369,7 +373,7 @@ msgstr "Build avec"
 msgid "CA Dir"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr ""
 
@@ -401,7 +405,7 @@ msgstr "Impossible de retirer l'utilisateur initial"
 msgid "Category"
 msgstr "Catégorie"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 #, fuzzy
 msgid "Cert"
 msgstr "Auto Cert"
@@ -420,7 +424,7 @@ msgstr "Changer de certificat"
 msgid "Certificate parse error"
 msgstr "Le certificat a expiré"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 #, fuzzy
 msgid "Certificate Renewal Interval"
 msgstr "Le certificat est valide"
@@ -431,7 +435,7 @@ msgid "Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -458,7 +462,7 @@ msgstr "Méthode de challenge"
 msgid "Change Certificate"
 msgstr "Changer de certificat"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -539,7 +543,7 @@ msgstr "Commentaires"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Commentaires"
 
@@ -684,7 +688,7 @@ msgstr "Version actuelle"
 msgid "Custom"
 msgstr "Custom"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 #, fuzzy
 msgid ""
 "Customize the name of local node to be displayed in the environment "
@@ -701,7 +705,7 @@ msgstr "Dashboard"
 msgid "Database (Optional, default: database)"
 msgstr "Base de données (Facultatif, par défaut : database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "Jours"
 
@@ -778,6 +782,10 @@ msgstr "Supprimer le site : %{site_name}"
 msgid "Deleted successfully"
 msgstr "Désactivé avec succès"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Déployer"
@@ -872,6 +880,9 @@ msgstr "Dupliqué avec succès"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -1022,6 +1033,7 @@ msgid "Edit Stream"
 msgstr "Modifier le site"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 #, fuzzy
 msgid "Email"
 msgstr "Email (*)"
@@ -1049,6 +1061,11 @@ msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 msgid "Enable failed"
 msgstr "Échec de l'activation"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Activer TLS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1100,7 +1117,10 @@ msgstr "Activer TLS"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1470,12 +1490,12 @@ msgstr ""
 "Suivez les instructions dans la boîte de dialogue pour compléter le "
 "processus d'enregistrement de la clé d'accès."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr "Pour utilisateur chinois"
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 #, fuzzy
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Utilisateur chinois : https://mirror.ghproxy.com/"
@@ -1527,7 +1547,7 @@ msgstr "Erreur d'obtention des informations sur la version"
 msgid "Getting the certificate, please wait..."
 msgstr "Obtention du certificat, veuillez patienter..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Proxy Github"
 
@@ -1543,23 +1563,25 @@ msgstr "Cacher"
 msgid "Home"
 msgstr "Menu principal"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "Port de challenge HTTP"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "Host HTTP"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "Port HTTP"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "Port de challenge HTTP"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1624,6 +1646,10 @@ msgstr "Entrez le code de l'application :"
 msgid "Input the recovery code:"
 msgstr "Entrez le code de récupération :"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Installer"
@@ -1727,7 +1753,7 @@ msgstr "Certificat délivré avec succès"
 msgid "Issuer: %{issuer}"
 msgstr "Auteur : %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Secret Jwt"
 
@@ -1847,7 +1873,7 @@ msgstr "Connexion réussie"
 msgid "Logout successful"
 msgstr "Déconnexion réussie"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr ""
 
@@ -2001,7 +2027,7 @@ msgstr "Nouvelle version publiée"
 msgid "Next"
 msgstr "Suivant"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 #, fuzzy
 msgid "Nginx"
 msgstr "Journal Nginx"
@@ -2049,6 +2075,11 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Nginx Configuration Parse Error"
 msgstr "Erreur d'analyse de configuration Nginx"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Erreur d'analyse de configuration Nginx"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2070,17 +2101,17 @@ msgstr ""
 msgid "Nginx Log"
 msgstr "Journal Nginx"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 #, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Chemin du journal des erreurs Nginx"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 #, fuzzy
 msgid "Nginx Reload Command"
 msgstr "Commande de démarrage du terminal"
@@ -2089,7 +2120,7 @@ msgstr "Commande de démarrage du terminal"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx a été rechargé avec succès"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 #, fuzzy
 msgid "Nginx Restart Command"
 msgstr "Commande de démarrage du terminal"
@@ -2098,6 +2129,11 @@ msgstr "Commande de démarrage du terminal"
 msgid "Nginx restarted successfully"
 msgstr "Nginx a redémarré avec succès"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Commande de démarrage du terminal"
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2123,7 +2159,7 @@ msgstr "Erreur d'analyse de configuration Nginx"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2131,12 +2167,17 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "No"
 msgstr "Non"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Nom d'utilisateur"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Nom d'utilisateur"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 #, fuzzy
 msgid "Node Secret"
 msgstr "Secret Jwt"
@@ -2238,7 +2279,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2274,6 +2315,11 @@ msgstr ""
 msgid "Overwrite exist file"
 msgstr ""
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Gérer les sites"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Paramètres"
@@ -2420,7 +2466,7 @@ msgstr "Veuillez saisir votre mot de passe !"
 msgid "Please input your username!"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2442,13 +2488,18 @@ msgstr "Veuillez renseigner un nom de fichier"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "Port HTTP"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "Préférence"
 
@@ -2478,7 +2529,7 @@ msgstr "Fournisseur"
 msgid "Proxy"
 msgstr "Proxy d'API"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2522,7 +2573,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr ""
 
@@ -2769,7 +2820,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "Mode d'exécution"
 
@@ -2784,7 +2835,7 @@ msgstr "En cours d'éxécution"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2846,7 +2897,7 @@ msgstr "Dupliqué avec succès"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "Sauvegarde réussie"
 
@@ -2893,6 +2944,11 @@ msgstr ""
 msgid "Send"
 msgstr "Envoyer"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Informations sur le serveur"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Informations sur le serveur"
@@ -2910,7 +2966,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "Fichier introuvable"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2997,6 +3053,11 @@ msgstr "Directive"
 msgid "Sites-enabled directory not exist"
 msgstr "Directive"
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Installer"
+
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 msgid "SSL Certificate Content"
@@ -3012,9 +3073,15 @@ msgid "SSL Certificate Key Path"
 msgstr "Chemin de la clé du certificat SSL"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "Chemin du certificat SSL"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Chemin de la clé du certificat SSL"
+
 #: src/views/other/Login.vue:197
 #, fuzzy
 msgid "SSO Login"
@@ -3191,7 +3258,7 @@ msgstr ""
 msgid "System Restore"
 msgstr "Système"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx a redémarré avec succès"
@@ -3201,11 +3268,12 @@ msgstr "Nginx a redémarré avec succès"
 msgid "Task not found"
 msgstr "Fichier introuvable"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "Commande de démarrage du terminal"
 
@@ -3223,7 +3291,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3250,7 +3318,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3271,7 +3339,7 @@ msgstr "Chemin de la clé du certificat SSL"
 msgid "The path exists, but the file is not a private key"
 msgstr "Chemin de la clé du certificat SSL"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3294,8 +3362,8 @@ msgstr ""
 "dont vous avez besoin pour obtenir le certificat, prendre en charge "
 "plusieurs domaines."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr ""
 
@@ -3655,7 +3723,7 @@ msgid "Writing certificate to disk"
 msgstr "Écriture du certificat sur le disque"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 122 - 55
app/src/language/ko_KR/app.po

@@ -50,9 +50,9 @@ msgstr "작업"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -133,6 +133,10 @@ msgstr "API 토큰"
 msgid "API Type"
 msgstr "API 토큰"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -200,7 +204,7 @@ msgstr "이 항목을 복구하시겠습니까?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "이 지시문을 정말로 제거하시겠습니까?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "이 항목을 제거하시겠습니까?"
 
@@ -225,7 +229,7 @@ msgstr "시도 횟수"
 msgid "Attempts"
 msgstr "시도 횟수"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "인증"
 
@@ -310,7 +314,6 @@ msgid "Base information"
 msgstr "기본 정보"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -351,7 +354,7 @@ msgstr "빌드 환경"
 msgid "CA Dir"
 msgstr "CA 디렉토리"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "CA 디렉토리"
 
@@ -383,7 +386,7 @@ msgstr ""
 msgid "Category"
 msgstr ""
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 #, fuzzy
 msgid "Cert"
 msgstr "자동 인증"
@@ -402,7 +405,7 @@ msgstr "인증서 갱신 오류"
 msgid "Certificate parse error"
 msgstr "인증서가 만료되었습니다"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "인증서 갱신 간격"
 
@@ -412,7 +415,7 @@ msgid "Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "인증서 상태"
@@ -436,7 +439,7 @@ msgstr "인증 방법"
 msgid "Change Certificate"
 msgstr "인증서 변경"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -511,7 +514,7 @@ msgstr "명령어"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "댓글"
 
@@ -654,7 +657,7 @@ msgstr "현재 버전"
 msgid "Custom"
 msgstr "사용자 정의"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -669,7 +672,7 @@ msgstr "대시보드"
 msgid "Database (Optional, default: database)"
 msgstr "데이터베이스 (선택사항, 기본값: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr ""
 
@@ -744,6 +747,10 @@ msgstr "스트림 삭제: %{stream_name}"
 msgid "Deleted successfully"
 msgstr "성공적으로 삭제됨"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "배포"
@@ -836,6 +843,9 @@ msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -974,6 +984,7 @@ msgid "Edit Stream"
 msgstr "스트림 편집"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 #, fuzzy
 msgid "Email"
 msgstr "이메일 (*)"
@@ -1000,6 +1011,11 @@ msgstr "%{name}에 대한 자동 갱신 활성화 실패"
 msgid "Enable failed"
 msgstr "활성화 실패"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "TLS 활성화"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1051,7 +1067,10 @@ msgstr "TLS 활성화"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1408,12 +1427,12 @@ msgid ""
 "process."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "중국 사용자를 위해: https://mirror.ghproxy.com/"
 
@@ -1467,7 +1486,7 @@ msgstr "릴리스 정보 가져오기 오류"
 msgid "Getting the certificate, please wait..."
 msgstr "인증서를 가져오는 중입니다. 잠시 기다려 주세요..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Github 프록시"
 
@@ -1483,23 +1502,25 @@ msgstr ""
 msgid "Home"
 msgstr "홈"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "HTTP 검증 포트"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "HTTP 호스트"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "HTTP 포트"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "HTTP 검증 포트"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1554,6 +1575,10 @@ msgstr ""
 msgid "Input the recovery code:"
 msgstr ""
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "설치"
@@ -1658,7 +1683,7 @@ msgstr "성공적으로 활성화됨"
 msgid "Issuer: %{issuer}"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt 토큰"
 
@@ -1773,7 +1798,7 @@ msgstr "로그인 성공"
 msgid "Logout successful"
 msgstr "로그아웃 성공"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "로그관리"
 
@@ -1934,7 +1959,7 @@ msgstr "새 버전 출시"
 msgid "Next"
 msgstr "다음"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1982,6 +2007,11 @@ msgstr "Nginx 구성 오류름"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 구성 오류름"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Nginx 구성 오류름"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2003,16 +2033,16 @@ msgstr ""
 msgid "Nginx Log"
 msgstr "Nginx 로그"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Nginx 오류 로그 경로"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr ""
 
@@ -2021,7 +2051,7 @@ msgstr ""
 msgid "Nginx reloaded successfully"
 msgstr "Nginx가 성공적으로 리로드됨"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 #, fuzzy
 msgid "Nginx Restart Command"
 msgstr "터미널 시작 명령"
@@ -2031,6 +2061,11 @@ msgstr "터미널 시작 명령"
 msgid "Nginx restarted successfully"
 msgstr "Nginx가 성공적으로 재시작됨"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "터미널 시작 명령"
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2056,7 +2091,7 @@ msgstr "Nginx 구성 오류름"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2064,12 +2099,17 @@ msgstr "Nginx 구성 오류름"
 msgid "No"
 msgstr "아니요"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "이름 변경"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "이름 변경"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "노드 시크릿"
 
@@ -2171,7 +2211,7 @@ msgstr "온라인"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "오픈AI"
 
@@ -2208,6 +2248,11 @@ msgstr "덮어쓰기"
 msgid "Overwrite exist file"
 msgstr "기존 파일 덮어쓰기"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "사이트 관리"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "파라미터"
@@ -2350,7 +2395,7 @@ msgstr "비밀번호를 입력해주세요!"
 msgid "Please input your username!"
 msgstr "사용자 이름을 입력해주세요!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2373,13 +2418,18 @@ msgstr "적어도 하나의 노드를 선택해주세요!"
 msgid "Please select at least one node to upgrade"
 msgstr "적어도 하나의 노드를 선택해주세요!"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "HTTP 포트"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "사전 출시"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "환경설정"
 
@@ -2409,7 +2459,7 @@ msgstr "제공자"
 msgid "Proxy"
 msgstr "API 프록시"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2451,7 +2501,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr ""
 
@@ -2699,7 +2749,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 #, fuzzy
 msgid "Run Mode"
 msgstr "실행 모드"
@@ -2715,7 +2765,7 @@ msgstr "실행 중"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2777,7 +2827,7 @@ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 #, fuzzy
 msgid "Save successfully"
 msgstr "성공적으로 저장됨"
@@ -2824,6 +2874,11 @@ msgstr ""
 msgid "Send"
 msgstr "보내기"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "서버 정보"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "서버 정보"
@@ -2841,7 +2896,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "파일을 찾을 수 없음"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2925,6 +2980,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "설치"
+
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 msgid "SSL Certificate Content"
@@ -2940,10 +3000,16 @@ msgid "SSL Certificate Key Path"
 msgstr "SSL 인증서 키 경로"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 #, fuzzy
 msgid "SSL Certificate Path"
 msgstr "SSL 인증서 경로"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "SSL 인증서 키 경로"
+
 #: src/views/other/Login.vue:197
 #, fuzzy
 msgid "SSO Login"
@@ -3117,7 +3183,7 @@ msgstr ""
 msgid "System Restore"
 msgstr "시스템"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx가 성공적으로 재시작됨"
@@ -3127,11 +3193,12 @@ msgstr "Nginx가 성공적으로 재시작됨"
 msgid "Task not found"
 msgstr "파일을 찾을 수 없음"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "터미널"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "터미널 시작 명령"
 
@@ -3149,7 +3216,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "파일 이름은 다음 문자를 포함할 수 없습니다: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3175,7 +3242,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3195,7 +3262,7 @@ msgstr "Certificate Status"
 msgid "The path exists, but the file is not a private key"
 msgstr "경로는 존재하지만 파일은 개인 키가 아닙니다"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3217,8 +3284,8 @@ msgstr ""
 "Note: The server_name in the current configuration must be the domain name "
 "you need to get the certificate."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 #, fuzzy
 msgid "The url is invalid"
 msgstr "유효한 URL이 아닙니다"
@@ -3582,7 +3649,7 @@ msgid "Writing certificate to disk"
 msgstr "인증서를 디스크에 쓰기"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 107 - 51
app/src/language/messages.pot

@@ -41,9 +41,9 @@ msgstr ""
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -125,6 +125,10 @@ msgstr ""
 msgid "API Type"
 msgstr ""
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -187,7 +191,7 @@ msgstr ""
 msgid "Are you sure you want to remove this directive?"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr ""
 
@@ -211,7 +215,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr ""
 
@@ -295,7 +299,6 @@ msgid "Base information"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -335,7 +338,7 @@ msgstr ""
 msgid "CA Dir"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr ""
 
@@ -366,7 +369,7 @@ msgstr ""
 msgid "Category"
 msgstr ""
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr ""
 
@@ -382,7 +385,7 @@ msgstr ""
 msgid "Certificate parse error"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr ""
 
@@ -391,7 +394,7 @@ msgid "Certificate renewed successfully"
 msgstr ""
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] ""
@@ -415,7 +418,7 @@ msgstr ""
 msgid "Change Certificate"
 msgstr ""
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] ""
@@ -485,7 +488,7 @@ msgstr ""
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr ""
 
@@ -623,7 +626,7 @@ msgstr ""
 msgid "Custom"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid "Customize the name of local node to be displayed in the environment indicator."
 msgstr ""
 
@@ -638,7 +641,7 @@ msgstr ""
 msgid "Database (Optional, default: database)"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr ""
 
@@ -706,6 +709,10 @@ msgstr ""
 msgid "Deleted successfully"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr ""
@@ -793,6 +800,9 @@ msgstr ""
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62
@@ -930,6 +940,7 @@ msgid "Edit Stream"
 msgstr ""
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr ""
 
@@ -954,6 +965,10 @@ msgstr ""
 msgid "Enable failed"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:29
+msgid "Enable HTTPS"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:53
 #: src/language/constants.ts:54
 msgid "Enable Remote Site Error"
@@ -998,7 +1013,10 @@ msgstr ""
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1324,12 +1342,12 @@ msgstr ""
 msgid "Follow the instructions in the dialog to complete the passkey registration process."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr ""
 
@@ -1379,7 +1397,7 @@ msgstr ""
 msgid "Getting the certificate, please wait..."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr ""
 
@@ -1395,23 +1413,23 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/Preference.vue:174
+msgid "HTTP"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1462,6 +1480,10 @@ msgstr ""
 msgid "Input the recovery code:"
 msgstr ""
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8
 #: src/views/other/Install.vue:185
 msgid "Install"
@@ -1556,7 +1578,7 @@ msgstr ""
 msgid "Issuer: %{issuer}"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr ""
 
@@ -1662,7 +1684,7 @@ msgstr ""
 msgid "Logout successful"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr ""
 
@@ -1804,7 +1826,7 @@ msgstr ""
 msgid "Next"
 msgstr ""
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr ""
 
@@ -1849,6 +1871,10 @@ msgstr ""
 msgid "Nginx Configuration Parse Error"
 msgstr ""
 
+#: src/views/preference/NginxSettings.vue:18
+msgid "Nginx Configuration Path"
+msgstr ""
+
 #: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Configurations Directory"
 msgstr ""
@@ -1870,15 +1896,15 @@ msgstr ""
 msgid "Nginx Log"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr ""
 
@@ -1886,7 +1912,7 @@ msgstr ""
 msgid "Nginx reloaded successfully"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr ""
 
@@ -1894,6 +1920,10 @@ msgstr ""
 msgid "Nginx restarted successfully"
 msgstr ""
 
+#: src/views/preference/NginxSettings.vue:33
+msgid "Nginx Test Config Command"
+msgstr ""
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -1915,7 +1945,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -1923,11 +1953,15 @@ msgstr ""
 msgid "No"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+msgid "Node"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:15
 msgid "Node name"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr ""
 
@@ -2022,7 +2056,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr ""
 
@@ -2059,6 +2093,10 @@ msgstr ""
 msgid "Overwrite exist file"
 msgstr ""
 
+#: src/views/preference/AppSettings.vue:13
+msgid "Page Size"
+msgstr ""
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr ""
@@ -2185,7 +2223,7 @@ msgid "Please input your username!"
 msgstr ""
 
 #: src/views/other/Install.vue:110
-#: src/views/system/Backup/SystemRestore.vue:12
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2205,6 +2243,10 @@ msgstr ""
 msgid "Please select at least one node to upgrade"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr ""
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220
 #: src/views/system/Upgrade.vue:194
@@ -2213,7 +2255,7 @@ msgid "Pre-release"
 msgstr ""
 
 #: src/routes/modules/preference.ts:10
-#: src/views/preference/Preference.vue:141
+#: src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr ""
 
@@ -2241,7 +2283,7 @@ msgstr ""
 msgid "Proxy"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2280,7 +2322,7 @@ msgstr ""
 msgid "Recovery codes are used to access your account when you lose access to your 2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr ""
 
@@ -2497,7 +2539,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr ""
 
@@ -2512,7 +2554,7 @@ msgstr ""
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2568,7 +2610,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr ""
 
@@ -2615,6 +2657,10 @@ msgstr ""
 msgid "Send"
 msgstr ""
 
+#: src/views/preference/Preference.vue:156
+msgid "Server"
+msgstr ""
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr ""
@@ -2631,7 +2677,7 @@ msgstr ""
 msgid "Session not found"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid "Set the recursive nameservers to override the systems nameservers for the step of DNS challenge."
 msgstr ""
 
@@ -2704,6 +2750,10 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+msgid "Skip Installation"
+msgstr ""
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr ""
@@ -2717,9 +2767,14 @@ msgid "SSL Certificate Key Path"
 msgstr ""
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:40
+msgid "SSL Key Path"
+msgstr ""
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr ""
@@ -2879,7 +2934,7 @@ msgid "System Restore"
 msgstr ""
 
 #: src/views/other/Install.vue:106
-#: src/views/system/Backup/SystemRestore.vue:8
+#: src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr ""
 
@@ -2888,11 +2943,12 @@ msgid "Task not found"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10
+#: src/views/preference/Preference.vue:180
 #: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr ""
 
@@ -2904,7 +2960,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid "The ICP Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 
@@ -2924,7 +2980,7 @@ msgstr ""
 msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid "The node name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 
@@ -2940,7 +2996,7 @@ msgstr ""
 msgid "The path exists, but the file is not a private key"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 
@@ -2952,8 +3008,8 @@ msgstr ""
 msgid "The server_name in the current configuration must be the domain name you need to get the certificate, supportmultiple domains."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr ""
 
@@ -3263,7 +3319,7 @@ msgid "Writing certificate to disk"
 msgstr ""
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 123 - 55
app/src/language/ru_RU/app.po

@@ -52,9 +52,9 @@ msgstr "Действие"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -134,6 +134,11 @@ msgstr "API токен"
 msgid "API Type"
 msgstr "Тип API"
 
+#: src/views/preference/Preference.vue:162
+#, fuzzy
+msgid "App"
+msgstr "Применить"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr "Применить"
@@ -197,7 +202,7 @@ msgstr "Вы уверены, что хотите восстановить это
 msgid "Are you sure you want to remove this directive?"
 msgstr "Вы уверены, что хотите удалить эту директиву?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "Вы уверены, что хотите удалить этот элемент?"
 
@@ -221,7 +226,7 @@ msgstr "Попытка исправить"
 msgid "Attempts"
 msgstr "Попытки"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "Авторизация"
 
@@ -306,7 +311,6 @@ msgid "Base information"
 msgstr "Основная информация"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -347,7 +351,7 @@ msgstr "Собрать с"
 msgid "CA Dir"
 msgstr "Директория корневого сертификата"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr ""
 
@@ -378,7 +382,7 @@ msgstr "Невозможно удалить начального пользов
 msgid "Category"
 msgstr "Категория"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 #, fuzzy
 msgid "Cert"
 msgstr "Авто Сертификат"
@@ -395,7 +399,7 @@ msgstr "Ошибка декодирования сертификата"
 msgid "Certificate parse error"
 msgstr "Ошибка анализа сертификата"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "Интервал обновления сертификата"
 
@@ -404,7 +408,7 @@ msgid "Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Статус сертификата"
@@ -428,7 +432,7 @@ msgstr "Метод Challenge"
 msgid "Change Certificate"
 msgstr "Изменить сертификат"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Сертификат изменен"
@@ -501,7 +505,7 @@ msgstr "Команда"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Комментарии"
 
@@ -642,7 +646,7 @@ msgstr "Текущяя версия"
 msgid "Custom"
 msgstr "Пользовательский"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 #, fuzzy
 msgid ""
 "Customize the name of local node to be displayed in the environment "
@@ -658,7 +662,7 @@ msgstr "Доска"
 msgid "Database (Optional, default: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "Дни"
 
@@ -730,6 +734,10 @@ msgstr "Удалить поток: %{stream_name}"
 msgid "Deleted successfully"
 msgstr "Удалено успешно"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Развернуть"
@@ -822,6 +830,9 @@ msgstr "Включение %{conf_name} in %{node_name} успешно"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -964,6 +975,7 @@ msgid "Edit Stream"
 msgstr "Редактировать поток"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "Электронная почта"
 
@@ -988,6 +1000,11 @@ msgstr "Не удалось включить автоматическое про
 msgid "Enable failed"
 msgstr "Не удалось включить"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Включить TOTP"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1036,7 +1053,10 @@ msgstr "Включить TOTP"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1392,12 +1412,12 @@ msgstr ""
 "Следуйте инструкциям в всплывающем окне, чтобы завершить процесс регистрации "
 "ключа доступа."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr "Для китайскоязычных пользователей"
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Для китайских пользователей: https://mirror.ghproxy.com/"
 
@@ -1449,7 +1469,7 @@ msgstr "Ошибка получения информации о выпуске"
 msgid "Getting the certificate, please wait..."
 msgstr "Получение сертификата, пожалуйста, подождите..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Прокси Github"
 
@@ -1465,23 +1485,25 @@ msgstr "Скрыть"
 msgid "Home"
 msgstr "Главная"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "Порт HTTP Challenge"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "Хостинг HTTP"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "Порт HTTP"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "Порт HTTP Challenge"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr "ICP номер"
 
@@ -1541,6 +1563,10 @@ msgstr "Введите код из приложения:"
 msgid "Input the recovery code:"
 msgstr "Введите код восстановления:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Установить"
@@ -1639,7 +1665,7 @@ msgstr "Сертификат успешно выдан"
 msgid "Issuer: %{issuer}"
 msgstr "Издатель: %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt секрет"
 
@@ -1747,7 +1773,7 @@ msgstr "Авторизация успешна"
 msgid "Logout successful"
 msgstr "Выход выполнен успешно"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Прокрутка"
 
@@ -1899,7 +1925,7 @@ msgstr "Вышла новая версия"
 msgid "Next"
 msgstr "Дальше"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1946,6 +1972,11 @@ msgstr "Ошибка разбора конфигурации Nginx"
 msgid "Nginx Configuration Parse Error"
 msgstr "Ошибка разбора конфигурации Nginx"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Ошибка разбора конфигурации Nginx"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -1967,16 +1998,16 @@ msgstr "Nginx не работает"
 msgid "Nginx Log"
 msgstr "Журнал"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "Белый список директорий для логов Nginx"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Путь для Nginx Error Log"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "Команда перезагрузки Nginx"
 
@@ -1984,7 +2015,7 @@ msgstr "Команда перезагрузки Nginx"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx успешно перезагружен"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 #, fuzzy
 msgid "Nginx Restart Command"
 msgstr "Терминальная команда запуска"
@@ -1993,6 +2024,11 @@ msgstr "Терминальная команда запуска"
 msgid "Nginx restarted successfully"
 msgstr "Nginx успешно перезапущен"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Терминальная команда запуска"
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2018,7 +2054,7 @@ msgstr "Ошибка разбора конфигурации Nginx"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2026,11 +2062,16 @@ msgstr "Ошибка разбора конфигурации Nginx"
 msgid "No"
 msgstr "Нет"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Имя узла"
+
+#: src/views/preference/NodeSettings.vue:15
 msgid "Node name"
 msgstr "Имя узла"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "Секрет узла"
 
@@ -2133,7 +2174,7 @@ msgstr "Онлайн"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2169,6 +2210,11 @@ msgstr "Перезаписать"
 msgid "Overwrite exist file"
 msgstr "Перезаписать существующий файл"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Сайты"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Параметры"
@@ -2317,7 +2363,7 @@ msgstr "Введите ваш пароль!"
 msgid "Please input your username!"
 msgstr "Введите ваше имя пользователя!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2341,13 +2387,18 @@ msgstr "Пожалуйста, выберите хотя бы один узел!"
 msgid "Please select at least one node to upgrade"
 msgstr "Пожалуйста, выберите хотя бы один узел"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "Порт HTTP"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "Предварительный выпуск"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "Настройки"
 
@@ -2375,7 +2426,7 @@ msgstr "Провайдер"
 msgid "Proxy"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2419,7 +2470,7 @@ msgstr ""
 "Коды восстановления используются для доступа к аккаунту при утере 2FA-"
 "устройства. Каждый код можно использовать только один раз."
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "Рекурсивные DNS"
 
@@ -2648,7 +2699,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "Режим работы"
 
@@ -2663,7 +2714,7 @@ msgstr "Выполняется"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2723,7 +2774,7 @@ msgstr "Поток %{name} успешно сохранён на %{node}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "Сохранено успешно"
 
@@ -2772,6 +2823,11 @@ msgstr ""
 msgid "Send"
 msgstr "Отправлено"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Информация о сервере"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Информация о сервере"
@@ -2788,7 +2844,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "Сессия не найдена"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2873,6 +2929,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Установить"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr "Содержимое SSL-сертификата"
@@ -2886,9 +2947,15 @@ msgid "SSL Certificate Key Path"
 msgstr "Путь к ключу SSL-сертификата"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "Путь к SSL сертификату"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Путь к ключу SSL-сертификата"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr "SSO Вход"
@@ -3055,7 +3122,7 @@ msgstr "Первоначальный пользователь системы"
 msgid "System Restore"
 msgstr "Система"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx успешно перезапущен"
@@ -3065,11 +3132,12 @@ msgstr "Nginx успешно перезапущен"
 msgid "Task not found"
 msgstr "Файл не найден"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Терминал"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "Терминальная команда запуска"
 
@@ -3087,7 +3155,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Имя файла не может содержать такой символ: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 #, fuzzy
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
@@ -3118,7 +3186,7 @@ msgstr ""
 "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "точки."
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -3140,7 +3208,7 @@ msgstr "Путь существует, но файл не является се
 msgid "The path exists, but the file is not a private key"
 msgstr "Путь существует, но файл не является приватным ключом"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 #, fuzzy
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
@@ -3167,8 +3235,8 @@ msgstr ""
 "server_name в текущей конфигурации должен быть доменным именем, для которого "
 "вам нужно получить сертификат, поддержка нескольких доменов."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "URL недействителен"
 
@@ -3534,7 +3602,7 @@ msgid "Writing certificate to disk"
 msgstr "Запись сертификата на диск"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 122 - 55
app/src/language/tr_TR/app.po

@@ -48,9 +48,9 @@ msgstr "Eylem"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -132,6 +132,10 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API Token"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -198,7 +202,7 @@ msgstr "Bu öğeyi kurtarmak istediğinizden emin misiniz?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "Bu yönergeyi kaldırmak istediğinizden emin misiniz?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
 
@@ -223,7 +227,7 @@ msgstr "Girişimler"
 msgid "Attempts"
 msgstr "Girişimler"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "Kimlik Doğrulama"
 
@@ -308,7 +312,6 @@ msgid "Base information"
 msgstr "Temel bilgiler"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -349,7 +352,7 @@ msgstr "İle Oluşturuldu"
 msgid "CA Dir"
 msgstr "CA Dizini"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "CADizini"
 
@@ -382,7 +385,7 @@ msgstr "Sistem İlk Kullanıcısı"
 msgid "Category"
 msgstr ""
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr ""
 
@@ -400,7 +403,7 @@ msgstr "Senkronizasyon Sertifikası Hatası"
 msgid "Certificate parse error"
 msgstr "Senkronizasyon Sertifikası Hatası"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "Sertifika Yenileme Aralığı"
 
@@ -410,7 +413,7 @@ msgid "Certificate renewed successfully"
 msgstr "Başarıyla temizlendi"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Sertifika Durumu"
@@ -434,7 +437,7 @@ msgstr "Doğrulama Yöntemi"
 msgid "Change Certificate"
 msgstr "Sertifika Değiştir"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Değişen Sertifika"
@@ -507,7 +510,7 @@ msgstr "Komut"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Yorumlar"
 
@@ -649,7 +652,7 @@ msgstr "Mevcut sürüm"
 msgid "Custom"
 msgstr "Özelleştirilmiş"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 #, fuzzy
 msgid ""
 "Customize the name of local node to be displayed in the environment "
@@ -665,7 +668,7 @@ msgstr "Kontrol Paneli"
 msgid "Database (Optional, default: database)"
 msgstr "Veritabanı (İsteğe bağlı, varsayılan: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "Günler"
 
@@ -742,6 +745,10 @@ msgstr "Akışı sil: %{stream_name}"
 msgid "Deleted successfully"
 msgstr "Başarıyla silindi"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Yayınla"
@@ -842,6 +849,9 @@ msgstr ""
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -984,6 +994,7 @@ msgid "Edit Stream"
 msgstr "Akışı Düzenle"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "E-posta"
 
@@ -1008,6 +1019,11 @@ msgstr "%{name} için otomatik yenilemeyi etkinleştirme başarısız oldu"
 msgid "Enable failed"
 msgstr "Etkinleştirme başarısız"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "TOTP'yi Etkinleştir"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1066,7 +1082,10 @@ msgstr "TOTP'yi Etkinleştir"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1422,12 +1441,12 @@ msgstr ""
 "Geçiş anahtarı kayıt işlemini tamamlamak için iletişim kutusundaki "
 "talimatları izleyin."
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Çinli kullanıcılar için: https://mirror.ghproxy.com/"
 
@@ -1479,7 +1498,7 @@ msgstr "Sürüm bilgilerini alma hatası"
 msgid "Getting the certificate, please wait..."
 msgstr "Sertifika alınıyor, lütfen bekleyin..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Github Proxy"
 
@@ -1495,23 +1514,25 @@ msgstr "Gizle"
 msgid "Home"
 msgstr "Anasayfa"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "HTTP Doğrulama Bağlantı Noktası"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "HTTP Sunucusu"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "HTTP bağlantı noktası"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "HTTP Doğrulama Bağlantı Noktası"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1572,6 +1593,10 @@ msgstr "Uygulamadan kodu girin:"
 msgid "Input the recovery code:"
 msgstr "Kurtarma kodunu girin:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Yükle"
@@ -1672,7 +1697,7 @@ msgstr "Sertifika başarıyla yayınlandı"
 msgid "Issuer: %{issuer}"
 msgstr "Düzenleyen: %{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt Secret"
 
@@ -1779,7 +1804,7 @@ msgstr "Giriş Başarılı"
 msgid "Logout successful"
 msgstr "Çıkış başarılı"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -1956,7 +1981,7 @@ msgstr "Yeni sürüm yayınlandı"
 msgid "Next"
 msgstr "Sonraki"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 #, fuzzy
 msgid "Nginx"
 msgstr "Nginx"
@@ -2006,6 +2031,11 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2031,16 +2061,16 @@ msgstr "Nginx çalışmıyor"
 msgid "Nginx Log"
 msgstr "Nginx Günlüğü"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Nginx Hata Günlüğü Yolu"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr ""
 
@@ -2049,7 +2079,7 @@ msgstr ""
 msgid "Nginx reloaded successfully"
 msgstr "Nginx başarıyla yeniden yüklendi"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 #, fuzzy
 msgid "Nginx Restart Command"
 msgstr "Terminal Başlatma Komutu"
@@ -2059,6 +2089,11 @@ msgstr "Terminal Başlatma Komutu"
 msgid "Nginx restarted successfully"
 msgstr "Nginx başarıyla yeniden başlatıldı"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Terminal Başlatma Komutu"
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2084,7 +2119,7 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2093,12 +2128,17 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "No"
 msgstr "Hayır"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Yeni Ad"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Yeni Ad"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 #, fuzzy
 msgid "Node Secret"
 msgstr "Düğüm Sırrı"
@@ -2215,7 +2255,7 @@ msgstr "Çevrimiçi"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 #, fuzzy
 msgid "OpenAI"
 msgstr "OpenAI"
@@ -2259,6 +2299,11 @@ msgstr "Üzerine yaz"
 msgid "Overwrite exist file"
 msgstr "Mevcut dosyanın üzerine yaz"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Siteleri Yönet"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 #, fuzzy
 msgid "Params"
@@ -2430,7 +2475,7 @@ msgstr "Lütfen şifrenizi girin!"
 msgid "Please input your username!"
 msgstr "Lütfen kullanıcı adınızı girin!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2456,6 +2501,11 @@ msgstr "Lütfen en az bir düğüm seçin!"
 msgid "Please select at least one node to upgrade"
 msgstr "Lütfen yükseltmek için en az bir düğüm seçin"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "HTTP bağlantı noktası"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
@@ -2463,7 +2513,7 @@ msgstr "Lütfen yükseltmek için en az bir düğüm seçin"
 msgid "Pre-release"
 msgstr "Ön sürüm"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 #, fuzzy
 msgid "Preference"
 msgstr "Tercih"
@@ -2498,7 +2548,7 @@ msgstr "Hizmet Sağlayıcı"
 msgid "Proxy"
 msgstr "Proxy"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2545,7 +2595,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 #, fuzzy
 msgid "Recursive Nameservers"
 msgstr "Yinelemeli Ad Sunucuları"
@@ -2814,7 +2864,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 #, fuzzy
 msgid "Run Mode"
 msgstr "Çalışma Modu"
@@ -2831,7 +2881,7 @@ msgstr "Çalışıyor"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2897,7 +2947,7 @@ msgstr "%{conf_name} başarıyla %{node_name} düğümüne kopyalandı"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 #, fuzzy
 msgid "Save successfully"
 msgstr "Başarıyla kaydedin"
@@ -2951,6 +3001,11 @@ msgstr ""
 msgid "Send"
 msgstr "Gönder"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Sunucu Bilgisi"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 #, fuzzy
 msgid "Server Info"
@@ -2970,7 +3025,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "Dosya bulunamadı"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 #, fuzzy
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
@@ -3064,6 +3119,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Yükle"
+
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 msgid "SSL Certificate Content"
@@ -3080,10 +3140,16 @@ msgid "SSL Certificate Key Path"
 msgstr "SSL Sertifikası Anahtar Yolu"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 #, fuzzy
 msgid "SSL Certificate Path"
 msgstr "SSL Sertifika Yolu"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "SSL Sertifikası Anahtar Yolu"
+
 #: src/views/other/Login.vue:197
 #, fuzzy
 msgid "SSO Login"
@@ -3269,7 +3335,7 @@ msgstr "Sistem İlk Kullanıcısı"
 msgid "System Restore"
 msgstr "Sistem"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx başarıyla yeniden başlatıldı"
@@ -3279,12 +3345,13 @@ msgstr "Nginx başarıyla yeniden başlatıldı"
 msgid "Task not found"
 msgstr "Dosya bulunamadı"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 #, fuzzy
 msgid "Terminal"
 msgstr "terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 #, fuzzy
 msgid "Terminal Start Command"
 msgstr "Terminal Başlatma Komutu"
@@ -3305,7 +3372,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Dosya adı aşağıdaki karakterleri içeremez: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 #, fuzzy
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
@@ -3336,7 +3403,7 @@ msgid ""
 msgstr ""
 "Model adı yalnızca harf, unicode, sayı, tire, çizgi ve nokta içermelidir."
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -3359,7 +3426,7 @@ msgstr "Yol var, ancak dosya bir sertifika değil"
 msgid "The path exists, but the file is not a private key"
 msgstr "Yol var, ancak dosya bir özel anahtar değil"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 #, fuzzy
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
@@ -3388,8 +3455,8 @@ msgstr ""
 "Geçerli yapılandırmadaki sunucu_adı, sertifika almak için ihtiyacınız olan "
 "alan adı olmalıdır, birden çok alan adını destekler."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 #, fuzzy
 msgid "The url is invalid"
 msgstr "URL geçersiz"
@@ -3809,7 +3876,7 @@ msgid "Writing certificate to disk"
 msgstr "Sertifikayı diske yazma"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 #, fuzzy

+ 115 - 52
app/src/language/vi_VN/app.po

@@ -46,9 +46,9 @@ msgstr "Hành động"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -133,6 +133,10 @@ msgstr ""
 msgid "API Type"
 msgstr "Loại"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr ""
@@ -207,7 +211,7 @@ msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 #, fuzzy
 msgid "Are you sure you want to remove this item?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
@@ -233,7 +237,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 #, fuzzy
 msgid "Auth"
 msgstr "Tác giả"
@@ -320,7 +324,6 @@ msgid "Base information"
 msgstr "Thông tin"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
@@ -364,7 +367,7 @@ msgstr "Xây dựng với"
 msgid "CA Dir"
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr ""
 
@@ -396,7 +399,7 @@ msgstr ""
 msgid "Category"
 msgstr ""
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 #, fuzzy
 msgid "Cert"
 msgstr "Tự động ký chứng chỉ SSL"
@@ -415,7 +418,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Certificate parse error"
 msgstr "Chứng chỉ đã hết hạn"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 #, fuzzy
 msgid "Certificate Renewal Interval"
 msgstr "Chứng chỉ SSL hợp lệ"
@@ -426,7 +429,7 @@ msgid "Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -454,7 +457,7 @@ msgstr "Phương pháp xác thực"
 msgid "Change Certificate"
 msgstr "Thay đổi chứng chỉ"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -531,7 +534,7 @@ msgstr "Bình luận"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "Bình luận"
 
@@ -676,7 +679,7 @@ msgstr "Phiên bản hiện tại"
 msgid "Custom"
 msgstr "Tuỳ chỉnh"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -691,7 +694,7 @@ msgstr "Bảng điều khiển"
 msgid "Database (Optional, default: database)"
 msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr ""
 
@@ -768,6 +771,10 @@ msgstr "Xoá trang web: %{site_name}"
 msgid "Deleted successfully"
 msgstr "Đã xoá thành công"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "Triển khai"
@@ -861,6 +868,9 @@ msgstr "Đã bật %{conf_name} trên %{node_name}"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -1009,6 +1019,7 @@ msgid "Edit Stream"
 msgstr "Sửa trang web"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 #, fuzzy
 msgid "Email"
 msgstr "Email (*)"
@@ -1036,6 +1047,11 @@ msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 msgid "Enable failed"
 msgstr "Bật không thành công"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "Bật TLS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 #, fuzzy
 msgid "Enable Remote Site Error"
@@ -1087,7 +1103,10 @@ msgstr "Bật TLS"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1445,12 +1464,12 @@ msgid ""
 "process."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 #, fuzzy
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/"
@@ -1505,7 +1524,7 @@ msgstr "Nhận lỗi thông tin phát hành"
 msgid "Getting the certificate, please wait..."
 msgstr "Đang lấy chứng chỉ, vui lòng đợi..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr ""
 
@@ -1521,23 +1540,23 @@ msgstr ""
 msgid "Home"
 msgstr "Trang chủ"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/Preference.vue:174
+msgid "HTTP"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr ""
 
@@ -1593,6 +1612,10 @@ msgstr ""
 msgid "Input the recovery code:"
 msgstr ""
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "Cài đặt"
@@ -1697,7 +1720,7 @@ msgstr "Cấp chứng chỉ thành công"
 msgid "Issuer: %{issuer}"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr ""
 
@@ -1813,7 +1836,7 @@ msgstr "Đăng nhập thành công"
 msgid "Logout successful"
 msgstr "Đã đăng xuất"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr ""
 
@@ -1968,7 +1991,7 @@ msgstr "Đã có phiên bản mới"
 msgid "Next"
 msgstr "Tiếp theo"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr ""
 
@@ -2016,6 +2039,11 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Nginx Configuration Parse Error"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
 #: src/views/preference/NginxSettings.vue:15
 #, fuzzy
 msgid "Nginx Configurations Directory"
@@ -2037,16 +2065,16 @@ msgstr ""
 msgid "Nginx Log"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr ""
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 #, fuzzy
 msgid "Nginx PID Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr ""
 
@@ -2055,7 +2083,7 @@ msgstr ""
 msgid "Nginx reloaded successfully"
 msgstr "Reload Nginx thành công"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr ""
 
@@ -2064,6 +2092,10 @@ msgstr ""
 msgid "Nginx restarted successfully"
 msgstr "Restart Nginx thành công"
 
+#: src/views/preference/NginxSettings.vue:33
+msgid "Nginx Test Config Command"
+msgstr ""
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr ""
@@ -2089,7 +2121,7 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2097,12 +2129,17 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "No"
 msgstr "Không"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "Username"
+
+#: src/views/preference/NodeSettings.vue:15
 #, fuzzy
 msgid "Node name"
 msgstr "Username"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr ""
 
@@ -2204,7 +2241,7 @@ msgstr "Trực tuyến"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr ""
 
@@ -2241,6 +2278,11 @@ msgstr "Ghi đè"
 msgid "Overwrite exist file"
 msgstr "Ghi đè tập tin đã tồn tại"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "Quản lý Website"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "Tham số"
@@ -2386,7 +2428,7 @@ msgstr "Vui lòng nhập mật khẩu!"
 msgid "Please input your username!"
 msgstr "Vui lòng nhập username!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2408,13 +2450,17 @@ msgstr "Vui lòng nhập username!"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr ""
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "Cài đặt"
 
@@ -2443,7 +2489,7 @@ msgstr "Nhà cung cấp"
 msgid "Proxy"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr ""
 
@@ -2485,7 +2531,7 @@ msgid ""
 "2FA device. Each code can only be used once."
 msgstr ""
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr ""
 
@@ -2733,7 +2779,7 @@ msgstr ""
 msgid "RPID"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 #, fuzzy
 msgid "Run Mode"
 msgstr "Run Mode"
@@ -2749,7 +2795,7 @@ msgstr "Running"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2811,7 +2857,7 @@ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 #, fuzzy
 msgid "Save successfully"
 msgstr "Lưu thành công"
@@ -2858,6 +2904,11 @@ msgstr ""
 msgid "Send"
 msgstr "Gửi"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "Thông tin máy chủ"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "Thông tin máy chủ"
@@ -2875,7 +2926,7 @@ msgstr ""
 msgid "Session not found"
 msgstr "Không tìm thấy tệp tin"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2960,6 +3011,11 @@ msgstr ""
 msgid "Sites-enabled directory not exist"
 msgstr ""
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "Cài đặt"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr ""
@@ -2973,9 +3029,15 @@ msgid "SSL Certificate Key Path"
 msgstr ""
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr ""
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "Đường dẫn"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr ""
@@ -3148,7 +3210,7 @@ msgstr ""
 msgid "System Restore"
 msgstr "Thông tin"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Restart Nginx thành công"
@@ -3158,11 +3220,12 @@ msgstr "Restart Nginx thành công"
 msgid "Task not found"
 msgstr "Không tìm thấy tệp tin"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "Terminal"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr ""
 
@@ -3180,7 +3243,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Tên tệp không thể chứa các ký tự sau: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3205,7 +3268,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3224,7 +3287,7 @@ msgstr ""
 msgid "The path exists, but the file is not a private key"
 msgstr ""
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3245,8 +3308,8 @@ msgid ""
 msgstr ""
 "Lưu ý: server_name trong cấu hình hiện tại phải là tên miền bạn muốn ký SSL."
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr ""
 
@@ -3609,7 +3672,7 @@ msgid "Writing certificate to disk"
 msgstr "Ghi chứng chỉ vào disk"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 113 - 57
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-03-30 21:51+0800\n"
+"PO-Revision-Date: 2025-03-31 10:06+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -51,9 +51,9 @@ msgstr "操作"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -133,6 +133,10 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API 类型"
 
+#: src/views/preference/Preference.vue:162
+msgid "App"
+msgstr "App"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr "应用"
@@ -195,7 +199,7 @@ msgstr "您确定要恢复这个项目吗?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "您确定要删除这条指令?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "您确定要删除这个项目吗?"
 
@@ -219,7 +223,7 @@ msgstr "尝试修复"
 msgid "Attempts"
 msgstr "尝试次数"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "认证"
 
@@ -301,7 +305,6 @@ msgid "Base information"
 msgstr "基本信息"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -341,7 +344,7 @@ msgstr "构建基于"
 msgid "CA Dir"
 msgstr "CA Dir"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "CADir"
 
@@ -372,7 +375,7 @@ msgstr "不可删除初始用户"
 msgid "Category"
 msgstr "分类"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr "证书"
 
@@ -388,7 +391,7 @@ msgstr "证书解码错误"
 msgid "Certificate parse error"
 msgstr "证书解析错误"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "证书续期间隔"
 
@@ -397,7 +400,7 @@ msgid "Certificate renewed successfully"
 msgstr "证书更新成功"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "证书状态"
@@ -420,7 +423,7 @@ msgstr "挑战方法"
 msgid "Change Certificate"
 msgstr "更改证书"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "变更证书"
@@ -493,7 +496,7 @@ msgstr "命令"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "注释"
 
@@ -632,7 +635,7 @@ msgstr "当前版本"
 msgid "Custom"
 msgstr "自定义"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -647,7 +650,7 @@ msgstr "仪表盘"
 msgid "Database (Optional, default: database)"
 msgstr "数据库 (可选,默认: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "天"
 
@@ -713,6 +716,10 @@ msgstr "删除 Stream: %{stream_name}"
 msgid "Deleted successfully"
 msgstr "删除成功"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr "Demo"
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "部署"
@@ -797,6 +804,9 @@ msgstr "在 %{node} 上禁用 %{name} 成功"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -933,6 +943,7 @@ msgid "Edit Stream"
 msgstr "编辑 Stream"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "邮箱"
 
@@ -957,6 +968,10 @@ msgstr "启用 %{name} 自动续签失败"
 msgid "Enable failed"
 msgstr "启用失败"
 
+#: src/views/preference/ServerSettings.vue:29
+msgid "Enable HTTPS"
+msgstr "启用 HTTPS"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgstr "启用远程站点错误"
@@ -999,7 +1014,10 @@ msgstr "启用 TOTP"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1323,12 +1341,12 @@ msgid ""
 "process."
 msgstr "按照对话框中的指示完成 Passkey 的注册过程。"
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr "中国用户"
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "中国用户:https://mirror.ghproxy.com/"
 
@@ -1377,9 +1395,9 @@ msgstr "获取发布信息错误"
 msgid "Getting the certificate, please wait..."
 msgstr "正在获取证书,请稍等..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
-msgstr "Github代理"
+msgstr "Github 代理"
 
 #: src/constants/errors/backup.ts:59
 msgid "Hash verification failed: file integrity compromised"
@@ -1393,23 +1411,23 @@ msgstr "隐藏"
 msgid "Home"
 msgstr "首页"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "HTTP Challenge 监听端口"
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
+msgstr "主机"
 
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
-msgstr "HTTP 监听主机"
+#: src/views/preference/Preference.vue:174
+msgid "HTTP"
+msgstr "HTTP"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "HTTP 监听端口"
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "HTTP Challenge 监听端口"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr "ICP备案号"
 
@@ -1465,6 +1483,10 @@ msgstr "输入应用程序中的代码:"
 msgid "Input the recovery code:"
 msgstr "输入恢复代码:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr "跳过证书认证"
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "安装"
@@ -1560,7 +1582,7 @@ msgstr "证书申请成功"
 msgid "Issuer: %{issuer}"
 msgstr "颁发者:%{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt 密钥"
 
@@ -1667,7 +1689,7 @@ msgstr "登录成功"
 msgid "Logout successful"
 msgstr "登出成功"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -1816,7 +1838,7 @@ msgstr "新版本发布"
 msgid "Next"
 msgstr "下一步"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1861,6 +1883,10 @@ msgstr "Nginx 配置已恢复"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 配置解析错误"
 
+#: src/views/preference/NginxSettings.vue:18
+msgid "Nginx Configuration Path"
+msgstr "Nginx 配置路径"
+
 #: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Configurations Directory"
 msgstr "Nginx 配置目录"
@@ -1881,15 +1907,15 @@ msgstr "Nginx 未启动"
 msgid "Nginx Log"
 msgstr "Nginx 日志"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "Nginx 日志目录白名单"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr "Nginx PID 路径"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "Nginx 重载命令"
 
@@ -1897,7 +1923,7 @@ msgstr "Nginx 重载命令"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx 重载成功"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr "Nginx 重启命令"
 
@@ -1905,6 +1931,10 @@ msgstr "Nginx 重启命令"
 msgid "Nginx restarted successfully"
 msgstr "Nginx 重启成功"
 
+#: src/views/preference/NginxSettings.vue:33
+msgid "Nginx Test Config Command"
+msgstr "Nginx 测试配置命令"
+
 #: src/constants/errors/system.ts:2
 msgid "Nginx UI already installed"
 msgstr "Nginx UI 已安装"
@@ -1928,7 +1958,7 @@ msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -1936,11 +1966,15 @@ msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。"
 msgid "No"
 msgstr "取消"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+msgid "Node"
+msgstr "节点"
+
+#: src/views/preference/NodeSettings.vue:15
 msgid "Node name"
 msgstr "节点名称"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "节点密钥"
 
@@ -2039,7 +2073,7 @@ msgstr "在线"
 msgid "Only zip files are allowed"
 msgstr "只允许使用zip文件"
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2075,6 +2109,10 @@ msgstr "覆盖"
 msgid "Overwrite exist file"
 msgstr "覆盖现有文件"
 
+#: src/views/preference/AppSettings.vue:13
+msgid "Page Size"
+msgstr "分页大小"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "参数"
@@ -2215,7 +2253,7 @@ msgstr "请输入您的密码!"
 msgid "Please input your username!"
 msgstr "请输入您的用户名!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr "请登录。"
 
@@ -2236,13 +2274,17 @@ msgstr "请选择备份文件"
 msgid "Please select at least one node to upgrade"
 msgstr "请至少选择一个节点进行升级"
 
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr "端口"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "预发布"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "偏好设置"
 
@@ -2270,7 +2312,7 @@ msgstr "提供商"
 msgid "Proxy"
 msgstr "代理"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr "公安备案号"
 
@@ -2313,7 +2355,7 @@ msgstr ""
 "恢复代码用于在您无法访问双重身份验证设备时登录您的账户。每个代码只能使用一"
 "次。"
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "递归域名服务器"
 
@@ -2528,7 +2570,7 @@ msgstr "依赖方的源"
 msgid "RPID"
 msgstr "依赖方 ID"
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "运行模式"
 
@@ -2543,7 +2585,7 @@ msgstr "运行中"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2597,7 +2639,7 @@ msgstr "成功将站点 %{name} 保存到 %{node} 中"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "保存成功"
 
@@ -2643,6 +2685,10 @@ msgstr "自我检查"
 msgid "Send"
 msgstr "上传"
 
+#: src/views/preference/Preference.vue:156
+msgid "Server"
+msgstr "服务器"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "服务器信息"
@@ -2659,7 +2705,7 @@ msgstr "Server Index 超出范围"
 msgid "Session not found"
 msgstr "未找到会话"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2742,6 +2788,10 @@ msgstr "Sites-available 目录不存在"
 msgid "Sites-enabled directory not exist"
 msgstr "Sites-enabled 目录不存在"
 
+#: src/views/preference/NodeSettings.vue:23
+msgid "Skip Installation"
+msgstr "跳过安装"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr "SSL 证书内容"
@@ -2755,9 +2805,14 @@ msgid "SSL Certificate Key Path"
 msgstr "SSL证书密钥路径"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "SSL证书路径"
 
+#: src/views/preference/ServerSettings.vue:40
+msgid "SSL Key Path"
+msgstr "SSL 密钥路径"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr "SSO 登录"
@@ -2915,7 +2970,7 @@ msgstr "系统初始用户"
 msgid "System Restore"
 msgstr "系统还原"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr "系统恢复成功。"
 
@@ -2923,11 +2978,12 @@ msgstr "系统恢复成功。"
 msgid "Task not found"
 msgstr "未找到任务"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "终端"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "终端启动命令"
 
@@ -2944,7 +3000,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "文件名不能包含以下字符: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -2969,7 +3025,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr "模型名称只能包含字母、单码、数字、连字符、破折号、冒号和点。"
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -2987,7 +3043,7 @@ msgstr "路径存在,但文件不是证书"
 msgid "The path exists, but the file is not a private key"
 msgstr "路径存在,但文件不是私钥"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3008,8 +3064,8 @@ msgid ""
 "need to get the certificate, supportmultiple domains."
 msgstr "当前配置中的 server_name 必须是获取证书所需的域名,支持多个域名。"
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "URL无效"
 
@@ -3366,7 +3422,7 @@ msgid "Writing certificate to disk"
 msgstr "正在将证书写入磁盘"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 123 - 55
app/src/language/zh_TW/app.po

@@ -55,9 +55,9 @@ msgstr "操作"
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
-#: src/views/preference/CertSettings.vue:42
+#: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:162
+#: src/views/site/ngx_conf/NgxServer.vue:163
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:121
 msgid "Add"
@@ -137,6 +137,11 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API 類型"
 
+#: src/views/preference/Preference.vue:162
+#, fuzzy
+msgid "App"
+msgstr "套用"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
 msgid "Apply"
 msgstr "套用"
@@ -199,7 +204,7 @@ msgstr "您確定要恢復此項目嗎?"
 msgid "Are you sure you want to remove this directive?"
 msgstr "您確定要刪除這條指令嗎?"
 
-#: src/views/preference/CertSettings.vue:68
+#: src/views/preference/CertSettings.vue:71
 msgid "Are you sure you want to remove this item?"
 msgstr "您確定要刪除此項目嗎?"
 
@@ -223,7 +228,7 @@ msgstr "嘗試修復"
 msgid "Attempts"
 msgstr "嘗試次數"
 
-#: src/views/preference/Preference.vue:152
+#: src/views/preference/Preference.vue:186
 msgid "Auth"
 msgstr "身份驗證"
 
@@ -308,7 +313,6 @@ msgid "Base information"
 msgstr "基本資訊"
 
 #: src/views/config/ConfigEditor.vue:241
-#: src/views/preference/Preference.vue:146
 #: src/views/site/site_edit/RightSettings.vue:79
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
@@ -348,7 +352,7 @@ msgstr "構建基於"
 msgid "CA Dir"
 msgstr "CA Dir"
 
-#: src/views/preference/CertSettings.vue:16
+#: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgstr "CADir"
 
@@ -379,7 +383,7 @@ msgstr "無法移除初始使用者"
 msgid "Category"
 msgstr "類別"
 
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:192
 msgid "Cert"
 msgstr "證書"
 
@@ -395,7 +399,7 @@ msgstr "證書解碼錯誤"
 msgid "Certificate parse error"
 msgstr "證書解析錯誤"
 
-#: src/views/preference/CertSettings.vue:24
+#: src/views/preference/CertSettings.vue:27
 msgid "Certificate Renewal Interval"
 msgstr "憑證更新間隔"
 
@@ -404,7 +408,7 @@ msgid "Certificate renewed successfully"
 msgstr "憑證更新成功"
 
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:33
+#: src/views/site/cert/Cert.vue:60
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "憑證狀態"
@@ -427,7 +431,7 @@ msgstr "驗證方式"
 msgid "Change Certificate"
 msgstr "更換憑證"
 
-#: src/views/site/cert/Cert.vue:52
+#: src/views/site/cert/Cert.vue:79
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "變更後憑證"
@@ -502,7 +506,7 @@ msgstr "命令"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:135
 msgid "Comments"
 msgstr "備註"
 
@@ -643,7 +647,7 @@ msgstr "目前版本"
 msgid "Custom"
 msgstr "自訂"
 
-#: src/views/preference/BasicSettings.vue:34
+#: src/views/preference/NodeSettings.vue:19
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "indicator."
@@ -658,7 +662,7 @@ msgstr "儀表板"
 msgid "Database (Optional, default: database)"
 msgstr "資料庫 (可選,預設: database)"
 
-#: src/views/preference/CertSettings.vue:29
+#: src/views/preference/CertSettings.vue:32
 msgid "Days"
 msgstr "天"
 
@@ -724,6 +728,10 @@ msgstr "刪除 Stream:%{stream_name}"
 msgid "Deleted successfully"
 msgstr "刪除成功"
 
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
 #: src/views/config/ConfigEditor.vue:285
 msgid "Deploy"
 msgstr "部署"
@@ -812,6 +820,9 @@ msgstr "成功禁用 %{node} 中的站点 %{site}"
 
 #: src/views/environment/envColumns.tsx:61
 #: src/views/environment/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:53
 #: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:176
@@ -948,6 +959,7 @@ msgid "Edit Stream"
 msgstr "編輯 Stream"
 
 #: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
 msgid "Email"
 msgstr "電子郵件"
 
@@ -972,6 +984,11 @@ msgstr "啟用 %{name} 自動續簽失敗"
 msgid "Enable failed"
 msgstr "啟用失敗"
 
+#: src/views/preference/ServerSettings.vue:29
+#, fuzzy
+msgid "Enable HTTPS"
+msgstr "啟用 TOTP"
+
 #: src/components/Notification/notifications.ts:53 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgstr "啟用遠端站點錯誤"
@@ -1020,7 +1037,10 @@ msgstr "啟用 TOTP"
 
 #: src/views/environment/envColumns.tsx:70
 #: src/views/environment/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
 #: src/views/site/site_edit/SiteEdit.vue:184
 #: src/views/site/site_list/columns.tsx:49
@@ -1378,12 +1398,12 @@ msgid ""
 "process."
 msgstr "請按照對話框中的指示完成通行密鑰的註冊流程。"
 
-#: src/views/preference/BasicSettings.vue:59
-#: src/views/preference/BasicSettings.vue:71
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
 msgid "For Chinese user"
 msgstr "針對中國大陆用戶"
 
-#: src/views/preference/BasicSettings.vue:47
+#: src/views/preference/HTTPSettings.vue:19
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "中國使用者:https://mirror.ghproxy.com/"
 
@@ -1432,7 +1452,7 @@ msgstr "取得發布資訊錯誤"
 msgid "Getting the certificate, please wait..."
 msgstr "正在取得憑證,請稍候..."
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/HTTPSettings.vue:11
 msgid "Github Proxy"
 msgstr "Github 代理"
 
@@ -1448,23 +1468,25 @@ msgstr "隱藏"
 msgid "Home"
 msgstr "首頁"
 
-#: src/views/preference/CertSettings.vue:12
-msgid "HTTP Challenge Port"
-msgstr "HTTP 挑戰埠"
-
-#: src/views/preference/BasicSettings.vue:11
-msgid "HTTP Host"
+#: src/views/preference/ServerSettings.vue:18
+#, fuzzy
+msgid "Host"
 msgstr "HTTP 監聽主機"
 
-#: src/views/preference/BasicSettings.vue:14
-msgid "HTTP Port"
-msgstr "HTTP 監聽埠"
+#: src/views/preference/Preference.vue:174
+#, fuzzy
+msgid "HTTP"
+msgstr "HTTP01"
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr "HTTP 挑戰埠"
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:70
 msgid "HTTP01"
 msgstr "HTTP01"
 
-#: src/views/preference/BasicSettings.vue:51
+#: src/views/preference/NodeSettings.vue:34
 msgid "ICP Number"
 msgstr "ICP 編號"
 
@@ -1520,6 +1542,10 @@ msgstr "請輸入應用程式中的代碼:"
 msgid "Input the recovery code:"
 msgstr "輸入恢復碼:"
 
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
 #: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
 msgid "Install"
 msgstr "安裝"
@@ -1620,7 +1646,7 @@ msgstr "成功頒發憑證"
 msgid "Issuer: %{issuer}"
 msgstr "發行者:%{issuer}"
 
-#: src/views/preference/BasicSettings.vue:20
+#: src/views/preference/AppSettings.vue:10
 msgid "Jwt Secret"
 msgstr "Jwt Secret"
 
@@ -1727,7 +1753,7 @@ msgstr "登入成功"
 msgid "Logout successful"
 msgstr "登出成功"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:210
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -1876,7 +1902,7 @@ msgstr "新版本發布"
 msgid "Next"
 msgstr "下一步"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:198
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -1923,6 +1949,11 @@ msgstr "Nginx 設定解析錯誤"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 設定解析錯誤"
 
+#: src/views/preference/NginxSettings.vue:18
+#, fuzzy
+msgid "Nginx Configuration Path"
+msgstr "Nginx 設定解析錯誤"
+
 #: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Configurations Directory"
 msgstr "Nginx 配置目錄"
@@ -1943,15 +1974,15 @@ msgstr "Nginx 未執行"
 msgid "Nginx Log"
 msgstr "Nginx 日誌"
 
-#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:21
 msgid "Nginx Log Directory Whitelist"
 msgstr "Nginx 日誌目錄白名單"
 
-#: src/views/preference/NginxSettings.vue:27
+#: src/views/preference/NginxSettings.vue:30
 msgid "Nginx PID Path"
 msgstr "Nginx PID 路徑"
 
-#: src/views/preference/NginxSettings.vue:30
+#: src/views/preference/NginxSettings.vue:36
 msgid "Nginx Reload Command"
 msgstr "Nginx 重新載入指令"
 
@@ -1959,7 +1990,7 @@ msgstr "Nginx 重新載入指令"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx 重新載入成功"
 
-#: src/views/preference/NginxSettings.vue:33
+#: src/views/preference/NginxSettings.vue:39
 msgid "Nginx Restart Command"
 msgstr "Nginx 重啟指令"
 
@@ -1967,6 +1998,11 @@ msgstr "Nginx 重啟指令"
 msgid "Nginx restarted successfully"
 msgstr "Nginx 重啟成功"
 
+#: src/views/preference/NginxSettings.vue:33
+#, fuzzy
+msgid "Nginx Test Config Command"
+msgstr "Nginx 重啟指令"
+
 #: src/constants/errors/system.ts:2
 #, fuzzy
 msgid "Nginx UI already installed"
@@ -1993,7 +2029,7 @@ msgstr "Nginx 設定解析錯誤"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
 #: src/views/notification/Notification.vue:37
 #: src/views/preference/AuthSettings.vue:164
-#: src/views/preference/CertSettings.vue:70
+#: src/views/preference/CertSettings.vue:73
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
@@ -2001,11 +2037,16 @@ msgstr "Nginx 設定解析錯誤"
 msgid "No"
 msgstr "取消"
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/Preference.vue:168
+#, fuzzy
+msgid "Node"
+msgstr "節點名稱"
+
+#: src/views/preference/NodeSettings.vue:15
 msgid "Node name"
 msgstr "節點名稱"
 
-#: src/views/preference/BasicSettings.vue:23
+#: src/views/preference/NodeSettings.vue:11
 msgid "Node Secret"
 msgstr "節點密鑰"
 
@@ -2104,7 +2145,7 @@ msgstr "線上"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:204
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2140,6 +2181,11 @@ msgstr "覆蓋"
 msgid "Overwrite exist file"
 msgstr "覆蓋現有檔案"
 
+#: src/views/preference/AppSettings.vue:13
+#, fuzzy
+msgid "Page Size"
+msgstr "管理網站"
+
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
 msgid "Params"
 msgstr "參數"
@@ -2281,7 +2327,7 @@ msgstr "請輸入您的密碼!"
 msgid "Please input your username!"
 msgstr "請輸入您的使用者名稱!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:12
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -2303,13 +2349,18 @@ msgstr "請至少選擇一個節點!"
 msgid "Please select at least one node to upgrade"
 msgstr "請至少選擇一個節點進行升級"
 
+#: src/views/preference/ServerSettings.vue:21
+#, fuzzy
+msgid "Port"
+msgstr "HTTP 監聽埠"
+
 #: src/views/environment/BatchUpgrader.vue:167
 #: src/views/environment/BatchUpgrader.vue:220 src/views/system/Upgrade.vue:194
 #: src/views/system/Upgrade.vue:245
 msgid "Pre-release"
 msgstr "預先發布"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:141
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:151
 msgid "Preference"
 msgstr "偏好設定"
 
@@ -2337,7 +2388,7 @@ msgstr "供應商"
 msgid "Proxy"
 msgstr "代理伺服器"
 
-#: src/views/preference/BasicSettings.vue:63
+#: src/views/preference/NodeSettings.vue:46
 msgid "Public Security Number"
 msgstr "公安編號"
 
@@ -2379,7 +2430,7 @@ msgid ""
 msgstr ""
 "復原代碼在您無法使用 2FA 裝置時,用於訪問您的帳戶。每個代碼僅能使用一次。"
 
-#: src/views/preference/CertSettings.vue:37
+#: src/views/preference/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgstr "遞迴名稱伺服器"
 
@@ -2605,7 +2656,7 @@ msgstr "RP 源站"
 msgid "RPID"
 msgstr "RPID"
 
-#: src/views/preference/BasicSettings.vue:17
+#: src/views/preference/ServerSettings.vue:24
 msgid "Run Mode"
 msgstr "執行模式"
 
@@ -2620,7 +2671,7 @@ msgstr "執行中"
 #: src/views/config/components/ConfigName.vue:56
 #: src/views/config/ConfigEditor.vue:222
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:187
+#: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
 #: src/views/site/site_edit/SiteEdit.vue:271
@@ -2680,7 +2731,7 @@ msgstr "成功將站點 %{site} 儲存至 %{node}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:123
 msgid "Save successfully"
 msgstr "儲存成功"
 
@@ -2727,6 +2778,11 @@ msgstr "自我檢測"
 msgid "Send"
 msgstr "傳送"
 
+#: src/views/preference/Preference.vue:156
+#, fuzzy
+msgid "Server"
+msgstr "伺服器資訊"
+
 #: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgstr "伺服器資訊"
@@ -2743,7 +2799,7 @@ msgstr "伺服器索引超出範圍"
 msgid "Session not found"
 msgstr "找不到工作階段"
 
-#: src/views/preference/CertSettings.vue:33
+#: src/views/preference/CertSettings.vue:36
 msgid ""
 "Set the recursive nameservers to override the systems nameservers for the "
 "step of DNS challenge."
@@ -2827,6 +2883,11 @@ msgstr "sites-available 資料夾不存在"
 msgid "Sites-enabled directory not exist"
 msgstr "sites-enabled 資料夾不存在"
 
+#: src/views/preference/NodeSettings.vue:23
+#, fuzzy
+msgid "Skip Installation"
+msgstr "安裝"
+
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgstr "SSL 憑證內容"
@@ -2840,9 +2901,15 @@ msgid "SSL Certificate Key Path"
 msgstr "SSL 憑證金鑰路徑"
 
 #: src/views/certificate/CertificateEditor.vue:175
+#: src/views/preference/ServerSettings.vue:36
 msgid "SSL Certificate Path"
 msgstr "SSL 憑證路徑"
 
+#: src/views/preference/ServerSettings.vue:40
+#, fuzzy
+msgid "SSL Key Path"
+msgstr "SSL 憑證金鑰路徑"
+
 #: src/views/other/Login.vue:197
 msgid "SSO Login"
 msgstr "SSO 登錄"
@@ -3008,7 +3075,7 @@ msgstr "系統初始使用者"
 msgid "System Restore"
 msgstr "系統"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:8
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx 重啟成功"
@@ -3017,11 +3084,12 @@ msgstr "Nginx 重啟成功"
 msgid "Task not found"
 msgstr "找不到任務"
 
-#: src/routes/modules/terminal.ts:10 src/views/terminal/Terminal.vue:114
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:180
+#: src/views/terminal/Terminal.vue:114
 msgid "Terminal"
 msgstr "終端機"
 
-#: src/views/preference/BasicSettings.vue:26
+#: src/views/preference/TerminalSettings.vue:9
 msgid "Terminal Start Command"
 msgstr "終端機啟動指令"
 
@@ -3038,7 +3106,7 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "檔名不能包含以下字元: %{c}"
 
-#: src/views/preference/BasicSettings.vue:54
+#: src/views/preference/NodeSettings.vue:37
 msgid ""
 "The ICP Number should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3063,7 +3131,7 @@ msgid ""
 "dashes, colons, and dots."
 msgstr "模型名稱僅能包含字母、Unicode 字元、數字、連字號、破折號、冒號和句點。"
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -3082,7 +3150,7 @@ msgstr "路徑存在,但檔案不是憑證"
 msgid "The path exists, but the file is not a private key"
 msgstr "路徑存在,但檔案不是金鑰"
 
-#: src/views/preference/BasicSettings.vue:66
+#: src/views/preference/NodeSettings.vue:49
 msgid ""
 "The Public Security Number should only contain letters, unicode, numbers, "
 "hyphens, dashes, colons, and dots."
@@ -3103,8 +3171,8 @@ msgid ""
 "need to get the certificate, supportmultiple domains."
 msgstr "當前配置中的 server_name 必須是您需要獲取憑證的網域,支持多個網域。"
 
-#: src/views/preference/BasicSettings.vue:42
-#: src/views/preference/CertSettings.vue:19
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
 msgid "The url is invalid"
 msgstr "網址無效"
 
@@ -3460,7 +3528,7 @@ msgid "Writing certificate to disk"
 msgstr "將憑證寫入磁碟"
 
 #: src/views/preference/AuthSettings.vue:163
-#: src/views/preference/CertSettings.vue:69
+#: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"

+ 1 - 1
app/src/version.json

@@ -1 +1 @@
-{"version":"2.0.0-rc.4","build_id":8,"total_build":393}
+{"version":"2.0.0-rc.5","build_id":1,"total_build":395}

+ 20 - 0
app/src/views/preference/AppSettings.vue

@@ -0,0 +1,20 @@
+<script setup lang="ts">
+import type { Settings } from '@/api/settings'
+import SensitiveString from '@/components/SensitiveString/SensitiveString.vue'
+
+const data: Ref<Settings> = inject('data') as Ref<Settings>
+</script>
+
+<template>
+  <AForm layout="vertical">
+    <AFormItem :label="$gettext('Jwt Secret')">
+      <SensitiveString :value="data.app.jwt_secret" />
+    </AFormItem>
+    <AFormItem :label="$gettext('Page Size')">
+      <p>{{ data.app.page_size }}</p>
+    </AFormItem>
+  </AForm>
+</template>
+
+<style lang="less" scoped>
+</style>

+ 1 - 1
app/src/views/preference/AuthSettings.vue

@@ -12,7 +12,7 @@ import { message } from 'ant-design-vue'
 import dayjs from 'dayjs'
 import PasskeyRegistration from './components/Passkey.vue'
 
-const data: Settings = inject('data') as Settings
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 
 const bannedIPColumns = [{
   title: $gettext('IP'),

+ 4 - 1
app/src/views/preference/CertSettings.vue

@@ -3,12 +3,15 @@ import type { Settings } from '@/api/settings'
 import { DeleteOutlined, HolderOutlined } from '@ant-design/icons-vue'
 import Draggable from 'vuedraggable'
 
-const data: Settings = inject('data') as Settings
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 const errors: Record<string, Record<string, string>> = inject('errors') as Record<string, Record<string, string>>
 </script>
 
 <template>
   <AForm layout="vertical">
+    <AFormItem :label="$gettext('Email')">
+      <p>{{ data.cert.email }}</p>
+    </AFormItem>
     <AFormItem :label="$gettext('HTTP Challenge Port')">
       <AInputNumber v-model:value="data.cert.http_challenge_port" />
     </AFormItem>

+ 31 - 0
app/src/views/preference/HTTPSettings.vue

@@ -0,0 +1,31 @@
+<script setup lang="ts">
+import type { Settings } from '@/api/settings'
+
+const data: Ref<Settings> = inject('data') as Ref<Settings>
+const errors: Record<string, Record<string, string>> = inject('errors') as Record<string, Record<string, string>>
+</script>
+
+<template>
+  <AForm layout="vertical">
+    <AFormItem
+      :label="$gettext('Github Proxy')"
+      :validate-status="errors?.http?.github_proxy ? 'error' : ''"
+      :help="errors?.http?.github_proxy === 'url'
+        ? $gettext('The url is invalid')
+        : ''"
+    >
+      <AInput
+        v-model:value="data.http.github_proxy"
+        :placeholder="$gettext('For Chinese user: https://mirror.ghproxy.com/')"
+      />
+    </AFormItem>
+    <AFormItem :label="$gettext('Insecure Skip Verify')">
+      <ATag :color="data.http.insecure_skip_verify ? 'green' : 'red'">
+        {{ data.http.insecure_skip_verify ? $gettext('Enabled') : $gettext('Disabled') }}
+      </ATag>
+    </AFormItem>
+  </AForm>
+</template>
+
+<style lang="less" scoped>
+</style>

+ 1 - 1
app/src/views/preference/LogrotateSettings.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { Settings } from '@/api/settings'
 
-const data: Settings = inject('data')!
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 </script>
 
 <template>

+ 7 - 1
app/src/views/preference/NginxSettings.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { Settings } from '@/api/settings'
 
-const data: Settings = inject('data')!
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 </script>
 
 <template>
@@ -15,6 +15,9 @@ const data: Settings = inject('data')!
     <AFormItem :label="$gettext('Nginx Configurations Directory')">
       {{ data.nginx.config_dir }}
     </AFormItem>
+    <AFormItem :label="$gettext('Nginx Configuration Path')">
+      <p>{{ data.nginx.config_path }}</p>
+    </AFormItem>
     <AFormItem :label="$gettext('Nginx Log Directory Whitelist')">
       <div
         v-for="dir in data.nginx.log_dir_white_list"
@@ -27,6 +30,9 @@ const data: Settings = inject('data')!
     <AFormItem :label="$gettext('Nginx PID Path')">
       {{ data.nginx.pid_path }}
     </AFormItem>
+    <AFormItem :label="$gettext('Nginx Test Config Command')">
+      <p>{{ data.nginx.test_config_cmd }}</p>
+    </AFormItem>
     <AFormItem :label="$gettext('Nginx Reload Command')">
       {{ data.nginx.reload_cmd }}
     </AFormItem>

+ 10 - 28
app/src/views/preference/BasicSettings.vue → app/src/views/preference/NodeSettings.vue

@@ -2,30 +2,15 @@
 import type { Settings } from '@/api/settings'
 import SensitiveString from '@/components/SensitiveString/SensitiveString.vue'
 
-const data: Settings = inject('data') as Settings
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 const errors: Record<string, Record<string, string>> = inject('errors') as Record<string, Record<string, string>>
 </script>
 
 <template>
   <AForm layout="vertical">
-    <AFormItem :label="$gettext('HTTP Host')">
-      <p>{{ data.server.host }}</p>
-    </AFormItem>
-    <AFormItem :label="$gettext('HTTP Port')">
-      <p>{{ data.server.port }}</p>
-    </AFormItem>
-    <AFormItem :label="$gettext('Run Mode')">
-      <p>{{ data.server.run_mode }}</p>
-    </AFormItem>
-    <AFormItem :label="$gettext('Jwt Secret')">
-      <SensitiveString :value="data.app.jwt_secret" />
-    </AFormItem>
     <AFormItem :label="$gettext('Node Secret')">
       <SensitiveString :value="data.node.secret" />
     </AFormItem>
-    <AFormItem :label="$gettext('Terminal Start Command')">
-      <p>{{ data.terminal.start_cmd }}</p>
-    </AFormItem>
     <AFormItem
       :label="$gettext('Node name')"
       :validate-status="errors?.node?.name ? 'error' : ''"
@@ -35,17 +20,15 @@ const errors: Record<string, Record<string, string>> = inject('errors') as Recor
     >
       <AInput v-model:value="data.node.name" />
     </AFormItem>
-    <AFormItem
-      :label="$gettext('Github Proxy')"
-      :validate-status="errors?.http?.github_proxy ? 'error' : ''"
-      :help="errors?.http?.github_proxy === 'url'
-        ? $gettext('The url is invalid')
-        : ''"
-    >
-      <AInput
-        v-model:value="data.http.github_proxy"
-        :placeholder="$gettext('For Chinese user: https://mirror.ghproxy.com/')"
-      />
+    <AFormItem :label="$gettext('Skip Installation')">
+      <ATag :color="data.node.skip_installation ? 'green' : 'red'">
+        {{ data.node.skip_installation ? $gettext('Enabled') : $gettext('Disabled') }}
+      </ATag>
+    </AFormItem>
+    <AFormItem :label="$gettext('Demo')">
+      <ATag :color="data.node.demo ? 'green' : 'red'">
+        {{ data.node.demo ? $gettext('Enabled') : $gettext('Disabled') }}
+      </ATag>
     </AFormItem>
     <AFormItem
       :label="$gettext('ICP Number')"
@@ -75,5 +58,4 @@ const errors: Record<string, Record<string, string>> = inject('errors') as Recor
 </template>
 
 <style lang="less" scoped>
-
 </style>

+ 1 - 1
app/src/views/preference/OpenAISettings.vue

@@ -2,7 +2,7 @@
 import type { Settings } from '@/api/settings'
 import { LLM_MODELS, LLM_PROVIDERS } from '@/constants/llm'
 
-const data: Settings = inject('data')!
+const data: Ref<Settings> = inject('data') as Ref<Settings>
 const errors: Record<string, Record<string, string>> = inject('errors') as Record<string, Record<string, string>>
 
 const models = LLM_MODELS.map(model => ({

+ 42 - 8
app/src/views/preference/Preference.vue

@@ -1,16 +1,19 @@
 <script setup lang="ts">
 import type { Settings } from '@/api/settings'
-import type { Ref } from 'vue'
 import settings from '@/api/settings'
 import FooterToolBar from '@/components/FooterToolbar/FooterToolBar.vue'
 import use2FAModal from '@/components/TwoFA/use2FAModal'
 import { useSettingsStore } from '@/pinia'
+import AppSettings from '@/views/preference/AppSettings.vue'
 import AuthSettings from '@/views/preference/AuthSettings.vue'
-import BasicSettings from '@/views/preference/BasicSettings.vue'
 import CertSettings from '@/views/preference/CertSettings.vue'
+import HTTPSettings from '@/views/preference/HTTPSettings.vue'
 import LogrotateSettings from '@/views/preference/LogrotateSettings.vue'
 import NginxSettings from '@/views/preference/NginxSettings.vue'
+import NodeSettings from '@/views/preference/NodeSettings.vue'
 import OpenAISettings from '@/views/preference/OpenAISettings.vue'
+import ServerSettings from '@/views/preference/ServerSettings.vue'
+import TerminalSettings from '@/views/preference/TerminalSettings.vue'
 import { message } from 'ant-design-vue'
 import { storeToRefs } from 'pinia'
 
@@ -23,6 +26,9 @@ const data = ref<Settings>({
     host: '0.0.0.0',
     port: 9000,
     run_mode: 'debug',
+    enable_https: false,
+    ssl_cert: '',
+    ssl_key: '',
   },
   database: {
     name: '',
@@ -61,14 +67,18 @@ const data = ref<Settings>({
     access_log_path: '',
     error_log_path: '',
     config_dir: '',
+    config_path: '',
     log_dir_white_list: [],
     pid_path: '',
+    test_config_cmd: '',
     reload_cmd: '',
     restart_cmd: '',
   },
   node: {
     name: '',
     secret: '',
+    skip_installation: false,
+    demo: false,
     icp_number: '',
     public_security_number: '',
   },
@@ -95,7 +105,7 @@ settings.get().then(r => {
 
 const settingsStore = useSettingsStore()
 const { server_name } = storeToRefs(settingsStore)
-const errors = ref({}) as Ref<Record<string, Record<string, string>>>
+const errors = ref<Record<string, Record<string, string>>>({})
 const refAuthSettings = useTemplateRef('refAuthSettings')
 
 async function save() {
@@ -121,7 +131,7 @@ provide('errors', errors)
 
 const router = useRouter()
 const route = useRoute()
-const activeKey = ref('basic')
+const activeKey = ref('server')
 
 watch(activeKey, () => {
   router.push({
@@ -142,10 +152,34 @@ onMounted(() => {
     <div class="preference-container">
       <ATabs v-model:active-key="activeKey">
         <ATabPane
-          key="basic"
-          :tab="$gettext('Basic')"
+          key="server"
+          :tab="$gettext('Server')"
         >
-          <BasicSettings />
+          <ServerSettings />
+        </ATabPane>
+        <ATabPane
+          key="app"
+          :tab="$gettext('App')"
+        >
+          <AppSettings />
+        </ATabPane>
+        <ATabPane
+          key="node"
+          :tab="$gettext('Node')"
+        >
+          <NodeSettings />
+        </ATabPane>
+        <ATabPane
+          key="http"
+          :tab="$gettext('HTTP')"
+        >
+          <HTTPSettings />
+        </ATabPane>
+        <ATabPane
+          key="terminal"
+          :tab="$gettext('Terminal')"
+        >
+          <TerminalSettings />
         </ATabPane>
         <ATabPane
           key="auth"
@@ -193,7 +227,7 @@ onMounted(() => {
 <style lang="less" scoped>
 .preference-container {
   width: 100%;
-  max-width: 600px;
+  max-width: 750px;
   margin: 0 auto;
   padding: 0 10px;
 }

+ 47 - 0
app/src/views/preference/ServerSettings.vue

@@ -0,0 +1,47 @@
+<script setup lang="ts">
+import type { Cert } from '@/api/cert'
+import type { Settings } from '@/api/settings'
+import ChangeCert from '@/views/site/cert/components/ChangeCert/ChangeCert.vue'
+
+const data: Ref<Settings> = inject('data') as Ref<Settings>
+
+function handleCertChange(certs: Cert[]) {
+  if (certs.length > 0 && data.value?.server) {
+    data.value.server.ssl_cert = certs[0].ssl_certificate_path
+    data.value.server.ssl_key = certs[0].ssl_certificate_key_path
+  }
+}
+</script>
+
+<template>
+  <AForm v-if="data?.server" layout="vertical">
+    <AFormItem :label="$gettext('Host')">
+      <p>{{ data.server.host }}</p>
+    </AFormItem>
+    <AFormItem :label="$gettext('Port')">
+      <p>{{ data.server.port }}</p>
+    </AFormItem>
+    <AFormItem :label="$gettext('Run Mode')">
+      <p>{{ data.server.run_mode }}</p>
+    </AFormItem>
+
+    <!-- HTTPS Settings -->
+    <AFormItem :label="$gettext('Enable HTTPS')">
+      <ASwitch v-model:checked="data.server.enable_https" />
+    </AFormItem>
+
+    <div v-if="data.server.enable_https">
+      <ChangeCert class="mb-6" selection-type="radio" @change="handleCertChange" />
+
+      <AFormItem :label="$gettext('SSL Certificate Path')">
+        <p>{{ data.server.ssl_cert }}</p>
+      </AFormItem>
+
+      <AFormItem :label="$gettext('SSL Key Path')">
+        <p>{{ data.server.ssl_key }}</p>
+      </AFormItem>
+    </div>
+  </AForm>
+</template>
+
+<style lang="less" scoped></style>

+ 17 - 0
app/src/views/preference/TerminalSettings.vue

@@ -0,0 +1,17 @@
+<script setup lang="ts">
+import type { Settings } from '@/api/settings'
+
+const data: Ref<Settings> = inject('data') as Ref<Settings>
+</script>
+
+<template>
+  <AForm layout="vertical">
+    <AFormItem :label="$gettext('Terminal Start Command')">
+      <p>{{ data.terminal.start_cmd }}</p>
+    </AFormItem>
+  </AForm>
+</template>
+
+<style lang="less" scoped>
+
+</style>

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

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import type { Cert, CertificateInfo } from '@/api/cert'
+import type { NgxDirective } from '@/api/ngx'
 import CertInfo from '@/views/site/cert/CertInfo.vue'
 import ChangeCert from '@/views/site/cert/components/ChangeCert/ChangeCert.vue'
 import IssueCert from '@/views/site/cert/IssueCert.vue'
@@ -11,6 +12,8 @@ const props = defineProps<{
   siteEnabled: boolean
 }>()
 
+const current_server_directives = defineModel<NgxDirective[]>('current_server_directives')
+
 const enabled = defineModel<boolean>('enabled', {
   default: () => false,
 })
@@ -24,6 +27,30 @@ watch(() => props.certInfo, () => {
 
 function handleCertChange(certs: Cert[]) {
   changedCerts.value = certs
+
+  // 更新 NgxDirective
+  if (current_server_directives.value) {
+    // 过滤掉现有的证书配置
+    const filteredDirectives = current_server_directives.value
+      .filter(v => v.directive !== 'ssl_certificate' && v.directive !== 'ssl_certificate_key')
+
+    // 添加新的证书配置
+    const newDirectives = [...filteredDirectives]
+
+    certs.forEach(cert => {
+      newDirectives.push({
+        directive: 'ssl_certificate',
+        params: cert.ssl_certificate_path,
+      })
+      newDirectives.push({
+        directive: 'ssl_certificate_key',
+        params: cert.ssl_certificate_key_path,
+      })
+    })
+
+    // 更新 directives
+    current_server_directives.value = newDirectives
+  }
 }
 </script>
 

+ 24 - 23
app/src/views/site/cert/components/ChangeCert/ChangeCert.vue

@@ -1,40 +1,40 @@
 <script setup lang="ts">
 import type { Cert } from '@/api/cert'
-import type { NgxDirective } from '@/api/ngx'
-import type { Ref, WritableComputedRef } from 'vue'
 import cert from '@/api/cert'
 import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 import certColumns from '@/views/certificate/CertificateList/certColumns'
 
+interface Props {
+  selectionType?: 'radio' | 'checkbox'
+}
+
+const props = withDefaults(defineProps<Props>(), {
+  selectionType: 'checkbox',
+})
+
 const emit = defineEmits(['change'])
 
-const current_server_directives = inject('current_server_directives') as WritableComputedRef<NgxDirective[]>
 const visible = ref(false)
 
 function open() {
   visible.value = true
 }
 
-const records = ref([]) as Ref<Cert[]>
-const selectedKeys = ref([])
+const records = ref<Cert[]>([])
+const selectedKeys = ref<(string | number)[]>([])
 
-async function ok() {
-  // clear all ssl_certificate and ssl_certificate_key
-  current_server_directives.value
-    = current_server_directives.value
-      .filter(v => v.directive !== 'ssl_certificate' && v.directive !== 'ssl_certificate_key')
-
-  records.value.forEach(v => {
-    current_server_directives?.value.push({
-      directive: 'ssl_certificate',
-      params: v.ssl_certificate_path,
-    })
-    current_server_directives?.value.push({
-      directive: 'ssl_certificate_key',
-      params: v.ssl_certificate_key_path,
-    })
-  })
+// Handle selection changes
+function handleSelectionChange(keys: (string | number)[] | string | number) {
+  // Ensure selectedKeys is always an array
+  if (props.selectionType === 'radio' && !Array.isArray(keys)) {
+    selectedKeys.value = keys !== undefined && keys !== null ? [keys] : []
+  }
+  else if (Array.isArray(keys)) {
+    selectedKeys.value = keys
+  }
+}
 
+async function ok() {
   visible.value = false
   emit('change', records.value)
 
@@ -56,12 +56,13 @@ async function ok() {
       @ok="ok"
     >
       <StdTable
-        v-model:selected-row-keys="selectedKeys"
         v-model:selected-rows="records"
+        :selected-row-keys="selectedKeys"
         :api="cert"
         pithy
         :columns="certColumns"
-        selection-type="checkbox"
+        :selection-type="selectionType"
+        @update:selected-row-keys="handleSelectionChange"
       />
     </AModal>
   </div>

+ 1 - 1
app/src/views/site/ngx_conf/NgxConfigEditor.vue

@@ -12,7 +12,7 @@ import { Modal } from 'ant-design-vue'
 
 const props = withDefaults(defineProps<{
   autoCert?: boolean
-  enabled: boolean
+  enabled?: boolean
   certInfo?: Record<number, CertificateInfo[]>
   context?: 'http' | 'stream'
 }>(), {

+ 2 - 1
app/src/views/site/ngx_conf/NgxServer.vue

@@ -14,7 +14,7 @@ withDefaults(defineProps<{
   certInfo?: {
     [key: number]: CertificateInfo[]
   }
-  context: 'http' | 'stream'
+  context?: 'http' | 'stream'
 }>(), {
   context: 'http',
 })
@@ -123,6 +123,7 @@ provide('ngx_directives', ngx_directives)
           <Cert
             v-if="current_support_ssl"
             v-model:enabled="autoCert"
+            v-model:current_server_directives="ngx_config.servers[current_server_index].directives"
             class="mb-4"
             :site-enabled="enabled"
             :config-name="ngx_config.name"

+ 4 - 4
go.mod

@@ -35,7 +35,7 @@ require (
 	github.com/spf13/cast v1.7.1
 	github.com/stretchr/testify v1.10.0
 	github.com/tufanbarisyildirim/gonginx v0.0.0-20250225174229-c03497ddaef6
-	github.com/uozi-tech/cosy v1.17.0
+	github.com/uozi-tech/cosy v1.18.0
 	github.com/uozi-tech/cosy-driver-sqlite v0.2.1
 	github.com/urfave/cli/v3 v3.0.0-beta1
 	golang.org/x/crypto v0.36.0
@@ -110,7 +110,7 @@ require (
 	github.com/fatih/structs v1.1.0 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
 	github.com/fsnotify/fsnotify v1.8.0 // indirect
-	github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+	github.com/fxamacker/cbor/v2 v2.8.0 // indirect
 	github.com/gabriel-vasile/mimetype v1.4.8 // indirect
 	github.com/ghodss/yaml v1.0.0 // indirect
 	github.com/gin-contrib/sse v1.0.0 // indirect
@@ -226,8 +226,8 @@ require (
 	github.com/spf13/viper v1.20.1 // indirect
 	github.com/stretchr/objx v0.5.2 // indirect
 	github.com/subosito/gotenv v1.6.0 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1134 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1134 // indirect
 	github.com/tjfoc/gmsm v1.4.1 // indirect
 	github.com/tklauser/go-sysconf v0.3.15 // indirect
 	github.com/tklauser/numcpus v0.10.0 // indirect

+ 9 - 0
go.sum

@@ -782,6 +782,7 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
+github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -903,6 +904,8 @@ github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/
 github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
 github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
 github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU=
+github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
 github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
 github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
 github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
@@ -1749,8 +1752,12 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133 h1:S+ZHcAfI8+ii4MfsCr41R3CdhlTsc5OddGsCfeYJdl8=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1134 h1:NDCzSm7r8OZeWQje1FJNHM73Ku4QRrCP1GymfgZYLSM=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1134/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 h1:mrJ5Fbkd7sZIJ5F6oRfh5zebPQaudPH9Y0+GUmFytYU=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128/go.mod h1:zbsYIBT+VTX4z4ocjTAdLBIWyNYj3z0BRqd0iPdnjsk=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1134 h1:Iel1hDW0eQt6p8YDRH2EbjiK5mqC4KEzabSKV0ZQ6FY=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1134/go.mod h1:8R/Xhu0hKGRFT30uwoN44bisb3cOoNjV8iwH65DjqUc=
 github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
 github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
 github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
@@ -1775,6 +1782,8 @@ github.com/ultradns/ultradns-go-sdk v1.8.0-20241010134910-243eeec h1:2s/ghQ8wKE+
 github.com/ultradns/ultradns-go-sdk v1.8.0-20241010134910-243eeec/go.mod h1:BZr7Qs3ku1ckpqed8tCRSqTlp8NAeZfAVpfx4OzXMss=
 github.com/uozi-tech/cosy v1.17.0 h1:qrdBhbylsHGIOUcUsZKUdVzq8fLvePIclHVSGdszyxk=
 github.com/uozi-tech/cosy v1.17.0/go.mod h1:jEyznv+lmbb0YO0gU//yn4PnyqncTlyV2H5BpDa5aEw=
+github.com/uozi-tech/cosy v1.18.0 h1:L0o1yQ6hTRdzUjWwcT/cJX0AcNaDaaL30gF8pJHUEzM=
+github.com/uozi-tech/cosy v1.18.0/go.mod h1:8s8oQENTTGcmOGas/hkLvE+pZPyNG6AIblRbFgPRCwg=
 github.com/uozi-tech/cosy-driver-mysql v0.2.2 h1:22S/XNIvuaKGqxQPsYPXN8TZ8hHjCQdcJKVQ83Vzxoo=
 github.com/uozi-tech/cosy-driver-mysql v0.2.2/go.mod h1:EZnRIbSj1V5U0gEeTobrXai/d1SV11lkl4zP9NFEmyE=
 github.com/uozi-tech/cosy-driver-postgres v0.2.1 h1:OICakGuT+omva6QOJCxTJ5Lfr7CGXLmk/zD+aS51Z2o=

+ 8 - 0
internal/system/errors.go

@@ -7,4 +7,12 @@ var (
 	e                 = cosy.NewErrorScope("system")
 	ErrInstalled      = e.New(40301, "Nginx UI already installed")
 	ErrInstallTimeout = e.New(40302, "installation is not allowed after 10 minutes of system startup")
+
+	// SSL certificate validation errors
+	ErrSSLCertRequired     = e.New(40303, "SSL certificate path is required when HTTPS is enabled")
+	ErrSSLKeyRequired      = e.New(40304, "SSL key path is required when HTTPS is enabled")
+	ErrSSLCertNotFound     = e.New(40305, "SSL certificate file not found")
+	ErrSSLKeyNotFound      = e.New(40306, "SSL key file not found")
+	ErrSSLCertNotUnderConf = e.New(40307, "SSL certificate file must be under Nginx configuration directory: {0}")
+	ErrSSLKeyNotUnderConf  = e.New(40308, "SSL key file must be under Nginx configuration directory: {0}")
 )

+ 47 - 0
internal/system/ssl.go

@@ -0,0 +1,47 @@
+package system
+
+import (
+	"os"
+
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/uozi-tech/cosy"
+)
+
+// ValidateSSLCertificates checks if SSL certificate and key files exist and are under Nginx config directory
+// Returns nil if valid, or a CosyError if invalid
+func ValidateSSLCertificates(sslCert, sslKey string) error {
+	// Check if both paths are provided
+	if sslCert == "" {
+		return ErrSSLCertRequired
+	}
+
+	if sslKey == "" {
+		return ErrSSLKeyRequired
+	}
+
+	// Get Nginx configuration directory
+	nginxConfPath := nginx.GetConfPath()
+
+	// Check if certificate file exists and is under Nginx config directory
+	if !helper.IsUnderDirectory(sslCert, nginxConfPath) {
+		return cosy.WrapErrorWithParams(ErrSSLCertNotUnderConf, nginxConfPath)
+	}
+
+	// Check if certificate file exists
+	if _, err := os.Stat(sslCert); os.IsNotExist(err) {
+		return ErrSSLCertNotFound
+	}
+
+	// Check if key file is under Nginx config directory
+	if !helper.IsUnderDirectory(sslKey, nginxConfPath) {
+		return cosy.WrapErrorWithParams(ErrSSLKeyNotUnderConf, nginxConfPath)
+	}
+
+	// Check if key file exists
+	if _, err := os.Stat(sslKey); os.IsNotExist(err) {
+		return ErrSSLKeyNotFound
+	}
+
+	return nil
+}

+ 14 - 1
main.go

@@ -8,6 +8,7 @@ import (
 
 	"github.com/0xJacky/Nginx-UI/internal/cmd"
 	"github.com/0xJacky/Nginx-UI/internal/kernel"
+	"github.com/0xJacky/Nginx-UI/internal/system"
 	"github.com/0xJacky/Nginx-UI/model"
 	"github.com/0xJacky/Nginx-UI/router"
 	"github.com/0xJacky/Nginx-UI/settings"
@@ -54,7 +55,19 @@ func Program(confPath string) func(state overseer.State) {
 			Addr:    addr,
 			Handler: cRouter.GetEngine(),
 		}
-		if err := srv.Serve(state.Listener); err != nil && !errors.Is(err, http.ErrServerClosed) {
+		var err error
+		if cSettings.ServerSettings.EnableHTTPS {
+			// Convert SSL certificate and key paths to absolute paths if they are relative
+			sslCert := system.GetAbsolutePath(cSettings.ServerSettings.SSLCert)
+			sslKey := system.GetAbsolutePath(cSettings.ServerSettings.SSLKey)
+
+			logger.Info("Starting HTTPS server")
+			err = srv.ServeTLS(state.Listener, sslCert, sslKey)
+		} else {
+			logger.Info("Starting HTTP server")
+			err = srv.Serve(state.Listener)
+		}
+		if err != nil && !errors.Is(err, http.ErrServerClosed) {
 			logger.Fatalf("listen: %s\n", err)
 		}
 	}