mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
feat: logrotate cron task for docker users #255
This commit is contained in:
parent
b7f50f0053
commit
0fa98703cd
26 changed files with 663 additions and 119 deletions
|
@ -2,6 +2,7 @@ package system
|
|||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/api"
|
||||
"github.com/0xJacky/Nginx-UI/internal/cron"
|
||||
"github.com/0xJacky/Nginx-UI/settings"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
|
@ -10,26 +11,34 @@ import (
|
|||
|
||||
func GetSettings(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"server": settings.ServerSettings,
|
||||
"nginx": settings.NginxSettings,
|
||||
"openai": settings.OpenAISettings,
|
||||
"server": settings.ServerSettings,
|
||||
"nginx": settings.NginxSettings,
|
||||
"openai": settings.OpenAISettings,
|
||||
"logrotate": settings.LogrotateSettings,
|
||||
})
|
||||
}
|
||||
|
||||
func SaveSettings(c *gin.Context) {
|
||||
var json struct {
|
||||
Server settings.Server `json:"server"`
|
||||
Nginx settings.Nginx `json:"nginx"`
|
||||
Openai settings.OpenAI `json:"openai"`
|
||||
Server settings.Server `json:"server"`
|
||||
Nginx settings.Nginx `json:"nginx"`
|
||||
Openai settings.OpenAI `json:"openai"`
|
||||
Logrotate settings.Logrotate `json:"logrotate"`
|
||||
}
|
||||
|
||||
if !api.BindAndValid(c, &json) {
|
||||
return
|
||||
}
|
||||
|
||||
if settings.LogrotateSettings.Enabled != json.Logrotate.Enabled ||
|
||||
settings.LogrotateSettings.Interval != json.Logrotate.Interval {
|
||||
go cron.RestartLogrotate()
|
||||
}
|
||||
|
||||
fillSettings(&settings.ServerSettings, &json.Server)
|
||||
fillSettings(&settings.NginxSettings, &json.Nginx)
|
||||
fillSettings(&settings.OpenAISettings, &json.Openai)
|
||||
fillSettings(&settings.LogrotateSettings, &json.Logrotate)
|
||||
|
||||
settings.ReflectFrom()
|
||||
|
||||
|
|
|
@ -155,7 +155,7 @@ msgstr "Base information"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
#, fuzzy
|
||||
msgid "Basic"
|
||||
|
@ -255,6 +255,11 @@ msgstr ""
|
|||
msgid "Cleared successfully"
|
||||
msgstr "Disabled successfully"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "Comments"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -503,7 +508,7 @@ msgstr "Are you sure you want to remove this directive?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "Are you sure you want to remove this directive?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
|
@ -618,6 +623,7 @@ msgstr "Enable TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -838,12 +844,16 @@ msgstr "Enabled successfully"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "Intermediate Certification Authorities: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
#, fuzzy
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "Certificate is valid"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
#, fuzzy
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "Certificate Status"
|
||||
|
@ -857,6 +867,7 @@ msgstr "Enabled successfully"
|
|||
msgid "Jwt Secret"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
msgid "Key Type"
|
||||
msgstr ""
|
||||
|
@ -924,6 +935,20 @@ msgstr "Login successful"
|
|||
msgid "Logout successful"
|
||||
msgstr "Logout successful"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
@ -963,6 +988,10 @@ msgstr "Memory"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "Memory and Storage"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -1019,13 +1048,13 @@ msgstr "Network Total Send"
|
|||
msgid "New version released"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "Next"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1148,7 +1177,7 @@ msgstr ""
|
|||
msgid "Online"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1242,7 +1271,7 @@ msgstr ""
|
|||
msgid "Pre-release"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1334,7 +1363,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "Certificate is valid"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
#, fuzzy
|
||||
msgid "Renew successfully"
|
||||
msgstr "Enabled successfully"
|
||||
|
@ -1368,7 +1397,7 @@ msgstr ""
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
|
@ -1383,7 +1412,7 @@ msgstr "Save error %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
#, fuzzy
|
||||
msgid "Save successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
@ -1416,7 +1445,7 @@ msgstr "Send"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1617,6 +1646,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
|
|
@ -152,7 +152,7 @@ msgstr "Información general"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
msgid "Basic"
|
||||
msgstr "Básico"
|
||||
|
@ -246,6 +246,11 @@ msgstr "Borrar"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "Limpiado exitoso"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "Comentarios"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -480,7 +485,7 @@ msgstr "¿Quieres eliminar este servidor?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "¿Quieres eliminar esta transmisión?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr "Dominio"
|
||||
|
||||
|
@ -590,6 +595,7 @@ msgstr "Habilitar TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -802,11 +808,15 @@ msgstr "Instalación exitosa"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "Autoridades de certificación intermedias: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "Obtener certificado comodín"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "Obtener certificado Comodín"
|
||||
|
||||
|
@ -818,6 +828,7 @@ msgstr "Certificado emitido con éxito"
|
|||
msgid "Jwt Secret"
|
||||
msgstr "Secreto Jwt"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
#, fuzzy
|
||||
msgid "Key Type"
|
||||
|
@ -881,6 +892,20 @@ msgstr "Acceso exitoso"
|
|||
msgid "Logout successful"
|
||||
msgstr "Cierre de sesión exitoso"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
msgid ""
|
||||
"Make sure you have configured a reverse proxy for .well-known directory to "
|
||||
|
@ -917,6 +942,10 @@ msgstr "Memoria"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "Memoria y almacenamiento"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -970,13 +999,13 @@ msgstr "Total enviado por la red"
|
|||
msgid "New version released"
|
||||
msgstr "Se liberó una nueva versión"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr "Nginx"
|
||||
|
||||
|
@ -1093,7 +1122,7 @@ msgstr "Una vez que se complete la verificación, los registros se eliminarán."
|
|||
msgid "Online"
|
||||
msgstr "En línea"
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr "OpenAI"
|
||||
|
||||
|
@ -1195,7 +1224,7 @@ msgstr "¡Seleccione al menos un nodo!"
|
|||
msgid "Pre-release"
|
||||
msgstr "Prelanzamiento"
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "Configuración"
|
||||
|
||||
|
@ -1280,7 +1309,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "Renovado de Certificado exitoso"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
msgid "Renew successfully"
|
||||
msgstr "Renovado con éxito"
|
||||
|
||||
|
@ -1312,7 +1341,7 @@ msgstr "Corriendo"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
|
@ -1327,7 +1356,7 @@ msgstr "Error al guardar %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
msgid "Save successfully"
|
||||
msgstr "Guardado con éxito"
|
||||
|
||||
|
@ -1358,7 +1387,7 @@ msgstr "Enviado"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1548,6 +1577,10 @@ msgstr "Este campo es obligatorio"
|
|||
msgid "This field should not be empty"
|
||||
msgstr "Este campo no debe estar vacío"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
|
|
@ -155,7 +155,7 @@ msgstr "Information générale"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
msgid "Basic"
|
||||
msgstr "Basique"
|
||||
|
@ -253,6 +253,11 @@ msgstr "Effacer"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "Désactivé avec succès"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -497,7 +502,7 @@ msgstr "Voulez-vous supprimer ce serveur ?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "Voulez-vous supprimer ce serveur ?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
|
@ -615,6 +620,7 @@ msgstr "Activer TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -836,12 +842,16 @@ msgstr "Installé avec succès"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "Autorités de certification intermédiaires : %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
#, fuzzy
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "Obtenir un certificat"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
#, fuzzy
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "État du certificat"
|
||||
|
@ -854,6 +864,7 @@ msgstr "Certificat délivré avec succès"
|
|||
msgid "Jwt Secret"
|
||||
msgstr "Secret Jwt"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
#, fuzzy
|
||||
msgid "Key Type"
|
||||
|
@ -924,6 +935,20 @@ msgstr "Connexion réussie"
|
|||
msgid "Logout successful"
|
||||
msgstr "Déconnexion réussie"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
@ -963,6 +988,10 @@ msgstr "Mémoire"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "Mémoire et stockage"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -1017,13 +1046,13 @@ msgstr "Envoi total réseau"
|
|||
msgid "New version released"
|
||||
msgstr "Nouvelle version publiée"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
#, fuzzy
|
||||
msgid "Nginx"
|
||||
msgstr "Journal Nginx"
|
||||
|
@ -1144,7 +1173,7 @@ msgstr ""
|
|||
msgid "Online"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr "OpenAI"
|
||||
|
||||
|
@ -1244,7 +1273,7 @@ msgstr ""
|
|||
msgid "Pre-release"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "Préférence"
|
||||
|
||||
|
@ -1337,7 +1366,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "Changer de certificat"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
#, fuzzy
|
||||
msgid "Renew successfully"
|
||||
msgstr "Activé avec succès"
|
||||
|
@ -1370,7 +1399,7 @@ msgstr "En cours d'éxécution"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
|
@ -1385,7 +1414,7 @@ msgstr "Enregistrer l'erreur %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
msgid "Save successfully"
|
||||
msgstr "Sauvegarde réussie"
|
||||
|
||||
|
@ -1416,7 +1445,7 @@ msgstr "Envoyer"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1620,6 +1649,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
|
|
@ -149,7 +149,7 @@ msgstr ""
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
msgid "Basic"
|
||||
msgstr ""
|
||||
|
@ -245,6 +245,10 @@ msgstr ""
|
|||
msgid "Cleared successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -484,7 +488,7 @@ msgstr ""
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
|
@ -595,6 +599,7 @@ msgstr ""
|
|||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179
|
||||
#: src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170
|
||||
#: src/views/stream/StreamList.vue:32
|
||||
|
@ -814,11 +819,15 @@ msgstr ""
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr ""
|
||||
|
||||
|
@ -830,6 +839,7 @@ msgstr ""
|
|||
msgid "Jwt Secret"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
msgid "Key Type"
|
||||
msgstr ""
|
||||
|
@ -894,6 +904,14 @@ msgstr ""
|
|||
msgid "Logout successful"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid "Logrotate, by default, is enabled in most mainstream Linux distributions for users who install Nginx UI on the host machine, so you don't need to modify the parameters on this page. For users who install Nginx UI using Docker containers, you can manually enable this option. The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort before obtaining the certificate."
|
||||
msgstr ""
|
||||
|
@ -929,6 +947,10 @@ msgstr ""
|
|||
msgid "Memory and Storage"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -985,13 +1007,13 @@ msgstr ""
|
|||
msgid "New version released"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1112,7 +1134,7 @@ msgstr ""
|
|||
msgid "Online"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1203,7 +1225,7 @@ msgid "Pre-release"
|
|||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:210
|
||||
#: src/views/preference/Preference.vue:91
|
||||
#: src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1288,7 +1310,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
msgid "Renew successfully"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1321,7 +1343,7 @@ msgstr ""
|
|||
#: src/views/config/ConfigEdit.vue:98
|
||||
#: src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119
|
||||
#: src/views/preference/Preference.vue:124
|
||||
#: src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
@ -1338,7 +1360,7 @@ msgstr ""
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
msgid "Save successfully"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1372,7 +1394,7 @@ msgstr ""
|
|||
#: src/views/config/ConfigEdit.vue:42
|
||||
#: src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72
|
||||
#: src/views/preference/Preference.vue:65
|
||||
#: src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116
|
||||
#: src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
|
@ -1557,6 +1579,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
|
|
@ -155,7 +155,7 @@ msgstr "Основная информация"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
#, fuzzy
|
||||
msgid "Basic"
|
||||
|
@ -255,6 +255,11 @@ msgstr "Очистить"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "Отключено успешно"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "Комментарии"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -503,7 +508,7 @@ msgstr "Вы хотите удалить этот сервер?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "Вы хотите удалить этот сервер?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
|
@ -620,6 +625,7 @@ msgstr "Включить TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -841,12 +847,16 @@ msgstr "Установленно"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "Промежуточные центры сертификации: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
#, fuzzy
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "Получить сертификат"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
#, fuzzy
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "Статус сертификата"
|
||||
|
@ -860,6 +870,7 @@ msgstr "Сертификат успешно выдан"
|
|||
msgid "Jwt Secret"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
#, fuzzy
|
||||
msgid "Key Type"
|
||||
|
@ -928,6 +939,20 @@ msgstr "Авторизация успешна"
|
|||
msgid "Logout successful"
|
||||
msgstr "Выход выполнен успешно"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
@ -967,6 +992,10 @@ msgstr "Память"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "Память и хранилище"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -1023,13 +1052,13 @@ msgstr "Всего отправлено"
|
|||
msgid "New version released"
|
||||
msgstr "Вышла новая версия"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "Дальше"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
#, fuzzy
|
||||
msgid "Nginx"
|
||||
msgstr "Журнал"
|
||||
|
@ -1153,7 +1182,7 @@ msgstr ""
|
|||
msgid "Online"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1249,7 +1278,7 @@ msgstr ""
|
|||
msgid "Pre-release"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "Настройки"
|
||||
|
||||
|
@ -1341,7 +1370,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "Сертификат действителен"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
#, fuzzy
|
||||
msgid "Renew successfully"
|
||||
msgstr "Активировано успешно"
|
||||
|
@ -1375,7 +1404,7 @@ msgstr "Выполняется"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
|
@ -1390,7 +1419,7 @@ msgstr "Ошибка сохранения %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
#, fuzzy
|
||||
msgid "Save successfully"
|
||||
msgstr "Успешно сохранено"
|
||||
|
@ -1423,7 +1452,7 @@ msgstr "Отправлено"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1625,6 +1654,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr "Это поле обязательно к заполнению"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
@ -1723,8 +1756,8 @@ msgid ""
|
|||
"We will add one or more TXT records to the DNS records of your domain for "
|
||||
"ownership verification."
|
||||
msgstr ""
|
||||
"Мы добавим одну или несколько записей TXT в DNS записи вашего домена для"
|
||||
"подтверждение права собственности"
|
||||
"Мы добавим одну или несколько записей TXT в DNS записи вашего домена "
|
||||
"дляподтверждение права собственности"
|
||||
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:135
|
||||
msgid ""
|
||||
|
|
|
@ -155,7 +155,7 @@ msgstr "Thông tin"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
#, fuzzy
|
||||
msgid "Basic"
|
||||
|
@ -255,6 +255,11 @@ msgstr "Xoá"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "Đã xóa thành công"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "Bình luận"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -504,7 +509,7 @@ msgstr "Bạn muốn xóa máy chủ này ?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "Bạn muốn xóa máy chủ này ?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
|
@ -621,6 +626,7 @@ msgstr "Bật TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -843,12 +849,16 @@ msgstr "Cài đặt thành công"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "Cơ quan cấp chứng chỉ: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
#, fuzzy
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "Gia hạn SSL"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
#, fuzzy
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "Thêm chứng chỉ SSL"
|
||||
|
@ -862,6 +872,7 @@ msgstr "Cấp chứng chỉ thành công"
|
|||
msgid "Jwt Secret"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
#, fuzzy
|
||||
msgid "Key Type"
|
||||
|
@ -930,6 +941,20 @@ msgstr "Đăng nhập thành công"
|
|||
msgid "Logout successful"
|
||||
msgstr "Đã đăng xuất"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
@ -968,6 +993,10 @@ msgstr "Memory"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "Memory và Storage"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -1024,13 +1053,13 @@ msgstr "Tổng lưu lượng mạng đã gửi"
|
|||
msgid "New version released"
|
||||
msgstr "Đã có phiên bản mới"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "Tiếp theo"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1153,7 +1182,7 @@ msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
|
|||
msgid "Online"
|
||||
msgstr "Trực tuyến"
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1251,7 +1280,7 @@ msgstr ""
|
|||
msgid "Pre-release"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "Cài đặt"
|
||||
|
||||
|
@ -1343,7 +1372,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "Gia hạn chứng chỉ SSL thành công"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
#, fuzzy
|
||||
msgid "Renew successfully"
|
||||
msgstr "Gia hạn chứng chỉ SSL"
|
||||
|
@ -1377,7 +1406,7 @@ msgstr "Running"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "Lưu"
|
||||
|
||||
|
@ -1392,7 +1421,7 @@ msgstr "Đã xảy ra lỗi khi lưu %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
#, fuzzy
|
||||
msgid "Save successfully"
|
||||
msgstr "Lưu thành công"
|
||||
|
@ -1425,7 +1454,7 @@ msgstr "Gửi"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1619,6 +1648,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr "Trường này không được để trống"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr "Tiêu đề"
|
||||
|
|
Binary file not shown.
|
@ -151,7 +151,7 @@ msgstr "基本信息"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
msgid "Basic"
|
||||
msgstr "基本"
|
||||
|
@ -245,6 +245,10 @@ msgstr "清空"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "清除成功"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
msgid "Command"
|
||||
msgstr "命令"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -478,7 +482,7 @@ msgstr "你想删除这个服务器吗?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "你想删除这个 Upstream 吗?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr "域名"
|
||||
|
||||
|
@ -586,6 +590,7 @@ msgstr "启用 TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -796,11 +801,15 @@ msgstr "安装成功"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "中级证书颁发机构: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr "间隔"
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "签发通配符证书"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "颁发通配符证书"
|
||||
|
||||
|
@ -812,6 +821,7 @@ msgstr "证书申请成功"
|
|||
msgid "Jwt Secret"
|
||||
msgstr "Jwt 密钥"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
msgid "Key Type"
|
||||
msgstr "密钥类型"
|
||||
|
@ -874,6 +884,24 @@ msgstr "登录成功"
|
|||
msgid "Logout successful"
|
||||
msgstr "登出成功"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr "Logrotate"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
"对于在宿主机上安装 Nginx UI 的用户,大多数主流 Linux 发行版都默认启用 "
|
||||
"logrotate 定时任务,因此您无需修改本页面的参数。对于使用 Docker 容器安装 "
|
||||
"Nginx 用户界面的用户,您可以手动启用该选项。Nginx UI 的定时任务任务调度器将按"
|
||||
"照您设置的时间间隔(以分钟为单位)执行 logrotate 命令。"
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
msgid ""
|
||||
"Make sure you have configured a reverse proxy for .well-known directory to "
|
||||
|
@ -910,6 +938,10 @@ msgstr "内存"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "内存与存储"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr "分钟"
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -963,13 +995,13 @@ msgstr "上传流量"
|
|||
msgid "New version released"
|
||||
msgstr "新版本发布"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "下一步"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr "Nginx"
|
||||
|
||||
|
@ -1086,7 +1118,7 @@ msgstr "一旦验证完成,这些记录将被删除。"
|
|||
msgid "Online"
|
||||
msgstr "在线"
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr "OpenAI"
|
||||
|
||||
|
@ -1181,7 +1213,7 @@ msgstr "请至少选择一个节点!"
|
|||
msgid "Pre-release"
|
||||
msgstr "预发布"
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "偏好设置"
|
||||
|
||||
|
@ -1266,7 +1298,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "证书续期成功"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
msgid "Renew successfully"
|
||||
msgstr "更新成功"
|
||||
|
||||
|
@ -1298,7 +1330,7 @@ msgstr "运行中"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
|
@ -1313,7 +1345,7 @@ msgstr "保存错误 %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
msgid "Save successfully"
|
||||
msgstr "保存成功"
|
||||
|
||||
|
@ -1344,7 +1376,7 @@ msgstr "上传"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1530,6 +1562,10 @@ msgstr "此字段必填"
|
|||
msgid "This field should not be empty"
|
||||
msgstr "该字段不能为空"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr "提示"
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr "标题"
|
||||
|
|
|
@ -155,7 +155,7 @@ msgstr "基本資訊"
|
|||
|
||||
#: src/views/config/ConfigEdit.vue:117
|
||||
#: src/views/domain/components/RightSettings.vue:76
|
||||
#: src/views/preference/Preference.vue:96
|
||||
#: src/views/preference/Preference.vue:95
|
||||
#: src/views/stream/components/RightSettings.vue:76
|
||||
msgid "Basic"
|
||||
msgstr "基本"
|
||||
|
@ -252,6 +252,11 @@ msgstr "清除"
|
|||
msgid "Cleared successfully"
|
||||
msgstr "成功停用"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:27
|
||||
#, fuzzy
|
||||
msgid "Command"
|
||||
msgstr "備註"
|
||||
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:119
|
||||
#: src/views/domain/ngx_conf/LocationEditor.vue:88
|
||||
|
@ -492,7 +497,7 @@ msgstr "您要移除此伺服器嗎?"
|
|||
msgid "Do you want to remove this upstream?"
|
||||
msgstr "您要移除此伺服器嗎?"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:72
|
||||
#: src/views/certificate/WildcardCertificate.vue:100
|
||||
msgid "Domain"
|
||||
msgstr "網域"
|
||||
|
||||
|
@ -602,6 +607,7 @@ msgstr "啟用 TLS"
|
|||
#: src/views/domain/cert/ChangeCert.vue:44
|
||||
#: src/views/domain/components/RightSettings.vue:78
|
||||
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
|
||||
#: src/views/preference/LogrotateSettings.vue:24
|
||||
#: src/views/stream/components/RightSettings.vue:78
|
||||
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
|
||||
msgid "Enabled"
|
||||
|
@ -819,12 +825,16 @@ msgstr "安裝成功"
|
|||
msgid "Intermediate Certification Authorities: %{issuer}"
|
||||
msgstr "中級憑證頒發機構: %{issuer}"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:30
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/certificate/Certificate.vue:137
|
||||
#, fuzzy
|
||||
msgid "Issue wildcard certificate"
|
||||
msgstr "取得憑證"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:61
|
||||
#: src/views/certificate/WildcardCertificate.vue:89
|
||||
#, fuzzy
|
||||
msgid "Issue Wildcard Certificate"
|
||||
msgstr "憑證狀態"
|
||||
|
@ -837,6 +847,7 @@ msgstr "成功頒發憑證"
|
|||
msgid "Jwt Secret"
|
||||
msgstr "Jwt Secret"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:107
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
|
||||
#, fuzzy
|
||||
msgid "Key Type"
|
||||
|
@ -904,6 +915,20 @@ msgstr "登入成功"
|
|||
msgid "Logout successful"
|
||||
msgstr "登出成功"
|
||||
|
||||
#: src/views/preference/Preference.vue:113
|
||||
msgid "Logrotate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:17
|
||||
msgid ""
|
||||
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
|
||||
"users who install Nginx UI on the host machine, so you don't need to modify "
|
||||
"the parameters on this page. For users who install Nginx UI using Docker "
|
||||
"containers, you can manually enable this option. The crontab task scheduler "
|
||||
"of Nginx UI will execute the logrotate command at the interval you set in "
|
||||
"minutes."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
|
||||
msgid ""
|
||||
"Make sure you have configured a reverse proxy for .well-known directory to "
|
||||
|
@ -941,6 +966,10 @@ msgstr "記憶體"
|
|||
msgid "Memory and Storage"
|
||||
msgstr "記憶體與儲存"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:34
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChatGPT/ChatGPT.vue:256
|
||||
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
|
||||
|
@ -995,13 +1024,13 @@ msgstr "上傳流量"
|
|||
msgid "New version released"
|
||||
msgstr "新版本發布"
|
||||
|
||||
#: src/views/certificate/WildcardCertificate.vue:87
|
||||
#: src/views/certificate/WildcardCertificate.vue:127
|
||||
#: src/views/domain/cert/components/ObtainCert.vue:204
|
||||
#: src/views/domain/DomainAdd.vue:145
|
||||
msgid "Next"
|
||||
msgstr "下一步"
|
||||
|
||||
#: src/views/preference/Preference.vue:102
|
||||
#: src/views/preference/Preference.vue:101
|
||||
msgid "Nginx"
|
||||
msgstr "Nginx"
|
||||
|
||||
|
@ -1120,7 +1149,7 @@ msgstr ""
|
|||
msgid "Online"
|
||||
msgstr "線上"
|
||||
|
||||
#: src/views/preference/Preference.vue:108
|
||||
#: src/views/preference/Preference.vue:107
|
||||
msgid "OpenAI"
|
||||
msgstr "OpenAI"
|
||||
|
||||
|
@ -1216,7 +1245,7 @@ msgstr "請至少選擇一個節點!"
|
|||
msgid "Pre-release"
|
||||
msgstr "預先發布"
|
||||
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
|
||||
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
|
||||
msgid "Preference"
|
||||
msgstr "偏好設定"
|
||||
|
||||
|
@ -1306,7 +1335,7 @@ msgid "Renew Certificate Success"
|
|||
msgstr "更換憑證"
|
||||
|
||||
#: src/views/certificate/RenewCert.vue:25
|
||||
#: src/views/certificate/WildcardCertificate.vue:50
|
||||
#: src/views/certificate/WildcardCertificate.vue:51
|
||||
#, fuzzy
|
||||
msgid "Renew successfully"
|
||||
msgstr "啟用成功"
|
||||
|
@ -1339,7 +1368,7 @@ msgstr "執行中"
|
|||
#: src/views/certificate/CertificateEditor.vue:245
|
||||
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
|
||||
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
|
||||
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
|
||||
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
|
||||
msgid "Save"
|
||||
msgstr "儲存"
|
||||
|
||||
|
@ -1354,7 +1383,7 @@ msgstr "儲存錯誤 %{msg}"
|
|||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
|
||||
#: src/views/certificate/CertificateEditor.vue:48
|
||||
#: src/views/preference/Preference.vue:61
|
||||
#: src/views/preference/Preference.vue:60
|
||||
msgid "Save successfully"
|
||||
msgstr "儲存成功"
|
||||
|
||||
|
@ -1385,7 +1414,7 @@ msgstr "傳送"
|
|||
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
|
||||
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
|
||||
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
|
||||
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
|
||||
#: src/views/system/Upgrade.vue:45
|
||||
msgid "Server error"
|
||||
|
@ -1583,6 +1612,10 @@ msgstr ""
|
|||
msgid "This field should not be empty"
|
||||
msgstr "此欄位不應為空"
|
||||
|
||||
#: src/views/preference/LogrotateSettings.vue:16
|
||||
msgid "Tips"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/notification/Notification.vue:21
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
|
41
app/src/views/preference/LogrotateSettings.vue
Normal file
41
app/src/views/preference/LogrotateSettings.vue
Normal file
|
@ -0,0 +1,41 @@
|
|||
<script setup lang="ts">
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
import { inject } from 'vue'
|
||||
import type { Settings } from '@/views/preference/typedef'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
|
||||
const data: Settings = inject('data')!
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<AForm layout="vertical">
|
||||
<AAlert
|
||||
class="mb-4"
|
||||
:message="$gettext('Tips')"
|
||||
:description="$gettext('Logrotate, by default, is enabled in most mainstream '
|
||||
+ 'Linux distributions for users who install Nginx UI on the host machine, '
|
||||
+ 'so you don\'t need to modify the parameters on this page. '
|
||||
+ 'For users who install Nginx UI using Docker containers, you can manually enable this option. '
|
||||
+ 'The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes.')"
|
||||
type="info"
|
||||
/>
|
||||
<AFormItem :label="$gettext('Enabled')">
|
||||
<ASwitch v-model:checked="data.logrotate.enabled" />
|
||||
</AFormItem>
|
||||
<AFormItem :label="$gettext('Command')">
|
||||
{{ data.logrotate.cmd }}
|
||||
</AFormItem>
|
||||
<AFormItem :label="$gettext('Interval')">
|
||||
<AInputNumber
|
||||
v-model:value="data.logrotate.interval"
|
||||
:min="1"
|
||||
:addon-after="$gettext('Minutes')"
|
||||
/>
|
||||
</AFormItem>
|
||||
</AForm>
|
||||
</template>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
</style>
|
|
@ -8,6 +8,7 @@ import BasicSettings from '@/views/preference/BasicSettings.vue'
|
|||
import OpenAISettings from '@/views/preference/OpenAISettings.vue'
|
||||
import NginxSettings from '@/views/preference/NginxSettings.vue'
|
||||
import type { Settings } from '@/views/preference/typedef'
|
||||
import LogrotateSettings from '@/views/preference/LogrotateSettings.vue'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
|
||||
|
@ -38,12 +39,10 @@ const data = ref<Settings>({
|
|||
proxy: '',
|
||||
token: '',
|
||||
},
|
||||
git: {
|
||||
url: '',
|
||||
auth_method: '',
|
||||
username: '',
|
||||
password: '',
|
||||
private_key_file_path: '',
|
||||
logrotate: {
|
||||
enabled: false,
|
||||
cmd: '',
|
||||
interval: 1440,
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -109,6 +108,12 @@ onMounted(() => {
|
|||
>
|
||||
<OpenAISettings />
|
||||
</ATabPane>
|
||||
<ATabPane
|
||||
key="logrotate"
|
||||
:tab="$gettext('Logrotate')"
|
||||
>
|
||||
<LogrotateSettings />
|
||||
</ATabPane>
|
||||
</ATabs>
|
||||
</div>
|
||||
<FooterToolBar>
|
||||
|
|
|
@ -25,11 +25,9 @@ export interface Settings {
|
|||
proxy: string
|
||||
token: string
|
||||
}
|
||||
git: {
|
||||
url: string
|
||||
auth_method: string
|
||||
username: string
|
||||
password: string
|
||||
private_key_file_path: string
|
||||
logrotate: {
|
||||
enabled: boolean
|
||||
cmd: string
|
||||
interval: number
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,8 @@ export const enConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
|
|||
{text: 'Server', link: '/guide/config-server'},
|
||||
{text: 'Nginx', link: '/guide/config-nginx'},
|
||||
{text: 'Open AI', link: '/guide/config-openai'},
|
||||
{text: 'Casdoor', link: '/guide/config-casdoor'}
|
||||
{text: 'Casdoor', link: '/guide/config-casdoor'},
|
||||
{text: 'Logrotate', link: '/guide/config-logrotate'}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -42,7 +42,8 @@ export const zhCNConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
|
|||
{text: '服务端', link: '/zh_CN/guide/config-server'},
|
||||
{text: 'Nginx', link: '/zh_CN/guide/config-nginx'},
|
||||
{text: 'Open AI', link: '/zh_CN/guide/config-openai'},
|
||||
{text: 'Casdoor', link: '/zh_CN/guide/config-casdoor'}
|
||||
{text: 'Casdoor', link: '/zh_CN/guide/config-casdoor'},
|
||||
{text: 'Logrotate', link: '/zh_CN/guide/config-logrotate'}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -41,7 +41,8 @@ export const zhTWConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
|
|||
{text: '服務端', link: '/zh_TW/guide/config-server'},
|
||||
{text: 'Nginx', link: '/zh_TW/guide/config-nginx'},
|
||||
{text: 'Open AI', link: '/zh_TW/guide/config-openai'},
|
||||
{text: 'Casdoor', link: '/zh_TW/guide/config-casdoor'}
|
||||
{text: 'Casdoor', link: '/zh_TW/guide/config-casdoor'},
|
||||
{text: 'Logrotate', link: '/zh_CN/guide/config-logrotate'}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
31
docs/guide/config-logrotate.md
Normal file
31
docs/guide/config-logrotate.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Logrotate
|
||||
|
||||
In this section, we will introduce configuration options in Nginx UI about logrotate.
|
||||
|
||||
**logrotate** is designed to ease administration of systems that generate large numbers of log files.
|
||||
It allows automatic rotation, compression, removal, and mailing of log files.
|
||||
Each log file may be handled daily, weekly, monthly, or when it grows too large.
|
||||
|
||||
By default, logrotate is enabled in most mainstream Linux distributions for users who install Nginx UI on the host machine,
|
||||
so you don't need to modify anything.
|
||||
|
||||
For users who install Nginx UI using Docker containers, you can manually enable this option.
|
||||
The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes.
|
||||
|
||||
## Enabled
|
||||
- Type: `bool`
|
||||
- Default: `false`
|
||||
|
||||
This option is used to enable logrotate crontab task in Nginx UI.
|
||||
|
||||
## CMD
|
||||
- Type: `string`
|
||||
- Default: `logrotate /etc/logrotate.d/nginx`
|
||||
|
||||
This option is used to set the logrotate command in Nginx UI.
|
||||
|
||||
## Interval
|
||||
- Type: `int`
|
||||
- Default: `1440`
|
||||
|
||||
This option is used to set the interval in minutes of logrotate crontab task in Nginx UI.
|
|
@ -63,8 +63,6 @@ In Nginx UI v2, we parse the output of the `nginx -V` command to get the default
|
|||
If you need to set a different path, you can use this option.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
## Service Monitoring and Control
|
||||
|
||||
In this section, we will introduce configuration options in Nginx UI for monitoring and controlling Nginx services.
|
||||
|
|
30
docs/zh_CN/guide/config-logrotate.md
Normal file
30
docs/zh_CN/guide/config-logrotate.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Logrotate
|
||||
|
||||
在这个部分,我们将介绍 Nginx UI 中关于 logrotate 的配置选项。
|
||||
|
||||
**logrotate** 旨在简化生成大量日志文件的系统的管理。
|
||||
它可以按天、周、月或者文件大小来轮转日志文件,还可以压缩、删除旧的日志文件,以及发送日志文件到指定的邮箱。
|
||||
|
||||
默认情况下,对于在主机上安装 Nginx UI 的用户,大多数主流的 Linux 发行版都已集成 logrotate,
|
||||
所以你不需要修改任何东西。
|
||||
|
||||
对于使用 Docker 容器安装 Nginx UI 的用户,你可以手动启用这个选项。
|
||||
Nginx UI 的 crontab 任务调度器将会按照你设定的分钟间隔执行 logrotate 命令。
|
||||
|
||||
## Enabled
|
||||
- 类型:`bool`
|
||||
- 默认值:`false`
|
||||
|
||||
这个选项用于在 Nginx UI 中启用 logrotate crontab 任务。
|
||||
|
||||
## CMD
|
||||
- 类型:`string`
|
||||
- 默认值:`logrotate /etc/logrotate.d/nginx`
|
||||
|
||||
这个选项用于在 Nginx UI 中设置 logrotate 命令。
|
||||
|
||||
## Interval
|
||||
- 类型:`int`
|
||||
- 默认值:`1440`
|
||||
|
||||
这个选项用于在 Nginx UI 中设置 logrotate crontab 任务的分钟间隔。
|
29
docs/zh_TW/guide/config-logrotate.md
Normal file
29
docs/zh_TW/guide/config-logrotate.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Logrotate
|
||||
|
||||
在這個部分,我們將介紹 Nginx UI 中關於 logrotate 的配置選項。
|
||||
|
||||
**logrotate** 旨在簡化生成大量日誌文件的系統的管理。
|
||||
它可以按天、周、月或者文件大小來輪轉日誌文件,還可以壓縮、刪除舊的日誌文件,以及發送日誌文件到指定的郵箱。
|
||||
默認情況下,對於在主機上安裝 Nginx UI 的用戶,大多數主流的 Linux 發行版都已集成 logrotate,
|
||||
所以你不需要修改任何東西。
|
||||
|
||||
對於使用 Docker 容器安裝 Nginx UI 的用戶,你可以手動啟用這個選項。
|
||||
Nginx UI 的 crontab 任務調度器將會按照你設定的分鐘間隔執行 logrotate 命令。
|
||||
|
||||
## Enabled
|
||||
- 類型:`bool`
|
||||
- 默認值:`false`
|
||||
|
||||
這個選項用於在 Nginx UI 中啟用 logrotate crontab 任務。
|
||||
|
||||
## CMD
|
||||
- 類型:`string`
|
||||
- 默認值:`logrotate /etc/logrotate.d/nginx`
|
||||
|
||||
這個選項用於在 Nginx UI 中設置 logrotate 命令。
|
||||
|
||||
## Interval
|
||||
- 類型:`int`
|
||||
- 默認值:`1440`
|
||||
|
||||
這個選項用於在 Nginx UI 中設置 logrotate crontab 任務的分鐘間隔。
|
52
internal/cron/cron.go
Normal file
52
internal/cron/cron.go
Normal file
|
@ -0,0 +1,52 @@
|
|||
package cron
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/internal/cert"
|
||||
"github.com/0xJacky/Nginx-UI/internal/logger"
|
||||
"github.com/0xJacky/Nginx-UI/internal/logrotate"
|
||||
"github.com/0xJacky/Nginx-UI/settings"
|
||||
"github.com/go-co-op/gocron"
|
||||
"time"
|
||||
)
|
||||
|
||||
var s *gocron.Scheduler
|
||||
|
||||
func init() {
|
||||
s = gocron.NewScheduler(time.UTC)
|
||||
}
|
||||
|
||||
var logrotateJob *gocron.Job
|
||||
|
||||
func InitCronJobs() {
|
||||
job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain)
|
||||
|
||||
if err != nil {
|
||||
logger.Fatalf("AutoCert Job: %v, Err: %v\n", job, err)
|
||||
}
|
||||
|
||||
startLogrotate()
|
||||
|
||||
s.StartAsync()
|
||||
}
|
||||
|
||||
func RestartLogrotate() {
|
||||
logger.Debug("Restart Logrotate")
|
||||
if logrotateJob != nil {
|
||||
s.RemoveByReference(logrotateJob)
|
||||
}
|
||||
|
||||
startLogrotate()
|
||||
}
|
||||
|
||||
func startLogrotate() {
|
||||
if !settings.LogrotateSettings.Enabled {
|
||||
return
|
||||
}
|
||||
var err error
|
||||
|
||||
logrotateJob, err = s.Every(settings.LogrotateSettings.Interval).Minute().SingletonMode().Do(logrotate.Exec)
|
||||
|
||||
if err != nil {
|
||||
logger.Fatalf("LogRotate Job: %v, Err: %v\n", logrotateJob, err)
|
||||
}
|
||||
}
|
22
internal/cron/cron_test.go
Normal file
22
internal/cron/cron_test.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package cron
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/internal/kernal"
|
||||
"github.com/0xJacky/Nginx-UI/settings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestRestartLogrotate(t *testing.T) {
|
||||
settings.Init("../../app.ini")
|
||||
|
||||
kernal.InitDatabase()
|
||||
|
||||
InitCronJobs()
|
||||
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
RestartLogrotate()
|
||||
|
||||
time.Sleep(2 * time.Second)
|
||||
}
|
|
@ -4,6 +4,7 @@ import (
|
|||
"github.com/0xJacky/Nginx-UI/internal/analytic"
|
||||
"github.com/0xJacky/Nginx-UI/internal/cert"
|
||||
"github.com/0xJacky/Nginx-UI/internal/logger"
|
||||
"github.com/0xJacky/Nginx-UI/internal/logrotate"
|
||||
"github.com/0xJacky/Nginx-UI/internal/validation"
|
||||
"github.com/0xJacky/Nginx-UI/model"
|
||||
"github.com/0xJacky/Nginx-UI/query"
|
||||
|
@ -40,7 +41,7 @@ func Boot() {
|
|||
|
||||
func InitAfterDatabase() {
|
||||
syncs := []func(){
|
||||
InitAutoObtainCert,
|
||||
InitCronJobs,
|
||||
analytic.RetrieveNodesStatus,
|
||||
}
|
||||
|
||||
|
@ -86,7 +87,7 @@ func InitJsExtensionType() {
|
|||
_ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8")
|
||||
}
|
||||
|
||||
func InitAutoObtainCert() {
|
||||
func InitCronJobs() {
|
||||
s := gocron.NewScheduler(time.UTC)
|
||||
job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain)
|
||||
|
||||
|
@ -94,5 +95,11 @@ func InitAutoObtainCert() {
|
|||
logger.Fatalf("AutoCert Job: %v, Err: %v\n", job, err)
|
||||
}
|
||||
|
||||
job, err = s.Every(settings.LogrotateSettings.Interval).Minute().SingletonMode().Do(logrotate.Exec)
|
||||
|
||||
if err != nil {
|
||||
logger.Fatalf("LogRotate Job: %v, Err: %v\n", job, err)
|
||||
}
|
||||
|
||||
s.StartAsync()
|
||||
}
|
||||
|
|
45
internal/logrotate/logrotate.go
Normal file
45
internal/logrotate/logrotate.go
Normal file
|
@ -0,0 +1,45 @@
|
|||
package logrotate
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/internal/logger"
|
||||
"github.com/0xJacky/Nginx-UI/settings"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func Exec() {
|
||||
if !settings.LogrotateSettings.Enabled {
|
||||
return
|
||||
}
|
||||
|
||||
logger.Info("logrotate start")
|
||||
defer logger.Info("logrotate end")
|
||||
cmd := strings.Split(settings.LogrotateSettings.CMD, " ")
|
||||
|
||||
if len(cmd) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
name string
|
||||
args = make([]string, 0)
|
||||
)
|
||||
|
||||
if len(cmd) > 0 {
|
||||
name = cmd[0]
|
||||
}
|
||||
|
||||
if len(cmd) > 1 {
|
||||
args = cmd[1:]
|
||||
}
|
||||
|
||||
out, err := exec.Command(name, args...).CombinedOutput()
|
||||
if err != nil {
|
||||
logger.Error(err, string(out))
|
||||
return
|
||||
}
|
||||
|
||||
if len(out) > 0 {
|
||||
logger.Debug(string(out))
|
||||
}
|
||||
}
|
13
settings/logrotate.go
Normal file
13
settings/logrotate.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package settings
|
||||
|
||||
type Logrotate struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
CMD string `json:"cmd" protect:"true"`
|
||||
Interval int `json:"interval"`
|
||||
}
|
||||
|
||||
var LogrotateSettings = Logrotate{
|
||||
Enabled: false,
|
||||
CMD: "logrotate /etc/logrotate.d/nginx",
|
||||
Interval: 1440, // 24 hours
|
||||
}
|
|
@ -18,10 +18,11 @@ var (
|
|||
var ConfPath string
|
||||
|
||||
var sections = map[string]interface{}{
|
||||
"server": &ServerSettings,
|
||||
"nginx": &NginxSettings,
|
||||
"openai": &OpenAISettings,
|
||||
"casdoor": &CasdoorSettings,
|
||||
"server": &ServerSettings,
|
||||
"nginx": &NginxSettings,
|
||||
"openai": &OpenAISettings,
|
||||
"casdoor": &CasdoorSettings,
|
||||
"logrotate": &LogrotateSettings,
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue