feat: logrotate cron task for docker users #255

This commit is contained in:
Jacky 2024-02-25 20:45:45 +08:00
parent b7f50f0053
commit 0fa98703cd
26 changed files with 663 additions and 119 deletions

View file

@ -2,6 +2,7 @@ package system
import ( import (
"github.com/0xJacky/Nginx-UI/api" "github.com/0xJacky/Nginx-UI/api"
"github.com/0xJacky/Nginx-UI/internal/cron"
"github.com/0xJacky/Nginx-UI/settings" "github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"net/http" "net/http"
@ -13,6 +14,7 @@ func GetSettings(c *gin.Context) {
"server": settings.ServerSettings, "server": settings.ServerSettings,
"nginx": settings.NginxSettings, "nginx": settings.NginxSettings,
"openai": settings.OpenAISettings, "openai": settings.OpenAISettings,
"logrotate": settings.LogrotateSettings,
}) })
} }
@ -21,15 +23,22 @@ func SaveSettings(c *gin.Context) {
Server settings.Server `json:"server"` Server settings.Server `json:"server"`
Nginx settings.Nginx `json:"nginx"` Nginx settings.Nginx `json:"nginx"`
Openai settings.OpenAI `json:"openai"` Openai settings.OpenAI `json:"openai"`
Logrotate settings.Logrotate `json:"logrotate"`
} }
if !api.BindAndValid(c, &json) { if !api.BindAndValid(c, &json) {
return return
} }
if settings.LogrotateSettings.Enabled != json.Logrotate.Enabled ||
settings.LogrotateSettings.Interval != json.Logrotate.Interval {
go cron.RestartLogrotate()
}
fillSettings(&settings.ServerSettings, &json.Server) fillSettings(&settings.ServerSettings, &json.Server)
fillSettings(&settings.NginxSettings, &json.Nginx) fillSettings(&settings.NginxSettings, &json.Nginx)
fillSettings(&settings.OpenAISettings, &json.Openai) fillSettings(&settings.OpenAISettings, &json.Openai)
fillSettings(&settings.LogrotateSettings, &json.Logrotate)
settings.ReflectFrom() settings.ReflectFrom()

View file

@ -155,7 +155,7 @@ msgstr "Base information"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
#, fuzzy #, fuzzy
msgid "Basic" msgid "Basic"
@ -255,6 +255,11 @@ msgstr ""
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "Disabled 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: 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?" msgid "Do you want to remove this upstream?"
msgstr "Are you sure you want to remove this directive?" msgstr "Are you sure you want to remove this directive?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "" msgstr ""
@ -618,6 +623,7 @@ msgstr "Enable TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -838,12 +844,16 @@ msgstr "Enabled successfully"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "Intermediate Certification Authorities: %{issuer}" msgstr "Intermediate Certification Authorities: %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
#, fuzzy #, fuzzy
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "Certificate is valid" msgstr "Certificate is valid"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
#, fuzzy #, fuzzy
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "Certificate Status" msgstr "Certificate Status"
@ -857,6 +867,7 @@ msgstr "Enabled successfully"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
msgid "Key Type" msgid "Key Type"
msgstr "" msgstr ""
@ -924,6 +935,20 @@ msgstr "Login successful"
msgid "Logout successful" msgid "Logout successful"
msgstr "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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -963,6 +988,10 @@ msgstr "Memory"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "Memory and Storage" msgstr "Memory and Storage"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -1019,13 +1048,13 @@ msgstr "Network Total Send"
msgid "New version released" msgid "New version released"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:87 #: src/views/certificate/WildcardCertificate.vue:127
#: src/views/domain/cert/components/ObtainCert.vue:204 #: src/views/domain/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "Next" msgstr "Next"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "" msgstr ""
@ -1148,7 +1177,7 @@ msgstr ""
msgid "Online" msgid "Online"
msgstr "" msgstr ""
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "" msgstr ""
@ -1242,7 +1271,7 @@ msgstr ""
msgid "Pre-release" msgid "Pre-release"
msgstr "" 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" msgid "Preference"
msgstr "" msgstr ""
@ -1334,7 +1363,7 @@ msgid "Renew Certificate Success"
msgstr "Certificate is valid" msgstr "Certificate is valid"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
#, fuzzy #, fuzzy
msgid "Renew successfully" msgid "Renew successfully"
msgstr "Enabled successfully" msgstr "Enabled successfully"
@ -1368,7 +1397,7 @@ msgstr ""
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "Save" msgstr "Save"
@ -1383,7 +1412,7 @@ msgstr "Save error %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
#, fuzzy #, fuzzy
msgid "Save successfully" msgid "Save successfully"
msgstr "Saved successfully" msgstr "Saved successfully"
@ -1416,7 +1445,7 @@ msgstr "Send"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1617,6 +1646,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "" msgstr ""

