Esempio n. 1
0
 public function file($str = '')
 {
     $this->load->library('EncryptionX', array(), 'encryption');
     $this->encryption->key($this->config->item('encryption_key', 'app'));
     $expiryDate = date('D, d M Y H:i:s e', time() + 3600 * 24 * 30);
     header('Cache-Control: max-age=86400');
     header('Expires: ' . $expiryDate);
     $nstr = explode('||', $this->encryption->decode(base64url_decode($str)));
     if (count($nstr) != 5) {
         return show_404();
     }
     $size = $nstr[1] . 'x' . $nstr[2];
     $type = $nstr[3];
     $global = round($nstr[4]);
     $arrf = explode('/', $nstr[0]);
     if (count($arrf) != 3) {
         return show_404();
     }
     $year = $arrf[0];
     $month = $arrf[1];
     $file = $arrf[2];
     $this->load->config('app', TRUE);
     $folder = $this->config->item('uploads-global', 'app');
     if (!$global || !$folder) {
         $folder = $this->config->item('uploads', 'app');
     }
     $date_y = date('Y/m/d', strtotime("-1 day"));
     $filef = "{$folder}thumbs/{$date_y}/{$size}-{$file}";
     $version = $this->config->item('upload-version', 'app') . '.' . date('H');
     $mime = get_mime($filef);
     if ($mime) {
         header("Content-Type: {$mime}");
         readfile($filef);
         exit;
     }
     $date = date('Y/m/d');
     $filef = "{$folder}thumbs/{$date}/{$size}-{$file}";
     $mime = get_mime($filef);
     if ($mime) {
         header("Content-Type: {$mime}");
         readfile($filef);
         exit;
     }
     $thumbFolder = "{$folder}thumbs/{$date}/";
     if (!is_dir($thumbFolder)) {
         mkdir($thumbFolder, 0777, true);
     }
     $this->load->library('image');
     $fileb = "{$folder}{$year}/{$month}/{$file}";
     if (!file_exists($fileb)) {
         return show_404();
     }
     @unlink("{$folder}thumbs/{$date}/{$size}-{$file}");
     $function = $type == 'thumb' ? 'resize' : 'resize_crop';
     $this->image->load($fileb)->set_jpeg_quality(100)->{$function}($nstr[1], $nstr[2])->save("{$folder}thumbs/{$date}/{$size}-{$file}")->clear();
     $mime = get_mime($filef);
     header("Content-Type: {$mime}");
     readfile($filef);
     exit;
 }
 /**
  * 快捷发送一封邮件
  * @param string $to 收件人
  * @param string $sub 邮件主题
  * @param string $msg 邮件内容(HTML)
  * @param array $att 附件,每个键为文件名称,值为附件内容(可以为二进制文件),例如array('a.txt' => 'abcd' , 'b.png' => file_get_contents('x.png'))
  * @return bool 成功:true 失败:错误消息
  */
 public static function mail($to, $sub = '无主题', $msg = '无内容', $att = array())
 {
     if (defined("SAE_MYSQL_DB") && class_exists('SaeMail')) {
         $mail = new SaeMail();
         $options = array('from' => option::get('mail_name'), 'to' => $to, 'smtp_host' => option::get('mail_host'), 'smtp_port' => option::get('mail_port'), 'smtp_username' => option::get('mail_smtpname'), 'smtp_password' => option::get('mail_smtppw'), 'subject' => $sub, 'content' => $msg, 'content_type' => 'HTML');
         $mail->setOpt($options);
         $ret = $mail->send();
         if ($ret === false) {
             return 'Mail Send Error: #' . $mail->errno() . ' - ' . $mail->errmsg();
         } else {
             return true;
         }
     } else {
         $From = option::get('mail_name');
         if (option::get('mail_mode') == 'SMTP') {
             $Host = option::get('mail_host');
             $Port = intval(option::get('mail_port'));
             $SMTPAuth = (bool) option::get('mail_auth');
             $Username = option::get('mail_smtpname');
             $Password = option::get('mail_smtppw');
             $Nickname = option::get('mail_yourname');
             if (option::get('mail_ssl') == '1') {
                 $SSL = true;
             } else {
                 $SSL = false;
             }
             $mail = new SMTP($Host, $Port, $SMTPAuth, $Username, $Password, $SSL);
             $mail->att = $att;
             if ($mail->send($to, $From, $sub, $msg, $Nickname)) {
                 return true;
             } else {
                 return $mail->log;
             }
         } else {
             $name = option::get('mail_yourname');
             $mail = new PHPMailer();
             $mail->setFrom($From, $name);
             $mail->addAddress($to);
             $mail->Subject = $sub;
             $mail->msgHTML($msg);
             $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
             foreach ($att as $n => $d) {
                 $mail->addStringAttachment($d, "=?UTF-8?B?" . base64_encode($n) . "?=", 'base64', get_mime(get_extname($n)));
             }
             if (!$mail->send()) {
                 return $mail->ErrorInfo;
             } else {
                 return true;
             }
         }
     }
 }
