. */ ?> setRenderer(new Text_Highlighter_Renderer_Html); echo $highlighter->highlight($str); return TRUE; } $filename = @$_GET["file"]; if (empty($filename)) { die(); } $path = explode("/", $filename); $canonpath = array(); $redirect = FALSE; foreach ($path as $comp) { if ($comp == "" || $comp == ".") continue; elseif ($comp == "..") array_pop($canonpath); else array_push($canonpath, $comp); } $canonfilename = implode("/", $canonpath); if ($canonfilename != $filename) { $query_string = ""; foreach($_GET as $param => $value) { if ($param == "file") continue; if (!empty($query_string)) $query_string .= "&"; $query_string .= "$param=$value"; } if (!empty($query_string)) $query_string .= "&"; $query_string .= "file=$canonfilename"; header("Location: http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?$query_string"); exit; } array_pop($canonpath); $parentfilename = implode("/", $canonpath); if (!file_exists("src/$filename")) { die(); } if (($type = @filetype("src/$filename")) === FALSE) { exit; } if ($type == "dir") { $title = "Index of $filename"; $dirents = array(); if (($dir_handle = @opendir("src/$filename")) !== FALSE) { while (($entname = @readdir($dir_handle)) !== FALSE) { if ($entname == "." || $entname == "..") continue; $dirents[] = array("type" => @filetype("src/$filename/$entname"), "name" => $entname, "size" => !@is_dir("src/$filename/$entname") ? @filesize("src/$filename/$entname") : "-"); } @closedir($dir_handle); $direntdir = array(); $direntname = array(); $direntsize = array(); foreach ($dirents as $key => $dirent) { $direntdir[$key] = $dirent["type"] == "dir" ? 1 : 0; $direntname[$key] = $dirent["name"]; $direntsize[$key] = $dirent["size"]; } $sortkey = @$_GET["sortby"]; unset($sortdir); if (@$_GET["sortdir"] == "asc") $sortdir = SORT_ASC; elseif (@$_GET["sortdir"] == "desc") $sortdir = SORT_DESC; if ($sortkey == "name") { if (!isset($sortdir)) $sortdir = SORT_ASC; array_multisort($direntname, $sortdir, $dirents); } elseif ($sortkey == "size") { if (!isset($sortdir)) $sortdir = SORT_DESC; array_multisort($direntsize, $sortdir, $direntname, SORT_ASC, $dirents); } else { $sortkey = "type"; if (!isset($sortdir)) $sortdir = SORT_DESC; array_multisort($direntdir, $sortdir, $direntname, SORT_ASC, $dirents); } } } else { if (preg_match("/\.c$/", $filename)) $mime_type = "text/x-csrc"; elseif (preg_match("/\.h$/", $filename)) $mime_type = "text/x-chdr"; elseif (preg_match("/\.css/", $filename)) $mime_type = "text/css"; elseif (preg_match("/\.html$/", $filename)) $mime_type = "text/html"; elseif (preg_match("/\.js$/", $filename)) $mime_type = "application/javascript"; elseif (preg_match("/\.php$/", $filename)) $mime_type = "application/x-httpd-php"; elseif (preg_match("/\.sh$/", $filename)) $mime_type = "text/x-sh"; elseif (preg_match("/\.xml$/", $filename)) $mime_type = "application/xml"; elseif (preg_match("/\.xsl$/", $filename)) $mime_type = "application/xml"; elseif (preg_match("/\.gif$/", $filename)) $mime_type = "image/gif"; elseif (preg_match("/\.jpg$/", $filename)) $mime_type = "image/jpeg"; elseif (preg_match("/\.png$/", $filename)) $mime_type = "image/png"; elseif (preg_match("/\.tgz/", $filename)) $mime_type = "application/x-tar"; else $mime_type = "text/plain"; switch (@$_GET["action"]) { case "view": header("Content-Type: text/plain"); header("Content-Disposition: inline; filename=" . basename($filename)); @readfile("src/$filename"); exit; case "download": header("Content-Type: $mime_type"); header("Content-Disposition: attachment; filename=" . basename($filename)); @readfile("src/$filename"); exit; } $title = "View of $filename"; $data = @file_get_contents("src/$filename"); if (preg_match("/\.[ch]$/", $filename)) $lang = "cpp"; elseif (preg_match("/\.css/", $filename)) $lang = "css"; elseif (preg_match("/\.html$/", $filename)) $lang = "html"; elseif (preg_match("/\.js$/", $filename)) $lang = "javascript"; elseif (preg_match("/\.php$/", $filename)) $lang = "php"; elseif (preg_match("/\.sh$/", $filename)) $lang = "sh"; elseif (preg_match("/\.xml$/", $filename)) $lang = "xml"; elseif (preg_match("/\.xsl$/", $filename)) $lang = "xml"; } ?> \n"; } ?> <?=$title?>


XOS"; if (!empty($parentfilename)) { echo " | Parent Directory"; } if ($type != "dir") { echo " | View | Download"; } echo "\n"; ?>

$value) { if ($param == "sortby" || $param == "sortdir") continue; if (!empty($query_string)) $query_string .= "&"; $query_string .= "$param=$value"; } echo "\n"; echo "\n"; $dirstr = $sortdir == SORT_ASC ? "desc" : "asc"; if ($sortkey == "type") { echo "\n"; } else { echo "\n"; } if ($sortkey == "name") { echo "\n"; } else echo "\n"; if ($sortkey == "size") { echo "\n"; } else { echo "\n"; } echo "\n"; if (!empty($parentfilename)) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } foreach ($dirents as $dirent) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
TypeTypeNameNameSizeSize
dir..-
{$dirent["type"]}{$dirent["name"]}"; if ($dirent["type"] == "dir") { echo "/"; } echo "{$dirent["size"]}
\n"; } else { if (strtok($mime_type, "/") == "image") echo "\"$filename\""; elseif (isset($lang)) highlight($data, $lang); else { echo "
\n";
    echo htmlentities($data) . "\n";
    echo "
\n"; } } ?>