mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-30 16:54:18 +00:00
5e609eb537
This is just a temporary location for these two methods. Since they're used a lot, having them in the AbuseFilter class means that the dependency graph is unnecessarily complicated. Thus, since these methods aren't doing much, they were moved to a dedicated class. Future todo is finding an appropriate location, that might be either as part of another service, or keep them in a Utilities class, perhaps a single class with all util methods, rather than a specific class. Change-Id: I52cc47a6b9a387cd1e68c5127f6598a4c43ca428
467 lines
18 KiB
JSON
467 lines
18 KiB
JSON
{
|
||
"name": "Abuse Filter",
|
||
"author": [
|
||
"Andrew Garrett",
|
||
"[https://www.mediawiki.org/wiki/User:Daimona_Eaytoy Daimona Eaytoy]",
|
||
"Marius Hoch",
|
||
"River Tarnell",
|
||
"Victor Vasiliev"
|
||
],
|
||
"url": "https://www.mediawiki.org/wiki/Extension:AbuseFilter",
|
||
"descriptionmsg": "abusefilter-desc",
|
||
"license-name": "GPL-2.0-or-later",
|
||
"type": "antispam",
|
||
"requires": {
|
||
"MediaWiki": ">= 1.36.0"
|
||
},
|
||
"AvailableRights": [
|
||
"abusefilter-modify",
|
||
"abusefilter-log-detail",
|
||
"abusefilter-view",
|
||
"abusefilter-log",
|
||
"abusefilter-privatedetails",
|
||
"abusefilter-privatedetails-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-view-private": true,
|
||
"abusefilter-log-private": true,
|
||
"abusefilter-modify": true,
|
||
"abusefilter-modify-restricted": true,
|
||
"abusefilter-revert": true
|
||
},
|
||
"suppress": {
|
||
"abusefilter-hidden-log": true,
|
||
"abusefilter-hide-log": true
|
||
}
|
||
},
|
||
"GrantPermissions": {
|
||
"basic": {
|
||
"abusefilter-log": true,
|
||
"abusefilter-log-detail": true,
|
||
"abusefilter-view": true
|
||
},
|
||
"oversight": {
|
||
"abusefilter-hide-log": true
|
||
},
|
||
"viewrestrictedlogs": {
|
||
"abusefilter-hidden-log": true,
|
||
"abusefilter-log-private": true,
|
||
"abusefilter-view-private": true
|
||
}
|
||
},
|
||
"SpecialPages": {
|
||
"AbuseLog": {
|
||
"class": "SpecialAbuseLog",
|
||
"services": [
|
||
"LinkBatchFactory",
|
||
"PermissionManager",
|
||
"AbuseFilterPermissionManager",
|
||
"AbuseFilterConsequencesRegistry"
|
||
]
|
||
},
|
||
"AbuseFilter": {
|
||
"class": "SpecialAbuseFilter",
|
||
"services": [
|
||
"ObjectFactory"
|
||
]
|
||
}
|
||
},
|
||
"LogTypes": [
|
||
"abusefilter",
|
||
"abusefilterprivatedetails"
|
||
],
|
||
"LogNames": {
|
||
"abusefilter": "abusefilter-log-name",
|
||
"abusefilterprivatedetails": "abusefilterprivatedetails-log-name"
|
||
},
|
||
"LogHeaders": {
|
||
"abusefilter": "abusefilter-log-header"
|
||
},
|
||
"LogActionsHandlers": {
|
||
"abusefilter/hit": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseLogHitFormatter",
|
||
"abusefilter/modify": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterModifyLogFormatter",
|
||
"abusefilter/create": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterModifyLogFormatter",
|
||
"abusefilterprivatedetails/access": "LogFormatter",
|
||
"suppress/hide-afl": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterSuppressLogFormatter",
|
||
"suppress/unhide-afl": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterSuppressLogFormatter",
|
||
"rights/blockautopromote": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterRightsLogFormatter",
|
||
"rights/restoreautopromote": "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\AbuseFilterRightsLogFormatter"
|
||
},
|
||
"ActionFilteredLogs": {
|
||
"abusefilter": {
|
||
"modify": [
|
||
"modify"
|
||
],
|
||
"create": [
|
||
"create"
|
||
]
|
||
}
|
||
},
|
||
"LogRestrictions": {
|
||
"abusefilter": "abusefilter-view",
|
||
"abusefilterprivatedetails": "abusefilter-privatedetails-log"
|
||
},
|
||
"APIModules": {
|
||
"abusefilterchecksyntax": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckSyntax",
|
||
"abusefilterevalexpression": "MediaWiki\\Extension\\AbuseFilter\\Api\\EvalExpression",
|
||
"abusefilterunblockautopromote": "MediaWiki\\Extension\\AbuseFilter\\Api\\UnblockAutopromote",
|
||
"abusefiltercheckmatch": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckMatch",
|
||
"abuselogprivatedetails": "MediaWiki\\Extension\\AbuseFilter\\Api\\AbuseLogPrivateDetails"
|
||
},
|
||
"APIListModules": {
|
||
"abuselog": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseLog",
|
||
"abusefilters": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseFilters"
|
||
},
|
||
"MessagesDirs": {
|
||
"AbuseFilter": [
|
||
"i18n",
|
||
"i18n/api"
|
||
]
|
||
},
|
||
"ExtensionMessagesFiles": {
|
||
"AbuseFilterAliases": "AbuseFilter.alias.php"
|
||
},
|
||
"AutoloadNamespaces": {
|
||
"MediaWiki\\Extension\\AbuseFilter\\Api\\": "includes/Api/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\VariableGenerator\\": "includes/VariableGenerator/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Hooks\\": "includes/Hooks/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\": "includes/LogFormatter/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Parser\\": "includes/Parser/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Filter\\": "includes/Filter/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Pager\\": "includes/Pager/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\View\\": "includes/View/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Watcher\\": "includes/Watcher/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\Consequence\\": "includes/Consequence/",
|
||
"MediaWiki\\Extension\\AbuseFilter\\ChangeTags\\": "includes/ChangeTags/"
|
||
},
|
||
"AutoloadClasses": {
|
||
"AbuseFilter": "includes/AbuseFilter.php",
|
||
"AbuseFilterHooks": "includes/AbuseFilterHooks.php",
|
||
"AbuseFilterPreAuthenticationProvider": "includes/AbuseFilterPreAuthenticationProvider.php",
|
||
"AbuseFilterRunner": "includes/AbuseFilterRunner.php",
|
||
"AbuseFilterSpecialPage": "includes/special/AbuseFilterSpecialPage.php",
|
||
"SpecialAbuseLog": "includes/special/SpecialAbuseLog.php",
|
||
"SpecialAbuseFilter": "includes/special/SpecialAbuseFilter.php",
|
||
"AbuseFilterChangesList": "includes/AbuseFilterChangesList.php",
|
||
"TableDiffFormatterFullContext": "includes/TableDiffFormatterFullContext.php",
|
||
"AbuseFilterVariableHolder": "includes/AbuseFilterVariableHolder.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\GlobalNameUtils": "includes/GlobalNameUtils.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterLookup": "includes/FilterLookup.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\KeywordsManager": "includes/KeywordsManager.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\AbuseFilterPermissionManager": "includes/AbuseFilterPermissionManager.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\AbuseFilterServices": "includes/AbuseFilterServices.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterProfiler": "includes/FilterProfiler.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\BlockAutopromoteStore": "includes/BlockAutopromoteStore.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterUser": "includes/FilterUser.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\CentralDBManager": "includes/CentralDBManager.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\CentralDBNotAvailableException": "includes/CentralDBNotAvailableException.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterValidator": "includes/FilterValidator.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterCompare": "includes/FilterCompare.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterImporter": "includes/FilterImporter.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\EditBoxBuilder": "includes/EditBoxBuilder.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\EditBoxBuilderFactory": "includes/EditBoxBuilderFactory.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\InvalidImportDataException": "includes/InvalidImportDataException.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\FilterStore": "includes/FilterStore.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\ConsequencesFactory": "includes/ConsequencesFactory.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\ConsequencesLookup": "includes/ConsequencesLookup.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\AbuseLogger": "includes/AbuseLogger.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\AbuseLoggerFactory": "includes/AbuseLoggerFactory.php",
|
||
"MediaWiki\\Extension\\AbuseFilter\\ConsequencesRegistry": "includes/ConsequencesRegistry.php",
|
||
"AFComputedVariable": "includes/AFComputedVariable.php",
|
||
"NormalizeThrottleParameters": "maintenance/normalizeThrottleParameters.php",
|
||
"FixOldLogEntries": "maintenance/fixOldLogEntries.php",
|
||
"UpdateVarDumps": "maintenance/updateVarDumps.php",
|
||
"MigrateAflFilter": "maintenance/migrateAflFilter.php"
|
||
},
|
||
"TestAutoloadClasses": {
|
||
"AbuseFilterConsequencesTest": "tests/phpunit/AbuseFilterConsequencesTest.php",
|
||
"AbuseFilterParserTestCase": "tests/phpunit/unit/AbuseFilterParserTestCase.php",
|
||
"AbuseFilterUploadTestTrait": "tests/phpunit/AbuseFilterUploadTestTrait.php",
|
||
"AbuseFilterCreateAccountTestTrait": "tests/phpunit/AbuseFilterCreateAccountTestTrait.php",
|
||
"AbuseFilterRowsAndFiltersTestTrait": "tests/phpunit/AbuseFilterRowsAndFiltersTestTrait.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",
|
||
"abusefilter-edit-throttle-placeholder",
|
||
"abusefilter-edit-tag-placeholder",
|
||
"abusefilter-edit-warn-leave",
|
||
"unknown-error"
|
||
],
|
||
"dependencies": [
|
||
"mediawiki.util",
|
||
"mediawiki.api",
|
||
"mediawiki.confirmCloseWindow",
|
||
"jquery.textSelection",
|
||
"jquery.spinner",
|
||
"oojs-ui-core",
|
||
"oojs-ui-widgets"
|
||
]
|
||
},
|
||
"ext.abuseFilter.tools": {
|
||
"scripts": "ext.abuseFilter.tools.js",
|
||
"messages": [
|
||
"abusefilter-reautoconfirm-notallowed",
|
||
"abusefilter-reautoconfirm-none",
|
||
"abusefilter-reautoconfirm-done",
|
||
"abusefilter-http-error",
|
||
"abusefilter-tools-syntax-error",
|
||
"unknown-error"
|
||
],
|
||
"dependencies": [
|
||
"mediawiki.api",
|
||
"user.options",
|
||
"jquery.spinner"
|
||
]
|
||
},
|
||
"ext.abuseFilter.examine": {
|
||
"scripts": "ext.abuseFilter.examine.js",
|
||
"messages": [
|
||
"abusefilter-examine-match",
|
||
"abusefilter-examine-nomatch",
|
||
"abusefilter-examine-syntaxerror",
|
||
"abusefilter-examine-notfound",
|
||
"abusefilter-mustviewprivateoredit",
|
||
"abusefilter-http-error",
|
||
"unknown-error"
|
||
],
|
||
"dependencies": [
|
||
"jquery.spinner",
|
||
"mediawiki.api"
|
||
]
|
||
},
|
||
"ext.abuseFilter.ace": {
|
||
"scripts": "mode-abusefilter.js",
|
||
"dependencies": "ext.codeEditor.ace"
|
||
},
|
||
"ext.abuseFilter.visualEditor": {
|
||
"scripts": "ve-abusefilter/ve.init.mw.AbuseFilterSaveErrorHandler.js",
|
||
"targets": [ "desktop", "mobile" ]
|
||
}
|
||
},
|
||
"attributes": {
|
||
"VisualEditor": {
|
||
"PluginModules": [
|
||
"ext.abuseFilter.visualEditor"
|
||
]
|
||
}
|
||
},
|
||
"ResourceFileModulePaths": {
|
||
"localBasePath": "modules",
|
||
"remoteExtPath": "AbuseFilter/modules"
|
||
},
|
||
"callback": "AbuseFilterHooks::onRegistration",
|
||
"HookHandlers": {
|
||
"ToolLinks": {
|
||
"class": "MediaWiki\\Extension\\AbuseFilter\\Hooks\\Handlers\\ToolLinksHandler",
|
||
"services": [ "AbuseFilterPermissionManager" ]
|
||
},
|
||
"ChangeTags": {
|
||
"class": "MediaWiki\\Extension\\AbuseFilter\\Hooks\\Handlers\\ChangeTagsHandler",
|
||
"services": [ "AbuseFilterChangeTagsManager" ]
|
||
},
|
||
"Tests": {
|
||
"class": "MediaWiki\\Extension\\AbuseFilter\\Hooks\\Handlers\\TestsHandler"
|
||
},
|
||
"SchemaChanges": {
|
||
"class": "MediaWiki\\Extension\\AbuseFilter\\Hooks\\Handlers\\SchemaChangesHandler"
|
||
}
|
||
},
|
||
"Hooks": {
|
||
"EditFilterMergedContent": "AbuseFilterHooks::onEditFilterMergedContent",
|
||
"GetAutoPromoteGroups": "AbuseFilterHooks::onGetAutoPromoteGroups",
|
||
"TitleMove": "AbuseFilterHooks::onTitleMove",
|
||
"ArticleDelete": "AbuseFilterHooks::onArticleDelete",
|
||
"RecentChange_save": "AbuseFilterHooks::onRecentChangeSave",
|
||
"ListDefinedTags": "ChangeTags",
|
||
"ChangeTagsListActive": "ChangeTags",
|
||
"LoadExtensionSchemaUpdates": "SchemaChanges",
|
||
"ContributionsToolLinks": "ToolLinks",
|
||
"HistoryPageToolLinks": "ToolLinks",
|
||
"UndeletePageToolLinks": "ToolLinks",
|
||
"UploadVerifyUpload": "AbuseFilterHooks::onUploadVerifyUpload",
|
||
"UploadStashFile": "AbuseFilterHooks::onUploadStashFile",
|
||
"PageSaveComplete": "AbuseFilterHooks::onPageSaveComplete",
|
||
"RenameUserSQL": "AbuseFilterHooks::onRenameUserSQL",
|
||
"UserMergeAccountFields": "AbuseFilterHooks::onUserMergeAccountFields",
|
||
"ParserOutputStashForEdit": "AbuseFilterHooks::onParserOutputStashForEdit",
|
||
"UnitTestsAfterDatabaseSetup": "Tests",
|
||
"UnitTestsBeforeDatabaseTeardown": "Tests"
|
||
},
|
||
"ServiceWiringFiles": [
|
||
"includes/ServiceWiring.php"
|
||
],
|
||
"config": {
|
||
"AbuseFilterActions": {
|
||
"value": {
|
||
"throttle": true,
|
||
"warn": true,
|
||
"disallow": true,
|
||
"blockautopromote": true,
|
||
"block": true,
|
||
"rangeblock": false,
|
||
"degroup": false,
|
||
"tag": true
|
||
},
|
||
"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. The only possible values are 'AbuseFilterParser' and 'AbuseFilterCachingParser' (experimental). The code should only use the ParserFactory service."
|
||
},
|
||
"AbuseFilterEmergencyDisableThreshold": {
|
||
"value": {
|
||
"default": 0.05
|
||
},
|
||
"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."
|
||
},
|
||
"AbuseFilterEmergencyDisableCount": {
|
||
"value": {
|
||
"default": 2
|
||
},
|
||
"description": "See description for AbuseFilterEmergencyDisableThreshold"
|
||
},
|
||
"AbuseFilterEmergencyDisableAge": {
|
||
"value": {
|
||
"default": 86400
|
||
},
|
||
"description": "See description for AbuseFilterEmergencyDisableThreshold"
|
||
},
|
||
"AbuseFilterActionRestrictions": {
|
||
"value": {
|
||
"throttle": false,
|
||
"warn": false,
|
||
"disallow": false,
|
||
"blockautopromote": true,
|
||
"block": true,
|
||
"rangeblock": true,
|
||
"degroup": true,
|
||
"tag": false
|
||
},
|
||
"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. To use a DB with prefixed tables, set this to \"{$databaseName}-{$prefix}\"."
|
||
},
|
||
"AbuseFilterIsCentral": {
|
||
"value": false,
|
||
"description": "Set this variable to true for the wiki where global AbuseFilters are stored in"
|
||
},
|
||
"AbuseFilterLocallyDisabledGlobalActions": {
|
||
"value": {
|
||
"throttle": false,
|
||
"warn": false,
|
||
"disallow": false,
|
||
"blockautopromote": false,
|
||
"block": false,
|
||
"rangeblock": false,
|
||
"degroup": false,
|
||
"tag": false
|
||
},
|
||
"description": "An array of actions which, if set on a global filter, will not be used for local hits of such filter (not in the central wiki). The array is [ action => will be disabled? ]. NOTE: Locally disabling throttle or warn will *not* disable the remaining actions."
|
||
},
|
||
"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."
|
||
},
|
||
"AbuseFilterBlockAutopromoteDuration": {
|
||
"value": 5,
|
||
"description": "Duration, in days, for which users' autopromotion is blocked by filters."
|
||
},
|
||
"AbuseFilterCustomActionsHandlers": {
|
||
"value": [],
|
||
"description": "Callback functions for custom actions. DEPRECATED since 1.36! Use the AbuseFilterCustomActions hook instead."
|
||
},
|
||
"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"
|
||
},
|
||
"description": "Default warning messages, per filter group"
|
||
},
|
||
"AbuseFilterDefaultDisallowMessage": {
|
||
"value": {
|
||
"default": "abusefilter-disallowed"
|
||
},
|
||
"description": "Default disallow 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"
|
||
},
|
||
"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."
|
||
},
|
||
"AbuseFilterLogPrivateDetailsAccess": {
|
||
"value": false,
|
||
"description": "Whether accessing private information from a filter log entry is logged."
|
||
},
|
||
"AbuseFilterPrivateDetailsForceReason": {
|
||
"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"
|
||
},
|
||
"AbuseFilterAflFilterMigrationStage": {
|
||
"value": "Bogus value - set in AbuseFilterHooks::onRegistration",
|
||
"description": "Stage of the migration of afl_filter to afl_filter_id and afl_global. Should be one of the following (combinations of) constants: SCHEMA_COMPAT_OLD, SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_OLD, SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW, SCHEMA_COMPAT_NEW. For a detailed migration guide, see https://phabricator.wikimedia.org/T220791#5496752 § Method 1."
|
||
}
|
||
},
|
||
"load_composer_autoloader": true,
|
||
"manifest_version": 2
|
||
}
|