浏览代码

chore: update deps

Jacky 2 周之前
父节点
当前提交
61ff392c5c
共有 39 个文件被更改,包括 940 次插入426 次删除
  1. 1 0
      app/components.d.ts
  2. 66 66
      app/src/components/Notification/notifications.ts
  3. 1 0
      app/src/constants/errors/config.ts
  4. 3 0
      app/src/constants/errors/llm.ts
  5. 18 16
      app/src/language/ar/app.po
  6. 18 16
      app/src/language/de_DE/app.po
  7. 18 16
      app/src/language/en/app.po
  8. 18 16
      app/src/language/es/app.po
  9. 18 16
      app/src/language/fr_FR/app.po
  10. 18 16
      app/src/language/ko_KR/app.po
  11. 16 16
      app/src/language/messages.pot
  12. 18 16
      app/src/language/ru_RU/app.po
  13. 18 16
      app/src/language/tr_TR/app.po
  14. 242 87
      app/src/language/uk_UA/app.po
  15. 18 16
      app/src/language/vi_VN/app.po
  16. 28 26
      app/src/language/zh_CN/app.po
  17. 18 16
      app/src/language/zh_TW/app.po
  18. 1 1
      app/src/routes/modules/auth.ts
  19. 0 0
      app/src/views/install/Install.vue
  20. 106 0
      cmd/lego_config/main.go
  21. 3 0
      gen.sh
  22. 28 26
      go.mod
  23. 59 0
      go.sum
  24. 25 0
      internal/cert/config/active24.toml
  25. 24 0
      internal/cert/config/axelname.toml
  26. 24 0
      internal/cert/config/baiducloud.toml
  27. 24 0
      internal/cert/config/bookmyname.toml
  28. 1 0
      internal/cert/config/cloudflare.toml
  29. 2 0
      internal/cert/config/edgedns.toml
  30. 27 0
      internal/cert/config/f5xc.toml
  31. 1 0
      internal/cert/config/infoblox.toml
  32. 22 0
      internal/cert/config/metaregistrar.toml
  33. 1 0
      internal/cert/config/porkbun.toml
  34. 1 0
      internal/cert/config/route53.toml
  35. 2 1
      internal/cert/config/websupport.toml
  36. 0 43
      lego-config.sh
  37. 26 0
      query/certs.gen.go
  38. 13 0
      query/sites.gen.go
  39. 13 0
      query/streams.gen.go

+ 1 - 0
app/components.d.ts