Esempio n. 3
0
 /**
  * Retrieves media file and info from either a URL or localpath
  *
  * @param string  $filepath     The URL or path to the mediafile you wish to send
  * @param integer $maxsizebytes The maximum size in bytes the media file can be. Default 5MB
  *
  * @return bool  false if file information can not be obtained.
  */
 protected function getMediaFile($filepath, $maxsizebytes = 5242880)
 {
     if (filter_var($filepath, FILTER_VALIDATE_URL) !== false) {
         $this->mediaFileInfo = array();
         $this->mediaFileInfo['url'] = $filepath;
         $media = file_get_contents($filepath);
         $this->mediaFileInfo['filesize'] = strlen($media);
         if ($this->mediaFileInfo['filesize'] < $maxsizebytes) {
             $this->mediaFileInfo['filepath'] = tempnam(__DIR__ . DIRECTORY_SEPARATOR . Constants::DATA_FOLDER . DIRECTORY_SEPARATOR . Constants::MEDIA_FOLDER, 'WHA');
             file_put_contents($this->mediaFileInfo['filepath'], $media);
             $this->mediaFileInfo['filemimetype'] = get_mime($this->mediaFileInfo['filepath']);
             $this->mediaFileInfo['fileextension'] = getExtensionFromMime($this->mediaFileInfo['filemimetype']);
             return true;
         } else {
             return false;
         }
     } else {
         if (file_exists($filepath)) {
             //Local file
             $this->mediaFileInfo['filesize'] = filesize($filepath);
             if ($this->mediaFileInfo['filesize'] < $maxsizebytes) {
                 $this->mediaFileInfo['filepath'] = $filepath;
                 $this->mediaFileInfo['fileextension'] = pathinfo($filepath, PATHINFO_EXTENSION);
                 $this->mediaFileInfo['filemimetype'] = get_mime($filepath);
                 return true;
             } else {
                 return false;
             }
         }
     }
     return false;
 }
 /**
  * Retrieves media file and info from either a URL or localpath
  *
  * @param string  $filepath     The URL or path to the mediafile you wish to send
  * @param integer $maxsizebytes The maximum size in bytes the media file can be. Default 1MB
  *
  * @return bool  false if file information can not be obtained.
  */
 protected function getMediaFile($filepath, $maxsizebytes = 1048576)
 {
     if (filter_var($filepath, FILTER_VALIDATE_URL) !== false) {
         $this->mediaFileInfo = array();
         $this->mediaFileInfo['url'] = $filepath;
         //File is a URL. Create a curl connection but DON'T download the body content
         //because we want to see if file is too big.
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, "{$filepath}");
         curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11");
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_setopt($curl, CURLOPT_NOBODY, true);
         if (curl_exec($curl) === false) {
             return false;
         }
         //While we're here, get mime type and filesize and extension
         $info = curl_getinfo($curl);
         $this->mediaFileInfo['filesize'] = $info['download_content_length'];
         $this->mediaFileInfo['filemimetype'] = $info['content_type'];
         $this->mediaFileInfo['fileextension'] = pathinfo(parse_url($this->mediaFileInfo['url'], PHP_URL_PATH), PATHINFO_EXTENSION);
         //Only download file if it's not too big
         //TODO check what max file size whatsapp server accepts.
         if ($this->mediaFileInfo['filesize'] < $maxsizebytes) {
             //Create temp file in media folder. Media folder must be writable!
             $this->mediaFileInfo['filepath'] = tempnam(getcwd() . '/' . static::MEDIA_FOLDER, 'WHA');
             $fp = fopen($this->mediaFileInfo['filepath'], 'w');
             if ($fp) {
                 curl_setopt($curl, CURLOPT_NOBODY, false);
                 curl_setopt($curl, CURLOPT_BUFFERSIZE, 1024);
                 curl_setopt($curl, CURLOPT_FILE, $fp);
                 curl_exec($curl);
                 fclose($fp);
             } else {
                 unlink($this->mediaFileInfo['filepath']);
                 curl_close($curl);
                 return false;
             }
             //Success
             curl_close($curl);
             return true;
         } else {
             //File too big. Don't Download.
             curl_close($curl);
             return false;
         }
     } else {
         if (file_exists($filepath)) {
             //Local file
             $this->mediaFileInfo['filesize'] = filesize($filepath);
             if ($this->mediaFileInfo['filesize'] < $maxsizebytes) {
                 $this->mediaFileInfo['filepath'] = $filepath;
                 $this->mediaFileInfo['fileextension'] = pathinfo($filepath, PATHINFO_EXTENSION);
                 $this->mediaFileInfo['filemimetype'] = get_mime($filepath);
                 return true;
             } else {
                 //File too big
                 return false;
             }
         }
     }
     //Couldn't tell what file was, local or URL.
     return false;
 }
