summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2005-03-21 17:57:40 +0000
committerScott Ullrich <sullrich@pfsense.org>2005-03-21 17:57:40 +0000
commit181462b50c96d0da7a9a991edb96a62b228de847 (patch)
tree0ec8a24999be7ecd72054459c87832d5983b3864
parent9f8a09ace12f9aa3b271a157c84eaac88adb56b5 (diff)
downloadpfsense-181462b50c96d0da7a9a991edb96a62b228de847.zip
pfsense-181462b50c96d0da7a9a991edb96a62b228de847.tar.gz
Allow the user to backup and restore specific areas of their configuration. To start off with, we'll allow the user to backup and restore just the traffic shaper section.
-rwxr-xr-xusr/local/www/diag_backup.php93
1 files changed, 65 insertions, 28 deletions
diff --git a/usr/local/www/diag_backup.php b/usr/local/www/diag_backup.php
index 5b7fb35..43d41a5 100755
--- a/usr/local/www/diag_backup.php
+++ b/usr/local/www/diag_backup.php
@@ -63,39 +63,64 @@ if ($_POST) {
header("Content-Length: $fs");
readfile("/tmp/config.xml.nopkg");
} else {
- $fs = filesize($g['conf_path'] . "/config.xml");
- header("Content-Type: application/octet-stream");
- header("Content-Disposition: attachment; filename=$fn");
- header("Content-Length: $fs");
- readfile($g['conf_path'] . "/config.xml");
+ if($_POST['backuparea'] <> "") {
+ /* user wishes to backup specific area of configuration */
+ $current_trafficshaper_section = backup_config_section($_POST['backuparea']);
+ /* generate aliases xml */
+ $fout = fopen("{$g['tmp_path']}/backup_section.txt","w");
+ fwrite($fout, $current_trafficshaper_section);
+ fclose($fout);
+ $fs = filesize($g['tmp_path'] . "/backup_section.txt");
+ header("Content-Type: application/octet-stream");
+ $fn = $_POST['backuparea'] . "-" . $fn;
+ header("Content-Disposition: attachment; filename=$fn");
+ header("Content-Length: $fs");
+ readfile($g['tmp_path'] . "/backup_section.txt","w");
+ unlink($g['tmp_path'] . "/backup_section.txt","w");
+ } else {
+ $fs = filesize($g['conf_path'] . "/config.xml");
+ header("Content-Type: application/octet-stream");
+ header("Content-Disposition: attachment; filename=$fn");
+ header("Content-Length: $fs");
+ readfile($g['conf_path'] . "/config.xml");
+ }
}
config_unlock();
exit;
} else if ($mode == "restore") {
if (is_uploaded_file($_FILES['conffile']['tmp_name'])) {
- if (config_install($_FILES['conffile']['tmp_name']) == 0) {
- $command = "/sbin/sysctl -a | grep carp";
- $fd = fopen($_FILES['conffile']['tmp_name'], "r");
- if(!$fd) {
- log_error("Warning, could not open " . $_FILES['conffile']['tmp_name']);
- return 1;
- }
- while(!feof($fd)) {
- $tmp .= fread($fd,49);
- }
+ $command = "/sbin/sysctl -a | grep carp";
+ $fd = fopen($_FILES['conffile']['tmp_name'], "r");
+ if(!$fd) {
+ log_error("Warning, could not open " . $_FILES['conffile']['tmp_name']);
+ return 1;
+ }
+ while(!feof($fd)) {
+ $tmp .= fread($fd,49);
+ }
+ fclose($fd);
+ if(stristr($tmp, "m0n0wall" != false)) {
+ log_error("Upgrading m0n0wall configuration to pfsense.");
+ /* m0n0wall was found in config. convert it. */
+ $upgradedconfig = str_replace("m0n0wall", "pfsense", $tmp);
+ fopen($_FILES['conffile']['tmp_name'], "w");
+ fwrite($fd, $upgradedconfig);
fclose($fd);
- if(stristr($tmp, "m0n0wall" != FALSE)) {
- log_error("Upgrading m0n0wall configuration to pfsense.");
- /* m0n0wall was found in config. convert it. */
- $upgradedconfig = str_replace("m0n0wall", "pfsense", $tmp);
- fopen($_FILES['conffile']['tmp_name'], "w");
- fwrite($fd, $upgradedconfig);
- fclose($fd);
- }
+ }
+ if($_POST['restorearea'] <> "") {
+ /* restore a specific area of the configuration */
+ $rules = return_filename_as_string($_FILES['conffile']['tmp_name']);
+ restore_config_section("filter", $rules);
system_reboot();
$savemsg = "The configuration has been restored. The firewall is now rebooting.";
} else {
- $input_errors[] = "The configuration could not be restored.";
+ /* restore the entire configuration */
+ if (config_install($_FILES['conffile']['tmp_name']) == 0) {
+ system_reboot();
+ $savemsg = "The configuration has been restored. The firewall is now rebooting.";
+ } else {
+ $input_errors[] = "The configuration could not be restored.";
+ }
}
} else {
$input_errors[] = "The configuration could not be restored (file upload error).";
@@ -135,7 +160,7 @@ if (isset($config['system']['version_control'])) {
$old_ver = array();
$old_ver['date']=date("Y-m-d H:i:s", $regs[1]);
$old_ver['desc']= "XXX - description not used yet";
-
+
array_push(&$old_versions, $old_ver);
}
}
@@ -170,7 +195,13 @@ if (isset($config['system']['version_control'])) {
<p> Click this button to download the system configuration
in XML format.<br>
<br>
- <input name="nopackages" type="checkbox" class="formcheckbox" id="nopackages">Do not backup package information.<br><br>
+ Backup area:
+ <select name="backuparea">
+ <option VALUE="">ALL</option>
+ <option VALUE="shaper">Traffic Shaper</option>
+ </select>
+ <p>
+ <input name="nopackages" type="checkbox" class="formcheckbox" id="nopackages">Do not backup package information.<p>
<input name="Submit" type="submit" class="formbtn" id="download" value="Download configuration"></td>
</tr>
<tr>
@@ -188,9 +219,15 @@ if (isset($config['system']['version_control'])) {
<strong><span class="red">Note:</span></strong><br>
The firewall will reboot after restoring the configuration.<br>
<br>
+ Restore area:
+ <select name="restorearea">
+ <option VALUE="">ALL</option>
+ <option VALUE="shaper">Traffic Shaper</option>
+ </select>
+ <p>
<input name="conffile" type="file" class="formfld" id="conffile" size="40">
- <br>
- <br>
+ <p>
+
<input name="Submit" type="submit" class="formbtn" id="restore" value="Restore configuration">
</td>
</tr>
OpenPOWER on IntegriCloud