Browse Source

feat: add HTTP proxy support for tg notifications #1175

0xJacky 1 week ago
parent
commit
ad9fa64605

File diff suppressed because it is too large
+ 197 - 187
app/src/language/ar/app.po


File diff suppressed because it is too large
+ 196 - 170
app/src/language/de_DE/app.po


+ 57 - 57
app/src/language/en/app.po

@@ -112,7 +112,7 @@ msgstr ""
 msgid "Access Logs"
 msgid "Access Logs"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:148
+#: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:147
 #: src/views/certificate/components/ACMEUserSelector.vue:52
 #: src/views/certificate/components/ACMEUserSelector.vue:52
 msgid "ACME User"
 msgid "ACME User"
 msgstr ""
 msgstr ""
@@ -122,7 +122,7 @@ msgid "Action"
 msgstr ""
 msgstr ""
 
 
 #: src/views/backup/AutoBackup/AutoBackup.vue:273
 #: src/views/backup/AutoBackup/AutoBackup.vue:273
-#: src/views/certificate/ACMEUser.vue:130
+#: src/views/certificate/ACMEUser.vue:129
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/DNSCredential.vue:71
 #: src/views/certificate/DNSCredential.vue:71
 #: src/views/config/configColumns.tsx:50
 #: src/views/config/configColumns.tsx:50
@@ -225,7 +225,7 @@ msgid ""
 "certificate application will fail."
 "certificate application will fail."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:188
+#: src/components/AutoCertForm/AutoCertForm.vue:209
 msgid ""
 msgid ""
 "Any reachable IP address can be used with private Certificate Authorities"
 "Any reachable IP address can be used with private Certificate Authorities"
 msgstr ""
 msgstr ""
@@ -392,11 +392,11 @@ msgstr ""
 msgid "Auto refresh enabled"
 msgid "Auto refresh enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:78
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:79
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:71
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:72
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -610,7 +610,7 @@ msgstr ""
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:144
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/stream/components/StreamStatusSelect.vue:61
 #: src/views/stream/components/StreamStatusSelect.vue:61
 msgid "Cancel"
 msgid "Cancel"
@@ -754,7 +754,7 @@ msgstr ""
 msgid "Challenge error: {0}"
 msgid "Challenge error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:197
+#: src/components/AutoCertForm/AutoCertForm.vue:218
 msgid "Challenge Method"
 msgid "Challenge Method"
 msgstr ""
 msgstr ""
 
 
@@ -1404,7 +1404,7 @@ msgstr ""
 msgid "disable"
 msgid "disable"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:81
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -1491,11 +1491,11 @@ msgstr ""
 msgid "DNS Provider"
 msgid "DNS Provider"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:207
+#: src/components/AutoCertForm/AutoCertForm.vue:228
 msgid "DNS01"
 msgid "DNS01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:240
+#: src/components/AutoCertForm/AutoCertForm.vue:261
 msgid "Do not enable this option unless you are sure that you need it."
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 msgstr ""
 
 
@@ -1507,7 +1507,7 @@ msgstr ""
 msgid "Do you want to %{action} this stream?"
 msgid "Do you want to %{action} this stream?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
@@ -1651,7 +1651,7 @@ msgstr ""
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:73
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:74
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -1783,7 +1783,7 @@ msgstr ""
 msgid "Enter domain name"
 msgid "Enter domain name"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:162
+#: src/components/AutoCertForm/AutoCertForm.vue:183
 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)"
 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)"
 msgstr ""
 msgstr ""
 
 
@@ -2319,13 +2319,13 @@ msgstr ""
 msgid "For Chinese user: https://cloud.nginxui.com/"
 msgid "For Chinese user: https://cloud.nginxui.com/"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:119
+#: src/components/AutoCertForm/AutoCertForm.vue:140
 msgid ""
 msgid ""
 "For IP-based certificate configurations, only HTTP-01 challenge method is "
 "For IP-based certificate configurations, only HTTP-01 challenge method is "
 "supported. DNS-01 challenge is not compatible with IP-based certificates."
 "supported. DNS-01 challenge is not compatible with IP-based certificates."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:167
+#: src/components/AutoCertForm/AutoCertForm.vue:188
 msgid ""
 msgid ""
 "For IP-based certificates, please specify the server IP address that will be "
 "For IP-based certificates, please specify the server IP address that will be "
 "included in the certificate."
 "included in the certificate."
@@ -2455,7 +2455,7 @@ msgstr ""
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:201
+#: src/components/AutoCertForm/AutoCertForm.vue:222
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
@@ -2473,7 +2473,7 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:259
+#: src/components/AutoCertForm/AutoCertForm.vue:280
 msgid ""
 msgid ""
 "If you want to automatically revoke the old certificate, please enable this "
 "If you want to automatically revoke the old certificate, please enable this "
 "option."
 "option."
@@ -2483,7 +2483,7 @@ msgstr ""
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:250
+#: src/components/AutoCertForm/AutoCertForm.vue:271
 msgid ""
 msgid ""
 "If your domain has CNAME records and you cannot obtain certificates, you "
 "If your domain has CNAME records and you cannot obtain certificates, you "
 "need to enable this option."
 "need to enable this option."
@@ -2569,7 +2569,7 @@ msgstr ""
 msgid "Interval"
 msgid "Interval"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:165
+#: src/views/certificate/ACMEUser.vue:164
 msgid "Invalid"
 msgid "Invalid"
 msgstr ""
 msgstr ""
 
 
@@ -2652,7 +2652,7 @@ msgstr ""
 msgid "IP"
 msgid "IP"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:102
+#: src/components/AutoCertForm/AutoCertForm.vue:123
 msgid "IP Certificate Notice"
 msgid "IP Certificate Notice"
 msgstr ""
 msgstr ""
 
 
@@ -2690,7 +2690,7 @@ msgstr ""
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:215
+#: src/components/AutoCertForm/AutoCertForm.vue:236
 #: src/views/certificate/CertificateList/certColumns.tsx:57
 #: src/views/certificate/CertificateList/certColumns.tsx:57
 msgid "Key Type"
 msgid "Key Type"
 msgstr ""
 msgstr ""
@@ -2758,7 +2758,7 @@ msgstr ""
 msgid "Legacy recovery code not allowed since totp is not enabled"
 msgid "Legacy recovery code not allowed since totp is not enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:247
