if($curl[2] != 0){ OC_ocDownloaderPB::setText($l->t('Waiting for').' '.$curl[2].'s'); sleep($curl[2]); } $pr_url = $m[1].'://'.$curl[0].'/cgi-bin/rsapi.cgi?sub=download&bin=1'; if(isset($user_info['us_username']) && isset($user_info['us_password'])){ $pr_url .= '&login='******'us_username'].'&password='******'us_password']; } $pr_url .= '&fileid='.$m[2].'&filename='.$m[3].'&dlauth='.$curl[1]; $curl = OC_ocDownloaderHTTP::execURL($pr_url, 'rapidshare'); if(preg_match('/^ERROR.*\((.*)\)(\n){0,1}.*$/', $curl, $m)){ if(isset($errors[$m[1]])){ OC_ocDownloaderPB::setError($errors[$m[1]]); }else{ OC_ocDownloaderPB::setError($l->t('Unknown error').' ('.$m[1].')'); } }else{ OC_ocDownloaderHTTP::getFile($pr_url, $path, $l, $ow); } } } } } } } ?> </body> </html>
/** * Get initial content */ private static function getContent(){ self::$percentDone = floatval(self::$percentDone); $percentDone = number_format(self::$percentDone, self::$decimals, '.', '') .'%'; $content = '<div id="'.self::$pbid.'" class="pb_container"><div id="'.self::$textid.'" class="'.self::$textid.'">'.$percentDone.'</div><div id="pb_bar" class="pb_bar"><div id="'.self::$pbarid.'" class="pb_before" style="width: '.$percentDone.';"></div><div id="'.self::$tbarid.'" class="pb_after"></div></div><br style="height: 1px; font-size: 1px;"/></div>'; $content .= '<style>.pb_container{position:relative;}.pb_bar{width:100%;height:1em;border:1px solid silver;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;}.pb_before{float:left;height:1em;background-color:#1D2D44;-moz-border-radius-topleft:5px;-moz-border-radius-bottomleft:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;}.pb_after{float:left;height:1em;background-color:#FEFEFE;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;}.pb_text{text-align:right;}</style>'."\r\n"; return $content; }
/** * Get the file by an URL * @param $url URL of the file * @param $path Simple path of the file * @param $l Lang * @param $overwrite Overwrite the target file */ public static function getFile($url, $path, $l, $overwrite = 0){ try{ $code = 0; if(!self::checkFileAccess($url, $code)){ OC_ocDownloaderPB::setError($l->t(self::$errors[$code])); exit(); } $pathinfo = pathinfo($path); $fs = OCP\Files::getStorage('files'); if($fs->file_exists('/Downloads/' . $pathinfo['basename']) && !$overwrite){ $pathinfo['basename'] = md5(rand()) . '_' . $pathinfo['basename']; } $fs = $fs->fopen('/Downloads/' . $pathinfo['basename'], 'w'); $size = self::getRemoteFileSize($url); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); exit(); } $chunkSize = self::getChunkSize($size); $fp = fopen($url, 'rb'); $received = $last = 0; while(!feof($fp)){ $data = @fread($fp, $chunkSize); if($data == ''){ break; } $saved = fwrite($fs, $data); if($saved > -1){ $received += $saved; } if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); } OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory($pathinfo['basename'], 1); fclose($fp);fclose($fs); }catch(exception $e){ OC_ocDownloaderPB::setError($l->t('Unknown error')); } }
private static function get_curl_binary(){ $size = self::getRemoteFileSize(self::$flv_url); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); exit(); } $chunkSize = self::getChunkSize($size); self::$fp = fopen(self::$flv_url, 'rb'); $received = $last = 0; while(!feof(self::$fp)){ $data = @fread(self::$fp, $chunkSize); if($data == ''){ break; } $saved = fwrite(self::$fs, $data); if($saved > -1){ $received += $saved; } if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); } OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory(self::$final_flv_filename, 1); fclose(self::$fp);fclose(self::$fs); }
$ow = urldecode(trim($_GET['o'])); if(strcmp(substr($url,0,6), 'ftp://') != 0 && strcmp(substr($url,0,7), 'ftps://') != 0){ $url = 'ftp://'.$url; } $url = parse_url($url); if(!isset($url['scheme']) || !isset($url['host']) || !isset($url['user']) || !isset($url['pass']) || !isset($url['path'])){ OC_ocDownloaderPB::setError($l->t('Wrong URL')); }else{ $port = 0; if(isset($url['port'])){ $port = $url['port']; } if(!OC_ocDownloaderFTP::connectToHost($url['scheme'], $url['host'], $port, $url['user'], $url['pass'])){ OC_ocDownloaderPB::setError($l->t('Connection timeout')); }else{ if(OC_ocDownloaderFTP::isDir($url['path'])){ OC_ocDownloaderPB::setError($l->t('Enter a File URL')); OC_ocDownloaderFTP::closeConnection(); }else{ OC_ocDownloaderFTP::getFile($url['path'], $l, $ow); } } } } ?> </body> </html>
/** * Get file * @param $path The remote file path * @param $l Lang * @param $overwrite Overwrite the target file */ public static function getFile($path, $l, $overwrite){ try{ $pathinfo = pathinfo($path); $fs = OCP\Files::getStorage('files'); if($fs->file_exists('/Downloads/' . $pathinfo['basename']) && !$overwrite){ $pathinfo['basename'] = md5(rand()) . '_' . $pathinfo['basename']; } $size = self::getRemoteFileSize($path); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); self::closeConnection(); exit(); } $chunkSize = self::getChunkSize($size); $received = $last = 0; $ret = ftp_nb_get(self::$conn, $fs->getLocalFile('/Downloads/' . $pathinfo['basename']), $path, FTP_BINARY); while($ret == FTP_MOREDATA){ $received += $fs->filesize('/Downloads/' . $pathinfo['basename']); if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); $ret = ftp_nb_continue(self::$conn); } if($ret != FTP_FINISHED){ OC_ocDownloaderPB::setError($l->t('Download error')); self::closeConnection(); exit(); }else{ OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory($pathinfo['basename'], 1); } self::closeConnection(); }catch(exception $e){ OC_ocDownloaderPB::setError($l->t('Unknown error')); } }
OC_ocDownloaderPB::init(); echo '<div style="width:99%;">'; OC_ocDownloaderPB::render(); echo '</div>'; OC_ocDownloaderPB::setText($l->t('Prepare download ...')); $pr = urldecode(trim($_GET['p'])); $url = urldecode(trim($_GET['u'])); $ow = urldecode(trim($_GET['o'])); if(strcmp(substr($url,0,7), 'http://') != 0 && strcmp(substr($url,0,8), 'https://') != 0){ $url = 'http://'.$url; } $url = parse_url($url); if(!isset($url['scheme']) || !isset($url['host']) || !isset($url['path'])){ OC_ocDownloaderPB::setError($l->t('Connection error ...')); }else{ $path = $url['path']; $url = $url['scheme'].'://'.$url['host'].(isset($url['port'])?':'.$url['port']:'').$url['path']; if(!preg_match('/^pr_([0-9]{1,4})$/', $pr, $m)){ OC_ocDownloaderPB::setError($l->t('Unknown error')); }else{ OC_ocDownloaderHTTP::getFile($url, $path, $l, $ow); } } ?> </body> </html>
<body> <?php OC_ocDownloaderPB::init(); echo '<div style="width:99%;">'; OC_ocDownloaderPB::render(); echo '</div>'; OC_ocDownloaderPB::setText($l->t('Prepare download ...')); $pr = urldecode(trim($_GET['p'])); $url = urldecode(trim($_GET['u'])); $ow = urldecode(trim($_GET['o'])); if(strcmp(substr($url,0,7), 'http://') != 0 && strcmp(substr($url,0,8), 'https://') != 0){ $url = 'http://'.$url; } $purl = parse_url($url); if(!isset($purl['query'])){ OC_ocDownloaderPB::setError($l->t('Provide a good URL !')); }else{ if(strcmp(substr($purl['query'],0,2),'v=') != 0){ OC_ocDownloaderPB::setError($l->t('Provide a good URL !')); }else{ $filename = substr($purl['query'],2) . '.flv'; OC_ocDownloaderYT::init($url, $filename, 0, $ow); } } ?> </body> </html>