From 55f6dd73f9dc4c6481a33cdb6a41d508b18b3a4c Mon Sep 17 00:00:00 2001 From: PhantomVl Date: Tue, 18 Dec 2018 12:28:00 +0300 Subject: [PATCH] =?UTF-8?q?Update=20433=20=20-=20Added=20support=20for=20u?= =?UTF-8?q?pdated=20driver=20configuration=20=20-=20Added=20revision=20con?= =?UTF-8?q?trol=20database=20schema=20(https://github.com/chan-sccp/chan-s?= =?UTF-8?q?ccp/commit/258fed034e351d601bef755d956ac5f838d6bee8)=20=20-=20A?= =?UTF-8?q?dded=20option=20"callhistory=5Fanswered=5Felsewhere"=20=20-=20s?= =?UTF-8?q?ave=20point=20in=20phone=20directory=20for=20pickup=20calls.=20?= =?UTF-8?q?=20=20(bug=20fix=20by=20dkgroot=20=20https://github.com/chan-sc?= =?UTF-8?q?cp/chan-sccp/commit/0291207d82e4aaf885030f27106b3f1429acceb5)?= =?UTF-8?q?=20=20-=20=20Bug=20fix=20options=20(TFTP=20SERVER=20remapping?= =?UTF-8?q?=20support)=20=20-=20And=20traditionally=20added=20new=20bugs.?= =?UTF-8?q?=20=20-=20=D0=98=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D1=85=20?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=20=D1=85=D0=BE=D1=87=D0=B5=D1=82=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BC=D0=BE=D1=87=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D1=83=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=81=D0=B2=D0=B5=D0=B6=D0=B8=D0=B5=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=D0=B8.=20=D0=AF=20=D0=B8=D1=85=20=D0=B5=D1=89=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B5=20=20=D0=BD=D0=B0=D1=88=D0=B5=D0=BB,=20=D0=B0=20?= =?UTF-8?q?=D0=B2=D1=8B=20=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- README.ru.md | 14 +- Sccp_manager.class.php | 70 +- Sccp_manager.inc/extconfigs.class.php | 9 +- Sccp_manager.inc/srvinterface.class.php | 18 + Sccp_manager.inc/xmlinterface.class.php | 7 +- conf/SEP0000000000.cnf.xml_791x_template | 1 + conf/SEP0000000000.cnf.xml_7940_template | 1 + conf/SEP0000000000.cnf.xml_796x_template | 1 + conf/Sccp.class.php.v433 | 446 +++++++ conf/sccpgeneral.xml.v431 | 43 +- conf/sccpgeneral.xml.v433 | 1502 +++++++++++++++++++++ conf/sccpsimple.xml.v431 | 31 +- conf/sccpsimple.xml.v433 | 1557 ++++++++++++++++++++++ install.php | 93 ++ views/form.adddevice.php | 6 + views/formShow.php | 5 +- views/server.codec.php | 4 +- views/server.device.php | 1 + views/server.info.php | 14 +- views/server.setting.php | 1 - 21 files changed, 3798 insertions(+), 29 deletions(-) create mode 100644 conf/Sccp.class.php.v433 create mode 100644 conf/sccpgeneral.xml.v433 create mode 100644 conf/sccpsimple.xml.v433 diff --git a/README.md b/README.md index 877d71a..b9d09ca 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Welcome to Chan_SCCP GUI Manager for FreePBX +## Welcome to Develop Chan_SCCP GUI Manager for FreePBX | [English](README.md) | [Russian](README.ru.md) | ![Gif](https://github.com/PhantomVl/sccp_manager/raw/develop/.dok/image/Demo_1s5.gif) @@ -79,6 +79,7 @@ Make sure you have the following installed on your system: > cd /var/www/html/admin/modules/sccp_manager/ > git fetch > git pull +> git checkout develop ### IMPORTANT NOTES: - This system assumes/requires that you are using the Asterisk realtime database. If you are not yet using the realtime database, diff --git a/README.ru.md b/README.ru.md index d2f0487..bd3c1fa 100644 --- a/README.ru.md +++ b/README.ru.md @@ -1,4 +1,4 @@ -## Welcome to Chan_SCCP GUI Manager for FreePBX +## Welcome to Develop Chan_SCCP GUI Manager for FreePBX | [English](README.md) | [Russian](README.ru.md) | ![Gif](https://github.com/PhantomVl/sccp_manager/raw/develop/.dok/image/Demo_1s5.gif) @@ -33,6 +33,10 @@ 3. Драйвер протокола SCCP страница (https://github.com/chan-sccp/chan-sccp/) 4. Ну и это модуль. +### Вжно! В этой ветке лежат самые последне нововведения и обновления, и самые последние БАГИ ! + Пользуйся и наслождайся. Так же не забывай писать нам об ошибках, которые ты нашел ! + Это очень нам поможет, Я с радостью исправлю то что ты нашел и добалю новых. + ### Wiki - Основные Инструкции по настройке Вся документация лежит на Вики [![SCCP Manager Wiki](https://img.shields.io/badge/Wiki-new-blue.svg)](https://github.com/PhantomVl/sccp_manager/wiki) @@ -51,7 +55,10 @@ Make sure you have the following installed on your system: ### Installation Очень короткая инструкция ###### [Полная версия инструкции] (https://github.com/PhantomVl/sccp_manager/wiki/step-by-step-instlation) - - Chan_SCCP module 4.3.0 (or later) [See our WIKI] (https://github.com/chan-sccp/chan-sccp/wiki/Building-and-Installation-Guide) + - Chan_SCCP module 4.3.1 (or later) [See our WIKI] (https://github.com/chan-sccp/chan-sccp/wiki/Building-and-Installation-Guide) +> git clone https://github.com/chan-sccp/chan-sccp.git +> git checkout develop + - Собираем с флагами и создаем БД для работы: > ./configure --enable-conference --enable-advanced-functions --enable-distributed-devicestate > mysql -u root asterisk < mysql-v5_enum.sql @@ -62,6 +69,8 @@ Make sure you have the following installed on your system: - Установка модуля > cd /var/www/html/admin/modules/ > git clone https://github.com/PhantomVl/sccp_manager.git +> cd /var/www/html/admin/modules/sccp_manager/ +> git checkout develop > amportal chown > amportal a ma install sccp_manager @@ -73,6 +82,7 @@ Make sure you have the following installed on your system: > cd /var/www/html/admin/modules/sccp_manager/ > git fetch > git pull +> git checkout develop ### Важно: - Желательно иметь Firmware телефонов Cisco, языковые пакеты ну всякое разное. diff --git a/Sccp_manager.class.php b/Sccp_manager.class.php index 297d0bd..45da570 100644 --- a/Sccp_manager.class.php +++ b/Sccp_manager.class.php @@ -141,8 +141,12 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { $this->init_sccp_path(); $this->initVarfromDefs(); $this->initTftpLang(); - - + + if (!empty($this->sccpvalues['SccpDBmodel'])) { + if ($this->sccpvalues['sccp_compatible']['data'] > $this->sccpvalues['SccpDBmodel']['data']) { + $this->sccpvalues['sccp_compatible']['data'] = $this->sccpvalues['SccpDBmodel']['data'] ; + } + } // Load Advanced Form Constuctor Data if (empty($this->sccpvalues['displayconfig'])) { $xml_vars = __DIR__ . '/conf/sccpgeneral.xml.v' . $this->sccpvalues['sccp_compatible']['data']; @@ -1463,7 +1467,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { function init_sccp_path() { global $db; global $amp_conf; - $driver_revision = array('0' => '', '430' => '.v431', '431' => '.v432'); + $driver_revision = array('0' => '', '430' => '.v431', '431' => '.v432', '432' => '.v432', '433' => '.v433'); $confDir = $amp_conf["ASTETCDIR"]; @@ -1475,6 +1479,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { } } $ver_id = $this->srvinterface->get_compatible_sccp(); + if (!empty($this->sccpvalues['SccpDBmodel'])) { + $ver_id =$this->sccpvalues['SccpDBmodel']['data']; + } $driver = $this->FreePBX->Core->getAllDriversInfo(); $sccp_driver_replace= ''; @@ -1671,7 +1678,24 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { $data_value['ntp_timezone_id'] = $this->extconfigs->getextConfig('sccp_timezone', $data_value['ntp_timezone']); $data_value['server_if_list'] = $this->getIP_information(); $dev_config['tftp_path'] = $this->sccppath["tftp_path"]; - + $dev_config['tftp_firmware'] = ''; +/* if (!empty($this->sccpvalues['tftp_rewrite'])) { + if ( $this->sccpvalues['tftp_rewrite']['data'] == 'internal' ) { + $dir_list = $this->find_all_files($dev_config['tftp_path'], $dev_config['loadimage']); + foreach ($dir_list as $filek){ + if (!empty($filek)) { + $fnd_path= ''; + $fnd_path = str_replace($dev_config['tftp_path'],'',$filek); + $fnd_path = substr($fnd_path,1,strpos($fnd_path, $dev_config['loadimage'])-1); + if (!empty($fnd_path)) { + $dev_config['tftp_firmware'] = $fnd_path; + } + break; + } + } + } + } + */ $dev_config['addon_info'] = array(); if (!empty($dev_config['addon'])) { $hw_addon = explode(',', $dev_config['addon']); @@ -1745,8 +1769,19 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { // $dir = $this->sccppath["tftp_path"]; $dir = $this->sccppath["tftp_firmware_path"]; $dir_tepl = $this->sccppath["tftp_templates"]; - $dir_list = $this->find_all_files($dir, $file_ext, 'fileonly'); - + + $search_mode = ''; + if (!empty($this->sccpvalues['tftp_rewrite'])) { + $search_mode = $this->sccpvalues['tftp_rewrite']['data']; + if ( $search_mode == 'pro' ) { + $dir_list = $this->find_all_files($dir, $file_ext, 'fileonly'); + } else { + $dir_list = $this->find_all_files($dir, $file_ext); + } + } else { + $dir_list = $this->find_all_files($dir, $file_ext, 'fileonly'); + } + $raw_settings = $this->dbinterface->getDb_model_info($get, $format_list, $filter); if ($validate) { @@ -1756,8 +1791,25 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { $raw_settings[$i]['validate'] = 'no;'; if ((strtolower($raw_settings[$i]['vendor'] == 'cisco')) || !empty($dir_list)) { foreach ($dir_list as $filek){ - if (strpos(strtolower($filek), strtolower($raw_settings[$i]['loadimage'])) !== false) { - $raw_settings[$i]['validate'] = 'yes;'; + switch ($search_mode) { + case 'pro': + case 'on': + case 'internal': + if (strpos(strtolower($filek), strtolower($raw_settings[$i]['loadimage'])) !== false) { + $raw_settings[$i]['validate'] = 'yes;'; + } + break; + case 'internal2': + + break; + case 'off': + default: // Place in root TFTP dir +// $raw_settings[$i]['buttons'] = $dir.'/'.$raw_settings[$i]['loadimage']; + if (strpos(strtolower($filek), strtolower($dir.'/'.$raw_settings[$i]['loadimage'])) !== false) { +// if (strpos(strtolower($filek), strtolower($raw_settings[$i]['loadimage'])) !== false) { + $raw_settings[$i]['validate'] = 'yes;'; + } + break; } } } @@ -1931,7 +1983,7 @@ private function find_all_files($dir, $file_mask=null, $mode='full'){ } } else {$result[]=null;} continue; - } + } $sub_fiend = $this->find_all_files("$dir/$value",$file_mask,$mode); if (!empty($sub_fiend)) { foreach($sub_fiend as $sub_value) { diff --git a/Sccp_manager.inc/extconfigs.class.php b/Sccp_manager.inc/extconfigs.class.php index b24da30..f632e46 100644 --- a/Sccp_manager.inc/extconfigs.class.php +++ b/Sccp_manager.inc/extconfigs.class.php @@ -220,7 +220,9 @@ class extconfigs { $adv_config = Array('tftproot' => '', 'firmware' => 'firmware', 'settings' => 'settings', 'locales' => 'locales', 'languages' => 'languages', 'templates' => 'templates'); $adv_tree['pro'] = Array('templates' => 'tftproot', 'settings' => 'tftproot', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'locales'); - $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => '', 'firmware' => '', 'languages' => ''); + +// $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => ''); + $adv_tree['def'] = Array('templates' => 'tftproot', 'settings' => '', 'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'tftproot'); //* **************------ **** $base_tree = Array('tftp_templates' => 'templates', 'tftp_path_store' => 'settings', 'tftp_lang_path' => 'languages', 'tftp_firmware_path'=>'firmware'); @@ -230,7 +232,7 @@ class extconfigs { $base_config = Array( 'asterisk' => $confDir, 'sccp_conf' => $confDir . '/sccp.conf', 'tftp_path' => ''); - +// Test Base dir (/tftproot) if (!empty($db_vars["tftp_path"])) { if (file_exists($db_vars["tftp_path"]["data"])) { $base_config["tftp_path"] = $db_vars["tftp_path"]["data"]; @@ -253,6 +255,7 @@ class extconfigs { } return array('error' => 'No write permision on tftp DIR' ); } +// END Test Base dir (/tftproot) if (!empty($db_vars['tftp_rewrite_path'])) { $adv_ini = $db_vars['tftp_rewrite_path']["data"]; @@ -275,7 +278,7 @@ class extconfigs { } } if ($db_vars["tftp_rewrite"]["data"] == 'on') { - $adv_tree_mode = 'pro'; + $adv_tree_mode = 'def'; } foreach ($adv_tree[$adv_tree_mode] as $key => $value) { if (!empty($adv_config[$key])) { diff --git a/Sccp_manager.inc/srvinterface.class.php b/Sccp_manager.inc/srvinterface.class.php index cb5dcd0..6663710 100644 --- a/Sccp_manager.inc/srvinterface.class.php +++ b/Sccp_manager.inc/srvinterface.class.php @@ -180,11 +180,26 @@ class srvinterface { if (empty($res)) { return 0; } + switch ($res["vCode"]) { + case 433: + return 433; + + case 432: + case 431: + return 431; + default: + return 430; + } +/* if ($res["vCode"] >= 433) { + + } if ($res["vCode"] >= 431) { return 431; } else { return 430; } + * + */ // return $res["vCode"]; } @@ -285,6 +300,9 @@ class srvinterface { if ($metadata["RevisionNum"] >= "10403") { // new method, RevisionNum is incremental $result["vCode"] = 432; } + if ($metadata["RevisionNum"] >= "10491") { // new method, RevisionNum is incremental + $result["vCode"] = 433; + } } if (array_key_exists("ConfigureEnabled", $metadata)) { $result["futures"] = implode(';', $metadata["ConfigureEnabled"]); diff --git a/Sccp_manager.inc/xmlinterface.class.php b/Sccp_manager.inc/xmlinterface.class.php index 966e888..7a7e518 100644 --- a/Sccp_manager.inc/xmlinterface.class.php +++ b/Sccp_manager.inc/xmlinterface.class.php @@ -274,7 +274,12 @@ class xmlinterface { $xml_work->$key = time(); break; case 'loadInformation': - $xml_work->$key = (isset($dev_config["loadimage"])) ? $dev_config["loadimage"] : ''; +// Set Path Image ???? + if (isset($dev_config["tftp_firmware"])) { + $xml_work->$key = (isset($dev_config["loadimage"])) ? $dev_config["tftp_firmware"].$dev_config["loadimage"] : ''; + } else { + $xml_work->$key = (isset($dev_config["loadimage"])) ? $dev_config["loadimage"] : ''; + } // $xml_work->$key = $dev_config["loadimage"]; if (!empty($dev_config['addon'])) { $xnode = $xml_work->addChild('addOnModules'); diff --git a/conf/SEP0000000000.cnf.xml_791x_template b/conf/SEP0000000000.cnf.xml_791x_template index 22f5ee4..f4ed507 100644 --- a/conf/SEP0000000000.cnf.xml_791x_template +++ b/conf/SEP0000000000.cnf.xml_791x_template @@ -36,6 +36,7 @@ 120 + {Jan 01 2003 00:00:00} SCCP11.8-5-2S false diff --git a/conf/SEP0000000000.cnf.xml_7940_template b/conf/SEP0000000000.cnf.xml_7940_template index 666bcd9..604d5e0 100644 --- a/conf/SEP0000000000.cnf.xml_7940_template +++ b/conf/SEP0000000000.cnf.xml_7940_template @@ -28,6 +28,7 @@ + {Jan 01 2003 00:00:00} P00308010100 false diff --git a/conf/SEP0000000000.cnf.xml_796x_template b/conf/SEP0000000000.cnf.xml_796x_template index 02032aa..e47b1ba 100644 --- a/conf/SEP0000000000.cnf.xml_796x_template +++ b/conf/SEP0000000000.cnf.xml_796x_template @@ -39,6 +39,7 @@ 120 + {Jan 01 2003 00:00:00} P00308010100 false diff --git a/conf/Sccp.class.php.v433 b/conf/Sccp.class.php.v433 new file mode 100644 index 0000000..ae7b591 --- /dev/null +++ b/conf/Sccp.class.php.v433 @@ -0,0 +1,446 @@ + key Settings + private $data_fld = array("pin"=>'pin', "label" => 'label', "accountcode" => 'account', + "context" =>'lcontext',"incominglimit"=>'incominglimit', +// "callgroup"=>'callgroup',"pickupgroup"=>'pickupgroup', + 'directed_pickup_context' => 'directed_pickup_context', + 'directed_pickup' => 'directed_pickup', + 'pickup_modeanswer' => 'pickup_modeanswer', + 'namedcallgroup'=>'namedcallgroup', 'namedpickupgroup' => 'namedpickupgroup', + "transfer" => 'transfer', "echocancel" => 'echocancel', + "language" => 'language', "description" => 'callerid', + "cid_num" => 'cid_num', "cid_name" => 'label', "mailbox" => 'mailbox', + "musicclass" => 'musicclass', + "dnd" => 'dnd', "silencesuppression" => 'silencesuppression', + "secondary_dialtone_digits" => 'secondary_dialtone_digits', "secondary_dialtone_tone" => 'secondary_dialtone_tone' + ); + + public function __construct($freepbx) { + parent::__construct($freepbx); +// $this->version = $freepbx->Config->get('ASTVERSION'); + } + + public function getInfo() { + return array( + "rawName" => "sccp", + "hardware" => "sccp_custom", + "prettyName" => _("Sccp Custom Driver"), + "shortName" => "SCCP", + "description" => _("Sccp Device"), + "Version" => "11.3.v433", + "about" => "Sccp mysql class Base ver: 11.3, Sccp ver: 433" + ); + } +/* + public function addDevice1($id, $settings) { + $sql = 'INSERT INTO sccp (id, keyword, data, flags) values (?,?,?,?)'; + $sth = $this->database->prepare($sql); + $settings = is_array($settings)?$settings:array(); + foreach($settings as $key => $setting) { + $sth->execute(array($id,$key,$setting['value'],$setting['flag'])); + } + return true; + } +*/ + public function addDevice($id, $settings) { + $add_fld = array ("name"=>'label',"outboundcid"=>'cid_num',"langcode"=>'language',"extdisplay"=>'description','devinfo_mailbox'=>'mailbox'); +// print_r($_REQUEST); +// echo '

'; +// die(print_r($settings)); + $settings['cid_num']['value']=''; + $settings['mailbox']['value']= ''; + if (isset($_REQUEST)){ + foreach($add_fld as $key => $val) { + if (!empty($_REQUEST[$key])){ + $settings[$val]['value'] = $_REQUEST[$key]; + } + } + } + if (empty($settings['cid_num']['value'])) { + $settings['cid_num']['value']= $id; + } + + if (!empty($_REQUEST['vm']) && ($_REQUEST['vm'] =='enabled')){ // mailbox + if (empty($settings['mailbox']['value'])) { + $settings['mailbox']['value']= $id; + } + } + +// die(print_r($settings)); + + $sql = 'REPLACE INTO sccpline (name'; + $sqlv = 'values ("'.$id.'"'; + foreach($this->data_fld as $key => $val) { + switch ($key) { + case 'incominglimit': + $sql .= ', '.$key; + if (!empty($settings[$val]['value'])){ + $sqlv .= ", '".$settings[$val]['value']."' "; + } else { + $sqlv .= ", DEFAULT(`".$key."`)"; + } + break; + case 'secondary_dialtone_digits': + case 'secondary_dialtone_tone': + case 'dnd': + $sql .= ', '.$key; + if (!$this->is_my_blank($settings[$val]['value'])){ + $sqlv .= ", '".$settings[$val]['value']."' "; + } else { + $sqlv .= ", NULL "; +// $sqlv .= ", DEFAULT(`".$key."`)"; + } + break; + default: + if (!empty($settings[$val]) ) { + if (!empty($settings[$val]['value'])){ + $sql .= ', '.$key; + $sqlv .= ", '".$settings[$val]['value']."' "; + } + } + break; + } + } + $sql .= ") ".$sqlv.");"; +// die(print_r($sql)); + $sth = $this->database->prepare($sql); + $sth->execute(); + return true; + } + + public function delDevice($id) { +// $sql = "DELETE FROM sccpline WHERE id = ?"; + $sql = "DELETE FROM sccpline WHERE name = ?"; + $sth = $this->database->prepare($sql); + $sth->execute(array($id)); + return true; + } + + + public function getDevice($id) { + $sccp_line = array(); + $sql = "SELECT name as id, name as name "; + foreach($this->data_fld as $key => $val) { + $sql .= ',`'. $key .'` as '.$val; + } +// $sql .= " FROM sccpline WHERE id = ?"; + $sql .= " FROM sccpline WHERE name = ?"; + $sth = $this->database->prepare($sql); + $result = array(); + $tech = array(); + try { + $sth->execute(array($id)); + $result = $sth->fetch(\PDO::FETCH_ASSOC); + $tech = $result; + $tech['dial']='SCCP/'.$id; + } catch(\Exception $e) {} + +// print_r($tech); +// echo '

'; +// print_r($sql); +// die(print_r($id)); +// echo '

'; + + return $tech; + } + + public function getNamedGroup() { + $sql = "select namedcallgroup from sccpline group by namedcallgroup"; + $sth = $this->database->prepare($sql); + $result = array(); + $tech = array(); +// $tech['namedcallgroup'] = ''; +// $tech['namedpickupgroup'] = ''; + try { + $sth->execute(); + $result = $sth->fetchAll(); + foreach($result as $val) { + $tech['namedcallgroup'][] = $val[0]; + } + } catch(\Exception $e) {} + $sql = "select namedpickupgroup from sccpline group by namedpickupgroup"; + $sth = $this->database->prepare($sql); + try { + $sth->execute(); + $result = $sth->fetchAll(); + foreach($result as $val) { + $tech['namedpickupgroup'][] = $val[0]; + } + } catch(\Exception $e) {} + + return $tech; + } + + public function getDefaultDeviceSettings($id, $displayname, &$flag) { + $dial = 'SCCP'; + $settings = array( + "mailbox" => array( + "value" => "", + "flag" => $flag++ + ), + "incominglimit" => array( + "value" => "2", + "flag" => $flag++ + ), + "directed_pickup_context" => array( + "value" => "from-internal", + "flag" => $flag++ + ), + "lcontext" => array( + "value" => "from-internal", + "flag" => $flag++ + ), +// "callgroup" => array( +// "value" => "from-internal", +// "flag" => $flag++ +// ), + "namedcallgroup" => array( + "value" => "", + "flag" => $flag++ + ), +// "pickupgroup" => array( +// "value" => "", +// "flag" => $flag++ +// ), + "namedpickupgroup" => array( + "value" => "", + "flag" => $flag++ + ), + "secondary_dialtone_digits" => array( + "value" => "9", + "flag" => $flag++ + ), + "secondary_dialtone_tone" => array( + "value" => "0x22", + "flag" => $flag++ + ), + "transfer" => array( + "value" => "on", + "flag" => $flag++ + ), + "echocancel" => array( + "value" => "on", + "flag" => $flag++ + ), + "dnd" => array( + "value" => "", + "flag" => $flag++ + ), + "silencesuppression" => array( + "value" => "off", + "flag" => $flag++ + ), + "musicclass" => array( + "value" => "default", + "flag" => $flag++ + ), + "pin" => array( + "value" => "", + "flag" => $flag++ + ), + "musicclass" => array( + "value" => "default", + "flag" => $flag++ + ), + ); + return array( + "dial" => $dial, + "settings" => $settings + ); + } + + public function getDeviceDisplay($display, $deviceInfo, $currentcomponent, $primarySection) { + $section = _("SCCP Extension Details"); +// $category = "general"; +// Assigned DID/CID + $named_group = $this->getNamedGroup(); + $tmparr = array(); + $tt = _("Name or id of lincked maibox"); + $tmparr['mailbox'] = array('prompttext' => _('Mailbox'), 'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + $tt = _("The SCCP channel number for this port. If you plaining to use this line as 'Shared' or use on several devices - leave this field blank or set limit to 10 calls."); +// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '2', 'tt' => $tt, 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidChannel); +// $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section, 'category' => 'general'); + + $tmparr['incominglimit'] = array('prompttext' => _('Incoming Call Limit'), 'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + + $tt = _("Asterisk context this device will send calls to. Only change this is you know what you are doing."); + $tmparr['lcontext'] = array('prompttext' => _('Line context'), 'value' => 'from-internal', 'tt' => $tt, 'level' => 1, 'section' => $section); + + $tt = _("Asterisk context this device will can pickup calls. Only change this is you know what you are doing."); + $tmparr['directed_pickup_context'] = array('prompttext' => _('Directed PickUp Сontext '), 'value' => 'from-internal', 'tt' => $tt, 'level' => 1, 'section' => $section); + +// $tt = _("Phone call group callgroup=1,3-4"); +// $tmparr['callgroup'] = array('prompttext' => _('Call group id'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + + $tt = _("Sets the named caller groups this line is a member of (ast111) : "); + if (!empty($named_group['namedcallgroup'])) { + foreach ($named_group['namedcallgroup'] as $val) { + $tt .= $val. ', '; + } + $tt .= '... '; + } + $tmparr['namedcallgroup'] = array('prompttext' => _('Named Call Group'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); +// $tmparr['namedcallgroup'] = array('prompttext' => _('Named Call Group'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section, 'category' => 'general'); +// $tt = _("Phone pickup group pickupgroup=1,3-4"); +// $tmparr['pickupgroup'] = array('prompttext' => _('Pickup group id'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + $tt = _("Name picapuroup : "); + if (!empty($named_group['namedpickupgroup'])) { + foreach ($named_group['namedpickupgroup'] as $val) { + $tt .= $val. ', '; + } + $tt .= '... '; + } + $tmparr['namedpickupgroup'] = array('prompttext' => _('Named Pickup Group'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); +// $tmparr['namedpickupgroup'] = array('prompttext' => _('Named Pickup Group'),'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section, 'category' => 'general'); + $tt = _("Digits to indicate an external line to user (secondary dialtone) Sample 9 or 8 (max 9 digits)"); + $tmparr['secondary_dialtone_digits'] = array('prompttext' => _('Secondary dialtone digits'), 'value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + + unset($select); + $select[] = array( 'value' => '0x21', 'text' => 'Inside Dial Tone'); + $select[] = array( 'value' => '0x22', 'text' => 'Outside Dial Tone'); + $select[] = array( 'value' => '0x23', 'text' => 'Line Busy Tone'); + $select[] = array( 'value' => '0x24', 'text' => 'Alerting Tone'); + $select[] = array( 'value' => '0x25', 'text' => 'Reorder Tone'); + $select[] = array( 'value' => '0x26', 'text' => 'Recorder Warning Tone'); + $select[] = array( 'value' => '0x27', 'text' => 'Recorder Detected Tone'); + $select[] = array( 'value' => '0x28', 'text' => 'Reverting Tone'); + $select[] = array( 'value' => '0x29', 'text' => 'Receiver OffHook Tone'); + $select[] = array( 'value' => '0x2A', 'text' => 'Partial Dial Tone'); + $select[] = array( 'value' => '0x2B', 'text' => 'No Such Number Tone'); + $select[] = array( 'value' => '0x2C', 'text' => 'Busy Verification Tone'); + $select[] = array( 'value' => '0x2D', 'text' => 'Call Waiting Tone'); + $select[] = array( 'value' => '0x2E', 'text' => 'Confirmation Tone'); + $select[] = array( 'value' => '0x2F', 'text' => 'Camp On Indication Tone'); + $select[] = array( 'value' => '0x30', 'text' => 'Recall Dial Tone'); + $select[] = array( 'value' => '0x31', 'text' => 'Zip Zip'); + $select[] = array( 'value' => '0x32', 'text' => 'Zip'); + $select[] = array( 'value' => '0x33', 'text' => 'Beep Bonk'); + $select[] = array( 'value' => '0x34', 'text' => 'Music Tone'); + $select[] = array( 'value' => '0x35', 'text' => 'Hold Tone'); + $select[] = array( 'value' => '0x36', 'text' => 'Test Tone'); + $select[] = array( 'value' => '0x37', 'text' => 'DT Monitor Warning Tone'); + $select[] = array( 'value' => '0x40', 'text' => 'Add Call Waiting'); + $select[] = array( 'value' => '0x41', 'text' => 'Priority Call Wait'); + $select[] = array( 'value' => '0x42', 'text' => 'Recall Dial'); + $select[] = array( 'value' => '0x43', 'text' => 'Barg In'); + $select[] = array( 'value' => '0x44', 'text' => 'Distinct Alert'); + $select[] = array( 'value' => '0x45', 'text' => 'Priority Alert'); + $select[] = array( 'value' => '0x46', 'text' => 'Reminder Ring'); + $select[] = array( 'value' => '0x47', 'text' => 'Precedence RingBank'); + $select[] = array( 'value' => '0x48', 'text' => 'Pre-EmptionTone'); + $select[] = array( 'value' => '0x67', 'text' => '2105 HZ'); + $select[] = array( 'value' => '0x68', 'text' => '2600 HZ'); + $select[] = array( 'value' => '0x69', 'text' => '440 HZ'); + $select[] = array( 'value' => '0x6A', 'text' => '300 HZ'); + $select[] = array( 'value' => '0x77', 'text' => 'MLPP Pala'); + $select[] = array( 'value' => '0x78', 'text' => 'MLPP Ica'); + $select[] = array( 'value' => '0x79', 'text' => 'MLPP Vca'); + $select[] = array( 'value' => '0x7A', 'text' => 'MLPP Bpa'); + $select[] = array( 'value' => '0x7B', 'text' => 'MLPP Bnea'); + $select[] = array( 'value' => '0x7C', 'text' => 'MLPP Upa'); +/* !TODO!: I would remove the values below this line, except for 'No Tone' */ +// $select[] = array( 'value' => '0x7F', 'text' => 'No Tone'); + $select[] = array( 'value' => '0x80', 'text' => 'Meetme Greeting Tone'); + $select[] = array( 'value' => '0x81', 'text' => 'Meetme Number Invalid Tone'); + $select[] = array( 'value' => '0x82', 'text' => 'Meetme Number Failed Tone'); + $select[] = array( 'value' => '0x83', 'text' => 'Meetme Enter Pin Tone'); + $select[] = array( 'value' => '0x84', 'text' => 'Meetme Invalid Pin Tone'); + $select[] = array( 'value' => '0x85', 'text' => 'Meetme Failed Pin Tone'); + $select[] = array( 'value' => '0x86', 'text' => 'Meetme CFB Failed Tone'); + $select[] = array( 'value' => '0x87', 'text' => 'Meetme Enter Access Code Tone'); + $select[] = array( 'value' => '0x88', 'text' => 'Meetme Access Code Invalid Tone'); + $select[] = array( 'value' => '0x89', 'text' => 'Meetme Access Code Failed Tone'); + $select[] = array('value' => 'yes', 'text' => 'Yes'); + $select[] = array('value' => 'no', 'text' => 'No'); + + $tt = _("Outside dialtone frequency (defaul 0x22)"); + $tmparr['secondary_dialtone_tone'] = array('prompttext' => _('Secondary dialtone'), 'value' => '0x22', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'select', 'section' => $section); + + + + unset($select); + $select[] = array('value' => '', 'text' => 'Inherit'); + $select[] = array('value' => 'on', 'text' => 'Yes'); + $select[] = array('value' => 'off', 'text' => 'No'); + $tt = _("Enable/Disable the `directed` pickup softkey"); + $tmparr['directed_pickup'] = array('prompttext' => _('Directed pickup'), 'value' => '', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => '', 'text' => 'Inherit'); + $select[] = array('value' => 'on', 'text' => 'Yes'); + $select[] = array('value' => 'off', 'text' => 'No'); + $tt = _("Should the picked/gpicked-up call be answered automatically"); + $tmparr['pickup_modeanswer'] = array('prompttext' => _('Pickup Modeanswer'), 'value' => '', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => '', 'text' => 'Inherit'); + $select[] = array('value' => 'on', 'text' => 'Yes'); + $select[] = array('value' => 'off', 'text' => 'No'); + $tt = _("Allow call transfer."); +// $tmparr['transfer'] = array('prompttext' => _('Call Transfer'), 'value' => 'yes', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section, 'category' => 'general'); + $tmparr['transfer'] = array('prompttext' => _('Call Transfer'), 'value' => '', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => 'on', 'text' => 'Yes'); + $select[] = array('value' => 'off', 'text' => 'No'); + $tt = _("Echo cancel"); + $tmparr['echocancel'] = array('prompttext' => _('Echo cancel'), 'value' => 'on', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => 'off', 'text' => 'Off'); + $select[] = array('value' => 'reject', 'text' => 'Reject'); + $select[] = array('value' => 'silent', 'text' => 'Silent'); + $select[] = array('value' => 'user', 'text' => 'Cycle'); + $tt = _("DND: Means how will dnd react when it is set on the device level dnd can have three states: off / busy(reject) / silent / Cycle").'
'. + _("Cycle - dnd that cycles through all three states off -> reject -> silent -> off (this is the normal behaviour)").'
'. + _("Reject - Usesr can only switch off and on (in reject/busy mode)").'
'. + _("Silent - Usesr can only switch off and on (in silent mode)"); + $tmparr['dnd'] = array('prompttext' => _('DND'), 'value' => 'reject', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => 'on', 'text' => 'Yes'); + $select[] = array('value' => 'off', 'text' => 'No'); + $tt = _("Silence Suppression. Asterisk Not suported"); + $tmparr['silencesuppression'] = array('prompttext' => _('Silence Suppression'), 'value' => 'off', 'tt' => $tt, 'select' => $select, 'level' => 1, 'type' => 'radio', 'section' => $section); + + unset($select); + $select[] = array('value' => 'default', 'text' => _('default')); + if (function_exists('music_list')){ + $moh_list = music_list(); + } else { + $moh_list = array('default'); + } + foreach ($moh_list as $value) { + $select[] = array('value' => $value, 'text' => _($value)); + } + + $tt = _("Music on hold"); + $tmparr['musicclass'] = array('prompttext' => _('Music on hold'), 'value' => '', 'tt' => $tt, 'select' => $select, 'level' => 1, 'section' => $section); + + $tt = _("Sets the named pickup groups this line is a member of (this phone can pickup calls from remote phones which are in this caller group (ast111)"); + $tmparr['pin'] = array('value' => '', 'tt' => $tt, 'level' => 1, 'section' => $section); + + + $devopts = $tmparr; + return $devopts; + } + public function getDeviceHeaders() { + return array( + 'secret' => array('identifier' => _('Secret'), 'description' => sprintf(_('Secret [Enter "%s" to regenerate]'),"REGEN")), + ); + } + public function is_my_blank($value) { + return empty($value) && !is_numeric($value); +} + +} diff --git a/conf/sccpgeneral.xml.v431 b/conf/sccpgeneral.xml.v431 index b9104b9..229924b 100644 --- a/conf/sccpgeneral.xml.v431 +++ b/conf/sccpgeneral.xml.v431 @@ -138,7 +138,7 @@ and open the template in the editor. Base Version before all crash :-) Debug: Enable debugging level in SCCP module. - + displayconfig sccpgeneral @@ -298,6 +298,16 @@ and open the template in the editor. Base Version before all crash :-) Call Waiting Tone: The tone played when a call is waiting. If you set this one to '0', you will not get a tone in your current call if a new call comes in, so you might want to disable call waiting for this line instead. + + + + directed_pickup_context + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + echocancel @@ -331,6 +341,14 @@ and open the template in the editor. Base Version before all crash :-) Directed Pickup Mode (Answer): If a call is sent with the "directed pickup" flag, the phone will answer when set to "Yes". + transfer_on_hangup + + off + + + Complete transfer on hangup, without pressing transfer a second time. Will complete transfer, when the transferer puts the receiver on hook, after the destination has been reached. To cancel the transfer, either press resume on the transfered channel, press the 'endcall' softkey, or have the receiving party hangup first. + + callanswerorder oldestfirst @@ -339,6 +357,16 @@ and open the template in the editor. Base Version before all crash :-) Call Answer Order: Which call should be answered first? The most common choice is "oldestfirst", but other orders are supported. + callhistory_answered_elsewhere + + Missed Calls + + + + + + + mwilamp On @@ -349,7 +377,7 @@ and open the template in the editor. Base Version before all crash :-) Set the MWI lamp style when MWI active to on, off, wink, flash or blink - + mwioncall off @@ -360,7 +388,6 @@ and open the template in the editor. Base Version before all crash :-) - directrtp @@ -839,6 +866,14 @@ and open the template in the editor. Base Version before all crash :-) + + + Help_tftp_rewrite + This section is responsible for the modes of operation of external services: tftp http. + * off - Flat model cisco. All data is in the directory /tftproot + * Custom - The directory structure is strictly defined in the manager (for internal use). Requires tftpd rewrite support. + * Provision - Directory structure data is read from an external file. This project supports phones that can work on tftp and http. Support rewrite. + @@ -868,6 +903,7 @@ and open the template in the editor. Base Version before all crash :-) pro pro + Internal Support the use of regular-expression-based filename remapping @@ -1141,7 +1177,6 @@ and open the template in the editor. Base Version before all crash :-) You can specifying 'useRedialMenu = yes' in the sccp.conf device section and the redial softkey will cause the "placed calls" list instead of immediately calling the last dialed number. - force_dtmfmode diff --git a/conf/sccpgeneral.xml.v433 b/conf/sccpgeneral.xml.v433 new file mode 100644 index 0000000..82c869c --- /dev/null +++ b/conf/sccpgeneral.xml.v433 @@ -0,0 +1,1502 @@ + + + + + + XML_info + + NONE + + + + + + + + + + + + dev_sshUserId + cisco + + Help. + + + + + dev_sshPassword + cisco + + Help. + + + + + dev_deviceProtocol + SCCP + + Help. + + + + + sccp_xml_about + XML Base ver: 11.2, Sccp ver: 431 + + Help. + + + + + + + + + + + servername + Vt + + Servername: This is the type of server - usually, it will be Asterisk. + + + + + bindaddr + 0.0.0.0 + sccp-custom + + + port + 2000 + sccp-custom + + Bind Address: The address to bind to for SCCP. In general, it should be set to '0.0.0.0'. If you find problems with one-way audio, you can set this to a specific address in the server. Note that '127.0.0.1' is always wrong here. Also note that placing in your external IP address will cause the chan_sccp module to not load. A manual edit of the /etc/asterisk/sccp.conf file will be needed to fix and reload the module. + : + + + + + externip + + sccp-custom + + + External IP Address of the firewall, required in case the PBX is running on a seperate host behind it. IP Address that we're going to notify in RTP media stream as the pbx source address. + / + + + + + keepalive + 60 + sccp-custom + number + + + Time between Keep Alive checks. Valid range is 60-300 seconds. After much trial-and-error, the minimum (60) seems to work just fine. + + + nat + + auto + + + + Global NAT support (default Auto) + + + debug + + NONE + + + + + + Debug: Enable debugging level in SCCP module. + + + displayconfig + + sccpgeneral + + + Help! + + + + + + + permit + Internal + 0.0.0.0/0.0.0.0 + + + + + + + + + Add Allow Range + Allow network settings. Blank fields will be ignored used Network 0.0.0.0/0.0.0.0 to resolve any existing connections. You can use the 'internal' connections only from the networks connected to the server. + + + + + + localnet + Internal + 0.0.0.0/0.0.0.0 + + + + + + + + + + + Add Internal Range + Local network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + deny + 0.0.0.0/0.0.0.0 + + + + + + + + + + + Add Deny network + All RFC 1918 addresses are local networks. Should always be at least '0.0.0.0/0.0.0.0'. + + + + + + + + + language + English + + SCCP Language: This is the language for your hints and other features of the phone. If you don't have any languages installed or are using a single language, you can leave this blank. + + + + netlang + English_United_States + + The Network locales allows the phone to play tones (ringing, busy etc.) native to the phone's country. + + + + devlang + English_United_States + + The user locale allows the phone to display text (menu items, soft keys etc.) native to the phone's language. + + + + + + + + + firstdigittimeout + 16 + sccp-custom + number + + + First Digit Timeout: The amount of time after your first digit to start dialing automatically. This can be over-ridden with settings in your dialplan.xml or by using the 'immediate dial' button. + + + + + digittimeout + 8 + sccp-custom + number + + + Digit Timeout: The amount of time to wait after the second (or subsequent) dialed digit. Override rules are the same as for firstdigittimeout. + + + + + autoanswer_ring_time + 0 + sccp-custom + number + + + Autoanswer Ring Time: The amount of time the phones will ring when being called as Intercom or Paging mode. + + + + + autoanswer_tone + 0x32 + sccp-custom + + Autoanswer Tone: The tone the phone plays back when it picks up the phone in autoanswer mode. Default is '0x32'. Silence is '0x00'. There are lots of tones, all expressed as '0XNN' where 'NN' is a hexadecimal number. + + + + + remotehangup_tone + 0x32 + sccp-custom + + Remote Hangup Tone: The tone played by the phone when it received a remote hang-up signal. Use '0' to disable the tone. + + + + + transfer_tone + 0x32 + sccp-custom + + Transfer Tone: The tone played when a call is transferred. Use '0' to disable the tone. + + + + + callwaiting_tone + 0x2D + sccp-custom + + Call Waiting Tone: The tone played when a call is waiting. If you set this one to '0', you will not get a tone in your current call if a new call comes in, so you might want to disable call waiting for this line instead. + + + echocancel + + off + + + Echo Cancel: Echo Cancellation (On or Off). + + + silencesuppression + + off + + + Silence Suppression: Slience Suppression on the phone. + + + private + + on + + + Private Calling Enabled: Place a call with privacy Options (no Caller ID) turned on. Needs to be supported in Asterisk to work through SIP and DAHDI trunks. + + + callanswerorder + + oldestfirst + + + Call Answer Order: Which call should be answered first? The most common choice is "oldestfirst", but other orders are supported. + + + callhistory_answered_elsewhere + + Missed Calls + + + + + + + + mwilamp + + On + + + + + + Set the MWI lamp style when MWI active to on, off, wink, flash or blink + + + mwioncall + + off + + + Set the MWI on call. + + + + + + + directrtp + + off + + + This option set global allow devices to do direct RTP sessions (default Off) + + + earlyrtp + + none + Immediate + + + + + + The audio strem will be open in the progress and connected state. Valid options: NONE, progress, offhook, dial, ringout. Default may be Progress. + + + simulate_enbloc + + on + + + Use simulated enbloc dialing to speedup connection when dialing while onhook (older phones) + + + + + + cfwdall + + off + + + Activate the callforward softkeys. Default is On + + + cfwdbusy + + off + + + Activate the callforward busy softkeys. Default is On + + + dndFeature + + on + + + Do Not Disturb. Default is Off + + + + + + + ntp_config_enabled + + off + + + Enabling NTP settings in device configuration. + + + + + ntp_server + pool.ntp.org + pool.ntp.org + + NTP Server name or IP + + + ntp_server_mode + + unicast + + + + + Configure NTP Server protocol time syncronization + + + + + + + + dateformat + + Date Format: The date format for the on-screen display. Can be one of the following: (D-M-YA, M.D.Y, Y/M/D) where 'D' is Day, 'M' is Month, 'Y' is Year, 'A' is 24-hour, 'a' is 12-hour, and the separators can be '.','-','/' + + + + ntp_timezone + sccp-custom + + Date Format: Time zone + + + + + + + + Help_srst + You can also configure a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. This proves especially useful in a remote site configuration where the phones and Asterisk are connected over a WAN network. SRST provides users with fallback support for the IP phones that cannot access the primary, secondary, or tertiary Asterisk Node in the CallManager List because of an Asterisk Node failure or loss of connectivity across the WAN. For the remote sites attached to multiple-service routers across the WAN, SRST ensures that your remote users receive continuous (although minimal) service by providing call handling support directly from the SRST router. + When IP phones lose contact with primary, secondary, and tertiary Asterisk Nodes (CM's), they must establish a connection to a local SRST router to sustain the call-processing capability necessary to place and receive calls. The IP phone retains the IP address of the local SRST router as a default router in the Network Configuration area of the Settings menu. The Settings menu supports a maximum of five default router entries; however, the cnf.xml accommodates a maximum of three entries. When a secondary Asterisk Node is not available on the network, the local SRST Router's IP address is retained as the standby connection for Asterisk Node during normal operation. + + + + srst_Option + + disable + + + + You enabled/configured a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. + + + srst_userModifiable + + false + + + The user can change the personal SRST configuration on the device + + + srst_isSecure + + false + + + The user can change the personal SRST configuration on the device + + + + + + srst_Name + Enable + + You enabled configure a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. + + + + + srst_ip + 3 + / + + + + + + + + + Add Server + Help. + + + + srst_sip + 3 + / + + + + + + + + + Add Server + Help. + + + + + + + + + dev_servicesURL + + + + + + + + + + + dev_authenticationURL + + + + + The above is simply a dummy authentication page. It literally contains one word: AUTHORIZED (it receives UserId, Password, and devicename in the url - if you truly wish to implement special auth) + + + + + dev_idleURL + + + + + URL of CiscoIPPhoneImage. Requires a non-zero setting in idleTimeout. + + + + + dev_informationURL + + + + + + + + + dev_messagesURL + + + + + + + + + dev_directoryURL + + + + This is the URL for a CiscoIPPhoneMenu which gets appended to the end of the Missed/Received/Placed calls. I don't use it (I find it makes more sense to put my phone book under services) + + + + + dev_proxyServerURL + + + + + + + + + + + dev_idleTimeout + 60 + sccp-custom + number + + + + + + + + + + + + sccp_tos + 0x68 + sccp-custom + + + sccp_cos + 0x4 + sccp-custom + + SCCP Type Of Service / Class Of Service: SCCP Type or Class of Service - this is modifiable, but don't. + + + + + audio_tos + 0xB8 + sccp-custom + + + audio_cos + 0x6 + sccp-custom + + Audio Type Of Service / Class Of Service: Audio Type or Class of Service - this is modifiable, but don't. + + + + + video_tos + 0x88 + sccp-custom + + + video_cos + 0x5 + sccp-custom + + Video Type Of Service / Class Of Service: Video Type or Class of Service - this is modifiable, but don't. + + + + + + Help_id2 + + Setting the hotline Feature on a device, will make it connect to a predefined extension as soon as the Receiver is picked up or the "New Call" Button is pressed. No number has to be given. This works even on devices which have no entry in the config file or realtime database. + The hotline function can be used in : + + + First time configuration + This will make it easier to register new devices and assign numbers + + + At a door + Where you want people to be able to only call one number + + + For unprovisioned phones + To only be able to call the helpdesk to get their phone set up + + + + Be careful with this function. Especially not to the internet. So i would restring the deny/permit to 'internal' by default in that case. + + + Allow = + Specify a list of your networks, for example: 192.168.1.0 + + + deny = + 0.0.0.0/0.0.0.0 + + + permit = + internal + + + hotline_context = + sccp + + + hotline_label = + hotline + + + + + + + hotline_enabled + + off + + + Hotline Enabled: This allows unregistered extensions to connect to the system and dial the number listed below. + + + + + hotline_extension + *111 + sccp-custom + + Hotline Extension: The number that gets called when a hotline is picked up. hint + + + + + hotline_label + Hot Line + sccp-custom + + Hotline Label: The label on the device + + + + + hotline_context + default + sccp-custom + + Hotline Context: This is the context through which the phone will connect. It should probably match your other contest. The default is "from-internal" but "from-internal-xfer" would also make sense by limiting the options for the person using the phone. + + + + + + + + + context + from-internal + sccp-custom + + Context: This is the context in which your phones will operate. It should match the context you are using for the rest of your phones (if you have any). The FreePBX default is 'from-internal' + + + + + regcontext + sccpregistration + sccp-custom + + If regcontext is specified in sccp.conf chan-sccp-b will dynamically create and destroy a NoOp priority 1 extension for a given peer/line which registers with the server. If the context is not specified in extension.conf, then it will be dynamically created when an chan-sccp-b agent registers + + + + + directed_pickup_context + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + + + + + pickupgroup + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + + + + pickup_modeanswer + + off + + + Directed Pickup Mode (Answer): If a call is sent with the "directed pickup" flag, the phone will answer when set to "Yes". + + + transfer_on_hangup + + off + + + Complete transfer on hangup, without pressing transfer a second time. Will complete transfer, when the transferer puts the receiver on hook, after the destination has been reached. To cancel the transfer, either press resume on the transfered channel, press the 'endcall' softkey, or have the receiving party hangup first. + + + + + dial_template + NONE + + sccp-custom + Help. + + + autoselectline_enabled + + off + + + Enables and Disables auto line selection. + + + meetme + + off + + + Enable/Disable conferencing via meetme (on/off), make sure you have one of the meetme apps mentioned below activated in module.conf + + + + + meetmeopts + qxd + sccp-custom + + Other options (app_meetme: A,a,b,c,C,d,D,E,e,F,i,I,l,L,m,M,o,p,P,q,r,s,S,t,T,w,x,X,1) see meetme specific documentation + + + + autocall_select + + off + + + + + + backgroundImageAccess + + off + + + I'm guessing on this one, but on some devices, the background image on the display can be modified at the device. I think this is the thing that allows that to take. + + + + musicclass + NONE + + form-control + Music Class: Available MOH Classes. These are the MOH classes listed in your current server. + + + + + + + + Help_tftp_rewrite + This section is responsible for the modes of operation of external services: tftp http. + * off - Flat model cisco. All data is in the directory /tftproot + * Custom - The directory structure is strictly defined in the manager (for internal use). Requires tftpd rewrite support. + * Provision - Directory structure data is read from an external file. This project supports phones that can work on tftp and http. Support rewrite. + + + + + provision_hide + + tftp_path + /tftpboot + sccp-custom + + Path to tftp home directory + + + + provision_show + + tftp_rewrite_path + /tftpboot + sccp-custom + + Use path from provision index.cnf file. You must first make sure that you have properly configured the "Provision" + + + + tftp_rewrite + + off + pro + pro + + Internal + + + Support the use of regular-expression-based filename remapping + + + + + devicetable + sccpdevice + + + sccp-custom + Device Table: This is the devicetable for your realtime configuration. Don't change this unless you know what you are doing and have made all the appropriate changes in the rest of your Asterisk config files. There are two reasonable settings for this - the sccpdevice table or the sccpdeviceconfig view. If you do not want to use the realtime database anymore, you can set this to blank. NOT RECOMMENDED. + + + + + + linetable + sccpline + sccp-custom + + Line Table: This is the linetable for your realtime configuration. Don't change this unless you know what you are doing and have made all the appropriate changes in the rest of your Asterisk config files. If you do not want to use the realtime database anymore, you can set this to blank. NOT RECOMMENDED. + + + + createlangdir + + no + + + Say 'yes' if you need to create cisco default language directory in tftp path. + + + + + + + + + + mac + 000000000 + sccp-custom + + The MAC address of the phone. You must specify 12 characters in the format XXXX.XXXX.XXXX or XX-XX-XX-XX-XX-XX or XXXXXXXXXXXX + + + + + type + 7911 + + hw_select sccp-custom + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + addon + NONE + + hw_select sccp-custom + Addon: Addons are model specific and only work with certain base phones. This phone model is identified as being a phone that does not accept sidecars. Update devmodel if this is not correct. + + + + + + + + + mac + 000000000 + sccp-custom + + + The MAC address of the phone + + + + type + 7911 + + + hw_select sccp-custom + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + + + type + 79XX + sccp-custom + + + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + + addon + NONE + sccp-custom + + + Addon: Addons are model specific and only work with certain base phones. This phone model is identified as being a phone that does not accept sidecars. Update devmodel if this is not correct. + + + + + + + + + + description + 000000000 + sccp-custom + + The information in the upper right corner of the device screen + + + + softkeyset + default + + System Default Softkey + + + + tzoffset + 00 + + Time Zone offset + + + + netlang + English_United_States + + The Network locales allows the phone to play tones (ringing, busy etc.) native to the phone's country. + + + + devlang + Russian_Russia + + The user locale allows the phone to display text (menu items, soft keys etc.) native to the phone's language. + + + + + backgroundImage + + sccp-custom + + For phones that can display background images - display this one. Default is [empty] + + + + + ringtone + + sccp-custom + + The ringtone that the phone will default to. Can be overridden in the phone. The files RINGLIST.XML provice the basic phone ring tones, while DISTINCTIVERINGLIST.XML defines the list of possible ring tones for your other line types. They, along with the actual 'raw' ringtones, are stored in the /tftpboot/ringtones directory with the rest of the config files. + + + + + + + + + mac + 000000000 + sccp-custom + + + + + + + + + transfer + + off + + + Transfer allowed + + + cfwdall + + NONE + + + + Activate the callforward softkeys. Default is On + + + cfwdbusy + + NONE + + + + Activate the callforward busy softkeys. Default is On + + + dndFeature + + NONE + + + + Do Not Disturb. Default is Off + + + conf_allow + + on + off + + + Allow the use of conference + + + + + + + + + useRedialMenu + + off + + + You can specifying 'useRedialMenu = yes' in the sccp.conf device section and the redial softkey will cause the "placed calls" list instead of immediately calling the last dialed number. + + + force_dtmfmode + + auto + + + + Some phone models with bad firmware do send dtmf in a messed up order and need to be forced to skinny mode. + + + mwioncall + + NONE + + + + Set the MWI on call. + + + + mwilamp + + NONE + + + + + + + Set the MWI lamp style when MWI active to on, off, wink, flash or blink + + + callhistory_answered_elsewhere + + Missed Calls + + + + + + + + + + + conf_hide + + + conf_play_general_announce + + on + + + Playback General Announcements (like: 'You are Entering/Leaving the conference') + + + conf_play_part_announce + + on + + + Playback Personal/Participant Announcements, (like: 'You have been muted / You have been kicked') + + + conf_mute_on_entry + + off + + + Mute new participants from the start + + + conf_show_conflist + + on + + + Automatically show conference list to the moderator + + + + conf_music_on_hold_class + default + + form-control + Play music on hold of this class when no moderator is listening on the conference. If set to an empty string, no music on hold will be played. + + + + + + custom_network_acc + + permit + + + + Help. + + + custom_network_type + + ipv4 + + + Help. + + + + + custom_network_v + + + sccp-custom + + + custom_network_m + + sccp-custom + + + Help. + + + + + + + + + deny + / + sccp_hw_net_inherit + + + + + + + + + Add Deny network + All RFC 1918 addresses are local networks. Should always be at least '0.0.0.0/0.0.0.0'. + + + + + + permit + NONE + Inherit + false + + sccp_hw-ar_permit-grinternal + + sccp_hw_net_inherit + + + + + + + + + Add Allow network + Allow network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + nat + + NONE + + + + + Device NAT support (default Auto) + + + + directrtp + + NONE + Auto + + + + This option allow devices to do direct RTP sessions (default Off) + + + earlyrtp + + NONE + + Immediate + + + + + + The audio stream will be open in the progress and connected state. Valid options: none, progress, offhook, dial, ringout. Default may be Progress. + + + + + + + dialtemplate_name + + form-control + + Help. + + + + + + + + Help_id1 + Specifies a pattern to match dialed digits against. Note: TEMPLATE must be in uppercase. + Rules: + + + match: + Pattern to match, consists of one or more elements + + + 0 1 2 3 4 5 6 7 8 9 + Match digit + + + . + Match one digit, # or * + + + * + Match zero or more digits, # or * + + + \* + Match a literal * + + + , + Play secondary dial-tone specified by tone + + + timeout: + Number of seconds to wait for more digits if this pattern matches + + + line: + Only apply template to the specified line (optional) + + + rewrite: + Rewrite the matched digits before dialing, consists of one or more elements (optional) + + + 0 1 2 3 4 5 6 7 8 9 + Replace with digit + + + %0 + The entire match + + + %1 %2 %3 %4 %5 + Replace with group of digits matched, grouping is done by consecutive literal digit or . elements + + + %% + A literal % + + + . + Each . is replaced by the digit that was matched by the corresponding . in the pattern + + + tone: + Secondary dial-tone to play when a , is matched, up to 3 can be specified (optional) + + + + + + dialtemplate + */10/* + + title + + + + + + + + text1 + + + + + + empty + Bellcore-Alerting + Bellcore-Inside + Bellcore-Outside + Bellcore-Busy + Bellcore-BusyVerify + Bellcore-Reorder + Bellcore-CallWaiting + Bellcore-Hold + Bellcore-Reminder + Bellcore-Confirmation + Bellcore-Stutter + Bellcore-Permanent + Bellcore-None + Cisco-Zip + Cisco-ZipZip + Cisco-BeepBonk + Bellcore-dr1 + Bellcore-dr2 + Bellcore-dr3 + Bellcore-dr4 + Bellcore-dr5 + Bellcore-dr6 + CallWaiting-2 + CallWaiting-3 + CallWaiting-4 + + Allow network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + + diff --git a/conf/sccpsimple.xml.v431 b/conf/sccpsimple.xml.v431 index 85d7cc1..090e46d 100644 --- a/conf/sccpsimple.xml.v431 +++ b/conf/sccpsimple.xml.v431 @@ -166,6 +166,16 @@ and open the template in the editor. Base Version before all crash :-) sccp-custom Device Table: This is the devicetable for your realtime configuration. Don't change this unless you know what you are doing and have made all the appropriate changes in the rest of your Asterisk config files. There are two reasonable settings for this - the sccpdevice table or the sccpdeviceconfig view. If you do not want to use the realtime database anymore, you can set this to blank. NOT RECOMMENDED. + + callhistory_answered_elsewhere + + Missed Calls + + + + + + @@ -246,7 +256,7 @@ and open the template in the editor. Base Version before all crash :-) Debug: Enable debugging level in SCCP module. - + displayconfig sccpgeneral @@ -370,6 +380,16 @@ and open the template in the editor. Base Version before all crash :-) Autoanswer Ring Time: The amount of time the phones will ring when being called as Intercom or Paging mode. + + + + directed_pickup_context + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + echocancel @@ -402,6 +422,14 @@ and open the template in the editor. Base Version before all crash :-) Directed Pickup Mode (Answer): If a call is sent with the "directed pickup" flag, the phone will answer when set to "Yes". + + transfer_on_hangup + + off + + + Complete transfer on hangup, without pressing transfer a second time. Will complete transfer, when the transferer puts the receiver on hook, after the destination has been reached. To cancel the transfer, either press resume on the transfered channel, press the 'endcall' softkey, or have the receiving party hangup first. + callanswerorder @@ -896,6 +924,7 @@ and open the template in the editor. Base Version before all crash :-) pro pro + Internal Support the use of regular-expression-based filename remapping diff --git a/conf/sccpsimple.xml.v433 b/conf/sccpsimple.xml.v433 new file mode 100644 index 0000000..67b92e9 --- /dev/null +++ b/conf/sccpsimple.xml.v433 @@ -0,0 +1,1557 @@ + + + + + + XML_info + + NONE + + + + + + + + + + + + dev_sshUserId + cisco + + Help. + + + + + dev_sshPassword + cisco + + Help. + + + + + dev_deviceProtocol + SCCP + + Help. + + + + + sccp_xml_about + XML Base ver: 11.2, Sccp ver: 431 + + Help. + + + + + autoanswer_tone + 0x32 + sccp-custom + + Autoanswer Tone: The tone the phone plays back when it picks up the phone in autoanswer mode. Default is '0x32'. Silence is '0x00'. There are lots of tones, all expressed as '0XNN' where 'NN' is a hexadecimal number. + + + + + remotehangup_tone + 0x32 + sccp-custom + + Remote Hangup Tone: The tone played by the phone when it received a remote hang-up signal. Use '0' to disable the tone. + + + + + transfer_tone + 0x32 + sccp-custom + + Transfer Tone: The tone played when a call is transferred. Use '0' to disable the tone. + + + + + callwaiting_tone + 0x2D + sccp-custom + + Call Waiting Tone: The tone played when a call is waiting. If you set this one to '0', you will not get a tone in your current call if a new call comes in, so you might want to disable call waiting for this line instead. + + + + + + + sccp_tos + 0x68 + sccp-custom + + + sccp_cos + 0x4 + sccp-custom + + SCCP Type Of Service / Class Of Service: SCCP Type or Class of Service - this is modifiable, but don't. + + + + + audio_tos + 0xB8 + sccp-custom + + + audio_cos + 0x6 + sccp-custom + + Audio Type Of Service / Class Of Service: Audio Type or Class of Service - this is modifiable, but don't. + + + + + video_tos + 0x88 + sccp-custom + + + video_cos + 0x5 + sccp-custom + + Video Type Of Service / Class Of Service: Video Type or Class of Service - this is modifiable, but don't. + + + + + + linetable + sccpline + sccp-custom + + Line Table: This is the linetable for your realtime configuration. Don't change this unless you know what you are doing and have made all the appropriate changes in the rest of your Asterisk config files. If you do not want to use the realtime database anymore, you can set this to blank. NOT RECOMMENDED. + + + + devicetable + sccpdevice + + + sccp-custom + Device Table: This is the devicetable for your realtime configuration. Don't change this unless you know what you are doing and have made all the appropriate changes in the rest of your Asterisk config files. There are two reasonable settings for this - the sccpdevice table or the sccpdeviceconfig view. If you do not want to use the realtime database anymore, you can set this to blank. NOT RECOMMENDED. + + + callhistory_answered_elsewhere + + Missed Calls + + + + + + + + + + + + + + + + + + + + + + + + + servername + Vt + + Servername: This is the type of server - usually, it will be Asterisk. + + + + + bindaddr + 0.0.0.0 + sccp-custom + + + port + 2000 + sccp-custom + + Bind Address: The address to bind to for SCCP. In general, it should be set to '0.0.0.0'. If you find problems with one-way audio, you can set this to a specific address in the server. Note that '127.0.0.1' is always wrong here. Also note that placing in your external IP address will cause the chan_sccp module to not load. A manual edit of the /etc/asterisk/sccp.conf file will be needed to fix and reload the module. + : + + + + + externip + + sccp-custom + + + External IP Address of the firewall, required in case the PBX is running on a seperate host behind it. IP Address that we're going to notify in RTP media stream as the pbx source address. + / + + + + + keepalive + 60 + sccp-custom + number + + + Time between Keep Alive checks. Valid range is 60-300 seconds. After much trial-and-error, the minimum (60) seems to work just fine. + + + nat + + auto + + + + Global NAT support (default Auto) + + + debug + + NONE + + + + + + Debug: Enable debugging level in SCCP module. + + + displayconfig + + sccpgeneral + + + Help! + + + + + + + permit + Internal + 0.0.0.0/0.0.0.0 + + + + + + + + + Add Allow Range + Allow network settings. Blank fields will be ignored used Network 0.0.0.0/0.0.0.0 to resolve any existing connections. You can use the 'internal' connections only from the networks connected to the server. + + + + + + localnet + Internal + 0.0.0.0/0.0.0.0 + + + + + + + + + + + Add Internal Range + Local network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + deny + 0.0.0.0/0.0.0.0 + + + + + + + + + + + Add Deny network + All RFC 1918 addresses are local networks. Should always be at least '0.0.0.0/0.0.0.0'. + + + + + + + + + language + English + + SCCP Language: This is the language for your hints and other features of the phone. If you don't have any languages installed or are using a single language, you can leave this blank. + + + + netlang + English_United_States + + The Network locales allows the phone to play tones (ringing, busy etc.) native to the phone's country. + + + + devlang + English_United_States + + The user locale allows the phone to display text (menu items, soft keys etc.) native to the phone's language. + + + + + + + + + firstdigittimeout + 16 + sccp-custom + number + + + First Digit Timeout: The amount of time after your first digit to start dialing automatically. This can be over-ridden with settings in your dialplan.xml or by using the 'immediate dial' button. + + + + + digittimeout + 8 + sccp-custom + number + + + Digit Timeout: The amount of time to wait after the second (or subsequent) dialed digit. Override rules are the same as for firstdigittimeout. + + + + + autoanswer_ring_time + 0 + sccp-custom + number + + + Autoanswer Ring Time: The amount of time the phones will ring when being called as Intercom or Paging mode. + + + echocancel + + off + + + Echo Cancel: Echo Cancellation (On or Off). + + + silencesuppression + + off + + + Silence Suppression: Slience Suppression on the phone. + + + private + + on + + + Private Calling Enabled: Place a call with privacy Options (no Caller ID) turned on. Needs to be supported in Asterisk to work through SIP and DAHDI trunks. + + + callanswerorder + + oldestfirst + + + Call Answer Order: Which call should be answered first? The most common choice is "oldestfirst", but other orders are supported. + + + mwilamp + + On + + + + + + Set the MWI lamp style when MWI active to on, off, wink, flash or blink + + + mwioncall + + off + + + Set the MWI on call. + + + + + + + + context + from-internal + sccp-custom + + Context: This is the context in which your phones will operate. It should match the context you are using for the rest of your phones (if you have any). The FreePBX default is 'from-internal' + + + + + regcontext + sccpregistration + sccp-custom + + If regcontext is specified in sccp.conf chan-sccp-b will dynamically create and destroy a NoOp priority 1 extension for a given peer/line which registers with the server. If the context is not specified in extension.conf, then it will be dynamically created when an chan-sccp-b agent registers + + + + + directed_pickup_context + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + + + + + pickupgroup + + + sccp-custom + + Context where direct pickup search for extensions. if not set current contect will be use. + + + + pickup_modeanswer + + off + + + Directed Pickup Mode (Answer): If a call is sent with the "directed pickup" flag, the phone will answer when set to "Yes". + + + transfer_on_hangup + + off + + + Complete transfer on hangup, without pressing transfer a second time. Will complete transfer, when the transferer puts the receiver on hook, after the destination has been reached. To cancel the transfer, either press resume on the transfered channel, press the 'endcall' softkey, or have the receiving party hangup first. + + + + + dial_template + NONE + + sccp-custom + Help. + + + autoselectline_enabled + + off + + + Enables and Disables auto line selection. + + + meetme + + off + + + Enable/Disable conferencing via meetme (on/off), make sure you have one of the meetme apps mentioned below activated in module.conf + + + + + meetmeopts + qxd + sccp-custom + + Other options (app_meetme: A,a,b,c,C,d,D,E,e,F,i,I,l,L,m,M,o,p,P,q,r,s,S,t,T,w,x,X,1) see meetme specific documentation + + + + autocall_select + + off + + + + + + backgroundImageAccess + + off + + + I'm guessing on this one, but on some devices, the background image on the display can be modified at the device. I think this is the thing that allows that to take. + + + + musicclass + NONE + + form-control + Music Class: Available MOH Classes. These are the MOH classes listed in your current server. + + + + + + + + + + directrtp + + off + + + This option set global allow devices to do direct RTP sessions (default Off) + + + earlyrtp + + none + Immediate + + + + + + The audio strem will be open in the progress and connected state. Valid options: NONE, progress, offhook, dial, ringout. Default may be Progress. + + + simulate_enbloc + + on + + + Use simulated enbloc dialing to speedup connection when dialing while onhook (older phones) + + + + + + cfwdall + + off + + + Activate the callforward softkeys. Default is On + + + cfwdbusy + + off + + + Activate the callforward busy softkeys. Default is On + + + dndFeature + + on + + + Do Not Disturb. Default is Off + + + + + + + ntp_config_enabled + + off + + + Enabling NTP settings in device configuration. + + + + + ntp_server + pool.ntp.org + pool.ntp.org + + NTP Server name or IP + + + ntp_server_mode + + unicast + + + + + Configure NTP Server protocol time syncronization + + + + + + + + dateformat + + Date Format: The date format for the on-screen display. Can be one of the following: (D-M-YA, M.D.Y, Y/M/D) where 'D' is Day, 'M' is Month, 'Y' is Year, 'A' is 24-hour, 'a' is 12-hour, and the separators can be '.','-','/' + + + + ntp_timezone + sccp-custom + + Date Format: Time zone + + + + + + + + Help_srst + You can also configure a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. This proves especially useful in a remote site configuration where the phones and Asterisk are connected over a WAN network. SRST provides users with fallback support for the IP phones that cannot access the primary, secondary, or tertiary Asterisk Node in the CallManager List because of an Asterisk Node failure or loss of connectivity across the WAN. For the remote sites attached to multiple-service routers across the WAN, SRST ensures that your remote users receive continuous (although minimal) service by providing call handling support directly from the SRST router. + When IP phones lose contact with primary, secondary, and tertiary Asterisk Nodes (CM's), they must establish a connection to a local SRST router to sustain the call-processing capability necessary to place and receive calls. The IP phone retains the IP address of the local SRST router as a default router in the Network Configuration area of the Settings menu. The Settings menu supports a maximum of five default router entries; however, the cnf.xml accommodates a maximum of three entries. When a secondary Asterisk Node is not available on the network, the local SRST Router's IP address is retained as the standby connection for Asterisk Node during normal operation. + + + + srst_Option + + disable + + + + You enabled/configured a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. + + + srst_userModifiable + + false + + + The user can change the personal SRST configuration on the device + + + srst_isSecure + + false + + + The user can change the personal SRST configuration on the device + + + + + + srst_Name + Enable + + You enabled configure a Survivable Remote Site Telephony (SRST) reference as the last device in the CallManager(CM) list. + + + + + srst_ip + 3 + / + + + + + + + + + Add Server + Help. + + + + srst_sip + 3 + / + + + + + + + + + Add Server + Help. + + + + + + + + + dev_servicesURL + + + + + + + + + + + dev_authenticationURL + + + + + The above is simply a dummy authentication page. It literally contains one word: AUTHORIZED (it receives UserId, Password, and devicename in the url - if you truly wish to implement special auth) + + + + + dev_idleURL + + + + + URL of CiscoIPPhoneImage. Requires a non-zero setting in idleTimeout. + + + + + dev_informationURL + + + + + + + + + dev_messagesURL + + + + + + + + + dev_directoryURL + + + + This is the URL for a CiscoIPPhoneMenu which gets appended to the end of the Missed/Received/Placed calls. I don't use it (I find it makes more sense to put my phone book under services) + + + + + dev_proxyServerURL + + + + + + + + + + + dev_idleTimeout + 60 + sccp-custom + number + + + + + + + + + + + Help_id2 + + Setting the hotline Feature on a device, will make it connect to a predefined extension as soon as the Receiver is picked up or the "New Call" Button is pressed. No number has to be given. This works even on devices which have no entry in the config file or realtime database. + The hotline function can be used in : + + + First time configuration + This will make it easier to register new devices and assign numbers + + + At a door + Where you want people to be able to only call one number + + + For unprovisioned phones + To only be able to call the helpdesk to get their phone set up + + + + Be careful with this function. Especially not to the internet. So i would restring the deny/permit to 'internal' by default in that case. + + + Allow = + Specify a list of your networks, for example: 192.168.1.0 + + + deny = + 0.0.0.0/0.0.0.0 + + + permit = + internal + + + hotline_context = + sccp + + + hotline_label = + hotline + + + + + + + hotline_enabled + + off + + + Hotline Enabled: This allows unregistered extensions to connect to the system and dial the number listed below. + + + + + hotline_extension + *111 + sccp-custom + + Hotline Extension: The number that gets called when a hotline is picked up. hint + + + + + hotline_label + Hot Line + sccp-custom + + Hotline Label: The label on the device + + + + + hotline_context + default + sccp-custom + + Hotline Context: This is the context through which the phone will connect. It should probably match your other contest. The default is "from-internal" but "from-internal-xfer" would also make sense by limiting the options for the person using the phone. + + + + dial_template + NONE + + sccp-custom + Help. + + + meetme + + off + + + Enable/Disable conferencing via meetme (on/off), make sure you have one of the meetme apps mentioned below activated in module.conf + + + + + meetmeopts + qxd + sccp-custom + + Other options (app_meetme: A,a,b,c,C,d,D,E,e,F,i,I,l,L,m,M,o,p,P,q,r,s,S,t,T,w,x,X,1) see meetme specific documentation + + + + + + + + Help_tftp_rewrite + This section is responsible for the modes of operation of external services: tftp http. + * off - Flat model cisco. All data is in the directory /tftproot + * Custom - The directory structure is strictly defined in the manager (for internal use). Requires tftpd rewrite support. + * Provision - Directory structure data is read from an external file. This project supports phones that can work on tftp and http. Support rewrite. + + + + provision_hide + + tftp_path + /tftpboot + sccp-custom + + Path to tftp home directory + + + + provision_show + + tftp_rewrite_path + /tftpboot + sccp-custom + + Use path from provision index.cnf file. You must first make sure that you have properly configured the "Provision" + + + + tftp_rewrite + + off + pro + pro + + Internal + + + Support the use of regular-expression-based filename remapping + + + + + createlangdir + + no + + + Say 'yes' if you need to create cisco default language directory in tftp path. + + + + + + + + + + mac + 000000000 + sccp-custom + + The MAC address of the phone. You must specify 12 characters in the format XXXX.XXXX.XXXX or XX-XX-XX-XX-XX-XX or XXXXXXXXXXXX + + + + + type + 7911 + + hw_select sccp-custom + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + addon + NONE + + hw_select sccp-custom + Addon: Addons are model specific and only work with certain base phones. This phone model is identified as being a phone that does not accept sidecars. Update devmodel if this is not correct. + + + + + + + + + mac + 000000000 + sccp-custom + + + The MAC address of the phone + + + + type + 7911 + + + hw_select sccp-custom + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + + + type + 79XX + sccp-custom + + + The type of phone: 7911, 7940, 7960, etc. Important note: the 'G' models are handled as the base model (e.g., 7962G is handled as 7962). In the Display mode, this field is read-only because the MAC address and the model number are a pair. + + + + + addon + NONE + sccp-custom + + + Addon: Addons are model specific and only work with certain base phones. This phone model is identified as being a phone that does not accept sidecars. Update devmodel if this is not correct. + + + + + + + + + + description + 000000000 + sccp-custom + + The information in the upper right corner of the device screen + + + + softkeyset + default + + System Default Softkey + + + + tzoffset + 00 + + Time Zone offset + + + + netlang + English_United_States + + The Network locales allows the phone to play tones (ringing, busy etc.) native to the phone's country. + + + + devlang + Russian_Russia + + The user locale allows the phone to display text (menu items, soft keys etc.) native to the phone's language. + + + + + backgroundImage + + sccp-custom + + For phones that can display background images - display this one. Default is [empty] + + + + + ringtone + + sccp-custom + + The ringtone that the phone will default to. Can be overridden in the phone. The files RINGLIST.XML provice the basic phone ring tones, while DISTINCTIVERINGLIST.XML defines the list of possible ring tones for your other line types. They, along with the actual 'raw' ringtones, are stored in the /tftpboot/ringtones directory with the rest of the config files. + + + + + + + + + mac + 000000000 + sccp-custom + + + + + + + + + transfer + + off + + + Transfer allowed + + + cfwdall + + NONE + + + + Activate the callforward softkeys. Default is On + + + cfwdbusy + + NONE + + + + Activate the callforward busy softkeys. Default is On + + + dndFeature + + NONE + + + + Do Not Disturb. Default is Off + + + directed_pickup + + on + off + + + Enable Pickup function to direct pickup an extension. Default is On + + + conf_allow + + on + off + + + Allow the use of conference + + + + + + pickup_hide + + + + directed_pickup_context + + sccp-custom + + Context where direct pickup search for extensions. if not set current contact will be use. + + + directed_pickup_modeanswer + + on + + + On (Default)= the call has been answered when picked up. Off = call manager way, the phone who picked up the call rings the call + Options: 'Immediate Answer' or 'Show CallerID' ?????? + + + + + + + useRedialMenu + + off + + + You can specifying 'useRedialMenu = yes' in the sccp.conf device section and the redial softkey will cause the "placed calls" list instead of immediately calling the last dialed number. + + + + force_dtmfmode + + auto + + + + Some phone models with bad firmware do send dtmf in a messed up order and need to be forced to skinny mode. + + + mwioncall + + NONE + + + + Set the MWI on call. + + + + mwilamp + + NONE + + + + + + + Set the MWI lamp style when MWI active to on, off, wink, flash or blink + + + + + conf_hide + + + conf_play_general_announce + + on + + + Playback General Announcements (like: 'You are Entering/Leaving the conference') + + + conf_play_part_announce + + on + + + Playback Personal/Participant Announcements, (like: 'You have been muted / You have been kicked') + + + conf_mute_on_entry + + off + + + Mute new participants from the start + + + conf_show_conflist + + on + + + Automatically show conference list to the moderator + + + + conf_music_on_hold_class + default + + form-control + Play music on hold of this class when no moderator is listening on the conference. If set to an empty string, no music on hold will be played. + + + + + + custom_network_acc + + permit + + + + Help. + + + custom_network_type + + ipv4 + + + Help. + + + + + custom_network_v + + + sccp-custom + + + custom_network_m + + sccp-custom + + + Help. + + + + + + + + + deny + / + sccp_hw_net_inherit + + + + + + + + + Add Deny network + All RFC 1918 addresses are local networks. Should always be at least '0.0.0.0/0.0.0.0'. + + + + + + permit + NONE + Inherit + false + + sccp_hw-ar_permit-grinternal + + sccp_hw_net_inherit + + + + + + + + + Add Allow network + Allow network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + nat + + NONE + + + + + Device NAT support (default Auto) + + + + directrtp + + NONE + Auto + + + + This option allow devices to do direct RTP sessions (default Off) + + + earlyrtp + + NONE + + Immediate + + + + + + The audio stream will be open in the progress and connected state. Valid options: none, progress, offhook, dial, ringout. Default may be Progress. + + + + + + + dialtemplate_name + + form-control + + Help. + + + + + + + + Help_id1 + Specifies a pattern to match dialed digits against. Note: TEMPLATE must be in uppercase. + Rules: + + + match: + Pattern to match, consists of one or more elements + + + 0 1 2 3 4 5 6 7 8 9 + Match digit + + + . + Match one digit, # or * + + + * + Match zero or more digits, # or * + + + \* + Match a literal * + + + , + Play secondary dial-tone specified by tone + + + timeout: + Number of seconds to wait for more digits if this pattern matches + + + line: + Only apply template to the specified line (optional) + + + rewrite: + Rewrite the matched digits before dialing, consists of one or more elements (optional) + + + 0 1 2 3 4 5 6 7 8 9 + Replace with digit + + + %0 + The entire match + + + %1 %2 %3 %4 %5 + Replace with group of digits matched, grouping is done by consecutive literal digit or . elements + + + %% + A literal % + + + . + Each . is replaced by the digit that was matched by the corresponding . in the pattern + + + tone: + Secondary dial-tone to play when a , is matched, up to 3 can be specified (optional) + + + + + + dialtemplate + */10/* + + title + + + + + + + + text1 + + + + + + empty + Bellcore-Alerting + Bellcore-Inside + Bellcore-Outside + Bellcore-Busy + Bellcore-BusyVerify + Bellcore-Reorder + Bellcore-CallWaiting + Bellcore-Hold + Bellcore-Reminder + Bellcore-Confirmation + Bellcore-Stutter + Bellcore-Permanent + Bellcore-None + Cisco-Zip + Cisco-ZipZip + Cisco-BeepBonk + Bellcore-dr1 + Bellcore-dr2 + Bellcore-dr3 + Bellcore-dr4 + Bellcore-dr5 + Bellcore-dr6 + CallWaiting-2 + CallWaiting-3 + CallWaiting-4 + + Allow network settings. Blank fields will be ignored used Network 0.0.0.0. + + + + + diff --git a/install.php b/install.php index c52f30f..db44d88 100644 --- a/install.php +++ b/install.php @@ -208,6 +208,88 @@ function Get_DB_config($sccp_compatible) { 'dnd' => array('create' => "enum('off','reject','silent','user') NOT NULL default 'reject'", 'modify' => "enum('off','reject','silent','user')", 'def_modify' => "reject") ) ); + + $db_config_v4 = array( + 'sccpdevmodel' => array( + 'enabled' => array('create' => "INT(2) NULL DEFAULT '0'"), + 'nametemplate' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL'), + 'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL") + ), + 'sccpdevice' => array( + 'pickupexten' => array('drop' => "yes"), + 'directed_pickup' => array('drop' => "yes"), + 'directed_pickup_context' => array('drop' => "yes"), + 'pickupcontext' => array('drop' => "yes"), + 'directed_pickup_modeanswer' => array('drop' => "yes"), + 'pickupmodeanswer' => array('drop' => "yes"), + 'callhistory_answered_elsewhere' => array('create' => "enum('Ignore','Missed Calls','Received Calls', 'Placed Calls') NULL default NULL", 'modify' => "enum('Ignore','Missed Calls','Received Calls','Placed Calls')"), + + 'hwlang' => array('rename' => "_hwlang"), + '_hwlang' => array('create' => 'varchar(12) NULL DEFAULT NULL'), + 'useRedialMenu' => array('create' => "VARCHAR(5) NULL DEFAULT 'no' AFTER `_hwlang`"), + //'dtmfmode' => array('create' => "VARCHAR(10) default 'outofband'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'outofband'), + 'dtmfmode' => array('drop' => "yes"), +// 'force_dtmfmode' => array('create' => "VARCHAR(10) default 'auto'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'auto'), + 'force_dtmfmode' => array('create' => "ENUM('auto','rfc2833','skinny') NOT NULL default 'auto'", 'modify' => "ENUM('auto','rfc2833','skinny')", 'def_modify'=> 'auto'), + 'deny' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"), + 'permit' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"), + 'backgroundImage' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"), + 'ringtone' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"), + 'transfer' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"), + 'cfwdall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"), + 'cfwdbusy' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"), + 'directrtp' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"), + 'dndFeature' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"), + 'earlyrtp' => array('create' => "ENUM('immediate','offHook','dialing','ringout','progress','none') NULL default NULL", 'modify' => "ENUM('immediate','offHook','dialing','ringout','progress','none')"), + 'audio_tos' => array('def_modify' => "0xB8"), + 'audio_cos' => array('def_modify' => "6"), + 'video_tos' => array('def_modify' => "0x88"), + 'video_cos' => array('def_modify' => "5"), + 'trustphoneip' => array('drop' => "yes"), + 'mwilamp' => array('create' => "enum('on','off','wink','flash','blink') NULL default 'on'", 'modify' => "enum('on','off','wink','flash','blink')"), + 'mwioncall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"), + 'private' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), // Что-то лишенне + 'privacy' => array('create' => "enum('full','on','off') NOT NULL default 'full'", 'modify' => "enum('full','on','off')"), // Что-то лишенне + 'nat' => array('create' => "enum('on','off','auto') NULL default NULL", 'modify' => "enum('on','off','auto')"), + 'conf_allow' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"), + 'conf_play_part_announce' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"), + 'conf_mute_on_entry' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), + 'conf_show_conflist' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"), + 'type' => array('create' => 'VARCHAR(15) NULL DEFAULT NULL', 'modify' => "VARCHAR(15)"), + 'imageversion' => array('create' => 'VARCHAR(31) NULL DEFAULT NULL', 'modify' => "VARCHAR(31)"), + 'softkeyset' => array('def_modify' => "softkeyset") + ), + 'sccpline' => array( + 'directed_pickup' => array('create' => "enum('on','off') NOT NULL default NULL", 'modify' => "enum('on','off')"), + 'directed_pickup_context' => array('create' => "VARCHAR(100) NULL DEFAULT NULL"), + 'pickup_modeanswer' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"), + 'namedcallgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `setvar`", 'modify' => "VARCHAR(100)"), + 'namedpickupgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `namedcallgroup`", 'modify' => "VARCHAR(100)"), + 'adhocNumber' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `namedpickupgroup`"), + 'meetme' => array('create' => "VARCHAR(5) NULL DEFAULT NULL AFTER `adhocNumber`"), + 'meetmenum' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetme`"), + 'meetmeopts' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmenum`"), + 'regexten' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmeopts`"), + 'rtptos' => array('drop' => "yes"), + 'audio_tos' => array('drop' => "yes"), + 'audio_cos' => array('drop' => "yes"), + 'video_tos' => array('drop' => "yes"), + 'video_cos' => array('drop' => "yes"), + 'incominglimit' => array('create' => "INT(11) DEFAULT '6'", 'modify' => 'INT(11)', 'def_modify' => "6"), + 'transfer' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"), + 'vmnum' => array('def_modify' => "*97"), + 'musicclass' => array('def_modify' => "default"), + 'id' => array('create' => 'MEDIUMINT(9) NOT NULL AUTO_INCREMENT, ADD UNIQUE(id);', 'modify' => "MEDIUMINT(9)", 'index' => 'id'), +// 'id' =>array('create' => 'VARCHAR( 20 ) NULL DEFAULT NULL', 'modify' => "VARCHAR(20)", 'def_modify' =>"NULL"), + 'echocancel' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), + 'silencesuppression' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), + 'dnd' => array('create' => "enum('off','reject','silent','user') NOT NULL default 'reject'", 'modify' => "enum('off','reject','silent','user')", 'def_modify' => "reject") + ) + ); + + if ($sccp_compatible >= 433 ) { + return $db_config_v4; + } if ($sccp_compatible >= 430) { return $db_config_v3; } else { @@ -487,6 +569,16 @@ function InstallDB_createButtonConfigTrigger() { } return true; } +function InstallDB_updateDBVer($sccp_compatible) { + global $db; + outn("
  • " . _("Update DB Ver") . "
  • "); + $sql = "REPLACE INTO `sccpsettings` (`keyword`, `data`, `seq`, `type`), VALUES ('SccpDBmodel', '"+$sccp_compatible+ "','30','0');"; + $results = $db->query($sql); + if (DB::IsError($check)) { + die_freepbx(sprintf(_("Error updating sccpdeviceconfig view. Command was: %s; error was: %s "), $sql, $results->getMessage())); + } + return true; +} function InstallDB_CreateSccpDeviceConfigView($sccp_compatible) { global $db; @@ -615,6 +707,7 @@ InstallDB_fillsccpdevmodel(); InstallDB_updateSccpDevice(); InstallDB_createButtonConfigTrigger(); InstallDB_CreateSccpDeviceConfigView($sccp_compatible); +InstallDB_updateDBVer($sccp_compatible); Setup_RealTime(); outn("
    "); diff --git a/views/form.adddevice.php b/views/form.adddevice.php index ea0002e..2a3abda 100644 --- a/views/form.adddevice.php +++ b/views/form.adddevice.php @@ -7,6 +7,12 @@ $def_val = null; $dev_id = null; $dev_new = null; +// Default value from Server setings + +$def_val['netlang'] = array("keyword" => 'netlang', "data" => $this->sccpvalues['netlang']['data'], "seq" => "99"); +$def_val['devlang'] = array("keyword" => 'devlang', "data" => $this->sccpvalues['devlang']['data'], "seq" => "99"); +$def_val['directed_pickup_context'] = array("keyword" => 'directed_pickup_context', "data" => $this->sccpvalues['directed_pickup_context']['data'], "seq" => "99"); + if (!empty($_REQUEST['new_id'])) { $dev_id = $_REQUEST['new_id']; $val = str_replace(array('SEP','ATA','VG'), '', $dev_id); diff --git a/views/formShow.php b/views/formShow.php index 6f10a10..63a9fd5 100644 --- a/views/formShow.php +++ b/views/formShow.php @@ -767,8 +767,9 @@ foreach ($items as $child) { ?>
    -
    label);?> - +
    +

    label);?> +

    - +
    + +
    0 ){ ShowGroup('sccp_dev_config',1); + echo $this->ShowGroup('sccp_dev_group_config',1); echo $this->ShowGroup('sccp_dev_advconfig',1); echo $this->ShowGroup('sccp_dev_softkey',1); echo $this->ShowGroup('sccp_dev_url',1); diff --git a/views/server.info.php b/views/server.info.php index 005dad5..59a3e72 100644 --- a/views/server.info.php +++ b/views/server.info.php @@ -19,6 +19,9 @@ $info['XML'] = $this->xmlinterface->info(); $info['sccp_class'] = $driver['sccp']; $info['Core_sccp'] = array('Version' => $core['Version'], 'about'=> 'Sccp ver.'. $core['Version'].' r'.$core['vCode']. ' Revision :'. $core['RevisionNum']. ' Hash :'. $core['RevisionHash']); $info['Asterisk'] = array('Version' => FreePBX::Config()->get('ASTVERSION'), 'about'=> 'Asterisk.'); +if (!empty($this->sccpvalues['SccpDBmodel'])) { + $info['DB Model'] = array('Version' => $this->sccpvalues['SccpDBmodel']['data'], 'about'=> 'SCCP DB Configure'); +} if (!empty($this->sccpvalues['tftp_rewrite'])) { if ($this->sccpvalues['tftp_rewrite']['data'] == 'pro') { $info['Provision_SCCP'] = array('Version' => 'base', 'about'=> 'Provision Sccp enabled'); @@ -26,18 +29,21 @@ if (!empty($this->sccpvalues['tftp_rewrite'])) { $info['TFTP_Rewrite'] = array('Version' => 'base', 'about'=> 'Rewrite Supported'); } } -$info['Сompatible'] = array('Version' => $this->srvinterface->get_compatible_sccp(), 'about'=> ''); +$info['Сompatible'] = array('Version' => $this->srvinterface->get_compatible_sccp(), 'about'=> 'Ok'); +if (!empty($this->sccpvalues['SccpDBmodel'])) { + if ($this->srvinterface->get_compatible_sccp()> $this->sccpvalues['SccpDBmodel']['data']){ + $info['Сompatible']['about'] = '
    Reinstall SCCP manager required
    '; + } +} /* print_r("
    Request:
    ");
      //$asss = $this->extconfigs->validate_init_path($this->sccppath["asterisk"],$this->sccpvalues,$driver_ver);
     
    - $asss = $this->srvinterface->getеtestChanSCC();
    + $asss = $this->sccpvalues;
      $json = '';
      print_r("
    "); print_r($asss); print_r("
    "); - $decode = json_decode($asss['JSON'], true); - print_r($decode); print("
    "); */ diff --git a/views/server.setting.php b/views/server.setting.php index 2a955f3..992fabc 100644 --- a/views/server.setting.php +++ b/views/server.setting.php @@ -15,7 +15,6 @@
    ShowGroup('sccp_general',1); echo $this->ShowGroup('sccp_dev_time_s',1); echo $this->ShowGroup('sccp_net',1);