summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/filebrowser/browser.php
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-08-25 08:08:24 -0300
committerRenato Botelho <renato@netgate.com>2015-08-25 14:49:54 -0300
commit46bc6e545a17e77202aaf01ec0cd8d5a46567525 (patch)
tree32d18dda436ec739c67c489ceb771e8629cd926f /src/usr/local/www/filebrowser/browser.php
parent4d9801c2dbd2b3e54a39578ee62b93af66607227 (diff)
downloadpfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.zip
pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.tar.gz
Move main pfSense content to src/
Diffstat (limited to 'src/usr/local/www/filebrowser/browser.php')
-rw-r--r--src/usr/local/www/filebrowser/browser.php165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/usr/local/www/filebrowser/browser.php b/src/usr/local/www/filebrowser/browser.php
new file mode 100644
index 0000000..8ab05db
--- /dev/null
+++ b/src/usr/local/www/filebrowser/browser.php
@@ -0,0 +1,165 @@
+<?php
+
+require_once("guiconfig.inc");
+
+/*
+ pfSense_MODULE: shell
+ Copyright (C) 2013-2015 Electric Sheep Fencing, LP
+
+*/
+// Fetch a list of directories and files inside a given directory
+function get_content($dir) {
+ $dirs = array();
+ $files = array();
+
+ clearstatcache();
+ $fd = @opendir($dir);
+
+ while ($entry = @readdir($fd)) {
+ if ($entry == ".") {
+ continue;
+ }
+ if ($entry == ".." && $dir == "/") {
+ continue;
+ }
+ if (is_dir("{$dir}/{$entry}")) {
+ array_push($dirs, $entry);
+ } else {
+ array_push($files, $entry);
+ }
+ }
+
+ @closedir($fd);
+
+ natsort($dirs);
+ natsort($files);
+
+ return array($dirs, $files);
+}
+
+$path = realpath(strlen($_GET['path']) > 0 ? $_GET['path'] : "/");
+if (is_file($path)) {
+ $path = dirname($path);
+}
+
+// ----- header -----
+?>
+<table width="100%">
+ <tr>
+ <td class="fbHome" width="25px" align="left">
+ <img onClick="jQuery('#fbTarget').val('<?=$realDir?>'); fbBrowse('/');" src="/filebrowser/images/icon_home.gif" alt="Home" title="Home" />
+ </td>
+ <td><b><?=$path;?></b></td>
+ <td class="fbClose" align="right">
+ <img onClick="jQuery('#fbBrowser').fadeOut();" border="0" src="/filebrowser/images/icon_cancel.gif" alt="Close" title="Close" />
+ </td>
+ </tr>
+ <tr>
+ <td id="fbCurrentDir" colspan="3" class="vexpl" align="left">
+<?php
+
+// ----- read contents -----
+if (is_dir($path)) {
+ list($dirs, $files) = get_content($path);
+?>
+
+ </td>
+ </tr>
+<?php
+} else {
+?>
+ Directory does not exist.
+ </td>
+ </tr>
+</table>
+<?php
+ exit;
+}
+
+// ----- directories -----
+foreach ($dirs as $dir):
+ $realDir = realpath("{$path}/{$dir}");
+?>
+ <tr>
+ <td></td>
+ <td class="fbDir vexpl" id="<?=$realDir;?>" align="left">
+ <div onClick="jQuery('#fbTarget').val('<?=$realDir?>'); fbBrowse('<?=$realDir?>');">
+ <img src="/filebrowser/images/folder_generic.gif" />
+ &nbsp;<?=$dir;?>
+ </div>
+ </td>
+ <td></td>
+ </tr>
+<?php
+endforeach;
+
+// ----- files -----
+foreach ($files as $file):
+ $ext = strrchr($file, ".");
+
+ switch ($ext) {
+ case ".css":
+ case ".html":
+ case ".xml":
+ $type = "code";
+ break;
+ case ".rrd":
+ $type = "database";
+ break;
+ case ".gif":
+ case ".jpg":
+ case ".png":
+ $type = "image";
+ break;
+ case ".js":
+ $type = "js";
+ break;
+ case ".pdf":
+ $type = "pdf";
+ break;
+ case ".inc":
+ case ".php":
+ $type = "php";
+ break;
+ case ".conf":
+ case ".pid":
+ case ".sh":
+ $type = "system";
+ break;
+ case ".bz2":
+ case ".gz":
+ case ".tgz":
+ case ".zip":
+ $type = "zip";
+ break;
+ default:
+ $type = "generic";
+ }
+
+ $fqpn = "{$path}/{$file}";
+
+ if (is_file($fqpn)) {
+ $fqpn = realpath($fqpn);
+ $size = sprintf("%.2f KiB", filesize($fqpn) / 1024);
+ } else {
+ $size = "";
+ }
+
+?>
+ <tr>
+ <td></td>
+ <td class="fbFile vexpl" id="<?=$fqpn;?>" align="left">
+ <?php $filename = str_replace("//","/", "{$path}/{$file}"); ?>
+ <div onClick="jQuery('#fbTarget').val('<?=$filename?>'); loadFile(); jQuery('#fbBrowser').fadeOut();">
+ <img src="/filebrowser/images/file_<?=$type;?>.gif" alt="" title="">
+ &nbsp;<?=$file;?>
+ </div>
+ </td>
+ <td align="right" class="vexpl">
+ <?=$size;?>
+ </td>
+ </tr>
+<?php
+endforeach;
+?>
+</table>
OpenPOWER on IntegriCloud