summaryrefslogtreecommitdiffstats
path: root/usr/local/www/edit.php
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2008-08-30 23:34:04 +0000
committerScott Ullrich <sullrich@pfsense.org>2008-08-30 23:34:04 +0000
commit0d6a185a727a8e68255e0b6687120bb5fa0bb643 (patch)
treec8b157abe9f8b3e393f0b031b74df42d29257067 /usr/local/www/edit.php
parentb66174030de38305ed96600bde2f3568c272de85 (diff)
downloadpfsense-0d6a185a727a8e68255e0b6687120bb5fa0bb643.zip
pfsense-0d6a185a727a8e68255e0b6687120bb5fa0bb643.tar.gz
Backport edit.php from HEAD, which is Dead, Zed.
Diffstat (limited to 'usr/local/www/edit.php')
-rwxr-xr-xusr/local/www/edit.php384
1 files changed, 190 insertions, 194 deletions
diff --git a/usr/local/www/edit.php b/usr/local/www/edit.php
index 5370b2f..4234f32 100755
--- a/usr/local/www/edit.php
+++ b/usr/local/www/edit.php
@@ -1,220 +1,216 @@
<?php
/* $Id$ */
/*
- edit.php
- Copyright (C) 2004, 2005 Scott Ullrich
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
+ edit.php
+ Copyright (C) 2004, 2005 Scott Ullrich
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
*/
-##|+PRIV
-##|*IDENT=page-diagnostics-editfile
-##|*NAME=Diagnostics: Edit File page
-##|*DESCR=Allow access to the 'Diagnostics: Edit File' page.
-##|*MATCH=edit.php*
-##|-PRIV
-
-
+$pgtitle = array(gettext("Diagnostics"), gettext("Toolbox"), gettext("Edit file"));
require("guiconfig.inc");
-if (($_GET['submit'] == "Load") && file_exists($_GET['savetopath'])) {
- $fd = fopen($_GET['savetopath'], "r");
- if ((filesize($_GET['savetopath']) != 0)) { $content = fread($fd, filesize($_GET['savetopath'])); } else { $content = ""; }
- fclose($fd);
- $edit_area="";
- $loadmsg = gettext("Loaded text from")." " . $_GET['savetopath'];
- if(stristr($_GET['savetopath'], ".php") == true)
- $language = "php";
- else if(stristr($_GET['savetopath'], ".inc") == true)
- $language = "php";
- else if(stristr($_GET['savetopath'], ".sh") == true)
- $language = "core";
- else if(stristr($_GET['savetopath'], ".xml") == true)
- $language = "xml";
-
- $savetopath = $_GET['savetopath'];
-}
-
-if (($_POST['submit'] == "Load") && file_exists($_POST['savetopath'])) {
- $fd = fopen($_POST['savetopath'], "r");
- if ((filesize($_POST['savetopath']) != "0")) { $content = fread($fd, filesize($_POST['savetopath'])); } else { $content = ""; }
- fclose($fd);
- $edit_area="";
- $loadmsg = "Loaded text from " . $_POST['savetopath'];
- if(stristr($_POST['savetopath'], ".php") == true)
- $language = "php";
- else if(stristr($_POST['savetopath'], ".inc") == true)
- $language = "php";
- else if(stristr($_POST['savetopath'], ".sh") == true)
- $language = "core";
- else if(stristr($_POST['savetopath'], ".xml") == true)
- $language = "xml";
- $savetopath = $_POST['savetopath'];
-} else if (($_POST['submit'] == "Save")) {
- conf_mount_rw();
- $content = ereg_replace("\r","",$_POST['code']) ;
- $fd = fopen($_POST['savetopath'], "w");
- fwrite($fd, $content);
- fclose($fd);
- $edit_area="";
- $savemsg = $_POST['savetopath'] . " has been updated.";
- if($_POST['savetopath'] == "/cf/conf/config.xml")
- unlink_if_exists("/tmp/config.cache");
- conf_mount_ro();
- $savetopath = $_POST['savetopath'];
-} else if (($_POST['submit'] == "Load") && !file_exists($_POST['savetopath'])) {
- $savemsg = "File not found " . $_POST['savetopath'];
- $content = "";
- $_POST['savetopath'] = "";
-}
-
-if($_POST['highlight'] <> "") {
- if($_POST['highlight'] == "yes" or
- $_POST['highlight'] == "enabled") {
- $highlight = "yes";
- } else {
- $highlight = "no";
+if($_REQUEST['action']) {
+ switch($_REQUEST['action']) {
+ case 'load':
+ if(strlen($_REQUEST['file']) < 1) {
+ echo "|5|No file name specified.|";
+ } elseif(is_dir($_REQUEST['file'])) {
+ echo "|4|Loading a directory is not supported.|";
+ } elseif(! is_file($_REQUEST['file'])) {
+ echo "|3|File does not exist or is not a regular file.|";
+ } else {
+ $data = file_get_contents($_REQUEST['file']);
+ if($data === false) {
+ echo "|1|Failed to read file.|";
+ } else {
+ echo "|0|{$_REQUEST['file']}|{$data}|";
+ }
+ }
+ exit;
+ case 'save':
+ if(strlen($_REQUEST['file']) < 1) {
+ echo "|No file name specified.|";
+ } else {
+ $ret = file_put_contents($_REQUEST['file'], $_REQUEST['data']);
+ if($ret === false) {
+ echo "|Failed to write file.|";
+ } elseif($ret <> strlen($_REQUEST['data'])) {
+ echo "|Error while writing file.|";
+ } else {
+ echo "|File successfully saved.|";
+ }
+ }
+ exit;
}
-} else {
- $highlight = "no";
+ exit;
}
-if($_POST['rows'] <> "")
- $rows = $_POST['rows'];
-else
- $rows = 30;
+require("head.inc");
+outputCSSFileInline("code-syntax-highlighter/SyntaxHighlighter.css");
+outputJavaScriptFileInline("javascript/scriptaculous/prototype.js");
+outputJavaScriptFileInline("javascript/scriptaculous/scriptaculous.js");
+outputJavaScriptFileInline("javascript/scriptaculous/effects.js");
+outputJavaScriptFileInline("filebrowser/browser.js");
-if($_POST['cols'] <> "")
- $cols = $_POST['cols'];
-else
- $cols = 66;
?>
-<?php
-
-/*
- Exec+ v1.02-000 - Copyright 2001-2003, All rights reserved
- Created by technologEase (http://www.technologEase.com).
- (modified for m0n0wall by Manuel Kasper <mk@neon1.net>)
- (modified for {$g['product_name']} Edit/Save file by Scott Ullrich, Copyright 2004, 2005)
-*/
-
-// Function: is Blank
-// Returns true or false depending on blankness of argument.
-function isBlank( $arg ) { return ereg( "^\s*$", $arg ); }
-
-// Function: Puts
-// Put string, Ruby-style.
-
-function puts( $arg ) { echo "$arg\n"; }
-
-// "Constants".
-
-$Version = '';
-$ScriptName = $HTTP_SERVER_VARS['SCRIPT_NAME'];
+<body link="#000000" vlink="#000000" alink="#000000">
+<?php include("fbegin.inc"); ?>
-// Get year.
+<script type="text/javascript">
+ function loadFile() {
+ $("fileStatus").innerHTML = "Loading file ...";
+ Effect.Appear("fileStatusBox", { duration: 0.5 });
+
+ new Ajax.Request(
+ "<?=$_SERVER['SCRIPT_NAME'];?>", {
+ method: "post",
+ postBody: "action=load&file=" + $("fbTarget").value,
+ onComplete: loadComplete
+ }
+ );
+ }
-$arrDT = localtime();
-$intYear = $arrDT[5] + 1900;
+ function loadComplete(req) {
+ Element.show("fileContent")
+ var values = req.responseText.split("|");
+ values.shift(); values.pop();
+
+ if(values.shift() == "0") {
+ var file = values.shift();
+ $("fileStatus").innerHTML = "File successfully loaded.";
+ $("fileContent").value = values.join("|");
+
+ var lang = "none";
+ if(file.indexOf(".php") > 0) lang = "php";
+ else if(file.indexOf(".inc") > 0) lang = "php";
+ else if(file.indexOf(".xml") > 0) lang = "xml";
+ else if(file.indexOf(".js" ) > 0) lang = "js";
+ else if(file.indexOf(".css") > 0) lang = "css";
+
+ if($("highlight").checked && lang != "none") {
+ $("fileContent").className = lang + ":showcolumns";
+ dp.SyntaxHighlighter.HighlightAll("fileContent", true, false);
+ }
+ }
+ else {
+ $("fileStatus").innerHTML = values[0];
+ $("fileContent").value = "";
+ }
+ }
-$pgtitle = array("Diagnostics","Edit File");
+ function saveFile(file) {
+ $("fileStatus").innerHTML = "Saving file ...";
+ Effect.Appear("fileStatusBox", { duration: 0.5 });
+
+ new Ajax.Request(
+ "<?=$_SERVER['SCRIPT_NAME'];?>", {
+ method: "post",
+ postBody: "action=save&file=" + $("fbTarget").value +
+ "&data=" + escape($("fileContent").value),
+ onComplete: function(req) {
+ var values = req.responseText.split("|");
+ $("fileStatus").innerHTML = values[1];
+ }
+ }
+ );
+ }
+</script>
-include("head.inc");
+<!-- file status box -->
+<div style="display:none; background:#eeeeee;" id="fileStatusBox">
+ <div class="vexpl" style="padding-left:15px;">
+ <strong id="fileStatus"></strong>
+ </div>
+</div>
-?>
+<br />
+
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="tabcont" align="center">
+
+<!-- controls -->
+<table width="100%" cellpadding="9" cellspacing="9">
+ <tr>
+ <td align="center" class="list">
+ Save / Load from path:
+ <input type="text" class="formfld file" id="fbTarget" size="45" />
+ <input type="button" class="formbtn" onclick="loadFile();" value="<?=gettext('Load');?>" />
+ <input type="button" class="formbtn" id="fbOpen" value="<?=gettext('Browse');?>" />
+ <input type="button" class="formbtn" onclick="saveFile();" value="<?=gettext('Save');?>" />
+ <br />
+ <input type="checkbox" id="highlight" /><?=gettext("Enable syntax highlighting");?>
+ </td>
+ </tr>
+</table>
-<?php include("fbegin.inc"); ?>
+<!-- filebrowser -->
+<div id="fbBrowser" style="display:none; border:1px dashed gray; width:98%;"></div>
+
+<!-- file viewer/editor -->
+<table width="100%">
+ <tr>
+ <td valign="top" class="label">
+ <div style="background:#eeeeee;" id="fileOutput">
+ <textarea id="fileContent" name="fileContent" style="width:100%;" rows="30" wrap="off"></textarea>
+ </div>
+ </td>
+ </tr>
+</table>
-<script language="Javascript">
-function sf() { document.forms[0].savetopath.focus(); }
-</script>
-<body onLoad="sf();">
-<?php if ($savemsg) print_info_box($savemsg); ?>
-<?php if ($loadmsg) echo "<p><b><div style=\"background:#eeeeee\" id=\"shapeme\">&nbsp;&nbsp;&nbsp;{$loadmsg}</div><br>"; ?>
-<form action="edit.php" method="POST">
-
-<div id="shapeme">
-<table width="100%" cellpadding='9' cellspacing='9' bgcolor='#eeeeee'>
- <tr>
- <td>
- <center>
- Save/Load from path: <input size="42" id="savetopath" class="formfld unknown" name="savetopath" value="<?php echo $savetopath; ?>">
- <input name="submit" type="submit" class="button" id="Load" value="Load"> <input name="submit" type="submit" class="button" id="Save" value="Save">
- <hr noshade>
- <?php if($_POST['highlight'] == "no"): ?>
- Rows: <input size="3" name="rows" value="<? echo $rows; ?>">
- Cols: <input size="3" name="cols" value="<? echo $cols; ?>">
- <?php endif; ?>
- </td>
- </tr>
+ </td>
+ </tr>
</table>
-</div>
-<br>
+<script type="text/javascript" src="/code-syntax-highlighter/shCore.js"></script>
+<script type="text/javascript" src="/code-syntax-highlighter/shBrushCss.js"></script>
+<script type="text/javascript" src="/code-syntax-highlighter/shBrushJScript.js"></script>
+<script type="text/javascript" src="/code-syntax-highlighter/shBrushPhp.js"></script>
+<script type="text/javascript" src="/code-syntax-highlighter/shBrushXml.js"></script>
+<script type="text/javascript">
+ Event.observe(
+ window, "load",
+ function() {
+ $("fbTarget").focus();
+
+ NiftyCheck();
+ Rounded("div#fileStatusBox", "all", "#ffffff", "#eeeeee", "smooth");
+ }
+ );
+
+ <?php if($_GET['action'] == "load"): ?>
+ Event.observe(
+ window, "load",
+ function() {
+ $("fbTarget").value = "<?=$_GET['path'];?>";
+ loadFile();
+ }
+ );
+ <?php endif; ?>
+</script>
- <table width='100%'>
- <tr>
- <td valign="top" class="label">
- <div style="background:#eeeeee" id="textareaitem">
- &nbsp;<br>&nbsp;
- <center>
- <textarea style="width:98%" name="code" language="<?php echo $language; ?>" rows="<?php echo $rows; ?>" cols="<?php echo $cols; ?>" name="content"><?php echo htmlentities($content); ?></textarea><br>
- &nbsp;
- </div>
- <p>
- </td>
- </tr>
- </table>
<?php include("fend.inc"); ?>
-</form>
</body>
</html>
-
-<script language="Javascript">
-sf();
-</script>
-
-</div>
-<script language="javascript" src="/code-syntax-highlighter/shCore.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushCSharp.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushPhp.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushJScript.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushVb.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushSql.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushXml.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushDelphi.js"></script>
-<script language="javascript" src="/code-syntax-highlighter/shBrushPython.js"></script>
-
-<?php if($_POST['highlight'] == "yes") {
- echo "<script language=\"javascript\">\n";
- echo "dp.SyntaxHighlighter.HighlightAll('code', true, true);\n";
- echo "</script>\n";
-}
-?>
-
-<script type="text/javascript">
-NiftyCheck();
-Rounded("div#shapeme","all","#FFF","#eeeeee","smooth");
-Rounded("div#textareaitem","all","#FFF","#eeeeee","smooth");
-</script>
OpenPOWER on IntegriCloud