diff --git a/web/html/form/inbound.html b/web/html/form/inbound.html index 8b59dc28..5c982b6c 100644 --- a/web/html/form/inbound.html +++ b/web/html/form/inbound.html @@ -73,6 +73,8 @@ :dropdown-class-name="themeSwitcher.currentTheme"> {{ i18n "pages.inbounds.periodicTrafficReset.never" }} + {{ i18n + "pages.inbounds.periodicTrafficReset.hourly" }} {{ i18n "pages.inbounds.periodicTrafficReset.daily" }} {{ i18n diff --git a/web/job/periodic_traffic_reset_job.go b/web/job/periodic_traffic_reset_job.go index 6a7fb6f2..48aab2a1 100644 --- a/web/job/periodic_traffic_reset_job.go +++ b/web/job/periodic_traffic_reset_job.go @@ -37,7 +37,7 @@ func (j *PeriodicTrafficResetJob) Run() { resetCount := 0 for _, inbound := range inbounds { - resetInboundErr := j.inboundService.ResetAllTraffics() + resetInboundErr := j.inboundService.ResetInboundTraffic(inbound.Id) if resetInboundErr != nil { logger.Warning("Failed to reset traffic for inbound", inbound.Id, ":", resetInboundErr) } diff --git a/web/service/inbound.go b/web/service/inbound.go index 8a3a4ae2..81f37389 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -1891,6 +1891,16 @@ func (s *InboundService) ResetAllTraffics() error { return err } +func (s *InboundService) ResetInboundTraffic(id int) error { + db := database.GetDB() + + result := db.Model(model.Inbound{}). + Where("id = ?", id). + Updates(map[string]any{"up": 0, "down": 0}) + + return result.Error +} + func (s *InboundService) DelDepletedClients(id int) (err error) { db := database.GetDB() tx := db.Begin() diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index 24da2800..ace753e1 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -312,6 +312,7 @@ "daily" = "يومياً" "weekly" = "أسبوعياً" "monthly" = "شهرياً" +"hourly" = "كل ساعة" [pages.inbounds.toasts] "obtain" = "تم الحصول عليه" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index a7b34eae..4cf1be07 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -312,6 +312,7 @@ "daily" = "Daily" "weekly" = "Weekly" "monthly" = "Monthly" +"hourly" = "Hourly" [pages.inbounds.toasts] "obtain" = "Obtain" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 8337ee27..8e76fba3 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -312,6 +312,7 @@ "daily" = "Diariamente" "weekly" = "Semanalmente" "monthly" = "Mensualmente" +"hourly" = "Cada hora" [pages.inbounds.toasts] "obtain" = "Recibir" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 3e15639e..c6ea9a84 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -312,6 +312,7 @@ "daily" = "روزانه" "weekly" = "هفتگی" "monthly" = "ماهانه" +"hourly" = "هر ساعت" [pages.inbounds.toasts] "obtain" = "فراهم‌سازی" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index 23a5ad5b..32f79d5f 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -312,6 +312,7 @@ "daily" = "Harian" "weekly" = "Mingguan" "monthly" = "Bulanan" +"hourly" = "Setiap jam" [pages.inbounds.toasts] "obtain" = "Dapatkan" diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index cdf98d71..7360c033 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -312,6 +312,7 @@ "daily" = "毎日" "weekly" = "毎週" "monthly" = "毎月" +"hourly" = "毎時" [pages.inbounds.toasts] "obtain" = "取得" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index dcc02929..b327ddba 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -312,6 +312,7 @@ "daily" = "Diariamente" "weekly" = "Semanalmente" "monthly" = "Mensalmente" +"hourly" = "A cada hora" [pages.inbounds.toasts] "obtain" = "Obter" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 75ca9841..2e5049f6 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -312,6 +312,7 @@ "daily" = "Ежедневно" "weekly" = "Еженедельно" "monthly" = "Ежемесячно" +"hourly" = "Ежечасно" [pages.inbounds.toasts] "obtain" = "Получить" diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index 6c49c07e..cbf3a048 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -312,6 +312,7 @@ "daily" = "Günlük" "weekly" = "Haftalık" "monthly" = "Aylık" +"hourly" = "Saatlik" [pages.inbounds.toasts] "obtain" = "Elde Et" diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index c2a2ec07..36ef8dff 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -312,6 +312,7 @@ "daily" = "Щодня" "weekly" = "Щотижня" "monthly" = "Щомісяця" +"hourly" = "Щогодини" [pages.inbounds.toasts] "obtain" = "Отримати" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index 8670c673..a926c2cd 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -312,6 +312,7 @@ "daily" = "Hàng ngày" "weekly" = "Hàng tuần" "monthly" = "Hàng tháng" +"hourly" = "Hàng giờ" [pages.inbounds.toasts] "obtain" = "Nhận" diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index 8e42b2f2..1d0fc9c4 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -312,6 +312,7 @@ "daily" = "每日" "weekly" = "每周" "monthly" = "每月" +"hourly" = "每小时" [pages.inbounds.toasts] "obtain" = "获取" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index f4bd78d7..7cac53c3 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -312,6 +312,7 @@ "daily" = "每日" "weekly" = "每週" "monthly" = "每月" +"hourly" = "每小時" [pages.inbounds.toasts] "obtain" = "獲取" diff --git a/web/web.go b/web/web.go index 462e88a0..158bc048 100644 --- a/web/web.go +++ b/web/web.go @@ -327,6 +327,8 @@ func (s *Server) startTask() { s.cron.AddJob("@daily", job.NewClearLogsJob()) // Inbound traffic reset jobs + // Run every hour + s.cron.AddJob("@hourly", job.NewPeriodicTrafficResetJob("hourly")) // Run once a day, midnight s.cron.AddJob("@daily", job.NewPeriodicTrafficResetJob("daily")) // Run once a week, midnight between Sat/Sun