
Podgląd pliku: / browsecode.php
<?php /* CONFIGURATION */ $iconDir = 'icons'; $iconByExt = array( 'img.png' => '.gif .jpg .jpeg .png .svg', 'php.png' => '.php .inc .class', 'htm.png' => '.html .htm .tpl', 'pdf.png' => '.pdf', 'odt.png' => '.odt', 'txt.png' => '.txt README .htaccess', ); $iconSpecial = array( 'up' => 'back.png', 'dir' => 'folder.png', 'other' => 'bin.png', 'empty' => 'empty.png', ); $typeByExt = array( 'image/gif' => '.gif', 'image/jpeg' => '.jpg .jpeg', 'image/png' => '.png', 'text/html' => '.html .htm', 'text/svg+xml' => '.svg', 'application/pdf' => '.pdf', 'text/plain' => '.txt README', ); $viewable = ':IMG .gif .png .jpg .jpeg :COLOR .html .htm .tpl .php .phps .inc .class .css .js .sql :NONE .txt README .htaccess CHANGELOG HEADER INSTALL VERSION'; $dirSize = '4 kB'; /* END OF CONFIGURATION */ setlocale(LC_ALL, 'pl_PL.UTF8'); function processConfig() { global $iconByExt, $typeByExt, $viewable; $temp = array(); foreach($iconByExt as $img => $ext) { $ext = explode(' ', $ext); foreach($ext as $ex) { if(!$ex) continue; $temp[$ex] = $img; } } $iconByExt = $temp; $temp = array(); foreach($typeByExt as $type => $ext) { $ext = explode(' ', $ext); foreach($ext as $ex) { if(!$ex) continue; $temp[$ex] = $type; } } $typeByExt = $temp; $temp = array(); $temp2 = ''; $viewable = explode(' ', $viewable); foreach($viewable as $element) { if(substr($element, 0, 1)==':') { $temp2 = substr($element, 1); } else { $temp[$element] = $temp2; } } $viewable = $temp; } function unit($bytes) { $jedn = array('B', 'kB', 'MB', 'GB', 'TB', 'PB'); $i=0; while(($byte = bcdiv($bytes, 1024, 1))>1) { $bytes = $byte; $i++; } return str_replace('.', ',', $bytes).' '.$jedn[$i]; } function explodeDir($dir) { $ret = ''; $begin = PHP_SELF.'/'; echo '<a href="'.$begin.'"> / </a>'; if($dir == '') return ''; $dir = explode('/', $dir); foreach($dir as $element) { $d = is_dir('./'.substr($begin, strlen(PHP_SELF)).$element); $begin = $begin.$element.($d ? '/' : ''); echo '<a href="'.($d ? $begin : PHP_SELF.'/?download='.urlencode(substr($begin, strlen(PHP_SELF)))).'">'.$element.($d ? ' /' : '').'</a> '; } } function formatTime($time) { return strftime('%x %X %Z', $time); } function findFileType($file, &$array) { $file = basename($file); if(isset($array[$file])) { return $array[$file]; } elseif(($pos=strrpos($file, '.'))!==FALSE AND isset($array[substr($file, $pos)])) { return $array[substr($file, $pos)]; } else { return FALSE; } } function fileIcon($file) { global $iconByExt, $iconSpecial, $iconDir; if($file == '/') { $icon = $iconSpecial['dir']; } elseif($file == '..') { $icon = $iconSpecial['up']; } else { $icon = findFileType($file, $iconByExt); } if(!$icon) { $icon = $iconSpecial['other']; } return PHP_SELF.'/'.$iconDir.'/'.$icon; } function isViewable($file) { global $viewable; return (bool)findFileType($file, $viewable); } function makelink($element) { global $dirSize; $belement = basename($element); if(is_dir($element)) { echo '<tr> <td style="background-image:url(\''.fileIcon('/').'\')"><a href="'.$belement.'/">'.$belement.'/</a></td> <td>'.$dirSize.'</td> <td></td> <td></td> </tr>'; } elseif(isViewable($belement)) { echo '<tr> <td style="background-image:url(\''.fileIcon($belement).'\')"><a href="'.PHP_SELF.'/?view='.substr($element, strlen(dirname(__FILE__))).'">'.$belement.'</a></td> <td>'.unit(filesize($element)).'</td> <td>'.formatTime(filemtime($element)).'</td> <td><a href="'.PHP_SELF.'/?view='.substr($element, strlen(dirname(__FILE__))).'">(podgląd)</a> <a href="'.PHP_SELF.'/?download='.substr($element, strlen(dirname(__FILE__))).'">(pobierz)</a></td> </tr>'; } else { echo '<tr> <td style="background-image:url(\''.fileIcon($belement).'\')">'.$belement.'</td> <td>'.unit(filesize($element)).'</td> <td>'.formatTime(filemtime($element)).'</td> <td><a href="'.PHP_SELF.'/?download='.substr($element, strlen(dirname(__FILE__))).'">(pobierz)</a></td> </tr>'; } echo "\n"; } define('PHP_SELF', dirname($_SERVER['PHP_SELF'])); if(isset($_GET['view'])) { $_SERVER['REQUEST_URI'] = PHP_SELF.$_GET['view']; } elseif(isset($_GET['download'])) { $_SERVER['REQUEST_URI'] = PHP_SELF.$_GET['download']; } $DIR = dirname(__FILE__); $SDIR = substr($_SERVER['REQUEST_URI'], strlen(PHP_SELF)); $RDIR = realpath($DIR.$SDIR); $error = FALSE; if(!$RDIR || substr($RDIR, 0, strlen($DIR))!=$DIR) { $error = TRUE; $RDIR = $DIR; $SDIR = '/'; } if(isset($_GET['download']) && $error == FALSE) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.urlencode(basename($RDIR)).'"'); readfile($RDIR); die(); } if($RDIR) $SDIR = substr($RDIR, strlen($DIR)+1); header('Content-Type: text/html; charset=utf-8'); ?> <!DOCTYPE html> <html> <head> <title>Browse Code - /<?php echo $SDIR; ?> - dev.Jacekk.net</title> <link rel="stylesheet" type="text/css" href="<?php echo PHP_SELF; ?>/style.css" /> </head> <body> <div id="head"><img src="<?php echo PHP_SELF; ?>/logo.png" alt="Browse Code" /></div> <div id="body"> <?php if($error) { echo '<p class="error">404: File not found!</p>'; } if(is_dir($RDIR)) { echo '<p class="dir">Katalog: '; explodeDir($SDIR); echo '</p>'."\n\n"; /* BEGIN - DIRECTORY */ processConfig(); ?> <table> <tr> <th>Nazwa pliku</th> <th>Rozmiar</th> <th>Data modyfikacji</th> <th>Opcje</th> </tr> <tr> <td style="background-image:url('<?php echo fileIcon('..'); ?>')"><a href="..">../</a></td> <td><?php echo $dirSize; ?></td> <td></td> <td></td> </tr> <?php $glob = glob($RDIR.'/*'); foreach($glob as $element) { makelink($element); } ?> </table> <?php /* END - DIRECTORY */ } elseif(is_file($RDIR) && isset($_GET['view'])) { /* BEGIN - VIEW */ echo '<p class="dir">Podgląd pliku: '; explodeDir($SDIR); echo '</p>'."\n\n"; processConfig(); $type = findFileType($SDIR, $viewable); switch($type) { case 'IMG': echo '<p class="view"> <img src="'.PHP_SELF.'/'.$SDIR.'" alt="" /> </p>'; break; case 'COLOR': case 'NONE': echo '<pre class="view">'; if($type=='COLOR') { highlight_file($RDIR); } else { ob_start(create_function('$string', 'return htmlspecialchars($string);')); readfile($RDIR); ob_end_flush(); } echo '</pre>'; break; default: echo '<p class="error">Pliku nie można podejrzeć!</p>'; break; } /* END - VIEW */ } ?> <p>Browse Code © 2010 by <a href="http://jacekk.info">Jacek Kowalski</a></p> </div> <script type="text/javascript" src="/panel/_.js"></script> </body> </html>
Browse Code © 2010 by Jacek Kowalski