Add extension.json, empty php entry point

Bug: T87876
Change-Id: Icff39f3f79f7ffe86214cfa216b53f3d882e1968
This commit is contained in:
Gergő Tisza 2016-05-15 11:12:40 +00:00
parent 3dea270332
commit e71808f4c4
3 changed files with 311 additions and 200 deletions

View file

@ -1,8 +1,4 @@
<?php
if ( !defined( 'MEDIAWIKI' ) ) {
die();
}
/**
* Automatically applies heuristics to edits.
*
@ -17,228 +13,101 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* @link http://www.mediawiki.org/wiki/Extension:AbuseFilter Documentation
*/
$wgExtensionCredits['antispam'][] = array(
'path' => __FILE__,
'name' => 'Abuse Filter',
'author' => array( 'Andrew Garrett', 'River Tarnell', 'Victor Vasiliev', 'Marius Hoch' ),
'descriptionmsg' => 'abusefilter-desc',
'url' => 'https://www.mediawiki.org/wiki/Extension:AbuseFilter',
'license-name' => 'GPL-2.0+',
);
if ( function_exists( 'wfLoadExtension' ) ) {
wfLoadExtension( 'AbuseFilter' );
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['AbuseFilter'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['AbuseFilterAliases'] = __DIR__ . '/AbuseFilter.alias.php';
/* wfWarn(
'Deprecated PHP entry point used for AbuseFilter extension. ' .
'Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
); */
return;
} else {
die( 'This version of the AbuseFilter extension requires MediaWiki 1.25+' );
}
$dir = __DIR__;
$wgMessagesDirs['AbuseFilter'] = "$dir/i18n";
$wgExtensionMessagesFiles['AbuseFilterAliases'] = "$dir/AbuseFilter.alias.php";
// Global declarations and documentation kept for IDEs and PHP documentors.
// This code is never executed.
$wgAutoloadClasses['AbuseFilter'] = "$dir/AbuseFilter.class.php";
$wgAutoloadClasses['AbuseFilterParser'] = "$dir/AbuseFilter.parser.php";
$wgAutoloadClasses['AbuseFilterTokenizer'] = "$dir/AbuseFilterTokenizer.php";
$wgAutoloadClasses['AbuseFilterHooks'] = "$dir/AbuseFilter.hooks.php";
$wgAutoloadClasses['SpecialAbuseLog'] = "$dir/special/SpecialAbuseLog.php";
$wgAutoloadClasses['AbuseLogPager'] = "$dir/special/SpecialAbuseLog.php";
$wgAutoloadClasses['SpecialAbuseFilter'] = "$dir/special/SpecialAbuseFilter.php";
$wgAutoloadClasses['AbuseLogHitFormatter'] = "$dir/AbuseLogHitFormatter.php";
$wgAutoloadClasses['AbuseFilterViewList'] = "$dir/Views/AbuseFilterViewList.php";
$wgAutoloadClasses['AbuseFilterPager'] = "$dir/Views/AbuseFilterViewList.php";
$wgAutoloadClasses['GlobalAbuseFilterPager'] = "$dir/Views/AbuseFilterViewList.php";
$wgAutoloadClasses['AbuseFilterView'] = "$dir/Views/AbuseFilterView.php";
$wgAutoloadClasses['AbuseFilterViewEdit'] = "$dir/Views/AbuseFilterViewEdit.php";
$wgAutoloadClasses['AbuseFilterViewTools'] = "$dir/Views/AbuseFilterViewTools.php";
$wgAutoloadClasses['AbuseFilterViewHistory'] = "$dir/Views/AbuseFilterViewHistory.php";
$wgAutoloadClasses['AbuseFilterHistoryPager'] = "$dir/Views/AbuseFilterViewHistory.php";
$wgAutoloadClasses['AbuseFilterViewRevert'] = "$dir/Views/AbuseFilterViewRevert.php";
$wgAutoloadClasses['AbuseFilterViewTestBatch'] = "$dir/Views/AbuseFilterViewTestBatch.php";
$wgAutoloadClasses['AbuseFilterViewExamine'] = "$dir/Views/AbuseFilterViewExamine.php";
$wgAutoloadClasses['AbuseFilterExaminePager'] = "$dir/Views/AbuseFilterViewExamine.php";
$wgAutoloadClasses['AbuseFilterChangesList'] = "$dir/Views/AbuseFilterView.php";
$wgAutoloadClasses['AbuseFilterViewDiff'] = "$dir/Views/AbuseFilterViewDiff.php";
$wgAutoloadClasses['TableDiffFormatterFullContext'] = "$dir/Views/AbuseFilterViewDiff.php";
$wgAutoloadClasses['AbuseFilterViewImport'] = "$dir/Views/AbuseFilterViewImport.php";
$wgAutoloadClasses['AbuseFilterVariableHolder'] = "$dir/AbuseFilterVariableHolder.php";
$wgAutoloadClasses['AFComputedVariable'] = "$dir/AbuseFilterVariableHolder.php";
$wgAutoloadClasses['AFPData'] = "$dir/AbuseFilter.parser.php";
$wgAutoloadClasses['AFPException'] = "$dir/AbuseFilter.parser.php";
$wgAutoloadClasses['AFPParserState'] = "$dir/AbuseFilter.parser.php";
$wgAutoloadClasses['AFPToken'] = "$dir/AbuseFilter.parser.php";
$wgAutoloadClasses['AFPUserVisibleException'] = "$dir/AbuseFilter.parser.php";
$wgSpecialPages['AbuseLog'] = 'SpecialAbuseLog';
$wgSpecialPages['AbuseFilter'] = 'SpecialAbuseFilter';
$wgAutoloadClasses['ApiQueryAbuseLog'] = "$dir/api/ApiQueryAbuseLog.php";
$wgAPIListModules['abuselog'] = 'ApiQueryAbuseLog';
$wgAutoloadClasses['ApiQueryAbuseFilters'] = "$dir/api/ApiQueryAbuseFilters.php";
$wgAPIListModules['abusefilters'] = 'ApiQueryAbuseFilters';
$wgAutoloadClasses['ApiAbuseFilterCheckSyntax'] = "$dir/api/ApiAbuseFilterCheckSyntax.php";
$wgAPIModules['abusefilterchecksyntax'] = 'ApiAbuseFilterCheckSyntax';
$wgAutoloadClasses['ApiAbuseFilterEvalExpression'] = "$dir/api/ApiAbuseFilterEvalExpression.php";
$wgAPIModules['abusefilterevalexpression'] = 'ApiAbuseFilterEvalExpression';
$wgAutoloadClasses['ApiAbuseFilterUnblockAutopromote'] =
"$dir/api/ApiAbuseFilterUnblockAutopromote.php";
$wgAPIModules['abusefilterunblockautopromote'] = 'ApiAbuseFilterUnblockAutopromote';
$wgAutoloadClasses['ApiAbuseFilterCheckMatch'] = "$dir/api/ApiAbuseFilterCheckMatch.php";
$wgAPIModules['abusefiltercheckmatch'] = 'ApiAbuseFilterCheckMatch';
$wgHooks['EditFilterMergedContent'][] = 'AbuseFilterHooks::onEditFilterMergedContent';
$wgHooks['GetAutoPromoteGroups'][] = 'AbuseFilterHooks::onGetAutoPromoteGroups';
$wgHooks['AbortMove'][] = 'AbuseFilterHooks::onAbortMove';
$wgHooks['MovePageCheckPermissions'][] = 'AbuseFilterHooks::onMovePageCheckPermissions';
$wgHooks['AbortNewAccount'][] = 'AbuseFilterHooks::onAbortNewAccount';
$wgHooks['AbortAutoAccount'][] = 'AbuseFilterHooks::onAbortAutoAccount';
$wgHooks['ArticleDelete'][] = 'AbuseFilterHooks::onArticleDelete';
$wgHooks['RecentChange_save'][] = 'AbuseFilterHooks::onRecentChangeSave';
$wgHooks['ListDefinedTags'][] = 'AbuseFilterHooks::onListDefinedTags';
$wgHooks['ChangeTagsListActive'][] = 'AbuseFilterHooks::onChangeTagsListActive';
$wgHooks['LoadExtensionSchemaUpdates'][] = 'AbuseFilterHooks::onLoadExtensionSchemaUpdates';
$wgHooks['ContributionsToolLinks'][] = 'AbuseFilterHooks::onContributionsToolLinks';
$wgHooks['UploadVerifyFile'][] = 'AbuseFilterHooks::onUploadVerifyFile';
$wgHooks['MakeGlobalVariablesScript'][] = 'AbuseFilterHooks::onMakeGlobalVariablesScript';
$wgHooks['ArticleSaveComplete'][] = 'AbuseFilterHooks::onArticleSaveComplete';
$wgHooks['APIEditBeforeSave'][] = 'AbuseFilterHooks::onAPIEditBeforeSave';
$wgHooks['UserMergeAccountFields'][] = 'AbuseFilterHooks::onUserMergeAccountFields';
$wgHooks['ParserOutputStashForEdit'][] = 'AbuseFilterHooks::onParserOutputStashForEdit';
$wgHooks['UnitTestsList'][] = 'AbuseFilterHooks::onUnitTestsList';
$wgAvailableRights[] = 'abusefilter-modify';
$wgAvailableRights[] = 'abusefilter-log-detail';
$wgAvailableRights[] = 'abusefilter-view';
$wgAvailableRights[] = 'abusefilter-log';
$wgAvailableRights[] = 'abusefilter-private';
$wgAvailableRights[] = 'abusefilter-modify-restricted';
$wgAvailableRights[] = 'abusefilter-revert';
$wgAvailableRights[] = 'abusefilter-view-private';
$wgAvailableRights[] = 'abusefilter-log-private';
$wgAvailableRights[] = 'abusefilter-hidden-log';
$wgAvailableRights[] = 'abusefilter-hide-log';
$wgAvailableRights[] = 'abusefilter-modify-global';
$wgLogTypes[] = 'abusefilter';
$wgLogNames['abusefilter'] = 'abusefilter-log-name';
$wgLogHeaders['abusefilter'] = 'abusefilter-log-header';
$wgLogActionsHandlers['abusefilter/modify'] = array( 'AbuseFilter', 'modifyActionText' );
$wgLogActionsHandlers['abusefilter/hit'] = 'AbuseLogHitFormatter';
$wgLogActions['suppress/hide-afl'] = 'abusefilter-logentry-suppress';
$wgLogActions['suppress/unhide-afl'] = 'abusefilter-logentry-unsuppress';
$commonModuleInfo = array(
'localBasePath' => __DIR__ . '/modules',
'remoteExtPath' => 'AbuseFilter/modules',
);
$wgResourceModules['ext.abuseFilter'] = array(
'position' => 'top',
'styles' => 'ext.abuseFilter.css',
) + $commonModuleInfo;
$wgResourceModules['ext.abuseFilter.edit'] = array(
'scripts' => 'ext.abuseFilter.edit.js',
'messages' => array(
'abusefilter-edit-syntaxok',
'abusefilter-edit-syntaxerr',
'abusefilter-http-error',
'unknown-error',
),
'dependencies' => array(
'mediawiki.util',
'mediawiki.api',
'jquery.textSelection',
'jquery.spinner',
),
) + $commonModuleInfo;
$wgResourceModules['ext.abuseFilter.tools'] = array(
'scripts' => 'ext.abuseFilter.tools.js',
'messages' => array(
'abusefilter-reautoconfirm-notallowed',
'abusefilter-reautoconfirm-none',
'abusefilter-reautoconfirm-done',
'abusefilter-http-error',
'unknown-error',
),
'dependencies' => array(
'mediawiki.api',
'mediawiki.notify',
'user.tokens',
'jquery.spinner'
),
) + $commonModuleInfo;
$wgResourceModules['ext.abuseFilter.examine'] = array(
'scripts' => 'ext.abuseFilter.examine.js',
'messages' => array(
'abusefilter-examine-match',
'abusefilter-examine-nomatch',
'abusefilter-examine-syntaxerror',
'abusefilter-examine-notfound',
'abusefilter-mustbeeditor',
'abusefilter-http-error',
'unknown-error',
),
'dependencies' => array(
'jquery.spinner',
'mediawiki.api'
),
) + $commonModuleInfo;
$wgAbuseFilterAvailableActions = array(
'flag',
'throttle',
'warn',
'disallow',
'blockautopromote',
'block',
'degroup',
'tag'
);
/**
* The possible actions that can be taken by abuse filters. Additional possible actions:
* 'rangeblock'
* @var string[]
*/
$wgAbuseFilterAvailableActions = [ /* See extension.json */ ];
/**
* The maximum number of 'conditions' that can be used each time the filters are run against a
* change. (More complex filters require more 'conditions').
*/
$wgAbuseFilterConditionLimit = 1000;
// Disable filters if they match more than X edits, constituting more than Y%
// of the last Z edits, if they have been changed in the last S seconds.
/**
* Disable filters if they match more than X edits, constituting more than Y%
* of the last Z edits, if they have been changed in the last S seconds.
*/
$wgAbuseFilterEmergencyDisableThreshold['default'] = 0.05;
/** @see $wgAbuseFilterEmergencyDisableThreshold */
$wgAbuseFilterEmergencyDisableCount['default'] = 2;
/** @see $wgAbuseFilterEmergencyDisableThreshold */
$wgAbuseFilterEmergencyDisableAge['default'] = 86400; // One day.
// Abuse filter parser class
/** Abuse filter parser class */
$wgAbuseFilterParserClass = 'AbuseFilterParser';
$wgAbuseFilterRestrictedActions = array( 'block', 'degroup', 'blockautopromote', 'rangeblock' );
/**
* Users must have the "abusefilter-modify-restricted" user right as well as "abusefilter-modify"
* in order to create or modify filters which carry out these actions.
*/
$wgAbuseFilterRestrictedActions = [ /* See extension.json */ ];
// Abuse filter hit notification (available options: rc, udp, rcandudp)
/**
* Allows to configure the extension to send hit notifications to Special:RecentChanges or UDP.
* Available options: rc, udp, rcandudp
* @var string|false
*/
$wgAbuseFilterNotifications = false;
// Enable notifications for private filters
/** Enable notifications for private filters */
$wgAbuseFilterNotificationsPrivate = false;
// Centralised filters
/** Name of a database where global abuse filters will be stored in */
$wgAbuseFilterCentralDB = null;
/** Set this variable to true for the wiki where global AbuseFilters are stored in */
$wgAbuseFilterIsCentral = false;
// Disallow Centralised filters from taking actions that locally
// block, remove from groups, or revoke permissions
/**
* Disallow centralised filters from taking actions that locally
* block, remove from groups, or revoke permissions
*/
$wgAbuseFilterDisallowGlobalLocalBlocks = false;
// Block duration for logged in users
/** Block duration for logged in users */
$wgAbuseFilterBlockDuration = 'indefinite';
// Block duration for anonymous users ($wgAbuseFilterBlockDuration will be used if null)
/** Block duration for anonymous users ($wgAbuseFilterBlockDuration will be used if null) */
$wgAbuseFilterAnonBlockDuration = null;
// Callback functions for custom actions
$wgAbuseFilterCustomActionsHandlers = array();
/** Callback functions for custom actions */
$wgAbuseFilterCustomActionsHandlers = [];
// Valid "filter groups"  used for applying edit filters to certain types of actions
$wgAbuseFilterValidGroups = array( 'default' );
/**
* The list of "groups" filters can be divided into  used for applying edit filters to certain
* types of actions. By default there is only one group.
*/
$wgAbuseFilterValidGroups = [ 'default' ];
// Default warning messages, per filter group
$wgAbuseFilterDefaultWarningMessage = array(
'default' => 'abusefilter-warning',
);
/** Default warning messages, per filter group */
$wgAbuseFilterDefaultWarningMessage = [ /* See extension.json */ ];
// Age used as cutoff when purging old IP log data.
// Used by maintenance script purgeOldLogIPData.php
/**
* Age used as cutoff when purging old IP log data.
* Used by maintenance script purgeOldLogIPData.php
*/
$wgAbuseFilterLogIPMaxAge = 3 * 30 * 24 * 3600; // 3 months
// Whether to record the time taken and number of conditions used by each filter.
/**
* Whether to record the average time taken and average number of conditions used by each filter.
*/
$wgAbuseFilterProfile = false;

View file

@ -5,6 +5,7 @@
"homepage": "https://www.mediawiki.org/wiki/Extension:AbuseFilter",
"license": "GPL-2.0+",
"require": {
"php": ">=5.4",
"composer/installers": "1.*,>=1.0.1",
"mediawiki/anti-spoof": "dev-master"
},

241
extension.json Normal file
View file

@ -0,0 +1,241 @@
{
"name": "Abuse Filter",
"author": [
"Andrew Garrett",
"River Tarnell",
"Victor Vasiliev",
"Marius Hoch"
],
"url": "https://www.mediawiki.org/wiki/Extension:AbuseFilter",
"descriptionmsg": "abusefilter-desc",
"license-name": "GPL-2.0+",
"type": "antispam",
"requires": {
"MediaWiki": ">= 1.25.0"
},
"AvailableRights": [
"abusefilter-modify",
"abusefilter-log-detail",
"abusefilter-view",
"abusefilter-log",
"abusefilter-private",
"abusefilter-modify-restricted",
"abusefilter-revert",
"abusefilter-view-private",
"abusefilter-log-private",
"abusefilter-hidden-log",
"abusefilter-hide-log",
"abusefilter-modify-global"
],
"SpecialPages": {
"AbuseLog": "SpecialAbuseLog",
"AbuseFilter": "SpecialAbuseFilter"
},
"LogTypes": [
"abusefilter"
],
"LogNames": {
"abusefilter": "abusefilter-log-name"
},
"LogHeaders": {
"abusefilter": "abusefilter-log-header"
},
"LogActions": {
"suppress/hide-afl": "abusefilter-logentry-suppress",
"suppress/unhide-afl": "abusefilter-logentry-unsuppress"
},
"LogActionsHandlers": {
"abusefilter/modify": [
"AbuseFilter",
"modifyActionText"
],
"abusefilter/hit": "AbuseLogHitFormatter"
},
"APIModules": {
"abusefilterchecksyntax": "ApiAbuseFilterCheckSyntax",
"abusefilterevalexpression": "ApiAbuseFilterEvalExpression",
"abusefilterunblockautopromote": "ApiAbuseFilterUnblockAutopromote",
"abusefiltercheckmatch": "ApiAbuseFilterCheckMatch"
},
"APIListModules": {
"abuselog": "ApiQueryAbuseLog",
"abusefilters": "ApiQueryAbuseFilters"
},
"MessagesDirs": {
"AbuseFilter": [
"i18n"
]
},
"ExtensionMessagesFiles": {
"AbuseFilterAliases": "AbuseFilter.alias.php"
},
"AutoloadClasses": {
"AbuseFilter": "AbuseFilter.class.php",
"AbuseFilterParser": "AbuseFilter.parser.php",
"AbuseFilterTokenizer": "AbuseFilterTokenizer.php",
"AbuseFilterHooks": "AbuseFilter.hooks.php",
"SpecialAbuseLog": "special/SpecialAbuseLog.php",
"AbuseLogPager": "special/SpecialAbuseLog.php",
"SpecialAbuseFilter": "special/SpecialAbuseFilter.php",
"AbuseLogHitFormatter": "AbuseLogHitFormatter.php",
"AbuseFilterViewList": "Views/AbuseFilterViewList.php",
"AbuseFilterPager": "Views/AbuseFilterViewList.php",
"GlobalAbuseFilterPager": "Views/AbuseFilterViewList.php",
"AbuseFilterView": "Views/AbuseFilterView.php",
"AbuseFilterViewEdit": "Views/AbuseFilterViewEdit.php",
"AbuseFilterViewTools": "Views/AbuseFilterViewTools.php",
"AbuseFilterViewHistory": "Views/AbuseFilterViewHistory.php",
"AbuseFilterHistoryPager": "Views/AbuseFilterViewHistory.php",
"AbuseFilterViewRevert": "Views/AbuseFilterViewRevert.php",
"AbuseFilterViewTestBatch": "Views/AbuseFilterViewTestBatch.php",
"AbuseFilterViewExamine": "Views/AbuseFilterViewExamine.php",
"AbuseFilterExaminePager": "Views/AbuseFilterViewExamine.php",
"AbuseFilterChangesList": "Views/AbuseFilterView.php",
"AbuseFilterViewDiff": "Views/AbuseFilterViewDiff.php",
"TableDiffFormatterFullContext": "Views/AbuseFilterViewDiff.php",
"AbuseFilterViewImport": "Views/AbuseFilterViewImport.php",
"AbuseFilterVariableHolder": "AbuseFilterVariableHolder.php",
"AFComputedVariable": "AbuseFilterVariableHolder.php",
"AFPData": "AbuseFilter.parser.php",
"AFPException": "AbuseFilter.parser.php",
"AFPParserState": "AbuseFilter.parser.php",
"AFPToken": "AbuseFilter.parser.php",
"AFPUserVisibleException": "AbuseFilter.parser.php",
"ApiQueryAbuseLog": "api/ApiQueryAbuseLog.php",
"ApiQueryAbuseFilters": "api/ApiQueryAbuseFilters.php",
"ApiAbuseFilterCheckSyntax": "api/ApiAbuseFilterCheckSyntax.php",
"ApiAbuseFilterEvalExpression": "api/ApiAbuseFilterEvalExpression.php",
"ApiAbuseFilterUnblockAutopromote": "api/ApiAbuseFilterUnblockAutopromote.php",
"ApiAbuseFilterCheckMatch": "api/ApiAbuseFilterCheckMatch.php"
},
"ResourceModules": {
"ext.abuseFilter": {
"position": "top",
"styles": "ext.abuseFilter.css"
},
"ext.abuseFilter.edit": {
"scripts": "ext.abuseFilter.edit.js",
"messages": [
"abusefilter-edit-syntaxok",
"abusefilter-edit-syntaxerr",
"abusefilter-http-error",
"unknown-error"
],
"dependencies": [
"mediawiki.util",
"mediawiki.api",
"jquery.textSelection",
"jquery.spinner"
]
},
"ext.abuseFilter.tools": {
"scripts": "ext.abuseFilter.tools.js",
"messages": [
"abusefilter-reautoconfirm-notallowed",
"abusefilter-reautoconfirm-none",
"abusefilter-reautoconfirm-done",
"abusefilter-http-error",
"unknown-error"
],
"dependencies": [
"mediawiki.api",
"mediawiki.notify",
"user.tokens",
"jquery.spinner"
]
},
"ext.abuseFilter.examine": {
"scripts": "ext.abuseFilter.examine.js",
"messages": [
"abusefilter-examine-match",
"abusefilter-examine-nomatch",
"abusefilter-examine-syntaxerror",
"abusefilter-examine-notfound",
"abusefilter-mustbeeditor",
"abusefilter-http-error",
"unknown-error"
],
"dependencies": [
"jquery.spinner",
"mediawiki.api"
]
}
},
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "AbuseFilter/modules"
},
"Hooks": {
"EditFilterMergedContent": "AbuseFilterHooks::onEditFilterMergedContent",
"GetAutoPromoteGroups": "AbuseFilterHooks::onGetAutoPromoteGroups",
"AbortMove": "AbuseFilterHooks::onAbortMove",
"MovePageCheckPermissions": "AbuseFilterHooks::onMovePageCheckPermissions",
"AbortNewAccount": "AbuseFilterHooks::onAbortNewAccount",
"AbortAutoAccount": "AbuseFilterHooks::onAbortAutoAccount",
"ArticleDelete": "AbuseFilterHooks::onArticleDelete",
"RecentChange_save": "AbuseFilterHooks::onRecentChangeSave",
"ListDefinedTags": "AbuseFilterHooks::onListDefinedTags",
"ChangeTagsListActive": "AbuseFilterHooks::onChangeTagsListActive",
"LoadExtensionSchemaUpdates": "AbuseFilterHooks::onLoadExtensionSchemaUpdates",
"ContributionsToolLinks": "AbuseFilterHooks::onContributionsToolLinks",
"UploadVerifyFile": "AbuseFilterHooks::onUploadVerifyFile",
"MakeGlobalVariablesScript": "AbuseFilterHooks::onMakeGlobalVariablesScript",
"ArticleSaveComplete": "AbuseFilterHooks::onArticleSaveComplete",
"APIEditBeforeSave": "AbuseFilterHooks::onAPIEditBeforeSave",
"UserMergeAccountFields": "AbuseFilterHooks::onUserMergeAccountFields",
"ParserOutputStashForEdit": "AbuseFilterHooks::onParserOutputStashForEdit",
"UnitTestsList": "AbuseFilterHooks::onUnitTestsList"
},
"config": {
"@doc": "see AbuseFilter.php",
"AbuseFilterAvailableActions": [
"flag",
"throttle",
"warn",
"disallow",
"blockautopromote",
"block",
"degroup",
"tag"
],
"AbuseFilterConditionLimit": 1000,
"AbuseFilterEmergencyDisableThreshold": {
"default": 0.05,
"_merge_strategy": "array_plus"
},
"AbuseFilterEmergencyDisableCount": {
"default": 2,
"_merge_strategy": "array_plus"
},
"AbuseFilterEmergencyDisableAge": {
"default": 86400,
"_merge_strategy": "array_plus"
},
"AbuseFilterParserClass": "AbuseFilterParser",
"AbuseFilterRestrictedActions": [
"block",
"degroup",
"blockautopromote",
"rangeblock"
],
"AbuseFilterNotifications": false,
"AbuseFilterNotificationsPrivate": false,
"AbuseFilterCentralDB": null,
"AbuseFilterIsCentral": false,
"AbuseFilterDisallowGlobalLocalBlocks": false,
"AbuseFilterBlockDuration": "indefinite",
"AbuseFilterAnonBlockDuration": null,
"AbuseFilterCustomActionsHandlers": [],
"AbuseFilterValidGroups": [
"default"
],
"AbuseFilterDefaultWarningMessage": {
"default": "abusefilter-warning",
"_merge_strategy": "array_plus"
},
"AbuseFilterLogIPMaxAge": 7776000,
"AbuseFilterProfile": false
},
"load_composer_autoloader": true,
"manifest_version": 1
}