+#: src/components/AutoCertForm/AutoCertForm.vue:268
 msgid "Lego disable CNAME Support"
 msgid "Lego disable CNAME Support"
 msgstr ""
 msgstr ""
 
 
@@ -2901,7 +2901,7 @@ msgstr ""
 msgid "Make certificate dir error: {0}"
 msgid "Make certificate dir error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:143
+#: src/components/AutoCertForm/AutoCertForm.vue:164
 msgid ""
 msgid ""
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "HTTPChallengePort before obtaining the certificate."
 "HTTPChallengePort before obtaining the certificate."
@@ -3084,7 +3084,7 @@ msgstr ""
 msgid "Multi-line Directive"
 msgid "Multi-line Directive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:175
+#: src/components/AutoCertForm/AutoCertForm.vue:196
 msgid "Must be a public IP address accessible from the internet"
 msgid "Must be a public IP address accessible from the internet"
 msgstr ""
 msgstr ""
 
 
@@ -3169,7 +3169,7 @@ msgstr ""
 #: src/views/certificate/components/DNSIssueCertificate.vue:183
 #: src/views/certificate/components/DNSIssueCertificate.vue:183
 #: src/views/install/components/InstallView.vue:96
 #: src/views/install/components/InstallView.vue:96
 #: src/views/site/site_add/SiteAdd.vue:131
 #: src/views/site/site_add/SiteAdd.vue:131
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:219
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:224
 msgid "Next"
 msgid "Next"
 msgstr ""
 msgstr ""
 
 
@@ -3412,7 +3412,7 @@ msgstr ""
 msgid "No servers configured"
 msgid "No servers configured"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:115
+#: src/components/AutoCertForm/AutoCertForm.vue:136
 msgid ""
 msgid ""
 "No specific IP address found in server_name configuration. Please specify "
 "No specific IP address found in server_name configuration. Please specify "
 "the server IP address below for the certificate."
 "the server IP address below for the certificate."
@@ -3466,7 +3466,7 @@ msgstr ""
 msgid "Not Loaded"
 msgid "Not Loaded"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:209
+#: src/components/AutoCertForm/AutoCertForm.vue:230
 msgid "Not supported for IP certificates"
 msgid "Not supported for IP certificates"
 msgstr ""
 msgstr ""
 
 
@@ -3474,7 +3474,7 @@ msgstr ""
 msgid "Not Valid Before: %{date}"
 msgid "Not Valid Before: %{date}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:129
+#: src/components/AutoCertForm/AutoCertForm.vue:150
 #: src/views/certificate/DNSCredential.vue:89
 #: src/views/certificate/DNSCredential.vue:89
 msgid "Note"
 msgid "Note"
 msgstr ""
 msgstr ""
@@ -3522,7 +3522,7 @@ msgstr ""
 msgid "Obtain cert error: {0}"
 msgid "Obtain cert error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:185
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:189
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr ""
 msgstr ""
 
 
@@ -3530,11 +3530,11 @@ msgstr ""
 msgid "Obtaining certificate"
 msgid "Obtaining certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:237
+#: src/components/AutoCertForm/AutoCertForm.vue:258
 msgid "OCSP Must Staple"
 msgid "OCSP Must Staple"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:241
+#: src/components/AutoCertForm/AutoCertForm.vue:262
 msgid ""
 msgid ""
 "OCSP Must Staple may cause errors for some users on first access using "
 "OCSP Must Staple may cause errors for some users on first access using "
 "Firefox."
 "Firefox."
@@ -3566,7 +3566,7 @@ msgstr ""
 #: src/views/notification/Notification.vue:39
 #: src/views/notification/Notification.vue:39
 #: src/views/site/components/SiteStatusSelect.vue:123
 #: src/views/site/components/SiteStatusSelect.vue:123
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:39
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:39
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_list/SiteList.vue:112
 #: src/views/site/site_list/SiteList.vue:112
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/components/StreamStatusSelect.vue:60
@@ -3781,11 +3781,11 @@ msgid ""
 "button below."
 "button below."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:77
+#: src/components/AutoCertForm/AutoCertForm.vue:98
 msgid "Please enter a valid IPv4 address (0-255 per octet)"
 msgid "Please enter a valid IPv4 address (0-255 per octet)"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:88
+#: src/components/AutoCertForm/AutoCertForm.vue:109
 msgid "Please enter a valid IPv4 or IPv6 address"
 msgid "Please enter a valid IPv4 or IPv6 address"
 msgstr ""
 msgstr ""
 
 
@@ -3810,7 +3810,7 @@ msgstr ""
 msgid "Please enter the security token received during backup"
 msgid "Please enter the security token received during backup"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:59
+#: src/components/AutoCertForm/AutoCertForm.vue:80
 msgid "Please enter the server IP address"
 msgid "Please enter the server IP address"
 msgstr ""
 msgstr ""
 
 
@@ -3828,7 +3828,7 @@ msgid ""
 "provider."
 "provider."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:147
+#: src/components/AutoCertForm/AutoCertForm.vue:168
 msgid ""
 msgid ""
 "Please first add credentials in Certification > DNS Credentials, and then "
 "Please first add credentials in Certification > DNS Credentials, and then "
 "select one of the credentialsbelow to request the API of the DNS provider."
 "select one of the credentialsbelow to request the API of the DNS provider."
@@ -3935,7 +3935,7 @@ msgstr ""
 msgid "Port"
 msgid "Port"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:178
+#: src/components/AutoCertForm/AutoCertForm.vue:199
 msgid "Port 80 must be open for HTTP-01 challenge validation"
 msgid "Port 80 must be open for HTTP-01 challenge validation"
 msgstr ""
 msgstr ""
 
 
@@ -3963,11 +3963,11 @@ msgstr ""
 msgid "Preparing lego configurations"
 msgid "Preparing lego configurations"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:185
+#: src/components/AutoCertForm/AutoCertForm.vue:206
 msgid "Private CA:"
 msgid "Private CA:"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:181
+#: src/components/AutoCertForm/AutoCertForm.vue:202
 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail"
 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail"
 msgstr ""
 msgstr ""
 
 
@@ -4034,7 +4034,7 @@ msgstr ""
 msgid "Proxy Targets"
 msgid "Proxy Targets"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:171
+#: src/components/AutoCertForm/AutoCertForm.vue:192
 msgid "Public CA Requirements:"
 msgid "Public CA Requirements:"
 msgstr ""
 msgstr ""
 
 
