diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/extension.json')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/extension.json | 378 |
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 +} |