mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-24 02:38:16 +00:00
Merge "Create a base interface for watchers"
This commit is contained in:
commit
020ca95186
|
@ -133,7 +133,8 @@
|
|||
"MediaWiki\\Extension\\AbuseFilter\\Hooks\\": "includes/Hooks/",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\": "includes/LogFormatter/",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\Parser\\": "includes/ParserNS/",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\Filter\\": "includes/Filter/"
|
||||
"MediaWiki\\Extension\\AbuseFilter\\Filter\\": "includes/Filter/",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\Watcher\\": "includes/Watcher/"
|
||||
},
|
||||
"AutoloadClasses": {
|
||||
"AbuseFilter": "includes/AbuseFilter.php",
|
||||
|
@ -167,7 +168,6 @@
|
|||
"MediaWiki\\Extension\\AbuseFilter\\FilterLookup": "includes/FilterLookup.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\KeywordsManager": "includes/KeywordsManager.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\AbuseFilterPermissionManager": "includes/AbuseFilterPermissionManager.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\EmergencyWatcher": "includes/EmergencyWatcher.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\AbuseFilterServices": "includes/AbuseFilterServices.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\FilterProfiler": "includes/FilterProfiler.php",
|
||||
"MediaWiki\\Extension\\AbuseFilter\\ChangeTagger": "includes/ChangeTagger.php",
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\ChangeTagger;
|
||||
use MediaWiki\Extension\AbuseFilter\EmergencyWatcher;
|
||||
use MediaWiki\Extension\AbuseFilter\Filter\Filter;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterLookup;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterProfiler;
|
||||
use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner;
|
||||
use MediaWiki\Extension\AbuseFilter\VariableGenerator\VariableGenerator;
|
||||
use MediaWiki\Extension\AbuseFilter\Watcher\Watcher;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Session\SessionManager;
|
||||
|
@ -80,8 +80,8 @@ class AbuseFilterRunner {
|
|||
/** @var FilterLookup */
|
||||
private $filterLookup;
|
||||
|
||||
/** @var EmergencyWatcher */
|
||||
private $emergencyWatcher;
|
||||
/** @var Watcher[] */
|
||||
private $watchers;
|
||||
|
||||
/**
|
||||
* @param User $user The user who performed the action being filtered
|
||||
|
@ -110,7 +110,8 @@ class AbuseFilterRunner {
|
|||
$this->changeTagger = AbuseFilterServices::getChangeTagger();
|
||||
$this->filterUser = AbuseFilterServices::getFilterUser()->getUser();
|
||||
$this->filterLookup = AbuseFilterServices::getFilterLookup();
|
||||
$this->emergencyWatcher = AbuseFilterServices::getEmergencyWatcher();
|
||||
// TODO Inject, add a hook for custom watchers
|
||||
$this->watchers = [ AbuseFilterServices::getEmergencyWatcher() ];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1123,7 +1124,9 @@ class AbuseFilterRunner {
|
|||
'global' => $globalLogIDs
|
||||
];
|
||||
|
||||
$this->emergencyWatcher->checkFilters( $loggedLocalFilters, $this->group );
|
||||
foreach ( $this->watchers as $watcher ) {
|
||||
$watcher->run( $loggedLocalFilters, $this->group );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace MediaWiki\Extension\AbuseFilter;
|
||||
|
||||
use MediaWiki\Extension\AbuseFilter\Parser\ParserFactory;
|
||||
use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
class AbuseFilterServices {
|
||||
|
|
|
@ -6,7 +6,6 @@ use MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore;
|
|||
use MediaWiki\Extension\AbuseFilter\CentralDBManager;
|
||||
use MediaWiki\Extension\AbuseFilter\ChangeTagger;
|
||||
use MediaWiki\Extension\AbuseFilter\ChangeTagsManager;
|
||||
use MediaWiki\Extension\AbuseFilter\EmergencyWatcher;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterCompare;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterImporter;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterLookup;
|
||||
|
@ -16,6 +15,7 @@ use MediaWiki\Extension\AbuseFilter\FilterValidator;
|
|||
use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner;
|
||||
use MediaWiki\Extension\AbuseFilter\KeywordsManager;
|
||||
use MediaWiki\Extension\AbuseFilter\Parser\ParserFactory;
|
||||
use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace MediaWiki\Extension\AbuseFilter;
|
||||
namespace MediaWiki\Extension\AbuseFilter\Watcher;
|
||||
|
||||
use AutoCommitUpdate;
|
||||
use DeferredUpdates;
|
||||
use InvalidArgumentException;
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterLookup;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterProfiler;
|
||||
use Wikimedia\Rdbms\IDatabase;
|
||||
use Wikimedia\Rdbms\ILoadBalancer;
|
||||
|
||||
|
@ -15,7 +17,7 @@ use Wikimedia\Rdbms\ILoadBalancer;
|
|||
*
|
||||
* @todo We should log throttling somewhere
|
||||
*/
|
||||
class EmergencyWatcher {
|
||||
class EmergencyWatcher implements Watcher {
|
||||
public const SERVICE_NAME = 'AbuseFilterEmergencyWatcher';
|
||||
|
||||
public const CONSTRUCTOR_OPTIONS = [
|
||||
|
@ -112,10 +114,9 @@ class EmergencyWatcher {
|
|||
/**
|
||||
* Determine which a filters must be throttled and apply the throttling
|
||||
*
|
||||
* @param string[] $filters The filters to check
|
||||
* @param string $group
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function checkFilters( array $filters, string $group ) : void {
|
||||
public function run( array $filters, string $group ) : void {
|
||||
$throttleFilters = $this->getFiltersToThrottle( $filters, $group );
|
||||
if ( !$throttleFilters ) {
|
||||
return;
|
14
includes/Watcher/Watcher.php
Normal file
14
includes/Watcher/Watcher.php
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace MediaWiki\Extension\AbuseFilter\Watcher;
|
||||
|
||||
/**
|
||||
* Classes inheriting this interface can be used to execute some actions after all filter have been checked.
|
||||
*/
|
||||
interface Watcher {
|
||||
/**
|
||||
* @param string[] $filters The filters that matched the action
|
||||
* @param string $group
|
||||
*/
|
||||
public function run( array $filters, string $group ) : void;
|
||||
}
|
|
@ -1,14 +1,14 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\Extension\AbuseFilter\EmergencyWatcher;
|
||||
use MediaWiki\Extension\AbuseFilter\Filter\MutableFilter;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterLookup;
|
||||
use MediaWiki\Extension\AbuseFilter\FilterProfiler;
|
||||
use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher;
|
||||
use Wikimedia\Rdbms\ILoadBalancer;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \MediaWiki\Extension\AbuseFilter\EmergencyWatcher
|
||||
* @coversDefaultClass \MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher
|
||||
*/
|
||||
class EmergencyWatcherTest extends MediaWikiUnitTestCase {
|
||||
|
||||
|
|
Loading…
Reference in a new issue