A visual confirmation plugin, known as Captcha, for new user registration. This plugin prevents automated scripts in creating users and spam your wiki with their url's to get a better google ranking.
Plugin settings are stored as preferences variables. To reference a plugin setting write %<plugin>_<setting>%
, i.e. %INTERWIKIPLUGIN_SHORTDESCRIPTION%
data/debug.txt
)
Additionally, the following settings can be changed in lib/LocalSite.cfg
, the list below shows the defaults.
Note: You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the server where TWiki is running.
CaptchaPlugin.zip
in your twiki installation directory. Content: File: | Description: |
---|---|
data/TWiki/CaptchaPlugin.txt | Plugin topic |
data/TWiki/CaptchaPlugin.txt,v | Plugin topic repository |
Register.pm-4.1.2.patch | Patch for the register module |
edit.pattern.tmpl-4.1.2.patch | Patch for Pattern |
edittoolbar.nat.tmpl-3.0-pre13.patch | Patch for NatSkin |
templates/oopscaptcha.tmpl | Error template |
templates/editcaptcha.tmpl | Edit template |
lib/TWiki/Plugins/CaptchaPlugin.pm | Plugin Perl module |
pub/TWiki/CaptchaPlugin/fonts/* | A collection of free fonts to get you started |
pub/TWiki/CaptchaPlugin/_db | Hash database directory |
pub/TWiki/CaptchaPlugin/img | Image directory |
Register.pm-4.1.2.patch
to lib/TWiki/UI/Register.pm
(alternatively, patch Register.pm manually, see section below), be sure to make a backup so you can revert the patch if you want to disable the plugin: <Directory "/path/to/twiki/pub/TWiki/CaptchaPlugin/_db"> deny from all </Directory> <Directory "/path/to/twiki/pub/TWiki/CaptchaPlugin/fonts"> deny from all </Directory>
bin/configure
script
pub/TWiki/CaptchaPlugin/fonts/
<IMG SRC="%CAPTCHAURL%">
and %CAPTCHAHASH%
Twk1CaptchaString
Twk1CaptchaHash
having as value %CAPTCHAHASH%
<tr> <td valign="top" align="right"><IMG SRC="%CAPTCHAURL%">: <br /> (..) </td> <td><input type="hidden" name="Twk1CaptchaHash" value="%CAPTCHAHASH%"> <input type="text" name="Twk1CaptchaString" size="5"></td> =<font color="red">**</font>= </tr>
If you want to protect edits by TWikiGuest with a captcha, add the following line to your lib/LocalSite.cfg
:
$TWiki::cfg{Plugins}{CaptchaPlugin}{EnableSave} = 1;
A editcaptcha.tmpl
has been prepared for you. All you need to do is TMPL:INCLUDE it into your edit*.tmpl
. Two patches are available for Pattern (edit.pattern.tmpl
) and NatSkin (edittoolbar.nat.tmpl
).
At the moment, editcaptcha.tmpl
requires TWiki:Plugins.IfDefinedPlugin to determine whether the user is TWikiGuest? or not. If you have enabled $TWiki::cfg{Plugins}{CaptchaPlugin}{SaveForAll} = 1;
, modify editcaptcha.tmpl
appropriately.
Refer to the patch file.
lib/TWiki/UI/Register.pm
:
} # generate user entry
Insert the code below directly BEFORE the line containing the curly bracket '{':
# verify captcha eval { use TWiki::Plugins::CaptchaPlugin; }; my %database; my $vcHash = $data->{CaptchaHash}; my $vcTxt = $data->{CaptchaString}; open(LOCKFILE,">".&TWiki::Func::getPubDir()."/TWiki/CaptchaPlugin/_db/hashes.lock"); flock(LOCKFILE,2); dbmopen(%database, &TWiki::Func::getPubDir()."/TWiki/CaptchaPlugin/_db/hashes",0644); my ($time,$txt) = split(',',$database{$vcHash}); if ( not(lc($txt) eq lc($vcTxt)) || ($txt eq '') ) { dbmclose(%database); close(LOCKFILE); throw TWiki::OopsException( 'captcha', web => $data->{webName}, topic => $topic, def => 'invalid_vcstr', params => [ "wrong" ] ); } dbmclose(%database); close(LOCKFILE); TWiki::Plugins::CaptchaPlugin::expire($vcHash);
Now find:
# 'WikiName' omitted because they can't # change it, and 'Confirm' is a duplicate push( @{$data->{form}}, $form ) unless ($name eq 'WikiName' || $name eq 'Confirm');
and change the last line to:
# 'WikiName' omitted because they can't # change it, and 'Confirm' is a duplicate push( @{$data->{form}}, $form ) unless ($name eq 'WikiName' || $name eq 'Confirm' || $name eq 'CaptchaHash' || $name eq 'CaptchaString');
Plugin Author: | TWiki:Main.KoenMartens, TWiki:Main.KwangErnLiew |
Plugin Version: | 28 Oct 2007 1.5-pre4 |
Change History: | |
28 Oct 2007: | Fixed bug on TWikiRegistrationAgent? |
16 Aug 2007: | Added black and white shades only; Added editcaptcha.tmpl ; Moved all attributes to LocalSite.cfg ; Removed DeleteAfterRegistration? |
08 Aug 2007: | Added support for captcha on topic save (thanks TWiki:Main.KwangErnLiew), fixed some minor bugs, added some free fonts |
06 Aug 2007: | Colourised fonts; Randomised font type, font size, background colour, and font positioning; Fixed hash display on user pages; Modified oopscaptcha.tmpl |
03 Aug 2006: | Renamed to CaptchaPlugin, adapted to Dakar (TWiki 4.0.x). |
03 Jan 2006: | Fixed some problems with expiry, also optimised according to TWiki:TWiki.TWikiPlugins#FastPluginHints. |
10 Oct 2005: | Strip hash and text from arguments to register binary, or they will end up in the newly created user topic. |
07 Oct 2005: | Initial version |
TWiki Dependency: | $TWiki::Plugins::VERSION 1.1 |
CPAN Dependencies: | GD, Digest::MD5 |
Optional Dependencies: | TWiki:Plugins.IfDefinedPlugin |
Other Dependencies: | none |
Perl Version: | 5.005 |
License: | GPL (GNU General Public License) |
TWiki:Plugins/Benchmark: | GoodStyle 98%, FormattedSearch 98%, TWikiRegistration (patched) 85% |
Plugin Home: | http://TWiki.org/cgi-bin/view/Plugins/CaptchaPlugin |
Feedback: | http://TWiki.org/cgi-bin/view/Plugins/CaptchaPluginDev |
Appraisal: | http://TWiki.org/cgi-bin/view/Plugins/CaptchaPluginAppraisal |
Related Topics: TWikiPreferences, TWikiPlugins