-> <\/a> return 'document.write("'.$text.'");'; } } $aus = ''; if ($email != '') { $aus .= ''; } return $aus; } // Equal code in Accessor function absolute_path_to_relative_path($path, $new_base) { $path = realpath($path); $new_base = realpath($new_base); return '.'.str_replace($new_base, '', $path); } // Equal code in Accessor function beginning_in_array($search_string, $array) { if (isset($array)) { foreach ($array as $val) { if (substr($search_string, 0, strlen($val)) == $val) return true; } } return false; } function is_in_allow_list($directory) { if (isset($_SESSION['dateibrowser_allowdirs'])) { return beginning_in_array(realpath($directory).'/', $_SESSION['dateibrowser_allowdirs']); } else { return false; } } // Equal code in Accessor function dir_add_trailing_backslash($directory) { if (substr($directory, strlen($directory)-1, 1) != '/') $directory .= '/'; return $directory; } // http://snippets.dzone.com/posts/show/2776 function file_extension($filename) { $path_info = pathinfo($filename); return $path_info['extension']; } function is_an_urlfile($file) { return (strtolower(file_extension($file)) == 'url'); } function get_url_from_urlfile($file) { // http://www.viathinksoft.de/?page=codelib&showid=67 if (!file_exists($file)) return false; if (!is_readable($file)) return false; $raw = file_get_contents($file); $raw = str_replace("\r", "\n", $raw); $ary = explode("\n", $raw); $in_section = false; foreach ($ary as $val) { if ($in_section) { $bry = explode('=', $val); if (trim(strtolower($bry[0])) == strtolower('URL')) { array_shift($bry); return implode('=', $bry); } } if (substr(trim($val), 0, 1) == '[') { $in_section = false; } if (str_replace(' ', '', strtolower($val)) == strtolower('[InternetShortcut]')) { $in_section = true; } } unset($in_section); unset($val); return false; } function is_hidden($file_or_dir) { global $hidden_file_masks; // Die systemeigenen und benutzerdefinierten Masken ausblenden foreach ($hidden_file_masks as $val) { if (fnmatch($val, basename($file_or_dir))) return true; } // Das eigene Script ausblenden if (realpath($file_or_dir) == $_SERVER['SCRIPT_FILENAME']) return true; return false; } function is_directory_empty($directory) { $directory = dir_add_trailing_backslash($directory); $c = 0; $handle = openDir($directory); while ($file = readDir($handle)) { if (($file != '.') && ($file != '..') && (!is_hidden($directory.$file))) { $c++; } } closeDir($handle); return $c == 0; } // Equal code in Accessor function list_up_directories($directory) { $idir = realpath($directory); $idir = dir_add_trailing_backslash($idir); $ary[] = $idir; $alt = NULL; while (($alt != $idir) && ($idir != '/')) { $alt = $idir; $idir = @realpath($idir.'../'); $idir = dir_add_trailing_backslash($idir); $ary[] = $idir; } unset($alt); return $ary; } function is_secured_directory($directory) { // Es werden auch alle übergeordnete Verzeichnisse durchsucht $baum = list_up_directories($directory); $res = false; foreach ($baum as $val) { if ((has_htaccess_file($val)) && (htaccess_file_is_password_secured($val.'.htaccess'))) { $res = true; break; } } return $res; } function has_htaccess_file($directory) { return @file_exists(dir_add_trailing_backslash($directory).'.htaccess'); } function htaccess_file_is_password_secured($file) { $c = file_get_contents($file); $pos = stripos($c, 'Require '); return ($pos !== false); } function has_accessor($directory) { return file_exists(dir_add_trailing_backslash($directory).ACCESSOR_FILE); } function my_filesize($file) { $size = filesize($file); // Quelle: http://snipplr.com/view/4633/convert-size-in-kb-mb-gb-/ // An deutsche Kommanotation angepasst $filesizename = array(' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'); return $size ? number_format(round($size/pow(1024, ($i = floor(log($size, 1024)))), 2), 2, ',', '.') . $filesizename[$i] : '0 Bytes'; } function my_filemtime($file) { return date ('d.m.Y H:i', filemtime($file)); } function remove_pointslash($dir) { if (substr($dir, 0, 2) == './') $dir = substr($dir, 2, strlen($dir)-2); return $dir; } function rawurlencode_without_slashes($directorytree) { $r = ''; $ary = explode('/', $directorytree); foreach ($ary as $val) { $r .= rawurlencode($val).'/'; } unset($val); unset($ary); $r = substr($r, 0, strlen($r)-1); return $r; } function fn_decode($filename) { // return utf8_decode($filename); return mb_convert_encoding($filename, strtoupper(PAGE_ENCODING), FILENAME_ENCODING); } function cut_off_beginning($full, $part) { if (substr($full, 0, strlen($part)) == $part) { return substr($full, strlen($part), strlen($full)-strlen($part)); // cutted } else { return $full; // false; } } session_start(); if (isset($_GET['redirect_data'])) { // Ein Verzeichnis wurde direkt aufgerufen und per mod_rewrite übergeben! // $dir = './'.cut_off_beginning(dir_add_trailing_backslash($_SERVER['DOCUMENT_ROOT']).$_GET['redirect_data'], DATEIBROWSER_ROOT); $dir = './'.$_GET['redirect_data']; } else { $dir = (isset($_GET['dir'])) ? $_GET['dir'] : './'; } // TODO: GEHT NICHT /* if (USE_REDIRECT) { // Ersatz des Accessors // ToDo: Funktioniert nicht bei direkt angewählten Unterverzeichnissen! if (is_secured_directory($dir)) { $_SESSION['dateibrowser_allowdirs'][] = dir_add_trailing_backslash($dir); } } */ $dir = str_replace('../', '', $dir); // Schutz vor Hackern $dir = dir_add_trailing_backslash($dir); if ((is_secured_directory($dir)) && (!is_in_allow_list($dir))) { // Zum geschützen Verzeichnis hin umleiten if (USE_REWRITING) { // Wir brauchen beim Rewriting nur Umleiten, wenn jemand wirklich index.php?dir=... eingegeben hat // Ansonsten befinden wir uns ja offiziell bereits im Verzeichnis, da die Umleitung still erfolgte if (!isset($_GET["redirect_data"])) { header('location: '.$dir); die(); } } else { if (has_accessor($dir)) { header('location: '.$dir.ACCESSOR_FILE); die(); } else { // Vielleicht ist es ein Unterverzeichnis und ein höher liegendes Verzeichnis besitzt einen Accessor $baum = list_up_directories($dir); foreach ($baum as $val) { if (has_accessor($val)) { header('location: '.absolute_path_to_relative_path($val, DATEIBROWSER_ROOT).'/'.ACCESSOR_FILE.'?goto='.$dir); die(); } } unset($baum); // Letzte Möglichkeit: Apache-Browser header('location: '.$dir); die(); } } } echo ' '.htmlentities(SEITEN_TITEL).' '; if (USE_REWRITING) echo ''; foreach ($additional_head_elements as $val) { echo ' '.$val."\n"; } unset($val); echo '

