!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\cumbreclima\wp-content\plugins\revslider\inc_php\framework\   drwxrwxrwx
Free 4.1 GB of 39.52 GB (10.36%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     image_view.class.php (17.82 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

    
class UniteImageViewRev{
        
        private 
$pathCache;
        private 
$pathImages;
        private 
$urlImages;
        
        private 
$filename null;
        private 
$maxWidth null;
        private 
$maxHeight null;
        private 
$type null;
        private 
$effect null;
        private 
$effect_arg1 null;
        private 
$effect_arg2 null;
        
        const 
EFFECT_BW "bw";
        const 
EFFECT_BRIGHTNESS "bright";
        const 
EFFECT_CONTRAST "contrast";
        const 
EFFECT_EDGE "edge";
        const 
EFFECT_EMBOSS "emboss";
        const 
EFFECT_BLUR "blur";
        const 
EFFECT_BLUR3 "blur3";
        const 
EFFECT_MEAN "mean";
        const 
EFFECT_SMOOTH "smooth";
        const 
EFFECT_DARK "dark";
        
        const 
TYPE_EXACT "exact";
        const 
TYPE_EXACT_TOP "exacttop";
        
        private 
$jpg_quality 81;
        
        public function 
__construct($pathCache,$pathImages,$urlImages){
            
            
$this->pathCache $pathCache;
            
$this->pathImages $pathImages;
            
$this->urlImages $urlImages;
        }
        
        
/**
         * 
         * set jpg quality output
         */
        
public function setJPGQuality($quality){
            
$this->jpg_quality $quality;
        }
        
        
/**
         * 
         * get thumb url
         */
        
public static function getUrlThumb($urlBase$filename,$width=null,$height=null,$exact=false,$effect=null,$effect_param=null){            
            
            
$filename urlencode($filename);
            
            
$url $urlBase."&img=$filename";
            if(!empty(
$width))
                
$url .= "&w=".$width;
            if(!empty(
$height))
                
$url .= "&h=".$height;
                
            if(
$exact == true){
                
$url .= "&t=".self::TYPE_EXACT;
            }
            
            if(!empty(
$effect)){
                
$url .= "&e=".$effect;
                if(!empty(
$effect_param))
                    
$url .= "&ea1=".$effect_param;
            }
            
            return(
$url);
        }
        
        
/**
         * 
         * throw error
         */
        
private function throwError($message,$code=null){
            
UniteFunctionsRev::throwError($message,$code);
        }
        
        
/**
         * 
         * get filename for thumbnail save / retrieve
         * TODO: do input validations - security measures
         */
        
private function getThumbFilename(){
            
$info pathInfo($this->filename);
            
            
//add dirname as postfix (if exists)
            
$postfix "";
            
            
$dirname UniteFunctionsRev::getVal($info"dirname");
            if(!empty(
$dirname)){
                
$postfix str_replace("/""-"$dirname);
            }
            
            
            
$ext $info["extension"];
            
$name $info["filename"];
            
$width ceil($this->maxWidth);
            
$height ceil($this->maxHeight);
            
$thumbFilename $name."_".$width."x".$height;        
            
            if(!empty(
$this->type)) 
                
$thumbFilename .= "_" $this->type;
                
            if(!empty(
$this->effect)){
                
$thumbFilename .= "_e" $this->effect;
                if(!empty(
$this->effect_arg1)){
                    
$thumbFilename .= "x" $this->effect_arg1;
                }
            }
            
            
//add postfix
            
if(!empty($postfix))
                
$thumbFilename .= "_".$postfix;
            
            
$thumbFilename .= ".".$ext;
            
            return(
$thumbFilename);
        }
        
        
//------------------------------------------------------------------------------------------
        // get thumbnail fielpath by parameters.
        
private function getThumbFilepath(){
            
$filename $this->getThumbFilename();
            
$filepath $this->pathCache .$filename;
            return(
$filepath);
        }
    
        
//------------------------------------------------------------------------------------------
        // ouptput emtpy image code.
        
private function outputEmptyImageCode(){    
            echo 
"empty image";
            exit();
        }
        
        
//------------------------------------------------------------------------------------------
        // outputs image and exit.
        
private function outputImage($filepath){
                        
            
$info UniteFunctionsRev::getPathInfo($filepath);
            
$ext $info["extension"];                
            
//$filetime = filemtime($filepath);
            
            
$ext strtolower($ext);
            if(
$ext == "jpg")
                
$ext "jpeg";
            
            
$numExpires 31536000;    //one year
            
$strExpires = @date('D, d M Y H:i:s',time()+$numExpires);
            
//$strModified = @date('D, d M Y H:i:s',$filetime);
            
            
$contents file_get_contents($filepath);
            
$filesize strlen($contents);
            
/*header("Last-Modified: $strModified GMT");*/
            
header("Expires: $strExpires GMT");
            
header("Cache-Control: public");
            
header("Content-Type: image/$ext");
            
header("Content-Length: $filesize");
            
            echo 
$contents;
            exit();
        }
        
        
        
//------------------------------------------------------------------------------------------
        // get src image from filepath according the image type
        
private function getGdSrcImage($filepath,$type){
            
// create the image
            
$src_img false;
            switch(
$type){
                case 
IMAGETYPE_JPEG:
                    
$src_img = @imagecreatefromjpeg($filepath);
                break;
                case 
IMAGETYPE_PNG:
                    
$src_img = @imagecreatefrompng($filepath);
                break;
                case 
IMAGETYPE_GIF:
                    
$src_img = @imagecreatefromgif($filepath);
                break;
                case 
IMAGETYPE_BMP:
                    
$src_img = @imagecreatefromwbmp($filepath);
                break;
                default:
                    
$this->throwError("wrong image format, can't resize");
                break;
            }
            
            if(
$src_img == false){
                
$this->throwError("Can't resize image");
            }
             
            return(
$src_img);
        }
        
        
//------------------------------------------------------------------------------------------
        // save gd image to some filepath. return if success or not
        
private function saveGdImage($dst_img,$filepath,$type){
            
$successSaving false;
            switch(
$type){
                case 
IMAGETYPE_JPEG:
                    
$successSaving imagejpeg($dst_img,$filepath,$this->jpg_quality);
                break;
                case 
IMAGETYPE_PNG:
                    
$successSaving imagepng($dst_img,$filepath);
                break;
                case 
IMAGETYPE_GIF:
                    
$successSaving imagegif($dst_img,$filepath);
                break;
                case 
IMAGETYPE_BMP:
                    
$successSaving imagewbmp($dst_img,$filepath);
                break;
            }
            
            return(
$successSaving);
        }
        
        
//------------------------------------------------------------------------------------------
        // crop image to specifix height and width , and save it to new path
        
private function cropImageSaveNew($filepath,$filepathNew){
            
            
$imgInfo getimagesize($filepath);
            
$imgType $imgInfo[2];
            
            
$src_img $this->getGdSrcImage($filepath,$imgType);
            
            
$width imageSX($src_img);
            
$height imageSY($src_img);
            
            
//crop the image from the top
            
$startx 0;
            
$starty 0;
            
            
//find precrop width and height:
            
$percent $this->maxWidth $width;
            
$newWidth $this->maxWidth;
            
$newHeight ceil($percent $height);
            
            if(
$this->type == "exact"){     //crop the image from the middle
                
$startx 0;
                
$starty = ($newHeight-$this->maxHeight)/$percent;
            }
            
            if(
$newHeight $this->maxHeight){    //by width
                
$percent $this->maxHeight $height;
                
$newHeight $this->maxHeight;
                
$newWidth ceil($percent $width);
                
                if(
$this->type == "exact"){     //crop the image from the middle
                    
$startx = ($newWidth $this->maxWidth) /$percent;    //the startx is related to big image
                    
$starty 0;
                }
            }
            
            
//resize the picture:
            
$tmp_img ImageCreateTrueColor($newWidth,$newHeight);
            
            
$this->handleTransparency($tmp_img,$imgType,$newWidth,$newHeight);
            
            
imagecopyresampled($tmp_img,$src_img,0,0,$startx,$starty,$newWidth,$newHeight,$width,$height);
            
            
$this->handleImageEffects($tmp_img);
            
            
//crop the picture:
            
$dst_img ImageCreateTrueColor($this->maxWidth,$this->maxHeight);
            
            
$this->handleTransparency($dst_img,$imgType,$this->maxWidth,$this->maxHeight);
            
            
imagecopy($dst_img$tmp_img0000$newWidth$newHeight);
            
            
//save the picture
            
$is_saved $this->saveGdImage($dst_img,$filepathNew,$imgType);
            
            
imagedestroy($dst_img);
            
imagedestroy($src_img);
            
imagedestroy($tmp_img);
            
            return(
$is_saved);        
        }
        
        
//------------------------------------------------------------------------------------------
        // if the images are png or gif - handle image transparency
        
private function handleTransparency(&$dst_img,$imgType,$newWidth,$newHeight){
            
//handle transparency:
            
if($imgType == IMAGETYPE_PNG || $imgType == IMAGETYPE_GIF){
              
imagealphablending($dst_imgfalse);
              
imagesavealpha($dst_img,true);
              
$transparent imagecolorallocatealpha($dst_img255,  255255127);
              
imagefilledrectangle($dst_img0,  0$newWidth$newHeight,  $transparent);
            }
        }
        
        
//------------------------------------------------------------------------------------------
        // handle image effects
        
private function handleImageEffects(&$imgHandle){
            if(empty(
$this->effect))
                return(
false);
            
            switch(
$this->effect){
                case 
self::EFFECT_BW:
                    if(
defined("IMG_FILTER_GRAYSCALE"))
                        
imagefilter($imgHandle,IMG_FILTER_GRAYSCALE);
                break;
                case 
self::EFFECT_BRIGHTNESS:
                    if(
defined("IMG_FILTER_BRIGHTNESS")){
                        if(!
is_numeric($this->effect_arg1))
                            
$this->effect_arg1 50;    //set default value
                        
UniteFunctionsRev::validateNumeric($this->effect_arg1,"'ea1' argument");
                        
imagefilter($imgHandle,IMG_FILTER_BRIGHTNESS,$this->effect_arg1);
                    }
                break;
                case 
self::EFFECT_DARK:
                    if(
defined("IMG_FILTER_BRIGHTNESS")){
                        if(!
is_numeric($this->effect_arg1))
                            
$this->effect_arg1 = -50;    //set default value
                        
UniteFunctionsRev::validateNumeric($this->effect_arg1,"'ea1' argument");
                        
imagefilter($imgHandle,IMG_FILTER_BRIGHTNESS,$this->effect_arg1);
                    }
                break;
                case 
self::EFFECT_CONTRAST:
                    if(
defined("IMG_FILTER_CONTRAST")){
                        if(!
is_numeric($this->effect_arg1))
                            
$this->effect_arg1 = -5;    //set default value    
                        
imagefilter($imgHandle,IMG_FILTER_CONTRAST,$this->effect_arg1);
                    }
                break;
                case 
self::EFFECT_EDGE:
                    if(
defined("IMG_FILTER_EDGEDETECT"))
                        
imagefilter($imgHandle,IMG_FILTER_EDGEDETECT);
                break;
                case 
self::EFFECT_EMBOSS:
                    if(
defined("IMG_FILTER_EMBOSS"))
                        
imagefilter($imgHandle,IMG_FILTER_EMBOSS);
                break;
                case 
self::EFFECT_BLUR:
                    
$this->effect_Blur($imgHandle,5);
                    
/*
                    if(defined("IMG_FILTER_GAUSSIAN_BLUR"))
                        imagefilter($imgHandle,IMG_FILTER_GAUSSIAN_BLUR);
                    */
                
break;
                case 
self::EFFECT_MEAN:
                    if(
defined("IMG_FILTER_MEAN_REMOVAL"))
                        
imagefilter($imgHandle,IMG_FILTER_MEAN_REMOVAL);
                break;
                case 
self::EFFECT_SMOOTH:
                    if(
defined("IMG_FILTER_SMOOTH")){
                        if(!
is_numeric($this->effect_arg1))
                            
$this->effect_arg1 15;    //set default value                            
                        
imagefilter($imgHandle,IMG_FILTER_SMOOTH,$this->effect_arg1);
                    }
                break;
                case 
self::EFFECT_BLUR3:
                    
$this->effect_Blur($imgHandle,5);
                break;
                default:
                    
$this->throwError("Effect not supported: <b>".$this->effect."</b>");
                break;
            }
            
        }

    private function 
effect_Blur(&$gdimg$radius=0.5) {
        
// Taken from Torstein Hרnsi's phpUnsharpMask (see phpthumb.unsharp.php)

        
$radius round(max(0min($radius50)) * 2);
        if (!
$radius) {
            return 
false;
        }

        
$w ImageSX($gdimg);
        
$h ImageSY($gdimg);
        if (
$imgBlur ImageCreateTrueColor($w$h)) {
            
// Gaussian blur matrix:
            //    1    2    1
            //    2    4    2
            //    1    2    1

            // Move copies of the image around one pixel at the time and merge them with weight
            // according to the matrix. The same matrix is simply repeated for higher radii.
            
for ($i 0$i $radius$i++)    {
                
ImageCopy     ($imgBlur$gdimg0011$w 1$h 1);            // up left
                
ImageCopyMerge($imgBlur$gdimg1100$w,     $h,     50.00000);  // down right
                
ImageCopyMerge($imgBlur$gdimg0110$w 1$h,     33.33333);  // down left
                
ImageCopyMerge($imgBlur$gdimg1001$w,     $h 125.00000);  // up right
                
ImageCopyMerge($imgBlur$gdimg0010$w 1$h,     33.33333);  // left
                
ImageCopyMerge($imgBlur$gdimg1000$w,     $h,     25.00000);  // right
                
ImageCopyMerge($imgBlur$gdimg0001$w,     $h 120.00000);  // up
                
ImageCopyMerge($imgBlur$gdimg0100$w,     $h,     16.666667); // down
                
ImageCopyMerge($imgBlur$gdimg0000$w,     $h,     50.000000); // center
                
ImageCopy     ($gdimg$imgBlur0000$w,     $h);
            }
            return 
true;
        }
        return 
false;
    }
        
        
        
//------------------------------------------------------------------------------------------
        // resize image and save it to new path
        
private function resizeImageSaveNew($filepath,$filepathNew){
            
            
$imgInfo getimagesize($filepath);
            
$imgType $imgInfo[2];
            
            
$src_img $this->getGdSrcImage($filepath,$imgType);
             
            
$width imageSX($src_img);
            
$height imageSY($src_img);
            
            
$newWidth $width;
            
$newHeight $height;
            
            
//find new width
            
if($height $this->maxHeight){
                
$procent $this->maxHeight $height;
                
$newWidth ceil($width $procent);
                
$newHeight $this->maxHeight;
            }
            
            
//if the new width is grater than max width, find new height, and remain the width.
            
if($newWidth $this->maxWidth){
                
$procent $this->maxWidth $newWidth;
                
$newHeight ceil($newHeight $procent);
                
$newWidth $this->maxWidth;
            }
            
            
//if the image don't need to be resized, just copy it from source to destanation.
            
if($newWidth == $width && $newHeight == $height && empty($this->effect)){
                
$success copy($filepath,$filepathNew);                
                if(
$success == false
                    
$this->throwError("can't copy the image from one path to another");
            }
            else{        
//else create the resized image, and save it to new path:                
                
$dst_img ImageCreateTrueColor($newWidth,$newHeight);            
                
                
$this->handleTransparency($dst_img,$imgType,$newWidth,$newHeight);
                
                
//copy the new resampled image:
                
imagecopyresampled($dst_img,$src_img,0,0,0,0,$newWidth,$newHeight,$width,$height);
                
                
$this->handleImageEffects($dst_img);
                
                
$is_saved $this->saveGdImage($dst_img,$filepathNew,$imgType);
                
imagedestroy($dst_img);
            }
            
            
imagedestroy($src_img);
            
            return(
true);
        }
        
        
/**
         * 
         * set image effect
         */
        
public function setEffect($effect,$arg1 ""){
            
$this->effect $effect;
            
$this->effect_arg1 $arg1;
        }
        
        
        private function 
showImageByID($fileID$maxWidth=-1$maxHeight=-1$type=""){
            
$fileID intval($fileID);
            
            if(
$fileID == 0$this->throwError("image not found");
            
            
$img wp_get_attachment_image_src$fileID'thumb' );
            
            if(empty(
$img)) $this->throwError("image not found");
            
            
            
$this->outputImage($img[0]);
            
            
            exit();
        }
        
        
//------------------------------------------------------------------------------------------
        //return image
        
private function showImage($filename,$maxWidth=-1,$maxHeight=-1,$type=""){
            
            if(empty(
$filename))
                
$this->throwError("image filename not found");
            
            
//validate input
            
if($type == self::TYPE_EXACT || $type == self::TYPE_EXACT_TOP){
                if(
$maxHeight == -1)
                    
$this->throwError("image with exact type must have height!");
                if(
$maxWidth == -1)
                    
$this->throwError("image with exact type must have width!");
            }
            
            
$filepath $this->pathImages.$filename;                    
            
            
            if(!
is_file($filepath)) $this->outputEmptyImageCode();
            
            
//if gd library doesn't exists - output normal image without resizing.
            
if(function_exists("gd_info") == false)
                
$this->throwError("php must support GD Library");

            
//check conditions for output original image
            
if(empty($this->effect)){
                if((
is_numeric($maxWidth) == false || is_numeric($maxHeight) == false)) outputImage($filepath);
                
                if(
$maxWidth == -&& $maxHeight == -1
                    
$this->outputImage($filepath);
            }
            
            if(
$maxWidth == -1$maxWidth 1000000;
            if(
$maxHeight == -1$maxHeight 100000;
            
            
//init variables
            
$this->filename $filename;
            
$this->maxWidth $maxWidth;
            
$this->maxHeight $maxHeight;
            
$this->type $type;
            
            
$filepathNew $this->getThumbFilepath();
            
            if(
is_file($filepathNew)){
                
$this->outputImage($filepathNew);
                exit();        
            }
            
            try{
                if(
$type == self::TYPE_EXACT || $type == self::TYPE_EXACT_TOP){
                    
$isSaved $this->cropImageSaveNew($filepath,$filepathNew);
                }
                else 
                    
$isSaved $this->resizeImageSaveNew($filepath,$filepathNew);
                
                if(
$isSaved == false){
                    
$this->outputImage($filepath);
                    exit();
                }
                    
            }catch(
Exception $e){
                
$this->outputImage($filepath);
            }
                        
            if(
is_file($filepathNew)) 
                
$this->outputImage($filepathNew);
            else 
                
$this->outputImage($filepath);
            
            exit();
        }
        
        
/**
         * 
         * show image from get params
         */
        
public function showImageFromGet(){
            
            
//$imageFilename = UniteFunctionsRev::getGetVar("img");
            
$imageID intval(UniteFunctionsRev::getGetVar("img"));
            
$maxWidth UniteFunctionsRev::getGetVar("w",-1);
            
$maxHeight UniteFunctionsRev::getGetVar("h",-1);
            
$type UniteFunctionsRev::getGetVar("t","");
            
            
//set effect
            
$effect UniteFunctionsRev::getGetVar("e");
            
$effectArgument1 UniteFunctionsRev::getGetVar("ea1");
            
            if(!empty(
$effect))
                
$this->setEffect($effect,$effectArgument1);
            
            
$this->showImageByID($imageID);
            echo 
'sechs<br>';
            
//$this->showImage($imageFilename,$maxWidth,$maxHeight,$type);
        
}
        
        
        
//------------------------------------------------------------------------------------------
        // download image, change size and name if needed.
        
public function downloadImage($filename){
            
$filepath $this->urlImages."/".$filename;
            if(!
is_file($filepath)) {
                echo 
"file doesn't exists";
                exit();
            }
            
            
$this->outputImageForDownload($filepath,$filename);
        }
        
        
//------------------------------------------------------------------------------------------
        // output image for downloading
        
private function outputImageForDownload($filepath,$filename,$mimeType=""){        
            
$contents file_get_contents($filepath);
            
$filesize strlen($contents);
            
            if(
$mimeType == ""){
                
$info UniteFunctionsRev::getPathInfo($filepath);
                
$ext $info["extension"];
                
$mimeType "image/$ext";
            }
            
            
header("Content-Type: $mimeType");    
            
header("Content-Disposition: attachment; filename=\"$filename\"");
            
header("Content-Length: $filesize");        
            echo 
$contents;
            exit();
        }
        
        
        
/**
         * 
         * validate type
         * @param unknown_type $type
         */
        
public function validateType($type){
            switch(
$type){
                case 
self::TYPE_EXACT:
                case 
self::TYPE_EXACT_TOP:                    
                break;
                default:
                    
$this->throwError("Wrong image type: ".$type);
                break;
            }
        }
        
    }

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0156 ]--