summaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2004-12-20 19:56:56 +0000
committerScott Ullrich <sullrich@pfsense.org>2004-12-20 19:56:56 +0000
commitb3235baa5486dc22d67be79db832e9c506e433f3 (patch)
treeb5858d9d2a5473280ad4ef1383992c9cd9326d4d /usr
parentffe751091c006f1317421e9842efb2988598f36b (diff)
downloadpfsense-b3235baa5486dc22d67be79db832e9c506e433f3.zip
pfsense-b3235baa5486dc22d67be79db832e9c506e433f3.tar.gz
Correctly save out posted fields to xml configuration file.
Diffstat (limited to 'usr')
-rwxr-xr-xusr/local/www/pkg_edit.php108
1 files changed, 77 insertions, 31 deletions
diff --git a/usr/local/www/pkg_edit.php b/usr/local/www/pkg_edit.php
index f926dc9..628eca6 100755
--- a/usr/local/www/pkg_edit.php
+++ b/usr/local/www/pkg_edit.php
@@ -47,7 +47,7 @@ if($xml == "") {
print_info_box_np("ERROR: Could not open " . $xml . ".");
die;
} else {
- $pkg = parse_xml_config_pkg("/usr/local/pkg/" . $xml, "pfSenseWizard");
+ $pkg = parse_xml_config_pkg("/usr/local/pkg/" . $xml, "packagegui");
}
$package_name = $pkg['menu']['name'];
@@ -59,47 +59,93 @@ $id = $_GET['id'];
if (isset($_POST['id']))
$id = $_POST['id'];
-$a_pkg = &$config['installedpackages']['package'];
+$toeval = "\$a_pkg = &\$config['installedpackages']['" . xml_safe_fieldname($pkg['name']) . "']['config'];";
+eval($toeval);
if (isset($id) && $a_pkg[$id]) {
foreach ($pkg['fields'] as $fields) {
- $fieldname = $pconfig['$fields']['fieldname'];
- $fieldvalue = $_POST[$fieldname];
- $pconfig[$fieldname] = $fieldvalue;
+ $fieldname = $fields['fieldname'];
+ $fieldvalue = $fields[$_POST[$fieldname]];
+ $toeval = "\$pconfig[" . $fieldname . "] = \"" . $fieldvalue . "\";";
+ //echo $toeval . "\n";
+ //eval($toeval);
}
}
if ($_POST) {
- if($_POST['act'] == "del") {
- if($pkg['custom_delete_php_command']) {
- eval($pkg['custom_delete_php_command']);
+ if($_POST['act'] == "del") {
+ if($pkg['custom_delete_php_command']) {
+ eval($pkg['custom_delete_php_command']);
+ }
+ } else {
+ if($pkg['custom_add_php_command']) {
+ eval($pkg['custom_add_php_command']);
+ }
}
- // XXX: unset the xml value to config
- } else {
- if($pkg['custom_add_php_command']) {
- eval($pkg['custom_add_php_command']);
+
+ // store values in xml configration file.
+ if (!$input_errors) {
+ $pkgarr = array();
+
+ /*
+ if (isset($id) && $a_pkg[$id])
+ $pkgarr[$id] = $pkgarr;
+ else
+ $pkgarr[] = $pkgarr;
+ */
+
+ foreach ($pkg['fields']['field'] as $fields) {
+ $fieldname = $fields['fieldname'];
+ $fieldvalue = $_POST[$fieldname];
+ $toeval = "\$pkgarr['" . $fieldname . "'] = \"" . $fieldvalue . "\";";
+ //echo $toeval . "\n";
+ eval($toeval);
+
+ }
+
+ //$toeval = "\$config['installedpackages']['package']['" . $pkg['name'] . "']['config'][] = \$pkgarr;";
+ $toeval = "\$config['installedpackages']['" . xml_safe_fieldname($pkg['name']) . "']['config'] = \$pkgarr;";
+ echo $toeval;
+ eval($toeval);
+
+ write_config();
}
- // XXX: add the xml value to config
- }
}
-// store values in xml configration file.
-if (!$input_errors) {
- $pkgarr = array();
-
- if (isset($id) && $a_pkg[$id])
- $a_pkg[$id] = $pkgarr;
- else
- $a_pkg[] = $pkgarr;
-
- foreach ($pkg['fields'] as $fields) {
- $pkgarr[$fields['fieldname']] = $fields['fieldname'];
- $pkgarr[$fields['fieldvalue']] = $_POST[$fields['fieldname']];
- }
-
- $config['installedpackages']['package']['config'][] = $filterent;
-
- write_config();
+function xml_safe_fieldname($fieldname) {
+ $fieldname = str_replace("/","",$fieldname);
+ $fieldname = str_replace("-","",$fieldname);
+ $fieldname = str_replace(" ","",$fieldname);
+ $fieldname = str_replace("!","",$fieldname);
+ $fieldname = str_replace("@","",$fieldname);
+ $fieldname = str_replace("#","",$fieldname);
+ $fieldname = str_replace("$","",$fieldname);
+ $fieldname = str_replace("%","",$fieldname);
+ $fieldname = str_replace("^","",$fieldname);
+ $fieldname = str_replace("&","",$fieldname);
+ $fieldname = str_replace("*","",$fieldname);
+ $fieldname = str_replace("(","",$fieldname);
+ $fieldname = str_replace(")","",$fieldname);
+ $fieldname = str_replace("_","",$fieldname);
+ $fieldname = str_replace("+","",$fieldname);
+ $fieldname = str_replace("=","",$fieldname);
+ $fieldname = str_replace("{","",$fieldname);
+ $fieldname = str_replace("}","",$fieldname);
+ $fieldname = str_replace("[","",$fieldname);
+ $fieldname = str_replace("]","",$fieldname);
+ $fieldname = str_replace("|","",$fieldname);
+ $fieldname = str_replace("\\","",$fieldname);
+ $fieldname = str_replace("/","",$fieldname);
+ $fieldname = str_replace("<","",$fieldname);
+ $fieldname = str_replace(">","",$fieldname);
+ $fieldname = str_replace("?","",$fieldname);
+ $fieldname = str_replace(":","",$fieldname);
+ $fieldname = str_replace(",","",$fieldname);
+ $fieldname = str_replace(".","",$fieldname);
+ $fieldname = str_replace("'","",$fieldname);
+ $fieldname = str_replace("\"","",$fieldname);
+ $fieldname = strtolower($fieldname);
+ return $fieldname;
}
?>
OpenPOWER on IntegriCloud