Esempio n. 5
0
 public function info($file, $type = null)
 {
     if (!is_dir($this->storagePath)) {
         throw new Exception('Tmp path for media not setting up. Provide one.');
     }
     $media = new stdClass();
     $size = $this->getMaxMediaSizeAllowed($type);
     if (filter_var($file, FILTER_VALIDATE_URL) !== false) {
         $media->url = $file;
         //File is a URL. Create a curl connection but DON'T download the body content
         //because we want to see if file is too big.
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $file);
         curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11');
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_setopt($curl, CURLOPT_NOBODY, true);
         if (curl_exec($curl) === false) {
             throw new Exception('File ' . $file . ' can\'t be downloaded.');
         }
         //While we're here, get mime type and filesize and extension
         $info = curl_getinfo($curl);
         $media->filesize = $info['download_content_length'];
         $media->filemimetype = $info['content_type'];
         $media->fileextension = pathinfo(parse_url($media->url, PHP_URL_PATH), PATHINFO_EXTENSION);
         //Only download file if it's not too big
         //TODO check what max file size whatsapp server accepts.
         if ($media->filesize < $size) {
             //Create temp file in media folder. Media folder must be writable!
             $media->file = $this->storagePath . 'tmp/' . 'WHA-' . str_replace('.', '', microtime(true)) . '-' . substr(md5(rand()), 0, 6) . '.' . $media->fileextension;
             $fp = fopen($media->file, 'w');
             if ($fp) {
                 curl_setopt($curl, CURLOPT_NOBODY, false);
                 curl_setopt($curl, CURLOPT_BUFFERSIZE, 1024);
                 curl_setopt($curl, CURLOPT_FILE, $fp);
                 curl_exec($curl);
                 fclose($fp);
             }
             //Success
             curl_close($curl);
             return $media;
         } else {
             //File too big. Don't Download.
             curl_close($curl);
             throw new Exception('File ' . $file . ' too big. Don\'t Download.');
         }
     } else {
         if (file_exists($file)) {
             //Local file
             $media->filesize = filesize($file);
             if ($media->filesize < $size) {
                 $media->file = $file;
                 $media->fileextension = pathinfo($file, PATHINFO_EXTENSION);
                 $media->filemimetype = get_mime($file);
                 return $media;
             } else {
                 //File too big
                 throw new Exception('Local File ' . $file . ' too big');
             }
         }
     }
     //Couldn't tell what file was, local or URL.
     throw new Exception('Couldn\'t tell what file was, local or URL');
 }
Esempio n. 6
0
/**
 *	Get a file from a temporary (working) repository
 *	@param $param[1] temporary repository
 *	@param $param[2] filename
 *	@param $param['format'] "download", "json" or "raw" (default)
 */
