Begin resample Sccp_manager
Create seporated interface to Xml
This commit is contained in:
parent
20ce9d0581
commit
4b6ebea984
|
@ -30,7 +30,17 @@
|
||||||
* + Change internal use Field to _Field (new feature in chan_sccp (added for Sccp_manager))
|
* + Change internal use Field to _Field (new feature in chan_sccp (added for Sccp_manager))
|
||||||
* + Delete phone XML
|
* + Delete phone XML
|
||||||
* + Change Installer ?? (test )
|
* + Change Installer ?? (test )
|
||||||
|
* + Installer Realtime config update
|
||||||
|
* + Installer Adaptive DB reconfig.
|
||||||
|
* + Add system info page
|
||||||
|
* + Change Cisco Language data
|
||||||
|
* + Make DB Acces from separate class
|
||||||
|
* + Make System Acces from separate class
|
||||||
|
* + Make Var elements from separate class
|
||||||
|
* - To make creating XML files in a separate class
|
||||||
|
* - Add Switch to select XML schema (display)
|
||||||
* - Bootstrap encodeURI(row['type']) ???????
|
* - Bootstrap encodeURI(row['type']) ???????
|
||||||
|
* - Check Time zone ....
|
||||||
* + SRST Config
|
* + SRST Config
|
||||||
* - Failover config
|
* - Failover config
|
||||||
* + Auto Addons!
|
* + Auto Addons!
|
||||||
|
@ -1637,6 +1647,21 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function sccp_create_tftp_XML() {
|
function sccp_create_tftp_XML() {
|
||||||
|
|
||||||
|
foreach ($this->sccpvalues as $key => $value) {
|
||||||
|
$data_value[$key] = $value['data'];
|
||||||
|
}
|
||||||
|
$data_value['server_if_list'] = $this->getIP_information();
|
||||||
|
$model_information = $this->getSccp_model_information($get = "enabled", $validate = false); // Get Active
|
||||||
|
|
||||||
|
if (empty($model_information))
|
||||||
|
$model_information = $this->getSccp_model_information($get = "all", $validate = false); // Get All
|
||||||
|
|
||||||
|
$lang_data = $this->extconfigs->getextConfig('sccp_lang');
|
||||||
|
|
||||||
|
$this->xmlinterface->create_default_XML($this->sccppath["tftp_path"], $data_value, $model_information, $lang_data);
|
||||||
|
|
||||||
|
/*
|
||||||
$def_xml_fields = array('authenticationURL', 'informationURL', 'messagesURL', 'servicesURL', 'directoryURL', 'proxyServerURL', 'idleTimeout', 'idleURL');
|
$def_xml_fields = array('authenticationURL', 'informationURL', 'messagesURL', 'servicesURL', 'directoryURL', 'proxyServerURL', 'idleTimeout', 'idleURL');
|
||||||
$def_xml_locale = array('userLocale', 'networkLocaleInfo', 'networkLocale');
|
$def_xml_locale = array('userLocale', 'networkLocaleInfo', 'networkLocale');
|
||||||
$xml_name = $this->sccppath["tftp_path"] . '/XMLDefault.cnf.xml';
|
$xml_name = $this->sccppath["tftp_path"] . '/XMLDefault.cnf.xml';
|
||||||
|
@ -1722,6 +1747,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||||
//
|
//
|
||||||
// die(print_r($xml_work));
|
// die(print_r($xml_work));
|
||||||
}
|
}
|
||||||
|
*
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1729,6 +1756,34 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function sccp_create_device_XML($dev_id = '') {
|
function sccp_create_device_XML($dev_id = '') {
|
||||||
|
|
||||||
|
if (empty($dev_id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dev_config = $this->dbinterface->get_db_SccpTableData("get_sccpdevice_byid", array('id' => $dev_id));
|
||||||
|
|
||||||
|
foreach ($this->sccpvalues as $key => $value) {
|
||||||
|
$data_value[$key] = $value['data'];
|
||||||
|
}
|
||||||
|
$data_value['ntp_timezone_id'] = $this-> extconfigs->getextConfig('sccp_timezone',$data_value['ntp_timezone']);
|
||||||
|
$data_value['server_if_list'] = $this->getIP_information();
|
||||||
|
|
||||||
|
$dev_config['addon_info'] = array();
|
||||||
|
if (!empty($dev_config['addon'])) {
|
||||||
|
$hw_addon = explode(',', $dev_config['addon']);
|
||||||
|
foreach ($hw_addon as $key) {
|
||||||
|
$hw_data = $this->getSccp_model_information('byid', false, "all", array('model' => $key));
|
||||||
|
$dev_config['addon_info'][$key] = $hw_data[0]['loadimage'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$lang_data = $this->extconfigs->getextConfig('sccp_lang');
|
||||||
|
|
||||||
|
return $this->xmlinterface->create_SEP_XML($this->sccppath["tftp_path"], $data_value, $dev_config, $dev_id, $lang_data);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
$var_xml_general_fields = array('authenticationURL' => 'dev_authenticationURL', 'informationURL' => 'dev_informationURL', 'messagesURL' => 'dev_messagesURL',
|
$var_xml_general_fields = array('authenticationURL' => 'dev_authenticationURL', 'informationURL' => 'dev_informationURL', 'messagesURL' => 'dev_messagesURL',
|
||||||
'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
|
'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
|
||||||
'idleURL' => 'dev_idleURL', 'sshUserId' => 'dev_sshUserId', 'sshPassword' => 'dev_sshPassword', 'deviceProtocol' => 'dev_deviceProtocol'
|
'idleURL' => 'dev_idleURL', 'sshUserId' => 'dev_sshUserId', 'sshPassword' => 'dev_sshPassword', 'deviceProtocol' => 'dev_deviceProtocol'
|
||||||
|
@ -1937,6 +1992,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||||
die('Error Hardware templatee :' . $xml_template . ' not found');
|
die('Error Hardware templatee :' . $xml_template . ' not found');
|
||||||
}
|
}
|
||||||
return time();
|
return time();
|
||||||
|
*
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
function sccp_delete_device_XML($dev_id = '') {
|
function sccp_delete_device_XML($dev_id = '') {
|
||||||
|
|
|
@ -134,35 +134,35 @@ class extconfigs {
|
||||||
'Dateline' => array('offset' => '-720', 'daylight' => ''),
|
'Dateline' => array('offset' => '-720', 'daylight' => ''),
|
||||||
'Samoa' => array('offset' => '-660', 'daylight' => ''),
|
'Samoa' => array('offset' => '-660', 'daylight' => ''),
|
||||||
'Hawaiian' => array('offset' => '-600', 'daylight' => ''),
|
'Hawaiian' => array('offset' => '-600', 'daylight' => ''),
|
||||||
'Alaskan' => array('offset' => '-540', 'daylight' => 'Daylight Time'),
|
'Alaskan' => array('offset' => '-540', 'daylight' => 'Daylight'),
|
||||||
'Pacific' => array('offset' => '-480', 'daylight' => 'Daylight Time'),
|
'Pacific' => array('offset' => '-480', 'daylight' => 'Daylight'),
|
||||||
'Mountain' => array('offset' => '-420', 'daylight' => 'Daylight Time'),
|
'Mountain' => array('offset' => '-420', 'daylight' => 'Daylight'),
|
||||||
'US Mountain' => array('offset' => '-420', 'daylight' => ''),
|
'US Mountain' => array('offset' => '-420', 'daylight' => ''),
|
||||||
'Central' => array('offset' => '-360', 'daylight' => 'Daylight Time'),
|
'Central' => array('offset' => '-360', 'daylight' => 'Daylight'),
|
||||||
'Mexico' => array('offset' => '-360', 'daylight' => 'Daylight Time'),
|
'Mexico' => array('offset' => '-360', 'daylight' => 'Daylight'),
|
||||||
'Canada Central' => array('offset' => '-360', 'daylight' => ''),
|
'Canada Central' => array('offset' => '-360', 'daylight' => ''),
|
||||||
'SA Pacific' => array('offset' => '-300', 'daylight' => ''),
|
'SA Pacific' => array('offset' => '-300', 'daylight' => ''),
|
||||||
'Eastern' => array('offset' => '-300', 'daylight' => 'Daylight Time'),
|
'Eastern' => array('offset' => '-300', 'daylight' => 'Daylight'),
|
||||||
'US Eastern' => array('offset' => '-300', 'daylight' => ''),
|
'US Eastern' => array('offset' => '-300', 'daylight' => ''),
|
||||||
'Atlantic' => array('offset' => '-240', 'daylight' => 'Daylight Time'),
|
'Atlantic' => array('offset' => '-240', 'daylight' => 'Daylight'),
|
||||||
'SA Western' => array('offset' => '-240', 'daylight' => ''),
|
'SA Western' => array('offset' => '-240', 'daylight' => ''),
|
||||||
'Pacific SA' => array('offset' => '-240', 'daylight' => ''),
|
'Pacific SA' => array('offset' => '-240', 'daylight' => ''),
|
||||||
'Newfoundland' => array('offset' => '-210', 'daylight' => 'Daylight Time'),
|
'Newfoundland' => array('offset' => '-210', 'daylight' => 'Daylight'),
|
||||||
'E. South America' => array('offset' => '-180', 'daylight' => 'Daylight Time'),
|
'E. South America' => array('offset' => '-180', 'daylight' => 'Daylight'),
|
||||||
'SA Eastern' => array('offset' => '-180', 'daylight' => ''),
|
'SA Eastern' => array('offset' => '-180', 'daylight' => ''),
|
||||||
'Pacific SA' => array('offset' => '-180', 'daylight' => 'Daylight Time'),
|
'Pacific SA' => array('offset' => '-180', 'daylight' => 'Daylight'),
|
||||||
'Mid-Atlantic' => array('offset' => '-120', 'daylight' => 'Daylight Time'),
|
'Mid-Atlantic' => array('offset' => '-120', 'daylight' => 'Daylight'),
|
||||||
'Azores' => array('offset' => '-060', 'daylight' => 'Daylight Time'),
|
'Azores' => array('offset' => '-060', 'daylight' => 'Daylight'),
|
||||||
'GMT' => array('offset' => '00', 'daylight' => 'Daylight Time'),
|
'GMT' => array('offset' => '00', 'daylight' => 'Daylight'),
|
||||||
'Greenwich' => array('offset' => '00', 'daylight' => ''),
|
'Greenwich' => array('offset' => '00', 'daylight' => ''),
|
||||||
'W. Europe' => array('offset' => '60', 'daylight' => 'Daylight Time'),
|
'W. Europe' => array('offset' => '60', 'daylight' => 'Daylight'),
|
||||||
'GTB' => array('offset' => '60', 'daylight' => 'Daylight Time'),
|
'GTB' => array('offset' => '60', 'daylight' => 'Daylight'),
|
||||||
'Egypt' => array('offset' => '60', 'daylight' => 'Daylight Time'),
|
'Egypt' => array('offset' => '60', 'daylight' => 'Daylight'),
|
||||||
'E. Europe' => array('offset' => '60', 'daylight' => 'Daylight Time'),
|
'E. Europe' => array('offset' => '60', 'daylight' => 'Daylight'),
|
||||||
'Romance' => array('offset' => '120', 'daylight' => 'Daylight Time'),
|
'Romance' => array('offset' => '120', 'daylight' => 'Daylight'),
|
||||||
'Central Europe' => array('offset' => '120', 'daylight' => 'Daylight Time'),
|
'Central Europe' => array('offset' => '120', 'daylight' => 'Daylight'),
|
||||||
'South Africa' => array('offset' => '120', 'daylight' => ''),
|
'South Africa' => array('offset' => '120', 'daylight' => ''),
|
||||||
'Jerusalem' => array('offset' => '120', 'daylight' => 'Daylight Time'),
|
'Jerusalem' => array('offset' => '120', 'daylight' => 'Daylight'),
|
||||||
'Saudi Arabia' => array('offset' => '180', 'daylight' => ''),
|
'Saudi Arabia' => array('offset' => '180', 'daylight' => ''),
|
||||||
/* Russion Regions */
|
/* Russion Regions */
|
||||||
'Russian/Kaliningrad' => array('offset' => '120', 'daylight' => ''),
|
'Russian/Kaliningrad' => array('offset' => '120', 'daylight' => ''),
|
||||||
|
@ -180,8 +180,8 @@ class extconfigs {
|
||||||
'Russian/Kamchatka' => array('offset' => '720', 'daylight' => ''),
|
'Russian/Kamchatka' => array('offset' => '720', 'daylight' => ''),
|
||||||
/* EnD - Russion Regions */
|
/* EnD - Russion Regions */
|
||||||
|
|
||||||
'Iran' => array('offset' => '210', 'daylight' => 'Daylight Time'),
|
'Iran' => array('offset' => '210', 'daylight' => 'Daylight'),
|
||||||
'Caucasus' => array('offset' => '240', 'daylight' => 'Daylight Time'),
|
'Caucasus' => array('offset' => '240', 'daylight' => 'Daylight'),
|
||||||
'Arabian' => array('offset' => '240', 'daylight' => ''),
|
'Arabian' => array('offset' => '240', 'daylight' => ''),
|
||||||
'Afghanistan' => array('offset' => '270', 'daylight' => ''),
|
'Afghanistan' => array('offset' => '270', 'daylight' => ''),
|
||||||
'West Asia' => array('offset' => '300', 'daylight' => ''),
|
'West Asia' => array('offset' => '300', 'daylight' => ''),
|
||||||
|
@ -191,15 +191,15 @@ class extconfigs {
|
||||||
'China' => array('offset' => '480', 'daylight' => ''),
|
'China' => array('offset' => '480', 'daylight' => ''),
|
||||||
'Taipei' => array('offset' => '480', 'daylight' => ''),
|
'Taipei' => array('offset' => '480', 'daylight' => ''),
|
||||||
'Tokyo' => array('offset' => '540', 'daylight' => ''),
|
'Tokyo' => array('offset' => '540', 'daylight' => ''),
|
||||||
'Cen. Australia' => array('offset' => '570', 'daylight' => 'Daylight Time'),
|
'Cen. Australia' => array('offset' => '570', 'daylight' => 'Daylight'),
|
||||||
'AUS Central' => array('offset' => '570', 'daylight' => ''),
|
'AUS Central' => array('offset' => '570', 'daylight' => ''),
|
||||||
'E. Australia' => array('offset' => '600', 'daylight' => ''),
|
'E. Australia' => array('offset' => '600', 'daylight' => ''),
|
||||||
'AUS Eastern' => array('offset' => '600', 'daylight' => 'Daylight Time'),
|
'AUS Eastern' => array('offset' => '600', 'daylight' => 'Daylight'),
|
||||||
'West Pacific' => array('offset' => '600', 'daylight' => ''),
|
'West Pacific' => array('offset' => '600', 'daylight' => ''),
|
||||||
'Tasmania' => array('offset' => '600', 'daylight' => 'Daylight Time'),
|
'Tasmania' => array('offset' => '600', 'daylight' => 'Daylight'),
|
||||||
'Central Pacific' => array('offset' => '660', 'daylight' => ''),
|
'Central Pacific' => array('offset' => '660', 'daylight' => ''),
|
||||||
'Fiji' => array('offset' => '720', 'daylight' => ''),
|
'Fiji' => array('offset' => '720', 'daylight' => ''),
|
||||||
'New Zealand' => array('offset' => '720', 'daylight' => 'Daylight Time')
|
'New Zealand' => array('offset' => '720', 'daylight' => 'Daylight')
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
342
Sccp_manager.inc/xmlinterface.class.php
Normal file
342
Sccp_manager.inc/xmlinterface.class.php
Normal file
|
@ -0,0 +1,342 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Core Comsnd Interface
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace FreePBX\modules\Sccp_manager;
|
||||||
|
class xmlinterface {
|
||||||
|
private $val_null = 'NONE'; /// REPLACE to null Field
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
public function info() {
|
||||||
|
return Array('Version' => '13.0.2',
|
||||||
|
'about' =>'Create XML data interface v. 13.0.2');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function create_default_XML($data_path = '', $data_values= array(), $model_information =array(), $lang_info =array()) {
|
||||||
|
if (empty($data_path) || empty($data_values)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$def_xml_fields = array('authenticationURL', 'informationURL', 'messagesURL', 'servicesURL', 'directoryURL', 'proxyServerURL', 'idleTimeout', 'idleURL');
|
||||||
|
$def_xml_locale = array('userLocale', 'networkLocaleInfo', 'networkLocale');
|
||||||
|
$xml_name = $data_path . '/XMLDefault.cnf.xml';
|
||||||
|
$xml_template = $data_path . '/templates/XMLDefault.cnf.xml_template';
|
||||||
|
|
||||||
|
if (file_exists($xml_template)) {
|
||||||
|
$xml_work = simplexml_load_file($xml_template);
|
||||||
|
|
||||||
|
|
||||||
|
$xnode = &$xml_work->callManagerGroup->members;
|
||||||
|
if ($data_values['bindaddr'] == '0.0.0.0') {
|
||||||
|
$ifc = 0;
|
||||||
|
foreach ($data_values['server_if_list'] as $value) {
|
||||||
|
if (!empty($value[0])) {
|
||||||
|
if (!in_array($value[0], array('0.0.0.0', '127.0.0.1'), true)) {
|
||||||
|
$xnode_obj = clone $xnode->member;
|
||||||
|
$xnode_obj['priority'] = $ifc;
|
||||||
|
//$xnode_obj = &$xnode -> member -> callManager;
|
||||||
|
$xnode_obj->callManager->name = $data_values['servername'];
|
||||||
|
$xnode_obj->callManager->ports->ethernetPhonePort = $data_values['port'];
|
||||||
|
$xnode_obj->callManager->processNodeName = $value[0];
|
||||||
|
if ($ifc === 0) {
|
||||||
|
$this->replaceSimpleXmlNode($xnode->member, $xnode_obj);
|
||||||
|
} else {
|
||||||
|
$this->appendSimpleXmlNode($xnode->member, $xnode_obj);
|
||||||
|
}
|
||||||
|
$ifc ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$xnode->member['priority'] = '0';
|
||||||
|
$xnode_obj = &$xnode->member->callManager;
|
||||||
|
$xnode_obj->name = $data_values['servername'];
|
||||||
|
$xnode_obj->ports->ethernetPhonePort = $data_values['port'];
|
||||||
|
$xnode_obj->processNodeName = $data_values['bindaddr'];
|
||||||
|
}
|
||||||
|
$this->replaceSimpleXmlNode($xml_work->callManagerGroup->members, $xnode);
|
||||||
|
|
||||||
|
foreach ($def_xml_fields as $value) {
|
||||||
|
if (!empty($data_values['dev_' . $value])) {
|
||||||
|
$xml_work->$value = trim($data_values['dev_' . $value]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($def_xml_locale as $key) {
|
||||||
|
if (!empty($xml_work->$key)) {
|
||||||
|
$xnode = &$xml_work->$key;
|
||||||
|
switch ($key) {
|
||||||
|
case 'userLocale':
|
||||||
|
case 'networkLocaleInfo':
|
||||||
|
if ($key == 'networkLocaleInfo') {
|
||||||
|
$lang = $data_values['netlang'];
|
||||||
|
} else {
|
||||||
|
$lang = $data_values['devlang'];
|
||||||
|
}
|
||||||
|
// configs->getConfig('sccp_lang')
|
||||||
|
if (isset($lang_info[$lang])) {
|
||||||
|
$xnode->name = $lang_info[$lang]['locale'];
|
||||||
|
$xnode->langCode = $lang_info[$lang]['code'];
|
||||||
|
} else {
|
||||||
|
$xnode->name = '';
|
||||||
|
$xnode->langCode = '';
|
||||||
|
}
|
||||||
|
// $this -> replaceSimpleXmlNode($xml_work->$key,$xnode);
|
||||||
|
break;
|
||||||
|
case 'networkLocale':
|
||||||
|
$lang = $data_values['netlang'];
|
||||||
|
if (isset($lang_info[$lang])) {
|
||||||
|
$xnode = $lang_info[$lang]['language'];
|
||||||
|
} else {
|
||||||
|
$xnode = '';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//$this-> replaceSimpleXmlNode($xml_work->$value, $xnode );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($model_information as $var) {
|
||||||
|
if (!empty($var['loadinformationid'])) {
|
||||||
|
$node = $xml_work->addChild($var['loadinformationid'], $var['loadimage']);
|
||||||
|
$node->addAttribute('model', $var['vendor'] . ' ' . $var['model']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$xml_work->asXml($xml_name); // Save XMLDefault1.cnf.xml
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function create_SEP_XML($data_path = '', $data_values= array(), $dev_config = array(), $dev_id = '',$lang_info =array()) {
|
||||||
|
|
||||||
|
$var_xml_general_fields = array('authenticationURL' => 'dev_authenticationURL', 'informationURL' => 'dev_informationURL', 'messagesURL' => 'dev_messagesURL',
|
||||||
|
'servicesURL' => 'dev_servicesURL', 'directoryURL' => 'dev_directoryURL', 'proxyServerURL' => 'dev_proxyServerURL', 'idleTimeout' => 'dev_idleTimeout',
|
||||||
|
'idleURL' => 'dev_idleURL', 'sshUserId' => 'dev_sshUserId', 'sshPassword' => 'dev_sshPassword', 'deviceProtocol' => 'dev_deviceProtocol'
|
||||||
|
);
|
||||||
|
$var_xml_general_vars = array('capfAuthMode' => 'null', 'capfList'=> 'null', 'mobility' => 'null',
|
||||||
|
'phoneServices' =>'null', 'certHash' =>'null',
|
||||||
|
'deviceSecurityMode' => '1');
|
||||||
|
|
||||||
|
if (empty($dev_id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// $var_hw_config = $this->dbinterface->get_db_SccpTableData("get_sccpdevice_byid", array('id' => $dev_id));
|
||||||
|
|
||||||
|
if (empty($dev_config)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($dev_config['nametemplate'])) {
|
||||||
|
$xml_template = $data_path . '/templates/' . $dev_config['nametemplate'];
|
||||||
|
} else {
|
||||||
|
$xml_template = $data_path . '/templates/SEP0000000000.cnf.xml_79df_template';
|
||||||
|
}
|
||||||
|
$xml_name = $data_path . '/' . $dev_id . '.cnf.xml';
|
||||||
|
if (file_exists($xml_template)) {
|
||||||
|
$xml_work = simplexml_load_file($xml_template);
|
||||||
|
|
||||||
|
foreach ($var_xml_general_vars as $key => $data) {
|
||||||
|
if (isset($xml_work->$key)) {
|
||||||
|
if ($data != 'null') {
|
||||||
|
$xml_work->$key = $data;
|
||||||
|
} else {
|
||||||
|
$node = $xml_work->$key;
|
||||||
|
unset($node[0][0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($xml_work as $key => $data) {
|
||||||
|
// Set System global Values
|
||||||
|
if (!empty($var_xml_general_fields[$key])) {
|
||||||
|
$xml_work->$key = $data_values[$var_xml_general_fields[$key]];
|
||||||
|
}
|
||||||
|
// Set section Values
|
||||||
|
$xml_node = $xml_work->$key;
|
||||||
|
switch ($key) {
|
||||||
|
case 'devicePool':
|
||||||
|
$xml_node = $xml_work->$key;
|
||||||
|
foreach ($xml_work->$key->children() as $dkey => $ddata) {
|
||||||
|
switch ($dkey) {
|
||||||
|
case 'dateTimeSetting':
|
||||||
|
$xnode = &$xml_node->$dkey;
|
||||||
|
$tz_id = $data_values['ntp_timezone'];
|
||||||
|
$TZdata = $data_values['ntp_timezone_id'];
|
||||||
|
if (empty($TZdata)){
|
||||||
|
$TZdata = array('offset' => '0', 'daylight' => '');
|
||||||
|
}
|
||||||
|
$xnode->name = $tz_id;
|
||||||
|
$xnode->dateTemplate = $data_values['dateformat'];
|
||||||
|
$xnode->timeZone = $tz_id.' Standard'.((empty($TZdata['daylight']))? '': '/'.$TZdata['daylight']).' Time';
|
||||||
|
|
||||||
|
if ($data_values['ntp_config_enabled'] == 'yes') {
|
||||||
|
$xnode->ntps->ntp->name = $data_values['ntp_server'];
|
||||||
|
$xnode->ntps->ntp->ntpMode = $data_values['ntp_server_mode'];
|
||||||
|
} else {
|
||||||
|
$xnode->ntps = '';
|
||||||
|
}
|
||||||
|
// Ntp Config
|
||||||
|
break;
|
||||||
|
case 'srstInfo':
|
||||||
|
if ($data_values['srst_Option'] == 'user') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$xnode = &$xml_node->$dkey;
|
||||||
|
$xnode -> name = $data_values['srst_Name'];
|
||||||
|
$xnode -> srstOption = $data_values['srst_Option'];
|
||||||
|
$xnode -> userModifiable = $data_values['srst_userModifiable'];
|
||||||
|
$xnode -> isSecure = $data_values['srst_isSecure'];
|
||||||
|
|
||||||
|
$srst_fld = array('srst_ip' => array('ipAddr','port') );
|
||||||
|
// $srst_fld = array('srst_ip' => array('ipAddr','port') , 'srst_sip' => array('sipIpAddr','sipPort') );
|
||||||
|
foreach ($srst_fld as $srst_pro => $srs_put){
|
||||||
|
$srst_data = explode(';', $data_values[$srst_pro]);
|
||||||
|
$si = 1;
|
||||||
|
// $xnode['test'] = $srst_data[0];
|
||||||
|
foreach ($srst_data as $value) {
|
||||||
|
$srs_val = explode('/',$value);
|
||||||
|
$nod = $srs_put[0].$si;
|
||||||
|
$xnode -> $nod = $srs_val[0];
|
||||||
|
$nod = $srs_put[1].$si;
|
||||||
|
$xnode -> $nod = $srs_val[1];
|
||||||
|
$si ++;
|
||||||
|
}
|
||||||
|
while ($si < 4) {
|
||||||
|
$nod = $srs_put[0].$si;
|
||||||
|
$xnode -> $nod = '';
|
||||||
|
$nod = $srs_put[1].$si;
|
||||||
|
$xnode -> $nod = '';
|
||||||
|
$si ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'connectionMonitorDuration':
|
||||||
|
$xml_node->$dkey = strval(intval(intval($data_values['keepalive'])* 0.75));
|
||||||
|
break;
|
||||||
|
case 'callManagerGroup':
|
||||||
|
$xnode = &$xml_node->$dkey->members;
|
||||||
|
if ($data_values['bindaddr'] == '0.0.0.0') {
|
||||||
|
$ifc = 0;
|
||||||
|
foreach ($data_values['server_if_list'] as $value) {
|
||||||
|
if (!empty($value[0])) {
|
||||||
|
if (!in_array($value[0], array('0.0.0.0', '127.0.0.1'), true)) {
|
||||||
|
$xnode_obj = clone $xnode->member;
|
||||||
|
// $xnode_obj = $xnode -> member;
|
||||||
|
// $xnode_obj = $xnode -> addChild($xnode->member);
|
||||||
|
$xnode_obj['priority'] = $ifc;
|
||||||
|
//$xnode_obj = &$xnode -> member -> callManager;
|
||||||
|
$xnode_obj->callManager->name = $data_values['servername'];
|
||||||
|
$xnode_obj->callManager->ports->ethernetPhonePort = $data_values['port'];
|
||||||
|
$xnode_obj->callManager->processNodeName = $value[0];
|
||||||
|
if ($ifc === 0) {
|
||||||
|
$this->replaceSimpleXmlNode($xnode->member, $xnode_obj);
|
||||||
|
} else {
|
||||||
|
$this->appendSimpleXmlNode($xnode->member, $xnode_obj);
|
||||||
|
}
|
||||||
|
$ifc ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$xnode->member['priority'] = '0';
|
||||||
|
$xnode_obj = &$xnode->member->callManager;
|
||||||
|
$xnode_obj->name = $data_values['servername'];
|
||||||
|
$xnode_obj->ports->ethernetPhonePort = $data_values['port'];
|
||||||
|
$xnode_obj->processNodeName = $data_values['bindaddr'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->replaceSimpleXmlNode($xml_work->$key, $xml_node);
|
||||||
|
break;
|
||||||
|
case 'versionStamp':
|
||||||
|
$xml_work->$key = time();
|
||||||
|
break;
|
||||||
|
case 'loadInformation':
|
||||||
|
$xml_work->$key = $dev_config["loadimage"];
|
||||||
|
if (!empty($dev_config['addon'])) {
|
||||||
|
$xnode = $xml_work->addChild('addOnModules');
|
||||||
|
$ti = 1;
|
||||||
|
foreach ($dev_config['addon_info'] as $add_key => $add_val) {
|
||||||
|
$xnode_obj = $xnode->addChild('addOnModule');
|
||||||
|
$xnode_obj->addAttribute('idx', $ti);
|
||||||
|
$xnode_obj->addChild('loadInformation', $add_val);
|
||||||
|
$ti ++;
|
||||||
|
}
|
||||||
|
// $this->appendSimpleXmlNode($xml_work , $xnode_obj);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'userLocale':
|
||||||
|
case 'networkLocaleInfo':
|
||||||
|
case 'networkLocale':
|
||||||
|
$hwlang = '';
|
||||||
|
$lang = '';
|
||||||
|
if (!empty($dev_config["_hwlang"])) {
|
||||||
|
$hwlang = explode(':', $dev_config["_hwlang"]);
|
||||||
|
}
|
||||||
|
if (($key == 'networkLocaleInfo') || ($key == 'networkLocale')) {
|
||||||
|
$lang = (empty($hwlang[0])) ? $data_values['netlang'] : $hwlang[0];
|
||||||
|
} else {
|
||||||
|
$lang = (empty($hwlang[1])) ? $data_values['devlang'] : $hwlang[1];
|
||||||
|
}
|
||||||
|
if (($lang !='null') && (!empty(trim($lang)))) {
|
||||||
|
if ($key == 'networkLocale') {
|
||||||
|
$xml_work->$key = $lang;
|
||||||
|
} else {
|
||||||
|
if (isset($lang_info[$lang])) {
|
||||||
|
$xml_node->name = $lang_info[$lang]['locale'];
|
||||||
|
$xml_node->langCode = $lang_info[$lang]['code'];
|
||||||
|
$this->replaceSimpleXmlNode($xml_work->$key, $xml_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$xml_work->$key ='';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Move all set to $var_xml_general_vars
|
||||||
|
// case 'mobility':
|
||||||
|
// case 'capfList':
|
||||||
|
// break;
|
||||||
|
// case 'phoneServices':
|
||||||
|
// break;
|
||||||
|
// $xml_work->$key = '';
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// print_r($xml_work);
|
||||||
|
$xml_work->asXml($xml_name); // Save
|
||||||
|
} else {
|
||||||
|
die('Error Hardware templatee :' . $xml_template . ' not found');
|
||||||
|
}
|
||||||
|
return time();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private function replaceSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||||
|
$dom = dom_import_simplexml($xml);
|
||||||
|
$import = $dom->ownerDocument->importNode(
|
||||||
|
dom_import_simplexml($element), TRUE
|
||||||
|
);
|
||||||
|
$dom->parentNode->replaceChild($import, $dom);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function appendSimpleXmlNode($xml, $element = SimpleXMLElement) {
|
||||||
|
|
||||||
|
$dom = dom_import_simplexml($xml);
|
||||||
|
$import = $dom->ownerDocument->importNode(
|
||||||
|
dom_import_simplexml($element), TRUE
|
||||||
|
);
|
||||||
|
// $dom->parentNode->appendChild($import, $dom);
|
||||||
|
$dom->parentNode->appendChild($import->cloneNode(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -47,7 +47,7 @@ and open the template in the editor. Base Version before all crash :-)
|
||||||
</page_group>
|
</page_group>
|
||||||
|
|
||||||
<page_group name="sccp_general">
|
<page_group name="sccp_general">
|
||||||
<label>SCCP Server config v431</label>
|
<label>SCCP Server config</label>
|
||||||
|
|
||||||
<item type="IE" id="2"><label>SCCP Server Name</label>
|
<item type="IE" id="2"><label>SCCP Server Name</label>
|
||||||
<input>
|
<input>
|
||||||
|
|
|
@ -17,6 +17,7 @@ $info = array();
|
||||||
$info['srvinterface'] = $this->srvinterface->info();
|
$info['srvinterface'] = $this->srvinterface->info();
|
||||||
$info['extconfigs'] = $this->extconfigs->info();
|
$info['extconfigs'] = $this->extconfigs->info();
|
||||||
$info['dbinterface'] = $this->dbinterface->info();
|
$info['dbinterface'] = $this->dbinterface->info();
|
||||||
|
$info['XML'] = $this->xmlinterface->info();
|
||||||
$info['sccp_class'] = $driver['sccp'];
|
$info['sccp_class'] = $driver['sccp'];
|
||||||
$info['Core_sccp'] = array('Version' => $core['Version'], 'about'=> 'Sccp ver.'. $core['Version'].' r'.$core['vCode']. ' Revision :'. $core['RevisionNum']);
|
$info['Core_sccp'] = array('Version' => $core['Version'], 'about'=> 'Sccp ver.'. $core['Version'].' r'.$core['vCode']. ' Revision :'. $core['RevisionNum']);
|
||||||
$info['Asterisk'] = array('Version' => FreePBX::Config()->get('ASTVERSION'), 'about'=> 'Asterisk.');
|
$info['Asterisk'] = array('Version' => FreePBX::Config()->get('ASTVERSION'), 'about'=> 'Asterisk.');
|
||||||
|
|
Loading…
Reference in a new issue