diff --git a/app/sip_profiles/app_defaults.php b/app/sip_profiles/app_defaults.php index 98f6a99cae..df74222d55 100644 --- a/app/sip_profiles/app_defaults.php +++ b/app/sip_profiles/app_defaults.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2012 + Portions created by the Initial Developer are Copyright (C) 2008-2014 the Initial Developer. All Rights Reserved. Contributor(s): @@ -26,96 +26,132 @@ //if the number of rows is 0 then read the sip profile xml into the database if ($domains_processed == 1) { - $sql = "select count(*) as num_rows from v_sip_profiles "; - $prep_statement = $db->prepare(check_sql($sql)); - if ($prep_statement) { - $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - if ($row['num_rows'] == 0) { - //$xml_list = glob($_SESSION['switch']['conf']['dir']."/sip_profiles/*.xml"); - $xml_list = glob($_SERVER["DOCUMENT_ROOT"]."/".PROJECT_PATH."resources/templates/conf/sip_profiles/*.xml"); - foreach ($xml_list as &$xml_file) { - //load the sip profile xml and save it into an array - $sip_profile_xml = file_get_contents($xml_file); - $xml = simplexml_load_string($sip_profile_xml); - $json = json_encode($xml); - $sip_profile = json_decode($json, true); - $sip_profile_name = $sip_profile['@attributes']['name']; - //echo "sip profile name: ".$sip_profile_name."\n"; - - if ($sip_profile_name != "{v_sip_profile_name}") { - //prepare the description - switch ($sip_profile_name) { - case "internal": - $sip_profile_description = "The Internal profile by default requires registration which is used by the endpoints. "; - $sip_profile_description .= "By default the Internal profile binds to port 5060. "; - break; - case "internal-ipv6": - $sip_profile_description = "The Internal IPV6 profile binds to the IP version 6 address and is similar to the Internal profile.\n"; - break; - case "external": - $sip_profile_description .= "The External profile external provides anonymous calling in the public context. "; - $sip_profile_description .= "By default the External profile binds to port 5080. "; - $sip_profile_description .= "Calls can be sent using a SIP URL \"voip.domain.com:5080\" "; - break; - case "lan": - $sip_profile_description = "The LAN profile is the same as the Internal profile except that it is bound to the LAN IP.\n"; - break; - default: - $sip_profile_description .= ''; - } - - //add the sip profile - $sip_profile_uuid = uuid(); - $sql = "insert into v_sip_profiles"; - $sql .= "("; - $sql .= "sip_profile_uuid, "; - $sql .= "sip_profile_name, "; - $sql .= "sip_profile_description "; - $sql .= ") "; - $sql .= "values "; - $sql .= "( "; - $sql .= "'".check_str($sip_profile_uuid)."', "; - $sql .= "'".check_str($sip_profile_name)."', "; - $sql .= "'".check_str($sip_profile_description)."' "; - $sql .= ")"; - //echo $sql."\n\n"; - $db->exec(check_sql($sql)); - unset($sql); - - //add the sip profile settings - foreach ($sip_profile['settings']['param'] as $row) { - //get the name and value pair - $sip_profile_setting_name = $row['@attributes']['name']; - $sip_profile_setting_value = $row['@attributes']['value']; - //echo "name: $name value: $value\n"; - //add the profile settings into the database - $sip_profile_setting_uuid = uuid(); - $sql = "insert into v_sip_profile_settings "; - $sql .= "("; - $sql .= "sip_profile_setting_uuid, "; - $sql .= "sip_profile_uuid, "; - $sql .= "sip_profile_setting_name, "; - $sql .= "sip_profile_setting_value, "; - $sql .= "sip_profile_setting_enabled "; - $sql .= ") "; - $sql .= "values "; - $sql .= "( "; - $sql .= "'".check_str($sip_profile_setting_uuid)."', "; - $sql .= "'".check_str($sip_profile_uuid)."', "; - $sql .= "'".check_str($sip_profile_setting_name)."', "; - $sql .= "'".check_str($sip_profile_setting_value)."', "; - $sql .= "'true' "; - $sql .= ")"; - //echo $sql."\n\n"; - $db->exec(check_sql($sql)); - } + //define the variables + $custom = ''; + $source = ''; + //check if the directory exists and set the paths + if (file_exists('/etc/fusionpbx')) { + //linux + $custom = '/etc/fusionpbx/resources/templates/conf/sip_profiles'; + $source = '/usr/share/fusionpbx/resources/templates/conf/sip_profiles'; + } + if (file_exists('/usr/local/etc/fusionpbx')) { + //bsd + $custom = '/usr/local/etc/fusionpbx/resources/templates/conf/sip_profiles'; + $source = '/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles'; + } + //copy the conf sip profiles to the /etc/fusionpbx/resources/templates/conf directory + if (strlen($custom) > 0 && strlen($source) > 0) { + if (!file_exists($custom)) { + if (file_exists($source)) { + //add the directory structure + mkdir($custom,0777,true); + //copy from source to custom + $obj = new install; + $obj->recursive_copy($source,$custom); } } } - unset($prep_statement); + + //add the sip profiles to the database + $sql = "select count(*) as num_rows from v_sip_profiles "; + $prep_statement = $db->prepare(check_sql($sql)); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] == 0) { + if (file_exists('/etc/fusionpbx')) { + $sip_profile_dir = '/etc/fusionpbx/resources/templates/conf/sip_profiles/*.xml'; + } + elseif (file_exists('/usr/local/etc/fusionpbx')) { + $sip_profile_dir = '/usr/local/etc/fusionpbx/resources/templates/conf/sip_profiles/*.xml'; + } + else { + $sip_profile_dir = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'resources/templates/conf/sip_profiles/*.xml'; + } + $xml_files = glob($sip_profile_dir); + foreach ($xml_files as &$xml_file) { + //load the sip profile xml and save it into an array + $sip_profile_xml = file_get_contents($xml_file); + $xml = simplexml_load_string($sip_profile_xml); + $json = json_encode($xml); + $sip_profile = json_decode($json, true); + $sip_profile_name = $sip_profile['@attributes']['name']; + //echo "sip profile name: ".$sip_profile_name."\n"; + + if ($sip_profile_name != "{v_sip_profile_name}") { + //prepare the description + switch ($sip_profile_name) { + case "internal": + $sip_profile_description = "The Internal profile by default requires registration which is used by the endpoints. "; + $sip_profile_description .= "By default the Internal profile binds to port 5060. "; + break; + case "internal-ipv6": + $sip_profile_description = "The Internal IPV6 profile binds to the IP version 6 address and is similar to the Internal profile.\n"; + break; + case "external": + $sip_profile_description .= "The External profile external provides anonymous calling in the public context. "; + $sip_profile_description .= "By default the External profile binds to port 5080. "; + $sip_profile_description .= "Calls can be sent using a SIP URL \"voip.domain.com:5080\" "; + break; + case "lan": + $sip_profile_description = "The LAN profile is the same as the Internal profile except that it is bound to the LAN IP.\n"; + break; + default: + $sip_profile_description .= ''; + } + + //add the sip profile + $sip_profile_uuid = uuid(); + $sql = "insert into v_sip_profiles"; + $sql .= "("; + $sql .= "sip_profile_uuid, "; + $sql .= "sip_profile_name, "; + $sql .= "sip_profile_description "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".check_str($sip_profile_uuid)."', "; + $sql .= "'".check_str($sip_profile_name)."', "; + $sql .= "'".check_str($sip_profile_description)."' "; + $sql .= ")"; + //echo $sql."\n\n"; + $db->exec(check_sql($sql)); + unset($sql); + + //add the sip profile settings + foreach ($sip_profile['settings']['param'] as $row) { + //get the name and value pair + $sip_profile_setting_name = $row['@attributes']['name']; + $sip_profile_setting_value = $row['@attributes']['value']; + //echo "name: $name value: $value\n"; + //add the profile settings into the database + $sip_profile_setting_uuid = uuid(); + $sql = "insert into v_sip_profile_settings "; + $sql .= "("; + $sql .= "sip_profile_setting_uuid, "; + $sql .= "sip_profile_uuid, "; + $sql .= "sip_profile_setting_name, "; + $sql .= "sip_profile_setting_value, "; + $sql .= "sip_profile_setting_enabled "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".check_str($sip_profile_setting_uuid)."', "; + $sql .= "'".check_str($sip_profile_uuid)."', "; + $sql .= "'".check_str($sip_profile_setting_name)."', "; + $sql .= "'".check_str($sip_profile_setting_value)."', "; + $sql .= "'true' "; + $sql .= ")"; + //echo $sql."\n\n"; + $db->exec(check_sql($sql)); + } + } + } + } + unset($prep_statement); + } } - } //if there is more than one domain then disable the force domains sip profile settings if ($domains_processed == 1) { diff --git a/resources/classes/install.php b/resources/classes/install.php index bebe94155a..aa806e9ac7 100644 --- a/resources/classes/install.php +++ b/resources/classes/install.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Copyright (C) 2010 + Copyright (C) 2010-2014 All Rights Reserved. Contributor(s): @@ -36,7 +36,7 @@ include "root.php"; var $switch_sounds_dir; //$option '-n' --no-clobber - function recursive_copy($src, $dst, $option = '') { + public function recursive_copy($src, $dst, $option = '') { if (file_exists('/bin/cp')) { exec ('cp -RLp '.$option.' '.$src.'/* '.$dst); } diff --git a/resources/install.php b/resources/install.php index 2fe0d26bb5..18962e09a3 100644 --- a/resources/install.php +++ b/resources/install.php @@ -55,10 +55,10 @@ require_once "resources/functions.php"; } elseif (file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/resources/config.php")) { //original directory $config_exists = true; - } elseif (file_exists("/etc/fusionpbx/config.php")){ + } elseif (file_exists("/etc/fusionpbx/config.php")) { //linux $config_exists = true; - } elseif (file_exists("/usr/local/etc/fusionpbx/config.php")){ + } elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) { $config_exists = true; } if ($config_exists) { @@ -787,7 +787,7 @@ if ($_POST["install_step"] == "3" && count($_POST) > 0 && strlen($_POST["persist if (file_exists('/usr/share/fusionpbx/resources/install/sql/mysql.sql')){ $filename = "/usr/share/fusionpbx/resources/install/sql/mysql.sql"; } - else { + else { $filename = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/sql/mysql.sql'; } $file_contents = file_get_contents($filename);