Add new hourly reset traffic (#3966)

* Add new hourly reset traffic

* fix
This commit is contained in:
Andrew Smirnov 2026-04-19 22:37:34 +03:00 committed by GitHub
parent 7466916e02
commit e986a133f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 28 additions and 1 deletions

View file

@ -73,6 +73,8 @@
:dropdown-class-name="themeSwitcher.currentTheme"> :dropdown-class-name="themeSwitcher.currentTheme">
<a-select-option value="never">{{ i18n <a-select-option value="never">{{ i18n
"pages.inbounds.periodicTrafficReset.never" }}</a-select-option> "pages.inbounds.periodicTrafficReset.never" }}</a-select-option>
<a-select-option value="hourly">{{ i18n
"pages.inbounds.periodicTrafficReset.hourly" }}</a-select-option>
<a-select-option value="daily">{{ i18n <a-select-option value="daily">{{ i18n
"pages.inbounds.periodicTrafficReset.daily" }}</a-select-option> "pages.inbounds.periodicTrafficReset.daily" }}</a-select-option>
<a-select-option value="weekly">{{ i18n <a-select-option value="weekly">{{ i18n

View file

@ -37,7 +37,7 @@ func (j *PeriodicTrafficResetJob) Run() {
resetCount := 0 resetCount := 0
for _, inbound := range inbounds { for _, inbound := range inbounds {
resetInboundErr := j.inboundService.ResetAllTraffics() resetInboundErr := j.inboundService.ResetInboundTraffic(inbound.Id)
if resetInboundErr != nil { if resetInboundErr != nil {
logger.Warning("Failed to reset traffic for inbound", inbound.Id, ":", resetInboundErr) logger.Warning("Failed to reset traffic for inbound", inbound.Id, ":", resetInboundErr)
} }

View file

@ -1891,6 +1891,16 @@ func (s *InboundService) ResetAllTraffics() error {
return err 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) { func (s *InboundService) DelDepletedClients(id int) (err error) {
db := database.GetDB() db := database.GetDB()
tx := db.Begin() tx := db.Begin()

View file

@ -312,6 +312,7 @@
"daily" = "يومياً" "daily" = "يومياً"
"weekly" = "أسبوعياً" "weekly" = "أسبوعياً"
"monthly" = "شهرياً" "monthly" = "شهرياً"
"hourly" = "كل ساعة"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "تم الحصول عليه" "obtain" = "تم الحصول عليه"

View file

@ -312,6 +312,7 @@
"daily" = "Daily" "daily" = "Daily"
"weekly" = "Weekly" "weekly" = "Weekly"
"monthly" = "Monthly" "monthly" = "Monthly"
"hourly" = "Hourly"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Obtain" "obtain" = "Obtain"

View file

@ -312,6 +312,7 @@
"daily" = "Diariamente" "daily" = "Diariamente"
"weekly" = "Semanalmente" "weekly" = "Semanalmente"
"monthly" = "Mensualmente" "monthly" = "Mensualmente"
"hourly" = "Cada hora"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Recibir" "obtain" = "Recibir"

View file

@ -312,6 +312,7 @@
"daily" = "روزانه" "daily" = "روزانه"
"weekly" = "هفتگی" "weekly" = "هفتگی"
"monthly" = "ماهانه" "monthly" = "ماهانه"
"hourly" = "هر ساعت"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "فراهم‌سازی" "obtain" = "فراهم‌سازی"

View file

@ -312,6 +312,7 @@
"daily" = "Harian" "daily" = "Harian"
"weekly" = "Mingguan" "weekly" = "Mingguan"
"monthly" = "Bulanan" "monthly" = "Bulanan"
"hourly" = "Setiap jam"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Dapatkan" "obtain" = "Dapatkan"

View file

@ -312,6 +312,7 @@
"daily" = "毎日" "daily" = "毎日"
"weekly" = "毎週" "weekly" = "毎週"
"monthly" = "毎月" "monthly" = "毎月"
"hourly" = "毎時"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "取得" "obtain" = "取得"

View file

@ -312,6 +312,7 @@
"daily" = "Diariamente" "daily" = "Diariamente"
"weekly" = "Semanalmente" "weekly" = "Semanalmente"
"monthly" = "Mensalmente" "monthly" = "Mensalmente"
"hourly" = "A cada hora"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Obter" "obtain" = "Obter"

View file

@ -312,6 +312,7 @@
"daily" = "Ежедневно" "daily" = "Ежедневно"
"weekly" = "Еженедельно" "weekly" = "Еженедельно"
"monthly" = "Ежемесячно" "monthly" = "Ежемесячно"
"hourly" = "Ежечасно"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Получить" "obtain" = "Получить"

View file

@ -312,6 +312,7 @@
"daily" = "Günlük" "daily" = "Günlük"
"weekly" = "Haftalık" "weekly" = "Haftalık"
"monthly" = "Aylık" "monthly" = "Aylık"
"hourly" = "Saatlik"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Elde Et" "obtain" = "Elde Et"

View file

@ -312,6 +312,7 @@
"daily" = "Щодня" "daily" = "Щодня"
"weekly" = "Щотижня" "weekly" = "Щотижня"
"monthly" = "Щомісяця" "monthly" = "Щомісяця"
"hourly" = "Щогодини"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Отримати" "obtain" = "Отримати"

View file

@ -312,6 +312,7 @@
"daily" = "Hàng ngày" "daily" = "Hàng ngày"
"weekly" = "Hàng tuần" "weekly" = "Hàng tuần"
"monthly" = "Hàng tháng" "monthly" = "Hàng tháng"
"hourly" = "Hàng giờ"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "Nhận" "obtain" = "Nhận"

View file

@ -312,6 +312,7 @@
"daily" = "每日" "daily" = "每日"
"weekly" = "每周" "weekly" = "每周"
"monthly" = "每月" "monthly" = "每月"
"hourly" = "每小时"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "获取" "obtain" = "获取"

View file

@ -312,6 +312,7 @@
"daily" = "每日" "daily" = "每日"
"weekly" = "每週" "weekly" = "每週"
"monthly" = "每月" "monthly" = "每月"
"hourly" = "每小時"
[pages.inbounds.toasts] [pages.inbounds.toasts]
"obtain" = "獲取" "obtain" = "獲取"

View file

@ -327,6 +327,8 @@ func (s *Server) startTask() {
s.cron.AddJob("@daily", job.NewClearLogsJob()) s.cron.AddJob("@daily", job.NewClearLogsJob())
// Inbound traffic reset jobs // Inbound traffic reset jobs
// Run every hour
s.cron.AddJob("@hourly", job.NewPeriodicTrafficResetJob("hourly"))
// Run once a day, midnight // Run once a day, midnight
s.cron.AddJob("@daily", job.NewPeriodicTrafficResetJob("daily")) s.cron.AddJob("@daily", job.NewPeriodicTrafficResetJob("daily"))
// Run once a week, midnight between Sat/Sun // Run once a week, midnight between Sat/Sun