diff --git a/browse.php b/browse.php
new file mode 100644
index 0000000..05ad849
--- /dev/null
+++ b/browse.php
@@ -0,0 +1,99 @@
+<?php
+error_reporting(E_ERROR | E_PARSE);
+
+$os = strtoupper(php_uname('s'));
+$windows = strpos($os, "WIN") !== false;
+$default_dir = $windows ? "c:" : "/home/data/httpd";
+
+$path = isset($_GET['path']) ? $_GET['path'] : $default_dir;
+if (is_dir($path)) {
+    $file = scandir($path);
+    natcasesort($file);
+    // Make directories first
+    $files = $dirs = array();
+    foreach ($file as $this_file) {
+        if (is_dir("$path/$this_file")) {
+            $dirs[] = $this_file;
+        } else {
+            $files[] = $this_file;
+        }
+    }
+    $file = array_merge($dirs, $files);
+
+    echo "<table border=\"0\">\n";
+    echo "<tr><th>Name</th><th align=\"right\">Size</th><th>&nbsp;</th><th>Date</th><th>User</th><th>Group</th></tr>\n";
+
+    foreach ($file as $this_file) {
+        $link = "$path/$this_file";
+        if (is_dir("$path/$this_file")) {
+            $icon = "folder.png";
+            if ($this_file == ".") {
+                $link = "$path";
+            } else if ($this_file == "..") {
+                $pos = strrpos($path, "/");
+                if ($pos !== false) {
+                    $link = substr($path, 0, $pos);
+                } else {
+                    $link = $default_dir;
+                }
+            }
+        } else {
+            $icon = "f.png";
+        }
+
+        $stat = stat("$path/$this_file");
+        $size = $stat['size'];
+        $mtime = $stat['mtime'];
+        $uid = $stat['uid'];
+        $gid = $stat['gid'];
+
+        $unit = "B";
+        if ($size >= 1024) {
+            $size = $size / 1024;
+            $unit = "KB";
+        }
+
+        if ($size >= 1024) {
+            $size = $size / 1024;
+            $unit = "MB";
+        }
+
+        if ($size >= 1024) {
+            $size = $size / 1024;
+            $unit = "GB";
+        }
+
+        $size = round($size);
+
+        date_default_timezone_set('UTC');
+        $date = date("Y-m-d G-i-s", $mtime);
+
+        if (function_exists('posix_getpwuid')) {
+            $uid = posix_getpwuid($uid);
+            $gid = posix_getpwuid($gid);
+        }
+
+        echo "<tr>";
+        echo "<td><img src=\"https://dev.eclipse.org/icons/$icon\">&nbsp;<a href=\"?path=$link\">" . htmlspecialchars($this_file) . "</a></td>";
+        echo "<td align=\"right\">$size</td><td>$unit</td><td>$date</td><td>$uid</td><td>$gid</td>";
+        echo "</tr>\n";
+    }
+
+    echo "</table>\n";
+} else {
+    if (function_exists('finfo_open')) {
+        $finfo = finfo_open(FILEINFO_MIME_TYPE);
+        $mimetype = finfo_file($finfo, $path);
+        finfo_close($finfo);
+    } else if (function_exists('mime_content_type')) {
+        $mimetype = mime_content_type($path);
+    }
+
+    if (empty($mimetype))
+        $mimetype = 'application/octet-stream';
+
+    header('Content-type: $mimetype');
+    echo file_get_contents($path);
+}
+
+?>
\ No newline at end of file
