Bladeren bron

feat(site): index url #736,#310

Jacky 4 weken geleden
bovenliggende
commit
c013c468a0

+ 4 - 0
api/sites/list.go

@@ -8,6 +8,7 @@ import (
 
 	"github.com/0xJacky/Nginx-UI/internal/config"
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/internal/site"
 	"github.com/0xJacky/Nginx-UI/model"
 	"github.com/0xJacky/Nginx-UI/query"
 	"github.com/gin-gonic/gin"
@@ -90,6 +91,8 @@ func GetSiteList(c *gin.Context) {
 			continue
 		}
 
+		indexedSite := site.GetIndexedSite(file.Name())
+
 		configs = append(configs, config.Config{
 			Name:       file.Name(),
 			ModifiedAt: fileInfo.ModTime(),
@@ -98,6 +101,7 @@ func GetSiteList(c *gin.Context) {
 			Enabled:    enabledConfigMap[file.Name()],
 			EnvGroupID: envGroupId,
 			EnvGroup:   envGroup,
+			Urls:       indexedSite.Urls,
 		})
 	}
 

+ 1 - 0
app/src/api/site.ts

@@ -22,6 +22,7 @@ export interface Site extends ModelBase {
   env_group_id: number
   env_group?: EnvGroup
   sync_node_ids: number[]
+  urls?: string[]
 }
 
 export interface AutoCertRequest {

+ 33 - 29
app/src/language/ar/app.po

@@ -43,12 +43,12 @@ msgstr "مستخدم ACME"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "إجراء"
@@ -98,8 +98,8 @@ msgstr "تمت الإضافة بنجاح"
 msgid "Additional"
 msgstr "إضافي"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "الوضع المتقدم"
 
@@ -282,8 +282,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "رجوع"
 
@@ -336,8 +336,8 @@ msgstr "المعلومات الأساسية"
 msgid "Basic"
 msgstr "أساسي"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "الوضع الأساسي"
 
@@ -642,7 +642,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -867,9 +867,9 @@ msgstr "تم تعطيل الموقع %{site} على %{node} بنجاح"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "معطل"
@@ -993,8 +993,8 @@ msgstr "تم النسخ إلى المحلي بنجاح"
 msgid "Edit"
 msgstr "تعديل %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "تعديل %{n}"
 
@@ -1094,11 +1094,11 @@ msgstr "تفعيل TOTP"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "مفعل"
@@ -2042,8 +2042,8 @@ msgstr "قائمة السماح لمجلد سجلات Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "خطأ في تحليل تكوين Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "خطأ في تحليل تكوين Nginx"
 
@@ -2157,7 +2157,7 @@ msgid "Node"
 msgstr "اسم العقدة"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2648,7 +2648,7 @@ msgid "Reload"
 msgstr "إعادة تحميل"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2900,9 +2900,9 @@ msgstr "يعمل"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "حفظ"
 
@@ -2964,8 +2964,8 @@ msgstr "تم الحفظ بنجاح"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "تم الحفظ بنجاح"
 
@@ -3183,7 +3183,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "الحالة"
 
@@ -3628,10 +3628,10 @@ msgstr "تم التحديث بنجاح"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3673,6 +3673,10 @@ msgstr "مدة التشغيل:"
 msgid "URL"
 msgstr "عنوان URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "استخدم كلمة المرور لمرة واحدة"

+ 33 - 29
app/src/language/de_DE/app.po

@@ -40,12 +40,12 @@ msgstr "Benutzername"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Aktion"
@@ -99,8 +99,8 @@ msgstr "Speichern erfolgreich"
 msgid "Additional"
 msgstr "Ort hinzufügen"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Erweiterter Modus"
 
@@ -296,8 +296,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Zurück"
 
@@ -352,8 +352,8 @@ msgstr "Basisinformationen"
 msgid "Basic"
 msgstr "Basic-Modus"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Basic-Modus"
 
@@ -665,7 +665,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -898,9 +898,9 @@ msgstr "Speichern erfolgreich"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Deaktiviert"
@@ -1033,8 +1033,8 @@ msgstr "Erfolgreich dupliziert"
 msgid "Edit"
 msgstr "Bearbeiten %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Bearbeiten %{n}"
 
@@ -1141,11 +1141,11 @@ msgstr "Aktiviere TLS"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Aktiviert"
@@ -2119,8 +2119,8 @@ msgstr "Nginx-Log-Verzeichnis-Whitelist"
 msgid "Nginx configuration has been restored"
 msgstr "Name der Konfiguration"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
 msgstr "Name der Konfiguration"
@@ -2238,7 +2238,7 @@ msgid "Node"
 msgstr "Benuztername"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2755,7 +2755,7 @@ msgid "Reload"
 msgstr "Neu laden"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -3022,9 +3022,9 @@ msgstr "Arbeite"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Speichern"
 
@@ -3089,8 +3089,8 @@ msgstr "Speichern erfolgreich"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Speichern erfolgreich"
 
@@ -3314,7 +3314,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Status"
 
@@ -3767,10 +3767,10 @@ msgstr "Speichern erfolgreich"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3815,6 +3815,10 @@ msgstr "Uptime:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "Benutze OTP"

+ 33 - 29
app/src/language/en/app.po

@@ -41,12 +41,12 @@ msgstr "Username"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Action"
@@ -100,8 +100,8 @@ msgstr "Saved successfully"
 msgid "Additional"
 msgstr "Add Location"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Advance Mode"
 
@@ -293,8 +293,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Back"
 
@@ -349,8 +349,8 @@ msgstr "Base information"
 msgid "Basic"
 msgstr "Basic Mode"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Basic Mode"
 
@@ -657,7 +657,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -889,9 +889,9 @@ msgstr "Saved successfully"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Disabled"
@@ -1019,8 +1019,8 @@ msgstr "Saved successfully"
 msgid "Edit"
 msgstr "Edit %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Edit %{n}"
 
@@ -1127,11 +1127,11 @@ msgstr "Enable TLS"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Enabled"
@@ -2096,8 +2096,8 @@ msgstr "Configuration Name"
 msgid "Nginx configuration has been restored"
 msgstr "Configuration Name"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
 msgstr "Configuration Name"
@@ -2214,7 +2214,7 @@ msgid "Node"
 msgstr "Username"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2708,7 +2708,7 @@ msgid "Reload"
 msgstr ""
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2973,9 +2973,9 @@ msgstr ""
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Save"
 
@@ -3040,8 +3040,8 @@ msgstr "Saved successfully"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Saved successfully"
 
@@ -3265,7 +3265,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Status"
 
@@ -3696,10 +3696,10 @@ msgstr "Saved successfully"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3744,6 +3744,10 @@ msgstr "Uptime:"
 msgid "URL"
 msgstr ""
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr ""

+ 33 - 29
app/src/language/es/app.po

@@ -46,12 +46,12 @@ msgstr "Usuario ACME"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Acción"
@@ -101,8 +101,8 @@ msgstr "Agregado exitoso"
 msgid "Additional"
 msgstr "Adicional"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Modo avanzado"
 
@@ -287,8 +287,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Volver"
 
@@ -341,8 +341,8 @@ msgstr "Información general"
 msgid "Basic"
 msgstr "Básico"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Modo Básico"
 
@@ -641,7 +641,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -868,9 +868,9 @@ msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Desactivado"
@@ -993,8 +993,8 @@ msgstr "Duplicado con éxito a local"
 msgid "Edit"
 msgstr "Editar %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Editar %{n}"
 
@@ -1097,11 +1097,11 @@ msgstr "Habilitar TLS"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Habilitado"
@@ -2045,8 +2045,8 @@ msgstr "Lista blanca de directorios de registro de Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Error de análisis de configuración de Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "Error de análisis de configuración de Nginx"
 
@@ -2163,7 +2163,7 @@ msgid "Node"
 msgstr "Nuevo nombre"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2673,7 +2673,7 @@ msgid "Reload"
 msgstr "Recargar"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2928,9 +2928,9 @@ msgstr "Corriendo"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Guardar"
 
@@ -2994,8 +2994,8 @@ msgstr "Guardado con éxito"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Guardado con éxito"
 
@@ -3213,7 +3213,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Estado"
 
@@ -3670,10 +3670,10 @@ msgstr "Actualización exitosa"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3715,6 +3715,10 @@ msgstr "Tiempo encendido:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "Usar OTP"

+ 33 - 29
app/src/language/fr_FR/app.po

@@ -45,12 +45,12 @@ msgstr "Nom d'utilisateur"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Action"
@@ -104,8 +104,8 @@ msgstr "Mis à jour avec succés"
 msgid "Additional"
 msgstr "Supplémentaire"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Mode avancé"
 
@@ -300,8 +300,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Retour"
 
@@ -354,8 +354,8 @@ msgstr "Information générale"
 msgid "Basic"
 msgstr "Basique"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Mode simple"
 
@@ -669,7 +669,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -905,9 +905,9 @@ msgstr "Dupliqué avec succès"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Désactivé"
@@ -1037,8 +1037,8 @@ msgstr "Dupliqué avec succès"
 msgid "Edit"
 msgstr "Modifier %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Modifier %{n}"
 
@@ -1145,11 +1145,11 @@ msgstr "Activer TLS"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Activé"
@@ -2128,8 +2128,8 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "Erreur d'analyse de configuration Nginx"
 
@@ -2247,7 +2247,7 @@ msgid "Node"
 msgstr "Nom d'utilisateur"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2747,7 +2747,7 @@ msgid "Reload"
 msgstr "Recharger"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -3014,9 +3014,9 @@ msgstr "En cours d'éxécution"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Enregistrer"
 
@@ -3080,8 +3080,8 @@ msgstr "Sauvegarde réussie"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Enregistré avec succès"
 
@@ -3303,7 +3303,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Statut"
 
@@ -3744,10 +3744,10 @@ msgstr "Mis à jour avec succés"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3790,6 +3790,10 @@ msgstr "Disponibilité :"
 msgid "URL"
 msgstr ""
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr ""

+ 33 - 29
app/src/language/ko_KR/app.po

@@ -44,12 +44,12 @@ msgstr "ACME 사용자"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "작업"
@@ -99,8 +99,8 @@ msgstr "성공적으로 추가됨"
 msgid "Additional"
 msgstr "추가적인"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "고급 모드"
 
@@ -284,8 +284,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "뒤로"
 
@@ -338,8 +338,8 @@ msgstr "기본 정보"
 msgid "Basic"
 msgstr "기본"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "기본 모드"
 
@@ -638,7 +638,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -868,9 +868,9 @@ msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "비활성화됨"
@@ -989,8 +989,8 @@ msgstr "로컬로 성공적으로 복제됨"
 msgid "Edit"
 msgstr "%{n} 편집"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "%{n} 편집"
 
@@ -1095,11 +1095,11 @@ msgstr "TLS 활성화"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "활성화됨"
@@ -2058,8 +2058,8 @@ msgstr "Nginx 구성 오류름"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 구성 오류름"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 구성 오류름"
@@ -2178,7 +2178,7 @@ msgid "Node"
 msgstr "이름 변경"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2677,7 +2677,7 @@ msgid "Reload"
 msgstr "리로드"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2945,9 +2945,9 @@ msgstr "실행 중"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "저장"
 
@@ -3012,8 +3012,8 @@ msgstr "성공적으로 저장됨"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "성공적으로 저장됨"
 
@@ -3232,7 +3232,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "상태"
 
@@ -3666,10 +3666,10 @@ msgstr "성공적으로 저장되었습니다"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3714,6 +3714,10 @@ msgstr "가동 시간:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr ""

+ 34 - 30
app/src/language/messages.pot

@@ -33,12 +33,12 @@ msgstr ""
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76
+#: src/views/site/site_list/columns.tsx:93
 #: src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
@@ -91,8 +91,8 @@ msgstr ""
 msgid "Additional"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr ""
 
@@ -270,8 +270,8 @@ msgstr ""
 #: src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180
 #: src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr ""
 
@@ -321,8 +321,8 @@ msgstr ""
 msgid "Basic"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr ""
 
@@ -602,7 +602,7 @@ msgstr ""
 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:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -819,10 +819,10 @@ msgstr ""
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62
-#: src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79
+#: src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56
 #: src/views/user/userColumns.tsx:41
 msgid "Disabled"
@@ -937,8 +937,8 @@ msgstr ""
 msgid "Edit"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr ""
 
@@ -1034,11 +1034,11 @@ msgstr ""
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171
+#: src/views/stream/StreamEdit.vue:172
 #: src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
@@ -1912,8 +1912,8 @@ msgstr ""
 msgid "Nginx configuration has been restored"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr ""
 
@@ -2019,7 +2019,7 @@ msgid "Node"
 msgstr ""
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 msgid "Node Group"
@@ -2472,7 +2472,7 @@ msgid "Reload"
 msgstr ""
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2707,9 +2707,9 @@ msgstr ""
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr ""
 
@@ -2767,8 +2767,8 @@ msgstr ""
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr ""
 
@@ -2967,7 +2967,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42
+#: src/views/site/site_list/columns.tsx:59
 #: src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr ""
@@ -3329,10 +3329,10 @@ msgstr ""
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34
 #: src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65
 #: src/views/user/userColumns.tsx:54
@@ -3376,6 +3376,10 @@ msgstr ""
 msgid "URL"
 msgstr ""
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr ""

+ 33 - 29
app/src/language/ru_RU/app.po

@@ -46,12 +46,12 @@ msgstr "Пользователь ACME"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Действие"
@@ -101,8 +101,8 @@ msgstr "Добавлено успешно"
 msgid "Additional"
 msgstr "Дополнительно"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Расширенный режим"
 
@@ -281,8 +281,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Назад"
 
@@ -335,8 +335,8 @@ msgstr "Основная информация"
 msgid "Basic"
 msgstr "Основные"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Простой режим"
 
@@ -628,7 +628,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -855,9 +855,9 @@ msgstr "Включение %{conf_name} in %{node_name} успешно"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Отключено"
@@ -980,8 +980,8 @@ msgstr "Успешно дублировано на локальный"
 msgid "Edit"
 msgstr "Редактировать %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Редактировать %{n}"
 
@@ -1081,11 +1081,11 @@ msgstr "Включить TOTP"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Включено"
@@ -2025,8 +2025,8 @@ msgstr "Белый список директорий для логов Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Ошибка разбора конфигурации Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "Ошибка разбора конфигурации Nginx"
 
@@ -2142,7 +2142,7 @@ msgid "Node"
 msgstr "Имя узла"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2642,7 +2642,7 @@ msgid "Reload"
 msgstr "Перегрузить"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2895,9 +2895,9 @@ msgstr "Выполняется"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Сохранить"
 
@@ -2959,8 +2959,8 @@ msgstr "Сохранено успешно"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Успешно сохранено"
 
@@ -3177,7 +3177,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Статус"
 
@@ -3626,10 +3626,10 @@ msgstr "Успешно обновлено"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3671,6 +3671,10 @@ msgstr "Аптайм:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "Использовать OTP"

+ 33 - 29
app/src/language/tr_TR/app.po

@@ -42,12 +42,12 @@ msgstr "ACME Kullanıcısı"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Eylem"
@@ -97,8 +97,8 @@ msgstr "Başarıyla eklendi"
 msgid "Additional"
 msgstr "İlave bilgi"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Gelişmiş Mod"
 
@@ -282,8 +282,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Geri"
 
@@ -336,8 +336,8 @@ msgstr "Temel bilgiler"
 msgid "Basic"
 msgstr "Temel"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Temel Mod"
 
@@ -634,7 +634,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -874,9 +874,9 @@ msgstr ""
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Devre dışı"
@@ -999,8 +999,8 @@ msgstr "Başarıyla yerel kopya oluşturuldu"
 msgid "Edit"
 msgstr "Düzenle %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Düzenle %{n}"
 
@@ -1110,11 +1110,11 @@ msgstr "TOTP'yi Etkinleştir"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Etkin"
@@ -2083,8 +2083,8 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
@@ -2208,7 +2208,7 @@ msgid "Node"
 msgstr "Yeni Ad"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2780,7 +2780,7 @@ msgid "Reload"
 msgstr "Tekrar yükle"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -3064,9 +3064,9 @@ msgstr "Çalışıyor"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 #, fuzzy
 msgid "Save"
 msgstr "Kaydet"
@@ -3135,8 +3135,8 @@ msgstr "Başarıyla kaydedin"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 #, fuzzy
 msgid "Saved successfully"
 msgstr "Başarıyla Kaydedildi"
@@ -3375,7 +3375,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 #, fuzzy
 msgid "Status"
 msgstr "Durum"
@@ -3873,10 +3873,10 @@ msgstr "Güncellendi"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 #, fuzzy
@@ -3927,6 +3927,10 @@ msgstr "Çalışma süresi:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 #, fuzzy
 msgid "Use OTP"

+ 33 - 29
app/src/language/vi_VN/app.po

@@ -40,12 +40,12 @@ msgstr "Người dùng"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "Hành động"
@@ -99,8 +99,8 @@ msgstr "Cập nhật thành công"
 msgid "Additional"
 msgstr "Tùy chọn bổ sung"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "Nâng cao"
 
@@ -293,8 +293,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "Quay lại"
 
@@ -349,8 +349,8 @@ msgstr "Thông tin"
 msgid "Basic"
 msgstr "Cơ bản"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "Cơ bản"
 
@@ -660,7 +660,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -893,9 +893,9 @@ msgstr "Đã bật %{conf_name} trên %{node_name}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Đã tắt"
@@ -1023,8 +1023,8 @@ msgstr "Đã sao chép thành công vào máy cục bộ"
 msgid "Edit"
 msgstr "Sửa %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "Sửa %{n}"
 
@@ -1131,11 +1131,11 @@ msgstr "Bật TLS"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "Đã bật"
@@ -2090,8 +2090,8 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
@@ -2208,7 +2208,7 @@ msgid "Node"
 msgstr "Username"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2705,7 +2705,7 @@ msgid "Reload"
 msgstr "Tải lại"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2973,9 +2973,9 @@ msgstr "Running"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "Lưu"
 
@@ -3040,8 +3040,8 @@ msgstr "Lưu thành công"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Lưu thành công"
 
@@ -3257,7 +3257,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "Trạng thái"
 
@@ -3687,10 +3687,10 @@ msgstr "Cập nhật thành công"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3735,6 +3735,10 @@ msgstr "Thời gian hoạt động:"
 msgid "URL"
 msgstr ""
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr ""

+ 34 - 30
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-04-05 17:43+0800\n"
+"PO-Revision-Date: 2025-04-05 20:52+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -44,12 +44,12 @@ msgstr "ACME 用户"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "操作"
@@ -99,8 +99,8 @@ msgstr "添加成功"
 msgid "Additional"
 msgstr "额外选项"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "高级模式"
 
@@ -275,8 +275,8 @@ msgstr "自动索引站点和 Stream 的配置文件。"
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "返回"
 
@@ -326,8 +326,8 @@ msgstr "基本信息"
 msgid "Basic"
 msgstr "基本"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "基本模式"
 
@@ -616,7 +616,7 @@ msgid ""
 msgstr ""
 "创建系统备份,包括 Nginx 配置和 Nginx UI 设置。备份文件将自动下载到你的电脑。"
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -828,9 +828,9 @@ msgstr "在 %{node} 上禁用 %{name} 成功"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "禁用"
@@ -947,8 +947,8 @@ msgstr "成功复制到本地"
 msgid "Edit"
 msgstr "编辑"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "编辑 %{n}"
 
@@ -1041,11 +1041,11 @@ msgstr "启用 TOTP"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "启用"
@@ -1933,8 +1933,8 @@ msgstr "未设置 Nginx 配置目录"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 配置已恢复"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 配置解析错误"
 
@@ -2041,7 +2041,7 @@ msgid "Node"
 msgstr "节点"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 msgid "Node Group"
@@ -2515,7 +2515,7 @@ msgid "Reload"
 msgstr "重载"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2746,9 +2746,9 @@ msgstr "运行中"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "保存"
 
@@ -2804,8 +2804,8 @@ msgstr "保存成功"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "保存成功"
 
@@ -3012,7 +3012,7 @@ msgstr "开始还原"
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "状态"
 
@@ -3425,10 +3425,10 @@ msgstr "更新成功"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3470,6 +3470,10 @@ msgstr "运行时间:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr "链接"
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "使用二步验证码"

+ 33 - 29
app/src/language/zh_TW/app.po

@@ -49,12 +49,12 @@ msgstr "ACME 用戶"
 #: src/views/certificate/CertificateList/certColumns.tsx:97
 #: src/views/certificate/DNSCredential.vue:33
 #: src/views/config/configColumns.tsx:42
-#: src/views/environments/group/columns.ts:42
+#: src/views/environments/group/columns.ts:43
 #: src/views/environments/list/envColumns.tsx:97
 #: src/views/nginx_log/NginxLogList.vue:53
 #: src/views/notification/notificationColumns.tsx:66
 #: src/views/preference/AuthSettings.vue:30
-#: src/views/site/site_list/columns.tsx:76 src/views/stream/StreamList.vue:72
+#: src/views/site/site_list/columns.tsx:93 src/views/stream/StreamList.vue:72
 #: src/views/user/userColumns.tsx:60
 msgid "Action"
 msgstr "操作"
@@ -104,8 +104,8 @@ msgstr "添加成功"
 msgid "Additional"
 msgstr "其他設定"
 
-#: src/views/site/site_edit/SiteEdit.vue:205
-#: src/views/stream/StreamEdit.vue:191
+#: src/views/site/site_edit/SiteEdit.vue:206
+#: src/views/stream/StreamEdit.vue:192
 msgid "Advance Mode"
 msgstr "進階模式"
 
@@ -283,8 +283,8 @@ msgstr ""
 #: src/views/certificate/CertificateEditor.vue:255
 #: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106
 #: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:264
-#: src/views/stream/StreamEdit.vue:247
+#: src/views/site/site_edit/SiteEdit.vue:265
+#: src/views/stream/StreamEdit.vue:248
 msgid "Back"
 msgstr "返回"
 
@@ -337,8 +337,8 @@ msgstr "基本資訊"
 msgid "Basic"
 msgstr "基本"
 
-#: src/views/site/site_edit/SiteEdit.vue:208
-#: src/views/stream/StreamEdit.vue:194
+#: src/views/site/site_edit/SiteEdit.vue:209
+#: src/views/stream/StreamEdit.vue:195
 msgid "Basic Mode"
 msgstr "基本模式"
 
@@ -629,7 +629,7 @@ msgid ""
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 
-#: src/views/environments/group/columns.ts:30
+#: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/preference/components/Passkey.vue:95
 #: src/views/user/userColumns.tsx:48
@@ -845,9 +845,9 @@ msgstr "成功禁用 %{node} 中的站点 %{site}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/SiteEdit.vue:190
-#: src/views/site/site_list/columns.tsx:53
-#: src/views/site/site_list/columns.tsx:62 src/views/stream/StreamEdit.vue:177
+#: src/views/site/site_edit/SiteEdit.vue:191
+#: src/views/site/site_list/columns.tsx:70
+#: src/views/site/site_list/columns.tsx:79 src/views/stream/StreamEdit.vue:178
 #: src/views/stream/StreamList.vue:56 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "停用"
@@ -964,8 +964,8 @@ msgstr "成功複製至本機"
 msgid "Edit"
 msgstr "編輯"
 
-#: src/views/site/site_edit/SiteEdit.vue:179
-#: src/views/stream/StreamEdit.vue:166
+#: src/views/site/site_edit/SiteEdit.vue:180
+#: src/views/stream/StreamEdit.vue:167
 msgid "Edit %{n}"
 msgstr "編輯 %{n}"
 
@@ -1065,11 +1065,11 @@ msgstr "啟用 TOTP"
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
 #: src/views/site/site_edit/RightSettings.vue:82
-#: src/views/site/site_edit/SiteEdit.vue:184
-#: src/views/site/site_list/columns.tsx:49
-#: src/views/site/site_list/columns.tsx:61
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/site/site_list/columns.tsx:78
 #: src/views/stream/components/RightSettings.vue:81
-#: src/views/stream/StreamEdit.vue:171 src/views/stream/StreamList.vue:52
+#: src/views/stream/StreamEdit.vue:172 src/views/stream/StreamList.vue:52
 #: src/views/user/userColumns.tsx:38
 msgid "Enabled"
 msgstr "已啟用"
@@ -2003,8 +2003,8 @@ msgstr "Nginx 日誌目錄白名單"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 設定解析錯誤"
 
-#: src/views/site/site_edit/SiteEdit.vue:223
-#: src/views/stream/StreamEdit.vue:209
+#: src/views/site/site_edit/SiteEdit.vue:224
+#: src/views/stream/StreamEdit.vue:210
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 設定解析錯誤"
 
@@ -2118,7 +2118,7 @@ msgid "Node"
 msgstr "節點名稱"
 
 #: src/views/site/site_edit/RightSettings.vue:91
-#: src/views/site/site_list/columns.tsx:25
+#: src/views/site/site_list/columns.tsx:42
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:28
 #, fuzzy
@@ -2601,7 +2601,7 @@ msgid "Reload"
 msgstr "重新載入"
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:156
-#: src/views/environments/group/columns.ts:23
+#: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:128
@@ -2853,9 +2853,9 @@ msgstr "執行中"
 #: src/views/preference/Preference.vue:221
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:271
+#: src/views/site/site_edit/SiteEdit.vue:272
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/StreamEdit.vue:254
+#: src/views/stream/StreamEdit.vue:255
 msgid "Save"
 msgstr "儲存"
 
@@ -2917,8 +2917,8 @@ msgstr "儲存成功"
 #: src/views/config/ConfigEditor.vue:167
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:152
-#: src/views/stream/StreamEdit.vue:140
+#: src/views/site/site_edit/SiteEdit.vue:153
+#: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "儲存成功"
 
@@ -3132,7 +3132,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:68
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_list/columns.tsx:42 src/views/stream/StreamList.vue:45
+#: src/views/site/site_list/columns.tsx:59 src/views/stream/StreamList.vue:45
 msgid "Status"
 msgstr "狀態"
 
@@ -3555,10 +3555,10 @@ msgstr "更新成功"
 #: src/views/certificate/ACMEUser.vue:88
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.tsx:34 src/views/config/ConfigEditor.vue:276
-#: src/views/environments/group/columns.ts:36
+#: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
 #: src/views/site/site_edit/RightSettings.vue:100
-#: src/views/site/site_list/columns.tsx:69
+#: src/views/site/site_list/columns.tsx:86
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:65 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -3600,6 +3600,10 @@ msgstr "運作時間:"
 msgid "URL"
 msgstr "URL"
 
+#: src/views/site/site_list/columns.tsx:25
+msgid "URLs"
+msgstr ""
+
 #: src/components/TwoFA/Authorization.vue:121
 msgid "Use OTP"
 msgstr "使用一次性密碼"

+ 18 - 0
app/src/views/site/site_list/columns.tsx

@@ -21,6 +21,24 @@ const columns: Column[] = [{
   },
   search: true,
   width: 120,
+}, {
+  title: () => $gettext('URLs'),
+  dataIndex: 'urls',
+  customRender: ({ text, record }) => {
+    const template: JSXElements = []
+    if (record.enabled) {
+      text?.forEach((url: string) => {
+        template.push(<a href={url} target="_blank" rel="noopener noreferrer">{url}</a>)
+        template.push(<span>, </span>)
+      })
+      template.pop() // Remove last comma
+    }
+    else {
+      template.push(<span>{text?.join(', ')}</span>)
+    }
+    return h('div', template)
+  },
+  width: 120,
 }, {
   title: () => $gettext('Node Group'),
   dataIndex: 'env_group_id',

+ 1 - 0
internal/config/config.go

@@ -19,4 +19,5 @@ type Config struct {
 	EnvGroup        *model.EnvGroup                `json:"env_group,omitempty"`
 	Enabled         bool                           `json:"enabled"`
 	Dir             string                         `json:"dir"`
+	Urls            []string                       `json:"urls,omitempty"`
 }

+ 1 - 1
internal/site/disable.go

@@ -35,7 +35,7 @@ func Disable(name string) (err error) {
 
 	output := nginx.Reload()
 	if nginx.GetLogLevel(output) > nginx.Warn {
-		return fmt.Errorf(output)
+		return fmt.Errorf("%s", output)
 	}
 
 	go syncDisable(name)

+ 2 - 2
internal/site/enable.go

@@ -37,12 +37,12 @@ func Enable(name string) (err error) {
 	output := nginx.TestConf()
 	if nginx.GetLogLevel(output) > nginx.Warn {
 		_ = os.Remove(enabledConfigFilePath)
-		return fmt.Errorf(output)
+		return fmt.Errorf("%s", output)
 	}
 
 	output = nginx.Reload()
 	if nginx.GetLogLevel(output) > nginx.Warn {
-		return fmt.Errorf(output)
+		return fmt.Errorf("%s", output)
 	}
 
 	go syncEnable(name)

+ 132 - 0
internal/site/index.go

@@ -0,0 +1,132 @@
+package site
+
+import (
+	"net"
+	"path/filepath"
+	"regexp"
+	"strings"
+
+	"github.com/0xJacky/Nginx-UI/internal/cache"
+)
+
+type SiteIndex struct {
+	Path    string
+	Content string
+	Urls    []string
+}
+
+var (
+	IndexedSites = make(map[string]*SiteIndex)
+)
+
+func GetIndexedSite(path string) *SiteIndex {
+	if site, ok := IndexedSites[path]; ok {
+		return site
+	}
+	return &SiteIndex{}
+}
+
+func init() {
+	cache.RegisterCallback(scanForSite)
+}
+
+func scanForSite(configPath string, content []byte) error {
+	// Regular expressions for server_name and listen directives
+	serverNameRegex := regexp.MustCompile(`(?m)server_name\s+([^;]+);`)
+	listenRegex := regexp.MustCompile(`(?m)listen\s+([^;]+);`)
+
+	// Find server blocks
+	serverBlockRegex := regexp.MustCompile(`(?ms)server\s*\{[^\{]*((.*?\{.*?\})*?[^\}]*)\}`)
+	serverBlocks := serverBlockRegex.FindAllSubmatch(content, -1)
+
+	siteIndex := SiteIndex{
+		Path:    configPath,
+		Content: string(content),
+		Urls:    []string{},
+	}
+
+	// Map to track hosts and their SSL status
+	hostMap := make(map[string]bool)
+
+	for _, block := range serverBlocks {
+		serverBlockContent := block[0]
+
+		// Extract server_name values
+		serverNameMatches := serverNameRegex.FindSubmatch(serverBlockContent)
+		if len(serverNameMatches) < 2 {
+			continue
+		}
+
+		// Get all server names
+		serverNames := strings.Fields(string(serverNameMatches[1]))
+		var validServerNames []string
+
+		// Filter valid domain names and IPs
+		for _, name := range serverNames {
+			// Skip placeholder names
+			if name == "_" || name == "localhost" {
+				continue
+			}
+
+			// Check if it's a valid IP
+			if net.ParseIP(name) != nil {
+				validServerNames = append(validServerNames, name)
+				continue
+			}
+
+			// Basic domain validation
+			if isValidDomain(name) {
+				validServerNames = append(validServerNames, name)
+			}
+		}
+
+		if len(validServerNames) == 0 {
+			continue
+		}
+
+		// Check if SSL is enabled
+		listenMatches := listenRegex.FindAllSubmatch(serverBlockContent, -1)
+		hasSSL := false
+
+		for _, match := range listenMatches {
+			if len(match) >= 2 {
+				listenValue := string(match[1])
+				if strings.Contains(listenValue, "ssl") || strings.Contains(listenValue, "443") {
+					hasSSL = true
+					break
+				}
+			}
+		}
+
+		// Update host map with SSL status
+		for _, name := range validServerNames {
+			// Only update if this host doesn't have SSL yet
+			if currentSSL, exists := hostMap[name]; !exists || !currentSSL {
+				hostMap[name] = hasSSL
+			}
+		}
+	}
+
+	// Generate URLs from the host map
+	for host, hasSSL := range hostMap {
+		protocol := "http"
+		if hasSSL {
+			protocol = "https"
+		}
+		url := protocol + "://" + host
+		siteIndex.Urls = append(siteIndex.Urls, url)
+	}
+
+	// Only store if we found valid URLs
+	if len(siteIndex.Urls) > 0 {
+		IndexedSites[filepath.Base(configPath)] = &siteIndex
+	}
+
+	return nil
+}
+
+// isValidDomain performs a basic validation of domain names
+func isValidDomain(domain string) bool {
+	// Basic validation: contains at least one dot and no spaces
+	return strings.Contains(domain, ".") && !strings.Contains(domain, " ")
+}

+ 2 - 2
internal/site/rename.go

@@ -49,13 +49,13 @@ func Rename(oldName string, newName string) (err error) {
 	// test nginx configuration
 	output := nginx.TestConf()
 	if nginx.GetLogLevel(output) > nginx.Warn {
-		return fmt.Errorf(output)
+		return fmt.Errorf("%s", output)
 	}
 
 	// reload nginx
 	output = nginx.Reload()
 	if nginx.GetLogLevel(output) > nginx.Warn {
-		return fmt.Errorf(output)
+		return fmt.Errorf("%s", output)
 	}
 
 	go syncRename(oldName, newName)