function rl_list() { global $list, $options; if ($list) { ?> <table><tr><td> <table class="md5table"> <?php foreach ($list as $file) { if (file_exists($file["name"])) { echo '<tr><td>' . htmlentities(basename($file["name"])) . '</td></tr>' . $nn; } else { if ($options['2gb_fix'] && file_exists($file) && !is_dir($file) && !is_link($file)) { echo '<tr><td>' . htmlentities(basename($file["name"])) . '</td></tr>' . $nn; } } } ?> </table> </td><td> <table class="md5table"> <?php foreach ($list as $file) { if (file_exists($file["name"])) { echo '<tr><td>' . link_for_file($file["name"], TRUE) . '</td></tr>' . $nn; } else { if ($options['2gb_fix'] && file_exists($file) && !is_dir($file) && !is_link($file)) { echo '<tr><td>' . link_for_file($file["name"], TRUE) . '</td></tr>' . $nn; } } } ?> </table> </td></tr></table> <?php } }
" onmousedown="checkFile(<?php echo $filecount; ?> ); return false;"> <td><input onmousedown="checkFile(<?php echo $filecount; ?> ); return false;" id="files<?php echo $filecount; ?> " type="checkbox" name="files[]" value="<?php echo $file["date"]; ?> " /></td> <td><?php echo link_for_file($file["name"], FALSE, 'style="font-weight: bold; color: #000;"'); ?> </td> <td><?php echo $file["size"]; ?> </td> <td><?php echo $file["comment"] ? str_replace("\\r\\n", "<br />", $file["comment"]) : ""; ?> </td> <td><?php echo date("d.m.Y H:i:s", $file["date"]); ?> </td> </tr>
function geturl($host, $port, $url, $referer = 0, $cookie = 0, $post = 0, $saveToFile = 0, $proxy = 0, $pauth = 0, $auth = 0, $scheme = 'http', $resume_from = 0, $XMLRequest = 0) { global $nn, $lastError, $Resume, $bytesReceived, $fp, $fs, $force_name, $options, $sFilters; $scheme = strtolower($scheme) . '://'; if ($post !== 0 && ($scheme == 'http://' || $scheme == 'https://')) { $method = 'POST'; $postdata = is_array($post) ? formpostdata($post) : $post; } else { $method = 'GET'; $postdata = ''; } if (!empty($cookie)) { if (is_array($cookie)) { $cookies = count($cookie) > 0 ? CookiesToStr($cookie) : 0; } else { $cookies = trim($cookie); } } if ($scheme == 'https://') { if (!extension_loaded('openssl')) { html_error('You need to install/enable PHP\'s OpenSSL extension to support downloading via HTTPS.'); } $scheme = 'tls://'; if ($port == 0 || $port == 80) { $port = 443; } } if ($proxy) { list($proxyHost, $proxyPort) = explode(':', $proxy, 2); $host = $host . ($port != 80 && ($scheme != 'tls://' || $port != 443) ? ':' . $port : ''); $url = "{$scheme}{$host}{$url}"; } if ($scheme != 'tls://') { $scheme = ''; } $request = array(); $request[] = $method . ' ' . str_replace(' ', '%20', $url) . ' HTTP/1.1'; $request[] = "Host: {$host}"; $request[] = 'User-Agent: ' . rl_UserAgent; $request[] = 'Accept: */*'; $request[] = 'Accept-Language: en-US,en;q=0.9'; $request[] = 'Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7'; if (!empty($referer)) { $request[] = "Referer: {$referer}"; } if (!empty($cookies)) { $request[] = "Cookie: {$cookies}"; } $request[] = 'Pragma: no-cache'; $request[] = 'Cache-Control: no-cache'; // if ($Resume['use'] === TRUE) $request[] = 'Range: bytes=' . $Resume['from'] . '-'; if (!empty($auth)) { $request[] = "Authorization: Basic {$auth}"; } if (!empty($pauth)) { $request[] = "Proxy-Authorization: Basic {$pauth}"; } if ($method == 'POST') { if (!empty($referer) && stripos($referer, "\nContent-Type: ") === false) { $request[] = 'Content-Type: application/x-www-form-urlencoded'; } $request[] = 'Content-Length: ' . strlen($postdata); } if ($XMLRequest) { $request[] = 'X-Requested-With: XMLHttpRequest'; } $request[] = 'Connection: Close'; $request = implode($nn, $request) . $nn . $nn . $postdata; $errno = 0; $errstr = ''; $hosts = (!empty($proxyHost) ? $scheme . $proxyHost : $scheme . $host) . ':' . (!empty($proxyPort) ? $proxyPort : $port); $fp = @stream_socket_client($hosts, $errno, $errstr, 120, STREAM_CLIENT_CONNECT); //$fp = @fsockopen($proxyHost ? $scheme.$proxyHost : $scheme.$host, $proxyPort ? $proxyPort : $port, $errno, $errstr, 15); if (!$fp) { if (!function_exists('stream_socket_client')) { html_error('[ERROR] stream_socket_client() is disabled.'); } $dis_host = !empty($proxyHost) ? $proxyHost : $host; $dis_port = !empty($proxyPort) ? $proxyPort : $port; html_error(sprintf(lang(88), $dis_host, $dis_port)); } if ($errno || $errstr) { $lastError = $errstr; return false; } if ($saveToFile) { if ($proxy) { echo '<p>' . sprintf(lang(89), $proxyHost, $proxyPort) . '<br />'; echo 'GET: <b>' . $url . "</b>...<br />\n"; } else { echo '<p>' . sprintf(lang(90), $host, $port) . '</p>'; } } ######################################################################### fwrite($fp, $request); fflush($fp); $timeStart = microtime(true); // Rewrote the get header function according to the proxy script // Also made sure it goes faster and I think 8192 is the best value for retrieving headers // Oops.. The previous function hooked up everything and now I'm returning it back to normal $llen = 0; $header = ''; do { $header .= fgets($fp, 16384); $len = strlen($header); if (!$header || $len == $llen) { $lastError = lang(91); stream_socket_shutdown($fp, STREAM_SHUT_RDWR); fclose($fp); return false; } $llen = $len; } while (strpos($header, $nn . $nn) === false); // Array for active stream filters $sFilters = array(); if (stripos($header, "\nTransfer-Encoding: chunked") !== false && in_array('dechunk', stream_get_filters())) { // Add built-in dechunk filter $sFilters['dechunk'] = stream_filter_append($fp, 'dechunk', STREAM_FILTER_READ); if (!$sFilters['dechunk'] && $saveToFile) { html_error('Unknown error while initializing dechunk filter, cannot continue download.'); } } ######################################################################### if ($saveToFile) { if (!isset($_GET['dis_plug']) || $_GET['dis_plug'] != 'on') { $cbhost = strpos($host, ':') !== false ? substr($host, 0, strpos($host, ':')) : $host; // Remove the port that may be added when it's using proxy $chkhost = preg_match('/^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$/', $cbhost) ? false : true; if (!empty($referer)) { $cbrefhost = stripos($referer, 'www.') === 0 ? substr($referer, 4) : $referer; $cbrefhost = parse_url($cbrefhost, PHP_URL_HOST); $chkref = empty($cbrefhost) || preg_match('/^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$/', $cbrefhost) ? false : ($chkhost && strtolower($cbhost) == strtolower($cbrefhost) ? false : true); } else { $chkref = false; } $found = false; if ($chkhost || $chkref) { foreach ($GLOBALS['host'] as $site => $file) { if ($chkhost && host_matches($site, $cbhost)) { $found = true; break; } elseif ($chkref && host_matches($site, $cbrefhost)) { $found = true; break; } } } if ($found) { require_once HOST_DIR . 'DownloadClass.php'; require_once HOST_DIR . "download/{$file}"; $class = substr($file, 0, -4); $firstchar = substr($file, 0, 1); if ($firstchar > 0) { $class = "d{$class}"; } if (class_exists($class) && method_exists($class, 'CheckBack')) { // is_callable(array($class , 'CheckBack')) $hostClass = new $class(false); $hostClass->CheckBack($header); } } unset($cbhost, $cbrefhost, $chkhost, $chkref, $found); } if (preg_match('/^HTTP\\/1\\.[0|1] (\\d+) .*/', $header, $responsecode) && ($responsecode[1] == 404 || $responsecode[1] == 403)) { // Do some checking, please, at least tell them what error it was if ($responsecode[1] == 403) { $lastError = lang(92); } elseif ($responsecode[1] == 404) { $lastError = lang(93); } else { // Weird, it shouldn't come here... $lastError = lang(94); } return false; } //$bytesTotal = intval ( trim ( cut_str ( $header, "Content-Length:", "\n" ) ) ); $bytesTotal = trim(cut_str($header, "\nContent-Length: ", "\n")); global $options; if ($options['file_size_limit'] > 0 && $bytesTotal > $options['file_size_limit'] * 1024 * 1024) { $lastError = lang(336) . bytesToKbOrMbOrGb($options['file_size_limit'] * 1024 * 1024) . '.'; return false; } if (stripos($header, "\nLocation: ") !== false && preg_match('/\\nLocation: ([^\\r\\n]+)/i', $header, $redir)) { $redirect = trim($redir[1]); $lastError = sprintf(lang(95), $redirect); return FALSE; } if (in_array(cut_str($header, "\nWWW-Authenticate: ", ' '), array('Basic', 'Digest'))) { $lastError = lang(96); return FALSE; } //$ContentType = trim (cut_str($header, "\nContent-Type:", "\n")); // Unused if ($Resume['use'] === TRUE && stripos($header, "\nContent-Range: ") === false) { $lastError = stripos($header, '503 Limit Exceeded') !== false ? lang(97) : lang(98); return FALSE; } if ($force_name) { $FileName = $force_name; } else { $ContentDisposition = cut_str($header, "\nContent-Disposition: ", "\n"); if (!empty($ContentDisposition) && stripos($ContentDisposition, 'filename') !== false) { if (preg_match("@filename\\*=UTF-8''((?:[\\w\\-\\.]|%[0-F]{2})+)@i", $ContentDisposition, $fn)) { $FileName = rawurldecode($fn[1]); } elseif (preg_match('@filename=\\"?([^\\r\\n\\"\\;]+)\\"?@i', $ContentDisposition, $fn)) { $FileName = $fn[1]; } else { $FileName = $saveToFile; } } else { $FileName = $saveToFile; } } $FileName = str_replace(array_merge(range(chr(0), chr(31)), str_split("<>:\"/|?*\\")), '', basename(trim($FileName))); if (!empty($options['rename_prefix'])) { $FileName = $options['rename_prefix'] . '_' . $FileName; } if (!empty($options['rename_suffix'])) { $ext = strrchr($FileName, '.'); $before_ext = explode($ext, $FileName); $FileName = $before_ext[0] . '_' . $options['rename_suffix'] . $ext; } if ($options['rename_underscore']) { $FileName = str_replace(array(' ', '%20'), '_', $FileName); } $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $FileName; $filetype = strrchr($saveToFile, '.'); if (is_array($options['forbidden_filetypes']) && in_array(strtolower($filetype), $options['forbidden_filetypes'])) { if ($options['forbidden_filetypes_block']) { $lastError = sprintf(lang(82), $filetype); return false; } else { $saveToFile = str_replace($filetype, $options['rename_these_filetypes_to'], $saveToFile); } } if (@file_exists($saveToFile) && $options['bw_save']) { // Skip in audl. if (isset($_GET['audl'])) { echo '<script type="text/javascript">parent.nextlink();</script>'; } html_error(lang(99) . ': ' . link_for_file($saveToFile)); } if (@file_exists($saveToFile) && $Resume['use'] === TRUE) { $fs = @fopen($saveToFile, 'ab'); if (!$fs) { $lastError = sprintf(lang(101), basename($saveToFile), dirname($saveToFile)) . '<br />' . lang(102) . '<br /><a href="javascript:location.reload();">' . lang(103) . '</a>'; return FALSE; } } else { if (@file_exists($saveToFile)) { $saveToFile = dirname($saveToFile) . PATH_SPLITTER . time() . '_' . basename($saveToFile); } $fs = @fopen($saveToFile, 'wb'); if (!$fs) { $secondName = dirname($saveToFile) . PATH_SPLITTER . str_replace(':', '', str_replace('?', '', basename($saveToFile))); $fs = @fopen($secondName, 'wb'); if (!$fs) { $lastError = sprintf(lang(101), basename($saveToFile), dirname($saveToFile)) . '<br />' . lang(102) . '<br /><a href="javascript:location.reload();">' . lang(103) . '</a>'; return FALSE; } } } flock($fs, LOCK_EX); if ($Resume['use'] === TRUE && stripos($header, "\nContent-Range: ") !== false) { list($temp, $Resume['range']) = explode(' ', trim(cut_str($header, "\nContent-Range: ", "\n"))); list($Resume['range'], $fileSize) = explode('/', $Resume['range']); $fileSize = bytesToKbOrMbOrGb($fileSize); } else { $fileSize = bytesToKbOrMbOrGb($bytesTotal); } $chunkSize = GetChunkSize($bytesTotal); echo lang(104) . ' <b>' . basename($saveToFile) . '</b>, ' . lang(56) . " <b>{$fileSize}</b>...<br />"; //$scriptStarted = false; require_once TEMPLATE_DIR . '/transloadui.php'; if ($Resume['use'] === TRUE) { $received = bytesToKbOrMbOrGb(filesize($saveToFile)); $percent = round($Resume['from'] / ($bytesTotal + $Resume['from']) * 100, 2); echo "<script type='text/javascript'>pr('{$percent}', '{$received}', '0');</script>"; //$scriptStarted = true; flush(); } } else { $page = ''; } $time = $last = $lastChunkTime = 0; do { $data = @fread($fp, $saveToFile ? $chunkSize : 16384); // 16384 saw this value in Pear HTTP_Request2 package // (fix - szal) using this actually just causes massive cpu usage for large files, too much data is flushed to the browser!) if ($data == '') { break; } if ($saveToFile) { $bytesSaved = fwrite($fs, $data); if ($bytesSaved !== false && strlen($data) == $bytesSaved) { //if ($bytesSaved > - 1) { $bytesReceived += $bytesSaved; } else { $lastError = sprintf(lang(105), basename($saveToFile)); // unlink($saveToFile); return false; } if ($bytesReceived >= $bytesTotal) { $percent = 100; } else { $percent = @round(($bytesReceived + $Resume['from']) / ($bytesTotal + $Resume['from']) * 100, 2); } if ($bytesReceived > $last + $chunkSize) { $received = bytesToKbOrMbOrGb($bytesReceived + $Resume['from']); $time = microtime(true) - $timeStart; $chunkTime = $time - $lastChunkTime; $chunkTime = $chunkTime > 0 ? $chunkTime : 1; $lastChunkTime = $time; $speed = @round(($bytesReceived - $last) / 1024 / $chunkTime, 2); echo "<script type='text/javascript'>pr('{$percent}', '{$received}', '{$speed}');</script>"; $last = $bytesReceived; } if (!empty($bytesTotal) && $bytesReceived + $chunkSize > $bytesTotal) { $chunkSize = $bytesTotal - $bytesReceived; } } else { $page .= $data; } } while (!feof($fp) && strlen($data) > 0); if ($saveToFile) { flock($fs, LOCK_UN); fclose($fs); if ($bytesReceived <= 0) { $lastError = lang(106); stream_socket_shutdown($fp, STREAM_SHUT_RDWR); fclose($fp); return FALSE; } } stream_socket_shutdown($fp, STREAM_SHUT_RDWR); fclose($fp); if ($saveToFile) { return array('time' => sec2time(round($time)), 'speed' => @round($bytesTotal / 1024 / (microtime(true) - $timeStart), 2), 'received' => true, 'size' => $fileSize, 'bytesReceived' => $bytesReceived + $Resume['from'], 'bytesTotal' => $bytesTotal + $Resume['from'], 'file' => $saveToFile); } else { if (stripos($header, "\nTransfer-Encoding: chunked") !== false && empty($sFilters['dechunk']) && function_exists('http_chunked_decode')) { $dechunked = http_chunked_decode($page); if ($dechunked !== false) { $page = $dechunked; } unset($dechunked); } $page = $header . $page; return $page; } }
//$_GET['post'] = urlencode(encrypt(serialize($_GET['post']))); if (!empty($_GET['proxy'])) { $_GET['proxy'] = urlencode($_GET['proxy']); if (!empty($pauth)) { $_GET['pauth'] = urlencode(encrypt($pauth)); } } $lastError = $_GET['auth'] = ''; unset($ref, $purl); } } while ($redirectto && !$lastError); if ($lastError) { html_error(htmlspecialchars($lastError)); } elseif ($file['bytesReceived'] == $file['bytesTotal'] || $file['size'] == 'Unknown') { echo '<script type="text/javascript">' . "pr(100, '" . $file['size'] . "', '" . $file['speed'] . "')</script>\r\n"; echo sprintf(lang(10), link_for_file(dirname($pathWithName) . '/' . basename($file['file'])), $file['size'], $file['time'], $file['speed']); $file['date'] = time(); if (!write_file(CONFIG_DIR . 'files.lst', serialize(array('name' => $file['file'], 'size' => $file['size'], 'date' => $file['date'], 'link' => $_GET['link'], 'comment' => !empty($_GET['comment']) ? str_replace(array("\r", "\n"), array('\\r', '\\n'), $_GET['comment']) : '')) . "\r\n", 0)) { echo lang(9) . '<br />'; } if (!empty($_GET['email']) && !$options['disable_email']) { require_once CLASS_DIR . 'mail.php'; $_GET['partSize'] = isset($_GET['partSize']) && is_numeric($_GET['partSize']) ? $_GET['partSize'] * 1024 * 1024 : false; if (xmail($fromaddr, $_GET['email'], 'File ' . basename($file['file']), 'File: ' . basename($file['file']) . "\r\n" . 'Link: ' . $_GET['link'] . (!empty($_GET['comment']) ? "\r\n" . 'Comments: ' . str_replace(array('\\r', '\\n'), array("\r", "\n"), $_GET['comment']) : ''), $pathWithName, $_GET['partSize'], $_GET['partSize'] && !empty($_GET['method']) ? $_GET['method'] : '')) { printf(lang(11), $_GET['email'], basename($file['file'])); } else { echo lang(12) . '<br />'; } } echo "\n<form method='POST' name='flist' action='{$_SERVER['SCRIPT_NAME']}'>\n"; echo "\t<input type='hidden' name='files[]' value='{$file['date']}' /><br />\n";
} if (!empty($_GET['proxy'])) { $_GET['proxy'] = urlencode($_GET['proxy']); if (!empty($pauth)) { $_GET['pauth'] = urlencode(encrypt($pauth)); } } $lastError = $_GET['auth'] = ''; // With $_GET['auth'] empty it will still using the $auth unset($ref, $purl); } } while ($redirectto && !$lastError); if ($lastError) { html_error($lastError, 0); } elseif ($file["bytesReceived"] == $file["bytesTotal"] || $file["size"] == "Unknown") { list($final_link, $current_time) = link_for_file(dirname($pathWithName) . "/" . basename($file["file"]), false, true); echo "<script type=\"text/javascript\">pr(100, '" . $file["size"] . "', '" . $file["speed"] . "')</script>"; if ($options['enable_stop_transload']) { echo "<script type=\"text/javascript\">\$('#stoptl').hide();</script>"; } echo $L->sprintf($L->say['_filesaved'], $final_link, $file["size"], $file["time"], $file["speed"]); // we do have base date from here, no need to reassign again in other.php for purge file $file["date"] = getNowzone($current_time); $tosave = array("name" => $file["file"], "size" => str_replace(" ", " ", $file["size"]), "date" => $file["date"], "age" => $L->say['less_a_minute'], "link" => $_GET["link"], "comment" => str_replace("\n", "\\n", str_replace("\r", "\\r", $_GET["comment"])), "ip" => $visitors->userip); //print_r($tosave); $result = write_file(FILES_LST, serialize($tosave) . "\r\n", 0); $result2 = $options['downloadLimitbyIP'] ? write_file($visitors->FN['leech_log'], serialize(array("name" => $file["file"], "date" => $file["date"], "ip" => $visitors->userip)) . "\r\n", 0) : ''; if (!$result || !$result2) { echo $L->say['error_upd_list'] . "<br />"; } if ($options["limitbytraffic"]) {
function unrar_go() { global $PHP_SELF, $options, $list, $L; require_once CLASS_DIR . "rar.php"; ?> <table align="center"> <tr> <td> <table> <?php for ($i = 0; $i < count($_GET["files"]); $i++) { $file = $list[$_GET["files"][$i]]; if (count($_GET['filestounrar'][$i]) == 0) { continue; } ?> <tr align="center"> <td colspan="2" class="rar-table-tlr"><?php echo $L->sprintf($L->say['_extracting'], basename($file["name"])); ?> </td> </tr> <?php foreach ($_GET['filestounrar'][$i] as $rar_item) { ?> <tr> <td class="rar-tbl-left"> <?php echo link_for_file(realpath($options['download_dir']) . '/' . basename(base64_decode($rar_item))); ?> </td> <td class="rar-tbl-right" id="<?php echo 'unrar' . $_GET["files"][$i] . '-' . str_replace('=', '-', $rar_item); ?> " align="center"><?php echo $L->say['_waiting']; ?> </td> </tr> <?php } ?> <tr> <td colspan="2" class="rar-table-space"> </td> </tr> <?php } ?> </table> </td> </tr> <tr> <td> </td> </tr> </table> <span id="unrar_finished" style="display:none;"><a href="<?php echo $PHP_SELF . "?act=files"; ?> "><?php echo $L->say['_backlist']; ?> </a><br /><br /><br /></span> <?php }
$app = array(); $app['id'] = ''; //Application ID $app['secret'] = ''; //Application SecretKey ######################## if (empty($app['id']) || empty($app['secret'])) { html_error('Application ID or SecretKey Empty. Please create a VK app and add them at ' . HOST_DIR . 'upload/' . basename(__FILE__)); } $not_done = true; $_GET['proxy'] = isset($proxy) ? $proxy : (isset($_GET['proxy']) ? $_GET['proxy'] : ''); $PHP_SELF = $_SERVER['SCRIPT_NAME']; if (!defined('ROOT_DIR')) { define('ROOT_DIR', realpath('./')); } $return_url = link_for_file(realpath(basename($PHP_SELF)), true) . '?uploaded=' . urlencode($_REQUEST['uploaded']) . '&filename=' . urlencode(base64_encode($lname)); if (!empty($_GET['proxy'])) { $return_url .= '&useuproxy=on&uproxy=' . urlencode($_GET['proxy']); } if (!empty($_REQUEST['pauth'])) { $return_url .= '&upauth=' . urlencode($pauth); } if (!empty($_GET['save_style'])) { $return_url .= '&save_style=' . urlencode($_GET['save_style']); } if (isset($_GET['auul'])) { $return_url .= '&auul=' . urlencode($_GET['auul']); } $videxts = array('.avi', '.mp4', '.3gp', '.mpg', '.mpeg', '.mov', '.flv', '.wmv'); $video = true; $upload_mp3_as_video = true;
function getftpurl($host, $port, $url, $saveToFile = 0) { global $nn, $lastError, $PHP_SELF, $FtpBytesTotal, $FtpBytesReceived, $FtpTimeStart, $FtpChunkSize, $options; $ftp = new ftp(FALSE, FALSE); $server = "{$host}:{$port}"; if (empty($host) || empty($port) || !$ftp->SetServer($host, (int) $port)) { $ftp->quit(); $lastError = sprintf(lang(79), $server); return FALSE; } else { if (!$ftp->connect()) { $ftp->quit(); $lastError = sprintf(lang(79), $server); return FALSE; } else { if (!$ftp->login()) { $ftp->quit(); $lastError = lang(80); return FALSE; } else { echo '<p>'; printf(lang(81), $server); echo '<br />'; //$ftp->Passive(FALSE); $tmp = explode("/", $url); $ftp_file = array_pop($tmp); $ftp_dir = implode('/', $tmp); $ftp->chdir($ftp_dir); $fileSize = $FtpBytesTotal = $ftp->filesize($ftp_file); $FtpChunkSize = round($fileSize / 333); if (strpos($saveToFile, '?') !== false) { $saveToFile = substr($saveToFile, 0, strpos($saveToFile, '?')); } if ($options['file_size_limit'] > 0) { if ($fileSize > $options['file_size_limit'] * 1024 * 1024) { $lastError = lang(336) . bytesToKbOrMbOrGb($options['file_size_limit'] * 1024 * 1024) . "."; return false; } } if (!empty($options['rename_prefix'])) { $File_Name = $options['rename_prefix'] . '_' . basename($saveToFile); $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } if (!empty($options['rename_suffix'])) { $ext = strrchr(basename($saveToFile), '.'); $before_ext = explode($ext, basename($saveToFile)); $File_Name = $before_ext[0] . '_' . $options['rename_suffix'] . $ext; $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } if ($options['rename_underscore']) { $File_Name = str_replace(array(' ', '%20'), '_', basename($saveToFile)); $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } $filetype = strrchr($saveToFile, '.'); if (is_array($options['forbidden_filetypes']) && in_array(strtolower($filetype), $options['forbidden_filetypes'])) { if ($options['forbidden_filetypes_block']) { html_error(sprintf(lang(82), $filetype)); } $saveToFile = str_replace($filetype, $options['rename_these_filetypes_to'], $saveToFile); } if (@file_exists($saveToFile) && $options['bw_save']) { // Skip in audl. if (isset($_GET['audl'])) { echo '<script type="text/javascript">parent.nextlink();</script>'; } html_error(lang(99) . ': ' . link_for_file($saveToFile)); } elseif (@file_exists($saveToFile)) { $saveToFile = dirname($saveToFile) . PATH_SPLITTER . time() . '_' . basename($saveToFile); } printf(lang(83), basename($saveToFile), bytesToKbOrMbOrGb($fileSize)); echo "<br />"; require_once TEMPLATE_DIR . '/transloadui.php'; $FtpTimeStart = getmicrotime(); if ($ftp->get($ftp_file, $saveToFile)) { $ftp->quit(); $time = getmicrotime() - $FtpTimeStart; return array('time' => sec2time(round($time)), 'speed' => @round($FtpBytesTotal / 1024 / $time, 2), 'received' => TRUE, 'size' => bytesToKbOrMbOrGb($fileSize), 'bytesReceived' => $FtpBytesReceived, 'bytesTotal' => $FtpBytesTotal, 'file' => $saveToFile); } $ftp->quit(); return FALSE; } } } }
function unrar_go() { global $PHP_SELF, $options, $list; require_once CLASS_DIR . "rar.php"; ?> <table align="center"> <tr> <td> <table> <?php for ($i = 0; $i < count($_GET["files"]); $i++) { $file = $list[$_GET["files"][$i]]; if (count($_GET['filestounrar'][$i]) == 0) { continue; } ?> <tr align="center"> <td colspan="2" style="border-right:1px solid #666; border-left:1px solid #666; border-top:1px solid #666; padding:2px; background-color:#001825;"><?php printf(lang(373), basename($file["name"])); ?> </td> </tr> <?php foreach ($_GET['filestounrar'][$i] as $rar_item) { ?> <tr> <td class="unrar-lb-td"> <?php echo link_for_file(realpath($options['download_dir']) . '/' . basename(base64_decode($rar_item))); ?> </td> <td id="<?php echo 'unrar' . $_GET["files"][$i] . '-' . str_replace('=', '-', $rar_item); ?> " align="center" style="border-right:1px solid #666; padding:2px; background-color:#001825;"><?php echo lang(364); ?> </td> </tr> <?php } ?> <tr> <td colspan="2" class="unrar-space-td"> </td> </tr> <?php } ?> </table> </td> </tr> <tr> <td> </td> </tr> </table> <span id="unrar_finished" style="display:none;"><a href="<?php echo $PHP_SELF . "?act=files"; ?> "><?php echo lang(365); ?> </a><br /><br /><br /></span> <?php }
function geturl($host, $port, $url, $referer = 0, $cookie = 0, $post = 0, $saveToFile = 0, $proxy = 0, $pauth = 0, $auth = 0, $scheme = "http", $resume_from = 0, $XMLRequest = 0) { global $nn, $lastError, $Resume, $bytesReceived, $fs, $force_name, $options, $L, $visitors, $ada_acc; $scheme .= '://'; if ($post !== 0 && ($scheme == 'http://' || $scheme == 'https://')) { $method = 'POST'; $postdata = is_array($post) ? formpostdata($post) : $post; $length = strlen($postdata); $content_tl = "Content-Type: application/x-www-form-urlencoded{$nn}" . "Content-Length: {$length}{$nn}"; } else { $method = 'GET'; $content_tl = $postdata = ''; } $cookies = ''; if (!empty($cookie)) { if (is_array($cookie)) { if (count($cookie) > 0) { $cookies = 'Cookie: ' . CookiesToStr($cookie) . $nn; } } else { $cookies = 'Cookie: ' . trim($cookie) . $nn; } } $referer = $referer ? "Referer: {$referer}{$nn}" : ''; if ($scheme == 'https://') { $scheme = 'ssl://'; if ($port == 0 || $port == 80) { $port = 443; } } if ($proxy) { list($proxyHost, $proxyPort) = explode(':', $proxy, 2); $host = $host . ($port != 80 && ($scheme != 'ssl://' || $port != 443) ? ':' . $port : ''); $url = $scheme . $host . $url; } if ($scheme != 'ssl://') { $scheme = ''; } $http_auth = !empty($auth) ? "Authorization: Basic {$auth}{$nn}" : ''; $proxyauth = !empty($pauth) ? "Proxy-Authorization: Basic {$pauth}{$nn}" : ''; $request = array(); $request[] = $method . ' ' . str_replace(' ', '%20', $url) . ' HTTP/1.1'; $request[] = "Host: {$host}"; $request[] = 'User-Agent: Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.12'; $request[] = 'Accept: */*'; $request[] = 'Accept-Language: en-US;q=0.7,en;q=0.3'; $request[] = 'Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7'; $request[] = 'Pragma: no-cache'; $request[] = 'Cache-Control: no-cache'; if ($Resume['use'] === TRUE) { $request[] = 'Range: bytes=' . $Resume['from'] . '-'; } if ($XMLRequest) { $request[] = 'X-Requested-With: XMLHttpRequest'; } $request = implode($nn, $request) . $nn . $http_auth . $proxyauth . $referer . $cookies . $content_tl . 'Connection: Close' . $nn . $nn . $postdata; if (isset($options['mip_enabled']) && $options['mip_enabled']) { $mip_action = "download"; echo "<p>Multi IP Enabled</b>...<br />\n"; if (file_exists(CLASS_DIR . "mip.php")) { @(include CLASS_DIR . "mip.php"); } } else { $errno = 0; $errstr = ''; $hosts = (!empty($proxyHost) ? $scheme . $proxyHost : $scheme . $host) . ':' . (!empty($proxyPort) ? $proxyPort : $port); $fp = @stream_socket_client($hosts, $errno, $errstr, 120, STREAM_CLIENT_CONNECT); } if (!$fp) { $dis_host = !empty($proxyHost) ? $proxyHost : $host; $dis_port = !empty($proxyPort) ? $proxyPort : $port; html_error($L->sprintf($L->say['_couldnt_con_to'], $dis_host, $dis_port)); } if ($errno || $errstr) { $lastError = $errstr; return false; } if ($saveToFile) { if ($proxy) { echo '<p>' . $L->sprintf($L->say['_con_proxy'], $proxyHost, $proxyPort) . '<br />'; echo "GET: <b>" . $url . "</b>...<br />\n"; } else { echo "<p>"; echo $L->sprintf($L->say['_con_to'], $host, $port) . '<br />'; echo isset($options['mip_enabled']) && $options['mip_enabled'] ? "using IP: " . $mip_ip . "<br />\n" : ""; } } ######################################################################### fputs($fp, $request); fflush($fp); $timeStart = getmicrotime(); // Rewrote the get header function according to the proxy script // Also made sure it goes faster and I think 8192 is the best value for retrieving headers // Oops.. The previous function hooked up everything and now I'm returning it back to normal $llen = 0; $header = ''; do { $header .= fgets($fp, 16384); $len = strlen($header); if (!$header || $len == $llen) { $lastError = $L->say['_noheader']; return false; } $llen = $len; } while (strpos($header, $nn . $nn) === false); ######################################################################### if ($saveToFile) { if (!isset($_GET['dis_plug']) || $_GET['dis_plug'] != 'on') { $cbhost = strpos($host, ':') !== false ? substr($host, 0, strpos($host, ':')) : $host; // Remove the port that may be added when it's using proxy $chkhost = preg_match('/^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$/', $cbhost) ? false : true; if (!empty($referer)) { $cbrefhost = str_ireplace('www.', '', cut_str($referer, 'Referer: ', "\r\n")); $cbrefhost = parse_url($cbrefhost, PHP_URL_HOST); $chkref = empty($cbrefhost) || preg_match('/^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$/', $cbrefhost) ? false : ($chkhost && strtolower($cbhost) == strtolower($cbrefhost) ? false : true); } else { $chkref = false; } $found = false; if ($chkhost || $chkref) { foreach ($GLOBALS['host'] as $site => $file) { if ($chkhost && host_matches($site, $cbhost)) { $found = true; } elseif ($chkref && host_matches($site, $cbrefhost)) { $found = true; } if ($found) { if ($options['limitbyIP']) { if ($ada_acc) { global $premium_acc; if (preg_match('|^(?:.+\\.)?(.+\\..+)$|i', $cbhost, $prematch) || preg_match('|^(?:.+\\.)?(.+\\..+)$|i', $cbrefhost, $prematch)) { $prematch = str_replace('.', '_', $prematch[1]); if (!empty($premium_acc[$prematch])) { $fname = basename($saveToFile) . "." . rand(1, 1000); $limitedfile = $visitors->userip . $fname; $ret = mkdir($visitors->tmp_dir . $limitedfile, 0777); } } } } require_once HOST_DIR . 'DownloadClass.php'; require_once HOST_DIR . "download/{$file}"; $class = substr($file, 0, -4); $firstchar = substr($file, 0, 1); if ($firstchar > 0) { $class = "d{$class}"; } if (!class_exists($class) || !method_exists($class, 'CheckBack')) { break; } // is_callable(array($class , 'CheckBack')) $hostClass = new $class(false); $hostClass->CheckBack($header); break; } } unset($cbhost, $cbrefhost, $chkhost, $chkref, $found); } } if (preg_match('/^HTTP\\/1\\.[0|1] (\\d+) .*/', $header, $responsecode) && ($responsecode[1] == 404 || $responsecode[1] == 403)) { // Do some checking, please, at least tell them what error it was if ($responsecode[1] == 403) { $lastError = $L->say['_page_notfound']; } elseif ($responsecode[1] == 404) { $lastError = $L->say['_forbidden_access']; } else { // Weird, it shouldn't come here... $lastError = $L->say['_notfound_forbidden']; } return false; } $bytesTotal = trim(cut_str($header, "Content-Length:", "\n")); if ($options['maxlimitsize'] > 0) { if ($bytesTotal > $options['maxlimitsize'] * 1024 * 1024) { $lastError = $L->sprintf($L->say['_sorry_tobig'], bytesToKbOrMbOrGb($bytesTotal), $options["maxlimitsize"]); return false; } } if ($options['minlimitsize'] > 0) { if ($bytesTotal < $options['minlimitsize'] * 1024 * 1024) { $lastError = $L->sprintf($L->say['_sorry_tosmall'], bytesToKbOrMbOrGb($bytesTotal), $options["minlimitsize"]); return false; } } // check storage limit (it is in MB) if ($options['storage_limit'] > 0) { $serverfiles = calcUsedSpace(); if ($serverfiles + $bytesTotal > $options['storage_limit'] * 1024 * 1024) { $lastError = $L->sprintf($L->say['_sorry_insuficient_storage'], bytesToKbOrMbOrGb($serverfiles), $options["storage_limit"]); return false; } } if (stripos($header, "\nLocation: ") !== false && preg_match('/\\nLocation: ([^\\r\\n]+)/i', $header, $redir)) { $redirect = trim($redir[1]); $lastError = $L->sprintf($L->say['_error_redirectto'], $redirect); return FALSE; } if (in_array(cut_str($header, "WWW-Authenticate: ", " "), array("Basic", "Digest"))) { $lastError = $L->say['_req_auth']; return FALSE; } //$ContentType = trim(cut_str($header, "Content-Type:", "\n")); if ($Resume['use'] === TRUE && stripos($header, "\nContent-Range: ") === false) { $lastError = stripos($header, '503 Limit Exceeded') !== false ? $L->say['_error_resume'] : $L->say['_error_noresume']; return FALSE; } if ($force_name) { $FileName = $force_name; $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $FileName; } else { $ContentDisposition = trim(cut_str($header, "Content-Disposition:", "\n")) . "\n"; if ($ContentDisposition && stripos($ContentDisposition, "filename=") !== false) { $FileName = trim(trim(trim(trim(trim(cut_str($ContentDisposition, "filename=", "\n")), "="), "?"), ";"), '"'); if (strpos($FileName, "/") !== false) { $FileName = basename($FileName); } if (preg_match("/UTF\\-8\\?B\\?(.*)\$/i", $FileName, $b64)) { $FileName = preg_replace("/[^a-zA-Z0-9\\-\\.]/", "_", base64_decode($b64[1])); } $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $FileName; } } if (!empty($options["add_ext_5city"]) || !empty($options['rename_suffix']) || !empty($options['rename_prefix']) || $options['rename_underscore']) { if (!empty($options["add_ext_5city"])) { $ext = str_replace(".", "", $options["add_ext_5city"]); $File_Name = basename($saveToFile) . "." . $options["add_ext_5city"]; } if (!empty($options['rename_prefix'])) { $File_Name = $options['rename_prefix'] . '_' . basename($saveToFile); } if (!empty($options['rename_suffix'])) { $ext = strrchr(basename($saveToFile), "."); $before_ext = explode($ext, basename($saveToFile)); $File_Name = $before_ext[0] . '_' . $options['rename_suffix'] . $ext; } if ($options['rename_underscore']) { $File_Name = str_replace(array(' ', '%20'), '_', basename($saveToFile)); } $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } $filetype = strrchr($saveToFile, "."); if (is_array($options['forbidden_filetypes']) && in_array(strtolower($filetype), $options['forbidden_filetypes'])) { if ($options['forbidden_filetypes_block']) { $lastError = $L->sprintf($L->say['_forbid_filetype'], $filetype); return false; } else { $saveToFile = str_replace($filetype, $options['rename_these_filetypes_to'], $saveToFile); } } if (@file_exists($saveToFile) && $options['bw_save']) { html_error($L->say['_download'] . ': ' . link_for_file($saveToFile), 0); } if (@file_exists($saveToFile) && $Resume["use"] === TRUE) { $fs = @fopen($saveToFile, "ab"); if (!$fs) { $lastError = $L->sprintf($L->say['_error_cantsave'], basename($saveToFile)) . '<br />' . $L->say['_error_trychmod'] . '<br /><a href="javascript:location.reload();">' . $L->say['_error_tryagain'] . '</a>'; return FALSE; } } else { if (@file_exists($saveToFile)) { $saveToFile = dirname($saveToFile) . PATH_SPLITTER . TIME_NOW . "_" . basename($saveToFile); } $fs = @fopen($saveToFile, "wb"); if (!$fs) { $secondName = dirname($saveToFile) . PATH_SPLITTER . str_replace(":", "", str_replace("?", "", basename($saveToFile))); $fs = @fopen($secondName, "wb"); if (!$fs) { $lastError = $L->sprintf($L->say['_error_cantsave'], basename($saveToFile)) . '<br />' . $L->say['_error_trychmod'] . '<br /><a href="javascript:location.reload();">' . $L->say['_error_tryagain'] . '</a>'; return FALSE; } } } flock($fs, LOCK_EX); if ($Resume['use'] === TRUE && stripos($header, "\nContent-Range: ") !== false) { list($temp, $Resume['range']) = explode(' ', trim(cut_str($header, "\nContent-Range: ", "\n"))); list($Resume['range'], $fileSize) = explode('/', $Resume['range']); $fileSize = bytesToKbOrMbOrGb($fileSize); } else { $fileSize = bytesToKbOrMbOrGb($bytesTotal); } $chunkSize = GetChunkSize($bytesTotal); $File_Name = basename($saveToFile); if (!empty($options["add_ext_5city"])) { $ext = "." . get_extension(basename($saveToFile)); $File_Name = str_replace($ext, "", basename($saveToFile)); } echo $L->sprintf($L->say['_saveprogres'], $File_Name, $ext, $fileSize) . '<br />'; //$scriptStarted = false; require_once TEMPLATE_DIR . 'transloadui.php'; if ($Resume['use'] === TRUE) { $received = bytesToKbOrMbOrGb(filesize($saveToFile)); $percent = round($Resume['from'] / ($bytesTotal + $Resume['from']) * 100, 2); echo '<script type="text/javascript">pr(' . "'" . $percent . "', '" . $received . "', '0');</script>"; //$scriptStarted = true; flush(); } } else { $page = ""; } $time = $last = $lastChunkTime = 0; do { $data = @fread($fp, $saveToFile ? $chunkSize : 16384); // 16384 saw this value in Pear HTTP_Request2 package // (fix - szal) using this actually just causes massive cpu usage for large files, too much data is flushed to the browser!) if ($data == '') { break; } if ($saveToFile) { $bytesSaved = fwrite($fs, $data); if ($bytesSaved !== false && strlen($data) == $bytesSaved) { //if ($bytesSaved > - 1) { $bytesReceived += $bytesSaved; } else { $lastError = $L->sprintf($L->say['_error_imposible_record'], $saveToFile); unlink($saveToFile); return false; } if ($bytesReceived >= $bytesTotal) { $percent = 100; } else { $percent = @round(($bytesReceived + $Resume['from']) / ($bytesTotal + $Resume['from']) * 100, 2); } if ($bytesReceived > $last + $chunkSize) { $received = bytesToKbOrMbOrGb($bytesReceived + $Resume['from']); $time = getmicrotime() - $timeStart; $chunkTime = $time - $lastChunkTime; $chunkTime = $chunkTime ? $chunkTime : 1; $lastChunkTime = $time; $speed = @round($chunkSize / 1024 / $chunkTime, 2); /* if (!$scriptStarted) { echo('<script type="text/javascript">'); $scriptStarted = true; } */ echo "<script type='text/javascript'>pr('" . $percent . "', '" . $received . "', '" . $speed . "');</script>"; $last = $bytesReceived; } } else { $page .= $data; } } while (strlen($data) > 0); //echo('</script>'); if ($saveToFile) { flock($fs, LOCK_UN); fclose($fs); if ($bytesReceived <= 0) { $lastError = $L->say['_error_misc']; fclose($fp); return FALSE; } } fclose($fp); if ($saveToFile) { return array('time' => sec2time(round($time)), 'speed' => @round($bytesTotal / 1024 / (getmicrotime() - $timeStart), 2), 'received' => true, 'size' => $fileSize, 'bytesReceived' => $bytesReceived + $Resume['from'], 'bytesTotal' => $bytesTotal + $Resume['from'], 'file' => $saveToFile); } else { if (stripos($header, "\nTransfer-Encoding: chunked") !== false && function_exists('http_chunked_decode')) { $dechunked = http_chunked_decode($page); if ($dechunked !== false) { $page = $dechunked; } unset($dechunked); } $page = $header . $page; return $page; } }
$total_size = 0; $kumulatifsz = true; if (isset($list["files"]["totalsize"])) { $total_size = $list["files"]["totalsize"]; $kumulatifsz = false; } $resXML .= "\n" . '<files>' . $rn; foreach ($list as $key => $file) { if (@file_exists($file["name"])) { $total_files++; if ($kumulatifsz) { $total_size += getfilesize($file["name"]); } $resXML .= "\n" . ' <fileid>brs' . $total_files . '</fileid>' . $rn; $resXML .= ' <filename>' . xmlentities(basename($file["name"])) . '</filename>' . $rn; $resXML .= ' <filepath>' . link_for_file($file["name"], true) . '</filepath>' . $rn; $_fsize = str_replace(" ", "((space))", $file["size"]); $_fsize = str_replace(" ", "((space))", $_fsize); $resXML .= ' <filesize>' . $_fsize . '</filesize>' . $rn; $_fdate = ''; if ($options["show_column_sfile"]["date"] == true) { $_fdate = str_replace(" ", "((space))", date("d.m.Y H:i:s", $file["date"])); $_fdate = str_replace(" ", "((space))", $_fdate); $resXML .= ' <filedate>' . $_fdate . '</filedate>' . $rn; } $resXML .= ' <filedateid>' . $file["date"] . '</filedateid>' . $rn; $resXML .= ' <fileage>' . $file["age"] . '</fileage>' . $rn; $_fmd5 = ''; if (isset($_COOKIE['showAll']) && $_COOKIE['showAll'] == 1 && $options["show_column_sfile"]["md5"] == true) { $_fmd5 = isset($file["md5"]) ? $file["md5"] : ""; $resXML .= ' <filemd5>' . $_fmd5 . '</filemd5>' . $rn;
<input type="checkbox" name="files[]" id="cek_<?php echo $total_files; ?> " value="<?php echo $file["date"]; ?> " onclick="clk('cek_<?php echo $total_files; ?> ')" /> </td> <td id="fn_<?php echo $total_files; ?> "><b><?php echo link_for_file($file["name"]); ?> </b></td> <td><?php echo str_replace(" ", " ", $file["size"]); ?> </td> <?php $flink = isset($file["link"]) ? $file["link"] : "#"; echo (isset($_COOKIE["showAll"]) && $_COOKIE["showAll"] == 1 && $options["show_column_sfile"]["md5"] ? "<td class=\"txtmd5\">{$file["md5"]}</td>" : null) . (!isset($_COOKIE["showAll"]) || isset($_COOKIE["showAll"]) && $_COOKIE["showAll"] != 1 ? ($options["show_column_sfile"]["downloadlink"] ? "<td title=\"{$flink}\">" . ($flink ? "<a href=\"{$flink}\">" . trimlink($flink) . "</a>" : "") . '</td>' : '') . ($options["show_column_sfile"]["comments"] ? '<td>' . (isset($file["comment"]) ? str_replace("\\r\\n", "<br />", $file["comment"]) : "") . '</td>' : '') : '') . ($options["show_column_sfile"]["date"] ? '<td>' . str_replace(" ", " ", date("d.m.Y H:i:s", $file["date"])) . '</td>' : '') . ($options["show_column_sfile"]["age"] ? '<td><small>' . $file["age"] . '</small></td>' : '') . ($feat_ajax["ajax_delete"] == "1" ? "<td><a id=\"dL-{$total_files}\" href=\"del.php?d={$_fdkey}&lineid={$total_files}\" rel=\"facebox\"> <img src=\"" . IMAGE_DIR . "rldel.png\" alt=\"X\" /></a></td>" : ""); ?> </tr> <?php } // end- if file exist
function geturl($host, $port, $url, $referer = 0, $cookie = 0, $post = 0, $saveToFile = 0, $proxy = 0, $pauth = 0, $auth = 0, $scheme = "http", $resume_from = 0) { global $nn, $lastError, $PHP_SELF, $AUTH, $IS_FTP, $FtpBytesTotal, $FtpBytesReceived, $FtpTimeStart, $FtpChunkSize, $Resume, $bytesReceived, $fs, $force_name, $options; $scheme .= "://"; if ($post !== 0 && $scheme == "http://") { $method = "POST"; $postdata = formpostdata($post); $length = strlen($postdata); $content_tl = "Content-Type: application/x-www-form-urlencoded" . $nn . "Content-Length: " . $length . $nn; } else { $method = "GET"; $postdata = ""; $content_tl = ""; } if ($cookie) { if (is_array($cookie)) { for ($i = 0; $i < count($cookie); $i++) { $cookies .= "Cookie: " . $cookie[$i] . $nn; } } else { $cookies = "Cookie: " . $cookie . $nn; } } $referer = $referer ? "Referer: " . $referer . $nn : ""; if ($scheme == "https://") { $scheme = "ssl://"; $port = 443; } if ($proxy) { list($proxyHost, $proxyPort) = explode(":", $proxy); $url = $scheme . $host . ":" . $port . $url; $host = $host . ":" . $port; } if ($scheme != "ssl://") { $scheme = ""; } $http_auth = $auth ? "Authorization: Basic " . $auth . $nn : ""; $proxyauth = $pauth ? "Proxy-Authorization: Basic " . $pauth . $nn : ""; $request = $method . " " . str_replace(" ", "%20", $url) . " HTTP/1.1" . $nn . "Host: " . $host . $nn . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" . $nn . "Accept: */*" . $nn . "Accept-Language: en-us;q=0.7,en;q=0.3" . $nn . "Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7" . $nn . "Pragma: no-cache" . $nn . "Cache-Control: no-cache" . $nn . ($Resume["use"] === TRUE ? "Range: bytes=" . $Resume["from"] . "-" . $nn : "") . $http_auth . $proxyauth . $referer . $cookies . "Connection: Close" . $nn . $content_tl . $nn . $postdata; $errno = 0; $errstr = ""; $hosts = ($proxyHost ? $scheme . $proxyHost : $scheme . $host) . ':' . ($proxyPort ? $proxyPort : $port); $fp = @stream_socket_client($hosts, $errno, $errstr, 120, STREAM_CLIENT_CONNECT); //$fp = @fsockopen($proxyHost ? $scheme.$proxyHost : $scheme.$host, $proxyPort ? $proxyPort : $port, $errno, $errstr, 15); if (!$fp) { $dis_host = $proxyHost ? $proxyHost : $host; $dis_port = $proxyPort ? $proxyPort : $port; html_error(sprintf(lang(88), $dis_host, $dis_port)); } if ($errno || $errstr) { $lastError = $errstr; return false; } if ($saveToFile) { if ($proxy) { echo '<p>' . sprintf(lang(89), $proxyHost, $proxyPort) . '<br />'; echo "GET: <b>" . $url . "</b>...<br />\n"; } else { echo "<p>"; printf(lang(90), $host, $port); echo "</p>"; } } ######################################################################### fputs($fp, $request); fflush($fp); $timeStart = getmicrotime(); // Rewrote the get header function according to the proxy script // Also made sure it goes faster and I think 8192 is the best value for retrieving headers // Oops.. The previous function hooked up everything and now I'm returning it back to normal do { $header .= fgets($fp, 16384); } while (strpos($header, $nn . $nn) === false); ######################################################################### if (!$header) { $lastError = lang(91); return false; } $responsecode = ""; preg_match('/^HTTP\\/1\\.0|1 ([0-9]+) .*/', $header, $responsecode); if (($responsecode[1] == 404 || $responsecode[1] == 403) && $saveToFile) { // Do some checking, please, at least tell them what error it was if ($responsecode[1] == 403) { $lastError = lang(92); } elseif ($responsecode[1] == 404) { $lastError = lang(93); } else { // Weird, it shouldn't come here... $lastError = lang(94); } return false; } if ($saveToFile) { //$bytesTotal = intval ( trim ( cut_str ( $header, "Content-Length:", "\n" ) ) ); $bytesTotal = trim(cut_str($header, "Content-Length:", "\n")); global $options; if ($options['file_size_limit'] > 0) { if ($bytesTotal > $options['file_size_limit'] * 1024 * 1024) { $lastError = lang(336) . bytesToKbOrMbOrGb($options['file_size_limit'] * 1024 * 1024) . "."; return false; } } if (stristr($host, "rapidshare") && $bytesTotal < 10000) { while (!feof($fp)) { $page_src .= fread($fp, 1024 * 8); } is_present($page_src, "is already in use with another ip", lang(100)); } if (stristr($host, "imageshack") && $bytesTotal < 15000) { while (!feof($fp)) { $page_src .= fread($fp, 1024 * 8); } is_present($page_src, "To avoid creation of corrupted zip files, you cannot create a zip on this torrent until it is done downloading"); } $redir = ""; if (trim(preg_match('/[^\\-]Location: *(.+)(\\r|\\n)+/i', $header, $redir))) { $redirect = $redir[1]; $lastError = sprintf(lang(95), $redirect); return FALSE; } if (in_array(cut_str($header, "WWW-Authenticate: ", " "), array("Basic", "Digest"))) { $lastError = lang(96); return FALSE; } $ContentType = trim(cut_str($header, "Content-Type:", "\n")); if (stristr($host, "rapidshare") && stristr($ContentType, "text/html") && stristr($header, "404 Not Found")) { unset($saveToFile); $NoDownload = TRUE; } elseif (stristr($host, "megaupload") && stristr($ContentType, "text/html")) { unset($saveToFile); $NoDownload = TRUE; } if ($Resume["use"] === TRUE && !stristr($header, "Content-Range:")) { if (stristr($header, "503 Limit Exceeded")) { $lastError = lang(97); } else { $lastError = lang(98); } return FALSE; } if ($force_name) { $FileName = $force_name; $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $FileName; } else { $ContentDisposition = trim(cut_str($header, "Content-Disposition:", "\n")) . "\n"; if ($ContentDisposition && stripos($ContentDisposition, "filename=") !== false) { $FileName = trim(trim(trim(trim(trim(cut_str($ContentDisposition, "filename=", "\n")), "="), "?"), ";"), '"'); if (strpos($FileName, "/") !== false) { $FileName = basename($FileName); } $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $FileName; } } if (!empty($options['rename_prefix'])) { $File_Name = $options['rename_prefix'] . '_' . basename($saveToFile); $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } if (!empty($options['rename_suffix'])) { $ext = strrchr(basename($saveToFile), "."); $before_ext = explode($ext, basename($saveToFile)); $File_Name = $before_ext[0] . '_' . $options['rename_suffix'] . $ext; $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } if ($options['rename_underscore']) { $File_Name = str_replace(array(' ', '%20'), '_', basename($saveToFile)); $saveToFile = dirname($saveToFile) . PATH_SPLITTER . $File_Name; } $filetype = strrchr($saveToFile, "."); if (is_array($options['forbidden_filetypes']) && in_array(strtolower($filetype), $options['forbidden_filetypes'])) { if ($options['forbidden_filetypes_block']) { $lastError = sprintf(lang(82), $filetype); return false; } else { $saveToFile = str_replace($filetype, $options['rename_these_filetypes_to'], $saveToFile); } } if (@file_exists($saveToFile) && $options['bw_save']) { html_error(lang(99) . ': ' . link_for_file($saveToFile), 0); } if (@file_exists($saveToFile) && $Resume["use"] === TRUE) { $fs = @fopen($saveToFile, "ab"); if (!$fs) { $lastError = sprintf(lang(101), basename($saveToFile), dirname($saveToFile)) . '<br />' . lang(102) . '<br /><a href="javascript:location.reload();">' . lang(103) . '</a>'; return FALSE; } } else { if (@file_exists($saveToFile)) { $saveToFile = dirname($saveToFile) . PATH_SPLITTER . time() . "_" . basename($saveToFile); } $fs = @fopen($saveToFile, "wb"); if (!$fs) { $secondName = dirname($saveToFile) . PATH_SPLITTER . str_replace(":", "", str_replace("?", "", basename($saveToFile))); $fs = @fopen($secondName, "wb"); if (!$fs) { $lastError = sprintf(lang(101), basename($saveToFile), dirname($saveToFile)) . '<br />' . lang(102) . '<br /><a href="javascript:location.reload();">' . lang(103) . '</a>'; return FALSE; } } } flock($fs, LOCK_EX); if ($Resume["use"] === TRUE && stristr($header, "Content-Range:")) { list($temp, $Resume["range"]) = explode(" ", trim(cut_str($header, "Content-Range:", "\n"))); list($Resume["range"], $fileSize) = explode("/", $Resume["range"]); $fileSize = bytesToKbOrMbOrGb($fileSize); } else { $fileSize = bytesToKbOrMbOrGb($bytesTotal); } $chunkSize = GetChunkSize($bytesTotal); echo lang(104) . ' <b>' . basename($saveToFile) . '</b>, ' . lang(56) . ' <b>' . $fileSize . '</b>...<br />'; //$scriptStarted = false; require TEMPLATE_DIR . '/transloadui.php'; if ($Resume["use"] === TRUE) { $received = bytesToKbOrMbOrGb(filesize($saveToFile)); $percent = round($Resume["from"] / ($bytesTotal + $Resume["from"]) * 100, 2); echo '<script type="text/javascript">pr(' . "'" . $percent . "', '" . $received . "', '0');</script>"; //$scriptStarted = true; flush(); } } else { $page = $header; } do { $data = @fread($fp, $saveToFile ? $chunkSize : 16384); // 16384 saw this value in Pear HTTP_Request2 package // (fix - szal) using this actually just causes massive cpu usage for large files, too much data is flushed to the browser!) if ($data == '') { break; } if ($saveToFile) { $bytesSaved = fwrite($fs, $data); if ($bytesSaved > -1) { $bytesReceived += $bytesSaved; } else { $lastError = sprintf(lang(105), $saveToFile); return false; } if ($bytesReceived >= $bytesTotal) { $percent = 100; } else { $percent = @round(($bytesReceived + $Resume["from"]) / ($bytesTotal + $Resume["from"]) * 100, 2); } if ($bytesReceived > $last + $chunkSize) { $received = bytesToKbOrMbOrGb($bytesReceived + $Resume["from"]); $time = getmicrotime() - $timeStart; $chunkTime = $time - $lastChunkTime; $chunkTime = $chunkTime ? $chunkTime : 1; $lastChunkTime = $time; $speed = @round($chunkSize / 1024 / $chunkTime, 2); /*if (!$scriptStarted) { echo('<script type="text/javascript">'); $scriptStarted = true; }*/ echo '<script type="text/javascript">pr(' . "'" . $percent . "', '" . $received . "', '" . $speed . "');</script>"; $last = $bytesReceived; } } else { $page .= $data; } } while (strlen($data) > 0); //echo('</script>'); if ($saveToFile) { flock($fs, LOCK_UN); fclose($fs); if ($bytesReceived <= 0) { $lastError = lang(106); fclose($fp); return FALSE; } } fclose($fp); if ($saveToFile) { return array("time" => sec2time(round($time)), "speed" => @round($bytesTotal / 1024 / (getmicrotime() - $timeStart), 2), "received" => true, "size" => $fileSize, "bytesReceived" => $bytesReceived + $Resume["from"], "bytesTotal" => $bytesTotal + $Resume["from"], "file" => $saveToFile); } else { if ($NoDownload) { if (stristr($host, "rapidshare")) { is_present($page, "You have reached the limit for Free users", lang(107), 0); is_present($page, "The download session has expired", lang(108), 0); is_present($page, "Wrong access code.", lang(109), 0); is_present($page, "You have entered a wrong code too many times", lang(110), 0); print $page; } elseif (stristr($host, "megaupload")) { is_present($page, "Download limit exceeded", lang(111), 0); print $page; } } else { return $page; } } }