View file

@ -152,7 +152,7 @@ msgstr "Información general"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
msgid "Basic" msgid "Basic"
msgstr "Básico" msgstr "Básico"
@ -246,6 +246,11 @@ msgstr "Borrar"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "Limpiado exitoso" 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: 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?" msgid "Do you want to remove this upstream?"
msgstr "¿Quieres eliminar esta transmisión?" msgstr "¿Quieres eliminar esta transmisión?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "Dominio" msgstr "Dominio"
@ -590,6 +595,7 @@ msgstr "Habilitar TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -802,11 +808,15 @@ msgstr "Instalación exitosa"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "Autoridades de certificación intermedias: %{issuer}" msgstr "Autoridades de certificación intermedias: %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "Obtener certificado comodín" msgstr "Obtener certificado comodín"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "Obtener certificado Comodín" msgstr "Obtener certificado Comodín"
@ -818,6 +828,7 @@ msgstr "Certificado emitido con éxito"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "Secreto Jwt" msgstr "Secreto Jwt"
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
#, fuzzy #, fuzzy
msgid "Key Type" msgid "Key Type"
@ -881,6 +892,20 @@ msgstr "Acceso exitoso"
msgid "Logout successful" msgid "Logout successful"
msgstr "Cierre de sesión exitoso" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
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 "
@ -917,6 +942,10 @@ msgstr "Memoria"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "Memoria y almacenamiento" msgstr "Memoria y almacenamiento"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -970,13 +999,13 @@ msgstr "Total enviado por la red"
msgid "New version released" msgid "New version released"
msgstr "Se liberó una nueva versión" 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/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "Nginx" msgstr "Nginx"
@ -1093,7 +1122,7 @@ msgstr "Una vez que se complete la verificación, los registros se eliminarán."
msgid "Online" msgid "Online"
msgstr "En línea" msgstr "En línea"
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "OpenAI" msgstr "OpenAI"
@ -1195,7 +1224,7 @@ msgstr "¡Seleccione al menos un nodo!"
msgid "Pre-release" msgid "Pre-release"
msgstr "Prelanzamiento" 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" msgid "Preference"
msgstr "Configuración" msgstr "Configuración"
@ -1280,7 +1309,7 @@ msgid "Renew Certificate Success"
msgstr "Renovado de Certificado exitoso" msgstr "Renovado de Certificado exitoso"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
msgid "Renew successfully" msgid "Renew successfully"
msgstr "Renovado con éxito" msgstr "Renovado con éxito"
@ -1312,7 +1341,7 @@ msgstr "Corriendo"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "Guardar" msgstr "Guardar"
@ -1327,7 +1356,7 @@ msgstr "Error al guardar %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
msgid "Save successfully" msgid "Save successfully"
msgstr "Guardado con éxito" msgstr "Guardado con éxito"
@ -1358,7 +1387,7 @@ msgstr "Enviado"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1548,6 +1577,10 @@ msgstr "Este campo es obligatorio"
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "Este campo no debe estar vacío" msgstr "Este campo no debe estar vacío"
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "Título" msgstr "Título"

View file

