--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/captcha/engine_default.php Wed Feb 06 18:41:47 2008 -0500
@@ -0,0 +1,150 @@
+<?php
+
+/*
+ * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
+ * Version 1.1.1 (Caoineag alpha 1)
+ * Copyright (C) 2006-2007 Dan Fuhry
+ * captcha.php - visual confirmation system used during registration
+ *
+ * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ *
+ * This file contains code written by Paul Sohier (www.paulscripts.nl). The CAPTCHA code was ported from the phpBB Better
+ * Captcha mod, and has been released under the GPLv2 by the original author.
+ */
+
+/**
+ * The default CAPTCHA engine. Generates medium-strength captchas with very good performance.
+ * @package Enano
+ * @subpackage User management
+ * @copyright 2007-2008 Dan Fuhry
+ * @copyright Paul Sohier
+ */
+
+class captcha_engine_default extends captcha_base
+{
+ function make_image()
+ {
+ $code =& strtoupper($this->get_code());
+
+ /**
+ * The next part is orginnaly written by ted from mastercode.nl and modified for use in Enano.
+ **/
+ header("content-type:image/png");
+ header('Cache-control: no-cache, no-store');
+ $breedte = 320;
+ $hoogte = 60;
+ $img = imagecreatetruecolor($breedte,$hoogte);
+ $achtergrond = imagecolorallocate($img, $this->color("bg"), $this->color("bg"), $this->color("bg"));
+
+ imagefilledrectangle($img, 0, 0, $breedte-1, $hoogte-1, $achtergrond);
+ for($g = 0;$g < 30; $g++)
+ {
+ $t = $this->dss_rand();
+ $t = $t[0];
+
+ $ypos = rand(0,$hoogte);
+ $xpos = rand(0,$breedte);
+
+ $kleur = imagecolorallocate($img, $this->color("bgtekst"), $this->color("bgtekst"), $this->color("bgtekst"));
+
+ imagettftext($img, $this->size(), $this->move(), $xpos, $ypos, $kleur, $this->font(), $t);
+ }
+ $stukje = $breedte / (strlen($code) + 3);
+
+ for($j = 0;$j < strlen($code); $j++)
+ {
+
+
+ $tek = $code[$j];
+ $ypos = rand(33,43);
+ $xpos = $stukje * ($j+1);
+
+ $kleur2 = imagecolorallocate($img, $this->color("tekst"), $this->color("tekst"), $this->color("tekst"));
+
+ imagettftext($img, $this->size(), $this->move(), $xpos, $ypos, $kleur2, $this->font() , $tek);
+ }
+
+ imagepng($img);
+ }
+
+ /**
+ * Some functions :)
+ * Also orginally written by mastercode.nl
+ **/
+ /**
+ * Function to create a random color
+ * @param $type string Mode for the color
+ * @return int
+ **/
+ function color($type)
+ {
+ switch($type)
+ {
+ case "bg":
+ $kleur = rand(224,255);
+ break;
+ case "tekst":
+ $kleur = rand(0,127);
+ break;
+ case "bgtekst":
+ $kleur = rand(200,224);
+ break;
+ default:
+ $kleur = rand(0,255);
+ break;
+ }
+ return $kleur;
+ }
+ /**
+ * Function to ranom the size
+ * @return int
+ **/
+ function size()
+ {
+ $grootte = rand(14,30);
+ return $grootte;
+ }
+ /**
+ * Function to random the posistion
+ * @return int
+ **/
+ function move()
+ {
+ $draai = rand(-25,25);
+ return $draai;
+ }
+
+ /**
+ * Function to return a ttf file from fonts map
+ * @return string
+ **/
+ function font()
+ {
+ $f = @opendir(ENANO_ROOT . '/includes/captcha/fonts/');
+ if(!$f) die('Can\'t open includes/captcha/fonts/ for reading');
+ $ar = array();
+ while(($file = @readdir($f)) !== false)
+ {
+ if(!in_array($file, array('.','..')) && strstr($file, '.ttf'))
+ {
+ $ar[] = $file;
+ }
+ }
+ if(count($ar))
+ {
+ shuffle($ar);
+ $i = rand(0,(count($ar) - 1));
+ return ENANO_ROOT . '/includes/captcha/fonts/' . $ar[$i];
+ }
+ }
+ function dss_rand()
+ {
+ $val = microtime() . mt_rand();
+ $val = md5($val . 'a');
+ return substr($val, 4, 16);
+ }
+}