| 
<?php
/*
 package::i.tools
 
 php-downloader    v1.0    -    www.ipunkt.biz
 
 (c)    2002 - www.ipunkt.biz (rok)
 */
 
 //    INFO    //
 $info  = 'php-downloader v1.0 - www.ipunkt.biz'."\n";
 $info .= '===================================='."\n";
 $info .= $_SERVER['HTTP_REFERER']."\n";
 //    USER-INFO    //
 // Whether the os php is running on is windows or not
 if (!defined('IS_WINDOWS')) {
 if (defined('PHP_OS') && eregi('win', PHP_OS)) {
 define('IS_WINDOWS', 1);
 } else {
 define('IS_WINDOWS', 0);
 }
 }
 
 // Determines platform (OS), browser and version of the user
 // Based on a phpBuilder article:
 //   see http://www.phpbuilder.net/columns/tim20000821.php
 if (!defined('USR_OS')) {
 // loic1 - 2001/25/11: use the new globals arrays defined with php 4.1+
 if ( !empty($_SERVER['HTTP_USER_AGENT']) )
 {
 $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
 }
 elseif ( !empty($HTTP_SERVER_VARS['HTTP_USER_AGENT']) )
 {
 $HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
 }
 elseif ( !isset($HTTP_USER_AGENT) )
 {
 $HTTP_USER_AGENT = '';
 }
 
 // 1. Platform
 if ( strstr($HTTP_USER_AGENT, 'Win') )
 {
 define('USR_OS', 'Win');
 }
 elseif ( strstr($HTTP_USER_AGENT, 'Mac') )
 {
 define('USR_OS', 'Mac');
 }
 elseif ( strstr($HTTP_USER_AGENT, 'Linux') )
 {
 define('USR_OS', 'Linux');
 }
 elseif ( strstr($HTTP_USER_AGENT, 'Unix') )
 {
 define('USR_OS', 'Unix');
 }
 elseif ( strstr($HTTP_USER_AGENT, 'OS/2') )
 {
 define('USR_OS', 'OS/2');
 }
 else
 {
 define('USR_OS', 'Other');
 }
 
 // 2. browser and version
 if ( ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version) )
 {
 define('USR_BROWSER_VER', $log_version[2]);
 define('USR_BROWSER_AGENT', 'OPERA');
 }
 elseif ( ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version) )
 {
 define('USR_BROWSER_VER', $log_version[1]);
 define('USR_BROWSER_AGENT', 'IE');
 }
 elseif ( ereg('OmniWeb/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version) )
 {
 define('USR_BROWSER_VER', $log_version[1]);
 define('USR_BROWSER_AGENT', 'OMNIWEB');
 }
 elseif ( ereg('Mozilla/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version) )
 {
 define('USR_BROWSER_VER', $log_version[1]);
 define('USR_BROWSER_AGENT', 'MOZILLA');
 }
 elseif ( ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version) )
 {
 define('USR_BROWSER_VER', $log_version[1]);
 define('USR_BROWSER_AGENT', 'KONQUEROR');
 }
 else
 {
 define('USR_BROWSER_VER', 0);
 define('USR_BROWSER_AGENT', 'OTHER');
 }
 }
 
 
 
 if ( isset($_REQUEST['file']) )
 {
 //    defines filename, extension and also mime types
 if ( file_exists($_REQUEST['file']) )
 {
 $pi = pathinfo($_REQUEST['file']);
 $path = $pi['dirname'].'/';
 $filename = $pi['basename'];
 
 $info .= $filename.' ('.filesize($path.$filename).' bytes)';
 
 if ( $_REQUEST['method'] && ($_REQUEST['method'] == 'gzip' || $_REQUEST['method'] == 'tar') )
 {
 $ext = '.tar.gz';
 $mime_type = 'application/x-gzip';
 }
 elseif ( $_REQUEST['method'] && $_REQUEST['method'] == 'zip')
 {
 $ext = '.zip';
 $mime_type = 'application/x-zip';
 }
 else
 {
 $ext       = '';
 // loic1: 'application/octet-stream' is the registered IANA type but
 //        MSIE and Opera seems to prefer 'application/octetstream'
 $mime_type = (USR_BROWSER_AGENT == 'IE' || USR_BROWSER_AGENT == 'OPERA')
 ? 'application/octetstream'
 : 'application/octet-stream';
 }
 
 // Send headers
 header('Content-Type: '.$mime_type);
 // lem9 & loic1: IE need specific headers
 if (USR_BROWSER_AGENT == 'IE')
 {
 header('Content-Disposition: inline; filename="'.$filename.$ext.'"');
 header('Expires: 0');
 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 header('Pragma: public');
 }
 else
 {
 header('Content-Disposition: attachment; filename="'.$filename.$ext.'"');
 header('Expires: 0');
 header('Pragma: no-cache');
 }
 
 // get dump_buffer
 $fp = fopen($path.$filename, 'rb');
 $dump_buffer = fread($fp, filesize($path.$filename));
 fclose($fp);
 
 // displays the dump...
 // 1. as a gzipped file
 if ( isset($_REQUEST['method']) && $_REQUEST['method'] == 'zip') {
 if ( @function_exists('gzcompress') )
 {
 require_once('class.zipfile.php');
 $zipfile = new zipfile();
 $zipfile->addFile($dump_buffer, $filename);
 $zipfile->addFile($info, 'info.txt');
 echo $zipfile->file();
 }
 }
 // 2. as a gzipped file
 elseif ( isset($_REQUEST['method']) && ($_REQUEST['method'] == 'gzip' || $_REQUEST['method'] == 'tar') )
 {
 if ( @function_exists('gzencode') )
 {
 require_once('class.tar.php');
 $tar = new tar();
 $tar->addFile($path.$filename);
 //$tar->addFile();
 echo $tar->toTarOutput($filename.$ext, true);
 }
 }
 // 3. on screen or as a text file
 else {
 echo $dump_buffer;
 }
 
 // 4. count downloads
 $fc = @fopen('php_downloader.counter', 'a');
 $method = ( !isset($_REQUEST['method']) ) ? 'plain' : $_REQUEST['method'];
 @fwrite($fc, date('r').';'.$_REQUEST['file'].';'.$method.';'.$_SERVER["REMOTE_ADDR"]."\n");
 @fclose($fc);
 }
 else
 {
 echo "No such file or directory";
 }
 
 }
 else
 header('location: index.html');
 exit;
 ?>
 |