2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2014-11-26 00:12:49 +08:00
|
|
|
module Jobs
|
2019-10-02 12:01:53 +08:00
|
|
|
class CleanUpUnmatchedIPs < ::Jobs::Scheduled
|
2014-11-26 00:12:49 +08:00
|
|
|
every 1.day
|
|
|
|
|
2014-11-26 01:45:45 +08:00
|
|
|
def execute(args)
|
2015-03-10 01:55:17 +08:00
|
|
|
# roll-up IP addresses first
|
|
|
|
ScreenedIpAddress.roll_up
|
|
|
|
|
2014-11-26 00:12:49 +08:00
|
|
|
last_match_threshold = SiteSetting.max_age_unmatched_ips.days.ago
|
|
|
|
|
2015-03-10 01:55:17 +08:00
|
|
|
# remove old unmatched IP addresses
|
2014-11-26 00:12:49 +08:00
|
|
|
ScreenedIpAddress
|
|
|
|
.where(action_type: ScreenedIpAddress.actions[:block])
|
2015-06-05 20:04:04 +08:00
|
|
|
.where(
|
|
|
|
"last_match_at < ? OR (last_match_at IS NULL AND created_at < ?)",
|
|
|
|
last_match_threshold,
|
|
|
|
last_match_threshold,
|
|
|
|
)
|
2014-11-26 00:12:49 +08:00
|
|
|
.destroy_all
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|