Add extension.json, empty PHP entry point

Changed README to README.md

Moved changelog from README.md to CHANGELOG.md

Bumped version to 1.4.0. And start following semver-notation.

Bug: T88047
Change-Id: I21f417d9f5985598358d53a0afae815543f001ee
This commit is contained in:
paladox 2015-05-25 22:25:40 +02:00 committed by Paladox
parent 30490fba52
commit 1d08dd07b8
5 changed files with 303 additions and 223 deletions

9
CHANGELOG.md Normal file
View file

@ -0,0 +1,9 @@
ConfirmEdit Changelog
=========
### Changelog
#### Version 1.2
Fixes bug 46132 - ConfirmEdit fatal error when using MathCaptcha and current Math extension.
See <https://phabricator.wikimedia.org/T48132>.

View file

@ -30,183 +30,17 @@
* @ingroup Extensions
*/
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
if ( function_exists( 'wfLoadExtension' ) ) {
wfLoadExtension( 'ConfirmEdit' );
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['ConfirmEditAlias'] = __DIR__ . '/ConfirmEdit.alias.php';
/* wfWarn(
'Deprecated PHP entry point used for ConfirmEdit extension. ' .
'Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
); */
return;
} else {
die( 'This version of the ConfirmEdit extension requires MediaWiki 1.25+' );
}
if ( !defined( 'MW_SUPPORTS_CONTENTHANDLER' ) ) {
throw new Exception( 'This version of ConfirmEdit requires MediaWiki 1.21 or later' );
}
$wgExtensionCredits['antispam'][] = array(
'path' => __FILE__,
'name' => 'ConfirmEdit',
'author' => array( 'Brion Vibber', '...' ),
'url' => 'https://www.mediawiki.org/wiki/Extension:ConfirmEdit',
'version' => '1.3',
'descriptionmsg' => 'captcha-desc',
'license-name' => 'GPL-2.0+',
);
/**
* The 'skipcaptcha' permission key can be given out to
* let known-good users perform triggering actions without
* having to go through the captcha.
*
* By default, sysops and registered bot accounts will be
* able to skip, while others have to go through it.
*/
$wgGroupPermissions['*' ]['skipcaptcha'] = false;
$wgGroupPermissions['user' ]['skipcaptcha'] = false;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
$wgGroupPermissions['bot' ]['skipcaptcha'] = true; // registered bots
$wgGroupPermissions['sysop' ]['skipcaptcha'] = true;
$wgAvailableRights[] = 'skipcaptcha';
/**
* List of IP ranges to allow to skip the captcha, similar to the group setting:
* "$wgGroupPermission[...]['skipcaptcha'] = true"
*
* Specific IP addresses or CIDR-style ranges may be used,
* for instance:
* $wgCaptchaWhitelistIP = array('192.168.1.0/24', '10.1.0.0/16');
*/
$wgCaptchaWhitelistIP = false;
$wgCaptcha = null;
$wgCaptchaClass = 'SimpleCaptcha';
/**
* Actions which can trigger a captcha
*
* If the 'edit' trigger is on, *every* edit will trigger the captcha.
* This may be useful for protecting against vandalbot attacks.
*
* If using the default 'addurl' trigger, the captcha will trigger on
* edits that include URLs that aren't in the current version of the page.
* This should catch automated linkspammers without annoying people when
* they make more typical edits.
*
* The captcha code should not use $wgCaptchaTriggers, but CaptchaTriggers()
* which also takes into account per namespace triggering.
*/
$wgCaptchaTriggers = array();
$wgCaptchaTriggers['edit'] = false; // Would check on every edit
$wgCaptchaTriggers['create'] = false; // Check on page creation.
$wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser
$wgCaptchaTriggers['addurl'] = true; // Check on edits that add URLs
$wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup
$wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
/**
* You may wish to apply special rules for captcha triggering on some namespaces.
* $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on /
* always off configuration with that trigger for the given namespace.
* Leave unset to use the global options ($wgCaptchaTriggers).
*
* Shall not be used with 'createaccount' (it is not checked).
*/
$wgCaptchaTriggersOnNamespace = array();
# Example:
# // Allow creation of talk pages without captchas
# $wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false;
# // Show captcha whenever editing Project pages.
# $wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true;
/**
* Indicate how to store per-session data required to match up the
* internal captcha data with the editor.
*
* 'CaptchaSessionStore' uses PHP's session storage, which is cookie-based
* and may fail for anons with cookies disabled.
*
* 'CaptchaCacheStore' uses $wgMemc, which avoids the cookie dependency
* but may be fragile depending on cache configuration.
*/
$wgCaptchaStorageClass = 'CaptchaSessionStore';
/**
* Number of seconds a captcha session should last in the data cache
* before expiring when managing through CaptchaCacheStore class.
*
* Default is a half hour.
*/
$wgCaptchaSessionExpiration = 30 * 60;
/**
* Number of seconds after a bad login that a captcha will be shown to
* that client on the login form to slow down password-guessing bots.
*
* Has no effect if 'badlogin' is disabled in $wgCaptchaTriggers or
* if there is not a caching engine enabled.
*
* Default is five minutes.
*/
$wgCaptchaBadLoginExpiration = 5 * 60;
/**
* Allow users who have confirmed their email addresses to post
* URL links without being harassed by the captcha.
*/
$ceAllowConfirmedEmail = false;
/**
* Number of bad login attempts before triggering the captcha. 0 means the
* captcha is presented on the first login.
*/
$wgCaptchaBadLoginAttempts = 3;
/**
* Regex to whitelist URLs to known-good sites...
* For instance:
* $wgCaptchaWhitelist = '#^https?://([a-z0-9-]+\\.)?(wikimedia|wikipedia)\.org/#i';
* Local admins can define a whitelist under [[MediaWiki:captcha-addurl-whitelist]]
*/
$wgCaptchaWhitelist = false;
/**
* Additional regexes to check for. Use full regexes; can match things
* other than URLs such as junk edits.
*
* If the new version matches one and the old version doesn't,
* toss up the captcha screen.
*
* @fixme Add a message for local admins to add items as well.
*/
$wgCaptchaRegexes = array();
/** Register special page */
$wgSpecialPages['Captcha'] = 'CaptchaSpecialPage';
$wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['ConfirmEditAlias'] = __DIR__ . "/ConfirmEdit.alias.php";
$wgHooks['EditPageBeforeEditButtons'][] = 'ConfirmEditHooks::confirmEditPage';
$wgHooks['UserCreateForm'][] = 'ConfirmEditHooks::injectUserCreate';
$wgHooks['AbortNewAccount'][] = 'ConfirmEditHooks::confirmUserCreate';
$wgHooks['LoginAuthenticateAudit'][] = 'ConfirmEditHooks::triggerUserLogin';
$wgHooks['UserLoginForm'][] = 'ConfirmEditHooks::injectUserLogin';
$wgHooks['AbortLogin'][] = 'ConfirmEditHooks::confirmUserLogin';
$wgHooks['EmailUserForm'][] = 'ConfirmEditHooks::injectEmailUser';
$wgHooks['EmailUser'][] = 'ConfirmEditHooks::confirmEmailUser';
$wgHooks['EditPage::showEditForm:fields'][] = 'ConfirmEditHooks::showEditFormFields';
$wgHooks['EditFilterMergedContent'][] = 'ConfirmEditHooks::confirmEditMerged';
if ( !defined( 'MW_EDITFILTERMERGED_SUPPORTS_API' ) ) {
$wgHooks['APIEditBeforeSave'][] = 'ConfirmEditHooks::confirmEditAPI';
}
$wgHooks['APIGetAllowedParams'][] = 'ConfirmEditHooks::APIGetAllowedParams';
$wgHooks['APIGetParamDescription'][] = 'ConfirmEditHooks::APIGetParamDescription';
$wgHooks['AddNewAccountApiForm'][] = 'ConfirmEditHooks::addNewAccountApiForm';
$wgHooks['AddNewAccountApiResult'][] = 'ConfirmEditHooks::addNewAccountApiResult';
$wgHooks['UnitTestsList'][] = 'ConfirmEditHooks::onUnitTestsList';
$wgExtensionFunctions[] = 'ConfirmEditHooks::confirmEditSetup';
$wgAutoloadClasses['ConfirmEditHooks'] = __DIR__ . '/includes/ConfirmEditHooks.php';
$wgAutoloadClasses['SimpleCaptcha'] = __DIR__ . '/SimpleCaptcha/Captcha.php';
$wgAutoloadClasses['CaptchaStore'] = __DIR__ . '/includes/CaptchaStore.php';
$wgAutoloadClasses['CaptchaSessionStore'] = __DIR__ . '/includes/CaptchaStore.php';
$wgAutoloadClasses['CaptchaCacheStore'] = __DIR__ . '/includes/CaptchaStore.php';
$wgAutoloadClasses['CaptchaSpecialPage'] = __DIR__ . '/includes/specials/SpecialCaptcha.php';