@@ -4087,7 +4087,7 @@ msgstr ""
 msgid "Regenerate response"
 msgid "Regenerate response"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:173
+#: src/views/certificate/ACMEUser.vue:172
 msgid "Register"
 msgid "Register"
 msgstr ""
 msgstr ""
 
 
@@ -4097,11 +4097,11 @@ msgid ""
 "proxy."
 "proxy."
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:141
+#: src/views/certificate/ACMEUser.vue:140
 msgid "Register failed"
 msgid "Register failed"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:112
+#: src/views/certificate/ACMEUser.vue:111
 msgid "Register On Startup"
 msgid "Register On Startup"
 msgstr ""
 msgstr ""
 
 
@@ -4109,7 +4109,7 @@ msgstr ""
 msgid "Register passkey successfully"
 msgid "Register passkey successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:139
+#: src/views/certificate/ACMEUser.vue:138
 msgid "Register successfully"
 msgid "Register successfully"
 msgstr ""
 msgstr ""
 
 
@@ -4117,7 +4117,7 @@ msgstr ""
 msgid "Registering user"
 msgid "Registering user"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:156
+#: src/views/certificate/ACMEUser.vue:155
 msgid "Registration Status"
 msgid "Registration Status"
 msgstr ""
 msgstr ""
 
 
@@ -4392,7 +4392,7 @@ msgstr ""
 msgid "Revoke cert error: {0}"
 msgid "Revoke cert error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:256
+#: src/components/AutoCertForm/AutoCertForm.vue:277
 msgid "Revoke Old Certificate"
 msgid "Revoke Old Certificate"
 msgstr ""
 msgstr ""
 
 
@@ -4723,7 +4723,7 @@ msgstr ""
 msgid "Server Info"
 msgid "Server Info"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:157
+#: src/components/AutoCertForm/AutoCertForm.vue:178
 msgid "Server IP Address"
 msgid "Server IP Address"
 msgstr ""
 msgstr ""
 
 
@@ -4735,7 +4735,7 @@ msgstr ""
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:105
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:106
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr ""
 msgstr ""
 
 
@@ -5190,7 +5190,7 @@ msgstr ""
 msgid "Test S3 Connection"
 msgid "Test S3 Connection"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:139
+#: src/components/AutoCertForm/AutoCertForm.vue:160
 msgid ""
 msgid ""
 "The certificate for the domain will be checked 30 minutes, and will be "
 "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 "
 "renewed if it has been more than 1 week or the period you set in settings "
@@ -5259,7 +5259,7 @@ msgid ""
 "match the local version."
 "match the local version."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:134
+#: src/components/AutoCertForm/AutoCertForm.vue:155
 msgid ""
 msgid ""
 "The server_name in the current configuration must be the domain name you "
 "The server_name in the current configuration must be the domain name you "
 "need to get the certificate, supportmultiple domains."
 "need to get the certificate, supportmultiple domains."
@@ -5351,14 +5351,14 @@ msgid ""
 "certificate files on the file system will not be deleted."
 "certificate files on the file system will not be deleted."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:107
+#: src/components/AutoCertForm/AutoCertForm.vue:128
 msgid ""
 msgid ""
 "This site is configured as a default server (default_server) for HTTPS (port "
 "This site is configured as a default server (default_server) for HTTPS (port "
 "443). IP certificates require Certificate Authority (CA) support and may not "
 "443). IP certificates require Certificate Authority (CA) support and may not "
 "be available with all ACME providers."
 "be available with all ACME providers."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:111
+#: src/components/AutoCertForm/AutoCertForm.vue:132
 msgid ""
 msgid ""
 "This site uses wildcard server name (_) which typically indicates an IP-"
 "This site uses wildcard server name (_) which typically indicates an IP-"
 "based certificate. IP certificates require Certificate Authority (CA) "
 "based certificate. IP certificates require Certificate Authority (CA) "
@@ -5564,7 +5564,7 @@ msgid "Update successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
-#: src/views/certificate/ACMEUser.vue:123
+#: src/views/certificate/ACMEUser.vue:122
 #: src/views/certificate/DNSCredential.vue:65
 #: src/views/certificate/DNSCredential.vue:65
 #: src/views/config/components/ConfigRightPanel/Basic.vue:54
 #: src/views/config/components/ConfigRightPanel/Basic.vue:54
 #: src/views/config/configColumns.tsx:43
 #: src/views/config/configColumns.tsx:43
@@ -5675,7 +5675,7 @@ msgid "Username length cannot exceed 255 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/components/CertInfo/CertInfo.vue:24
 #: src/components/CertInfo/CertInfo.vue:24
-#: src/views/certificate/ACMEUser.vue:160
+#: src/views/certificate/ACMEUser.vue:159
 #: src/views/certificate/CertificateList/certColumns.tsx:76
 #: src/views/certificate/CertificateList/certColumns.tsx:76
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
@@ -5739,7 +5739,7 @@ msgid ""
 "to restore."
 "to restore."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:82
+#: src/components/AutoCertForm/AutoCertForm.vue:103
 msgid ""
 msgid ""
 "Warning: This appears to be a private IP address. Public CAs like Let's "
 "Warning: This appears to be a private IP address. Public CAs like Let's "
 "Encrypt cannot issue certificates for private IPs. Use a public IP address "
 "Encrypt cannot issue certificates for private IPs. Use a public IP address "
@@ -5752,7 +5752,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:141
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -5782,7 +5782,7 @@ msgstr ""
 msgid "Weekly on %{day} at %{time}"
 msgid "Weekly on %{day} at %{time}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:118
+#: src/views/certificate/ACMEUser.vue:117
 msgid ""
 msgid ""
 "When Enabled, Nginx UI will automatically re-register users upon startup. "
 "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 "
 "Generally, do not enable this unless you are in a dev environment and using "

File diff suppressed because it is too large
+ 191 - 176
app/src/language/es/app.po


File diff suppressed because it is too large
+ 200 - 181
app/src/language/fr_FR/app.po


File diff suppressed because it is too large
+ 252 - 166
app/src/language/ja_JP/app.po


File diff suppressed because it is too large
+ 238 - 171
app/src/language/ko_KR/app.po


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

@@ -116,7 +116,7 @@ msgid "Access Logs"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/certificates.ts:20
 #: src/routes/modules/certificates.ts:20