@@ -71,6 +71,7 @@ declare module 'vue' {
     ATag: typeof import('ant-design-vue/es')['Tag']
     ATextarea: typeof import('ant-design-vue/es')['Textarea']
     ATooltip: typeof import('ant-design-vue/es')['Tooltip']
+    AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
     BreadcrumbBreadcrumb: typeof import('./src/components/Breadcrumb/Breadcrumb.vue')['default']
     ChartAreaChart: typeof import('./src/components/Chart/AreaChart.vue')['default']
     ChartRadialBarChart: typeof import('./src/components/Chart/RadialBarChart.vue')['default']

+ 66 - 66
app/src/components/Notification/notifications.ts

@@ -4,6 +4,72 @@
 
 const notifications: Record<string, { title: () => string, content: (args: any) => string }> = {
 
+  // cluster module notifications
+  'Reload Remote Nginx Error': {
+    title: () => $gettext('Reload Remote Nginx Error'),
+    content: (args: any) => $gettext('Reload Nginx on %{node} failed, response: %{resp}', args),
+  },
+  'Reload Remote Nginx Success': {
+    title: () => $gettext('Reload Remote Nginx Success'),
+    content: (args: any) => $gettext('Reload Nginx on %{node} successfully', args),
+  },
+  'Restart Remote Nginx Error': {
+    title: () => $gettext('Restart Remote Nginx Error'),
+    content: (args: any) => $gettext('Restart Nginx on %{node} failed, response: %{resp}', args),
+  },
+  'Restart Remote Nginx Success': {
+    title: () => $gettext('Restart Remote Nginx Success'),
+    content: (args: any) => $gettext('Restart Nginx on %{node} successfully', args),
+  },
+
+  // cert module notifications
+  'Certificate Expired': {
+    title: () => $gettext('Certificate Expired'),
+    content: (args: any) => $gettext('Certificate %{name} has expired', args),
+  },
+  'Certificate Expiration Notice': {
+    title: () => $gettext('Certificate Expiration Notice'),
+    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
+  },
+  'Certificate Expiring Soon': {
+    title: () => $gettext('Certificate Expiring Soon'),
+    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
+  },
+  'Certificate Expiring Soon_1': {
+    title: () => $gettext('Certificate Expiring Soon'),
+    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
+  },
+  'Certificate Expiring Soon_2': {
+    title: () => $gettext('Certificate Expiring Soon'),
+    content: (args: any) => $gettext('Certificate %{name} will expire in 1 day', args),
+  },
+  'Sync Certificate Error': {
+    title: () => $gettext('Sync Certificate Error'),
+    content: (args: any) => $gettext('Sync Certificate %{cert_name} to %{env_name} failed', args),
+  },
+  'Sync Certificate Success': {
+    title: () => $gettext('Sync Certificate Success'),
+    content: (args: any) => $gettext('Sync Certificate %{cert_name} to %{env_name} successfully', args),
+  },
+
+  // config module notifications
+  'Sync Config Error': {
+    title: () => $gettext('Sync Config Error'),
+    content: (args: any) => $gettext('Sync config %{config_name} to %{env_name} failed', args),
+  },
+  'Sync Config Success': {
+    title: () => $gettext('Sync Config Success'),
+    content: (args: any) => $gettext('Sync config %{config_name} to %{env_name} successfully', args),
+  },
+  'Rename Remote Config Error': {
+    title: () => $gettext('Rename Remote Config Error'),
+    content: (args: any) => $gettext('Rename %{orig_path} to %{new_path} on %{env_name} failed', args),
+  },
+  'Rename Remote Config Success': {
+    title: () => $gettext('Rename Remote Config Success'),
+    content: (args: any) => $gettext('Rename %{orig_path} to %{new_path} on %{env_name} successfully', args),
+  },
+
   // site module notifications
   'Delete Remote Site Error': {
     title: () => $gettext('Delete Remote Site Error'),
@@ -109,72 +175,6 @@ const notifications: Record<string, { title: () => string, content: (args: any)
     title: () => $gettext('All Recovery Codes Have Been Used'),
     content: (args: any) => $gettext('Please generate new recovery codes in the preferences immediately to prevent lockout.', args),
   },
-
-  // cluster module notifications
-  'Reload Remote Nginx Error': {
-    title: () => $gettext('Reload Remote Nginx Error'),
-    content: (args: any) => $gettext('Reload Nginx on %{node} failed, response: %{resp}', args),
-  },
-  'Reload Remote Nginx Success': {
-    title: () => $gettext('Reload Remote Nginx Success'),
-    content: (args: any) => $gettext('Reload Nginx on %{node} successfully', args),
-  },
-  'Restart Remote Nginx Error': {
-    title: () => $gettext('Restart Remote Nginx Error'),
-    content: (args: any) => $gettext('Restart Nginx on %{node} failed, response: %{resp}', args),
-  },
-  'Restart Remote Nginx Success': {
-    title: () => $gettext('Restart Remote Nginx Success'),
-    content: (args: any) => $gettext('Restart Nginx on %{node} successfully', args),
-  },
-
-  // cert module notifications
-  'Certificate Expired': {
-    title: () => $gettext('Certificate Expired'),
-    content: (args: any) => $gettext('Certificate %{name} has expired', args),
-  },
-  'Certificate Expiration Notice': {
-    title: () => $gettext('Certificate Expiration Notice'),
-    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
-  },
-  'Certificate Expiring Soon': {
-    title: () => $gettext('Certificate Expiring Soon'),
-    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
-  },
-  'Certificate Expiring Soon_1': {
-    title: () => $gettext('Certificate Expiring Soon'),
-    content: (args: any) => $gettext('Certificate %{name} will expire in %{days} days', args),
-  },
-  'Certificate Expiring Soon_2': {
-    title: () => $gettext('Certificate Expiring Soon'),
-    content: (args: any) => $gettext('Certificate %{name} will expire in 1 day', args),
-  },
-  'Sync Certificate Error': {
-    title: () => $gettext('Sync Certificate Error'),
-    content: (args: any) => $gettext('Sync Certificate %{cert_name} to %{env_name} failed', args),
-  },
-  'Sync Certificate Success': {
-    title: () => $gettext('Sync Certificate Success'),
-    content: (args: any) => $gettext('Sync Certificate %{cert_name} to %{env_name} successfully', args),
-  },
-
-  // config module notifications
-  'Sync Config Error': {
-    title: () => $gettext('Sync Config Error'),
-    content: (args: any) => $gettext('Sync config %{config_name} to %{env_name} failed', args),
-  },
-  'Sync Config Success': {
-    title: () => $gettext('Sync Config Success'),
-    content: (args: any) => $gettext('Sync config %{config_name} to %{env_name} successfully', args),
-  },
-  'Rename Remote Config Error': {
-    title: () => $gettext('Rename Remote Config Error'),
-    content: (args: any) => $gettext('Rename %{orig_path} to %{new_path} on %{env_name} failed', args),
-  },
-  'Rename Remote Config Success': {
-    title: () => $gettext('Rename Remote Config Success'),
-    content: (args: any) => $gettext('Rename %{orig_path} to %{new_path} on %{env_name} successfully', args),
-  },
 }
 
 export default notifications

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

@@ -1,3 +1,4 @@
 export default {
   50006: () => $gettext('Path: {0} is not under the nginx conf dir: {1}'),
+  50007: () => $gettext('Destination file: {0} already exists'),
 }

+ 3 - 0
app/src/constants/errors/llm.ts

@@ -0,0 +1,3 @@
+export default {
+  400: () => $gettext('Code completion is not enabled'),
+}

+ 18 - 16
app/src/language/ar/app.po

@@ -914,7 +914,7 @@ msgstr "قم بتخصيص اسم العقدة المحلية ليتم عرضها
 msgid "Dashboard"
 msgstr "لوحة المعلومات"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "قاعدة البيانات (اختياري، الافتراضي: قاعدة البيانات)"
 
@@ -1279,7 +1279,7 @@ msgstr "تعديل البث"
 msgid "Email"
 msgstr "بريد إلكتروني"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "البريد الإلكتروني (*)"
 
@@ -2039,11 +2039,11 @@ msgstr "أدخل رمز الاسترداد:"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "تثبيت"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "تم التثبيت بنجاح"
 
@@ -2051,7 +2051,7 @@ msgstr "تم التثبيت بنجاح"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2544,7 +2544,7 @@ msgstr "إجمالي استقبال الشبكة"
 msgid "Network Total Send"
 msgstr "إجمالي إرسال الشبكة"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "تثبيت"
@@ -3011,7 +3011,7 @@ msgstr ""
 msgid "Password"
 msgstr "كلمة المرور"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "كلمة المرور (*)"
 
@@ -3020,7 +3020,7 @@ msgstr "كلمة المرور (*)"
 msgid "Password incorrect"
 msgstr "اسم المستخدم أو كلمة المرور غير صحيحة"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3142,19 +3142,20 @@ msgid ""
 "configuration."
 msgstr "يرجى إدخال الاسم، سيتم استخدامه كاسم الملف للتكوين الجديد."
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "يرجى إدخال بريدك الإلكتروني!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "يرجى إدخال كلمة المرور الخاصة بك!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "يرجى إدخال اسم المستخدم الخاص بك!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3577,7 +3578,7 @@ msgstr "إعادة التشغيل"
 msgid "Restore completed successfully"
 msgstr "تم الحذف بنجاح"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "نظام"
@@ -4121,7 +4122,8 @@ msgstr "مستخدم النظام الأولي"
 msgid "System Restore"
 msgstr "نظام"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "تم إعادة تشغيل Nginx بنجاح"
@@ -4153,7 +4155,7 @@ msgstr ""
 "سيتم فحص شهادة النطاق لمدة 30 دقيقة، وسيتم تجديدها إذا مر أكثر من أسبوع أو "
 "الفترة التي حددتها في الإعدادات منذ إصدارها الأخير."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "لا يمكن أن يحتوي اسم الملف على الأحرف التالية: %{c}"
 
@@ -4567,7 +4569,7 @@ msgstr ""
 msgid "Username"
 msgstr "اسم المستخدم"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "اسم المستخدم (*)"
 

+ 18 - 16
app/src/language/de_DE/app.po

@@ -939,7 +939,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Übersicht"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Datenbank (Optional, Standard: database)"
 
@@ -1319,7 +1319,7 @@ msgstr "Seite bearbeiten"
 msgid "Email"
 msgstr "Email (*)"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Email (*)"
 
@@ -2090,11 +2090,11 @@ msgstr "Füge den Wiederherstellungscode ein:"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Installieren"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 #, fuzzy
 msgid "Install successfully"
 msgstr "Aktualisierung erfolgreich"
@@ -2103,7 +2103,7 @@ msgstr "Aktualisierung erfolgreich"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2616,7 +2616,7 @@ msgstr "Gesamter Netzwerkempfang"
 msgid "Network Total Send"
 msgstr "Gesamter Netzwerkversand"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Installieren"
@@ -3096,7 +3096,7 @@ msgstr ""
 msgid "Password"
 msgstr "Passwort"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Passwort (*)"
 
@@ -3105,7 +3105,7 @@ msgstr "Passwort (*)"
 msgid "Password incorrect"
 msgstr "Benuztername oder Passwort ist falsch"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr "Passwort darf nicht länger als 20 Zeichen sein"
 
@@ -3237,19 +3237,20 @@ msgstr ""
 "Bitte gib einen Namen ein, der als Dateiname der neuen Konfiguration "
 "verwendet wird."
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "Bitte gib deine E-Mail-Adresse ein!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "Bitte gib dein Passwort ein!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "Bitte gib deinen Benutzernamen ein!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3695,7 +3696,7 @@ msgstr "Starte neu"
 msgid "Restore completed successfully"
 msgstr "Erfolgreich deaktiviert"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "System"
@@ -4254,7 +4255,8 @@ msgstr "System-Startbenutzer"
 msgid "System Restore"
 msgstr "System"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Speichern erfolgreich"
@@ -4287,7 +4289,7 @@ msgstr ""
 "Das Zertifikat für die Domain wird alle Stunde überprüft und erneuert, wenn "
 "es seit der letzten Ausstellung vor mehr als 1 Monat ausgestellt wurde."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Der Dateiname darf die folgenden Zeichen nicht enthalten: %{c}"
 
@@ -4707,7 +4709,7 @@ msgstr ""
 msgid "Username"
 msgstr "Benutzername"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Benutzername (*)"
 

+ 18 - 16
app/src/language/en/app.po

@@ -929,7 +929,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Dashboard"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 
@@ -1304,7 +1304,7 @@ msgstr "Edit Site"
 msgid "Email"
 msgstr "Email (*)"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Email (*)"
 
@@ -2067,11 +2067,11 @@ msgstr ""
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Install"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 #, fuzzy
 msgid "Install successfully"
 msgstr "Enabled successfully"
@@ -2080,7 +2080,7 @@ msgstr "Enabled successfully"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2588,7 +2588,7 @@ msgstr "Network Total Receive"
 msgid "Network Total Send"
 msgstr "Network Total Send"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Install"
@@ -3056,7 +3056,7 @@ msgstr ""
 msgid "Password"
 msgstr "Password"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Password (*)"
 
@@ -3065,7 +3065,7 @@ msgstr "Password (*)"
 msgid "Password incorrect"
 msgstr "Password"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3185,19 +3185,20 @@ msgid ""
 "configuration."
 msgstr ""
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "Please input your E-mail!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "Please input your password!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "Please input your username!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3637,7 +3638,7 @@ msgstr ""
 msgid "Restore completed successfully"
 msgstr "Disabled successfully"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Created at"
@@ -4197,7 +4198,8 @@ msgstr ""
 msgid "System Restore"
 msgstr ""
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Saved successfully"
@@ -4230,7 +4232,7 @@ msgstr ""
 "The certificate for the domain will be checked every hour, and will be "
 "renewed if it has been more than 1 month since it was last issued."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 
@@ -4627,7 +4629,7 @@ msgstr ""
 msgid "Username"
 msgstr "Username"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Username (*)"
 

+ 18 - 16
app/src/language/es/app.po

@@ -915,7 +915,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Panel"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 
@@ -1279,7 +1279,7 @@ msgstr "Editar Transmisión"
 msgid "Email"
 msgstr "Correo"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Correo (*)"
 
@@ -2042,11 +2042,11 @@ msgstr "Ingrese el código de recuperación:"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Instalar"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "Instalación exitosa"
 
@@ -2054,7 +2054,7 @@ msgstr "Instalación exitosa"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2547,7 +2547,7 @@ msgstr "Total recibido por la red"
 msgid "Network Total Send"
 msgstr "Total enviado por la red"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Instalar"
@@ -3020,7 +3020,7 @@ msgstr ""
 msgid "Password"
 msgstr "Contraseña"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Contraseña (*)"
 
@@ -3029,7 +3029,7 @@ msgstr "Contraseña (*)"
 msgid "Password incorrect"
 msgstr "El nombre de usuario o contraseña son incorrectos"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3160,19 +3160,20 @@ msgstr ""
 "Ingrese el nombre por favor, este se usará como el nombre de archivo de la "
 "nueva configuración."
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "¡Por favor ingrese su correo electrónico!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "¡Por favor ingrese su contraseña!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 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:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3605,7 +3606,7 @@ msgstr "Reiniciando"
 msgid "Restore completed successfully"
 msgstr "Borrado exitoso"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Sistema"
@@ -4152,7 +4153,8 @@ msgstr "Usuario inicial del sistema"
 msgid "System Restore"
 msgstr "Sistema"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx reiniciado con éxito"
@@ -4185,7 +4187,7 @@ msgstr ""
 "renovado si ha pasado más de 1 semana o el período que configuró en ajustes "
 "desde que fue emitido por última vez."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 "El nombre del archivo no puede contener los siguientes caracteres: %{c}"
@@ -4609,7 +4611,7 @@ msgstr ""
 msgid "Username"
 msgstr "Nombre de usuario"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Nombre de usuario (*)"
 

+ 18 - 16
app/src/language/fr_FR/app.po

@@ -945,7 +945,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Dashboard"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Base de données (Facultatif, par défaut : database)"
 
@@ -1326,7 +1326,7 @@ msgstr "Modifier le site"
 msgid "Email"
 msgstr "Email (*)"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Email (*)"
 
@@ -2109,11 +2109,11 @@ msgstr "Entrez le code de récupération :"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Installer"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "Installé avec succès"
 
@@ -2121,7 +2121,7 @@ msgstr "Installé avec succès"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2628,7 +2628,7 @@ msgstr "Réception totale du réseau"
 msgid "Network Total Send"
 msgstr "Envoi total réseau"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Installer"
@@ -3096,7 +3096,7 @@ msgstr ""
 msgid "Password"
 msgstr "Mot de passe"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Mot de passe (*)"
 
@@ -3105,7 +3105,7 @@ msgstr "Mot de passe (*)"
 msgid "Password incorrect"
 msgstr "Le pseudo ou mot de passe est incorect"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3231,19 +3231,20 @@ msgstr ""
 "Veuillez entrer le nom, il sera utilisé comme nom de fichier de la nouvelle "
 "configuration."
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "Veuillez saisir votre e-mail !"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "Veuillez saisir votre mot de passe !"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3689,7 +3690,7 @@ msgstr "Redémarrage"
 msgid "Restore completed successfully"
 msgstr "Désactivé avec succès"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Système"
@@ -4248,7 +4249,8 @@ msgstr ""
 msgid "System Restore"
 msgstr "Système"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx a redémarré avec succès"
@@ -4281,7 +4283,7 @@ msgstr ""
 "Le certificat du domaine sera vérifié toutes les heures et sera renouvelé "
 "s'il s'est écoulé plus d'une semaine depuis sa dernière émission."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}"
 
@@ -4683,7 +4685,7 @@ msgstr ""
 msgid "Username"
 msgstr "Nom d'utilisateur"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Nom d'utilisateur (*)"
 

+ 18 - 16
app/src/language/ko_KR/app.po

@@ -904,7 +904,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "대시보드"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "데이터베이스 (선택사항, 기본값: database)"
 
@@ -1269,7 +1269,7 @@ msgstr "스트림 편집"
 msgid "Email"
 msgstr "이메일 (*)"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "이메일 (*)"
 
@@ -2027,11 +2027,11 @@ msgstr ""
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "설치"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 #, fuzzy
 msgid "Install successfully"
 msgstr "성공적으로 활성화됨"
@@ -2040,7 +2040,7 @@ msgstr "성공적으로 활성화됨"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2548,7 +2548,7 @@ msgstr "네트워크 총 수신"
 msgid "Network Total Send"
 msgstr "네트워크 총 송신"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "설치"
@@ -3018,7 +3018,7 @@ msgstr ""
 msgid "Password"
 msgstr "비밀번호"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "비밀번호 (*)"
 
@@ -3027,7 +3027,7 @@ msgstr "비밀번호 (*)"
 msgid "Password incorrect"
 msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3149,19 +3149,20 @@ msgid ""
 "configuration."
 msgstr "이름을 입력해주세요, 이것은 새 구성의 파일 이름으로 사용될 것입니다!"
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "이메일을 입력해주세요!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "비밀번호를 입력해주세요!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "사용자 이름을 입력해주세요!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3609,7 +3610,7 @@ msgstr "재시작 중"
 msgid "Restore completed successfully"
 msgstr "성공적으로 삭제됨"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "시스템"
@@ -4164,7 +4165,8 @@ msgstr ""
 msgid "System Restore"
 msgstr "시스템"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx가 성공적으로 재시작됨"
@@ -4197,7 +4199,7 @@ msgstr ""
 "도메인의 인증서는 매 시간 확인되며,마지막으로 발급된 지 1개월이 경과한 경우 "
 "갱신됩니다."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "파일 이름은 다음 문자를 포함할 수 없습니다: %{c}"
 
@@ -4597,7 +4599,7 @@ msgstr ""
 msgid "Username"
 msgstr "사용자 이름"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "사용자 이름 (*)"
 

+ 16 - 16
app/src/language/messages.pot

@@ -858,7 +858,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr ""
 
@@ -1200,7 +1200,7 @@ msgstr ""
 msgid "Email"
 msgstr ""
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr ""
 
@@ -1887,11 +1887,11 @@ msgid "Insecure Skip Verify"
 msgstr ""
 
 #: src/routes/modules/auth.ts:8
-#: src/views/other/Install.vue:185
+#: src/views/install/Install.vue:185
 msgid "Install"
 msgstr ""
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr ""
 
@@ -1899,7 +1899,7 @@ msgstr ""
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid "Installation is not allowed after 10 minutes of system startup, please restart the Nginx UI."
 msgstr ""
 
@@ -2361,7 +2361,7 @@ msgstr ""
 msgid "Network Total Send"
 msgstr ""
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 msgid "New Installation"
 msgstr ""
 
@@ -2796,7 +2796,7 @@ msgstr ""
 msgid "Password"
 msgstr ""
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr ""
 
@@ -2804,7 +2804,7 @@ msgstr ""
 msgid "Password incorrect"
 msgstr ""
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -2907,21 +2907,21 @@ msgstr ""
 msgid "Please input name, this will be used as the filename of the new configuration."
 msgstr ""
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr ""
 
-#: src/views/other/Install.vue:70
+#: src/views/install/Install.vue:70
 #: src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr ""
 
-#: src/views/other/Install.vue:64
+#: src/views/install/Install.vue:64
 #: src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr ""
 
-#: src/views/other/Install.vue:110
+#: src/views/install/Install.vue:110
 #: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
@@ -3315,7 +3315,7 @@ msgstr ""
 msgid "Restore completed successfully"
 msgstr ""
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 msgid "Restore from Backup"
 msgstr ""
 
@@ -3816,7 +3816,7 @@ msgstr ""
 msgid "System Restore"
 msgstr ""
 
-#: src/views/other/Install.vue:106
+#: src/views/install/Install.vue:106
 #: src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr ""
@@ -3843,7 +3843,7 @@ msgstr ""
 msgid "The certificate for the domain will be checked 30 minutes, and will be renewed if it has been more than 1 week or the period you set in settings since it was last issued."
 msgstr ""
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 
@@ -4181,7 +4181,7 @@ msgstr ""
 msgid "Username"
 msgstr ""
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr ""
 

+ 18 - 16
app/src/language/ru_RU/app.po

@@ -901,7 +901,7 @@ msgstr "Настройте имя локального сервера для о
 msgid "Dashboard"
 msgstr "Доска"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 
@@ -1266,7 +1266,7 @@ msgstr "Редактировать поток"
 msgid "Email"
 msgstr "Электронная почта"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Email (*)"
 
@@ -2025,11 +2025,11 @@ msgstr "Введите код восстановления:"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Установить"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "Установка прошла успешно"
 
@@ -2037,7 +2037,7 @@ msgstr "Установка прошла успешно"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2527,7 +2527,7 @@ msgstr "Всего получено"
 msgid "Network Total Send"
 msgstr "Всего отправлено"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Установить"
@@ -2992,7 +2992,7 @@ msgstr ""
 msgid "Password"
 msgstr "Пароль"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Пароль (*)"
 
@@ -3001,7 +3001,7 @@ msgstr "Пароль (*)"
 msgid "Password incorrect"
 msgstr "Имя пользователя или пароль неверны"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3130,19 +3130,20 @@ msgstr ""
 "Введите имя, оно будет использоваться в качестве имени файла новой "
 "конфигурации."
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "Введите ваш E-mail!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "Введите ваш пароль!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "Введите ваше имя пользователя!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3572,7 +3573,7 @@ msgstr "Перезапускается"
 msgid "Restore completed successfully"
 msgstr "Удалено успешно"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Система"
@@ -4116,7 +4117,8 @@ msgstr "Первоначальный пользователь системы"
 msgid "System Restore"
 msgstr "Система"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx успешно перезапущен"
@@ -4149,7 +4151,7 @@ msgstr ""
 "более 1 недели или периода, установленного в настройках, с момента его "
 "последней выдачи."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Имя файла не может содержать такой символ: %{c}"
 
@@ -4565,7 +4567,7 @@ msgstr ""
 msgid "Username"
 msgstr "Имя пользователя"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Имя пользователя (*)"
 

+ 18 - 16
app/src/language/tr_TR/app.po

@@ -903,7 +903,7 @@ msgstr "Ortam göstergesinde görüntülenecek yerel sunucu adını özelleştir
 msgid "Dashboard"
 msgstr "Kontrol Paneli"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Veritabanı (İsteğe bağlı, varsayılan: database)"
 
@@ -1285,7 +1285,7 @@ msgstr "Akışı Düzenle"
 msgid "Email"
 msgstr "E-posta"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "E-posta(*)"
 
@@ -2059,11 +2059,11 @@ msgstr "Kurtarma kodunu girin:"
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Yükle"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "Başarıyla yüklendi"
 
@@ -2071,7 +2071,7 @@ msgstr "Başarıyla yüklendi"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2583,7 +2583,7 @@ msgstr "Ağ Toplam Alım"
 msgid "Network Total Send"
 msgstr "Ağ Toplam Gönderme"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Yükle"
@@ -3092,7 +3092,7 @@ msgstr ""
 msgid "Password"
 msgstr "Şifre"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 #, fuzzy
 msgid "Password (*)"
 msgstr "Şifre (*)"
@@ -3102,7 +3102,7 @@ msgstr "Şifre (*)"
 msgid "Password incorrect"
 msgstr "Kullanıcı adı veya şifre yanlış"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3243,22 +3243,23 @@ msgid ""
 msgstr ""
 "Lütfen isim girin, bu yeni yapılandırmanın dosya adı olarak kullanılacaktır!"
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 #, fuzzy
 msgid "Please input your E-mail!"
 msgstr "Lütfen e-postanızı girin!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 #, fuzzy
 msgid "Please input your password!"
 msgstr "Lütfen şifrenizi girin!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 #, fuzzy
 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:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3743,7 +3744,7 @@ msgstr "Yeniden Başlatma"
 msgid "Restore completed successfully"
 msgstr "Başarıyla silindi"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Sistem"
@@ -4335,7 +4336,8 @@ msgstr "Sistem İlk Kullanıcısı"
 msgid "System Restore"
 msgstr "Sistem"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Nginx başarıyla yeniden başlatıldı"
@@ -4371,7 +4373,7 @@ msgstr ""
 "verilmesinden bu yana 1 haftadan veya ayarlarda belirlediğiniz süreden fazla "
 "zaman geçtiyse yenilenecektir."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 #, fuzzy
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Dosya adı aşağıdaki karakterleri içeremez: %{c}"
@@ -4829,7 +4831,7 @@ msgstr ""
 msgid "Username"
 msgstr "Kullanıcı Adı"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 #, fuzzy
 msgid "Username (*)"
 msgstr "Kullanıcı adı (*)"

+ 242 - 87
app/src/language/uk_UA/app.po

@@ -434,7 +434,9 @@ msgstr ""
 
 #: src/views/dashboard/components/PerformanceStatisticsCard.vue:43
 #: src/views/dashboard/components/PerformanceTablesCard.vue:190
-msgid "Calculated based on worker_processes * worker_connections. Actual performance depends on hardware, configuration, and workload"
+msgid ""
+"Calculated based on worker_processes * worker_connections. Actual "
+"performance depends on hardware, configuration, and workload"
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:356
@@ -576,7 +578,9 @@ msgid "Check again"
 msgstr ""
 
 #: src/views/system/SelfCheck/tasks/frontend/https-check.ts:11
-msgid "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features."
+msgid ""
+"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
+"prevents using Passkeys and clipboard features."
 msgstr ""
 
 #: src/views/system/SelfCheck/tasks/backend/index.ts:26
@@ -592,11 +596,15 @@ msgid "Check if the nginx.conf includes the streams-enabled directory."
 msgstr ""
 
 #: src/views/system/SelfCheck/tasks/backend/index.ts:6
-msgid "Check if the sites-available and sites-enabled directories are under the nginx configuration directory."
+msgid ""
+"Check if the sites-available and sites-enabled directories are under the "
+"nginx configuration directory."
 msgstr ""
 
 #: src/views/system/SelfCheck/tasks/backend/index.ts:11
-msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory."
+msgid ""
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory."
 msgstr ""
 
 #: src/constants/errors/crypto.ts:3
@@ -800,7 +808,9 @@ msgid "Create Folder"
 msgstr ""
 
 #: src/views/system/Backup/BackupCreator.vue:75
-msgid "Create system backups including Nginx configuration and Nginx UI settings. Backup files will be automatically downloaded to your computer."
+msgid ""
+"Create system backups including Nginx configuration and Nginx UI settings. "
+"Backup files will be automatically downloaded to your computer."
 msgstr ""
 
 #: src/views/environments/group/columns.ts:31
@@ -857,7 +867,9 @@ msgid "Custom"
 msgstr ""
 
 #: src/views/preference/NodeSettings.vue:19
-msgid "Customize the name of local node to be displayed in the environment indicator."
+msgid ""
+"Customize the name of local node to be displayed in the environment "
+"indicator."
 msgstr ""
 
 #: src/routes/modules/dashboard.ts:10 src/views/config/ConfigEditor.vue:110
@@ -865,7 +877,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr ""
 
@@ -1159,7 +1171,9 @@ msgid "Dry run mode enabled"
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:101
-msgid "Due to the security policies of some browsers, you cannot use passkeys on non-HTTPS websites, except when running on localhost."
+msgid ""
+"Due to the security policies of some browsers, you cannot use passkeys on "
+"non-HTTPS websites, except when running on localhost."
 msgstr ""
 
 #: src/views/site/site_list/SiteDuplicate.vue:72
@@ -1200,7 +1214,7 @@ msgstr ""
 msgid "Email"
 msgstr ""
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr ""
 
@@ -1669,7 +1683,9 @@ msgid "First View"
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:71
-msgid "Follow the instructions in the dialog to complete the passkey registration process."
+msgid ""
+"Follow the instructions in the dialog to complete the passkey registration "
+"process."
 msgstr ""
 
 #: src/views/preference/NodeSettings.vue:42
@@ -1802,15 +1818,21 @@ msgid "If left blank, the default CA Dir will be used."
 msgstr ""
 
 #: src/views/nginx_log/NginxLogList.vue:81
-msgid "If logs are not indexed, please check if the log file is under the directory in Nginx.LogDirWhiteList."
+msgid ""
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 
 #: src/views/preference/AuthSettings.vue:145
-msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time."
+msgid ""
+"If the number of login failed attempts from a ip reach the max attempts in "
+"ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:117
-msgid "If you want to automatically revoke the old certificate, please enable this option."
+msgid ""
+"If you want to automatically revoke the old certificate, please enable this "
+"option."
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:70
@@ -1818,7 +1840,9 @@ msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:108
-msgid "If your domain has CNAME records and you cannot obtain certificates, you need to enable this option."
+msgid ""
+"If your domain has CNAME records and you cannot obtain certificates, you "
+"need to enable this option."
 msgstr ""
 
 #: src/views/certificate/CertificateList/Certificate.vue:22
@@ -1835,7 +1859,9 @@ msgid "Inactive Time"
 msgstr ""
 
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
-msgid "Includes master process, worker processes, cache processes, and other Nginx processes"
+msgid ""
+"Includes master process, worker processes, cache processes, and other Nginx "
+"processes"
 msgstr ""
 
 #: src/views/nginx_log/NginxLogList.vue:89
@@ -1877,11 +1903,11 @@ msgstr ""
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr ""
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr ""
 
@@ -1889,8 +1915,10 @@ msgstr ""
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
-msgid "Installation is not allowed after 10 minutes of system startup, please restart the Nginx UI."
+#: src/views/install/Install.vue:127
+msgid ""
+"Installation is not allowed after 10 minutes of system startup, please "
+"restart the Nginx UI."
 msgstr ""
 
 #: src/views/preference/LogrotateSettings.vue:25
@@ -1979,7 +2007,9 @@ msgid "Jwt Secret"
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:74
-msgid "Keep your recovery codes as safe as your password. We recommend saving them with a password manager."
+msgid ""
+"Keep your recovery codes as safe as your password. We recommend saving them "
+"with a password manager."
 msgstr ""
 
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
@@ -2127,7 +2157,13 @@ msgid "Logrotate"
 msgstr ""
 
 #: src/views/preference/LogrotateSettings.vue:12
-msgid "Logrotate, by default, is enabled in most mainstream Linux distributions for users who install Nginx UI on the host machine, so you don't need to modify the parameters on this page. For users who install Nginx UI using Docker containers, you can manually enable this option. The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes."
+msgid ""
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2145,7 +2181,9 @@ msgid "Maintenance mode enabled successfully"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:53
-msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort before obtaining the certificate."
+msgid ""
+"Make sure you have configured a reverse proxy for .well-known directory to "
+"HTTPChallengePort before obtaining the certificate."
 msgstr ""
 
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
@@ -2341,7 +2379,7 @@ msgstr ""
 msgid "Network Total Send"
 msgstr ""
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 msgid "New Installation"
 msgstr ""
 
@@ -2507,7 +2545,9 @@ msgid "Nginx UI configuration has been restored"
 msgstr ""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
-msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds."
+msgid ""
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:374
@@ -2589,7 +2629,9 @@ msgstr ""
 
 #: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
-msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance."
+msgid ""
+"Note, if the configuration file include other configurations or "
+"certificates, please synchronize them to the remote nodes in advance."
 msgstr ""
 
 #: src/views/notification/Notification.vue:28
@@ -2637,7 +2679,9 @@ msgid "OCSP Must Staple"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:99
-msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
+msgid ""
+"OCSP Must Staple may cause errors for some users on first access using "
+"Firefox."
 msgstr ""
 
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
@@ -2765,14 +2809,17 @@ msgid "Passkey"
 msgstr ""
 
 #: src/views/preference/components/Passkey.vue:62
-msgid "Passkeys are webauthn credentials that validate your identity using touch, facial recognition, a device password, or a PIN. They can be used as a password replacement or as a 2FA method."
+msgid ""
+"Passkeys are webauthn credentials that validate your identity using touch, "
+"facial recognition, a device password, or a PIN. They can be used as a "
+"password replacement or as a 2FA method."
 msgstr ""
 
 #: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgstr ""
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr ""
 
@@ -2780,7 +2827,7 @@ msgstr ""
 msgid "Password incorrect"
 msgstr ""
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -2828,11 +2875,15 @@ msgid "Plain text is empty"
 msgstr ""
 
 #: src/views/dashboard/NginxDashBoard.vue:174
-msgid "Please enable the stub_status module to get request statistics, connection count, etc."
+msgid ""
+"Please enable the stub_status module to get request statistics, connection "
+"count, etc."
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:69
-msgid "Please enter a name for the passkey you wish to create and click the OK button below."
+msgid ""
+"Please enter a name for the passkey you wish to create and click the OK "
+"button below."
 msgstr ""
 
 #: src/components/TwoFA/Authorization.vue:85
@@ -2849,7 +2900,9 @@ msgid "Please enter the security token received during backup"
 msgstr ""
 
 #: src/views/certificate/DNSCredential.vue:53
-msgid "Please fill in the API authentication credentials provided by your DNS provider."
+msgid ""
+"Please fill in the API authentication credentials provided by your DNS "
+"provider."
 msgstr ""
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
@@ -2857,12 +2910,16 @@ msgid "Please fill in the required fields"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:57
-msgid "Please first add credentials in Certification > DNS Credentials, and then select one of the credentialsbelow to request the API of the DNS provider."
+msgid ""
+"Please first add credentials in Certification > DNS Credentials, and then "
+"select one of the credentialsbelow to request the API of the DNS provider."
 msgstr ""
 
 #: src/components/Notification/notifications.ts:110
 #: src/language/constants.ts:59
-msgid "Please generate new recovery codes in the preferences immediately to prevent lockout."
+msgid ""
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 
 #: src/views/config/components/Rename.vue:65
@@ -2875,31 +2932,37 @@ msgid "Please input a folder name"
 msgstr ""
 
 #: src/views/stream/components/StreamDuplicate.vue:25
-msgid "Please input name, this will be used as the filename of the new configuration!"
+msgid ""
+"Please input name, this will be used as the filename of the new "
+"configuration!"
 msgstr ""
 
 #: src/views/site/site_list/SiteDuplicate.vue:33
-msgid "Please input name, this will be used as the filename of the new configuration."
+msgid ""
+"Please input name, this will be used as the filename of the new "
+"configuration."
 msgstr ""
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr ""
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr ""
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr ""
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 
 #: src/views/system/Backup/BackupCreator.vue:107
@@ -3020,7 +3083,9 @@ msgid "Recovery Codes"
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:73
-msgid "Recovery codes are used to access your account when you lose access to your 2FA device. Each code can only be used once."
+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:40
@@ -3036,7 +3101,9 @@ msgid "Register"
 msgstr ""
 
 #: src/views/certificate/ACMEUser.vue:56
-msgid "Register a user or use this account to issue a certificate through an HTTP proxy."
+msgid ""
+"Register a user or use this account to issue a certificate through an HTTP "
+"proxy."
 msgstr ""
 
 #: src/views/certificate/ACMEUser.vue:106
@@ -3237,7 +3304,10 @@ msgid "Reset 2FA"
 msgstr ""
 
 #: src/views/dashboard/components/ResourceUsageCard.vue:53
-msgid "Resident Set Size: Actual memory resident in physical memory, including all shared library memory, which will be repeated calculated for multiple processes"
+msgid ""
+"Resident Set Size: Actual memory resident in physical memory, including all "
+"shared library memory, which will be repeated calculated for multiple "
+"processes"
 msgstr ""
 
 #: src/composables/usePerformanceMetrics.ts:109
@@ -3283,7 +3353,7 @@ msgstr ""
 msgid "Restore completed successfully"
 msgstr ""
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 msgid "Restore from Backup"
 msgstr ""
 
@@ -3316,7 +3386,9 @@ msgid "Revoke this certificate"
 msgstr ""
 
 #: src/views/certificate/components/RemoveCert.vue:117
-msgid "Revoking a certificate will affect any services currently using it. This action cannot be undone."
+msgid ""
+"Revoking a certificate will affect any services currently using it. This "
+"action cannot be undone."
 msgstr ""
 
 #: src/views/preference/AuthSettings.vue:107
@@ -3478,7 +3550,9 @@ msgid "Session not found"
 msgstr ""
 
 #: src/views/preference/CertSettings.vue:36
-msgid "Set the recursive nameservers to override the systems nameservers for the step of DNS challenge."
+msgid ""
+"Set the recursive nameservers to override the systems nameservers for the "
+"step of DNS challenge."
 msgstr ""
 
 #: src/views/site/components/SiteStatusSegmented.vue:89
@@ -3498,11 +3572,15 @@ msgid "Setting HTTP01 challenge provider"
 msgstr ""
 
 #: src/constants/errors/nginx_log.ts:8
-msgid "Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
+msgid ""
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 
 #: src/constants/errors/nginx_log.ts:7
-msgid "Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
+msgid ""
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
@@ -3675,7 +3753,11 @@ msgid "Success"
 msgstr ""
 
 #: src/views/system/SelfCheck/tasks/frontend/websocket.ts:6
-msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
+msgid ""
+"Support communication with the backend through the WebSocket protocol. If "
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -3777,7 +3859,8 @@ msgstr ""
 msgid "System Restore"
 msgstr ""
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr ""
 
@@ -3799,15 +3882,20 @@ msgid "Terminal Start Command"
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:49
-msgid "The certificate for the domain will be checked 30 minutes, and will be renewed if it has been more than 1 week or the period you set in settings since it was last issued."
+msgid ""
+"The certificate for the domain will be checked 30 minutes, and will be "
+"renewed if it has been more than 1 week or the period you set in settings "
+"since it was last issued."
 msgstr ""
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 
 #: src/views/preference/NodeSettings.vue:37
-msgid "The ICP Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgid ""
+"The ICP Number should only contain letters, unicode, numbers, hyphens, "
+"dashes, colons, and dots."
 msgstr ""
 
 #: src/views/certificate/components/CertificateEditor.vue:216
@@ -3819,20 +3907,26 @@ msgid "The input is not a SSL Certificate Key"
 msgstr ""
 
 #: src/constants/errors/nginx_log.ts:2
-msgid "The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
+msgid ""
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
 #: src/views/preference/OpenAISettings.vue:89
-msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgid ""
+"The model name should only contain letters, unicode, numbers, hyphens, "
+"dashes, colons, and dots."
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 
 #: src/views/preference/NodeSettings.vue:18
-msgid "The node name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgid ""
+"The node name should only contain letters, unicode, numbers, hyphens, "
+"dashes, colons, and dots."
 msgstr ""
 
 #: src/views/site/site_add/SiteAdd.vue:120
@@ -3848,15 +3942,22 @@ msgid "The path exists, but the file is not a private key"
 msgstr ""
 
 #: src/views/preference/NodeSettings.vue:49
-msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgid ""
+"The Public Security Number should only contain letters, unicode, numbers, "
+"hyphens, dashes, colons, and dots."
 msgstr ""
 
 #: src/views/dashboard/Environments.vue:148
-msgid "The remote Nginx UI version is not compatible with the local Nginx UI version. To avoid potential errors, please upgrade the remote Nginx UI to match the local version."
+msgid ""
+"The remote Nginx UI version is not compatible with the local Nginx UI "
+"version. To avoid potential errors, please upgrade the remote Nginx UI to "
+"match the local version."
 msgstr ""
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:44
-msgid "The server_name in the current configuration must be the domain name you need to get the certificate, supportmultiple domains."
+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/CertSettings.vue:22
@@ -3882,7 +3983,10 @@ msgid "Theoretical maximum RPS (Requests Per Second):"
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:104
-msgid "These codes are the last resort for accessing your account in case you lose your password and second factors. If you cannot find these codes, you will lose access to your account."
+msgid ""
+"These codes are the last resort for accessing your account in case you lose "
+"your password and second factors. If you cannot find these codes, you will "
+"lose access to your account."
 msgstr ""
 
 #: src/views/certificate/components/CertificateEditor.vue:102
@@ -3913,19 +4017,26 @@ msgid "This field should not be empty"
 msgstr ""
 
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 
 #: src/views/dashboard/NginxDashBoard.vue:153
-msgid "This module provides Nginx request statistics, connection count, etc. data. After enabling it, you can view performance statistics"
+msgid ""
+"This module provides Nginx request statistics, connection count, etc. data. "
+"After enabling it, you can view performance statistics"
 msgstr ""
 
 #: src/views/certificate/components/RemoveCert.vue:103
-msgid "This operation will only remove the certificate from the database. The certificate files on the file system will not be deleted."
+msgid ""
+"This operation will only remove the certificate from the database. The "
+"certificate files on the file system will not be deleted."
 msgstr ""
 
 #: src/views/system/Backup/BackupCreator.vue:141
-msgid "This token will only be shown once and cannot be retrieved later. Please make sure to save it in a secure location."
+msgid ""
+"This token will only be shown once and cannot be retrieved later. Please "
+"make sure to save it in a secure location."
 msgstr ""
 
 #: src/constants/form_errors.ts:4
@@ -3934,16 +4045,21 @@ msgstr ""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:227
 #: src/components/SystemRestore/SystemRestoreContent.vue:304
-msgid "This will restore all Nginx configuration files. Nginx will restart after the restoration is complete."
+msgid ""
+"This will restore all Nginx configuration files. Nginx will restart after "
+"the restoration is complete."
 msgstr ""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:238
 #: src/components/SystemRestore/SystemRestoreContent.vue:315
-msgid "This will restore configuration files and database. Nginx UI will restart after the restoration is complete."
+msgid ""
+"This will restore configuration files and database. Nginx UI will restart "
+"after the restoration is complete."
 msgstr ""
 
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 
 #: src/views/preference/AuthSettings.vue:124
@@ -3957,7 +4073,9 @@ msgid "Tips"
 msgstr ""
 
 #: src/views/dashboard/components/PerformanceTablesCard.vue:206
-msgid "Tips: You can increase the concurrency processing capacity by increasing worker_processes or worker_connections"
+msgid ""
+"Tips: You can increase the concurrency processing capacity by increasing "
+"worker_processes or worker_connections"
 msgstr ""
 
 #: src/views/notification/notificationColumns.tsx:45
@@ -3969,19 +4087,31 @@ msgid "To confirm revocation, please type \"Revoke\" in the field below:"
 msgstr ""
 
 #: src/views/preference/components/TOTP.vue:68
-msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone."
+msgid ""
+"To enable it, you need to install the Google or Microsoft Authenticator app "
+"on your mobile phone."
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:89
-msgid "To ensure security, Webauthn configuration cannot be added through the UI. Please manually configure the following in the app.ini configuration file and restart Nginx UI."
+msgid ""
+"To ensure security, Webauthn configuration cannot be added through the UI. "
+"Please manually configure the following in the app.ini configuration file "
+"and restart Nginx UI."
 msgstr ""
 
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:45
-msgid "To make sure the certification auto-renewal can work normally, we need to add a location which can proxy the request from authority to backend, and we need to save this file and reload the Nginx. Are you sure you want to continue?"
+msgid ""
+"To make sure the certification auto-renewal can work normally, we need to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
+"continue?"
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:36
-msgid "To use a local large model, deploy it with ollama, vllm or lmdeploy. They provide an OpenAI-compatible API endpoint, so just set the baseUrl to your local API."
+msgid ""
+"To use a local large model, deploy it with ollama, vllm or lmdeploy. They "
+"provide an OpenAI-compatible API endpoint, so just set the baseUrl to your "
+"local API."
 msgstr ""
 
 #: src/views/dashboard/NginxDashBoard.vue:57
@@ -4031,7 +4161,9 @@ msgid "TOTP"
 msgstr ""
 
 #: src/views/preference/components/TOTP.vue:67
-msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
+msgid ""
+"TOTP is a two-factor authentication method that uses a time-based one-time "
+"password algorithm."
 msgstr ""
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197
@@ -4137,7 +4269,7 @@ msgstr ""
 msgid "Username"
 msgstr ""
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr ""
 
@@ -4201,15 +4333,22 @@ msgstr ""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:178
 #: src/components/SystemRestore/SystemRestoreContent.vue:255
-msgid "Warning: Restore operation will overwrite current configurations. Make sure you have a valid backup file and security token, and carefully select what to restore."
+msgid ""
+"Warning: Restore operation will overwrite current configurations. Make sure "
+"you have a valid backup file and security token, and carefully select what "
+"to restore."
 msgstr ""
 
 #: src/views/certificate/DNSCredential.vue:56
-msgid "We will add one or more TXT records to the DNS records of your domain for ownership verification."
+msgid ""
+"We will add one or more TXT records to the DNS records of your domain for "
+"ownership verification."
 msgstr ""
 
 #: src/views/site/cert/components/ObtainCert.vue:137
-msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?"
+msgid ""
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 
 #: src/views/preference/AuthSettings.vue:97
@@ -4225,19 +4364,28 @@ msgid "WebSocket connection error"
 msgstr ""
 
 #: src/views/certificate/ACMEUser.vue:83
-msgid "When Enabled, Nginx UI will automatically re-register users upon startup. Generally, do not enable this unless you are in a dev environment and using Pebble as CA."
+msgid ""
+"When Enabled, Nginx UI will automatically re-register users upon startup. "
+"Generally, do not enable this unless you are in a dev environment and using "
+"Pebble as CA."
 msgstr ""
 
 #: src/views/site/site_edit/RightSettings.vue:81
-msgid "When you enable/disable, delete, or save this site, the nodes set in the Node Group and the nodes selected below will be synchronized."
+msgid ""
+"When you enable/disable, delete, or save this site, the nodes set in the "
+"Node Group and the nodes selected below will be synchronized."
 msgstr ""
 
 #: src/views/stream/components/RightSettings.vue:114
-msgid "When you enable/disable, delete, or save this stream, the nodes set in the Node Group and the nodes selected below will be synchronized."
+msgid ""
+"When you enable/disable, delete, or save this stream, the nodes set in the "
+"Node Group and the nodes selected below will be synchronized."
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:140
-msgid "When you generate new recovery codes, you must download or print the new codes."
+msgid ""
+"When you generate new recovery codes, you must download or print the new "
+"codes."
 msgstr ""
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
@@ -4282,7 +4430,9 @@ msgid "Yes"
 msgstr ""
 
 #: src/views/terminal/Terminal.vue:135
-msgid "You are accessing this terminal over an insecure HTTP connection on a non-localhost domain. This may expose sensitive information."
+msgid ""
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 
 #: src/views/system/Upgrade.vue:202
@@ -4302,11 +4452,14 @@ msgid "You can close this dialog now"
 msgstr ""
 
 #: src/views/preference/components/AddPasskey.vue:87
-msgid "You have not configured the settings of Webauthn, so you cannot add a passkey."
+msgid ""
+"You have not configured the settings of Webauthn, so you cannot add a "
+"passkey."
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:94
@@ -4314,7 +4467,9 @@ msgid "You have not generated recovery codes yet."
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:91
-msgid "Your current recovery code might be outdated and insecure. Please generate new recovery codes at your earliest convenience to ensure security."
+msgid ""
+"Your current recovery code might be outdated and insecure. Please generate "
+"new recovery codes at your earliest convenience to ensure security."
 msgstr ""
 
 #: src/views/preference/components/RecoveryCodes.vue:142

+ 18 - 16
app/src/language/vi_VN/app.po

@@ -932,7 +932,7 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Bảng điều khiển"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
 
@@ -1308,7 +1308,7 @@ msgstr "Sửa trang web"
 msgid "Email"
 msgstr "Email (*)"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "Email (*)"
 
@@ -2068,11 +2068,11 @@ msgstr ""
 msgid "Insecure Skip Verify"
 msgstr ""
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "Cài đặt"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 #, fuzzy
 msgid "Install successfully"
 msgstr "Cài đặt thành công"
@@ -2081,7 +2081,7 @@ msgstr "Cài đặt thành công"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr ""
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2583,7 +2583,7 @@ msgstr "Tổng lưu lượng mạng đã nhận"
 msgid "Network Total Send"
 msgstr "Tổng lưu lượng mạng đã gửi"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 #, fuzzy
 msgid "New Installation"
 msgstr "Cài đặt"
@@ -3050,7 +3050,7 @@ msgstr ""
 msgid "Password"
 msgstr "Mật khẩu"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "Mật khẩu (*)"
 
@@ -3059,7 +3059,7 @@ msgstr "Mật khẩu (*)"
 msgid "Password incorrect"
 msgstr "Tên người dùng hoặc mật khẩu không chính xác"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr ""
 
@@ -3184,19 +3184,20 @@ msgid ""
 msgstr ""
 "Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!"
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "Vui lòng nhập E-mail của bạn!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "Vui lòng nhập mật khẩu!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "Vui lòng nhập username!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr ""
 
@@ -3639,7 +3640,7 @@ msgstr "Đang khởi động lại"
 msgid "Restore completed successfully"
 msgstr "Đã xoá thành công"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 #, fuzzy
 msgid "Restore from Backup"
 msgstr "Thông tin"
@@ -4191,7 +4192,8 @@ msgstr ""
 msgid "System Restore"
 msgstr "Thông tin"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 #, fuzzy
 msgid "System restored successfully."
 msgstr "Restart Nginx thành công"
@@ -4224,7 +4226,7 @@ msgstr ""
 "Chứng chỉ cho miền sẽ được kiểm tra 5 phút / lần và sẽ được gia hạn nếu đã "
 "hơn 1 tuần kể từ lần cuối nó được cấp."
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 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}"
 
