Ideas for improved versions.
[toast/cookiecaptcha.git] / CookieCaptcha.php
index 69e3be01235a990d69d309b65dfbdb8ad8383f45..d110407b8af7e37076cc1e7eae328d4005c23fd0 100644 (file)
@@ -1,10 +1,11 @@
 <?php
 /**
- * Experimental image-based captcha plugin, using images generated by an
- * external tool.
+ * Experimental cookie-based captcha plugin.
  *
  * Copyright (C) 2005, 2006 Brion Vibber <brion@pobox.com>
  * http://www.mediawiki.org/
+ * Copyright (C) 2012, Gregor Herrmann <gregor@toastfreeware.priv.at>, Philipp Spitzer <philipp@toastfreeware.priv.at>
+ * http://www.toastfreeware.priv.at/
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * @ingroup Extensions
  */
 
+/*
+Ideas for improved versions:
+ * Use cookie prefix to define the cookie name
+ * Use timestamp in cookie
+ * Without apache
+ * Provide sample image
+ */
+
+/* The idea of this "captcha" is to let the browser download an image that sets a cookie.
+Research showed that spam bots don't load images. You have to setup the cookie e.g. in the apache2
+configuration file. Here is an example where an image that's uploaded with mediawiki is used:
+
+<Directory /var/www/mediawiki/images/d/d0>
+    <Files "MyImage.png">
+        Header append Set-Cookie "mediawiki_token=%t; Path=/; HttpOnly"
+        ExpiresActive On
+        ExpiresDefault "access plus 5 second"
+    </Files>
+</Directory>
+
+Required settings in LocalSettings.php:
+
+require_once("$IP/extensions/CookieCaptcha/ConfirmEdit.php");
+require_once("$IP/extensions/CookieCaptcha/CookieCaptcha.php");
+$wgCaptchaClass = 'CookieCaptcha';
+$wgCaptchaTriggers['createaccount'] = true;
+
+*/
+
+
 if ( !defined( 'MEDIAWIKI' ) ) {
        exit;
 }
 
 $dir = __DIR__;
 require_once $dir . '/ConfirmEdit.php';
-$wgCaptchaClass = 'FancyCaptcha';
 
-/**
- * The name of a file backend ($wgFileBackends) to be used for storing files.
- * Defaults to FSFileBackend using $wgCaptchaDirectory as a base path.
- */
-$wgCaptchaFileBackend = '';
-
-global $wgCaptchaDirectory;
-$wgCaptchaDirectory = "$wgUploadDirectory/captcha"; // bad default :D
-
-global $wgCaptchaDirectoryLevels;
-$wgCaptchaDirectoryLevels = 0; // To break into subdirectories
+$wgCaptchaClass = 'CookieCaptcha';
+$wgCaptchaCookieName = 'mediawiki_token';                     // make it look "realistic". Idea: use $wgCookiePrefix . '_token'
+$wgCaptchaCookieImage = '/mediawiki/images/d/d0/MyImage.png'; // You _have_ to specify an existing image
+$wgCaptchaCookieAlt = '';                                     // alt attribute for the image
+$wgCaptchaCookieStyle = 'display:none;';                      // CSS inline style applied to the image
 
-global $wgCaptchaSecret;
-$wgCaptchaSecret = "CHANGE_THIS_SECRET!";
-
-/**
- * By default the FancyCaptcha rotates among all available captchas.
- * Setting $wgCaptchaDeleteOnSolve to true will delete the captcha
- * files when they are correctly solved. Thus the user will need
- * something like a cron creating new thumbnails to avoid drying up.
- */
-$wgCaptchaDeleteOnSolve = false;
 
-$wgExtensionMessagesFiles['FancyCaptcha'] = $dir . '/FancyCaptcha.i18n.php';
-$wgAutoloadClasses['FancyCaptcha'] = $dir . '/FancyCaptcha.class.php';
+$wgAutoloadClasses['CookieCaptcha'] = $dir . '/CookieCaptcha.class.php';