strlen($p_property)) if ($p_property == substr($lines[$i], 0, strlen($p_property))){ $lines[$i] = "$p_property = $p_value\n"; } } $fp=fopen($p_filename, 'w'); for($i=0; $i<$n; $i++){ fwrite($fp, $lines[$i]); } fclose($fp); } /** * After the configuration files have been copied to /etc/airtime, * this function will update them to values unique to this * particular installation. */ public static function UpdateIniFiles() { $api_key = AirtimeIni::GenerateRandomString(); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_AIRTIME, 'api_key', $api_key); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_AIRTIME, 'base_files_dir', AirtimeInstall::CONF_DIR_STORAGE); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_AIRTIME, 'airtime_dir', AirtimeInstall::CONF_DIR_WWW); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_PYPO, 'api_key', "'$api_key'"); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_RECORDER, 'api_key', "'$api_key'"); //AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_MEDIAMONITOR, 'api_key', "'$api_key'"); AirtimeIni::UpdateIniValue(AirtimeInstall::CONF_DIR_WWW.'/build/build.properties', 'project.home', AirtimeInstall::CONF_DIR_WWW); } public static function ReadPythonConfig($p_filename) { $values = array(); $lines = file($p_filename); $n=count($lines); for ($i=0; $i<$n; $i++) { if (strlen($lines[$i]) && !in_array(substr($lines[$i], 0, 1), array('#', PHP_EOL))){ $info = explode("=", $lines[$i]); $values[trim($info[0])] = trim($info[1]); } } return $values; } public static function MergeConfigFiles($configFiles, $suffix) { foreach ($configFiles as $conf) { if (file_exists("$conf$suffix.bak")) { if($conf === CONF_FILE_AIRTIME) { // Parse with sections $newSettings = parse_ini_file($conf, true); $oldSettings = parse_ini_file("$conf$suffix.bak", true); } else { $newSettings = AirtimeIni::ReadPythonConfig($conf); $oldSettings = AirtimeIni::ReadPythonConfig("$conf$suffix.bak"); } $settings = array_keys($newSettings); foreach($settings as $section) { if(isset($oldSettings[$section])) { if(is_array($oldSettings[$section])) { $sectionKeys = array_keys($newSettings[$section]); foreach($sectionKeys as $sectionKey) { if(isset($oldSettings[$section][$sectionKey])) { AirtimeIni::UpdateIniValue($conf, $sectionKey, $oldSettings[$section][$sectionKey]); } } } else { AirtimeIni::UpdateIniValue($conf, $section, $oldSettings[$section]); } } } } } } }