summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/extension.json
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/extension.json')
-rw-r--r--www/wiki/extensions/AbuseFilter/extension.json378
1 files changed, 378 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/extension.json b/www/wiki/extensions/AbuseFilter/extension.json
new file mode 100644
index 00000000..5ae55c7c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/extension.json
@@ -0,0 +1,378 @@
+{
+ "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-or-later",
+ "type": "antispam",
+ "requires": {
+ "MediaWiki": ">= 1.31.0"
+ },
+ "AvailableRights": [
+ "abusefilter-modify",
+ "abusefilter-log-detail",
+ "abusefilter-view",
+ "abusefilter-log",
+ "abusefilter-private",
+ "abusefilter-private-log",
+ "abusefilter-modify-restricted",
+ "abusefilter-revert",
+ "abusefilter-view-private",
+ "abusefilter-log-private",
+ "abusefilter-hidden-log",
+ "abusefilter-hide-log",
+ "abusefilter-modify-global"
+ ],
+ "GroupPermissions": {
+ "*": {
+ "abusefilter-view": true,
+ "abusefilter-log": true
+ },
+ "sysop": {
+ "abusefilter-log-detail": true,
+ "abusefilter-modify": true
+ }
+ },
+ "GrantPermissions": {
+ "basic": {
+ "abusefilter-log": true,
+ "abusefilter-log-detail": true,
+ "abusefilter-view": true
+ },
+ "rollback": {
+ "abusefilter-revert": true
+ },
+ "viewrestrictedlogs": {
+ "abusefilter-hidden-log": true,
+ "abusefilter-view-private": true
+ }
+ },
+ "SpecialPages": {
+ "AbuseLog": "SpecialAbuseLog",
+ "AbuseFilter": "SpecialAbuseFilter"
+ },
+ "LogTypes": [
+ "abusefilter",
+ "abusefilterprivatedetails"
+ ],
+ "LogNames": {
+ "abusefilter": "abusefilter-log-name",
+ "abusefilterprivatedetails": "abusefilterprivatedetails-log-name"
+ },
+ "LogHeaders": {
+ "abusefilter": "abusefilter-log-header"
+ },
+ "LogActions": {
+ "suppress/hide-afl": "abusefilter-logentry-suppress",
+ "suppress/unhide-afl": "abusefilter-logentry-unsuppress"
+ },
+ "LogActionsHandlers": {
+ "abusefilter/hit": "AbuseLogHitFormatter",
+ "abusefilter/modify": "AbuseFilterModifyLogFormatter",
+ "abusefilter/create": "AbuseFilterModifyLogFormatter",
+ "abusefilterprivatedetails/access": "LogFormatter"
+ },
+ "ActionFilteredLogs": {
+ "abusefilter": {
+ "modify": [
+ "modify"
+ ],
+ "create": [
+ "create"
+ ]
+ }
+ },
+ "LogRestrictions": {
+ "abusefilterprivatedetails": "abusefilter-private-log"
+ },
+ "APIModules": {
+ "abusefilterchecksyntax": "ApiAbuseFilterCheckSyntax",
+ "abusefilterevalexpression": "ApiAbuseFilterEvalExpression",
+ "abusefilterunblockautopromote": "ApiAbuseFilterUnblockAutopromote",
+ "abusefiltercheckmatch": "ApiAbuseFilterCheckMatch"
+ },
+ "APIListModules": {
+ "abuselog": "ApiQueryAbuseLog",
+ "abusefilters": "ApiQueryAbuseFilters"
+ },
+ "MessagesDirs": {
+ "AbuseFilter": [
+ "i18n"
+ ]
+ },
+ "ExtensionMessagesFiles": {
+ "AbuseFilterAliases": "AbuseFilter.alias.php"
+ },
+ "AutoloadClasses": {
+ "AbuseFilter": "includes/AbuseFilter.php",
+ "AbuseFilterCachingParser" : "includes/parser/AbuseFilterCachingParser.php",
+ "AbuseFilterParser": "includes/parser/AbuseFilterParser.php",
+ "AbuseFilterTokenizer": "includes/parser/AbuseFilterTokenizer.php",
+ "AbuseFilterHooks": "includes/AbuseFilterHooks.php",
+ "AbuseFilterPreAuthenticationProvider": "includes/AbuseFilterPreAuthenticationProvider.php",
+ "SpecialAbuseLog": "includes/special/SpecialAbuseLog.php",
+ "AbuseLogPager": "includes/pagers/AbuseLogPager.php",
+ "SpecialAbuseFilter": "includes/special/SpecialAbuseFilter.php",
+ "AbuseLogHitFormatter": "includes/AbuseLogHitFormatter.php",
+ "AbuseFilterModifyLogFormatter": "includes/AbuseFilterModifyLogFormatter.php",
+ "AbuseFilterViewList": "includes/Views/AbuseFilterViewList.php",
+ "AbuseFilterPager": "includes/pagers/AbuseFilterPager.php",
+ "GlobalAbuseFilterPager": "includes/pagers/GlobalAbuseFilterPager.php",
+ "AbuseFilterView": "includes/Views/AbuseFilterView.php",
+ "AbuseFilterViewEdit": "includes/Views/AbuseFilterViewEdit.php",
+ "AbuseFilterViewTools": "includes/Views/AbuseFilterViewTools.php",
+ "AbuseFilterViewHistory": "includes/Views/AbuseFilterViewHistory.php",
+ "AbuseFilterHistoryPager": "includes/pagers/AbuseFilterHistoryPager.php",
+ "AbuseFilterViewRevert": "includes/Views/AbuseFilterViewRevert.php",
+ "AbuseFilterViewTestBatch": "includes/Views/AbuseFilterViewTestBatch.php",
+ "AbuseFilterViewExamine": "includes/Views/AbuseFilterViewExamine.php",
+ "AbuseFilterExaminePager": "includes/pagers/AbuseFilterExaminePager.php",
+ "AbuseFilterChangesList": "includes/AbuseFilterChangesList.php",
+ "AbuseFilterViewDiff": "includes/Views/AbuseFilterViewDiff.php",
+ "TableDiffFormatterFullContext": "includes/TableDiffFormatterFullContext.php",
+ "AbuseFilterViewImport": "includes/Views/AbuseFilterViewImport.php",
+ "AbuseFilterVariableHolder": "includes/AbuseFilterVariableHolder.php",
+ "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",
+ "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"
+ },
+ "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",
+ "mediawiki.api.parse",
+ "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"
+ ]
+ },
+ "ext.abuseFilter.ace": {
+ "scripts": "mode-abusefilter.js",
+ "dependencies": "ext.codeEditor.ace"
+ }
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "modules",
+ "remoteExtPath": "AbuseFilter/modules"
+ },
+ "callback": "AbuseFilterHooks::onRegistration",
+ "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",
+ "UploadVerifyUpload": "AbuseFilterHooks::onUploadVerifyUpload",
+ "UploadStashFile": "AbuseFilterHooks::onUploadStashFile",
+ "MakeGlobalVariablesScript": "AbuseFilterHooks::onMakeGlobalVariablesScript",
+ "PageContentSaveComplete": "AbuseFilterHooks::onPageContentSaveComplete",
+ "UserMergeAccountFields": "AbuseFilterHooks::onUserMergeAccountFields",
+ "ParserOutputStashForEdit": "AbuseFilterHooks::onParserOutputStashForEdit"
+ },
+ "config": {
+ "AbuseFilterActions": {
+ "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"
+ },
+ "AbuseFilterEmergencyDisableThreshold": {
+ "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."
+ },
+ "AbuseFilterEmergencyDisableCount": {
+ "value": {
+ "default": 2
+ },
+ "_merge_strategy": "array_plus",
+ "description": "See description for AbuseFilterEmergencyDisableThreshold"
+ },
+ "AbuseFilterEmergencyDisableAge": {
+ "value": {
+ "default": 86400
+ },
+ "_merge_strategy": "array_plus",
+ "description": "See description for AbuseFilterEmergencyDisableThreshold"
+ },
+ "AbuseFilterRestrictions": {
+ "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."
+ },
+ "AbuseFilterDefaultWarningMessage": {
+ "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."
+ },
+ "AbuseFilterProfileActionsCap": {
+ "value": 10000,
+ "description": "Number of action that determines when to reset profiling stats."
+ },
+ "AbuseFilterRangeBlockSize" : {
+ "value": {
+ "IPv4": 16,
+ "IPv6": 19
+ },
+ "description": "Size of the range blocked by 'rangeblock' action."
+ },
+ "AbuseFilterPrivateLog": {
+ "value": false,
+ "description": "Whether users are allowed to access private information from a filter log entry."
+ },
+ "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"
+ }
+ },
+ "load_composer_autoloader": true,
+ "manifest_version": 2
+}