mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-24 06:03:49 +00:00
Add extension.json, empty php entry point
Bug: T87876 Change-Id: Icff39f3f79f7ffe86214cfa216b53f3d882e1968
This commit is contained in:
parent
3dea270332
commit
e71808f4c4
269
AbuseFilter.php
269
AbuseFilter.php
|
@ -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;
|
||||
|
|
|
@ -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
241
extension.json
Normal 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
|
||||
}
|
Loading…
Reference in a new issue