@ -155,7 +155,7 @@ msgstr "Information générale"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
msgid "Basic" msgid "Basic"
msgstr "Basique" msgstr "Basique"
@ -253,6 +253,11 @@ msgstr "Effacer"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "Désactivé avec succès" 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: 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?" msgid "Do you want to remove this upstream?"
msgstr "Voulez-vous supprimer ce serveur ?" msgstr "Voulez-vous supprimer ce serveur ?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "" msgstr ""
@ -615,6 +620,7 @@ msgstr "Activer TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -836,12 +842,16 @@ msgstr "Installé avec succès"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "Autorités de certification intermédiaires : %{issuer}" msgstr "Autorités de certification intermédiaires : %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
#, fuzzy #, fuzzy
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "Obtenir un certificat" msgstr "Obtenir un certificat"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
#, fuzzy #, fuzzy
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "État du certificat" msgstr "État du certificat"
@ -854,6 +864,7 @@ msgstr "Certificat délivré avec succès"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "Secret Jwt" msgstr "Secret Jwt"
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
#, fuzzy #, fuzzy
msgid "Key Type" msgid "Key Type"
@ -924,6 +935,20 @@ msgstr "Connexion réussie"
msgid "Logout successful" msgid "Logout successful"
msgstr "Déconnexion réussie" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -963,6 +988,10 @@ msgstr "Mémoire"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "Mémoire et stockage" msgstr "Mémoire et stockage"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -1017,13 +1046,13 @@ msgstr "Envoi total réseau"
msgid "New version released" msgid "New version released"
msgstr "Nouvelle version publiée" 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/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "Suivant" msgstr "Suivant"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
#, fuzzy #, fuzzy
msgid "Nginx" msgid "Nginx"
msgstr "Journal Nginx" msgstr "Journal Nginx"
@ -1144,7 +1173,7 @@ msgstr ""
msgid "Online" msgid "Online"
msgstr "" msgstr ""
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "OpenAI" msgstr "OpenAI"
@ -1244,7 +1273,7 @@ msgstr ""
msgid "Pre-release" msgid "Pre-release"
msgstr "" 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" msgid "Preference"
msgstr "Préférence" msgstr "Préférence"
@ -1337,7 +1366,7 @@ msgid "Renew Certificate Success"
msgstr "Changer de certificat" msgstr "Changer de certificat"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
#, fuzzy #, fuzzy
msgid "Renew successfully" msgid "Renew successfully"
msgstr "Activé avec succès" msgstr "Activé avec succès"
@ -1370,7 +1399,7 @@ msgstr "En cours d'éxécution"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "Enregistrer" msgstr "Enregistrer"
@ -1385,7 +1414,7 @@ msgstr "Enregistrer l'erreur %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
msgid "Save successfully" msgid "Save successfully"
msgstr "Sauvegarde réussie" msgstr "Sauvegarde réussie"
@ -1416,7 +1445,7 @@ msgstr "Envoyer"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1620,6 +1649,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "" msgstr ""

View file

@ -149,7 +149,7 @@ msgstr ""
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
msgid "Basic" msgid "Basic"
msgstr "" msgstr ""
@ -245,6 +245,10 @@ msgstr ""
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:27
msgid "Command"
msgstr ""
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: src/views/domain/ngx_conf/LocationEditor.vue:88
@ -484,7 +488,7 @@ msgstr ""
msgid "Do you want to remove this upstream?" msgid "Do you want to remove this upstream?"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "" msgstr ""
@ -595,6 +599,7 @@ msgstr ""
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 #: src/views/domain/DomainEdit.vue:179
#: src/views/domain/DomainList.vue:32 #: src/views/domain/DomainList.vue:32
#: src/views/preference/LogrotateSettings.vue:24
#: src/views/stream/components/RightSettings.vue:78 #: src/views/stream/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 #: src/views/stream/StreamEdit.vue:170
#: src/views/stream/StreamList.vue:32 #: src/views/stream/StreamList.vue:32
@ -814,11 +819,15 @@ msgstr ""
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "" msgstr ""
@ -830,6 +839,7 @@ msgstr ""
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
msgid "Key Type" msgid "Key Type"
msgstr "" msgstr ""
@ -894,6 +904,14 @@ msgstr ""
msgid "Logout successful" msgid "Logout successful"
msgstr "" 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 #: 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." msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort before obtaining the certificate."
msgstr "" msgstr ""
@ -929,6 +947,10 @@ msgstr ""
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -985,13 +1007,13 @@ msgstr ""
msgid "New version released" msgid "New version released"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:87 #: src/views/certificate/WildcardCertificate.vue:127
#: src/views/domain/cert/components/ObtainCert.vue:204 #: src/views/domain/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "" msgstr ""
@ -1112,7 +1134,7 @@ msgstr ""
msgid "Online" msgid "Online"
msgstr "" msgstr ""
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "" msgstr ""
@ -1203,7 +1225,7 @@ msgid "Pre-release"
msgstr "" msgstr ""
#: src/routes/index.ts:210 #: src/routes/index.ts:210
#: src/views/preference/Preference.vue:91 #: src/views/preference/Preference.vue:90
msgid "Preference" msgid "Preference"
msgstr "" msgstr ""
@ -1288,7 +1310,7 @@ msgid "Renew Certificate Success"
msgstr "" msgstr ""
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
msgid "Renew successfully" msgid "Renew successfully"
msgstr "" msgstr ""
@ -1321,7 +1343,7 @@ msgstr ""
#: src/views/config/ConfigEdit.vue:98 #: src/views/config/ConfigEdit.vue:98
#: src/views/domain/DomainEdit.vue:263 #: src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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 #: src/views/stream/StreamEdit.vue:253
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -1338,7 +1360,7 @@ msgstr ""
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
msgid "Save successfully" msgid "Save successfully"
msgstr "" msgstr ""
@ -1372,7 +1394,7 @@ msgstr ""
#: src/views/config/ConfigEdit.vue:42 #: src/views/config/ConfigEdit.vue:42
#: src/views/domain/DomainList.vue:84 #: src/views/domain/DomainList.vue:84
#: src/views/other/Install.vue:72 #: 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:116
#: src/views/stream/StreamList.vue:84 #: src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
@ -1557,6 +1579,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "" msgstr ""
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "" msgstr ""