function api_get_temp_file($param = array())
{
    $temp = $param[1];
    $fn = $param[2];
    if (strpos($fn, '../') !== false) {
        // thwart possible attempts to get to files outside of the content directory
        router_error_400('Illegal filename ' . $fn . ' for ' . $temp);
    } else {
        $path = tmp_dir($temp) . '/' . $fn;
    }
    if (!@is_file($path)) {
        router_error_404('Cannot get file ' . $fn . ' in ' . $temp);
    }
    if (isset($param['format'])) {
        $format = $param['format'];
    } else {
        $format = 'raw';
    }
    if ($format === 'download') {
        // force browser to download
        @header('Content-Type: application/octet-stream');
        @header('Content-Disposition: attachment; filename="' . basename($fn) . '"');
        @header('Content-Length: ' . @filesize($path));
        @readfile($path);
        die;
    } else {
        if ($format === 'json') {
            // serve base64-encoded
            return array('fn' => $fn, 'mime' => get_mime($path), 'data' => base64_encode(@file_get_contents($path)));
        } else {
            if ($format === 'raw') {
                // serve with proper MIME type
                $mime = get_mime($path);
                @header('Content-Type: ' . $mime);
                @header('Content-Length: ' . @filesize($path));
                // HACK: add a <base> element to the <head> of any HTML page passing through
                // XXX (later): make this configurable via a $param
                if ($mime !== 'text/html') {
                    @readfile($path);
                } else {
                    $html = @file_get_contents($path);
                    // XXX (later): use mod_rewrite instead of linking to the content dir directly (api.php?... does not work)
                    $base = base_url() . tmp_dir($temp) . '/';
                    $html = str_replace('<head>', '<head>' . "\n" . '<base href="' . $base . '"></base>', $html);
                    echo $html;
                }
                die;
            } else {
                router_error_400('Unsupported format ' . $format);
            }
        }
    }
}
Esempio n. 7
0
function load_work($name, $resolve_references = true)
{
    $s = @file_get_contents(content_dir() . '/' . $name . '/meta.txt');
    if ($s === false) {
        return false;
    }
    $work = @json_decode($s, true);
    if (is_null($work)) {
        // be vocal about error
        echo 'Error decoding ' . $name . '/meta.txt';
        if (function_exists(json_last_error_msg())) {
            echo ': ' . json_last_error_msg();
        }
        echo '. Try validating the file with http://jsonlint.com/.';
        exit(1);
    } else {
        if (!is_array($work)) {
            echo 'Error decoding ' . $name . '/meta.txt: Not an object.';
            exit(2);
        }
    }
    /* set name */
    $work['name'] = $name;
    /* set description */
    $s = @file_get_contents(content_dir() . '/' . $name . '/description.html');
    if ($s !== false) {
        $work['description'] = $s;
    } else {
        $work['description'] = '';
    }
    /* normalize all other fields */
    $work = normalize_work($work, $resolve_references);
    // XXX: not necessary for !resolve_references
    $media = load_media($name);
    if ($media !== false) {
        $work['media'] = $media;
    } else {
        $work['media'] = array();
    }
    // XXX: as above
    $work['primary_representation'] = null;
    $fns = @scandir(content_dir() . '/' . $name);
    foreach ($fns as $fn) {
        if (in_array($fn, array('.', '..', 'description.html', 'meta.txt'))) {
            continue;
        }
        if (substr($fn, 0, 1) === '_') {
            continue;
        }
        if (!@is_file(content_dir() . '/' . $name . '/' . $fn)) {
            // not a file
            continue;
        }
        $full_fn = $name . '/' . $fn;
        // check mime type
        $mime = get_mime(content_dir() . '/' . $full_fn);
        if (!in_array(explode('/', $mime)[0], array('image', 'video'))) {
            // only accept images and videos
            continue;
        }
        $media = array('url' => 'JODI/' . $full_fn, 'fn' => $fn, 'description' => '', 'mime' => get_mime(content_dir() . '/' . $full_fn));
        // load image dimensions
        if (explode('/', $media['mime'])[0] === 'image') {
            $media = array_merge($media, get_image_size(content_dir() . '/' . $full_fn));
        }
        $work['primary_representation'] = $media;
    }
    return $work;
}
function ws_images_addRemote($params, &$service)
{
    global $conf;
    if (!is_admin()) {
        return new PwgError(401, 'Access denied');
    }
    load_language('plugin.lang', URLUPLOADER_PATH);
    $params = array_map('trim', $params);
    $allowed_extensions = array('jpg', 'jpeg', 'png', 'gif');
    $allowed_mimes = array('image/jpeg', 'image/png', 'image/gif');
    // check empty url
    if (empty($params['file_url'])) {
        return new PwgError(WS_ERR_INVALID_PARAM, l10n('File URL is empty'));
    }
    // check remote url
    if (!url_is_remote($params['file_url'])) {
        return new PwgError(WS_ERR_INVALID_PARAM, l10n('Invalid file URL'));
    }
    // check file extension
    if (!in_array(strtolower(get_extension($params['file_url'])), $allowed_extensions)) {
        return new PwgError(WS_ERR_INVALID_PARAM, l10n('Invalid file type'));
    }
    // download file
    include_once PHPWG_ROOT_PATH . 'admin/include/functions.php';
    $temp_filename = $conf['data_location'] . basename($params['file_url']);
    $file = fopen($temp_filename, 'w+');
    $result = fetchRemote($params['file_url'], $file);
    fclose($file);
    // download failed ?
    if (!$result) {
        @unlink($temp_filename);
        return new PwgError(WS_ERR_INVALID_PARAM, l10n('Unable to download file'));
    }
    // check mime-type
    if (!in_array(get_mime($temp_filename, $allowed_mimes[0]), $allowed_mimes)) {
        @unlink($temp_filename);
        return new PwgError(WS_ERR_INVALID_PARAM, l10n('Invalid file type'));
    }
    // add photo
    include_once PHPWG_ROOT_PATH . 'admin/include/functions_upload.inc.php';
    $image_id = add_uploaded_file($temp_filename, basename($temp_filename), array($params['category']), $params['level']);
    $updates = array();
    if (!empty($params['name'])) {
        $updates['name'] = $params['name'];
    }
    if ($params['url_in_comment'] == 'true') {
        $url = parse_url($params['file_url']);
        $url = $url['scheme'] . '://' . $url['host'];
        $updates['comment'] = '<a href="' . $url . '">' . $url . '</a>';
    }
    single_update(IMAGES_TABLE, $updates, array('id' => $image_id));
    // return infos
    $query = '
SELECT id, name, permalink
  FROM ' . CATEGORIES_TABLE . '
  WHERE id = ' . $params['category'] . '
;';
    $category = pwg_db_fetch_assoc(pwg_query($query));
    $url_params = array('image_id' => $image_id, 'section' => 'categories', 'category' => $category);
    $query = '
SELECT id, path, name
  FROM ' . IMAGES_TABLE . '
  WHERE id = ' . $image_id . '
;';
    $image_infos = pwg_db_fetch_assoc(pwg_query($query));
    $query = '
SELECT
    COUNT(*) AS nb_photos
  FROM ' . IMAGE_CATEGORY_TABLE . '
  WHERE category_id = ' . $params['category'] . '
;';
    $category_infos = pwg_db_fetch_assoc(pwg_query($query));
    $category_name = get_cat_display_name_from_id($params['category'], null);
    return array('image_id' => $image_id, 'url' => make_picture_url($url_params), 'src' => DerivativeImage::thumb_url($image_infos), 'name' => $image_infos['name'], 'category' => array('id' => $params['category'], 'nb_photos' => $category_infos['nb_photos'], 'label' => $category_name));
}
Esempio n. 9
0
 public function file($str = '')
 {
     ini_set('memory_limit', '512M');
     $expiryDate = date('D, d M Y H:i:s e', time() + 3600 * 24 * 30);
     header('Cache-Control: max-age=86400');
     header('Expires: ' . $expiryDate);
     $nstr = explode('||', $this->encryption->decode($str));
     if (count($nstr) != 5) {
         return show_404();
     }
     $size = $nstr[1] . 'x' . $nstr[2];
     $type = $nstr[3];
     $global = round($nstr[4]);
     $arrf = explode('/', $nstr[0]);
     if (count($arrf) != 3) {
         return show_404();
     }
     $year = $arrf[0];
     $month = $arrf[1];
     $file = $arrf[2];
     $fileX = $year . $month . '_' . $file;
     $this->load->config('app', TRUE);
     $folder = $this->config->item('uploads-global', 'app');
     if (!$global || !$folder) {
         $folder = $this->config->item('uploads', 'app');
     }
     $date_y = date('Y/m/d', strtotime("-1 day"));
     $filef = "{$folder}thumbs/{$date_y}/{$size}-{$fileX}";
     $version = $this->config->item('upload-version', 'app') . '.' . date('H');
     $mime = get_mime($filef);
     if ($mime) {
         header("Content-Type: {$mime}");
         readfile($filef);
         exit;
     }
     $date = date('Y/m/d');
     $filef = "{$folder}thumbs/{$date}/{$size}-{$fileX}";
     $mime = get_mime($filef);
     if ($mime) {
         header("Content-Type: {$mime}");
         readfile($filef);
         exit;
     }
     /*@chown("{$folder}thumbs/", 'nobody');
       @system("chown -R nobody {$folder}thumbs");*/
     $thumbFolder = "{$folder}thumbs/{$date}/";
     if (!is_dir($thumbFolder)) {
         $mask = umask(0);
         mkdir($thumbFolder, 0777, true);
         umask($mask);
         chmod("{$folder}thumbs/{$date}", 0777);
         #chown("{$folder}thumbs/{$date}", 'nobody');
     }
     $this->load->library('image');
     $fileb = "{$folder}{$year}/{$month}/{$file}";
     if (!file_exists($fileb)) {
         return show_404();
     }
     @unlink("{$folder}thumbs/{$date}/{$size}-{$fileX}");
     $function = $type == 'thumb' ? 'resize' : 'resize_crop';
     $this->image->load($fileb)->set_jpeg_quality(100)->{$function}($nstr[1], $nstr[2])->save("{$folder}thumbs/{$date}/{$size}-{$fileX}")->clear();
     $mime = get_mime($filef);
     header("Content-Type: {$mime}");
     readfile($filef);
     exit;
 }