44
README
View file

@ -1,44 +0,0 @@
ConfirmEdit extension for MediaWiki
This extension provides various CAPTCHA tools for MediaWiki, to allow
for protection against spambots and other automated tools.
For more information, see the extension homepage at:
http://www.mediawiki.org/wiki/Extension:ConfirmEdit
== Overview ==
The following modules are included in ConfirmEdit:
* SimpleCaptcha - users have to solve an arithmetic math problem
* MathCaptcha - users have to solve a math problem that's displayed as
an image
* FancyCaptcha - users have to identify a series of characters, displayed
in a stylized way
* QuestyCaptcha - users have to answer a question, out of a series of
questions defined by the administrator(s)
* ReCaptcha - users have to identify a series of characters, either
visually or audially, from a widget provided by the reCAPTCHA service
== License ==
ConfirmEdit is published under the GPL license.
== Authors ==
The main framework, and the SimpleCaptcha and FancyCaptcha modules, were
written by Brion Vibber.
The MathCaptcha module was written by Rob Church.
The QuestyCaptcha module was written by Benjamin Lees.
The reCAPTCHA module was written by Mike Crawford and Ben Maurer.
Additional maintenance work was done by Yaron Koren.
== Changelog ==
= Version 1.2
Fixes bug 46132 - ConfirmEdit fatal error when using MathCaptcha and current Math extension.
See <https://bugzilla.wikimedia.org/show_bug.cgi?id=46132>.