@@ -4620,7 +4622,7 @@ msgstr ""
 msgid "Username"
 msgstr "Username"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "Username (*)"
 

+ 28 - 26
app/src/language/zh_CN/app.po

@@ -877,7 +877,7 @@ msgstr "自定义显示在环境指示器中的本地服务器名称。"
 msgid "Dashboard"
 msgstr "仪表盘"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "数据库 (可选,默认: database)"
 
@@ -1214,7 +1214,7 @@ msgstr "编辑 Stream"
 msgid "Email"
 msgstr "邮箱"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "邮箱 (*)"
 
@@ -1906,11 +1906,11 @@ msgstr "输入恢复代码:"
 msgid "Insecure Skip Verify"
 msgstr "跳过证书认证"
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "安装"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "安装成功"
 
@@ -1918,7 +1918,7 @@ msgstr "安装成功"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr "系统启动 10 分钟后不允许安装"
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2389,7 +2389,7 @@ msgstr "下载流量"
 msgid "Network Total Send"
 msgstr "上传流量"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 msgid "New Installation"
 msgstr "新安装"
 
@@ -2831,7 +2831,7 @@ msgstr ""
 msgid "Password"
 msgstr "密码"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "密码 (*)"
 
@@ -2839,7 +2839,7 @@ msgstr "密码 (*)"
 msgid "Password incorrect"
 msgstr "用户名和密码错误"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr "密码长度不能超过 20 个字符"
 