Esempio n. 10
0
 public function redirect($type = '')
 {
     if ($type == '7dias-cover') {
         $active = round(date('W'));
         $day = round(date('N'));
         $hour = round(date('H'));
         if ($day == 7 && $hour < 10) {
             $active--;
         }
         $file = "data/uploads/7dias/{$active}.jpg";
         $filePath = ROOTPATH . "data/uploads/7dias/{$active}.jpg";
         if (!file_exists($filePath)) {
             $dir = ROOTPATH . "data/uploads/7dias/";
             $fileT = false;
             $timeT = 0;
             if ($handle = opendir($dir)) {
                 while (($file = readdir($handle)) !== FALSE) {
                     if ($file == '.' || $file == '..') {
                         continue;
                     }
                     $time = filemtime($dir . $file);
                     if ($timeT < $time) {
                         $timeT = $time;
                         $fileT = $file;
                     }
                 }
                 closedir($handle);
             }
             $file = "data/uploads/7dias/{$fileT}";
             $filePath = ROOTPATH . $file;
         }
         $mime = get_mime($filePath);
         header("Content-Type: {$mime}");
         readfile($filePath);
         return;
     }
 }
Esempio n. 11
0
 public function file($str = '')
 {
     $nstr = explode('||', $this->encryption->decode($str));
     if (count($nstr) != 4) {
         exit;
     }
     $fileb = $nstr[0];
     $filef = $nstr[0];
     header('Cache-control: max-age=' . 60 * 60 * 24 * 365);
     header('Expires: ' . gmdate(DATE_RFC1123, time() + 60 * 60 * 24 * 365));
     header('Pragma: public');
     session_cache_limiter('none');
     if (base_url() == 'http://localhost/infonews/v3/') {
         if (strpos($filef, "advf/imagenes/") === FALSE) {
             return redirect("http://static.grupo23.com/{$filef}");
         }
         if (!file_exists($filef) || !filesize($filef)) {
             $dir = explode('/', $filef);
             $name = array_pop($dir);
             $dir = FCPATH . implode('/', $dir);
             if (!file_exists($dir)) {
                 mkdir($dir, 0777, true);
             }
             @file_put_contents(FCPATH . $filef, @file_get_contents("http://www.infonews.com/{$filef}"));
         }
     }
     if (strpos($filef, "advf/imagenes/") === FALSE) {
         return redirect("http://static.grupo23.com/{$filef}");
     }
     /*$filef = FCPATH . $filef; 
       if(strpos($filef, "advf/imagenes/") === FALSE)
       {
         if(file_exists($filef) && filesize($filef)) 
         {    
           $mime = get_mime($filef);
           header("Content-Type: {$mime}");
           readfile($filef);
           return;
         }
         return redirect("http://static.grupo23.com/{$filef}");
       }*/
     if (!file_exists($filef) || !filesize($filef)) {
         return redirect("http://static.grupo23.com/{$filef}");
     }
     $size = $nstr[1] . 'x' . $nstr[2];
     $type = $nstr[3];
     $arrf = explode('/', str_replace('advf/imagenes/', '', $nstr[0]));
     if ($arrf[0] == 'editadas') {
         $base = $arrf[0];
         $fileSource = $arrf[1];
         $file = $base . '-' . $fileSource;
     } else {
         $year = $arrf[0];
         $month = $arrf[1];
         $fileSource = $arrf[2];
         $file = $year . '-' . $month . '-' . $fileSource;
     }
     $function = $type == 'thumb' ? 'resize' : 'resize_crop';
     $widthX = $width = $nstr[1];
     $heightX = $height = $nstr[2];
     if ($type == 'thumb') {
         $size = getimagesize($filef);
         $width = $size[0];
         $height = $size[1];
         $max = $widthX;
         if ($heightX > $max) {
             $max = $heightX;
         }
         if ($width != $height) {
             if ($width > $height) {
                 $t_height = $max;
                 $t_width = round($width * $t_height / $height);
             } else {
                 $t_width = $max;
                 $t_height = round($t_width * $height / $width);
             }
         } else {
             $t_width = $t_height = $max;
         }
         $width = $t_width;
         $height = $t_height;
     }
     $size = "{$width}x{$height}";
     $date_y = date('Y/m/d', strtotime("-1 day"));
     $filefT = FCPATH . "thumbs/{$date_y}/{$size}-{$file}";
     $this->load->config('app', TRUE);
     $version = $this->config->item('upload-version', 'app') . '.' . date('H');
     if (file_exists($filefT) && filesize($filefT)) {
         $mime = get_mime($filefT);
         header("Content-Type: {$mime}");
         readfile($filefT);
         return;
     }
     $date = date('Y/m/d');
     $filefT = FCPATH . "thumbs/{$date}/{$size}-{$file}";
     if (file_exists($filefT) && filesize($filefT)) {
         $mime = get_mime($filefT);
         header("Content-Type: {$mime}");
         readfile($filefT);
         return;
     }
     $thumbFolder = FCPATH . "thumbs/{$date}/";
     if (!is_dir($thumbFolder)) {
         mkdir($thumbFolder, 0777, true);
     }
     $this->load->library('image');
     if (!file_exists($filef) || !filesize($filef)) {
         die('FILE NOT FOUND');
     }
     @unlink(FCPATH . "thumbs/{$date}/{$size}-{$file}");
     /*if($type == 'thumb')
       {
         $size = getimagesize($filef);
         $width = $size[0];
         $height = $size[1];
         if($width != $height){
             if($width < $height){
                 $max = $heightX;
                 $t_height = $max;
                 $t_width = round(($width * $t_height)/$height);
             }
             else
             {
                 $max = $widthX;
                 $t_width = $max;
                 $t_height = round(($t_width * $height)/$width);
             }
         }else{
                 $t_width = $t_height = $widthX;
         }
         $width = $t_width;
         $height = $t_height;
       }*/
     $filefT = FCPATH . "thumbs/{$date}/{$size}-{$file}";
     @unlink($filefT);
     $this->image->load($filef)->set_jpeg_quality(100)->{$function}($width, $height)->save($filefT)->clear();
     $mime = get_mime($filef);
     header("Content-Type: {$mime}");
     if (!file_exists($filefT) || !filesize($filefT)) {
         die('FILE NOT FOUND');
     }
     readfile($filefT);
     return;
 }
