summaryrefslogtreecommitdiffstats
path: root/etc/inc/config.lib.inc
diff options
context:
space:
mode:
authorVinicius Coque <vinicius.coque@bluepex.com>2011-01-28 17:32:17 -0200
committerVinicius Coque <vinicius.coque@bluepex.com>2011-01-28 17:32:17 -0200
commit9d3d8d005ec74d6108aa423c7ad09e0b58951127 (patch)
treef765cfb57d7d75ac2af8fa6b975ea953b557bdfc /etc/inc/config.lib.inc
parentb638ef519a8e1ad3e843c55e091fc2649e834797 (diff)
parent1596d9c17349f47ef06defa5c44333db0158a110 (diff)
downloadpfsense-9d3d8d005ec74d6108aa423c7ad09e0b58951127.zip
pfsense-9d3d8d005ec74d6108aa423c7ad09e0b58951127.tar.gz
Merge branch 'master' into inc
Conflicts: etc/inc/captiveportal.inc etc/inc/config.console.inc etc/inc/config.lib.inc etc/inc/easyrule.inc etc/inc/filter.inc etc/inc/ipsec.inc etc/inc/pkg-utils.inc etc/inc/shaper.inc etc/inc/system.inc etc/inc/voucher.inc
Diffstat (limited to 'etc/inc/config.lib.inc')
-rw-r--r--etc/inc/config.lib.inc115
1 files changed, 82 insertions, 33 deletions
diff --git a/etc/inc/config.lib.inc b/etc/inc/config.lib.inc
index e985aa8..9f0b736 100644
--- a/etc/inc/config.lib.inc
+++ b/etc/inc/config.lib.inc
@@ -53,30 +53,33 @@
******/
function encrypted_configxml() {
global $g, $config;
- if(file_exists($g['conf_path'] . "/config.xml")) {
- if($g['booting']) {
- $configtxt = file_get_contents($g['conf_path'] . "/config.xml");
- if(tagfile_deformat($configtxt, $configtxt, "config.xml")) {
- $fp = fopen('php://stdin', 'r');
+
+ if (!file_exists($g['conf_path'] . "/config.xml"))
+ return;
+
+ if (!$g['booting'])
+ return;
+
+ $configtxt = file_get_contents($g['conf_path'] . "/config.xml");
+ if(tagfile_deformat($configtxt, $configtxt, "config.xml")) {
+ $fp = fopen('php://stdin', 'r');
+ $data = "";
+ echo "\n\n*** Encrypted config.xml detected ***\n";
+ while($data == "") {
+ echo "\nEnter the password to decrypt config.xml: ";
+ $decrypt_password = chop(fgets($fp));
+ $data = decrypt_data($configtxt, $decrypt_password);
+ if(!strstr($data, "<pfsense>"))
$data = "";
- echo "\n\n" . gettext("*** Encrypted config.xml detected ***") . "\n";
- while($data == "") {
- echo "\n" . gettext("Enter the password to decrypt config.xml:") . " ";
- $decrypt_password = chop(fgets($fp));
- $data = decrypt_data($configtxt, $decrypt_password);
- if(!strstr($data, "<pfsense>"))
- $data = "";
- if($data) {
- $fd = fopen($g['conf_path'] . "/config.xml.tmp", "w");
- fwrite($fd, $data);
- fclose($fd);
- exec("/bin/mv {$g['conf_path']}/config.xml.tmp {$g['conf_path']}/config.xml");
- echo "\n" . gettext("Config.xml unlocked.") . "\n";
- fclose($fp);
- } else {
- echo "\n" . gettext("Invalid password entered. Please try again.") . "\n";
- }
- }
+ if($data) {
+ $fd = fopen($g['conf_path'] . "/config.xml.tmp", "w");
+ fwrite($fd, $data);
+ fclose($fd);
+ exec("/bin/mv {$g['conf_path']}/config.xml.tmp {$g['conf_path']}/config.xml");
+ echo "\n" . gettext("Config.xml unlocked.") . "\n";
+ fclose($fp);
+ } else {
+ echo "\n" . gettext("Invalid password entered. Please try again.") . "\n";
}
}
}
@@ -92,9 +95,10 @@ function encrypted_configxml() {
******/
function parse_config($parse = false) {
global $g, $config_parsed, $config_extra;
-
+
$lockkey = lock('config');
$config_parsed = false;
+
if (!file_exists("{$g['conf_path']}/config.xml") || filesize("{$g['conf_path']}/config.xml") == 0) {
$last_backup = discover_last_backup();
if($last_backup) {
@@ -106,12 +110,17 @@ function parse_config($parse = false) {
die(gettext("Config.xml is corrupted and is 0 bytes. Could not restore a previous backup."));
}
}
- if($g['booting']) echo ".";
+
+ if($g['booting'])
+ echo ".";
+
// Check for encrypted config.xml
encrypted_configxml();
+
if(!$parse) {
- if(file_exists($g['tmp_path'] . '/config.cache')) {
+ if (file_exists($g['tmp_path'] . '/config.cache')) {
$config = unserialize(file_get_contents($g['tmp_path'] . '/config.cache'));
+<<<<<<< HEAD
if(is_null($config)) {
unlock($lockkey);
parse_config(true);
@@ -139,6 +148,19 @@ function parse_config($parse = false) {
if($g['booting']) echo ".";
log_error(gettext("No config.xml found, attempting last known config restore."));
file_notice("config.xml", gettext("No config.xml found, attempting last known config restore."), "pfSenseConfigurator", "");
+=======
+ if (is_null($config))
+ $parse = true;
+ } else
+ $parse = true;
+ }
+ if ($parse == true) {
+ if(!file_exists($g['conf_path'] . "/config.xml")) {
+ if($g['booting'])
+ echo ".";
+ log_error("No config.xml found, attempting last known config restore.");
+ file_notice("config.xml", "No config.xml found, attempting last known config restore.", "pfSenseConfigurator", "");
+>>>>>>> master
$last_backup = discover_last_backup();
if ($last_backup)
restore_backup("/cf/conf/backup/{$last_backup}");
@@ -149,7 +171,7 @@ function parse_config($parse = false) {
}
}
$config = parse_xml_config($g['conf_path'] . '/config.xml', array($g['xml_rootobj'], 'pfsense'));
- if($config == "-1") {
+ if($config == -1) {
$last_backup = discover_last_backup();
if ($last_backup)
restore_backup("/cf/conf/backup/{$last_backup}");
@@ -161,11 +183,15 @@ function parse_config($parse = false) {
}
generate_config_cache($config);
}
- if($g['booting']) echo ".";
- alias_make_table($config);
+
+ if($g['booting'])
+ echo ".";
+
$config_parsed = true;
unlock($lockkey);
+ alias_make_table($config);
+
return $config;
}
@@ -226,7 +252,8 @@ function restore_backup($file) {
function parse_config_bootup() {
global $config, $g;
- if($g['booting']) echo ".";
+ if($g['booting'])
+ echo ".";
$lockkey = lock('config');
if (!file_exists("{$g['conf_path']}/config.xml")) {
@@ -249,7 +276,12 @@ function parse_config_bootup() {
restore_backup("/cf/conf/backup/{$last_backup}");
}
if(!file_exists("{$g['conf_path']}/config.xml")) {
+<<<<<<< HEAD
echo sprintf(gettext("XML configuration file not found. %s cannot continue booting."), $g['product_name']) . "\n";
+=======
+ echo "XML configuration file not found. {$g['product_name']} cannot continue booting.\n";
+ unlock($lockkey);
+>>>>>>> master
mwexec("/sbin/halt");
exit;
}
@@ -348,6 +380,9 @@ function conf_mount_ro() {
if($g['platform'] == "cdrom" or $g['platform'] == "pfSense")
return;
+ if($g['booting'])
+ return;
+
if (refcount_unreference(1000) > 0)
return;
@@ -411,10 +446,14 @@ function convert_config() {
log_error(sprintf(gettext("Ended Configuration upgrade at %s"), $now));
if ($prev_version != $config['version'])
+<<<<<<< HEAD
write_config(sprintf(gettext('Upgraded config version level from %1$s to %2$s'), $prev_version, $config['version']));
if($g['booting'])
echo gettext("Loading new configuration...");
+=======
+ write_config("Upgraded config version level from {$prev_version} to {$config['version']}");
+>>>>>>> master
}
/****f* config/safe_write_file
@@ -481,12 +520,22 @@ function write_config($desc="Unknown", $backup = true) {
* for now, since it was preventing config saving. */
// $config = parse_config(true, false, false);
+<<<<<<< HEAD
if($g['bootup'])
log_error(gettext("WARNING! Configuration written on bootup. This can cause stray openvpn and load balancing items in config.xml"));
+=======
+ if($g['booting'])
+ log_error("WARNING! Configuration written on bootup. This can cause stray openvpn and load balancing items in config.xml");
+>>>>>>> master
+
+ $username = empty($_SESSION["Username"]) ? "(system)" : $_SESSION['Username'];
if($backup)
backup_config();
+ if (!is_array($config['revision']))
+ $config['revision'] = array();
+
if (time() > mktime(0, 0, 0, 9, 1, 2004)) /* make sure the clock settings are plausible */
$config['revision']['time'] = time();
@@ -494,8 +543,8 @@ function write_config($desc="Unknown", $backup = true) {
if ($desc == "Unknown")
$desc = sprintf(gettext("%s made unknown change"), $_SERVER['SCRIPT_NAME']);
- $config['revision']['description'] = "{$_SESSION['Username']}: " . $desc;
- $config['revision']['username'] = $_SESSION["Username"];
+ $config['revision']['description'] = "{$username}: " . $desc;
+ $config['revision']['username'] = $username;
conf_mount_rw();
$lockkey = lock('config', LOCK_EX);
@@ -755,7 +804,7 @@ function cleanup_backupcache($revisions = 30, $lock = false) {
foreach($tocache as $version => $versioninfo) {
if(!in_array($version, array_keys($newcache))) {
unlink_if_exists($g['conf_path'] . '/backup/config-' . $version . '.xml');
- if($g['booting']) print " " . $tocheck . "d";
+ //if($g['booting']) print " " . $tocheck . "d";
}
}
$tocache = $newcache;
OpenPOWER on IntegriCloud