-#: src/views/certificate/ACMEUser.vue:148
+#: src/views/certificate/ACMEUser.vue:147
 #: src/views/certificate/components/ACMEUserSelector.vue:52
 #: src/views/certificate/components/ACMEUserSelector.vue:52
 msgid "ACME User"
 msgid "ACME User"
 msgstr ""
 msgstr ""
@@ -126,7 +126,7 @@ msgid "Action"
 msgstr ""
 msgstr ""
 
 
 #: src/views/backup/AutoBackup/AutoBackup.vue:273
 #: src/views/backup/AutoBackup/AutoBackup.vue:273
-#: src/views/certificate/ACMEUser.vue:130
+#: src/views/certificate/ACMEUser.vue:129
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/DNSCredential.vue:71
 #: src/views/certificate/DNSCredential.vue:71
 #: src/views/config/configColumns.tsx:50
 #: src/views/config/configColumns.tsx:50
@@ -231,7 +231,7 @@ msgstr ""
 msgid "All selected subdomains must belong to the same DNS Provider, otherwise the certificate application will fail."
 msgid "All selected subdomains must belong to the same DNS Provider, otherwise the certificate application will fail."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:188
+#: src/components/AutoCertForm/AutoCertForm.vue:209
 msgid "Any reachable IP address can be used with private Certificate Authorities"
 msgid "Any reachable IP address can be used with private Certificate Authorities"
 msgstr ""
 msgstr ""
 
 
@@ -398,11 +398,11 @@ msgstr ""
 msgid "Auto refresh enabled"
 msgid "Auto refresh enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:78
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:79
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:71
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:72
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -616,7 +616,7 @@ msgstr ""
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:144
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/stream/components/StreamStatusSelect.vue:61
 #: src/views/stream/components/StreamStatusSelect.vue:61
 msgid "Cancel"
 msgid "Cancel"
@@ -760,7 +760,7 @@ msgstr ""
 msgid "Challenge error: {0}"
 msgid "Challenge error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:197
+#: src/components/AutoCertForm/AutoCertForm.vue:218
 msgid "Challenge Method"
 msgid "Challenge Method"
 msgstr ""
 msgstr ""
 
 
@@ -1382,7 +1382,7 @@ msgstr ""
 msgid "disable"
 msgid "disable"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:81
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -1470,11 +1470,11 @@ msgstr ""
 msgid "DNS Provider"
 msgid "DNS Provider"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:207
+#: src/components/AutoCertForm/AutoCertForm.vue:228
 msgid "DNS01"
 msgid "DNS01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:240
+#: src/components/AutoCertForm/AutoCertForm.vue:261
 msgid "Do not enable this option unless you are sure that you need it."
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 msgstr ""
 
 
@@ -1486,7 +1486,7 @@ msgstr ""
 msgid "Do you want to %{action} this stream?"
 msgid "Do you want to %{action} this stream?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
@@ -1628,7 +1628,7 @@ msgstr ""
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:73
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:74
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -1761,7 +1761,7 @@ msgstr ""
 msgid "Enter domain name"
 msgid "Enter domain name"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:162
+#: src/components/AutoCertForm/AutoCertForm.vue:183
 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)"
 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)"
 msgstr ""
 msgstr ""
 
 
@@ -2293,11 +2293,11 @@ msgstr ""
 msgid "For Chinese user: https://cloud.nginxui.com/"
 msgid "For Chinese user: https://cloud.nginxui.com/"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:119
+#: src/components/AutoCertForm/AutoCertForm.vue:140
 msgid "For IP-based certificate configurations, only HTTP-01 challenge method is supported. DNS-01 challenge is not compatible with IP-based certificates."
 msgid "For IP-based certificate configurations, only HTTP-01 challenge method is supported. DNS-01 challenge is not compatible with IP-based certificates."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:167
+#: src/components/AutoCertForm/AutoCertForm.vue:188
 msgid "For IP-based certificates, please specify the server IP address that will be included in the certificate."
 msgid "For IP-based certificates, please specify the server IP address that will be included in the certificate."
 msgstr ""
 msgstr ""
 
 
@@ -2425,7 +2425,7 @@ msgstr ""
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:201
+#: src/components/AutoCertForm/AutoCertForm.vue:222
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
@@ -2441,7 +2441,7 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:259
+#: src/components/AutoCertForm/AutoCertForm.vue:280
 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 ""
 msgstr ""
 
 
@@ -2449,7 +2449,7 @@ msgstr ""
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:250
+#: src/components/AutoCertForm/AutoCertForm.vue:271
 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 ""
 msgstr ""
 
 
@@ -2530,7 +2530,7 @@ msgstr ""
 msgid "Interval"
 msgid "Interval"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:165
+#: src/views/certificate/ACMEUser.vue:164
 msgid "Invalid"
 msgid "Invalid"
 msgstr ""
 msgstr ""
 
 
@@ -2613,7 +2613,7 @@ msgstr ""
 msgid "IP"
 msgid "IP"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:102
+#: src/components/AutoCertForm/AutoCertForm.vue:123
 msgid "IP Certificate Notice"
 msgid "IP Certificate Notice"
 msgstr ""
 msgstr ""
 
 
@@ -2649,7 +2649,7 @@ msgstr ""
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:215
+#: src/components/AutoCertForm/AutoCertForm.vue:236
 #: src/views/certificate/CertificateList/certColumns.tsx:57
 #: src/views/certificate/CertificateList/certColumns.tsx:57
 msgid "Key Type"
 msgid "Key Type"
 msgstr ""
 msgstr ""
@@ -2718,7 +2718,7 @@ msgstr ""
 msgid "Legacy recovery code not allowed since totp is not enabled"
 msgid "Legacy recovery code not allowed since totp is not enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:247
+#: src/components/AutoCertForm/AutoCertForm.vue:268
 msgid "Lego disable CNAME Support"
 msgid "Lego disable CNAME Support"
 msgstr ""
 msgstr ""
 
 
@@ -2855,7 +2855,7 @@ msgstr ""
 msgid "Make certificate dir error: {0}"
 msgid "Make certificate dir error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:143
+#: src/components/AutoCertForm/AutoCertForm.vue:164
 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 ""
 msgstr ""
 
 
@@ -3039,7 +3039,7 @@ msgstr ""
 msgid "Multi-line Directive"
 msgid "Multi-line Directive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:175