View file

@ -155,7 +155,7 @@ msgstr "Основная информация"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
#, fuzzy #, fuzzy
msgid "Basic" msgid "Basic"
@ -255,6 +255,11 @@ msgstr "Очистить"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "Отключено успешно" 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: src/views/domain/ngx_conf/LocationEditor.vue:88
@ -503,7 +508,7 @@ msgstr "Вы хотите удалить этот сервер?"
msgid "Do you want to remove this upstream?" msgid "Do you want to remove this upstream?"
msgstr "Вы хотите удалить этот сервер?" msgstr "Вы хотите удалить этот сервер?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "" msgstr ""
@ -620,6 +625,7 @@ msgstr "Включить TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -841,12 +847,16 @@ msgstr "Установленно"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "Промежуточные центры сертификации: %{issuer}" msgstr "Промежуточные центры сертификации: %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
#, fuzzy #, fuzzy
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "Получить сертификат" msgstr "Получить сертификат"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
#, fuzzy #, fuzzy
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "Статус сертификата" msgstr "Статус сертификата"
@ -860,6 +870,7 @@ msgstr "Сертификат успешно выдан"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
#, fuzzy #, fuzzy
msgid "Key Type" msgid "Key Type"
@ -928,6 +939,20 @@ msgstr "Авторизация успешна"
msgid "Logout successful" msgid "Logout successful"
msgstr "Выход выполнен успешно" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -967,6 +992,10 @@ msgstr "Память"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "Память и хранилище" msgstr "Память и хранилище"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -1023,13 +1052,13 @@ msgstr "Всего отправлено"
msgid "New version released" msgid "New version released"
msgstr "Вышла новая версия" msgstr "Вышла новая версия"
#: src/views/certificate/WildcardCertificate.vue:87 #: src/views/certificate/WildcardCertificate.vue:127
#: src/views/domain/cert/components/ObtainCert.vue:204 #: src/views/domain/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "Дальше" msgstr "Дальше"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
#, fuzzy #, fuzzy
msgid "Nginx" msgid "Nginx"
msgstr "Журнал" msgstr "Журнал"
@ -1153,7 +1182,7 @@ msgstr ""
msgid "Online" msgid "Online"
msgstr "" msgstr ""
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "" msgstr ""
@ -1249,7 +1278,7 @@ msgstr ""
msgid "Pre-release" msgid "Pre-release"
msgstr "" 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" msgid "Preference"
msgstr "Настройки" msgstr "Настройки"
@ -1341,7 +1370,7 @@ msgid "Renew Certificate Success"
msgstr "Сертификат действителен" msgstr "Сертификат действителен"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
#, fuzzy #, fuzzy
msgid "Renew successfully" msgid "Renew successfully"
msgstr "Активировано успешно" msgstr "Активировано успешно"
@ -1375,7 +1404,7 @@ msgstr "Выполняется"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
@ -1390,7 +1419,7 @@ msgstr "Ошибка сохранения %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
#, fuzzy #, fuzzy
msgid "Save successfully" msgid "Save successfully"
msgstr "Успешно сохранено" msgstr "Успешно сохранено"
@ -1423,7 +1452,7 @@ msgstr "Отправлено"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1625,6 +1654,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "Это поле обязательно к заполнению" msgstr "Это поле обязательно к заполнению"
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "Заголовок" msgstr "Заголовок"
@ -1723,8 +1756,8 @@ msgid ""
"We will add one or more TXT records to the DNS records of your domain for " "We will add one or more TXT records to the DNS records of your domain for "
"ownership verification." "ownership verification."
msgstr "" msgstr ""
"Мы добавим одну или несколько записей TXT в DNS записи вашего домена для" "Мы добавим одну или несколько записей TXT в DNS записи вашего домена "
"подтверждение права собственности" "дляподтверждение права собственности"
#: src/views/domain/cert/components/ObtainCert.vue:135 #: src/views/domain/cert/components/ObtainCert.vue:135
msgid "" msgid ""