@@ -2957,19 +2957,20 @@ msgid ""
 "configuration."
 msgstr "请输入名称,这将作为新配置的文件名。"
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "请输入您的邮箱!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "请输入您的密码!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "请输入您的用户名!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr "请登录。"
 
@@ -3370,7 +3371,7 @@ msgstr "重启中"
 msgid "Restore completed successfully"
 msgstr "恢复成功"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 msgid "Restore from Backup"
 msgstr "从备份还原"
 
@@ -3590,19 +3591,19 @@ msgstr "使用 HTTP01 challenge provider"
 
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
-"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://"
-"nginxui.com/guide/config-nginx.html"
+"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://nginxui."
+"com/guide/config-nginx.html"
 
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
-"Settings.NginxLogSettings.ErrorLogPath为空,更多信息请参阅 https://"
-"nginxui.com/guide/config-nginx.html"
+"Settings.NginxLogSettings.ErrorLogPath为空,更多信息请参阅 https://nginxui."
+"com/guide/config-nginx.html"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
 msgid "Shared Memory Zone"
@@ -3882,7 +3883,8 @@ msgstr "系统初始用户"
 msgid "System Restore"
 msgstr "系统还原"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr "系统恢复成功。"
 
@@ -3912,7 +3914,7 @@ msgstr ""
 "域名证书将在 30 分钟内接受检查,如果距离上次签发证书的时间超过 1 周或您在设置"
 "中设定的时间,证书将被更新。"
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "文件名不能包含以下字符: %{c}"
 
