diff --git a/html/securimage/securimage.php b/html/securimage/securimage.php index 046e35258..43c5b8391 100644 --- a/html/securimage/securimage.php +++ b/html/securimage/securimage.php @@ -503,7 +503,7 @@ class Securimage { * * */ - function Securimage() + function __construct() { // Initialize session or attach to existing if ( session_id() == '' ) { // no session has been started yet, which is needed for validation @@ -538,10 +538,10 @@ class Securimage { $this->image_bg_color = new Securimage_Color(0xff, 0xff, 0xff); $this->text_color = new Securimage_Color(0x3d, 0x3d, 0x3d); $this->multi_text_color = array(new Securimage_Color(0x0, 0x20, 0xCC), - new Securimage_Color(0x0, 0x30, 0xEE), - new Securimage_color(0x0, 0x40, 0xCC), - new Securimage_Color(0x0, 0x50, 0xEE), - new Securimage_Color(0x0, 0x60, 0xCC)); + new Securimage_Color(0x0, 0x30, 0xEE), + new Securimage_color(0x0, 0x40, 0xCC), + new Securimage_Color(0x0, 0x50, 0xEE), + new Securimage_Color(0x0, 0x60, 0xCC)); $this->use_multi_text = false; $this->use_transparent_text = false; @@ -651,7 +651,7 @@ class Securimage { */ function doImage() { - if ($this->use_gd_font == true) { + if ($this->use_gd_font == true || $this->iscale == null || $this->iscale == 0) { $this->iscale = 1; } if($this->use_transparent_text == true || $this->bgimg != "") { @@ -692,24 +692,42 @@ class Securimage { function allocateColors() { // allocate bg color first for imagecreate - $this->gdbgcolor = imagecolorallocate($this->im, $this->image_bg_color->r, $this->image_bg_color->g, $this->image_bg_color->b); - + $this->gdbgcolor = imagecolorallocate($this->im, $this->image_bg_color->r??0, $this->image_bg_color->g??0, $this->image_bg_color->b??0); + + $this->text_color->r=$this->text_color->r??rand(0,255); + $this->text_color->g=$this->text_color->g??rand(0,255); + $this->text_color->b=$this->text_color->b??rand(0,255); + $this->line_color->r=$this->line_color->r??rand(0,255); + $this->line_color->g=$this->line_color->g??rand(0,255); + $this->line_color->b=$this->line_color->b??rand(0,255); + + + $alpha = intval($this->text_transparency_percentage / 100 * 127); if ($this->use_transparent_text == true) { - $this->gdtextcolor = imagecolorallocatealpha($this->im, $this->text_color->r, $this->text_color->g, $this->text_color->b, $alpha); - $this->gdlinecolor = imagecolorallocatealpha($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b, $alpha); - } else { + $this->gdtextcolor = imagecolorallocatealpha($this->im, $this->text_color->r, $this->text_color->g, $this->text_color->b, $alpha); + $this->gdlinecolor = imagecolorallocatealpha($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b, $alpha); + } elseif ( $this->text_color != null ) { $this->gdtextcolor = imagecolorallocate($this->im, $this->text_color->r, $this->text_color->g, $this->text_color->b); - $this->gdlinecolor = imagecolorallocate($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b); - } + $this->gdlinecolor = imagecolorallocate($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b); + } else { + $red=rand(0,255); + $green=rand(0,255); + $blue=rand(0,255); + $this->gdtextcolor = imagecolorallocate($this->im, $red, $green,$blue); + $this->gdlinecolor = imagecolorallocate($this->im, $red, $green, $blue); + } - $this->gdsignaturecolor = imagecolorallocate($this->im, $this->signature_color->r, $this->signature_color->g, $this->signature_color->b); + $this->gdsignaturecolor = imagecolorallocate($this->im, $this->signature_color->r??0, $this->signature_color->g??0, $this->signature_color->b??0); if ($this->use_multi_text == true) { $this->gdmulticolor = array(); - foreach($this->multi_text_color as $color) { + foreach($this->multi_text_color??[] as $color) { + $color->r=$color->r??rand(0,255); + $color->g= $color->g??rand(0,255); + $color->b=$color->b??rand(0,255); if ($this->use_transparent_text == true) { $this->gdmulticolor[] = imagecolorallocatealpha($this->im, $color->r, $color->g, $color->b, $alpha); } else { @@ -837,9 +855,9 @@ class Securimage { $width2 = $this->image_width * $this->iscale; $height2 = $this->image_height * $this->iscale; - if ($this->use_gd_font == true || !is_readable($this->ttf_file)) { + if ($this->use_gd_font == true || !is_readable($this->ttf_file??"")) { if (!is_int($this->gd_font_file)) { //is a file name - $font = @imageloadfont($this->gd_font_file); + $font = @imageloadfont($this->gd_font_file??""); if ($font == false) { trigger_error("Failed to load GD Font file {$this->gd_font_file} ", E_USER_WARNING); return; @@ -897,7 +915,7 @@ class Securimage { $max_x = $font_size + ($this->iscale * 5); } - $x += rand($min_x, $max_x); + $x += rand((int)$min_x,(int) $max_x); } //for loop } // angled or multi-color } //else ttf font @@ -921,9 +939,9 @@ class Securimage { // make array of poles AKA attractor points for ($i = 0; $i < $numpoles; ++$i) { - $px[$i] = rand($this->image_width * 0.3, $this->image_width * 0.7); - $py[$i] = rand($this->image_height * 0.3, $this->image_height * 0.7); - $rad[$i] = rand($this->image_width * 0.4, $this->image_width * 0.7); + $px[$i] = rand((int) ($this->image_width * 0.3), (int)( $this->image_width * 0.7)); + $py[$i] = rand((int) ($this->image_height * 0.3),(int) ($this->image_height * 0.7)); + $rad[$i] = rand((int) ($this->image_width * 0.4), (int) ($this->image_width * 0.7)); $tmp = -$this->frand() * 0.15 - 0.15; $amp[$i] = $this->perturbation * $tmp; } @@ -958,7 +976,7 @@ class Securimage { $y *= $this->iscale; if ($x >= 0 && $x < $width2 && $y >= 0 && $y < $height2) { - $c = imagecolorat($this->tmpimg, $x, $y); + $c = imagecolorat($this->tmpimg, (int) $x,(int) $y); } if ($c != $bgCol) { // only copy pixels of letters to preserve any background image @@ -1001,7 +1019,7 @@ class Securimage { { $code = ''; - for($i = 1, $cslen = strlen($this->charset); $i <= $len; ++$i) { + for($i = 1, $cslen = strlen($this->charset??""); $i <= $len; ++$i) { $code .= $this->charset[rand(0, $cslen - 1)]; } return $code; diff --git a/include/config.inc.example b/include/config.inc.example index ea16393aa..114108b1b 100644 --- a/include/config.inc.example +++ b/include/config.inc.example @@ -86,3 +86,6 @@ define ("DEBUGNOALYSS",0); // // Audit everything // define ("AUDIT_ENABLE",true); +// +// display a captcha +// define ("NOALYSS_CAPTCHA",true); \ No newline at end of file diff --git a/include/lib/ac_common.php b/include/lib/ac_common.php index 581d8b30d..7e788d5f2 100644 --- a/include/lib/ac_common.php +++ b/include/lib/ac_common.php @@ -1469,7 +1469,7 @@ function remove_divide_zero($p_formula) * @brief Create randomly a string * @param int $p_length length of the generate string */ -function generate_random_string($car) +function generate_random_string($p_length) { $string=""; $chaine="abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY0123456789*/+-="; diff --git a/include/lib/config_file.php b/include/lib/config_file.php index 7384844d3..1aefa53c7 100644 --- a/include/lib/config_file.php +++ b/include/lib/config_file.php @@ -257,6 +257,8 @@ function display_file_config($p_array,$from_setup=1,$p_os=1) print ("// Uncomment and define if you want to Name of the sender of the email \r\n"); print ("// if you activate the possibility to reinitialize password by email\r\n"); print ("// define('ADMIN_WEB', 'www-data@localhost');\r\n"); + print ("// Define a random session key if you work with different version of NOALYSS\r\n"); + printf ("define ('SESSION_KEY','%s')",generate_random_string(10)) ; } /*!\brief create the config file