View file

@ -155,7 +155,7 @@ msgstr "Thông tin"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
#, fuzzy #, fuzzy
msgid "Basic" msgid "Basic"
@ -255,6 +255,11 @@ msgstr "Xoá"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "Đã xóa thành công" 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: 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?" msgid "Do you want to remove this upstream?"
msgstr "Bạn muốn xóa máy chủ này ?" 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" msgid "Domain"
msgstr "" msgstr ""
@ -621,6 +626,7 @@ msgstr "Bật TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -843,12 +849,16 @@ msgstr "Cài đặt thành công"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "Cơ quan cấp chứng chỉ: %{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 #: src/views/certificate/Certificate.vue:137
#, fuzzy #, fuzzy
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "Gia hạn SSL" msgstr "Gia hạn SSL"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
#, fuzzy #, fuzzy
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "Thêm chứng chỉ SSL" msgstr "Thêm chứng chỉ SSL"
@ -862,6 +872,7 @@ msgstr "Cấp chứng chỉ thành công"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "" msgstr ""
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
#, fuzzy #, fuzzy
msgid "Key Type" msgid "Key Type"
@ -930,6 +941,20 @@ msgstr "Đăng nhập thành công"
msgid "Logout successful" msgid "Logout successful"
msgstr "Đã đăng xuất" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -968,6 +993,10 @@ msgstr "Memory"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "Memory và Storage" msgstr "Memory và Storage"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: 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" msgid "New version released"
msgstr "Đã có phiên bản mới" 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/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "Tiếp theo" msgstr "Tiếp theo"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "" 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" msgid "Online"
msgstr "Trực tuyến" msgstr "Trực tuyến"
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "" msgstr ""
@ -1251,7 +1280,7 @@ msgstr ""
msgid "Pre-release" msgid "Pre-release"
msgstr "" 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" msgid "Preference"
msgstr "Cài đặt" msgstr "Cài đặt"
@ -1343,7 +1372,7 @@ msgid "Renew Certificate Success"
msgstr "Gia hạn chứng chỉ SSL thành công" msgstr "Gia hạn chứng chỉ SSL thành công"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
#, fuzzy #, fuzzy
msgid "Renew successfully" msgid "Renew successfully"
msgstr "Gia hạn chứng chỉ SSL" msgstr "Gia hạn chứng chỉ SSL"
@ -1377,7 +1406,7 @@ msgstr "Running"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "Lưu" 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/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
#, fuzzy #, fuzzy
msgid "Save successfully" msgid "Save successfully"
msgstr "Lưu thành công" 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/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1619,6 +1648,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "Trường này không được để trống" 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 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "Tiêu đề" msgstr "Tiêu đề"

Binary file not shown.

View file

@ -151,7 +151,7 @@ msgstr "基本信息"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
msgid "Basic" msgid "Basic"
msgstr "基本" msgstr "基本"
@ -245,6 +245,10 @@ msgstr "清空"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "清除成功" msgstr "清除成功"
#: src/views/preference/LogrotateSettings.vue:27
msgid "Command"
msgstr "命令"
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: src/views/domain/ngx_conf/LocationEditor.vue:88
@ -478,7 +482,7 @@ msgstr "你想删除这个服务器吗?"
msgid "Do you want to remove this upstream?" msgid "Do you want to remove this upstream?"
msgstr "你想删除这个 Upstream 吗?" msgstr "你想删除这个 Upstream 吗?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "域名" msgstr "域名"
@ -586,6 +590,7 @@ msgstr "启用 TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -796,11 +801,15 @@ msgstr "安装成功"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "中级证书颁发机构: %{issuer}" msgstr "中级证书颁发机构: %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr "间隔"
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "签发通配符证书" msgstr "签发通配符证书"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "颁发通配符证书" msgstr "颁发通配符证书"
@ -812,6 +821,7 @@ msgstr "证书申请成功"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "Jwt 密钥" msgstr "Jwt 密钥"
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
msgid "Key Type" msgid "Key Type"
msgstr "密钥类型" msgstr "密钥类型"
@ -874,6 +884,24 @@ msgstr "登录成功"
msgid "Logout successful" msgid "Logout successful"
msgstr "登出成功" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
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 "
@ -910,6 +938,10 @@ msgstr "内存"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "内存与存储" msgstr "内存与存储"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr "分钟"
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -963,13 +995,13 @@ msgstr "上传流量"
msgid "New version released" msgid "New version released"
msgstr "新版本发布" msgstr "新版本发布"
#: src/views/certificate/WildcardCertificate.vue:87 #: src/views/certificate/WildcardCertificate.vue:127
#: src/views/domain/cert/components/ObtainCert.vue:204 #: src/views/domain/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "Nginx" msgstr "Nginx"
@ -1086,7 +1118,7 @@ msgstr "一旦验证完成,这些记录将被删除。"
msgid "Online" msgid "Online"
msgstr "在线" msgstr "在线"
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "OpenAI" msgstr "OpenAI"
@ -1181,7 +1213,7 @@ msgstr "请至少选择一个节点!"
msgid "Pre-release" msgid "Pre-release"
msgstr "预发布" 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" msgid "Preference"
msgstr "偏好设置" msgstr "偏好设置"
@ -1266,7 +1298,7 @@ msgid "Renew Certificate Success"
msgstr "证书续期成功" msgstr "证书续期成功"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
msgid "Renew successfully" msgid "Renew successfully"
msgstr "更新成功" msgstr "更新成功"
@ -1298,7 +1330,7 @@ msgstr "运行中"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "保存" msgstr "保存"
@ -1313,7 +1345,7 @@ msgstr "保存错误 %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
msgid "Save successfully" msgid "Save successfully"
msgstr "保存成功" msgstr "保存成功"
@ -1344,7 +1376,7 @@ msgstr "上传"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1530,6 +1562,10 @@ msgstr "此字段必填"
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "该字段不能为空" msgstr "该字段不能为空"
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr "提示"
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "标题" msgstr "标题"

View file

@ -155,7 +155,7 @@ msgstr "基本資訊"
#: src/views/config/ConfigEdit.vue:117 #: src/views/config/ConfigEdit.vue:117
#: src/views/domain/components/RightSettings.vue:76 #: 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 #: src/views/stream/components/RightSettings.vue:76
msgid "Basic" msgid "Basic"
msgstr "基本" msgstr "基本"
@ -252,6 +252,11 @@ msgstr "清除"
msgid "Cleared successfully" msgid "Cleared successfully"
msgstr "成功停用" 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/directive/DirectiveEditorItem.vue:107
#: src/views/domain/ngx_conf/LocationEditor.vue:119 #: src/views/domain/ngx_conf/LocationEditor.vue:119
#: src/views/domain/ngx_conf/LocationEditor.vue:88 #: src/views/domain/ngx_conf/LocationEditor.vue:88
@ -492,7 +497,7 @@ msgstr "您要移除此伺服器嗎?"
msgid "Do you want to remove this upstream?" msgid "Do you want to remove this upstream?"
msgstr "您要移除此伺服器嗎?" msgstr "您要移除此伺服器嗎?"
#: src/views/certificate/WildcardCertificate.vue:72 #: src/views/certificate/WildcardCertificate.vue:100
msgid "Domain" msgid "Domain"
msgstr "網域" msgstr "網域"
@ -602,6 +607,7 @@ msgstr "啟用 TLS"
#: src/views/domain/cert/ChangeCert.vue:44 #: src/views/domain/cert/ChangeCert.vue:44
#: src/views/domain/components/RightSettings.vue:78 #: src/views/domain/components/RightSettings.vue:78
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32 #: 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/components/RightSettings.vue:78
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32 #: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
msgid "Enabled" msgid "Enabled"
@ -819,12 +825,16 @@ msgstr "安裝成功"
msgid "Intermediate Certification Authorities: %{issuer}" msgid "Intermediate Certification Authorities: %{issuer}"
msgstr "中級憑證頒發機構: %{issuer}" msgstr "中級憑證頒發機構: %{issuer}"
#: src/views/preference/LogrotateSettings.vue:30
msgid "Interval"
msgstr ""
#: src/views/certificate/Certificate.vue:137 #: src/views/certificate/Certificate.vue:137
#, fuzzy #, fuzzy
msgid "Issue wildcard certificate" msgid "Issue wildcard certificate"
msgstr "取得憑證" msgstr "取得憑證"
#: src/views/certificate/WildcardCertificate.vue:61 #: src/views/certificate/WildcardCertificate.vue:89
#, fuzzy #, fuzzy
msgid "Issue Wildcard Certificate" msgid "Issue Wildcard Certificate"
msgstr "憑證狀態" msgstr "憑證狀態"
@ -837,6 +847,7 @@ msgstr "成功頒發憑證"
msgid "Jwt Secret" msgid "Jwt Secret"
msgstr "Jwt Secret" msgstr "Jwt Secret"
#: src/views/certificate/WildcardCertificate.vue:107
#: src/views/domain/cert/components/AutoCertStepOne.vue:108 #: src/views/domain/cert/components/AutoCertStepOne.vue:108
#, fuzzy #, fuzzy
msgid "Key Type" msgid "Key Type"
@ -904,6 +915,20 @@ msgstr "登入成功"
msgid "Logout successful" msgid "Logout successful"
msgstr "登出成功" 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 #: src/views/domain/cert/components/AutoCertStepOne.vue:87
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 "
@ -941,6 +966,10 @@ msgstr "記憶體"
msgid "Memory and Storage" msgid "Memory and Storage"
msgstr "記憶體與儲存" msgstr "記憶體與儲存"
#: src/views/preference/LogrotateSettings.vue:34
msgid "Minutes"
msgstr ""
#: src/components/ChatGPT/ChatGPT.vue:256 #: src/components/ChatGPT/ChatGPT.vue:256
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@ -995,13 +1024,13 @@ msgstr "上傳流量"
msgid "New version released" msgid "New version released"
msgstr "新版本發布" msgstr "新版本發布"
#: src/views/certificate/WildcardCertificate.vue:87 #: src/views/certificate/WildcardCertificate.vue:127
#: src/views/domain/cert/components/ObtainCert.vue:204 #: src/views/domain/cert/components/ObtainCert.vue:204
#: src/views/domain/DomainAdd.vue:145 #: src/views/domain/DomainAdd.vue:145
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
#: src/views/preference/Preference.vue:102 #: src/views/preference/Preference.vue:101
msgid "Nginx" msgid "Nginx"
msgstr "Nginx" msgstr "Nginx"
@ -1120,7 +1149,7 @@ msgstr ""
msgid "Online" msgid "Online"
msgstr "線上" msgstr "線上"
#: src/views/preference/Preference.vue:108 #: src/views/preference/Preference.vue:107
msgid "OpenAI" msgid "OpenAI"
msgstr "OpenAI" msgstr "OpenAI"
@ -1216,7 +1245,7 @@ msgstr "請至少選擇一個節點!"
msgid "Pre-release" msgid "Pre-release"
msgstr "預先發布" 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" msgid "Preference"
msgstr "偏好設定" msgstr "偏好設定"
@ -1306,7 +1335,7 @@ msgid "Renew Certificate Success"
msgstr "更換憑證" msgstr "更換憑證"
#: src/views/certificate/RenewCert.vue:25 #: src/views/certificate/RenewCert.vue:25
#: src/views/certificate/WildcardCertificate.vue:50 #: src/views/certificate/WildcardCertificate.vue:51
#, fuzzy #, fuzzy
msgid "Renew successfully" msgid "Renew successfully"
msgstr "啟用成功" msgstr "啟用成功"
@ -1339,7 +1368,7 @@ msgstr "執行中"
#: src/views/certificate/CertificateEditor.vue:245 #: src/views/certificate/CertificateEditor.vue:245
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121 #: 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" msgid "Save"
msgstr "儲存" msgstr "儲存"
@ -1354,7 +1383,7 @@ msgstr "儲存錯誤 %{msg}"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
#: src/views/certificate/CertificateEditor.vue:48 #: src/views/certificate/CertificateEditor.vue:48
#: src/views/preference/Preference.vue:61 #: src/views/preference/Preference.vue:60
msgid "Save successfully" msgid "Save successfully"
msgstr "儲存成功" msgstr "儲存成功"
@ -1385,7 +1414,7 @@ msgstr "傳送"
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84 #: 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/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
#: src/views/system/Upgrade.vue:45 #: src/views/system/Upgrade.vue:45
msgid "Server error" msgid "Server error"
@ -1583,6 +1612,10 @@ msgstr ""
msgid "This field should not be empty" msgid "This field should not be empty"
msgstr "此欄位不應為空" msgstr "此欄位不應為空"
#: src/views/preference/LogrotateSettings.vue:16
msgid "Tips"
msgstr ""
#: src/views/notification/Notification.vue:21 #: src/views/notification/Notification.vue:21
msgid "Title" msgid "Title"
msgstr "" msgstr ""

View 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>

View file

@ -8,6 +8,7 @@ import BasicSettings from '@/views/preference/BasicSettings.vue'
import OpenAISettings from '@/views/preference/OpenAISettings.vue' import OpenAISettings from '@/views/preference/OpenAISettings.vue'
import NginxSettings from '@/views/preference/NginxSettings.vue' import NginxSettings from '@/views/preference/NginxSettings.vue'
import type { Settings } from '@/views/preference/typedef' import type { Settings } from '@/views/preference/typedef'
import LogrotateSettings from '@/views/preference/LogrotateSettings.vue'
const { $gettext } = useGettext() const { $gettext } = useGettext()
@ -38,12 +39,10 @@ const data = ref<Settings>({
proxy: '', proxy: '',
token: '', token: '',
}, },
git: { logrotate: {
url: '', enabled: false,
auth_method: '', cmd: '',
username: '', interval: 1440,
password: '',
private_key_file_path: '',
}, },
}) })
@ -109,6 +108,12 @@ onMounted(() => {
> >
<OpenAISettings /> <OpenAISettings />
</ATabPane> </ATabPane>
<ATabPane
key="logrotate"
:tab="$gettext('Logrotate')"
>
<LogrotateSettings />
</ATabPane>
</ATabs> </ATabs>
</div> </div>
<FooterToolBar> <FooterToolBar>

View file

@ -25,11 +25,9 @@ export interface Settings {
proxy: string proxy: string
token: string token: string
} }
git: { logrotate: {
url: string enabled: boolean
auth_method: string cmd: string
username: string interval: number
password: string
private_key_file_path: string
} }
} }