@@ -4303,7 +4305,7 @@ msgstr "用户未启用 OTP 作为 2FA"
 msgid "Username"
 msgstr "用户名"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "用户名 (*)"
 
@@ -4614,8 +4616,8 @@ msgstr "你的 Passkeys"
 #~ msgstr "请将远程 Nginx UI 升级到最新版本"
 
 #~ msgid ""
-#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %"
-#~ "{resp}"
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
+#~ "%{resp}"
 #~ msgstr ""
 #~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,响应:%{resp}"
 

+ 18 - 16
app/src/language/zh_TW/app.po

@@ -884,7 +884,7 @@ msgstr "自訂顯示在環境指示器中的本機節點名稱。"
 msgid "Dashboard"
 msgstr "儀錶板"
 
-#: src/views/other/Install.vue:169
+#: src/views/install/Install.vue:169
 msgid "Database (Optional, default: database)"
 msgstr "資料庫 (可選,預設:database)"
 
@@ -1221,7 +1221,7 @@ msgstr "編輯 Stream"
 msgid "Email"
 msgstr "電子郵件"
 
-#: src/views/other/Install.vue:138
+#: src/views/install/Install.vue:138
 msgid "Email (*)"
 msgstr "電子郵件 (*)"
 
@@ -1913,11 +1913,11 @@ msgstr "輸入恢復碼:"
 msgid "Insecure Skip Verify"
 msgstr "不安全跳過驗證"
 
-#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+#: src/routes/modules/auth.ts:8 src/views/install/Install.vue:185
 msgid "Install"
 msgstr "安裝"
 
-#: src/views/other/Install.vue:93
+#: src/views/install/Install.vue:93
 msgid "Install successfully"
 msgstr "安裝成功"
 
@@ -1925,7 +1925,7 @@ msgstr "安裝成功"
 msgid "Installation is not allowed after 10 minutes of system startup"
 msgstr "系統啟動後 10 分鐘後不允許安裝"
 
-#: src/views/other/Install.vue:127
+#: src/views/install/Install.vue:127
 msgid ""
 "Installation is not allowed after 10 minutes of system startup, please "
 "restart the Nginx UI."
@@ -2397,7 +2397,7 @@ msgstr "下載流量"
 msgid "Network Total Send"
 msgstr "上傳流量"
 
-#: src/views/other/Install.vue:133
+#: src/views/install/Install.vue:133
 msgid "New Installation"
 msgstr "新安裝"
 
@@ -2841,7 +2841,7 @@ msgstr ""
 msgid "Password"
 msgstr "密碼"
 
-#: src/views/other/Install.vue:158
+#: src/views/install/Install.vue:158
 msgid "Password (*)"
 msgstr "密碼 (*)"
 
@@ -2849,7 +2849,7 @@ msgstr "密碼 (*)"
 msgid "Password incorrect"
 msgstr "密碼錯誤"
 
-#: src/views/other/Install.vue:74
+#: src/views/install/Install.vue:74
 msgid "Password length cannot exceed 20 characters"
 msgstr "密碼長度不能超過 20 個字元"
 
@@ -2967,19 +2967,20 @@ msgid ""
 "configuration."
 msgstr "請輸入名稱,此名稱將用作新設定的檔案名稱。"
 
-#: src/views/other/Install.vue:58
+#: src/views/install/Install.vue:58
 msgid "Please input your E-mail!"
 msgstr "請輸入您的電子郵件!"
 
-#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+#: src/views/install/Install.vue:70 src/views/other/Login.vue:47
 msgid "Please input your password!"
 msgstr "請輸入您的密碼!"
 
-#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+#: src/views/install/Install.vue:64 src/views/other/Login.vue:41
 msgid "Please input your username!"
 msgstr "請輸入您的使用者名稱!"
 
-#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+#: src/views/install/Install.vue:110
+#: src/views/system/Backup/SystemRestore.vue:10
 msgid "Please log in."
 msgstr "請登入。"
 
@@ -3379,7 +3380,7 @@ msgstr "正在重新啟動"
 msgid "Restore completed successfully"
 msgstr "恢復已完成"
 
-#: src/views/other/Install.vue:190
+#: src/views/install/Install.vue:190
 msgid "Restore from Backup"
 msgstr "從備份中恢復"
 
@@ -3892,7 +3893,8 @@ msgstr "系統初始使用者"
 msgid "System Restore"
 msgstr "系統恢復"
 
-#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+#: src/views/install/Install.vue:106
+#: src/views/system/Backup/SystemRestore.vue:6
 msgid "System restored successfully."
 msgstr "系統已成功恢復。"
 
@@ -3922,7 +3924,7 @@ msgstr ""
 "網域憑證將在 30 分鐘內接受檢查,如果自上次簽發以來已超過 1 週或您在設定中設定"
 "的時間,憑證將會自動更新。"
 
-#: src/views/other/Install.vue:80
+#: src/views/install/Install.vue:80
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "檔名不能包含以下字元:%{c}"
 
@@ -4312,7 +4314,7 @@ msgstr "使用者未啟用 OTP 作為雙重身份驗證 (2FA)"
 msgid "Username"
 msgstr "使用者名稱"
 
-#: src/views/other/Install.vue:148
+#: src/views/install/Install.vue:148
 msgid "Username (*)"
 msgstr "使用者名稱 (*)"
 

+ 1 - 1
app/src/routes/modules/auth.ts

