Update 433 bug fix

This commit is contained in:
PhantomVl 2018-12-19 17:40:10 +03:00
parent 05a5c67930
commit bbfc6bb007
7 changed files with 305 additions and 40 deletions

View file

@ -0,0 +1,58 @@
diff --git a/src/sccp_config.c b/src/sccp_config.c
index e15d19db..c78bcbf2 100644
--- a/src/sccp_config.c
+++ b/src/sccp_config.c
@@ -3062,6 +3062,7 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
uint i;
const char *id = astman_get_header(m, "ActionID");
const char *req_segment = astman_get_header(m, "Segment");
+ const char *req_listresult = astman_get_header(m, "ListResult");
uint comma = 0;
if (sccp_strlen_zero(req_segment)) { // return all segments
@@ -3180,11 +3181,22 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
sccpConfigSegment = &sccpConfigSegments[i];
const SCCPConfigOption *config = sccpConfigSegment->config;
- astman_append(s, "Response: Success\r\n");
- if (!ast_strlen_zero(id)) {
- astman_append(s, "ActionID: %s\r\n", id);
+ if (sccp_strcaseequals(req_listresult, "yes")) {
+ //astman_append(s, "Response: Follows\r\n\r\n");
+ //astman_append(s, "EventList: Start\r\n");
+ astman_send_listack(s, m, "SCCPConfigMetaData Follows", "Start");
+ astman_append(s, "Event: SCCPConfigMetaData\r\n");
+ if (!ast_strlen_zero(id)) {
+ astman_append(s, "ActionID: %s\r\n", id);
+ }
+ } else if (sccp_strcaseequals(req_listresult, "freepbx")) {
+ astman_append(s, "Response: Follows\r\n");
+ } else {
+ astman_append(s, "Response: Success\r\n");
+ if (!ast_strlen_zero(id)) {
+ astman_append(s, "ActionID: %s\r\n", id);
+ }
}
-
astman_append(s, "JSON: {");
astman_append(s, "\"Segment\":\"%s\",", sccpConfigSegment->name);
astman_append(s, "\"Options\":[");
@@ -3296,8 +3308,17 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
comma = 1;
}
}
- astman_append(s, "]}\r\n\r\n");
+ astman_append(s, "]}\r\n");
total++;
+ if (sccp_strcaseequals(req_listresult, "yes")) {
+ astman_append(s,
+ "\r\nEvent: SCCPConfigMetaDataComplete\r\n"
+ "EventList: Complete\r\n"
+ "ListItems: %d\r\n\r\n", total);
+ } else if (sccp_strcaseequals(req_listresult, "freepbx")) {
+ astman_append(s, "--END COMMAND--\r\n");
+ }
+ astman_append(s, "\r\n");
}
}
}

View file

@ -678,11 +678,12 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
}
break;
case 'create_hw_tftp':
$ver_id = ' Test !';
$this->sccp_delete_device_XML('all'); // Концы в вводу !!
$this->sccp_create_tftp_XML();
$models = $this->dbinterface->get_db_SccpTableData("SccpDevice");
$ver_id = ' on found active model !';
// return array('status' => false, 'message' => print_r($models));
//return array('status' => false, 'message' => 'Error :'. print_r($models,1));
foreach ($models as $data) {
$ver_id = $this->sccp_create_device_XML($data['name']);
};

View file

