summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php')
-rw-r--r--www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php61
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;