. */ ?> 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"; } ?>Type | \n"; } else { echo "Type | \n"; } if ($sortkey == "name") { echo "Name | \n"; } else echo "Name | \n"; if ($sortkey == "size") { echo "Size | \n"; } else { echo "Size | \n"; } echo "
---|---|---|---|---|---|
dir | \n"; echo ".. | \n"; echo "- | \n"; echo "|||
{$dirent["type"]} | \n"; echo "{$dirent["name"]}"; if ($dirent["type"] == "dir") { echo "/"; } echo " | \n"; echo "{$dirent["size"]} | \n"; echo "
\n"; echo htmlentities($data) . "\n"; echo "\n"; } } ?>