+#: src/components/AutoCertForm/AutoCertForm.vue:196
 msgid "Must be a public IP address accessible from the internet"
 msgid "Must be a public IP address accessible from the internet"
 msgstr ""
 msgstr ""
 
 
@@ -3125,7 +3125,7 @@ msgstr ""
 #: src/views/certificate/components/DNSIssueCertificate.vue:183
 #: src/views/certificate/components/DNSIssueCertificate.vue:183
 #: src/views/install/components/InstallView.vue:96
 #: src/views/install/components/InstallView.vue:96
 #: src/views/site/site_add/SiteAdd.vue:131
 #: src/views/site/site_add/SiteAdd.vue:131
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:219
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:224
 msgid "Next"
 msgid "Next"
 msgstr ""
 msgstr ""
 
 
@@ -3371,7 +3371,7 @@ msgstr ""
 msgid "No servers configured"
 msgid "No servers configured"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:115
+#: src/components/AutoCertForm/AutoCertForm.vue:136
 msgid "No specific IP address found in server_name configuration. Please specify the server IP address below for the certificate."
 msgid "No specific IP address found in server_name configuration. Please specify the server IP address below for the certificate."
 msgstr ""
 msgstr ""
 
 
@@ -3424,7 +3424,7 @@ msgstr ""
 msgid "Not Loaded"
 msgid "Not Loaded"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:209
+#: src/components/AutoCertForm/AutoCertForm.vue:230
 msgid "Not supported for IP certificates"
 msgid "Not supported for IP certificates"
 msgstr ""
 msgstr ""
 
 
@@ -3432,7 +3432,7 @@ msgstr ""
 msgid "Not Valid Before: %{date}"
 msgid "Not Valid Before: %{date}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:129
+#: src/components/AutoCertForm/AutoCertForm.vue:150
 #: src/views/certificate/DNSCredential.vue:89
 #: src/views/certificate/DNSCredential.vue:89
 msgid "Note"
 msgid "Note"
 msgstr ""
 msgstr ""
@@ -3478,7 +3478,7 @@ msgstr ""
 msgid "Obtain cert error: {0}"
 msgid "Obtain cert error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:185
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:189
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr ""
 msgstr ""
 
 
@@ -3486,11 +3486,11 @@ msgstr ""
 msgid "Obtaining certificate"
 msgid "Obtaining certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:237
+#: src/components/AutoCertForm/AutoCertForm.vue:258
 msgid "OCSP Must Staple"
 msgid "OCSP Must Staple"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:241
+#: src/components/AutoCertForm/AutoCertForm.vue:262
 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 ""
 msgstr ""
 
 
@@ -3521,7 +3521,7 @@ msgstr ""
 #: src/views/notification/Notification.vue:39
 #: src/views/notification/Notification.vue:39
 #: src/views/site/components/SiteStatusSelect.vue:123
 #: src/views/site/components/SiteStatusSelect.vue:123
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:39
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:39
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_list/SiteList.vue:112
 #: src/views/site/site_list/SiteList.vue:112
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/components/StreamStatusSelect.vue:60
@@ -3732,11 +3732,11 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:77
+#: src/components/AutoCertForm/AutoCertForm.vue:98
 msgid "Please enter a valid IPv4 address (0-255 per octet)"
 msgid "Please enter a valid IPv4 address (0-255 per octet)"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:88
+#: src/components/AutoCertForm/AutoCertForm.vue:109
 msgid "Please enter a valid IPv4 or IPv6 address"
 msgid "Please enter a valid IPv4 or IPv6 address"
 msgstr ""
 msgstr ""
 
 
@@ -3761,7 +3761,7 @@ msgstr ""
 msgid "Please enter the security token received during backup"
 msgid "Please enter the security token received during backup"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:59
+#: src/components/AutoCertForm/AutoCertForm.vue:80
 msgid "Please enter the server IP address"
 msgid "Please enter the server IP address"
 msgstr ""
 msgstr ""
 
 
@@ -3777,7 +3777,7 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:147
+#: src/components/AutoCertForm/AutoCertForm.vue:168
 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 ""
 msgstr ""
 
 
@@ -3877,7 +3877,7 @@ msgstr ""
 msgid "Port"
 msgid "Port"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:178
+#: src/components/AutoCertForm/AutoCertForm.vue:199
 msgid "Port 80 must be open for HTTP-01 challenge validation"
 msgid "Port 80 must be open for HTTP-01 challenge validation"
 msgstr ""
 msgstr ""
 
 
@@ -3907,11 +3907,11 @@ msgstr ""
 msgid "Preparing lego configurations"
 msgid "Preparing lego configurations"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:185
+#: src/components/AutoCertForm/AutoCertForm.vue:206
 msgid "Private CA:"
 msgid "Private CA:"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:181
+#: src/components/AutoCertForm/AutoCertForm.vue:202
 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail"
 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail"
 msgstr ""
 msgstr ""
 
 
@@ -3977,7 +3977,7 @@ msgstr ""
 msgid "Proxy Targets"
 msgid "Proxy Targets"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:171
+#: src/components/AutoCertForm/AutoCertForm.vue:192
 msgid "Public CA Requirements:"
 msgid "Public CA Requirements:"
 msgstr ""
 msgstr ""
 
 
@@ -4029,7 +4029,7 @@ msgstr ""
 msgid "Regenerate response"
 msgid "Regenerate response"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:173
+#: src/views/certificate/ACMEUser.vue:172
 msgid "Register"
 msgid "Register"
 msgstr ""
 msgstr ""
 
 
@@ -4037,11 +4037,11 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:141
+#: src/views/certificate/ACMEUser.vue:140
 msgid "Register failed"
 msgid "Register failed"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:112
+#: src/views/certificate/ACMEUser.vue:111
 msgid "Register On Startup"
 msgid "Register On Startup"
 msgstr ""
 msgstr ""
 
 
@@ -4049,7 +4049,7 @@ msgstr ""
 msgid "Register passkey successfully"
 msgid "Register passkey successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:139
+#: src/views/certificate/ACMEUser.vue:138
 msgid "Register successfully"
 msgid "Register successfully"
 msgstr ""
 msgstr ""
 
 
@@ -4057,7 +4057,7 @@ msgstr ""
 msgid "Registering user"
 msgid "Registering user"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:156
+#: src/views/certificate/ACMEUser.vue:155
 msgid "Registration Status"
 msgid "Registration Status"
 msgstr ""
 msgstr ""
 
 