View file

@ -37,7 +37,8 @@ export const enConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
{text: 'Server', link: '/guide/config-server'}, {text: 'Server', link: '/guide/config-server'},
{text: 'Nginx', link: '/guide/config-nginx'}, {text: 'Nginx', link: '/guide/config-nginx'},
{text: 'Open AI', link: '/guide/config-openai'}, {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'}
] ]
}, },
{ {

View file

@ -42,7 +42,8 @@ export const zhCNConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
{text: '服务端', link: '/zh_CN/guide/config-server'}, {text: '服务端', link: '/zh_CN/guide/config-server'},
{text: 'Nginx', link: '/zh_CN/guide/config-nginx'}, {text: 'Nginx', link: '/zh_CN/guide/config-nginx'},
{text: 'Open AI', link: '/zh_CN/guide/config-openai'}, {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'}
] ]
}, },
{ {

View file

@ -41,7 +41,8 @@ export const zhTWConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
{text: '服務端', link: '/zh_TW/guide/config-server'}, {text: '服務端', link: '/zh_TW/guide/config-server'},
{text: 'Nginx', link: '/zh_TW/guide/config-nginx'}, {text: 'Nginx', link: '/zh_TW/guide/config-nginx'},
{text: 'Open AI', link: '/zh_TW/guide/config-openai'}, {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'}
] ]
}, },
{ {

View 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.

View file

@ -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. If you need to set a different path, you can use this option.
::: :::
## Service Monitoring and Control ## Service Monitoring and Control
In this section, we will introduce configuration options in Nginx UI for monitoring and controlling Nginx services. In this section, we will introduce configuration options in Nginx UI for monitoring and controlling Nginx services.

View 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 任务的分钟间隔。

View 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
View 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)
}
}

