From 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Thu, 12 Jul 2012 11:21:01 +0000 Subject: standardize the use of unix eol; use svn properties to enforce native eol --- framework/Web/UI/WebControls/assets/captcha.php | 448 ++++++++++++------------ 1 file changed, 224 insertions(+), 224 deletions(-) (limited to 'framework/Web/UI/WebControls/assets/captcha.php') diff --git a/framework/Web/UI/WebControls/assets/captcha.php b/framework/Web/UI/WebControls/assets/captcha.php index b26df895..08a857b5 100644 --- a/framework/Web/UI/WebControls/assets/captcha.php +++ b/framework/Web/UI/WebControls/assets/captcha.php @@ -1,224 +1,224 @@ - - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2012 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.Web.UI.WebControls.assets - */ - -define('THEME_OPAQUE_BACKGROUND',0x0001); -define('THEME_NOISY_BACKGROUND',0x0002); -define('THEME_HAS_GRID',0x0004); -define('THEME_HAS_SCRIBBLE',0x0008); -define('THEME_MORPH_BACKGROUND',0x0010); -define('THEME_SHADOWED_TEXT',0x0020); - -require_once(dirname(__FILE__).'/captcha_key.php'); - -$token='error'; -$theme=0; - -if(isset($_GET['options'])) -{ - $str=base64_decode($_GET['options']); - if(strlen($str)>32) - { - $hash=substr($str,0,32); - $str=substr($str,32); - if(md5($privateKey.$str)===$hash) - { - $options=unserialize($str); - $publicKey=$options['publicKey']; - $tokenLength=$options['tokenLength']; - $caseSensitive=$options['caseSensitive']; - $alphabet=$options['alphabet']; - $fontSize=$options['fontSize']; - $theme=$options['theme']; - if(($randomSeed=$options['randomSeed'])>0) - srand($randomSeed); - else - srand((int)(microtime()*1000000)); - $token=generateToken($publicKey,$privateKey,$alphabet,$tokenLength,$caseSensitive); - } - } -} - -displayToken($token,$fontSize,$theme); - -function generateToken($publicKey,$privateKey,$alphabet,$tokenLength,$caseSensitive) -{ - $token=substr(hash2string(md5($publicKey.$privateKey),$alphabet).hash2string(md5($privateKey.$publicKey),$alphabet),0,$tokenLength); - return $caseSensitive?$token:strtoupper($token); -} - -function hash2string($hex,$alphabet) -{ - if(strlen($alphabet)<2) - $alphabet='234578adefhijmnrtABDEFGHJLMNRT'; - $hexLength=strlen($hex); - $base=strlen($alphabet); - $result=''; - for($i=0;$i<$hexLength;$i+=6) - { - $number=hexdec(substr($hex,$i,6)); - while($number) - { - $result.=$alphabet[$number%$base]; - $number=floor($number/$base); - } - } - return $result; -} - -function displayToken($token,$fontSize,$theme) -{ - if(($fontSize=(int)$fontSize)<22) - $fontSize=22; - if($fontSize>100) - $fontSize=100; - $length=strlen($token); - $padding=10; - $fontWidth=$fontSize; - $fontHeight=floor($fontWidth*1.5); - $width=$fontWidth*$length+$padding*2; - $height=$fontHeight; - $image=imagecreatetruecolor($width,$height); - - addBackground - ( - $image, $width, $height, - $theme&THEME_OPAQUE_BACKGROUND, - $theme&THEME_NOISY_BACKGROUND, - $theme&THEME_HAS_GRID, - $theme&THEME_HAS_SCRIBBLE, - $theme&THEME_MORPH_BACKGROUND - ); - - $font=dirname(__FILE__).DIRECTORY_SEPARATOR.'verase.ttf'; - - if(function_exists('imagefilter')) - imagefilter($image,IMG_FILTER_GAUSSIAN_BLUR); - - $hasShadow=($theme&THEME_SHADOWED_TEXT); - for($i=0;$i<$length;$i++) - { - $color=imagecolorallocate($image,rand(150,220),rand(150,220),rand(150,220)); - $size=rand($fontWidth-10,$fontWidth); - $angle=rand(-30,30); - $x=$padding+$i*$fontWidth; - $y=rand($fontHeight-15,$fontHeight-10); - imagettftext($image,$size,$angle,$x,$y,$color,$font,$token[$i]); - if($hasShadow) - imagettftext($image,$size,$angle,$x+2,$y+2,$color,$font,$token[$i]); - imagecolordeallocate($image,$color); - } - - header('Content-Type: image/png'); - imagepng($image); - imagedestroy($image); -} - -function addBackground($image,$width,$height,$opaque,$noisy,$hasGrid,$hasScribble,$morph) -{ - $background=imagecreatetruecolor($width*2,$height*2); - $white=imagecolorallocate($background,255,255,255); - imagefill($background,0,0,$white); - - if($opaque) - imagefill($background,0,0,imagecolorallocate($background,100,100,100)); - - if($noisy) - addNoise($background,$width*2,$height*2); - - if($hasGrid) - addGrid($background,$width*2,$height*2); - - if($hasScribble) - addScribble($background,$width*2,$height*2); - - if($morph) - morphImage($background,$width*2,$height*2); - - imagecopy($image,$background,0,0,30,30,$width,$height); - - if(!$opaque) - imagecolortransparent($image,$white); -} - -function addNoise($image,$width,$height) -{ - for($x=0;$x<$width;++$x) - { - for($y=0;$y<$height;++$y) - { - if(rand(0,100)<25) - { - $color=imagecolorallocate($image,rand(150,220),rand(150,220),rand(150,220)); - imagesetpixel($image,$x,$y,$color); - imagecolordeallocate($image,$color); - } - } - } -} - -function addGrid($image,$width,$height) -{ - for($i=0;$i<$width;$i+=rand(15,25)) - { - imagesetthickness($image,rand(2,6)); - $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); - imageline($image,$i+rand(-10,20),0,$i+rand(-10,20),$height,$color); - imagecolordeallocate($image,$color); - } - for($i=0;$i<$height;$i+=rand(15,25)) - { - imagesetthickness($image,rand(2,6)); - $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); - imageline($image,0,$i+rand(-10,20),$width,$i+rand(-10,20),$color); - imagecolordeallocate($image,$color); - } -} - -function addScribble($image,$width,$height) -{ - for($i=0;$i<8;$i++) - { - $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); - $points=array(); - for($j=1;$j=$height) $y=$height-5; - if($y<0) $y=5; - imagecopy($tempImage,$image,$x,0,$x,$y,$chunk,$height); - } - for($x=$y=0;$y<$height;$y+=$chunk) - { - $chunk=rand(1,5); - $x+=rand(-1,1); - if($x>=$width) $x=$width-5; - if($x<0) $x=5; - imagecopy($image,$tempImage,$x,$y,0,$y,$width,$chunk); - } -} - + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2012 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Web.UI.WebControls.assets + */ + +define('THEME_OPAQUE_BACKGROUND',0x0001); +define('THEME_NOISY_BACKGROUND',0x0002); +define('THEME_HAS_GRID',0x0004); +define('THEME_HAS_SCRIBBLE',0x0008); +define('THEME_MORPH_BACKGROUND',0x0010); +define('THEME_SHADOWED_TEXT',0x0020); + +require_once(dirname(__FILE__).'/captcha_key.php'); + +$token='error'; +$theme=0; + +if(isset($_GET['options'])) +{ + $str=base64_decode($_GET['options']); + if(strlen($str)>32) + { + $hash=substr($str,0,32); + $str=substr($str,32); + if(md5($privateKey.$str)===$hash) + { + $options=unserialize($str); + $publicKey=$options['publicKey']; + $tokenLength=$options['tokenLength']; + $caseSensitive=$options['caseSensitive']; + $alphabet=$options['alphabet']; + $fontSize=$options['fontSize']; + $theme=$options['theme']; + if(($randomSeed=$options['randomSeed'])>0) + srand($randomSeed); + else + srand((int)(microtime()*1000000)); + $token=generateToken($publicKey,$privateKey,$alphabet,$tokenLength,$caseSensitive); + } + } +} + +displayToken($token,$fontSize,$theme); + +function generateToken($publicKey,$privateKey,$alphabet,$tokenLength,$caseSensitive) +{ + $token=substr(hash2string(md5($publicKey.$privateKey),$alphabet).hash2string(md5($privateKey.$publicKey),$alphabet),0,$tokenLength); + return $caseSensitive?$token:strtoupper($token); +} + +function hash2string($hex,$alphabet) +{ + if(strlen($alphabet)<2) + $alphabet='234578adefhijmnrtABDEFGHJLMNRT'; + $hexLength=strlen($hex); + $base=strlen($alphabet); + $result=''; + for($i=0;$i<$hexLength;$i+=6) + { + $number=hexdec(substr($hex,$i,6)); + while($number) + { + $result.=$alphabet[$number%$base]; + $number=floor($number/$base); + } + } + return $result; +} + +function displayToken($token,$fontSize,$theme) +{ + if(($fontSize=(int)$fontSize)<22) + $fontSize=22; + if($fontSize>100) + $fontSize=100; + $length=strlen($token); + $padding=10; + $fontWidth=$fontSize; + $fontHeight=floor($fontWidth*1.5); + $width=$fontWidth*$length+$padding*2; + $height=$fontHeight; + $image=imagecreatetruecolor($width,$height); + + addBackground + ( + $image, $width, $height, + $theme&THEME_OPAQUE_BACKGROUND, + $theme&THEME_NOISY_BACKGROUND, + $theme&THEME_HAS_GRID, + $theme&THEME_HAS_SCRIBBLE, + $theme&THEME_MORPH_BACKGROUND + ); + + $font=dirname(__FILE__).DIRECTORY_SEPARATOR.'verase.ttf'; + + if(function_exists('imagefilter')) + imagefilter($image,IMG_FILTER_GAUSSIAN_BLUR); + + $hasShadow=($theme&THEME_SHADOWED_TEXT); + for($i=0;$i<$length;$i++) + { + $color=imagecolorallocate($image,rand(150,220),rand(150,220),rand(150,220)); + $size=rand($fontWidth-10,$fontWidth); + $angle=rand(-30,30); + $x=$padding+$i*$fontWidth; + $y=rand($fontHeight-15,$fontHeight-10); + imagettftext($image,$size,$angle,$x,$y,$color,$font,$token[$i]); + if($hasShadow) + imagettftext($image,$size,$angle,$x+2,$y+2,$color,$font,$token[$i]); + imagecolordeallocate($image,$color); + } + + header('Content-Type: image/png'); + imagepng($image); + imagedestroy($image); +} + +function addBackground($image,$width,$height,$opaque,$noisy,$hasGrid,$hasScribble,$morph) +{ + $background=imagecreatetruecolor($width*2,$height*2); + $white=imagecolorallocate($background,255,255,255); + imagefill($background,0,0,$white); + + if($opaque) + imagefill($background,0,0,imagecolorallocate($background,100,100,100)); + + if($noisy) + addNoise($background,$width*2,$height*2); + + if($hasGrid) + addGrid($background,$width*2,$height*2); + + if($hasScribble) + addScribble($background,$width*2,$height*2); + + if($morph) + morphImage($background,$width*2,$height*2); + + imagecopy($image,$background,0,0,30,30,$width,$height); + + if(!$opaque) + imagecolortransparent($image,$white); +} + +function addNoise($image,$width,$height) +{ + for($x=0;$x<$width;++$x) + { + for($y=0;$y<$height;++$y) + { + if(rand(0,100)<25) + { + $color=imagecolorallocate($image,rand(150,220),rand(150,220),rand(150,220)); + imagesetpixel($image,$x,$y,$color); + imagecolordeallocate($image,$color); + } + } + } +} + +function addGrid($image,$width,$height) +{ + for($i=0;$i<$width;$i+=rand(15,25)) + { + imagesetthickness($image,rand(2,6)); + $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); + imageline($image,$i+rand(-10,20),0,$i+rand(-10,20),$height,$color); + imagecolordeallocate($image,$color); + } + for($i=0;$i<$height;$i+=rand(15,25)) + { + imagesetthickness($image,rand(2,6)); + $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); + imageline($image,0,$i+rand(-10,20),$width,$i+rand(-10,20),$color); + imagecolordeallocate($image,$color); + } +} + +function addScribble($image,$width,$height) +{ + for($i=0;$i<8;$i++) + { + $color=imagecolorallocate($image,rand(100,180),rand(100,180),rand(100,180)); + $points=array(); + for($j=1;$j=$height) $y=$height-5; + if($y<0) $y=5; + imagecopy($tempImage,$image,$x,0,$x,$y,$chunk,$height); + } + for($x=$y=0;$y<$height;$y+=$chunk) + { + $chunk=rand(1,5); + $x+=rand(-1,1); + if($x>=$width) $x=$width-5; + if($x<0) $x=5; + imagecopy($image,$tempImage,$x,$y,0,$y,$width,$chunk); + } +} + -- cgit v1.2.3