@ -17,12 +17,14 @@ class srvinterface {
public function __construct($parent_class = null) {
global $amp_conf;
$this->paren_class = $parent_class;
/*
$this->socket = FALSE;
$this->error = "";
$this->astLogin(localhost, $amp_conf[AMPMGRUSER],$amp_conf[AMPMGRPASS]);
*
*/
/*
if (isset($amp_conf[AMPMGRUSER])) {
$this->astLogin('localhost', $amp_conf[AMPMGRUSER],$amp_conf[AMPMGRPASS]);
}
*/
}
public function info() {
@ -432,16 +434,18 @@ class srvinterface {
if (!is_bool(strpos($inthat, $value)))
return substr($inthat, strpos($inthat, $value) + strlen($value));
}
/*
function getеtestChanSCC() {
global $astman;
$params = array();
$action = 'GetConfigJSON';
$metadata['a'] = $response = $astman->send_request($action, $params);
$metadata['b'] = $this->astman_retrieveMeta($action, $params, true);
$action = 'SCCPConfigMetaData';
$params = array('Segment' => 'device', 'ResultFormat'=>'command' );
// $params = array('Segment' => 'device');
// $params = array();
$metadata['a'] = $astman->send_request($action, $params);
// $metadata['b'] = $this->astman_retrieveMeta($action, $params, true);
return $metadata;
}
*/
/*
private function astLogin($host="localhost", $username="admin", $password="amp111"){
$this->socket = @fsockopen("127.0.0.1","5038", $errno, $errstr, 1);
@ -477,7 +481,7 @@ class srvinterface {
return;
}
private function astQuery($query){
private function astQuery($query, $rawdata = false){
$wrets = "";
if ($this->socket === FALSE)
@ -485,30 +489,33 @@ class srvinterface {
$parameters = array();
$data_store = 'data';
fputs($this->socket, $query);
$parameters['raw_q'] = $query;
do
{
$line = fgets($this->socket, 4096);
$parameters['raw'] .= $line;
$a = strpos($line, ':');
if($a) {
$key = substr($line, 0, $a);
switch ($key) {
case 'Response':
case 'Message':
case 'EventList':
$parameters[$key] = trim(substr($line, $a + 2));
break;
case 'JSON':
$parameters[$key] = substr($line, $a + 2);
$data_store = $key;
break;
default:
$parameters[$data_store] .= $line;
break;
}
if (!$rawdata) {
$a = strpos($line, ':');
if($a) {
$key = substr($line, 0, $a);
switch ($key) {
case 'Response':
case 'Message':
case 'EventList':
$parameters[$key] = trim(substr($line, $a + 2));
break;
case 'JSON':
$parameters[$key] = substr($line, $a + 2);
$data_store = $key;
break;
default:
$parameters[$data_store] .= $line;
break;
}
// store parameter in $parameters
} else {
$parameters[$data_store] .= $line;
} else {
$parameters[$data_store] .= $line;
}
}
$info = stream_get_meta_data($this->socket);
}while ($line != "\r\n" && $info['timed_out'] == false );
@ -548,7 +555,7 @@ class srvinterface {
}
}
$result = $this->astQuery($query."\r\n");
$result = $this->astQuery($query."\r\n",$rawdata);
if ($result["Response"] == "Success") {
if ($rawdata) {
@ -567,6 +574,7 @@ class srvinterface {
}
}
*/
/*
function t_get_meta_data() {
global $amp_conf;
@ -580,7 +588,7 @@ class srvinterface {
// fputs ($fp,"Secret: secret\r\n");
fputs ($fp,"Secret: ".$amp_conf[AMPMGRPASS]."\r\n");
fputs ($fp,"Events: on\r\n\r\n");
fputs ($fp,"Action: SCCPConfigMetaData\r\n");
fputs ($fp,"\r\n");
@ -590,16 +598,19 @@ class srvinterface {
fputs ($fp,"Action: SCCPConfigMetaData\r\n");
fputs ($fp,"Segment: general\r\n");
fputs ($fp,"ListResult: yes\r\n");
fputs ($fp,"Option: fallback\r\n");
fputs ($fp,"\r\n");
fputs ($fp,"Action: SCCPConfigMetaData\r\n");
fputs ($fp,"Segment: device\r\n");
fputs ($fp,"ListResult: freepbx\r\n");
fputs ($fp,"\r\n");
fputs ($fp,"Action: SCCPConfigMetaData\r\n");
fputs ($fp,"Segment: device\r\n");
fputs ($fp,"Option: dtmfmode\r\n");
fputs ($fp,"ListResult: yes\r\n");
fputs ($fp,"\r\n");
fputs ($fp,"Action: logoff\r\n\r\n");
@ -618,7 +629,7 @@ class srvinterface {
return $resp;
}
*/
*/
}

View file

@ -602,6 +602,14 @@ $(document).ready(function () {
data.message.forEach(function (entry) {
fpbxToast(entry, 'error', 'error');
});
} else {
if (data.message) {
alert(data.message);
} else {
if (data) {
alert(data);
}
}
}
}
}