Esempio n. 12
0
 private function smtp_sendatt()
 {
     $head = '';
     foreach ($this->att as $n => $v) {
         $head .= "\r\n\r\n" . '--' . $this->part_boundary;
         $head .= "\r\n" . 'Content-Type: ' . get_mime(get_extname($n)) . '; charset="utf-8"; name="' . $n . '"';
         $head .= "\r\n" . 'Content-Disposition: attachment; filename="' . $n . '"';
         $head .= "\r\n" . 'Content-Transfer-Encoding: base64';
         $head .= "\r\n\r\n" . base64_encode($v);
     }
     return fputs($this->sock, $head . "\r\n");
 }
Esempio n. 13
0
<?php

require_once "GetMime.php";
function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
header("Content-disposition: attachment; " . $_GET['fname']);
header("Content-type: " . get_mime($_GET['fname']));
echo get_data($_GET['path']);
Esempio n. 14
0
 function __construct($valid_request)
 {
     global $lang, $Login, $dB;
     @session_start();
     // Redirect plain /admin/index.php access
     if (preg_match('/index\\.php/', $_SERVER['REQUEST_URI'])) {
         $this->redirect($this->base_redirection($this->root_url), 301);
     }
     $admin_request = sanitize_path(str_replace(sanitize_path(__CHV_FOLDER_ADMIN__), "", str_replace(sanitize_path(__CHV_RELATIVE_ROOT__) . '/', "", $valid_request)));
     // json?blabla instead of (folder?)/admin/json?blabla
     $this->request_array = explode('/', $admin_request);
     $request_file = str_replace('//', '/', __CHV_ROOT_DIR__ . str_replace(__CHV_RELATIVE_ROOT__ == '/' ? '' : __CHV_RELATIVE_ROOT__, '', $_SERVER['REQUEST_URI']));
     // Serve the static file or call the handler?
     if (file_exists($request_file) and !is_dir($request_file) and !preg_match('/php/', get_mime($request_file)) and trim($_SERVER['REQUEST_URI'], '/') !== trim(dirname($_SERVER['SCRIPT_NAME']), '/')) {
         error_reporting(0);
         header('Content-Type: ' . get_mime($request_file) . '; Cache-Control: no-cache; Pragma: no-cache');
         die(readfile($request_file));
     }
     // Now, deny all direct access to the other resources
     if ((file_exists($request_file) or is_dir($request_file)) and trim($_SERVER['REQUEST_URI'], '/') !== trim(dirname($_SERVER['SCRIPT_NAME']), '/') and !$Login->is_admin()) {
         status_header(403);
         die('Forbidden');
     }
     // Organize the source request
     $request_array_explode = explode('?', $this->request_array[0]);
     $request_base = $request_array_explode[0];
     // Now, lets do sub request according to the base request
     switch ($request_base) {
         case '':
             break;
             // admin main
         // admin main
         case 'json':
             json_prepare();
             // Do a special trick for the json action=login
             if ($_REQUEST['action'] !== 'login' and !is_admin()) {
                 $json_array = array('status_code' => 401, 'status_txt' => 'unauthorized');
             } elseif ($_REQUEST['action'] == 'login') {
                 // Check for admin match...
                 $login_user = login_user($_REQUEST['password'], $_REQUEST['keep']);
                 if ($login_user == 'admin') {
                     $json_array = array('status_code' => 200, 'status_txt' => 'logged in');
                 } else {
                     $json_array = array('status_code' => 403, 'status_txt' => 'invalid login');
                 }
             } elseif ($_REQUEST['action'] == 'logout') {
                 do_logout();
                 $json_array = array('status_code' => 200, 'status_txt' => 'logged out');
             } elseif ($_REQUEST['action'] == 'filelist') {
                 require_once __CHV_PATH_CLASSES__ . 'class.filelist.php';
                 $filelist = new FileList($_REQUEST['type'], $_REQUEST['sort'], $_REQUEST['limit'], $_REQUEST['keyword']);
                 $json_array = $filelist->filelist;
             } elseif ($_REQUEST['action'] == 'uploaded') {
                 // In some point there will be a stats class that will help us to output all the stats. This is just the number of uploaded files now.
                 $json_array = array('total' => total_images_uploaded());
                 // The rest of the actions are for the manage class (delete|rename|resize)
             } else {
                 require_once __CHV_PATH_ADMIN_CLASSES__ . 'class.manage.php';
                 $manage = new Manage($_REQUEST);
                 if ($manage->dead) {
                     $json_array = array('status_code' => 403, 'status_txt' => $manage->error);
                 } else {
                     $json_array = $manage->process();
                 }
             }
             $json_array = check_value($json_array) ? $json_array : array('status_code' => 403, 'status_txt' => 'empty json');
             die(json_output($json_array));
             break;
             // json
         // json
         default:
             if (is_admin()) {
                 status_header(404);
                 die('Not found');
             } else {
                 status_header(403);
                 die('Forbidden');
             }
             break;
     }
     // Send the OK status header
     status_header(200);
     if (!is_admin()) {
         $doctitle = get_lang_txt('txt_enter_password') . ' - Chevereto File Manager';
         require_once __CHV_PATH_SYSTEM__ . 'login.php';
     } else {
         require_once __CHV_PATH_ADMIN_SYSTEM__ . 'header.php';
         require_once __CHV_PATH_ADMIN_SYSTEM__ . 'filemanager.php';
     }
 }