@@ -4333,7 +4333,7 @@ msgstr ""
 msgid "Revoke cert error: {0}"
 msgid "Revoke cert error: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:256
+#: src/components/AutoCertForm/AutoCertForm.vue:277
 msgid "Revoke Old Certificate"
 msgid "Revoke Old Certificate"
 msgstr ""
 msgstr ""
 
 
@@ -4666,7 +4666,7 @@ msgstr ""
 msgid "Server Info"
 msgid "Server Info"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:157
+#: src/components/AutoCertForm/AutoCertForm.vue:178
 msgid "Server IP Address"
 msgid "Server IP Address"
 msgstr ""
 msgstr ""
 
 
@@ -4678,7 +4678,7 @@ msgstr ""
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:105
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:106
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr ""
 msgstr ""
 
 
@@ -5127,7 +5127,7 @@ msgstr ""
 msgid "Test S3 Connection"
 msgid "Test S3 Connection"
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:139
+#: src/components/AutoCertForm/AutoCertForm.vue:160
 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 ""
 msgstr ""
 
 
@@ -5180,7 +5180,7 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:134
+#: src/components/AutoCertForm/AutoCertForm.vue:155
 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 ""
 msgstr ""
 
 
@@ -5263,11 +5263,11 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:107
+#: src/components/AutoCertForm/AutoCertForm.vue:128
 msgid "This site is configured as a default server (default_server) for HTTPS (port 443). IP certificates require Certificate Authority (CA) support and may not be available with all ACME providers."
 msgid "This site is configured as a default server (default_server) for HTTPS (port 443). IP certificates require Certificate Authority (CA) support and may not be available with all ACME providers."
 msgstr ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:111
+#: src/components/AutoCertForm/AutoCertForm.vue:132
 msgid "This site uses wildcard server name (_) which typically indicates an IP-based certificate. IP certificates require Certificate Authority (CA) support and may not be available with all ACME providers."
 msgid "This site uses wildcard server name (_) which typically indicates an IP-based certificate. IP certificates require Certificate Authority (CA) support and may not be available with all ACME providers."
 msgstr ""
 msgstr ""
 
 
@@ -5448,7 +5448,7 @@ msgid "Update successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
-#: src/views/certificate/ACMEUser.vue:123
+#: src/views/certificate/ACMEUser.vue:122
 #: src/views/certificate/DNSCredential.vue:65
 #: src/views/certificate/DNSCredential.vue:65
 #: src/views/config/components/ConfigRightPanel/Basic.vue:54
 #: src/views/config/components/ConfigRightPanel/Basic.vue:54
 #: src/views/config/configColumns.tsx:43
 #: src/views/config/configColumns.tsx:43
@@ -5563,7 +5563,7 @@ msgid "Username length cannot exceed 255 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/components/CertInfo/CertInfo.vue:24
 #: src/components/CertInfo/CertInfo.vue:24
-#: src/views/certificate/ACMEUser.vue:160
+#: src/views/certificate/ACMEUser.vue:159
 #: src/views/certificate/CertificateList/certColumns.tsx:76
 #: src/views/certificate/CertificateList/certColumns.tsx:76
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
@@ -5626,7 +5626,7 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/components/AutoCertForm/AutoCertForm.vue:82
+#: src/components/AutoCertForm/AutoCertForm.vue:103
 msgid "Warning: This appears to be a private IP address. Public CAs like Let's Encrypt cannot issue certificates for private IPs. Use a public IP address or consider using a private CA."
 msgid "Warning: This appears to be a private IP address. Public CAs like Let's Encrypt cannot issue certificates for private IPs. Use a public IP address or consider using a private CA."
 msgstr ""
 msgstr ""
 
 
@@ -5634,7 +5634,7 @@ msgstr ""
 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 ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
+#: src/views/site/site_edit/components/Cert/ObtainCert.vue:141
 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 ""
 msgstr ""
 
 
@@ -5662,7 +5662,7 @@ msgstr ""
 msgid "Weekly on %{day} at %{time}"
 msgid "Weekly on %{day} at %{time}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/ACMEUser.vue:118
+#: src/views/certificate/ACMEUser.vue:117
 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 ""
 msgstr ""
 
 

File diff suppressed because it is too large
+ 190 - 171
app/src/language/pt_PT/app.po


File diff suppressed because it is too large
+ 199 - 186
app/src/language/ru_RU/app.po


File diff suppressed because it is too large
+ 198 - 180
app/src/language/tr_TR/app.po


File diff suppressed because it is too large
+ 198 - 188
app/src/language/uk_UA/app.po


File diff suppressed because it is too large
+ 208 - 196
app/src/language/vi_VN/app.po


File diff suppressed because it is too large
+ 217 - 171
app/src/language/zh_CN/app.po


File diff suppressed because it is too large
+ 220 - 175
app/src/language/zh_TW/app.po


+ 4 - 0
app/src/views/preference/components/ExternalNotify/telegram.ts

@@ -12,6 +12,10 @@ const TelegramConfig: ExternalNotifyConfig = {
       key: 'chat_id',
       key: 'chat_id',
       label: 'Chat ID',
       label: 'Chat ID',
     },
     },
+    {
+      key: 'http_proxy',
+      label: 'HTTP Proxy',
+    },
   ],
   ],
 }
 }
 
 

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

@@ -15,7 +15,6 @@ lego --email you@example.com --dns dode -d '*.example.com' -d example.com run
   [Configuration.Additional]
   [Configuration.Additional]
     DODE_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     DODE_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     DODE_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
     DODE_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
-    DODE_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
     DODE_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
     DODE_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
     DODE_SEQUENCE_INTERVAL = "Time between sequential requests in seconds (Default: 60)"
     DODE_SEQUENCE_INTERVAL = "Time between sequential requests in seconds (Default: 60)"
 
 

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

@@ -15,7 +15,6 @@ lego --email you@example.com --dns duckdns -d '*.example.com' -d example.com run
   [Configuration.Additional]
   [Configuration.Additional]
     DUCKDNS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     DUCKDNS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     DUCKDNS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
     DUCKDNS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
-    DUCKDNS_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"
     DUCKDNS_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
     DUCKDNS_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
     DUCKDNS_SEQUENCE_INTERVAL = "Time between sequential requests in seconds (Default: 60)"
     DUCKDNS_SEQUENCE_INTERVAL = "Time between sequential requests in seconds (Default: 60)"
 
 

+ 1 - 1
internal/cert/config/ionos.toml