152
README.md Normal file
View file

@ -0,0 +1,152 @@
ConfirmEdit
=========
ConfirmEdit extension for MediaWiki
This extension provides various CAPTCHA tools for MediaWiki, to allow
for protection against spambots and other automated tools.
For more information, see the extension homepage at:
http://www.mediawiki.org/wiki/Extension:ConfirmEdit
### Overview
The following modules are included in ConfirmEdit:
* SimpleCaptcha - users have to solve an arithmetic math problem
* MathCaptcha - users have to solve a math problem that's displayed as
an image
* FancyCaptcha - users have to identify a series of characters, displayed
in a stylized way
* QuestyCaptcha - users have to answer a question, out of a series of
questions defined by the administrator(s)
* ReCaptcha - users have to identify a series of characters, either
visually or audially, from a widget provided by the reCAPTCHA service
### License
ConfirmEdit is published under the GPL license.
### Authors
The main framework, and the SimpleCaptcha and FancyCaptcha modules, were
written by Brion Vibber.
The MathCaptcha module was written by Rob Church.
The QuestyCaptcha module was written by Benjamin Lees.
The reCAPTCHA module was written by Mike Crawford and Ben Maurer.
Additional maintenance work was done by Yaron Koren.
### Configuations Comments
```php
/**
* List of IP ranges to allow to skip the captcha, similar to the group setting:
* "$wgGroupPermission[...]['skipcaptcha'] = true"
*
* Specific IP addresses or CIDR-style ranges may be used,
* for instance:
* $wgCaptchaWhitelistIP = array('192.168.1.0/24', '10.1.0.0/16');
*/
$wgCaptchaWhitelistIP = false;
/**
* Actions which can trigger a captcha
*
* If the 'edit' trigger is on, *every* edit will trigger the captcha.
* This may be useful for protecting against vandalbot attacks.
*
* If using the default 'addurl' trigger, the captcha will trigger on
* edits that include URLs that aren't in the current version of the page.
* This should catch automated linkspammers without annoying people when
* they make more typical edits.
*
* The captcha code should not use $wgCaptchaTriggers, but CaptchaTriggers()
* which also takes into account per namespace triggering.
*/
$wgCaptchaTriggers = array();
$wgCaptchaTriggers['edit'] = false; // Would check on every edit
$wgCaptchaTriggers['create'] = false; // Check on page creation.
$wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser
$wgCaptchaTriggers['addurl'] = true; // Check on edits that add URLs
$wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup
$wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
/**
* You may wish to apply special rules for captcha triggering on some namespaces.
* $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on /
* always off configuration with that trigger for the given namespace.
* Leave unset to use the global options ($wgCaptchaTriggers).
*
* Shall not be used with 'createaccount' (it is not checked).
*/
$wgCaptchaTriggersOnNamespace = array();
# Example:
# $wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false; //Allow creation of talk pages without captchas.
# $wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true; //Show captcha whenever editing Project pages.
/**
* Indicate how to store per-session data required to match up the
* internal captcha data with the editor.
*
* 'CaptchaSessionStore' uses PHP's session storage, which is cookie-based
* and may fail for anons with cookies disabled.
*
* 'CaptchaCacheStore' uses $wgMemc, which avoids the cookie dependency
* but may be fragile depending on cache configuration.
*/
$wgCaptchaStorageClass = 'CaptchaSessionStore';
/**
* Number of seconds a captcha session should last in the data cache
* before expiring when managing through CaptchaCacheStore class.
*
* Default is a half hour.
*/
$wgCaptchaSessionExpiration = 30 * 60;
/**
* Number of seconds after a bad login that a captcha will be shown to
* that client on the login form to slow down password-guessing bots.
*
* Has no effect if 'badlogin' is disabled in $wgCaptchaTriggers or
* if there is not a caching engine enabled.
*
* Default is five minutes.
*/
$wgCaptchaBadLoginExpiration = 5 * 60;
/**
* Allow users who have confirmed their email addresses to post
* URL links without being harassed by the captcha.
*/
$ceAllowConfirmedEmail = false;
/**
* Number of bad login attempts before triggering the captcha. 0 means the
* captcha is presented on the first login.
*/
$wgCaptchaBadLoginAttempts = 3;
/**
* Regex to whitelist URLs to known-good sites...
* For instance:
* $wgCaptchaWhitelist = '#^https?://([a-z0-9-]+\\.)?(wikimedia|wikipedia)\.org/#i';
* Local admins can define a whitelist under [[MediaWiki:captcha-addurl-whitelist]]
*/
$wgCaptchaWhitelist = false;
/**
* Additional regexes to check for. Use full regexes; can match things
* other than URLs such as junk edits.
*
* If the new version matches one and the old version doesn't,
* toss up the captcha screen.
*
* @fixme Add a message for local admins to add items as well.
*/
$wgCaptchaRegexes = array();
```

