From 41c5abd4e8849e6a84ed2af405e9c25a74e018f3 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 22 Sep 2013 17:09:57 +0200 Subject: Move user_logged_in check to controller constructor TL;DR: Allows us to show a proper error page if encryption_key is missing from the config. muser->logged_in() can load the session class which will die if encryption_key is not set in the config causing an error to be displayed. Because the header is also loaded when we display an error loading the class will be tried again. CI maintains an array with information which classes have been tried to be loaded and will simply return true without loading again. muser->logged_in() will then try to access $this->session which doesn't exist. Since all of this happens when we are already in the header the error message appears in the navigation being hard to read. Signed-off-by: Florian Pritz --- application/helpers/filebin_helper.php | 7 ------- 1 file changed, 7 deletions(-) (limited to 'application/helpers/filebin_helper.php') diff --git a/application/helpers/filebin_helper.php b/application/helpers/filebin_helper.php index bed696c8c..6e4c84e43 100644 --- a/application/helpers/filebin_helper.php +++ b/application/helpers/filebin_helper.php @@ -323,13 +323,6 @@ function auth_driver_function_implemented($function) return $result[$function]; } -function user_logged_in() -{ - $CI =& get_instance(); - $CI->load->model("muser"); - return $CI->muser->logged_in(); -} - function send_json_reply($array, $status = "success") { $reply = array(); -- cgit v1.2.3-24-g4f1b From 635b0717931df907ee8015a42ad0ed1fcdf967c4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Mon, 23 Sep 2013 07:47:40 +0200 Subject: Implement rangeDownload() as driver and provide sendfile implementations for Nginx and Lighttpd * The rangeDownload() function has been moved to libraries/Ddownload/drivers/Ddownload_php.php * The nginx and lighttpd drivers can be set via $config['download_driver'] Signed-off-by: Pierre Schmitz --- application/helpers/filebin_helper.php | 99 ---------------------------------- 1 file changed, 99 deletions(-) (limited to 'application/helpers/filebin_helper.php') diff --git a/application/helpers/filebin_helper.php b/application/helpers/filebin_helper.php index 6e4c84e43..71ce7e6ca 100644 --- a/application/helpers/filebin_helper.php +++ b/application/helpers/filebin_helper.php @@ -20,105 +20,6 @@ function format_bytes($size) } } -// Original source: http://www.phpfreaks.com/forums/index.php?topic=198274.msg895468#msg895468 -function rangeDownload($file, $filename, $type) -{ - $fp = @fopen($file, 'r'); - - $size = filesize($file); // File size - $length = $size; // Content length - $start = 0; // Start byte - $end = $size - 1; // End byte - // Now that we've gotten so far without errors we send the accept range header - /* At the moment we only support single ranges. - * Multiple ranges requires some more work to ensure it works correctly - * and comply with the spesifications: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2 - * - * Multirange support annouces itself with: - * header('Accept-Ranges: bytes'); - * - * Multirange content must be sent with multipart/byteranges mediatype, - * (mediatype = mimetype) - * as well as a boundry header to indicate the various chunks of data. - */ - header("Accept-Ranges: 0-$length"); - // header('Accept-Ranges: bytes'); - // multipart/byteranges - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2 - if (isset($_SERVER['HTTP_RANGE'])) - { - $c_start = $start; - $c_end = $end; - // Extract the range string - list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); - // Make sure the client hasn't sent us a multibyte range - if (strpos($range, ',') !== false) - { - // (?) Shoud this be issued here, or should the first - // range be used? Or should the header be ignored and - // we output the whole content? - header('HTTP/1.1 416 Requested Range Not Satisfiable'); - header("Content-Range: bytes $start-$end/$size"); - // (?) Echo some info to the client? - exit; - } - // If the range starts with an '-' we start from the beginning - // If not, we forward the file pointer - // And make sure to get the end byte if spesified - if ($range{0} == '-') - { - // The n-number of the last bytes is requested - $c_start = $size - substr($range, 1); - } - else - { - $range = explode('-', $range); - $c_start = $range[0]; - $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; - } - /* Check the range and make sure it's treated according to the specs. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - */ - // End bytes can not be larger than $end. - $c_end = ($c_end > $end) ? $end : $c_end; - // Validate the requested range and return an error if it's not correct. - if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) - { - header('HTTP/1.1 416 Requested Range Not Satisfiable'); - header("Content-Range: bytes $start-$end/$size"); - // (?) Echo some info to the client? - exit; - } - $start = $c_start; - $end = $c_end; - $length = $end - $start + 1; // Calculate new content length - fseek($fp, $start); - header('HTTP/1.1 206 Partial Content'); - // Notify the client the byte range we'll be outputting - header("Content-Range: bytes $start-$end/$size"); - } - header("Content-Length: $length"); - header("Content-disposition: inline; filename=\"".$filename."\"\n"); - header("Content-Type: ".$type."\n"); - - // Start buffered download - $buffer = 1024 * 8; - while(!feof($fp) && ($p = ftell($fp)) <= $end) - { - if ($p + $buffer > $end) - { - // In case we're only outputtin a chunk, make sure we don't - // read past the length - $buffer = $end - $p + 1; - } - set_time_limit(0); // Reset time limit for big files - echo fread($fp, $buffer); - flush(); // Free up memory. Otherwise large files will trigger PHP's memory limit. - } - - fclose($fp); -} - function even_odd($reset = false) { static $counter = 1; -- cgit v1.2.3-24-g4f1b