From 9a02e6593c395e68bc537760b5836e0b18ff623c Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Thu, 25 Apr 2024 21:10:02 +0200 Subject: [PATCH] optional store traffic time --- backend/app/app.go | 8 +++++++- backend/cronjob/cronJob.go | 4 ++-- backend/cronjob/delStatsJob.go | 9 ++++++--- backend/service/setting.go | 5 +++++ frontend/src/locales/en.ts | 1 + frontend/src/locales/fa.ts | 1 + frontend/src/locales/vi.ts | 1 + frontend/src/locales/zhcn.ts | 1 + frontend/src/locales/zhtw.ts | 1 + frontend/src/views/Settings.vue | 16 ++++++++++++++++ 10 files changed, 41 insertions(+), 6 deletions(-) diff --git a/backend/app/app.go b/backend/app/app.go index d9587b8..1b4c767 100644 --- a/backend/app/app.go +++ b/backend/app/app.go @@ -51,7 +51,13 @@ func (a *APP) Start() error { if err != nil { return err } - err = a.cronJob.Start(loc) + + trafficAge, err := a.SettingService.GetTrafficAge() + if err != nil { + return err + } + + err = a.cronJob.Start(loc, trafficAge) if err != nil { return err } diff --git a/backend/cronjob/cronJob.go b/backend/cronjob/cronJob.go index 9115f52..df5853c 100644 --- a/backend/cronjob/cronJob.go +++ b/backend/cronjob/cronJob.go @@ -14,7 +14,7 @@ func NewCronJob() *CronJob { return &CronJob{} } -func (c *CronJob) Start(loc *time.Location) error { +func (c *CronJob) Start(loc *time.Location, trafficAge int) error { c.cron = cron.New(cron.WithLocation(loc), cron.WithSeconds()) c.cron.Start() @@ -24,7 +24,7 @@ func (c *CronJob) Start(loc *time.Location) error { // Start expiry job c.cron.AddJob("@every 1m", NewDepleteJob()) // Start deleting old stats - c.cron.AddJob("@daily", NewDelStatsJob()) + c.cron.AddJob("@daily", NewDelStatsJob(trafficAge)) }() return nil diff --git a/backend/cronjob/delStatsJob.go b/backend/cronjob/delStatsJob.go index f445156..c6628ff 100644 --- a/backend/cronjob/delStatsJob.go +++ b/backend/cronjob/delStatsJob.go @@ -7,14 +7,17 @@ import ( type DelStatsJob struct { service.StatsService + trafficAge int } -func NewDelStatsJob() *DelStatsJob { - return &DelStatsJob{} +func NewDelStatsJob(ta int) *DelStatsJob { + return &DelStatsJob{ + trafficAge: ta, + } } func (s *DelStatsJob) Run() { - err := s.StatsService.DelOldStats(30) + err := s.StatsService.DelOldStats(s.trafficAge) if err != nil { logger.Warning("Deleting old statistics failed: ", err) return diff --git a/backend/service/setting.go b/backend/service/setting.go index e1e1a3c..260ccf9 100644 --- a/backend/service/setting.go +++ b/backend/service/setting.go @@ -24,6 +24,7 @@ var defaultValueMap = map[string]string{ "webPath": "/app/", "webURI": "", "sessionMaxAge": "0", + "trafficAge": "30", "timeLocation": "Asia/Tehran", "subListen": "", "subPort": "2096", @@ -204,6 +205,10 @@ func (s *SettingService) GetSessionMaxAge() (int, error) { return s.getInt("sessionMaxAge") } +func (s *SettingService) GetTrafficAge() (int, error) { + return s.getInt("trafficAge") +} + func (s *SettingService) GetTimeLocation() (*time.Location, error) { l, err := s.getString("timeLocation") if err != nil { diff --git a/frontend/src/locales/en.ts b/frontend/src/locales/en.ts index 372eaab..7cce85d 100644 --- a/frontend/src/locales/en.ts +++ b/frontend/src/locales/en.ts @@ -102,6 +102,7 @@ export default { sslCert: "SSL Certificate Path", webUri: "Panel URI", sessionAge: "Session Maximum Age", + trafficAge: "Traffic Maximum Age", timeLoc: "Timezone Location", subEncode: "Enable Encoding", subInfo: "Enable Client Info", diff --git a/frontend/src/locales/fa.ts b/frontend/src/locales/fa.ts index 25e800e..375a7d0 100644 --- a/frontend/src/locales/fa.ts +++ b/frontend/src/locales/fa.ts @@ -102,6 +102,7 @@ export default { sslCert: "مسیر فایل گواهی", webUri: "آدرس نهایی پنل", sessionAge: "بیشینه زمان لاگین ماندن", + trafficAge: "بیشینه زمان ذخیره ترافیک", timeLoc: "منطقه زمانی", subEncode: "رمزگذاری", subInfo: "نمایش اطلاعات کاربر", diff --git a/frontend/src/locales/vi.ts b/frontend/src/locales/vi.ts index 6fb5447..d272cc3 100644 --- a/frontend/src/locales/vi.ts +++ b/frontend/src/locales/vi.ts @@ -102,6 +102,7 @@ export default { sslCert: "Đường dẫn chứng chỉ SSL", webUri: "URI bảng điều khiển", sessionAge: "Tuổi tối đa của phiên", + trafficAge: "Tuổi lưu thông tối đa", timeLoc: "Vị trí múi giờ", subEncode: "Kích hoạt mã hóa", subInfo: "Kích hoạt thông tin khách hàng", diff --git a/frontend/src/locales/zhcn.ts b/frontend/src/locales/zhcn.ts index 2d6f989..dd4f346 100644 --- a/frontend/src/locales/zhcn.ts +++ b/frontend/src/locales/zhcn.ts @@ -102,6 +102,7 @@ export default { sslCert: "SSL 证书 (cert) 路径", webUri: "面板 URI", sessionAge: "会话最大连接数", + trafficAge: "流量最大年龄", timeLoc: "时区", subEncode: "启用编码", subInfo: "启用用户信息", diff --git a/frontend/src/locales/zhtw.ts b/frontend/src/locales/zhtw.ts index d37fa40..b725e1c 100644 --- a/frontend/src/locales/zhtw.ts +++ b/frontend/src/locales/zhtw.ts @@ -102,6 +102,7 @@ export default { sslCert: "SSL 證書 (cert) 路徑", webUri: "面板 URI", sessionAge: "會話最大連接數", + trafficAge: "流量最大年齡", timeLoc: "時區", subEncode: "啟用編碼", subInfo: "啟用用戶信息", diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index 3ddc1a7..4c53700 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -52,6 +52,16 @@ type="number" v-model.number="sessionMaxAge" :label="$t('setting.sessionAge')" + :suffix="$t('date.h')" + hide-details + > + + + @@ -152,6 +162,7 @@ const settings = ref({ webPath: "/app/", webURI: "", sessionMaxAge: "0", + trafficAge: "30", timeLocation: "Asia/Tehran", subListen: "", subPort: "2096", @@ -246,6 +257,11 @@ const sessionMaxAge = computed({ set: (v:number) => { settings.value.sessionMaxAge = v.toString() } }) +const trafficAge = computed({ + get: () => { return parseInt(settings.value.trafficAge) }, + set: (v:number) => { settings.value.trafficAge = v.toString() } +}) + const subPort = computed({ get: () => { return parseInt(settings.value.subPort) }, set: (v:number) => { settings.value.subPort = v.toString() }