@@ -14,7 +14,7 @@ lego --email you@example.com --dns ionos -d '*.example.com' -d example.com run
     IONOS_API_KEY = "API key `<prefix>.<secret>` https://developer.hosting.ionos.com/docs/getstarted"
     IONOS_API_KEY = "API key `<prefix>.<secret>` https://developer.hosting.ionos.com/docs/getstarted"
   [Configuration.Additional]
   [Configuration.Additional]
     IONOS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
     IONOS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
-    IONOS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    IONOS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 900)"
     IONOS_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 300)"
     IONOS_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 300)"
     IONOS_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
     IONOS_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
 
 

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

@@ -22,6 +22,7 @@ Users are required to have DELETE ACL level or zone admin permissions on the Vin
     VINYLDNS_SECRET_KEY = "The VinylDNS API Secret key"
     VINYLDNS_SECRET_KEY = "The VinylDNS API Secret key"
     VINYLDNS_HOST = "The VinylDNS API URL"
     VINYLDNS_HOST = "The VinylDNS API URL"
   [Configuration.Additional]
   [Configuration.Additional]
+    VINYLDNS_QUOTE_VALUE = "Adds quotes around the TXT record value (Default: false)"
     VINYLDNS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 4)"
     VINYLDNS_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 4)"
     VINYLDNS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 120)"
     VINYLDNS_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 120)"
     VINYLDNS_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 30)"
     VINYLDNS_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 30)"

+ 23 - 0
internal/cert/config/zoneedit.toml

@@ -0,0 +1,23 @@
+Name = "ZoneEdit"
+Description = ''''''
+URL = "https://www.zoneedit.com"
+Code = "zoneedit"
+Since = "v4.25.0"
+
+Example = '''
+ZONEEDIT_USER="xxxxxxxxxxxxxxxxxxxxx" \
+ZONEEDIT_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxx" \
+lego --email you@example.com --dns zoneedit -d '*.example.com' -d example.com run
+'''
+
+[Configuration]
+  [Configuration.Credentials]
+    ZONEEDIT_USER = "User ID"
+    ZONEEDIT_AUTH_TOKEN = "Authentication token"
+  [Configuration.Additional]
+    ZONEEDIT_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 2)"
+    ZONEEDIT_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 60)"
+    ZONEEDIT_HTTP_TIMEOUT = "API request timeout in seconds (Default: 30)"
+
+[Links]
+  API = "https://support.zoneedit.com/en/knowledgebase/article/changes-to-dynamic-dns"

+ 23 - 3
internal/notification/telegram.go

@@ -4,17 +4,21 @@ import (
 	"context"
 	"context"
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
+	"net/http"
+	"net/url"
 	"strconv"
 	"strconv"
 
 
 	"github.com/0xJacky/Nginx-UI/model"
 	"github.com/0xJacky/Nginx-UI/model"
+	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
 	"github.com/nikoksr/notify/service/telegram"
 	"github.com/nikoksr/notify/service/telegram"
 	"github.com/uozi-tech/cosy/map2struct"
 	"github.com/uozi-tech/cosy/map2struct"
 )
 )
 
 
 // @external_notifier(Telegram)
 // @external_notifier(Telegram)
 type Telegram struct {
 type Telegram struct {
-	BotToken string `json:"bot_token" title:"Bot Token"`
-	ChatID   string `json:"chat_id" title:"Chat ID"`
+	BotToken  string `json:"bot_token" title:"Bot Token"`
+	ChatID    string `json:"chat_id" title:"Chat ID"`
+	HTTPProxy string `json:"http_proxy" title:"HTTP Proxy"`
 }
 }
 
 
 func init() {
 func init() {
@@ -28,11 +32,27 @@ func init() {
 			return ErrInvalidNotifierConfig
 			return ErrInvalidNotifierConfig
 		}
 		}
 
 
+		client := http.DefaultClient
+		if telegramConfig.HTTPProxy != "" {
+			proxyURL, err := url.Parse(telegramConfig.HTTPProxy)
+			if err != nil {
+				return err
+			}
+			client = &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}}
+		}
+
+		botAPI, err := tgbotapi.NewBotAPIWithClient(telegramConfig.BotToken, client)
+		if err != nil {
+			return err
+		}
+
 		telegramService, err := telegram.New(telegramConfig.BotToken)
 		telegramService, err := telegram.New(telegramConfig.BotToken)
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}
 
 
+		telegramService.SetClient(botAPI)
+
 		// ChatID must be an integer for telegram service
 		// ChatID must be an integer for telegram service
 		chatIDInt, err := strconv.ParseInt(telegramConfig.ChatID, 10, 64)
 		chatIDInt, err := strconv.ParseInt(telegramConfig.ChatID, 10, 64)
 		if err != nil {
 		if err != nil {
@@ -45,7 +65,7 @@ func init() {
 		}
 		}
 
 
 		telegramService.AddReceivers(chatIDInt)
 		telegramService.AddReceivers(chatIDInt)
-		
+
 		return telegramService.Send(ctx, msg.GetTitle(n.Language), msg.GetContent(n.Language))
 		return telegramService.Send(ctx, msg.GetTitle(n.Language), msg.GetContent(n.Language))
 	})
 	})
 }
 }

+ 9 - 1
query/acme_users.gen.go

@@ -39,6 +39,8 @@ func newAcmeUser(db *gorm.DB, opts ...gen.DOOption) acmeUser {
 	_acmeUser.Key = field.NewField(tableName, "key")
 	_acmeUser.Key = field.NewField(tableName, "key")
 	_acmeUser.Proxy = field.NewString(tableName, "proxy")
 	_acmeUser.Proxy = field.NewString(tableName, "proxy")
 	_acmeUser.RegisterOnStartup = field.NewBool(tableName, "register_on_startup")
 	_acmeUser.RegisterOnStartup = field.NewBool(tableName, "register_on_startup")
+	_acmeUser.EABKeyID = field.NewString(tableName, "eab_key_id")
+	_acmeUser.EABHMACKey = field.NewString(tableName, "eabhmac_key")
 
 
 	_acmeUser.fillFieldMap()
 	_acmeUser.fillFieldMap()
 
 
@@ -60,6 +62,8 @@ type acmeUser struct {
 	Key               field.Field
 	Key               field.Field
 	Proxy             field.String
 	Proxy             field.String
 	RegisterOnStartup field.Bool
 	RegisterOnStartup field.Bool
+	EABKeyID          field.String
+	EABHMACKey        field.String
 
 
 	fieldMap map[string]field.Expr
 	fieldMap map[string]field.Expr
 }
 }