@@ -4,7 +4,7 @@ export const authRoutes: RouteRecordRaw[] = [
   {
     path: '/install',
     name: 'Install',
-    component: () => import('@/views/other/Install.vue'),
+    component: () => import('@/views/install/Install.vue'),
     meta: { name: () => $gettext('Install'), noAuth: true },
   },
   {

+ 0 - 0
app/src/views/other/Install.vue → app/src/views/install/Install.vue


+ 106 - 0
cmd/lego_config/main.go

@@ -0,0 +1,106 @@
+package main
+
+import (
+	"archive/zip"
+	"fmt"
+	"io"
+	"net/http"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/spf13/afero"
+	"github.com/spf13/afero/zipfs"
+	"github.com/uozi-tech/cosy/logger"
+)
+
+const (
+	repoURL   = "https://github.com/go-acme/lego/archive/refs/heads/master.zip"
+	zipFile   = "lego-master.zip"
+	configDir = "internal/cert/config"
+)
+
+func main() {
+	logger.Init("release")
+
+	if err := downloadAndExtract(); err != nil {
+		logger.Errorf("Error downloading and extracting: %v\n", err)
+		os.Exit(1)
+	}
+
+	if err := copyTomlFiles(); err != nil {
+		logger.Errorf("Error copying TOML files: %v\n", err)
+		os.Exit(1)
+	}
+
+	logger.Info("Successfully updated provider config")
+}
+
+// downloadAndExtract downloads the lego repository and extracts it
+func downloadAndExtract() error {
+	// Download the file
+	logger.Info("Downloading lego repository...")
+	resp, err := http.Get(repoURL)
+	if err != nil {
+		return err
+	}
+	defer resp.Body.Close()
+
+	if resp.StatusCode != http.StatusOK {
+		return fmt.Errorf("bad status: %s", resp.Status)
+	}
+
+	// Create the file
+	out, err := os.Create(zipFile)
+	if err != nil {
+		return err
+	}
+	defer out.Close()
+
+	// Write the body to file
+	_, err = io.Copy(out, resp.Body)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func copyTomlFiles() error {
+	// Open the zip file
+	logger.Info("Extracting files...")
+	zipReader, err := zip.OpenReader(zipFile)
+	if err != nil {
+		return err
+	}
+	defer zipReader.Close()
+
+	// Extract files
+	zfs := zipfs.New(&zipReader.Reader)
+	afero.Walk(zfs, "./lego-master/providers", func(path string, info os.FileInfo, err error) error {
+		// Skip directories
+		if info.IsDir() {
+			return nil
+		}
+		if !strings.HasSuffix(info.Name(), ".toml") {
+			return nil
+		}
+		if err != nil {
+			return err
+		}
+		data, err := afero.ReadFile(zfs, path)
+		if err != nil {
+			return err
+		}
+		// Write to the destination file
+		destPath := filepath.Join(configDir, info.Name())
+		if err := os.WriteFile(destPath, data, 0644); err != nil {
+			return err
+		}
+		logger.Infof("Copied: %s", info.Name())
+		return nil
+	})
+
+	// Clean up zip file
+	return os.Remove(zipFile)
+}

+ 3 - 0
gen.sh

@@ -12,3 +12,6 @@ go run cmd/notification/generate.go
 
 # generate external notifier configs
 go run cmd/external_notifier/generate.go
+
+# generate lego config
+go run cmd/lego_config/main.go

+ 28 - 26
go.mod

@@ -15,7 +15,7 @@ require (
 	github.com/gin-contrib/pprof v1.5.3
 	github.com/gin-contrib/static v1.1.5
 	github.com/gin-gonic/gin v1.10.0
-	github.com/go-acme/lego/v4 v4.22.2
+	github.com/go-acme/lego/v4 v4.23.1
 	github.com/go-co-op/gocron/v2 v2.16.1
 	github.com/go-gormigrate/gormigrate/v2 v2.1.4
 	github.com/go-playground/validator/v10 v10.26.0
@@ -33,7 +33,7 @@ require (
 	github.com/pquerna/otp v1.4.0
 	github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
 	github.com/samber/lo v1.49.1
-	github.com/sashabaranov/go-openai v1.38.1
+	github.com/sashabaranov/go-openai v1.38.2
 	github.com/shirou/gopsutil/v4 v4.25.3
 	github.com/spf13/cast v1.7.1
 	github.com/stretchr/testify v1.10.0
@@ -52,7 +52,7 @@ require (
 
 require (
 	aead.dev/minisign v0.3.0 // indirect
-	cloud.google.com/go/auth v0.15.0 // indirect
+	cloud.google.com/go/auth v0.16.0 // indirect
 	cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
 	cloud.google.com/go/compute/metadata v0.6.0 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
@@ -77,10 +77,10 @@ require (
 	github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect
 	github.com/StackExchange/wmi v1.2.1 // indirect
 	github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect
-	github.com/aliyun/alibaba-cloud-sdk-go v1.63.104 // indirect
+	github.com/aliyun/alibaba-cloud-sdk-go v1.63.105 // indirect
 	github.com/aws/aws-sdk-go-v2 v1.36.3 // indirect
-	github.com/aws/aws-sdk-go-v2/config v1.29.13 // indirect
-	github.com/aws/aws-sdk-go-v2/credentials v1.17.66 // indirect
+	github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect
+	github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
@@ -88,11 +88,12 @@ require (
 	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
 	github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.2 // indirect
-	github.com/aws/aws-sdk-go-v2/service/route53 v1.51.0 // indirect
+	github.com/aws/aws-sdk-go-v2/service/route53 v1.51.1 // indirect
 	github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
 	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
-	github.com/aws/aws-sdk-go-v2/service/sts v1.33.18 // indirect
+	github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
 	github.com/aws/smithy-go v1.22.3 // indirect
+	github.com/baidubce/bce-sdk-go v0.9.223 // indirect
 	github.com/benbjohnson/clock v1.3.5 // indirect
 	github.com/blinkbean/dingtalk v1.1.3 // indirect
 	github.com/boombuler/barcode v1.0.2 // indirect
@@ -101,7 +102,7 @@ require (
 	github.com/bytedance/sonic/loader v0.2.4 // indirect
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/cespare/xxhash/v2 v2.3.0 // indirect
-	github.com/civo/civogo v0.3.96 // indirect
+	github.com/civo/civogo v0.3.98 // indirect
 	github.com/cloudflare/cloudflare-go v0.115.0 // indirect
 	github.com/cloudwego/base64x v0.1.5 // indirect
 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
@@ -109,7 +110,7 @@ require (
 	github.com/dimchansky/utfbom v1.1.1 // indirect
 	github.com/dnsimple/dnsimple-go v1.7.0 // indirect
 	github.com/ebitengine/purego v0.8.2 // indirect
-	github.com/exoscale/egoscale/v3 v3.1.13 // indirect
+	github.com/exoscale/egoscale/v3 v3.1.14 // indirect
 	github.com/fatih/color v1.18.0 // indirect
 	github.com/fatih/structs v1.1.0 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -119,7 +120,7 @@ require (
 	github.com/gin-contrib/sse v1.1.0 // indirect
 	github.com/go-errors/errors v1.5.1 // indirect
 	github.com/go-jose/go-jose/v4 v4.1.0 // indirect
-	github.com/go-lark/lark v1.15.1 // indirect
+	github.com/go-lark/lark v1.16.0 // indirect
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-ole/go-ole v1.3.0 // indirect
@@ -147,10 +148,11 @@ require (
 	github.com/hashicorp/go-multierror v1.1.1 // indirect
 	github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
 	github.com/hashicorp/go-uuid v1.0.3 // indirect
-	github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.143 // indirect
+	github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.145 // indirect
 	github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect
 	github.com/imega/luaformatter v0.0.0-20211025140405-86b0a68d6bef // indirect
 	github.com/infobloxopen/infoblox-go-client v1.1.1 // indirect
+	github.com/infobloxopen/infoblox-go-client/v2 v2.9.0 // indirect
 	github.com/itchyny/timefmt-go v0.1.6 // indirect
 	github.com/jackc/pgio v1.0.0 // indirect
 	github.com/jackc/pgpassfile v1.0.0 // indirect
@@ -177,7 +179,7 @@ require (
 	github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
 	github.com/mattn/go-colorable v0.1.14 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
-	github.com/mattn/go-sqlite3 v1.14.27 // indirect
+	github.com/mattn/go-sqlite3 v1.14.28 // indirect
 	github.com/miekg/dns v1.1.65 // indirect
 	github.com/mimuret/golang-iij-dpf v0.9.1 // indirect
 	github.com/mitchellh/go-homedir v1.1.0 // indirect
@@ -191,14 +193,14 @@ require (
 	github.com/nrdcg/dnspod-go v0.4.0 // indirect
 	github.com/nrdcg/freemyip v0.3.0 // indirect
 	github.com/nrdcg/goacmedns v0.2.0 // indirect
-	github.com/nrdcg/goinwx v0.10.0 // indirect
+	github.com/nrdcg/goinwx v0.11.0 // indirect
 	github.com/nrdcg/mailinabox v0.2.0 // indirect
 	github.com/nrdcg/namesilo v0.2.1 // indirect
 	github.com/nrdcg/nodion v0.1.0 // indirect
 	github.com/nrdcg/porkbun v0.4.0 // indirect
 	github.com/nzdjb/go-metaname v1.0.0 // indirect
 	github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
-	github.com/oracle/oci-go-sdk/v65 v65.89.0 // indirect
+	github.com/oracle/oci-go-sdk/v65 v65.89.1 // indirect
 	github.com/ovh/go-ovh v1.7.0 // indirect
 	github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
 	github.com/pelletier/go-toml/v2 v2.2.4 // indirect
@@ -231,10 +233,10 @@ require (
 	github.com/stretchr/objx v0.5.2 // indirect
 	github.com/subosito/gotenv v1.6.0 // indirect
 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1140 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145 // indirect
 	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1136 // indirect
-	github.com/timtadh/data-structures v0.5.3 // indirect
-	github.com/timtadh/lexmachine v0.2.2 // indirect
+	github.com/timtadh/data-structures v0.6.2 // indirect
+	github.com/timtadh/lexmachine v0.2.3 // 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
@@ -245,11 +247,11 @@ require (
 	github.com/uozi-tech/cosy-driver-mysql v0.2.2 // indirect
 	github.com/uozi-tech/cosy-driver-postgres v0.2.1 // indirect
 	github.com/vinyldns/go-vinyldns v0.9.16 // indirect
-	github.com/volcengine/volc-sdk-golang v1.0.202 // indirect
+	github.com/volcengine/volc-sdk-golang v1.0.203 // indirect
 	github.com/vultr/govultr/v3 v3.19.1 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
-	github.com/yandex-cloud/go-genproto v0.0.0-20250325081613-cd85d9003939 // indirect
-	github.com/yandex-cloud/go-sdk v0.0.0-20250325134853-dcb34ef70818 // indirect
+	github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c // indirect
+	github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	go.mongodb.org/mongo-driver v1.17.3 // indirect
@@ -270,10 +272,10 @@ require (
 	golang.org/x/text v0.24.0 // indirect
 	golang.org/x/time v0.11.0 // indirect
 	golang.org/x/tools v0.32.0 // indirect
-	google.golang.org/api v0.228.0 // indirect
-	google.golang.org/genproto v0.0.0-20250407143221-ac9807e6c755 // indirect
-	google.golang.org/genproto/googleapis/api v0.0.0-20250407143221-ac9807e6c755 // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20250407143221-ac9807e6c755 // indirect
+	google.golang.org/api v0.229.0 // indirect
+	google.golang.org/genproto v0.0.0-20250414145226-207652e42e2e // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e // indirect
 	google.golang.org/grpc v1.71.1 // indirect
 	google.golang.org/protobuf v1.36.6 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
@@ -291,7 +293,7 @@ require (
 	k8s.io/klog/v2 v2.130.1 // indirect
 	k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect
 	sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
-	sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
+	sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
 	sigs.k8s.io/yaml v1.4.0 // indirect
 )
 

+ 59 - 0
go.sum

@@ -102,6 +102,8 @@ cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM
 cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E=
 cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps=
 cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8=
+cloud.google.com/go/auth v0.16.0 h1:Pd8P1s9WkcrBE2n/PhAwKsdrR35V3Sg2II9B+ndM3CU=
+cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI=
 cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
 cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
 cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
@@ -700,6 +702,8 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.104 h1:/6jF6rhmKZzvZZhzFXWqATazSKL5OSv7p+8PfoT6MG0=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.104/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
+github.com/aliyun/alibaba-cloud-sdk-go v1.63.105 h1:Bj8SsBTGElGniuL83+VqfHnxZIPc7n+rzpwDZIB4rZg=
+github.com/aliyun/alibaba-cloud-sdk-go v1.63.105/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
 github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
@@ -718,8 +722,12 @@ github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38y
 github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
 github.com/aws/aws-sdk-go-v2/config v1.29.13 h1:RgdPqWoE8nPpIekpVpDJsBckbqT4Liiaq9f35pbTh1Y=
 github.com/aws/aws-sdk-go-v2/config v1.29.13/go.mod h1:NI28qs/IOUIRhsR7GQ/JdexoqRN9tDxkIrYZq0SOF44=
+github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM=
+github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.66 h1:aKpEKaTy6n4CEJeYI1MNj97oSDLi4xro3UzQfwf5RWE=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.66/go.mod h1:xQ5SusDmHb/fy55wU0QqTy0yNfLqxzec59YcsRZB+rI=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
@@ -737,15 +745,21 @@ github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.2 h1:Bz0MltpmIFP2EBYADc17VH
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.2/go.mod h1:Qy22QnQSdHbZwMZrarsWZBIuK51isPlkD+Z4sztxX0o=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.51.0 h1:pK3YJIgOzYqctprqQ67kGSjeL+77r9Ue/4/gBonsGNc=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.51.0/go.mod h1:kGYOjvTa0Vw0qxrqrOLut1vMnui6qLxqv/SX3vYeM8Y=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.51.1 h1:41HrH51fydStW2Tah74zkqZlJfyx4gXeuGOdsIFuckY=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.51.1/go.mod h1:kGYOjvTa0Vw0qxrqrOLut1vMnui6qLxqv/SX3vYeM8Y=
 github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8=
 github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
 github.com/aws/aws-sdk-go-v2/service/sts v1.33.18 h1:xz7WvTMfSStb9Y8NpCT82FXLNC3QasqBfuAFHY4Pk5g=
 github.com/aws/aws-sdk-go-v2/service/sts v1.33.18/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
+github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY=
+github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
 github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
 github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k=
 github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
+github.com/baidubce/bce-sdk-go v0.9.223 h1:vvDeIemf7ePPP59nLHCntQ/vS++ok2HKbRPgmz1VZKU=
+github.com/baidubce/bce-sdk-go v0.9.223/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg=
 github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
 github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -786,6 +800,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=
@@ -799,6 +814,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D
 github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
 github.com/civo/civogo v0.3.96 h1:9R3yZS3B8B0oAqIlNDnMvsONk0mqZUkHREd0EH6HRIc=
 github.com/civo/civogo v0.3.96/go.mod h1:LaEbkszc+9nXSh4YNG0sYXFGYqdQFmXXzQg0gESs2hc=
+github.com/civo/civogo v0.3.98 h1:FEbB5oxCcHeHUK3fJODxVoMQzhpLV9Jtb7bezANTY5c=
+github.com/civo/civogo v0.3.98/go.mod h1:LaEbkszc+9nXSh4YNG0sYXFGYqdQFmXXzQg0gESs2hc=
 github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cloudflare/cloudflare-go v0.115.0 h1:84/dxeeXweCc0PN5Cto44iTA8AkG1fyT11yPO5ZB7sM=
@@ -880,6 +897,8 @@ github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0+
 github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=
 github.com/exoscale/egoscale/v3 v3.1.13 h1:CAGC7QRjp2AiGj01agsSD0VKCp4OZmW5f51vV2IguNQ=
 github.com/exoscale/egoscale/v3 v3.1.13/go.mod h1:t9+MpSEam94na48O/xgvvPFpQPRiwZ3kBN4/UuQtKco=
+github.com/exoscale/egoscale/v3 v3.1.14 h1:ux1wOtx4561ZJM1sF2AFEjEY6HRj/RbtglKvZxh2iqg=
+github.com/exoscale/egoscale/v3 v3.1.14/go.mod h1:t9+MpSEam94na48O/xgvvPFpQPRiwZ3kBN4/UuQtKco=
 github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
 github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
@@ -921,6 +940,8 @@ github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
 github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
 github.com/go-acme/lego/v4 v4.22.2 h1:ck+HllWrV/rZGeYohsKQ5iKNnU/WAZxwOdiu6cxky+0=
 github.com/go-acme/lego/v4 v4.22.2/go.mod h1:E2FndyI3Ekv0usNJt46mFb9LVpV/XBYT+4E3tz02Tzo=
+github.com/go-acme/lego/v4 v4.23.1 h1:lZ5fGtGESA2L9FB8dNTvrQUq3/X4QOb8ExkKyY7LSV4=
+github.com/go-acme/lego/v4 v4.23.1/go.mod h1:7UMVR7oQbIYw6V7mTgGwi4Er7B6Ww0c+c8feiBM0EgI=
 github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s=
 github.com/go-co-op/gocron/v2 v2.16.1 h1:ux/5zxVRveCaCuTtNI3DiOk581KC1KpJbpJFYUEVYwo=
 github.com/go-co-op/gocron/v2 v2.16.1/go.mod h1:opexeOFy5BplhsKdA7bzY9zeYih8I8/WNJ4arTIFPVc=
@@ -946,6 +967,8 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb
 github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
 github.com/go-lark/lark v1.15.1 h1:fo6PQKBJht/71N9Zn3/xjknOYx0TmdVuP+VP8NrUCsI=
 github.com/go-lark/lark v1.15.1/go.mod h1:6ltbSztPZRT6IaO9ZIQyVaY5pVp/KeMizDYtfZkU+vM=
+github.com/go-lark/lark v1.16.0 h1:U6BwkLM9wrZedSM7cIiMofganr8PCvJN+M75w2lf2Gg=
+github.com/go-lark/lark v1.16.0/go.mod h1:6ltbSztPZRT6IaO9ZIQyVaY5pVp/KeMizDYtfZkU+vM=
 github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
 github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=
 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
@@ -1225,6 +1248,8 @@ github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfE
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.143 h1:V+82d6sqyEnG/XtIhC21zqVAMc1hiah3LQgTKZRfMtg=
 github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.143/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY=
+github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.145 h1:dpyJXRzkOZv+xfoPYSlgFdEYrN+nXPIs/Dabu3KpiWA=
+github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.145/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY=
 github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo=
 github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@@ -1238,6 +1263,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
 github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
 github.com/infobloxopen/infoblox-go-client v1.1.1 h1:728A6LbLjptj/7kZjHyIxQnm768PWHfGFm0HH8FnbtU=
 github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI=
+github.com/infobloxopen/infoblox-go-client/v2 v2.9.0 h1:wS8kTlQVeVbrepeY83s9X+XdSa6Qah5KO+tdW+zRQXU=
+github.com/infobloxopen/infoblox-go-client/v2 v2.9.0/go.mod h1:NeNJpz09efw/edzqkVivGv1bWqBXTomqYBRFbP+XBqg=
 github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q=
 github.com/itchyny/timefmt-go v0.1.6/go.mod h1:RRDZYC5s9ErkjQvTvvU7keJjxUYzIISJGxm9/mAERQg=
 github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
@@ -1432,6 +1459,8 @@ github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S
 github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mattn/go-sqlite3 v1.14.27 h1:drZCnuvf37yPfs95E5jd9s3XhdVWLal+6BOK6qrv6IU=
 github.com/mattn/go-sqlite3 v1.14.27/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
+github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A=
+github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
@@ -1508,6 +1537,8 @@ github.com/nrdcg/goacmedns v0.2.0 h1:ADMbThobzEMnr6kg2ohs4KGa3LFqmgiBA22/6jUWJR0
 github.com/nrdcg/goacmedns v0.2.0/go.mod h1:T5o6+xvSLrQpugmwHvrSNkzWht0UGAwj2ACBMhh73Cg=
 github.com/nrdcg/goinwx v0.10.0 h1:6W630bjDxQD6OuXKqrFRYVpTt0G/9GXXm3CeOrN0zJM=
 github.com/nrdcg/goinwx v0.10.0/go.mod h1:mnMSTi7CXBu2io4DzdOBoGFA1XclD0sEPWJaDhNgkA4=
+github.com/nrdcg/goinwx v0.11.0 h1:GER0SE3POub7rxARt3Y3jRy1OON1hwF1LRxHz5xsFBw=
+github.com/nrdcg/goinwx v0.11.0/go.mod h1:0BXSC0FxVtU4aTjX0Zw3x0DK32tjugLzeNIAGtwXvPQ=
 github.com/nrdcg/mailinabox v0.2.0 h1:IKq8mfKiVwNW2hQii/ng1dJ4yYMMv3HAP3fMFIq2CFk=
 github.com/nrdcg/mailinabox v0.2.0/go.mod h1:0yxqeYOiGyxAu7Sb94eMxHPIOsPYXAjTeA9ZhePhGnc=
 github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg=
@@ -1548,6 +1579,8 @@ github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mo
 github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE=
 github.com/oracle/oci-go-sdk/v65 v65.89.0 h1:Y2NRdvllV++3ebqc8v1bg7w9W1ktiMONKvW9k/bqk0M=
 github.com/oracle/oci-go-sdk/v65 v65.89.0/go.mod h1:u6XRPsw9tPziBh76K7GrrRXPa8P8W3BQeqJ6ZZt9VLA=
+github.com/oracle/oci-go-sdk/v65 v65.89.1 h1:8sVjxYPNQ83yqUgZKkdeUA0CnSodmL1Bme2oxq8gyKg=
+github.com/oracle/oci-go-sdk/v65 v65.89.1/go.mod h1:u6XRPsw9tPziBh76K7GrrRXPa8P8W3BQeqJ6ZZt9VLA=
 github.com/ovh/go-ovh v1.7.0 h1:V14nF7FwDjQrZt9g7jzcvAAQ3HN6DNShRFRMC3jLoPw=
 github.com/ovh/go-ovh v1.7.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -1661,6 +1694,8 @@ github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
 github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
 github.com/sashabaranov/go-openai v1.38.1 h1:TtZabbFQZa1nEni/IhVtDF/WQjVqDgd+cWR5OeddzF8=
 github.com/sashabaranov/go-openai v1.38.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
+github.com/sashabaranov/go-openai v1.38.2 h1:akrssjj+6DY3lWuDwHv6cBvJ8Z+FZDM9XEaaYFt0Auo=
+github.com/sashabaranov/go-openai v1.38.2/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk=
@@ -1765,12 +1800,20 @@ github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1136/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1140 h1:F/vuesfLQmJhBZTHYOktz8IVWTs1nHwZYh74/H64uEs=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1140/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145 h1:DETyir/MtG+GLOD0OatzjrQTTXRguFSJo1ZtPXtbIQw=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1136 h1:kMIdSU5IvpOROh27ToVQ3hlm6ym3lCRs9tnGCOBoZqk=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1136/go.mod h1:FpyIz3mymKaExVs6Fz27kxDBS42jqZn7vbACtxdeEH4=
 github.com/timtadh/data-structures v0.5.3 h1:F2tEjoG9qWIyUjbvXVgJqEOGJPMIiYn7U5W5mE+i/vQ=
 github.com/timtadh/data-structures v0.5.3/go.mod h1:9R4XODhJ8JdWFEI8P/HJKqxuJctfBQw6fDibMQny2oU=
+github.com/timtadh/data-structures v0.6.1/go.mod h1:uYUnI1cQi/5yMCc7s23I+x8Mn8BCMf4WgK+7/4QSEk4=
+github.com/timtadh/data-structures v0.6.2 h1:zybDnU5NLjJ7WKMDJpvVwczQuf1wSLBgdRHZ9O4AqJ0=
+github.com/timtadh/data-structures v0.6.2/go.mod h1:uYUnI1cQi/5yMCc7s23I+x8Mn8BCMf4WgK+7/4QSEk4=
+github.com/timtadh/getopt v1.0.0/go.mod h1:L3EL6YN2G0eIAhYBo9b7SB9d/kEQmdnwthIlMJfj210=
 github.com/timtadh/lexmachine v0.2.2 h1:g55RnjdYazm5wnKv59pwFcBJHOyvTPfDEoz21s4PHmY=
 github.com/timtadh/lexmachine v0.2.2/go.mod h1:GBJvD5OAfRn/gnp92zb9KTgHLB7akKyxmVivoYCcjQI=
+github.com/timtadh/lexmachine v0.2.3 h1:ZqlfHnfMcAygtbNM5Gv7jQf8hmM8LfVzDjfCrq235NQ=
+github.com/timtadh/lexmachine v0.2.3/go.mod h1:oK1NW+93fQSIF6s+J6sXBFWsCPCFbNmrwKV1i0aqvW0=
 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=
@@ -1808,6 +1851,8 @@ github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4
 github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q=
 github.com/volcengine/volc-sdk-golang v1.0.202 h1:8H4Rq7jWfrKdW9p3j+ZyvGvVe796AeVCpqEHb9zdBLo=
 github.com/volcengine/volc-sdk-golang v1.0.202/go.mod h1:stZX+EPgv1vF4nZwOlEe8iGcriUPRBKX8zA19gXycOQ=
+github.com/volcengine/volc-sdk-golang v1.0.203 h1:y4zZEjKp6nz3UK8Tb/qdz9tvB915KLO6nc1WNME0Zb8=
+github.com/volcengine/volc-sdk-golang v1.0.203/go.mod h1:stZX+EPgv1vF4nZwOlEe8iGcriUPRBKX8zA19gXycOQ=
 github.com/vultr/govultr/v3 v3.19.1 h1:31rOP5Tz40AOc8h6Ws4ryzqAniUBffgRhy9uMG/EFvs=
 github.com/vultr/govultr/v3 v3.19.1/go.mod h1:q34Wd76upKmf+vxFMgaNMH3A8BbsPBmSYZUGC8oZa5w=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
@@ -1823,8 +1868,12 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/yandex-cloud/go-genproto v0.0.0-20250325081613-cd85d9003939 h1:o1L5uP1z/IKGQpfzEqSmqGtFDIKDoFAvZuqpzySIVFc=
 github.com/yandex-cloud/go-genproto v0.0.0-20250325081613-cd85d9003939/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
+github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c h1:AHeznzpDGX4AJKA1m0oKFtbxCoPidfNA8LJFl5OxIEQ=
+github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
 github.com/yandex-cloud/go-sdk v0.0.0-20250325134853-dcb34ef70818 h1:EgfskqIEIv/f5vx/guwfkakNwy5H9Mm+OC17zS1ofus=
 github.com/yandex-cloud/go-sdk v0.0.0-20250325134853-dcb34ef70818/go.mod h1:U2Cc0SZ8kQHcL4ffnfNN78bdSybVP2pQNq0oJfFwvM8=
+github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7 h1:ydVq9gVDCyavCMzSoVQlpeaRiYlesMUwEW9s/ALFQXE=
+github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7/go.mod h1:aBC6JVH0vdnoTnHQLRWkwr5f+fmXq8f8qYSs1Vt0HBQ=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
 github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
@@ -2467,6 +2516,8 @@ google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45
 google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms=
 google.golang.org/api v0.228.0 h1:X2DJ/uoWGnY5obVjewbp8icSL5U4FzuCfy9OjbLSnLs=
 google.golang.org/api v0.228.0/go.mod h1:wNvRS1Pbe8r4+IfBIniV8fwCpGwTrYa+kMUDiC5z5a4=
+google.golang.org/api v0.229.0 h1:p98ymMtqeJ5i3lIBMj5MpR9kzIIgzpHHh8vQ+vgAzx8=
+google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -2609,10 +2660,16 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl
 google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
 google.golang.org/genproto v0.0.0-20250407143221-ac9807e6c755 h1:bldQzRMfyYSvYsP0oCgOIsBryyDN2Ci7HxB+rx3L7Qw=
 google.golang.org/genproto v0.0.0-20250407143221-ac9807e6c755/go.mod h1:qD4k1RhYfNmRjqaHJxKLG/HRtqbXVclhjop2mPlxGwA=
+google.golang.org/genproto v0.0.0-20250414145226-207652e42e2e h1:mYHFv3iX85YMwhGSaZS4xpkM8WQDmJUovz7yqsFrwDk=
+google.golang.org/genproto v0.0.0-20250414145226-207652e42e2e/go.mod h1:TQT1YpH/rlDCS5+EuFaqPIMqDfuNMFR1OI8EcZJGgAk=
 google.golang.org/genproto/googleapis/api v0.0.0-20250407143221-ac9807e6c755 h1:AMLTAunltONNuzWgVPZXrjLWtXpsG6A3yLLPEoJ/IjU=
 google.golang.org/genproto/googleapis/api v0.0.0-20250407143221-ac9807e6c755/go.mod h1:2R6XrVC8Oc08GlNh8ujEpc7HkLiEZ16QeY7FxIs20ac=
+google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e h1:UdXH7Kzbj+Vzastr5nVfccbmFsmYNygVLSPk1pEfDoY=
+google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e/go.mod h1:085qFyf2+XaZlRdCgKNCIZ3afY2p4HHZdoIRpId8F4A=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250407143221-ac9807e6c755 h1:TwXJCGVREgQ/cl18iY0Z4wJCTL/GmW+Um2oSwZiZPnc=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250407143221-ac9807e6c755/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e h1:ztQaXfzEXTmCBvbtWYRhJxW+0iJcz2qXfd38/e9l7bA=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -2808,6 +2865,8 @@ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh
 sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc=
 sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
+sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI=
+sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
 sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
 sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

+ 25 - 0
internal/cert/config/active24.toml

@@ -0,0 +1,25 @@
+Name = "Active24"
+Description = ''''''
+URL = "https://www.active24.cz"
+Code = "active24"
+Since = "v4.23.0"
+
+Example = '''
+ACTIVE24_API_KEY="xxx" \
+ACTIVE24_SECRET="yyy" \
+lego --email you@example.com --dns active24 -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    ACTIVE24_API_KEY = "API key"
+    ACTIVE24_SECRET = "Secret"
+  [Configuration.Additional]
+    ACTIVE24_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    ACTIVE24_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    ACTIVE24_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+    ACTIVE24_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://rest.active24.cz/v2/docs"
+  APIv1 = "https://rest.active24.cz/docs/v1.service#services"

+ 24 - 0
internal/cert/config/axelname.toml

@@ -0,0 +1,24 @@
+Name = "Axelname"
+Description = ''''''
+URL = "https://axelname.ru"
+Code = "axelname"
+Since = "v4.23.0"
+
+Example = '''
+AXELNAME_NICKNAME="yyy" \
+AXELNAME_TOKEN="xxx" \
+lego --email you@example.com --dns axelname -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    AXELNAME_NICKNAME = "Account nickname"
+    AXELNAME_TOKEN = "API token"
+  [Configuration.Additional]
+    AXELNAME_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    AXELNAME_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    AXELNAME_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+    AXELNAME_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://axelname.ru/static/content/files/axelname_api_rest_lite.pdf"

+ 24 - 0
internal/cert/config/baiducloud.toml

@@ -0,0 +1,24 @@
+Name = "Baidu Cloud"
+Description = ''''''
+URL = "https://cloud.baidu.com"
+Code = "baiducloud"
+Since = "v4.23.0"
+
+Example = '''
+BAIDUCLOUD_ACCESS_KEY_ID="xxx" \
+BAIDUCLOUD_SECRET_ACCESS_KEY="yyy" \
+lego --email you@example.com --dns baiducloud -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    BAIDUCLOUD_ACCESS_KEY_ID = "Access key"
+    BAIDUCLOUD_SECRET_ACCESS_KEY = "Secret access key"
+  [Configuration.Additional]
+    BAIDUCLOUD_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    BAIDUCLOUD_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    BAIDUCLOUD_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+
+[Links]
+  API = "https://cloud.baidu.com/doc/DNS/s/El4s7lssr"
+  GoClient = "https://github.com/baidubce/bce-sdk-go"

+ 24 - 0
internal/cert/config/bookmyname.toml

@@ -0,0 +1,24 @@
+Name = "BookMyName"
+Description = ''''''
+URL = "https://www.bookmyname.com/"
+Code = "bookmyname"
+Since = "v4.23.0"
+
+Example = '''
+BOOKMYNAME_USERNAME="xxx" \
+BOOKMYNAME_PASSWORD="yyy" \
+lego --email you@example.com --dns bookmyname -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    BOOKMYNAME_USERNAME = "Username"
+    BOOKMYNAME_PASSWORD = "Password"
+  [Configuration.Additional]
+    BOOKMYNAME_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    BOOKMYNAME_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    BOOKMYNAME_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+    BOOKMYNAME_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://fr.faqs.bookmyname.com/frfaqs/dyndns"

+ 1 - 0
internal/cert/config/cloudflare.toml

@@ -73,6 +73,7 @@ It follows the principle of least privilege and limits the possible damage, shou
     CLOUDFLARE_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 120)"
     CLOUDFLARE_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
     CLOUDFLARE_HTTP_TIMEOUT = "API request timeout in seconds (Default: )"
+    CLOUDFLARE_BASE_URL = "API base URL (Default: https://api.cloudflare.com/client/v4)"
 
 [Links]
   API = "https://api.cloudflare.com/"

+ 2 - 0
internal/cert/config/edgedns.toml

@@ -42,6 +42,7 @@ See also:
 - [.edgerc Format](https://developer.akamai.com/legacy/introduction/Conf_Client.html#edgercformat)
 - [API Client Authentication](https://developer.akamai.com/legacy/introduction/Client_Auth.html)
 - [Config from Env](https://github.com/akamai/AkamaiOPEN-edgegrid-golang/blob/master/pkg/edgegrid/config.go#L118)
+- [Manage many accounts](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client)
 '''
 
 [Configuration]
@@ -53,6 +54,7 @@ See also:
     AKAMAI_EDGERC = "Path to the .edgerc file, managed by the Akamai EdgeGrid client"
     AKAMAI_EDGERC_SECTION = "Configuration section, managed by the Akamai EdgeGrid client"
   [Configuration.Additional]
+    AKAMAI_ACCOUNT_SWITCH_KEY = "Target account ID when the DNS zone and credentials belong to different accounts"
     AKAMAI_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 15)"
     AKAMAI_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 180)"
     AKAMAI_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"

+ 27 - 0
internal/cert/config/f5xc.toml

@@ -0,0 +1,27 @@
+Name = "F5 XC"
+Description = ''''''
+URL = "https://www.f5.com/products/distributed-cloud-services"
+Code = "f5xc"
+Since = "v4.23.0"
+
+Example = '''
+F5XC_API_TOKEN="xxx" \
+F5XC_TENANT_NAME="yyy" \
+F5XC_GROUP_NAME="zzz" \
+lego --email you@example.com --dns f5xc -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    F5XC_API_TOKEN = "API token"
+    F5XC_TENANT_NAME = "XC Tenant shortname"
+    F5XC_GROUP_NAME = "Group name"
+  [Configuration.Additional]
+    F5XC_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    F5XC_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    F5XC_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+    F5XC_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://docs.cloud.f5.com/docs-v2/api/dns-zone-rrset"
+  Documentation = "https://my.f5.com/manage/s/article/K000147937"

+ 1 - 0
internal/cert/config/infoblox.toml

@@ -25,6 +25,7 @@ When creating an API's user ensure it has the proper permissions for the view yo
     INFOBLOX_WAPI_VERSION = "The version of WAPI being used  (Default: 2.11)"
     INFOBLOX_PORT = "The port for the infoblox grid manager  (Default: 443)"
     INFOBLOX_SSL_VERIFY = "Whether or not to verify the TLS certificate  (Default: true)"
+    INFOBLOX_CA_CERTIFICATE = "The path to the CA certificate (PEM encoded)"
     INFOBLOX_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     INFOBLOX_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
     INFOBLOX_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"

+ 22 - 0
internal/cert/config/metaregistrar.toml

@@ -0,0 +1,22 @@
+Name = "Metaregistrar"
+Description = ''''''
+URL = "https://metaregistrar.com/"
+Code = "metaregistrar"
+Since = "v4.23.0"
+
+Example = '''
+METAREGISTRAR_API_TOKEN="xxxxxxxxxxxxxxxxxxxxx" \
+lego --email you@example.com --dns metaregistrar -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    METAREGISTRAR_API_TOKEN = "The API token"
+  [Configuration.Additional]
+    METAREGISTRAR_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    METAREGISTRAR_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    METAREGISTRAR_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
+    METAREGISTRAR_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://metaregistrar.dev/docu/metaapi/"

+ 1 - 0
internal/cert/config/porkbun.toml

@@ -1,5 +1,6 @@
 Name = "Porkbun"
 Description = ''''''
+# This URL is NOT the API URL.
 URL = "https://porkbun.com/"
 Code = "porkbun"
 Since = "v4.4.0"

+ 1 - 0
internal/cert/config/route53.toml

@@ -133,6 +133,7 @@ Replace `Z11111112222222333333` with your hosted zone ID and `example.com` with
     AWS_EXTERNAL_ID = "Managed by STS AssumeRole API operation (`AWS_EXTERNAL_ID_FILE` is not supported)"
     AWS_WAIT_FOR_RECORD_SETS_CHANGED = "Wait for changes to be INSYNC (it can be unstable)"
   [Configuration.Additional]
+    AWS_PRIVATE_ZONE = "Set to true to use private zones only (default: use public zones only)"
     AWS_SHARED_CREDENTIALS_FILE = "Managed by the AWS client. Shared credentials file."
     AWS_MAX_RETRIES = "The number of maximum returns the service will use to make an individual API request"
     AWS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 4)"

+ 2 - 1
internal/cert/config/websupport.toml

@@ -22,4 +22,5 @@ lego --email you@example.com --dns websupport -d '*.example.com' -d example.com
     WEBSUPPORT_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
 
 [Links]
-  API = "https://rest.websupport.sk/docs/v1.zone"
+  API = "https://rest.websupport.sk/v2/docs"
+  APIv1 = "https://rest.websupport.sk/docs/v1.service#services"

+ 0 - 43
lego-config.sh

@@ -1,43 +0,0 @@
-#!/bin/bash
-
-# Download go-acme/lego repository
-download_and_extract() {
-    local repo_url="https://github.com/go-acme/lego/archive/refs/heads/master.zip"
-    local target_dir="$1"
-
-    # Check if wget and unzip are installed
-    if ! command -v wget >/dev/null || ! command -v unzip >/dev/null; then
-        echo "Please ensure wget and unzip are installed."
-        exit 1
-    fi
-
-    # Download and extract the source code
-    wget -q -O lego-master.zip "$repo_url"
-    unzip -q lego-master.zip -d "$target_dir"
-    rm lego-master.zip
-}
-
-# Copy .toml files from providers to the specified directory
-copy_toml_files() {
-    local source_dir="$1/lego-master/providers"
-    local target_dir="internal/cert/config"
-
-    # Remove the lego-master folder
-    if [ ! -d "$target_dir" ]; then
-        mkdir -p "$target_dir"
-    fi
-
-    # Copy .toml files
-    find "$source_dir" -type f -name "*.toml" -exec cp {} "$target_dir" \;
-}
-
-# Remove the lego-master folder
-remove_lego_master_folder() {
-  local folder="$1/lego-master"
-  rm -rf "$folder"
-}
-
-destination="./tmp"
-download_and_extract "$destination"
-copy_toml_files "$destination"
-remove_lego_master_folder "$destination"

+ 26 - 0
query/certs.gen.go

@@ -170,11 +170,17 @@ func (c *cert) fillFieldMap() {
 
 func (c cert) clone(db *gorm.DB) cert {
 	c.certDo.ReplaceConnPool(db.Statement.ConnPool)
+	c.DnsCredential.db = db.Session(&gorm.Session{Initialized: true})
+	c.DnsCredential.db.Statement.ConnPool = db.Statement.ConnPool
+	c.ACMEUser.db = db.Session(&gorm.Session{Initialized: true})
+	c.ACMEUser.db.Statement.ConnPool = db.Statement.ConnPool
 	return c
 }
 
 func (c cert) replaceDB(db *gorm.DB) cert {
 	c.certDo.ReplaceDB(db)
+	c.DnsCredential.db = db.Session(&gorm.Session{})
+	c.ACMEUser.db = db.Session(&gorm.Session{})
 	return c
 }
 
@@ -211,6 +217,11 @@ func (a certBelongsToDnsCredential) Model(m *model.Cert) *certBelongsToDnsCreden
 	return &certBelongsToDnsCredentialTx{a.db.Model(m).Association(a.Name())}
 }
 
+func (a certBelongsToDnsCredential) Unscoped() *certBelongsToDnsCredential {
+	a.db = a.db.Unscoped()
+	return &a
+}
+
 type certBelongsToDnsCredentialTx struct{ tx *gorm.Association }
 
 func (a certBelongsToDnsCredentialTx) Find() (result *model.DnsCredential, err error) {
@@ -249,6 +260,11 @@ func (a certBelongsToDnsCredentialTx) Count() int64 {
 	return a.tx.Count()
 }
 
+func (a certBelongsToDnsCredentialTx) Unscoped() *certBelongsToDnsCredentialTx {
+	a.tx = a.tx.Unscoped()
+	return &a
+}
+
 type certBelongsToACMEUser struct {
 	db *gorm.DB
 
@@ -282,6 +298,11 @@ func (a certBelongsToACMEUser) Model(m *model.Cert) *certBelongsToACMEUserTx {
 	return &certBelongsToACMEUserTx{a.db.Model(m).Association(a.Name())}
 }
 
+func (a certBelongsToACMEUser) Unscoped() *certBelongsToACMEUser {
+	a.db = a.db.Unscoped()
+	return &a
+}
+
 type certBelongsToACMEUserTx struct{ tx *gorm.Association }
 
 func (a certBelongsToACMEUserTx) Find() (result *model.AcmeUser, err error) {
@@ -320,6 +341,11 @@ func (a certBelongsToACMEUserTx) Count() int64 {
 	return a.tx.Count()
 }
 
+func (a certBelongsToACMEUserTx) Unscoped() *certBelongsToACMEUserTx {
+	a.tx = a.tx.Unscoped()
+	return &a
+}
+
 type certDo struct{ gen.DO }
 
 // FirstByID Where("id=@id")

+ 13 - 0
query/sites.gen.go

@@ -114,11 +114,14 @@ func (s *site) fillFieldMap() {
 
 func (s site) clone(db *gorm.DB) site {
 	s.siteDo.ReplaceConnPool(db.Statement.ConnPool)
+	s.EnvGroup.db = db.Session(&gorm.Session{Initialized: true})
+	s.EnvGroup.db.Statement.ConnPool = db.Statement.ConnPool
 	return s
 }
 
 func (s site) replaceDB(db *gorm.DB) site {
 	s.siteDo.ReplaceDB(db)
+	s.EnvGroup.db = db.Session(&gorm.Session{})
 	return s
 }
 
@@ -155,6 +158,11 @@ func (a siteBelongsToEnvGroup) Model(m *model.Site) *siteBelongsToEnvGroupTx {
 	return &siteBelongsToEnvGroupTx{a.db.Model(m).Association(a.Name())}
 }
 
+func (a siteBelongsToEnvGroup) Unscoped() *siteBelongsToEnvGroup {
+	a.db = a.db.Unscoped()
+	return &a
+}
+
 type siteBelongsToEnvGroupTx struct{ tx *gorm.Association }
 
 func (a siteBelongsToEnvGroupTx) Find() (result *model.EnvGroup, err error) {
@@ -193,6 +201,11 @@ func (a siteBelongsToEnvGroupTx) Count() int64 {
 	return a.tx.Count()
 }
 
+func (a siteBelongsToEnvGroupTx) Unscoped() *siteBelongsToEnvGroupTx {
+	a.tx = a.tx.Unscoped()
+	return &a
+}
+
 type siteDo struct{ gen.DO }
 
 // FirstByID Where("id=@id")

+ 13 - 0
query/streams.gen.go

@@ -114,11 +114,14 @@ func (s *stream) fillFieldMap() {
 
 func (s stream) clone(db *gorm.DB) stream {
 	s.streamDo.ReplaceConnPool(db.Statement.ConnPool)
+	s.EnvGroup.db = db.Session(&gorm.Session{Initialized: true})
+	s.EnvGroup.db.Statement.ConnPool = db.Statement.ConnPool
 	return s
 }
 
 func (s stream) replaceDB(db *gorm.DB) stream {
 	s.streamDo.ReplaceDB(db)
+	s.EnvGroup.db = db.Session(&gorm.Session{})
 	return s
 }
 
@@ -155,6 +158,11 @@ func (a streamBelongsToEnvGroup) Model(m *model.Stream) *streamBelongsToEnvGroup
 	return &streamBelongsToEnvGroupTx{a.db.Model(m).Association(a.Name())}
 }
 
+func (a streamBelongsToEnvGroup) Unscoped() *streamBelongsToEnvGroup {
+	a.db = a.db.Unscoped()
+	return &a
+}
+
 type streamBelongsToEnvGroupTx struct{ tx *gorm.Association }
 
 func (a streamBelongsToEnvGroupTx) Find() (result *model.EnvGroup, err error) {
@@ -193,6 +201,11 @@ func (a streamBelongsToEnvGroupTx) Count() int64 {
 	return a.tx.Count()
 }
 
+func (a streamBelongsToEnvGroupTx) Unscoped() *streamBelongsToEnvGroupTx {
+	a.tx = a.tx.Unscoped()
+	return &a
+}
+
 type streamDo struct{ gen.DO }
 
 // FirstByID Where("id=@id")