diff --git a/do.php b/do.php
index 2215d23..2b25cb8 100755
--- a/do.php
+++ b/do.php
@@ -396,7 +396,7 @@ elseif (ig('down') || ig('downf') ||
//download process
$path_file = ig('thmb') || ig('thmbf') ? "./{$f}/thumbs/{$n}" : "./{$f}/{$n}";
$chunksize = 8192;
- $resuming_on = true;
+ $resuming_on = $config['enable_multipart'] == 1;
is_array($plugin_run_result = Plugins::getInstance()->run('down_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
@@ -528,20 +528,29 @@ elseif (ig('down') || ig('downf') ||
//}
//add multipart download and resume support
- if (isset($_SERVER['HTTP_RANGE']) && $resuming_on)
+ if (isset($_SERVER['HTTP_RANGE']))
{
- list($a, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
- list($range) = explode(',', $range, 2);
- list($range, $range_end) = explode('-', $range, 2);
- $range = round(floatval($range), 0);
- $range_end = ! $range_end ? $size - 1 : round(floatval($range_end), 0);
-
- $partial_length = $range_end - $range + 1;
- header('HTTP/1.1 206 Partial Content');
- header("Content-Length: $partial_length");
- header('Content-Range: bytes ' . ($range - $range_end / $size));
-
- fseek($fp, $range);
+ if ($resuming_on)
+ {
+ list($a, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
+ list($range) = explode(',', $range, 2);
+ list($range, $range_end) = explode('-', $range, 2);
+ $range = round(floatval($range), 0);
+ $range_end = ! $range_end ? $size - 1 : round(floatval($range_end), 0);
+
+ $partial_length = $range_end - $range + 1;
+ header('HTTP/1.1 206 Partial Content');
+ header("Content-Length: $partial_length");
+ header("Content-Range: bytes $range-$range_end/$size");
+
+ fseek($fp, $range);
+ }
+ else
+ {
+ // Respond with a 416 Range Not Satisfiable
+ header('HTTP/1.1 416 Range Not Satisfiable');
+ exit;
+ }
}
else
{
@@ -556,6 +565,9 @@ elseif (ig('down') || ig('downf') ||
//read and output the file in chunks
while (! feof($fp) && (! connection_aborted()) && ($bytes_sent < $partial_length))
{
+ if ($chunksize > ($partial_length - $bytes_sent)) {
+ $chunksize = $partial_length - $bytes_sent;
+ }
$buffer = fread($fp, $chunksize);
print($buffer);
flush();
diff --git a/install/includes/default_values.php b/install/includes/default_values.php
index 4508604..a348349 100755
--- a/install/includes/default_values.php
+++ b/install/includes/default_values.php
@@ -60,6 +60,7 @@ $config_values[] = ['thumbs_imgs', '1', '{lang.YES} checked=\"checked\" />\r\n \r\n \r\n ', 28, 'groups', 0, 0];
$config_values[] = ['livexts', 'swf', '{lang.COMMA_X}', '29', 'upload', 0, 0];
$config_values[] = ['usersectoupload', '10', '', 44, 'groups', 0, 0];
+$config_values[] = ['enable_multipart', '1' , '\r\n ', 45, 'groups', 0, 0];
$config_values[] = ['filesnum_show', '1', '\r\n ', 22, 'upload', 0, 0];
//KLIVE
diff --git a/lang/ar/acp.php b/lang/ar/acp.php
index 29eee37..813413f 100755
--- a/lang/ar/acp.php
+++ b/lang/ar/acp.php
@@ -183,6 +183,7 @@ return [
'COMMA_X' => '
افصل بين الامتدادات باستخدام الفاصلة ( , )
', 'NO_SEARCH_WORD' => 'لم تقم بكتابة كلمة بحث !', 'USERSECTOUPLOAD' => 'عدد الثواني بين كل عملية رفع', + 'ENABLE_MULTIPART' => 'تفعيل التنزيل متعدد الأجزاء', 'ADM_UNWANTED_FILES' => 'يبدوا انك قمت بالترقية من نسخة سابقة وبسبب اختلاف اسماء بعض الملفات ستلاحظ وجود ازرار متكررة بلوحة التحكم .separate by comma ( , )
', 'NO_SEARCH_WORD' => 'You didn\'t type anything in the search form !', 'USERSECTOUPLOAD' => 'The seconds between each upload process', + 'ENABLE_MULTIPART' => 'Enable multipart download', 'ADM_UNWANTED_FILES' => 'You seem to have upgraded from a previous version, and because some file names are different now, you\'ll notice duplicated buttons in control panel. br> to solve this, remove all the files in "includes/adm" directory and re-upload them.', 'HTML_URLS_ENABLED_NO_HTCC' => 'you have enabled the rewrite URLs, but you seem to have forgot to rename .htaccess.txt in Kleeja\'s root directory to ".htaccess", however, if you don\'t know what I\'m talking about, go ask for Kleeja\'s support or simply disable the rewrite urls feature.', 'PLUGIN_CONFIRM_ADD' => 'Caution: plugins make changes to Kleeja functionality, and they could be harmful at times. so be sure to check the plugin source and make sure that it is an official Kleeja plugin.', diff --git a/lang/fa/acp.php b/lang/fa/acp.php index 7b1984c..fca3579 100644 --- a/lang/fa/acp.php +++ b/lang/fa/acp.php @@ -183,6 +183,7 @@ return [ 'COMMA_X' => 'جدا شده توسط کاما ( , )
', 'NO_SEARCH_WORD' => 'شما چيزي در فرم جست و جو تايپ نکرديد!', 'USERSECTOUPLOAD' => 'زمان (ثانيه) بين هر اپلود با اپلود بعدي.', + 'ENABLE_MULTIPART' => 'دانلود چند قسمتی را فعال کنید', 'ADM_UNWANTED_FILES' => 'ظاهرا شما از نسخه قديمي بروز رساني کرده ايد و به دليل تفاوت نوع فايل ها شما با مشکل دوگانگي فايل مواجه ميشويد. br> براي رفع اين مشکل , کليه ي فايل هاي پوشه "includes/adm" را پاک کرده و مجددا اپلود نماييد.', 'HTML_URLS_ENABLED_NO_HTCC' => 'شما ادرس دهي بر اساس قوانين htaccess را انتخا کرده ايد. اما ظاهرا وارد کردن قوانين را فراموش کرده ايد. براي اطلاعات بيشتر به سايت پشتيبان مراجعه نماييد.', 'PLUGIN_CONFIRM_ADD' => 'اخطار!!! اين افزونه تغييراتي در اسکريپت اصلي خواهد داد و اين ممکن است براي امنيت در اينده خطر ساز باشد, لذا از صحت افزونه اطمينان حاصل کنيد.',