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; } } } }
/** * 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; }
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'); }
/** * 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); } } } }
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)); }
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; }
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; } }
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; }
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"); }
<?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']);
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'; } }