View 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)
}

View file

@ -4,6 +4,7 @@ import (
"github.com/0xJacky/Nginx-UI/internal/analytic" "github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/cert" "github.com/0xJacky/Nginx-UI/internal/cert"
"github.com/0xJacky/Nginx-UI/internal/logger" "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/internal/validation"
"github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query" "github.com/0xJacky/Nginx-UI/query"
@ -40,7 +41,7 @@ func Boot() {
func InitAfterDatabase() { func InitAfterDatabase() {
syncs := []func(){ syncs := []func(){
InitAutoObtainCert, InitCronJobs,
analytic.RetrieveNodesStatus, analytic.RetrieveNodesStatus,
} }
@ -86,7 +87,7 @@ func InitJsExtensionType() {
_ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8") _ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8")
} }
func InitAutoObtainCert() { func InitCronJobs() {
s := gocron.NewScheduler(time.UTC) s := gocron.NewScheduler(time.UTC)
job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain) 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) 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() s.StartAsync()
} }

View 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
View 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
}

View file

@ -22,6 +22,7 @@ var sections = map[string]interface{}{
"nginx": &NginxSettings, "nginx": &NginxSettings,
"openai": &OpenAISettings, "openai": &OpenAISettings,
"casdoor": &CasdoorSettings, "casdoor": &CasdoorSettings,
"logrotate": &LogrotateSettings,
} }
func init() { func init() {