129
extension.json Normal file
View file

@ -0,0 +1,129 @@
{
"@doc": "Please read README.md",
"name": "ConfirmEdit",
"version": "1.4.0",
"author": [
"Brion Vibber",
"..."
],
"url": "https://www.mediawiki.org/wiki/Extension:ConfirmEdit",
"descriptionmsg": "captcha-desc",
"license-name": "GPL-2.0+",
"type": "antispam",
"GroupPermissions": {
"*": {
"skipcaptcha": false
},
"user": {
"skipcaptcha": false
},
"autoconfirmed": {
"skipcaptcha": false
},
"bot": {
"skipcaptcha": true
},
"sysop": {
"skipcaptcha": true
}
},
"AvailableRights": [
"skipcaptcha"
],
"ExtensionFunctions": [
"ConfirmEditHooks::confirmEditSetup"
],
"SpecialPages": {
"Captcha": "CaptchaSpecialPage"
},
"MessagesDirs": {
"ConfirmEdit": [
"i18n"
]
},
"ExtensionMessagesFiles": {
"ConfirmEditAlias": "ConfirmEdit.alias.php"
},
"AutoloadClasses": {
"ConfirmEditHooks": "includes/ConfirmEditHooks.php",
"SimpleCaptcha": "SimpleCaptcha/Captcha.php",
"CaptchaStore": "includes/CaptchaStore.php",
"CaptchaSessionStore": "includes/CaptchaStore.php",
"CaptchaCacheStore": "includes/CaptchaStore.php",
"CaptchaSpecialPage": "includes/specials/SpecialCaptcha.php"
},
"Hooks": {
"EditPageBeforeEditButtons": [
"ConfirmEditHooks::confirmEditPage"
],
"UserCreateForm": [
"ConfirmEditHooks::injectUserCreate"
],
"AbortNewAccount": [
"ConfirmEditHooks::confirmUserCreate"
],
"LoginAuthenticateAudit": [
"ConfirmEditHooks::triggerUserLogin"
],
"UserLoginForm": [
"ConfirmEditHooks::injectUserLogin"
],
"AbortLogin": [
"ConfirmEditHooks::confirmUserLogin"
],
"EmailUserForm": [
"ConfirmEditHooks::injectEmailUser"
],
"EmailUser": [
"ConfirmEditHooks::confirmEmailUser"
],
"EditPage::showEditForm:fields": [
"ConfirmEditHooks::showEditFormFields"
],
"EditFilterMergedContent": [
"ConfirmEditHooks::confirmEditMerged"
],
"APIGetAllowedParams": [
"ConfirmEditHooks::APIGetAllowedParams"
],
"APIGetParamDescription": [
"ConfirmEditHooks::APIGetParamDescription"
],
"AddNewAccountApiForm": [
"ConfirmEditHooks::addNewAccountApiForm"
],
"AddNewAccountApiResult": [
"ConfirmEditHooks::addNewAccountApiResult"
],
"APIEditBeforeSave": [
"ConfirmEditHooks::confirmEditAPI"
],
"UnitTestsList": [
"ConfirmEditHooks::onUnitTestsList"
]
},
"config": {
"_prefix": "",
"wgCaptchaWhitelistIP": false,
"wgCaptcha": null,
"wgCaptchaClass": "SimpleCaptcha",
"wgCaptchaTriggers": {
"edit": false,
"create": false,
"sendemail": false,
"addurl": true,
"createaccount": true,
"badlogin": true,
"_merge_strategy": "array_plus"
},
"wgCaptchaTriggersOnNamespace": [],
"wgCaptchaStorageClass": "CaptchaSessionStore",
"wgCaptchaSessionExpiration": 1800,
"wgCaptchaBadLoginExpiration": 300,
"ceAllowConfirmedEmail": false,
"wgCaptchaBadLoginAttempts": 3,
"wgCaptchaWhitelist": false,
"wgCaptchaRegexes": []
},
"manifest_version": 1
}