Skip to content

Commit 0fa9870

Browse files
committed
feat: logrotate cron task for docker users #255
1 parent b7f50f0 commit 0fa9870

File tree

26 files changed

+663
-119
lines changed

26 files changed

+663
-119
lines changed

api/system/settings.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package system
22

33
import (
44
"github.com/0xJacky/Nginx-UI/api"
5+
"github.com/0xJacky/Nginx-UI/internal/cron"
56
"github.com/0xJacky/Nginx-UI/settings"
67
"github.com/gin-gonic/gin"
78
"net/http"
@@ -10,26 +11,34 @@ import (
1011

1112
func GetSettings(c *gin.Context) {
1213
c.JSON(http.StatusOK, gin.H{
13-
"server": settings.ServerSettings,
14-
"nginx": settings.NginxSettings,
15-
"openai": settings.OpenAISettings,
14+
"server": settings.ServerSettings,
15+
"nginx": settings.NginxSettings,
16+
"openai": settings.OpenAISettings,
17+
"logrotate": settings.LogrotateSettings,
1618
})
1719
}
1820

1921
func SaveSettings(c *gin.Context) {
2022
var json struct {
21-
Server settings.Server `json:"server"`
22-
Nginx settings.Nginx `json:"nginx"`
23-
Openai settings.OpenAI `json:"openai"`
23+
Server settings.Server `json:"server"`
24+
Nginx settings.Nginx `json:"nginx"`
25+
Openai settings.OpenAI `json:"openai"`
26+
Logrotate settings.Logrotate `json:"logrotate"`
2427
}
2528

2629
if !api.BindAndValid(c, &json) {
2730
return
2831
}
2932

33+
if settings.LogrotateSettings.Enabled != json.Logrotate.Enabled ||
34+
settings.LogrotateSettings.Interval != json.Logrotate.Interval {
35+
go cron.RestartLogrotate()
36+
}
37+
3038
fillSettings(&settings.ServerSettings, &json.Server)
3139
fillSettings(&settings.NginxSettings, &json.Nginx)
3240
fillSettings(&settings.OpenAISettings, &json.Openai)
41+
fillSettings(&settings.LogrotateSettings, &json.Logrotate)
3342

3443
settings.ReflectFrom()
3544

app/src/language/en/app.po

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ msgstr "Base information"
155155

156156
#: src/views/config/ConfigEdit.vue:117
157157
#: src/views/domain/components/RightSettings.vue:76
158-
#: src/views/preference/Preference.vue:96
158+
#: src/views/preference/Preference.vue:95
159159
#: src/views/stream/components/RightSettings.vue:76
160160
#, fuzzy
161161
msgid "Basic"
@@ -255,6 +255,11 @@ msgstr ""
255255
msgid "Cleared successfully"
256256
msgstr "Disabled successfully"
257257

258+
#: src/views/preference/LogrotateSettings.vue:27
259+
#, fuzzy
260+
msgid "Command"
261+
msgstr "Comments"
262+
258263
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:107
259264
#: src/views/domain/ngx_conf/LocationEditor.vue:119
260265
#: src/views/domain/ngx_conf/LocationEditor.vue:88
@@ -503,7 +508,7 @@ msgstr "Are you sure you want to remove this directive?"
503508
msgid "Do you want to remove this upstream?"
504509
msgstr "Are you sure you want to remove this directive?"
505510

506-
#: src/views/certificate/WildcardCertificate.vue:72
511+
#: src/views/certificate/WildcardCertificate.vue:100
507512
msgid "Domain"
508513
msgstr ""
509514

@@ -618,6 +623,7 @@ msgstr "Enable TLS"
618623
#: src/views/domain/cert/ChangeCert.vue:44
619624
#: src/views/domain/components/RightSettings.vue:78
620625
#: src/views/domain/DomainEdit.vue:179 src/views/domain/DomainList.vue:32
626+
#: src/views/preference/LogrotateSettings.vue:24
621627
#: src/views/stream/components/RightSettings.vue:78
622628
#: src/views/stream/StreamEdit.vue:170 src/views/stream/StreamList.vue:32
623629
msgid "Enabled"
@@ -838,12 +844,16 @@ msgstr "Enabled successfully"
838844
msgid "Intermediate Certification Authorities: %{issuer}"
839845
msgstr "Intermediate Certification Authorities: %{issuer}"
840846

847+
#: src/views/preference/LogrotateSettings.vue:30
848+
msgid "Interval"
849+
msgstr ""
850+
841851
#: src/views/certificate/Certificate.vue:137
842852
#, fuzzy
843853
msgid "Issue wildcard certificate"
844854
msgstr "Certificate is valid"
845855

846-
#: src/views/certificate/WildcardCertificate.vue:61
856+
#: src/views/certificate/WildcardCertificate.vue:89
847857
#, fuzzy
848858
msgid "Issue Wildcard Certificate"
849859
msgstr "Certificate Status"
@@ -857,6 +867,7 @@ msgstr "Enabled successfully"
857867
msgid "Jwt Secret"
858868
msgstr ""
859869

870+
#: src/views/certificate/WildcardCertificate.vue:107
860871
#: src/views/domain/cert/components/AutoCertStepOne.vue:108
861872
msgid "Key Type"
862873
msgstr ""
@@ -924,6 +935,20 @@ msgstr "Login successful"
924935
msgid "Logout successful"
925936
msgstr "Logout successful"
926937

938+
#: src/views/preference/Preference.vue:113
939+
msgid "Logrotate"
940+
msgstr ""
941+
942+
#: src/views/preference/LogrotateSettings.vue:17
943+
msgid ""
944+
"Logrotate, by default, is enabled in most mainstream Linux distributions for "
945+
"users who install Nginx UI on the host machine, so you don't need to modify "
946+
"the parameters on this page. For users who install Nginx UI using Docker "
947+
"containers, you can manually enable this option. The crontab task scheduler "
948+
"of Nginx UI will execute the logrotate command at the interval you set in "
949+
"minutes."
950+
msgstr ""
951+
927952
#: src/views/domain/cert/components/AutoCertStepOne.vue:87
928953
#, fuzzy
929954
msgid ""
@@ -963,6 +988,10 @@ msgstr "Memory"
963988
msgid "Memory and Storage"
964989
msgstr "Memory and Storage"
965990

991+
#: src/views/preference/LogrotateSettings.vue:34
992+
msgid "Minutes"
993+
msgstr ""
994+
966995
#: src/components/ChatGPT/ChatGPT.vue:256
967996
#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
968997
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:336
@@ -1019,13 +1048,13 @@ msgstr "Network Total Send"
10191048
msgid "New version released"
10201049
msgstr ""
10211050

1022-
#: src/views/certificate/WildcardCertificate.vue:87
1051+
#: src/views/certificate/WildcardCertificate.vue:127
10231052
#: src/views/domain/cert/components/ObtainCert.vue:204
10241053
#: src/views/domain/DomainAdd.vue:145
10251054
msgid "Next"
10261055
msgstr "Next"
10271056

1028-
#: src/views/preference/Preference.vue:102
1057+
#: src/views/preference/Preference.vue:101
10291058
msgid "Nginx"
10301059
msgstr ""
10311060

@@ -1148,7 +1177,7 @@ msgstr ""
11481177
msgid "Online"
11491178
msgstr ""
11501179

1151-
#: src/views/preference/Preference.vue:108
1180+
#: src/views/preference/Preference.vue:107
11521181
msgid "OpenAI"
11531182
msgstr ""
11541183

@@ -1242,7 +1271,7 @@ msgstr ""
12421271
msgid "Pre-release"
12431272
msgstr ""
12441273

1245-
#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
1274+
#: src/routes/index.ts:210 src/views/preference/Preference.vue:90
12461275
msgid "Preference"
12471276
msgstr ""
12481277

@@ -1334,7 +1363,7 @@ msgid "Renew Certificate Success"
13341363
msgstr "Certificate is valid"
13351364

13361365
#: src/views/certificate/RenewCert.vue:25
1337-
#: src/views/certificate/WildcardCertificate.vue:50
1366+
#: src/views/certificate/WildcardCertificate.vue:51
13381367
#, fuzzy
13391368
msgid "Renew successfully"
13401369
msgstr "Enabled successfully"
@@ -1368,7 +1397,7 @@ msgstr ""
13681397
#: src/views/certificate/CertificateEditor.vue:245
13691398
#: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
13701399
#: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
1371-
#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
1400+
#: src/views/preference/Preference.vue:124 src/views/stream/StreamEdit.vue:253
13721401
msgid "Save"
13731402
msgstr "Save"
13741403

@@ -1383,7 +1412,7 @@ msgstr "Save error %{msg}"
13831412

13841413
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
13851414
#: src/views/certificate/CertificateEditor.vue:48
1386-
#: src/views/preference/Preference.vue:61
1415+
#: src/views/preference/Preference.vue:60
13871416
#, fuzzy
13881417
msgid "Save successfully"
13891418
msgstr "Saved successfully"
@@ -1416,7 +1445,7 @@ msgstr "Send"
14161445
#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
14171446
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
14181447
#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
1419-
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:65
1448+
#: src/views/other/Install.vue:72 src/views/preference/Preference.vue:64
14201449
#: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
14211450
#: src/views/system/Upgrade.vue:45
14221451
msgid "Server error"
@@ -1617,6 +1646,10 @@ msgstr ""
16171646
msgid "This field should not be empty"
16181647
msgstr ""
16191648

1649+
#: src/views/preference/LogrotateSettings.vue:16
1650+
msgid "Tips"
1651+
msgstr ""
1652+
16201653
#: src/views/notification/Notification.vue:21
16211654
msgid "Title"
16221655
msgstr ""

0 commit comments

Comments
 (0)