2016-05-15 11:12:40 +00:00
{
"name" : "Abuse Filter" ,
"author" : [
"Andrew Garrett" ,
2019-07-04 10:22:20 +00:00
"[https://www.mediawiki.org/wiki/User:Daimona_Eaytoy Daimona Eaytoy]" ,
"Marius Hoch" ,
2016-05-15 11:12:40 +00:00
"River Tarnell" ,
2019-07-04 10:22:20 +00:00
"Victor Vasiliev"
2016-05-15 11:12:40 +00:00
] ,
"url" : "https://www.mediawiki.org/wiki/Extension:AbuseFilter" ,
"descriptionmsg" : "abusefilter-desc" ,
2018-01-04 03:01:35 +00:00
"license-name" : "GPL-2.0-or-later" ,
2016-05-15 11:12:40 +00:00
"type" : "antispam" ,
"requires" : {
2019-05-31 15:08:19 +00:00
"MediaWiki" : ">= 1.34.0"
2016-05-15 11:12:40 +00:00
} ,
"AvailableRights" : [
"abusefilter-modify" ,
"abusefilter-log-detail" ,
"abusefilter-view" ,
"abusefilter-log" ,
"abusefilter-private" ,
2016-12-12 16:30:06 +00:00
"abusefilter-private-log" ,
2016-05-15 11:12:40 +00:00
"abusefilter-modify-restricted" ,
"abusefilter-revert" ,
"abusefilter-view-private" ,
"abusefilter-log-private" ,
"abusefilter-hidden-log" ,
"abusefilter-hide-log" ,
"abusefilter-modify-global"
] ,
2018-04-08 17:46:18 +00:00
"GroupPermissions" : {
"*" : {
"abusefilter-view" : true ,
"abusefilter-log" : true
} ,
"sysop" : {
"abusefilter-log-detail" : true ,
2018-04-09 17:25:45 +00:00
"abusefilter-modify" : true
2018-04-08 17:46:18 +00:00
}
} ,
"GrantPermissions" : {
"basic" : {
"abusefilter-log" : true ,
2018-04-07 19:45:28 +00:00
"abusefilter-log-detail" : true ,
"abusefilter-view" : true
2018-04-08 17:46:18 +00:00
} ,
"rollback" : {
"abusefilter-revert" : true
} ,
"viewrestrictedlogs" : {
2018-04-07 19:45:28 +00:00
"abusefilter-hidden-log" : true ,
"abusefilter-view-private" : true
2018-04-08 17:46:18 +00:00
}
} ,
2016-05-15 11:12:40 +00:00
"SpecialPages" : {
"AbuseLog" : "SpecialAbuseLog" ,
"AbuseFilter" : "SpecialAbuseFilter"
} ,
"LogTypes" : [
2016-12-12 16:30:06 +00:00
"abusefilter" ,
"abusefilterprivatedetails"
2016-05-15 11:12:40 +00:00
] ,
"LogNames" : {
2016-12-12 16:30:06 +00:00
"abusefilter" : "abusefilter-log-name" ,
"abusefilterprivatedetails" : "abusefilterprivatedetails-log-name"
2016-05-15 11:12:40 +00:00
} ,
"LogHeaders" : {
"abusefilter" : "abusefilter-log-header"
} ,
"LogActionsHandlers" : {
2016-06-04 13:33:32 +00:00
"abusefilter/hit" : "AbuseLogHitFormatter" ,
2017-10-16 11:19:30 +00:00
"abusefilter/modify" : "AbuseFilterModifyLogFormatter" ,
2016-12-12 16:30:06 +00:00
"abusefilter/create" : "AbuseFilterModifyLogFormatter" ,
2017-02-15 18:12:31 +00:00
"abusefilterprivatedetails/access" : "LogFormatter" ,
"suppress/hide-afl" : "AbuseFilterSuppressLogFormatter" ,
"suppress/unhide-afl" : "AbuseFilterSuppressLogFormatter"
2017-10-16 11:19:30 +00:00
} ,
"ActionFilteredLogs" : {
"abusefilter" : {
"modify" : [
"modify"
] ,
"create" : [
"create"
]
}
2016-05-15 11:12:40 +00:00
} ,
2016-12-12 16:30:06 +00:00
"LogRestrictions" : {
"abusefilterprivatedetails" : "abusefilter-private-log"
} ,
2016-05-15 11:12:40 +00:00
"APIModules" : {
"abusefilterchecksyntax" : "ApiAbuseFilterCheckSyntax" ,
"abusefilterevalexpression" : "ApiAbuseFilterEvalExpression" ,
"abusefilterunblockautopromote" : "ApiAbuseFilterUnblockAutopromote" ,
"abusefiltercheckmatch" : "ApiAbuseFilterCheckMatch"
} ,
"APIListModules" : {
"abuselog" : "ApiQueryAbuseLog" ,
"abusefilters" : "ApiQueryAbuseFilters"
} ,
"MessagesDirs" : {
"AbuseFilter" : [
2018-03-19 16:07:25 +00:00
"i18n" ,
"i18n/api"
2016-05-15 11:12:40 +00:00
]
} ,
"ExtensionMessagesFiles" : {
"AbuseFilterAliases" : "AbuseFilter.alias.php"
} ,
"AutoloadClasses" : {
2018-03-30 00:50:44 +00:00
"AbuseFilter" : "includes/AbuseFilter.php" ,
2016-12-17 17:52:36 +00:00
"AbuseFilterCachingParser" : "includes/parser/AbuseFilterCachingParser.php" ,
"AbuseFilterParser" : "includes/parser/AbuseFilterParser.php" ,
"AbuseFilterTokenizer" : "includes/parser/AbuseFilterTokenizer.php" ,
2018-03-30 00:50:44 +00:00
"AbuseFilterHooks" : "includes/AbuseFilterHooks.php" ,
2016-12-17 17:52:36 +00:00
"AbuseFilterPreAuthenticationProvider" : "includes/AbuseFilterPreAuthenticationProvider.php" ,
2017-08-07 23:11:38 +00:00
"SpecialAbuseLog" : "includes/special/SpecialAbuseLog.php" ,
2017-12-16 00:26:25 +00:00
"AbuseLogPager" : "includes/pagers/AbuseLogPager.php" ,
2017-08-07 23:11:38 +00:00
"SpecialAbuseFilter" : "includes/special/SpecialAbuseFilter.php" ,
2016-12-17 17:52:36 +00:00
"AbuseLogHitFormatter" : "includes/AbuseLogHitFormatter.php" ,
2016-06-04 13:33:32 +00:00
"AbuseFilterModifyLogFormatter" : "includes/AbuseFilterModifyLogFormatter.php" ,
2017-02-15 18:12:31 +00:00
"AbuseFilterSuppressLogFormatter" : "includes/AbuseFilterSuppressLogFormatter.php" ,
2017-08-07 23:11:38 +00:00
"AbuseFilterViewList" : "includes/Views/AbuseFilterViewList.php" ,
2017-12-16 00:26:25 +00:00
"AbuseFilterPager" : "includes/pagers/AbuseFilterPager.php" ,
"GlobalAbuseFilterPager" : "includes/pagers/GlobalAbuseFilterPager.php" ,
2017-08-07 23:11:38 +00:00
"AbuseFilterView" : "includes/Views/AbuseFilterView.php" ,
"AbuseFilterViewEdit" : "includes/Views/AbuseFilterViewEdit.php" ,
"AbuseFilterViewTools" : "includes/Views/AbuseFilterViewTools.php" ,
"AbuseFilterViewHistory" : "includes/Views/AbuseFilterViewHistory.php" ,
2017-12-16 00:26:25 +00:00
"AbuseFilterHistoryPager" : "includes/pagers/AbuseFilterHistoryPager.php" ,
2017-08-07 23:11:38 +00:00
"AbuseFilterViewRevert" : "includes/Views/AbuseFilterViewRevert.php" ,
"AbuseFilterViewTestBatch" : "includes/Views/AbuseFilterViewTestBatch.php" ,
"AbuseFilterViewExamine" : "includes/Views/AbuseFilterViewExamine.php" ,
2017-12-16 00:26:25 +00:00
"AbuseFilterExaminePager" : "includes/pagers/AbuseFilterExaminePager.php" ,
"AbuseFilterChangesList" : "includes/AbuseFilterChangesList.php" ,
2017-08-07 23:11:38 +00:00
"AbuseFilterViewDiff" : "includes/Views/AbuseFilterViewDiff.php" ,
2017-12-16 00:26:25 +00:00
"TableDiffFormatterFullContext" : "includes/TableDiffFormatterFullContext.php" ,
2017-08-07 23:11:38 +00:00
"AbuseFilterViewImport" : "includes/Views/AbuseFilterViewImport.php" ,
2016-12-19 01:13:06 +00:00
"AbuseFilterVariableHolder" : "includes/AbuseFilterVariableHolder.php" ,
2016-12-17 17:52:36 +00:00
"AFComputedVariable" : "includes/AFComputedVariable.php" ,
"AFPData" : "includes/parser/AFPData.php" ,
"AFPException" : "includes/parser/AFPException.php" ,
"AFPParserState" : "includes/parser/AFPParserState.php" ,
"AFPToken" : "includes/parser/AFPToken.php" ,
"AFPTreeNode" : "includes/parser/AFPTreeNode.php" ,
"AFPTreeParser" : "includes/parser/AFPTreeParser.php" ,
"AFPUserVisibleException" : "includes/parser/AFPUserVisibleException.php" ,
2017-08-07 23:11:38 +00:00
"ApiQueryAbuseLog" : "includes/api/ApiQueryAbuseLog.php" ,
"ApiQueryAbuseFilters" : "includes/api/ApiQueryAbuseFilters.php" ,
"ApiAbuseFilterCheckSyntax" : "includes/api/ApiAbuseFilterCheckSyntax.php" ,
"ApiAbuseFilterEvalExpression" : "includes/api/ApiAbuseFilterEvalExpression.php" ,
"ApiAbuseFilterUnblockAutopromote" : "includes/api/ApiAbuseFilterUnblockAutopromote.php" ,
2018-09-09 10:14:31 +00:00
"ApiAbuseFilterCheckMatch" : "includes/api/ApiAbuseFilterCheckMatch.php" ,
2018-08-25 12:44:01 +00:00
"NormalizeThrottleParameters" : "maintenance/normalizeThrottleParameters.php" ,
2018-08-22 14:33:35 +00:00
"AbuseFilterConsequencesTest" : "tests/phpunit/AbuseFilterConsequencesTest.php" ,
2019-01-09 11:57:04 +00:00
"AbuseFilterParserTestCase" : "tests/phpunit/AbuseFilterParserTestCase.php" ,
"FixOldLogEntries" : "maintenance/fixOldLogEntries.php"
2016-05-15 11:12:40 +00:00
} ,
"ResourceModules" : {
"ext.abuseFilter" : {
"styles" : "ext.abuseFilter.css"
} ,
"ext.abuseFilter.edit" : {
"scripts" : "ext.abuseFilter.edit.js" ,
"messages" : [
"abusefilter-edit-syntaxok" ,
"abusefilter-edit-syntaxerr" ,
"abusefilter-http-error" ,
2018-09-09 10:14:31 +00:00
"abusefilter-edit-throttle-placeholder" ,
"abusefilter-edit-tag-placeholder" ,
2018-12-04 12:06:46 +00:00
"abusefilter-edit-warn-leave" ,
2016-05-15 11:12:40 +00:00
"unknown-error"
] ,
"dependencies" : [
"mediawiki.util" ,
"mediawiki.api" ,
2018-12-04 12:06:46 +00:00
"mediawiki.confirmCloseWindow" ,
2016-05-15 11:12:40 +00:00
"jquery.textSelection" ,
2018-03-23 09:13:41 +00:00
"jquery.spinner" ,
"oojs-ui-core" ,
"oojs-ui-widgets"
2016-05-15 11:12:40 +00:00
]
} ,
"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" ,
2018-05-04 19:56:45 +00:00
"abusefilter-mustviewprivateoredit" ,
2016-05-15 11:12:40 +00:00
"abusefilter-http-error" ,
"unknown-error"
] ,
"dependencies" : [
"jquery.spinner" ,
"mediawiki.api"
]
2018-03-30 06:55:03 +00:00
} ,
"ext.abuseFilter.ace" : {
"scripts" : "mode-abusefilter.js" ,
"dependencies" : "ext.codeEditor.ace"
2018-11-29 18:17:12 +00:00
} ,
"ext.abuseFilter.visualEditor" : {
2019-01-15 00:05:20 +00:00
"scripts" : "ve-abusefilter/ve.init.mw.AbuseFilterSaveErrorHandler.js" ,
"targets" : [ "desktop" , "mobile" ]
2018-11-29 18:17:12 +00:00
}
} ,
"attributes" : {
"VisualEditor" : {
"PluginModules" : [
"ext.abuseFilter.visualEditor"
]
2016-05-15 11:12:40 +00:00
}
} ,
"ResourceFileModulePaths" : {
"localBasePath" : "modules" ,
"remoteExtPath" : "AbuseFilter/modules"
} ,
2016-06-03 18:01:56 +00:00
"callback" : "AbuseFilterHooks::onRegistration" ,
2016-05-15 11:12:40 +00:00
"Hooks" : {
"EditFilterMergedContent" : "AbuseFilterHooks::onEditFilterMergedContent" ,
"GetAutoPromoteGroups" : "AbuseFilterHooks::onGetAutoPromoteGroups" ,
2018-11-09 15:05:11 +00:00
"TitleMove" : "AbuseFilterHooks::onTitleMove" ,
2016-05-15 11:12:40 +00:00
"ArticleDelete" : "AbuseFilterHooks::onArticleDelete" ,
"RecentChange_save" : "AbuseFilterHooks::onRecentChangeSave" ,
"ListDefinedTags" : "AbuseFilterHooks::onListDefinedTags" ,
"ChangeTagsListActive" : "AbuseFilterHooks::onChangeTagsListActive" ,
"LoadExtensionSchemaUpdates" : "AbuseFilterHooks::onLoadExtensionSchemaUpdates" ,
"ContributionsToolLinks" : "AbuseFilterHooks::onContributionsToolLinks" ,
2014-03-25 15:57:01 +00:00
"HistoryPageToolLinks" : "AbuseFilterHooks::onHistoryPageToolLinks" ,
2016-06-17 15:23:42 +00:00
"UploadVerifyUpload" : "AbuseFilterHooks::onUploadVerifyUpload" ,
2016-08-03 14:30:18 +00:00
"UploadStashFile" : "AbuseFilterHooks::onUploadStashFile" ,
2016-10-09 17:20:42 +00:00
"PageContentSaveComplete" : "AbuseFilterHooks::onPageContentSaveComplete" ,
2016-05-15 11:12:40 +00:00
"UserMergeAccountFields" : "AbuseFilterHooks::onUserMergeAccountFields" ,
2018-08-25 12:44:01 +00:00
"ParserOutputStashForEdit" : "AbuseFilterHooks::onParserOutputStashForEdit" ,
"UnitTestsAfterDatabaseSetup" : "AbuseFilterHooks::onUnitTestsAfterDatabaseSetup" ,
"UnitTestsBeforeDatabaseTeardown" : "AbuseFilterHooks::onUnitTestsBeforeDatabaseTeardown"
2016-05-15 11:12:40 +00:00
} ,
"config" : {
2016-06-03 18:01:56 +00:00
"AbuseFilterActions" : {
2018-04-02 15:47:04 +00:00
"value" : {
"throttle" : true ,
"warn" : true ,
"disallow" : true ,
"blockautopromote" : true ,
"block" : true ,
"rangeblock" : false ,
"degroup" : true ,
"tag" : true
} ,
"_merge_strategy" : "array_plus" ,
"description" : "Array of enabled actions in the form [action name => is enabled?]. At the end of setup, false values will be filtered out"
} ,
"AbuseFilterConditionLimit" : {
"value" : 1000 ,
"description" : "The maximum number of 'conditions' that can be used each time the filters are run against a change. (More complex filters require more 'conditions')."
} ,
"AbuseFilterParserClass" : {
"value" : "AbuseFilterParser" ,
"description" : "Class of the parser to use"
2016-06-03 18:01:56 +00:00
} ,
2016-05-15 11:12:40 +00:00
"AbuseFilterEmergencyDisableThreshold" : {
2018-04-02 15:47:04 +00:00
"value" : {
"default" : 0.05
} ,
"_merge_strategy" : "array_plus" ,
2019-02-16 13:43:29 +00:00
"description" : "Disable potentially dangerous actions (AbuseFilterRestrictions) of a filter if it matches more than X actions, constituting more than Y% (e.g. 0.05 = 5%) of the last Z actions, and the filter has been modified in the last S seconds. X is AbuseFilterEmergencyDisableCount, Y is AbuseFilterEmergencyDisableThreshold, S is AbuseFilterEmergencyDisableAge and Z is a number between 1 and AbuseFilterProfileActionsCap."
2016-05-15 11:12:40 +00:00
} ,
"AbuseFilterEmergencyDisableCount" : {
2018-04-02 15:47:04 +00:00
"value" : {
"default" : 2
} ,
"_merge_strategy" : "array_plus" ,
"description" : "See description for AbuseFilterEmergencyDisableThreshold"
2016-05-15 11:12:40 +00:00
} ,
"AbuseFilterEmergencyDisableAge" : {
2018-04-02 15:47:04 +00:00
"value" : {
"default" : 86400
} ,
"_merge_strategy" : "array_plus" ,
"description" : "See description for AbuseFilterEmergencyDisableThreshold"
2016-05-15 11:12:40 +00:00
} ,
2016-06-03 18:01:56 +00:00
"AbuseFilterRestrictions" : {
2018-04-02 15:47:04 +00:00
"value" : {
"throttle" : false ,
"warn" : false ,
"disallow" : false ,
"blockautopromote" : true ,
"block" : true ,
"rangeblock" : true ,
"degroup" : true ,
"tag" : false
} ,
"_merge_strategy" : "array_plus" ,
"description" : "Do users need 'abusefilter-modify-restricted' user right as well as 'abusefilter-modify' in order to create or modify filters which carry out this action? Array like [action name => is restricted?]"
} ,
"AbuseFilterNotifications" : {
"value" : false ,
"description" : "Allows to configure the extension to send hit notifications to Special:RecentChanges or UDP. Available options: rc, udp, rcandudp"
} ,
"AbuseFilterNotificationsPrivate" : {
"value" : false ,
"description" : "Enable notifications for private filters"
} ,
"AbuseFilterCentralDB" : {
"value" : null ,
2018-08-25 12:44:01 +00:00
"description" : "Name of a database where global abuse filters will be stored in. To use a DB with prefixed tables, set this to \"{$databaseName}-{$prefix}\"."
2018-04-02 15:47:04 +00:00
} ,
"AbuseFilterIsCentral" : {
"value" : false ,
"description" : "Set this variable to true for the wiki where global AbuseFilters are stored in"
} ,
"AbuseFilterDisallowGlobalLocalBlocks" : {
"value" : false ,
"description" : "Disallow centralised filters from taking actions that locally block, remove from groups, or revoke permissions"
} ,
"AbuseFilterBlockDuration" : {
"value" : "indefinite" ,
"description" : "Old standard block duration for logged in users. Kept for backward compatibility after T32024."
} ,
"AbuseFilterAnonBlockDuration" : {
"value" : null ,
"description" : "Old standard block duration for anonymous users, $wgAbuseFilterBlockDuration will be used if null. Kept for backward compatibility after T32024."
} ,
"AbuseFilterCustomActionsHandlers" : {
"value" : [ ] ,
"description" : "Callback functions for custom actions"
} ,
"AbuseFilterValidGroups" : {
"value" : [ "default" ] ,
"description" : "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."
2016-06-03 18:01:56 +00:00
} ,
2016-05-15 11:12:40 +00:00
"AbuseFilterDefaultWarningMessage" : {
2018-04-02 15:47:04 +00:00
"value" : {
"default" : "abusefilter-warning"
} ,
"_merge_strategy" : "array_plus" ,
"description" : "Default warning messages, per filter group"
} ,
2014-10-04 14:42:46 +00:00
"AbuseFilterDefaultDisallowMessage" : {
"value" : {
"default" : "abusefilter-disallowed"
} ,
"description" : "Default disallow messages, per filter group" ,
"_merge_strategy" : "array_plus"
} ,
2018-04-02 15:47:04 +00:00
"AbuseFilterLogIPMaxAge" : {
"value" : 7776000 ,
"description" : "Age used as cutoff when purging old IP log data, defaults to 3 months. Used by maintenance script purgeOldLogIPData.php"
} ,
"AbuseFilterSlowFilterRuntimeLimit" : {
"value" : 500 ,
"description" : "Runtime in milliseconds before a filter is considered slow."
2016-05-15 11:12:40 +00:00
} ,
2018-04-04 18:29:50 +00:00
"AbuseFilterProfileActionsCap" : {
"value" : 10000 ,
"description" : "Number of action that determines when to reset profiling stats."
} ,
2017-11-01 01:53:29 +00:00
"AbuseFilterRangeBlockSize" : {
2018-04-02 15:47:04 +00:00
"value" : {
"IPv4" : 16 ,
"IPv6" : 19
} ,
"description" : "Size of the range blocked by 'rangeblock' action."
} ,
"AbuseFilterPrivateLog" : {
"value" : false ,
2018-07-16 13:32:38 +00:00
"description" : "Whether accessing private information from a filter log entry is logged."
2016-12-12 16:30:06 +00:00
} ,
2018-04-02 15:47:04 +00:00
"AbuseFilterForceSummary" : {
"value" : false ,
"description" : "Whether users are forced to provide a reason for accessing private information from a filter log entry."
} ,
"AbuseFilterLogIP" : {
"value" : true ,
"description" : "Whether to include IP in the abuse_filter_log"
}
2016-05-15 11:12:40 +00:00
} ,
"load_composer_autoloader" : true ,
2018-04-02 15:47:04 +00:00
"manifest_version" : 2
2016-05-15 11:12:40 +00:00
}