2016-05-15 11:12:40 +00:00
{
"name" : "Abuse Filter" ,
"author" : [
"Andrew Garrett" ,
"River Tarnell" ,
"Victor Vasiliev" ,
"Marius Hoch"
] ,
"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" : {
2017-10-31 13:36:57 +00:00
"MediaWiki" : ">= 1.31.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"
} ,
"LogActions" : {
"suppress/hide-afl" : "abusefilter-logentry-suppress" ,
"suppress/unhide-afl" : "abusefilter-logentry-unsuppress"
} ,
"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" ,
"abusefilterprivatedetails/access" : "LogFormatter"
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" : [
"i18n"
]
} ,
"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-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" ,
"ApiAbuseFilterCheckMatch" : "includes/api/ApiAbuseFilterCheckMatch.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" ,
"unknown-error"
] ,
"dependencies" : [
"mediawiki.util" ,
"mediawiki.api" ,
"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"
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" ,
"MovePageCheckPermissions" : "AbuseFilterHooks::onMovePageCheckPermissions" ,
"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-05-15 11:12:40 +00:00
"MakeGlobalVariablesScript" : "AbuseFilterHooks::onMakeGlobalVariablesScript" ,
2016-10-09 17:20:42 +00:00
"PageContentSaveComplete" : "AbuseFilterHooks::onPageContentSaveComplete" ,
2016-05-15 11:12:40 +00:00
"UserMergeAccountFields" : "AbuseFilterHooks::onUserMergeAccountFields" ,
2016-08-04 20:16:06 +00:00
"ParserOutputStashForEdit" : "AbuseFilterHooks::onParserOutputStashForEdit"
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" ,
"description" : "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."
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" : {
"flag" : false ,
"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 ,
"description" : "Name of a database where global abuse filters will be stored in"
} ,
"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"
} ,
"AbuseFilterLogIPMaxAge" : {
"value" : 7776000 ,
"description" : "Age used as cutoff when purging old IP log data, defaults to 3 months. Used by maintenance script purgeOldLogIPData.php"
} ,
"AbuseFilterProfile" : {
"value" : false ,
"description" : "Whether to record the average time taken and average number of conditions used by each filter."
} ,
"AbuseFilterRuntimeProfile" : {
"value" : false ,
"description" : "Whether to record runtime metrics for all filters combined."
} ,
"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
}