View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<device>
<fullConfig>true</fullConfig>
<deviceProtocol>SCCP</deviceProtocol>
<sshUserId/>
<sshPassword/>
<ipAddressMode>2</ipAddressMode>
<allowAutoConfig>true</allowAutoConfig>
<ipPreferenceModeControl>1</ipPreferenceModeControl>
<tzdata>
<tzolsonversion>2012c</tzolsonversion>
<tzupdater>tzupdater.jar</tzupdater>
</tzdata>
<mlppDomainId>000000</mlppDomainId>
<mlppIndicationStatus>Off</mlppIndicationStatus>
<preemption>Disabled</preemption>
<executiveOverridePreemptable>false</executiveOverridePreemptable>
<devicePool>
<revertPriority>0</revertPriority>
<name>Default</name>
<dateTimeSetting>
<name>CMLocal</name>
<dateTemplate>M/D/Y</dateTemplate>
<timeZone>Greenwich Standard Time</timeZone>
<olsonTimeZone>Etc/GMT</olsonTimeZone>
</dateTimeSetting>
<callManagerGroup>
<name>Default</name>
<tftpDefault>true</tftpDefault>
<members>
<member priority="0">
<callManager>
<name>asterisk</name>
<ipv6Addr/>
<description>asterisk</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName>asterisk</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<srstInfo uuid="{cd241e11-4a58-4d3d-9661-f06c912a18a3}">
<name>Disable</name>
<srstOption>Disable</srstOption>
<userModifiable>false</userModifiable>
<ipAddr1/>
<port1>2000</port1>
<ipAddr2/>
<port2>2000</port2>
<ipAddr3/>
<port3>2000</port3>
<sipIpAddr1/>
<sipPort1>5060</sipPort1>
<sipIpAddr2/>
<sipPort2>5060</sipPort2>
<sipIpAddr3/>
<sipPort3>5060</sipPort3>
<isSecure>false</isSecure>
</srstInfo>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<commonProfile>
<phonePassword/>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>3</callLogBlfEnabled>
</commonProfile>
<loadInformation>apps37sccp.1-4-4-0</loadInformation>
<vendorConfig>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<sshAccess>1</sshAccess>
<lldpAssetId/>
<voiceQualityControl>0</voiceQualityControl>
</vendorConfig>
<versionStamp>1396020461-83a09e65-e62e-4db3-9e03-e3d0cdfd7093</versionStamp>
<userLocale>
<name>English_United_States</name>
<uid>1</uid>
<langCode>en_US</langCode>
<version>9.0.0.0(1)</version>
<winCharSet>iso-8859-1</winCharSet>
</userLocale>
<networkLocale>United_States</networkLocale>
<networkLocaleInfo>
<name>United_States</name>
<uid>64</uid>
<version>9.0.0.0(1)</version>
</networkLocaleInfo>
<idleTimeout>0</idleTimeout>
<authenticationURL>http://asterisk:8080/ccmcip/authenticate.jsp</authenticationURL>
<directoryURL>http://asterisk:8080/ccmcip/xmldirectory.jsp</directoryURL>
<idleURL/>
<informationURL>http://asterisk:8080/ccmcip/GetTelecasterHelpText.jsp</informationURL>
<messagesURL/>
<proxyServerURL/>
<servicesURL>http://asterisk:8080/ccmcip/getservicesmenu.jsp</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>1</transportLayerProtocol>
<dndCallAlert>5</dndCallAlert>
<phonePersonalization>1</phonePersonalization>
<rollover>0</rollover>
<singleButtonBarge>0</singleButtonBarge>
<joinAcrossLines>0</joinAcrossLines>
<autoCallPickupEnable>false</autoCallPickupEnable>
<blfAudibleAlertSettingOfIdleStation>0</blfAudibleAlertSettingOfIdleStation>
<blfAudibleAlertSettingOfBusyStation>0</blfAudibleAlertSettingOfBusyStation>
<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
<processNodeName>asterisk</processNodeName>
<ipv6Addr/>
</capf>
</capfList>
<certHash/>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>
<mobility>
<handoffdn/>
<dtmfdn/>
<ivrdn/>
<dtmfHoldCode>*81</dtmfHoldCode>
<dtmfExclusiveHoldCode>*82</dtmfExclusiveHoldCode>
<dtmfResumeCode>*83</dtmfResumeCode>
<dtmfTxfCode>*84</dtmfTxfCode>
<dtmfCnfCode>*85</dtmfCnfCode>
</mobility>
<userId/>
<phoneServices>
<provisioning>2</provisioning>
<phoneService type="1" category="0">
<name>Missed Calls</name>
<url>Application:Cisco/MissedCalls</url>
<vendor/>
<version/>
</phoneService>
<phoneService type="2" category="0">
<name>Voicemail</name>
<url>Application:Cisco/Voicemail</url>
<vendor/>
<version/>
</phoneService>
<phoneService type="1" category="0">
<name>Received Calls</name>
<url>Application:Cisco/ReceivedCalls</url>
<vendor/>
<version/>
</phoneService>
<phoneService type="1" category="0">
<name>Placed Calls</name>
<url>Application:Cisco/PlacedCalls</url>
<vendor/>
<version/>
</phoneService>
<phoneService type="1" category="0">
<name>Personal Directory</name>
<url>Application:Cisco/PersonalDirectory</url>
<vendor/>
<version/>
</phoneService>
<phoneService type="1" category="0">
<name>Corporate Directory</name>
<url>Application:Cisco/CorporateDirectory</url>
<vendor/>
<version/>
</phoneService>
</phoneServices>
</device>

View file

@ -260,7 +260,7 @@ function Get_DB_config($sccp_compatible) {
'softkeyset' => array('def_modify' => "softkeyset")
),
'sccpline' => array(
'directed_pickup' => array('create' => "enum('on','off') NOT NULL default NULL", 'modify' => "enum('on','off')"),
'directed_pickup' => array('create' => "enum('on','off') 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)"),

View file

@ -37,14 +37,23 @@ if (!empty($this->sccpvalues['SccpDBmodel'])) {
}
/*
print_r("<br> Request:<br><pre>");
//$asss = $this->extconfigs->validate_init_path($this->sccppath["asterisk"],$this->sccpvalues,$driver_ver);
$asss = $this->sccpvalues;
// $asss = $this->extconfigs->validate_init_path($this->sccppath["asterisk"],$this->sccpvalues,$driver_ver);
global $amp_conf;
print_r($amp_conf);
/*
$asss = $this->srvinterface->getеtestChanSCC();
// $asss = $this->sccpvalues;
$json = '';
print_r("<br>");
print_r($asss);
print_r("<br>");
print_r($asss['a']['JSON']);
print_r("<br>");
print_r("DIRECT START");
print_r("<br>");
print_r($this->srvinterface->t_get_meta_data());
print("</pre>");
*/
// $lang_arr = $this->extconfigs->getextConfig('sccp_lang','sk_SK');