diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php b/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php new file mode 100644 index 00000000..1a4b560b --- /dev/null +++ b/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php @@ -0,0 +1,61 @@ +<?php + +if ( getenv( 'MW_INSTALL_PATH' ) ) { + $IP = getenv( 'MW_INSTALL_PATH' ); +} else { + $IP = __DIR__ . '/../../..'; +} +require_once "$IP/maintenance/Maintenance.php"; + +class PurgeOldLogIPData extends Maintenance { + public function __construct() { + parent::__construct(); + $this->mDescription = 'Purge old IP Address data from AbuseFilter logs'; + $this->setBatchSize( 200 ); + + $this->requireExtension( 'Abuse Filter' ); + } + + public function execute() { + global $wgAbuseFilterLogIPMaxAge; + + $this->output( "Purging old IP Address data from abuse_filter_log...\n" ); + $dbw = wfGetDB( DB_MASTER ); + $cutoffUnix = time() - $wgAbuseFilterLogIPMaxAge; + + $count = 0; + do { + $ids = $dbw->selectFieldValues( + 'abuse_filter_log', + 'afl_id', + [ + 'afl_ip <> ""', + "afl_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) ) + ], + __METHOD__, + [ 'LIMIT' => $this->getBatchSize() ] + ); + + if ( $ids ) { + $dbw->update( + 'abuse_filter_log', + [ 'afl_ip' => '' ], + [ 'afl_id' => $ids ], + __METHOD__ + ); + $count += $dbw->affectedRows(); + $this->output( "$count\n" ); + + wfWaitForSlaves(); + } + } while ( count( $ids ) >= $this->getBatchSize() ); + + $this->output( "$count rows.\n" ); + + $this->output( "Done.\n" ); + } + +} + +$maintClass = "PurgeOldLogIPData"; +require_once RUN_MAINTENANCE_IF_MAIN; |