<?
/***********************************
* list.php - (c) 2002 by psycco *
* www.psycco.de *
* *
* This source is distributed under *
* GNU/GPL General Public License *
***********************************/
class _file {
var $name;
var $size;
var $lastModified;
var $isDir;
}
function getFileImage($filename) {
// feel free to add more extensions,
// a list of the standart icons shipped with
// apache can be found in the /Apache/icons-folder
// .. where is it on linux machines?
$extension = '';
for($i=strlen($filename);$i>0;$i--) {
if($filename[$i] == '.') {
$extension = strtolower(substr($filename, $i-strlen($filename)));
break;
}
}
if(is_dir($filename))
return '/.icons/dir.gif';
elseif($extension == '.gif' || $extension == '.png' || $extension == '.bmp' || $extension == '.jpg')
return '/.icons/image2.gif';
else if($extension == '.txt' || $extension == '.htm' || $extension == '.html' || $extension == '.css')
return '/.icons/text.gif';
elseif($extension == '.zip' || $extension == '.rar' || $extension == '.ace' || $extension == '.gz')
return '/.icons/compressed.gif';
elseif($extension == '.avi' || $extension == '.mov' || $extension == '.mpg' || $extension == '.mpeg' || $extension == '.divx')
return '/.icons/movie.gif';
elseif($extension == '.wav' || $extension == '.mp3' || $extension == '.snd')
return '/.icons/sound2.gif';
elseif($extension == '.exe')
return '/.icons/binary.gif';
else
return '/.icons/unknown.gif';
}
function shorten($file) {
if(strlen($file) > 23) {
$retval = substr($file,0,20) . '..>';
return $retval;
} else {
return $file;
}
}
function spaces($file) {
$retvar = '';
if(strlen($file) >= 23)
return ' ';
else {
for($i=0;$i<(24-strlen($file));$i++)
$retval .= ' ';
return $retval;
}
}
function _filesize($size) {
if($size >= 1024)
return bcdiv($size,1024,1).'k';
elseif($size >= 1048576)
return bcdiv($size,1048576,1).'M';
elseif($size >= 1073741824)
return bcdiv($size,1073741824,1).'G';
else
return $size;
}
function cmp ($a, $b) {
global $sortBy, $order;
if ($a->$sortBy == $b->$sortBy) return 0;
return ($a->$sortBy > $b->$sortBy) ? $order : ($order*-1);
}
if($showsource <> 1) {
$sortBy = '';
$order = '';
if(!isset($C) || $C == 'D') $C = 'N';
if(!isset($O)) $O = 'A';
if($C == 'N') $sortBy = 'name';
if($C == 'M') $sortBy = 'lastModified';
if($C == 'S') $sortBy = 'size';
if($O == 'A')
$order = 1;
else
$order = -1;
// anybody knows how to get the description of the file?
$files = Array();
$dummy = new _file;
$d = dir('.');
$i = 0;
while ($entry = $d->read()) {
if($entry != '.' && $entry != '..' && $entry != substr($PHP_SELF,1) && substr($entry,0,1) != '.') {
$dummy->name = $entry;
$dummy->size = filesize($entry) ? filesize($entry) : '-';
$dummy->lastModified = filemtime($entry);
$dummy->isDir = is_dir($entry);
$files[$i] = $dummy;
$i++;
}
}
$d->close();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Index of <? echo substr($PATH_INFO, 0, strlen($PATH_INFO)-strlen($PHP_SELF)+1); ?></TITLE>
</HEAD>
<BODY>
<H1>Index of <? echo substr($PATH_INFO, 0, strlen($PATH_INFO)-strlen($PHP_SELF)+1); ?></H1>
<PRE><IMG SRC="/.icons/blank.gif" ALT=" "> <A HREF="?C=N&O=<? if($O == 'A') echo 'D'; else echo 'A'; ?>">Name</A> <A HREF="?C=M&O=<? if($O == 'A') echo 'D'; else echo 'A'; ?>">Last modified</A> <A HREF="?C=S&O=<? if($O == 'A') echo 'D'; else echo 'A'; ?>">Size</A> <A HREF="?C=D&O=<? if($O == 'A') echo 'D'; else echo 'A'; ?>">Description</A>
<HR />
<IMG SRC="/.icons/back.gif" ALT="[DIR]"> <A HREF="..">Parent Directory</A> <?=date('d-M-Y H:i', filemtime('..'))?> -
<?
usort($files, 'cmp');
for($i=0;$i<count($files);$i++) {
echo '<IMG SRC="'.getFileImage($files[$i]->name).'" ALT="[IMG]"> <A HREF="'.$files[$i]->name.'">'.shorten($files[$i]->name).'</A>'.spaces($files[$i]->name).date('d-M-Y H:i', $files[$i]->lastModified).' '._filesize($files[$i]->size).' '."\n";
}
?>
<HR /></PRE>
<?
echo substr($SERVER_SIGNATURE,0,strlen($SERVER_SIGNATURE)-11).' (powered by <a href="'.$PHP_SELF.'?showsource=1">list.php</a>)</address>';
?>
</BODY></HTML>
<?
} else {
highlight_file('.'.$PHP_SELF);
}
?>