'.htmlentities(SEITEN_TITEL).'

'."\r\n\r\n"; function rec_show_folder($directory) { if (!is_dir($directory)) { echo '

Fehler!
'; echo '

Dieses Verzeichnis existiert nicht mehr oder wurde umbenannt. Bitte suchen Sie das Verzeichnis im Index erneut.

'; } else { $files = array(); $directories = array(); $directory = dir_add_trailing_backslash($directory); $handle = openDir($directory); while ($file = readDir($handle)) { if (($file != '.') && ($file != '..')) { if (is_dir($directory.$file)) { array_push($directories, $file); } else { array_push($files, $file); } } } closeDir($handle); sort($directories); sort($files); $somethingfound = false; echo ''."\r\n\r\n"; if (!$somethingfound) { echo '

In diesem Verzeichnis befinden sich keine Dateien.

'; } } } $dx = ''; $last_complete = ''; $tmp = ''; $ary = explode('/', $dir); array_pop($ary); foreach ($ary as $val) { $last_complete = $tmp; $tmp .= $val.'/'; if ($val == '.') $val = ROOT_DIR_NAME; $dx .= ''.fn_decode($val).' / '; } unset($tmp); echo "

Aktuelles Verzeichnis: $dx

\r\n\r\n"; unset($dx); if ($last_complete != '') { echo '

[^] Eine Verzeichnisebene höher

'; } rec_show_folder($dir); echo 'PHP-Dateibrowser '.B_VERSION.' © Copyright '.B_START_YEAR; if (date('Y') != B_START_YEAR) echo ' - '.date('Y'); echo ' ViaThinkSoft.
'; echo 'Betreuer dieser Webseite und Eigentümer der Inhalte: '.secure_email(PERSON_EMAIL, PERSON_NAME, false).".\r\n\r\n"; echo ' '; ?>