Commit 4f702800 authored by tbrehm's avatar tbrehm
Browse files

The updater is now able to update the config (in server mysql table) from the master template.

parent 253e8760
......@@ -402,4 +402,42 @@ function edit_xinetd_conf($service){
wf($xinetd_conf, $contents);
}
//* Converts a ini string to array
function ini_to_array($ini) {
$config = '';
$ini = str_replace("\r\n", "\n", $ini);
$lines = explode("\n", $ini);
foreach($lines as $line) {
$line = trim($line);
if($line != '') {
if(preg_match("/^\[([\w\d_]+)\]$/", $line, $matches)) {
$section = strtolower($matches[1]);
} elseif(preg_match("/^([\w\d_]+)=(.*)$/", $line, $matches) && $section != null) {
$item = trim($matches[1]);
$config[$section][$item] = trim($matches[2]);
}
}
}
return $config;
}
//* Converts a config array to a string
public function array_to_ini($config_array = '') {
if($config_array == '') $config_array = $this->config;
$content = '';
foreach($config_array as $section => $data) {
$content .= "[$section]\n";
foreach($data as $item => $value) {
if($item != ''){
$content .= "$item=$value\n";
}
}
$content .= "\n";
}
return $content;
}
?>
\ No newline at end of file
......@@ -42,7 +42,7 @@ class installer_base {
$this->conf = $conf;
}
//: TODO Implement the translation function and langauge files for the installer.
//: TODO Implement the translation function and language files for the installer.
public function lng($text)
{
return $text;
......@@ -153,7 +153,7 @@ class installer_base {
}
}
//** Create a recors in the
//** Create the server record in the database
public function add_database_server_record() {
$server_ini_content = rf("tpl/server.ini.master");
......
......@@ -75,6 +75,8 @@ $conf["mysql"]["database"] = $conf_old["db_database"];
$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
$conf['server_id'] = $conf_old["server_id"];
$inst = new installer();
echo "This application will update ISPConfig 3 on your server.\n";
......@@ -128,6 +130,26 @@ if( !empty($conf["mysql"]["admin_password"]) ) {
system("mysql -h ".$conf['mysql']['host']." -u ".$conf['mysql']['admin_user']." ".$conf['mysql']['database']." < existing_db.sql");
}
//** Update server ini
$tmp_server_rec = $inst->db->queryOneRecord("SELECT config FROM server WHERE server_id = ".$conf['server_id']);
$old_ini_array = ini_to_array(stripslashes($tmp_server_rec['config']));
unset($tmp_server_rec);
$tpl_ini_array = ini_to_array(rf('tpl/server.ini.master'));
// update the new template with the old values
foreach($old_ini_array as $tmp_section_name => $tmp_section_content) {
foreach($tmp_section_content as $tmp_var_name => $tmp_var_content) {
$tpl_ini_array[$tmp_section_name][$tmp_var_name] = $tmp_var_content;
}
}
$new_ini = array_to_ini($tpl_ini_array);
$inst->db->query("UPDATE server SET config = '".addslashes($new_ini)."' WHERE server_id = ".$conf['server_id']);
unset($old_ini_array);
unset($tpl_ini_array);
unset($new_ini);
//** Shall the services be reconfigured during update
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes','no'),'yes');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment