discourse/app/jobs/scheduled/clean_up_unmatched_ips.rb
2023-01-09 14:14:59 +00:00

25 lines
606 B
Ruby

# frozen_string_literal: true
module Jobs
class CleanUpUnmatchedIPs < ::Jobs::Scheduled
every 1.day
def execute(args)
# roll-up IP addresses first
ScreenedIpAddress.roll_up
last_match_threshold = SiteSetting.max_age_unmatched_ips.days.ago
# remove old unmatched IP addresses
ScreenedIpAddress
.where(action_type: ScreenedIpAddress.actions[:block])
.where(
"last_match_at < ? OR (last_match_at IS NULL AND created_at < ?)",
last_match_threshold,
last_match_threshold,
)
.destroy_all
end
end
end