@@ -87,6 +91,8 @@ func (a *acmeUser) updateTableName(table string) *acmeUser {
 	a.Key = field.NewField(table, "key")
 	a.Key = field.NewField(table, "key")
 	a.Proxy = field.NewString(table, "proxy")
 	a.Proxy = field.NewString(table, "proxy")
 	a.RegisterOnStartup = field.NewBool(table, "register_on_startup")
 	a.RegisterOnStartup = field.NewBool(table, "register_on_startup")
+	a.EABKeyID = field.NewString(table, "eab_key_id")
+	a.EABHMACKey = field.NewString(table, "eabhmac_key")
 
 
 	a.fillFieldMap()
 	a.fillFieldMap()
 
 
@@ -103,7 +109,7 @@ func (a *acmeUser) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
 }
 }
 
 
 func (a *acmeUser) fillFieldMap() {
 func (a *acmeUser) fillFieldMap() {
-	a.fieldMap = make(map[string]field.Expr, 11)
+	a.fieldMap = make(map[string]field.Expr, 13)
 	a.fieldMap["id"] = a.ID
 	a.fieldMap["id"] = a.ID
 	a.fieldMap["created_at"] = a.CreatedAt
 	a.fieldMap["created_at"] = a.CreatedAt
 	a.fieldMap["updated_at"] = a.UpdatedAt
 	a.fieldMap["updated_at"] = a.UpdatedAt
@@ -115,6 +121,8 @@ func (a *acmeUser) fillFieldMap() {
 	a.fieldMap["key"] = a.Key
 	a.fieldMap["key"] = a.Key
 	a.fieldMap["proxy"] = a.Proxy
 	a.fieldMap["proxy"] = a.Proxy
 	a.fieldMap["register_on_startup"] = a.RegisterOnStartup
 	a.fieldMap["register_on_startup"] = a.RegisterOnStartup
+	a.fieldMap["eab_key_id"] = a.EABKeyID
+	a.fieldMap["eabhmac_key"] = a.EABHMACKey
 }
 }
 
 
 func (a acmeUser) clone(db *gorm.DB) acmeUser {
 func (a acmeUser) clone(db *gorm.DB) acmeUser {

+ 14 - 10
query/env_groups.gen.go

@@ -36,6 +36,7 @@ func newEnvGroup(db *gorm.DB, opts ...gen.DOOption) envGroup {
 	_envGroup.SyncNodeIds = field.NewField(tableName, "sync_node_ids")
 	_envGroup.SyncNodeIds = field.NewField(tableName, "sync_node_ids")
 	_envGroup.OrderID = field.NewInt(tableName, "order_id")
 	_envGroup.OrderID = field.NewInt(tableName, "order_id")
 	_envGroup.PostSyncAction = field.NewString(tableName, "post_sync_action")
 	_envGroup.PostSyncAction = field.NewString(tableName, "post_sync_action")
+	_envGroup.UpstreamTestType = field.NewString(tableName, "upstream_test_type")
 
 
 	_envGroup.fillFieldMap()
 	_envGroup.fillFieldMap()
 
 
@@ -45,15 +46,16 @@ func newEnvGroup(db *gorm.DB, opts ...gen.DOOption) envGroup {
 type envGroup struct {
 type envGroup struct {
 	envGroupDo
 	envGroupDo
 
 
-	ALL            field.Asterisk
-	ID             field.Uint64
-	CreatedAt      field.Time
-	UpdatedAt      field.Time
-	DeletedAt      field.Field
-	Name           field.String
-	SyncNodeIds    field.Field
-	OrderID        field.Int
-	PostSyncAction field.String
+	ALL              field.Asterisk
+	ID               field.Uint64
+	CreatedAt        field.Time
+	UpdatedAt        field.Time
+	DeletedAt        field.Field
+	Name             field.String
+	SyncNodeIds      field.Field
+	OrderID          field.Int
+	PostSyncAction   field.String
+	UpstreamTestType field.String
 
 
 	fieldMap map[string]field.Expr
 	fieldMap map[string]field.Expr
 }
 }
@@ -78,6 +80,7 @@ func (e *envGroup) updateTableName(table string) *envGroup {
 	e.SyncNodeIds = field.NewField(table, "sync_node_ids")
 	e.SyncNodeIds = field.NewField(table, "sync_node_ids")
 	e.OrderID = field.NewInt(table, "order_id")
 	e.OrderID = field.NewInt(table, "order_id")
 	e.PostSyncAction = field.NewString(table, "post_sync_action")
 	e.PostSyncAction = field.NewString(table, "post_sync_action")
+	e.UpstreamTestType = field.NewString(table, "upstream_test_type")
 
 
 	e.fillFieldMap()
 	e.fillFieldMap()
 
 
@@ -94,7 +97,7 @@ func (e *envGroup) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
 }
 }
 
 
 func (e *envGroup) fillFieldMap() {
 func (e *envGroup) fillFieldMap() {
-	e.fieldMap = make(map[string]field.Expr, 8)
+	e.fieldMap = make(map[string]field.Expr, 9)
 	e.fieldMap["id"] = e.ID
 	e.fieldMap["id"] = e.ID
 	e.fieldMap["created_at"] = e.CreatedAt
 	e.fieldMap["created_at"] = e.CreatedAt
 	e.fieldMap["updated_at"] = e.UpdatedAt
 	e.fieldMap["updated_at"] = e.UpdatedAt
@@ -103,6 +106,7 @@ func (e *envGroup) fillFieldMap() {
 	e.fieldMap["sync_node_ids"] = e.SyncNodeIds
 	e.fieldMap["sync_node_ids"] = e.SyncNodeIds
 	e.fieldMap["order_id"] = e.OrderID
 	e.fieldMap["order_id"] = e.OrderID
 	e.fieldMap["post_sync_action"] = e.PostSyncAction
 	e.fieldMap["post_sync_action"] = e.PostSyncAction
+	e.fieldMap["upstream_test_type"] = e.UpstreamTestType
 }
 }
 
 
 func (e envGroup) clone(db *gorm.DB) envGroup {
 func (e envGroup) clone(db *gorm.DB) envGroup {

Some files were not shown because too many files changed in this diff