Update app_defaults.php

This commit is contained in:
FusionPBX 2017-07-09 23:52:34 -06:00 committed by GitHub
parent 2954fcaca4
commit a05db79b37
1 changed files with 68 additions and 153 deletions

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
Portions created by the Initial Developer are Copyright (C) 2008-2017
the Initial Developer. All Rights Reserved.
Contributor(s):
@ -26,51 +26,71 @@
if ($domains_processed == 1) {
//create a json string
$vars = <<<EOD
[
{"var_name":"domain","var_value":"\$\${local_ip_v4}","var_cat":"Domain","var_enabled":"true","var_description":"U2V0cyB0aGUgZGVmYXVsdCBkb21haW4u"},
{"var_name":"domain_name","var_value":"\$\${domain}","var_cat":"Domain","var_enabled":"true","var_description":""},
{"var_name":"sound_prefix","var_value":"\$\${sounds_dir}/en/us/callie","var_cat":"Sound","var_enabled":"true","var_description":"U2V0cyB0aGUgc291bmQgZGlyZWN0b3J5Lg=="},
{"var_name":"hold_music","var_value":"local_stream://default","var_cat":"Music on Hold","var_enabled":"true","var_description":""},
{"var_name":"global_codec_prefs","var_value":"G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM","var_cat":"Codecs","var_enabled":"true","var_description":"RzcyMjFAMzIwMDBoLEc3MjIxQDE2MDAwaCxHNzIyLFBDTVUsUENNQSxpTEJDLEdTTSxIMjYzLEgyNjQ="},
{"var_name":"outbound_codec_prefs","var_value":"PCMU,PCMA,GSM","var_cat":"Codecs","var_enabled":"true","var_description":"ZGVmYXVsdDogUENNVSxQQ01BLEdTTQ=="},
{"var_name":"media_mix_inbound_outbound_codecs","var_value":"true","var_cat":"Codecs","var_enabled":"true","var_description":""},
{"var_name":"xmpp_client_profile","var_value":"xmppc","var_cat":"Dingaling","var_enabled":"true","var_description":"eG1wcF9jbGllbnRfcHJvZmlsZSBhbmQgeG1wcF9zZXJ2ZXJfcHJvZmlsZSB4bXBwX2NsaWVudF9wcm9maWxlIGNhbiBiZSBhbnkgc3RyaW5nLiB4bXBwX3NlcnZlcl9wcm9maWxlIGlzIGFwcGVuZGVkIHRvICJkaW5nYWxpbmdfIiB0byBmb3JtIHRoZSBkYXRhYmFzZSBuYW1lIGNvbnRhaW5pbmcgdGhlICJzdWJzY3JpcHRpb25zIiB0YWJsZS4gdXNlZCBieTogZGluZ2FsaW5nLmNvbmYueG1sIGVudW0uY29uZi54bWw="},
{"var_name":"xmpp_server_profile","var_value":"xmpps","var_cat":"Dingaling","var_enabled":"true","var_description":""},
{"var_name":"bind_server_ip","var_value":"auto","var_cat":"Dingaling","var_enabled":"true","var_description":"Q2FuIGJlIGFuIGlwIGFkZHJlc3MsIGEgZG5zIG5hbWUsIG9yICJhdXRvIi4gVGhpcyBkZXRlcm1pbmVzIGFuIGlwIGFkZHJlc3MgYXZhaWxhYmxlIG9uIHRoaXMgaG9zdCB0byBiaW5kLiBJZiB5b3UgYXJlIHNlcGFyYXRpbmcgUlRQIGFuZCBTSVAgdHJhZmZpYywgeW91IHdpbGwgd2FudCB0byBoYXZlIHVzZSBkaWZmZXJlbnQgYWRkcmVzc2VzIHdoZXJlIHRoaXMgdmFyaWFibGUgYXBwZWFycy4gVXNlZCBieTogZGluZ2FsaW5nLmNvbmYueG1s"},
{"var_name":"external_rtp_ip","var_value":"\$\${local_ip_v4}","var_cat":"IP Address","var_enabled":"true","var_description":"KElmIHlvdScncmUgZ29pbmcgdG8gbG9hZCB0ZXN0IHRoZW4gcGxlYXNlIGlucHV0IHJlYWwgSVAgYWRkcmVzc2VzIGZvciBleHRlcm5hbF9ydHBfaXAgYW5kIGV4dGVybmFsX3NpcF9pcCkNCg0KQ2FuIGJlIGFuIG9uZSBvZjoNCiAgIGlwIGFkZHJlc3M6ICIxMi4zNC41Ni43OCINCiAgIGEgc3R1biBzZXJ2ZXIgbG9va3VwOiAic3R1bjpzdHVuLnNlcnZlci5jb20iDQogICBhIEROUyBuYW1lOiAiaG9zdDpob3N0LnNlcnZlci5jb20iDQoNCndoZXJlIGZzLm15ZG9tYWluLmNvbSBpcyBhIEROUyBBIHJlY29yZC11c2VmdWwgd2hlbiBmcyBpcyBvbiBhIGR5bmFtaWMgSVAgYWRkcmVzcywgYW5kIHVzZXMgYSBkeW5hbWljIEROUyB1cGRhdGVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGJpbmRfc2VydmVyX2lwIHZhbHVlIGlzIHVzZWQuIFVzZWQgYnk6IHNvZmlhLmNvbmYueG1sIGRpbmdhbGluZy5jb25mLnhtbA=="},
{"var_name":"external_sip_ip","var_value":"\$\${local_ip_v4}","var_cat":"IP Address","var_enabled":"true","var_description":"VXNlZCBhcyB0aGUgcHVibGljIElQIGFkZHJlc3MgZm9yIFNEUC4NCg0KQ2FuIGJlIGFuIG9uZSBvZjoNCiAgIGlwIGFkZHJlc3M6ICIxMi4zNC41Ni43OCINCiAgIGEgc3R1biBzZXJ2ZXIgbG9va3VwOiAic3R1bjpzdHVuLnNlcnZlci5jb20iDQogICBhIEROUyBuYW1lOiAiaG9zdDpob3N0LnNlcnZlci5jb20iDQoNCndoZXJlIGZzLm15ZG9tYWluLmNvbSBpcyBhIEROUyBBIHJlY29yZC11c2VmdWwgd2hlbiBmcyBpcyBvbiBhIGR5bmFtaWMgSVAgYWRkcmVzcywgYW5kIHVzZXMgYSBkeW5hbWljIEROUyB1cGRhdGVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGJpbmRfc2VydmVyX2lwIHZhbHVlIGlzIHVzZWQuIFVzZWQgYnk6IHNvZmlhLmNvbmYueG1sIGRpbmdhbGluZy5jb25mLnhtbA=="},
{"var_name":"hangup_on_subscriber_absent","var_value":"true","var_cat":"SIP","var_enabled":"false","var_description":"SGFuZ3VwIG9uIFNVQlNDUklCRVJfQUJTRU5U"},
{"var_name":"hangup_on_call_reject","var_value":"true","var_cat":"SIP","var_enabled":"false","var_description":"SGFuZ3VwIG9uIENBTExfUkVKRUNU"},
{"var_name":"unroll_loops","var_value":"true","var_cat":"SIP","var_enabled":"true","var_description":"VXNlZCB0byB0dXJuIG9uIHNpcCBsb29wYmFjayB1bnJvbGxpbmcu"},
{"var_name":"call_debug","var_value":"false","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"console_loglevel","var_value":"info","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"default_areacode","var_value":"208","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"us-ring","var_value":"%(2000,4000,440,480)","var_cat":"Ringtones","var_enabled":"true","var_description":"RGVmYXVsdCByaW5ndG9uZSAoVVMp"},
{"var_name":"sit","var_value":"%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"sip_tls_version","var_value":"tlsv1","var_cat":"SIP","var_enabled":"true","var_description":"U0lQIGFuZCBUTFMgc2V0dGluZ3Mu"},
{"var_name":"internal_auth_calls","var_value":"true","var_cat":"SIP Profile: Internal","var_enabled":"true","var_description":""},
{"var_name":"internal_sip_port","var_value":"5060","var_cat":"SIP Profile: Internal","var_enabled":"true","var_description":""},
{"var_name":"internal_tls_port","var_value":"5061","var_cat":"SIP Profile: Internal","var_enabled":"true","var_description":""},
{"var_name":"internal_ssl_enable","var_value":"false","var_cat":"SIP Profile: Internal","var_enabled":"true","var_description":""},
{"var_name":"internal_ssl_dir","var_value":"\$\${conf_dir}/tls","var_cat":"SIP Profile: Internal","var_enabled":"true","var_description":""},
{"var_name":"external_auth_calls","var_value":"false","var_cat":"SIP Profile: External","var_enabled":"true","var_description":""},
{"var_name":"external_sip_port","var_value":"5080","var_cat":"SIP Profile: External","var_enabled":"true","var_description":""},
{"var_name":"external_tls_port","var_value":"5081","var_cat":"SIP Profile: External","var_enabled":"true","var_description":""},
{"var_name":"external_ssl_enable","var_value":"false","var_cat":"SIP Profile: External","var_enabled":"true","var_description":""},
{"var_name":"external_ssl_dir","var_value":"\$\${conf_dir}/tls","var_cat":"SIP Profile: External","var_enabled":"true","var_description":""},
{"var_name":"use_profile","var_value":"internal","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"default_language","var_value":"en","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"default_dialect","var_value":"us","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"default_voice","var_value":"callie","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"ajax_refresh_rate","var_value":"3000","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"xml_cdr_archive","var_value":"dir","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"ringback","var_value":"\$\${us-ring}","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"transfer_ringback","var_value":"\$\${us-ring}","var_cat":"Defaults","var_enabled":"true","var_description":""},
{"var_name":"record_ext","var_value":"wav","var_cat":"Defaults","var_enabled":"true","var_description":""}
]
EOD;
//add the variables to the database
$sql = "select count(*) as num_rows from v_vars ";
$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) {
//get the xml
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/vars.xml')) {
$xml_file = '/usr/share/examples/fusionpbx/resources/templates/conf/vars.xml';
}
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/vars.xml')) {
$xml_file = '/usr/local/share/fusionpbx/resources/templates/conf/vars.xml';
}
else {
$xml_file = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/vars.xml';
}
//load the xml and save it into an array
$xml_string = file_get_contents($xml_file);
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$variables = json_decode($json, true);
//<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G7221@32000h,G7221@16000h,G722,PCMU,PCMA" category="Codecs" enabled="true"/>
$x = 0;
foreach ($variables['X-PRE-PROCESS'] as $variable) {
$cmd = $variable['@attributes']['cmd'];
$data = explode('=', $variable['@attributes']['data']);
$var_name = $data[0];
$var_value = $data[1];
$var_cat = $variable['@attributes']['category'];
$var_enabled = $variable['@attributes']['enabled'];
$var_order = '';
$var_description = '';
$array['vars'][$x]['var_uuid'] = uuid();
$array['vars'][$x]['var_name'] = $var_name;
$array['vars'][$x]['var_value'] = $var_value;
$array['vars'][$x]['var_cat'] = $var_cat;
$array['vars'][$x]['var_enabled'] = $var_enabled;
$array['vars'][$x]['var_order'] = $var_order;
$array['vars'][$x]['var_description'] = $var_description;
$x++;
}
//add the dialplan permission
$p = new permissions;
$p->add("var_add", "temp");
$p->add("var_edit", "temp");
//save to the data
$database = new database;
$database->app_name = 'vars';
$database->app_uuid = '54e08402-c1b8-0a9d-a30a-f569fc174dd8';
$database->save($array);
$message = $database->message;
//remove the temporary permission
$p->delete("var_add", "temp");
$p->delete("var_edit", "temp");
}
}
// Set country depend variables as country code and international direct dialing code (exit code)
if (!function_exists('set_country_vars')) {
@ -208,117 +228,11 @@ EOD;
$x++;
}
}
unset($prep_statement, $sql);
unset($countries);
unset($prep_statement, $sql, $countries);
}
}
}
//import default variables
$result = json_decode($vars, true);
//import ringtones from vars.xml
$vars_xml = simplexml_load_file($_SERVER["PROJECT_ROOT"] . "/resources/templates/conf/vars.xml");
foreach($vars_xml->{'X-PRE-PROCESS'} as $item) {
if($item->attributes()->cmd == 'set') {
$value = explode('=', $item->attributes()->data, 2);
if(preg_match("/-ring/", $value[0])){
$row = Array();
$row['var_cat'] = 'Ringtones';
$row['var_name'] = $value[0];
$row['var_value'] = $value[1];
$row['var_enabled'] = $item->attributes()->enabled;
if(!isset($row['var_enabled'])){
$row['var_enabled'] = 'true';
}
$row['var_description'] = $item->attributes()->description;
if(!isset($row['var_description'])){
$row['var_description'] = base64_encode('Imported from vars.xml');
}
$result[] = $row;
}
elseif(preg_match("/-tone/", $value[0])){
$row = Array();
$row['var_cat'] = 'Tones';
$row['var_name'] = $value[0];
$row['var_value'] = $value[1];
$row['var_enabled'] = $item->attributes()->enabled;
if(!isset($row['var_enabled'])){
$row['var_enabled'] = 'true';
}
$row['var_description'] = $item->attributes()->description;
if(!isset($row['var_description'])){
$row['var_description'] = base64_encode('Imported from vars.xml');
}
$result[] = $row;
}
}
}
//migrate old ringtones
$sql = "update v_vars ";
$sql .= "set var_cat = 'Ringtones' ";
$sql .= "where var_name like '%-ring' ";
$sql .= "and var_cat = 'Defaults' ";
$sql .= "and var_description = '' ";
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
}
$sql = "update v_vars ";
$sql .= "set var_cat = 'Ringtones' ";
$sql .= "where var_name like '%-ring' ";
$sql .= "and var_cat = 'Defaults' ";
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
}
unset($prep_statement, $sql);
//add missing variables
$x = 1;
foreach($result as $row) {
$sql = "select count(*) as num_rows from v_vars ";
$sql .= "where var_name = '".$row['var_name']."' ";
$sql .= "and var_cat = '".$row['var_cat']."' ";
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
$row2 = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row2['num_rows'] == 0) {
$sql = "insert into v_vars ";
$sql .= "(";
$sql .= "var_uuid, ";
$sql .= "var_name, ";
$sql .= "var_value, ";
$sql .= "var_cat, ";
$sql .= "var_enabled, ";
$sql .= "var_order, ";
$sql .= "var_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "(";
$sql .= "'".uuid()."', ";
$sql .= "'".$row['var_name']."', ";
$sql .= "'".$row['var_value']."', ";
$sql .= "'".$row['var_cat']."', ";
$sql .= "'".$row['var_enabled']."', ";
$sql .= "'".$x."', ";
$sql .= "'".$row['var_description']."' ";
$sql .= ");";
$db->exec($sql);
unset($sql);
$x++;
}
}
unset($prep_statement, $row2);
}
unset($result, $row);
//adjust the variables required variables
//set variables that depend on the number of domains
if (count($_SESSION['domains']) > 1) {
@ -371,4 +285,5 @@ EOD;
//save the vars.xml file
save_var_xml();
}
?>