View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000003 | easycwmp | Help | public | 2014-05-28 14:39 | 2014-05-30 16:06 |
Reporter | Parshad | Assigned To | |||
Priority | urgent | Severity | block | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | OpenWRT | OS | Linux | OS Version | 3.10 |
Summary | 0000003: CWMP Version mis-match between EasyCWMP and Perl-ACS causing SOAPAction Header missing and creating XML parser problem | ||||
Description | We are using perl-cwmp(https://github.com/dpavlin/perl-cwmp)as an ACS on RHEL 6.0 and easycwmp at CPE with OpenWRT as a TR-069 client. EasyCWMP sends Inform message successfully, ACS receives inform message but while parsing, its shows "missing SOAPAction header" error message and sends response to client, at client side while paring InformResponse message its shows "rpc_inform(225): parse Inform xml message from ACS failed" error message. We looked into XML files at both side, Perl-ACS using cwmp-1-0 version and easycwmp using cwmp-1-2 version, so we are assuming this might causing this problem. EasyCWMP: xmlns:cwmp="urn:dslforum-org:cwmp-1-2 Perl-ACS: xmlns:cwmp="urn:dslforum-org:cwmp-1-0 Could you please give your view on this and help us to configure easycwmp so it can send inform request in cwmp-1-0 version. Following are log signature from both side: AT EASYCWMP: Sending of Inform Message: root@OpenWrt:~# /etc/init.d/easycwmpd [Jstart config_init_local(53):: easycwmp.@local[0].interface=eth0 config_init_local(63):: easycwmp.@local[0].port=7547 config_init_local(81):: easycwmp.@local[0].ubus_socket=/var/run/ubus.sock config_init_local(69):: easycwmp.@local[0].username=easycwmp config_init_local(75):: easycwmp.@local[0].password=easycwmp config_init_acs(147):: easycwmp.@acs[0].scheme=http config_init_acs(153):: easycwmp.@acs[0].username=admin config_init_acs(159):: easycwmp.@acs[0].password=admin config_init_acs(165):: easycwmp.@acs[0].hostname=192.168.1.2 config_init_acs(175):: easycwmp.@acs[0].port=3333 config_init_acs(181):: easycwmp.@acs[0].path=/ config_init_acs(187):: easycwmp.@acs[0].periodic_enable=1 config_init_acs(193):: easycwmp.@acs[0].periodic_interval=100 +++ HTTP SERVER CONFIGURATION +++ NOT BOUND TO IP port: '7547' --- HTTP SERVER CONFIGURATION --- +++ HTTP CLIENT CONFIGURATION +++ http_client_init(49):: url: http://admin:admin@192.168.1.2:3333/ http_client_init(55):: ssl_verify: SSL certificate validation disabled. --- HTTP CLIENT CONFIGURATION --- root@OpenWrt:~# > POST / HTTP/1.1 Host: 192.168.1.2:3333 Accept: */* User-Agent: easycwmp Content-Type: text/xml Content-Length: 3286 Expect: 100-continue AT Perl-ACS: Inform Request Handling and InformResponse: root@dhcppc1 perl-cwmp]# ./bin/acs.pl --debug ## cleaning dump directory created CWMP::Server({ debug => 1, port => 3333, session => { create_dump => 1, store => { debug => 1, module => "YAML", path => "./" }, }, }) object ## debug level: 1 ACS waiting for request on port 3333 Found store plugins: CWMP::Store::HASH, CWMP::Store::JSON, CWMP::Store::YAML open { debug => 1, module => "YAML", path => "./" } at lib/CWMP/Store/HASH.pm line 45. <<<< 192.168.1.1 START POST / HTTP/1.1 Host: 192.168.1.2:3333 Accept: */* User-Agent: easycwmp Content-Type: text/xml Content-Length: 3286 Expect: 100-continue missing SOAPAction header <?xml version="1.0" encoding="UTF-8" standalone="no"?> <soap_env:Envelope xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap_enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-2"> <soap_env:Header> <cwmp:ID soap_env:mustUnderstand="1" /> </soap_env:Header> <soap_env:Body> <cwmp:Inform> <DeviceId> <Manufacturer>easycwmp</Manufacturer> <OUI>FFFFFF</OUI> <ProductClass>easycwmp</ProductClass> <SerialNumber>FFFFFF123456</SerialNumber> </DeviceId> <Event soap_enc:arrayType="cwmp:EventStruct[3]"> <EventStruct> <EventCode>0 BOOTSTRAP</EventCode> <CommandKey /> </EventStruct> <EventStruct> <EventCode>2 PERIODIC</EventCode> <CommandKey /> </EventStruct> <EventStruct> <EventCode>1 BOOT</EventCode> <CommandKey /> </EventStruct> </Event> <MaxEnvelopes>1</MaxEnvelopes> <CurrentTime>2011-09-08T22:42:04+00:00</CurrentTime> <RetryCount>0</RetryCount> <ParameterList soap_enc:arrayType="cwmp:ParameterValueStruct[11]"> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name> <Value>example_hw_version</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.Manufacturer</Name> <Value>easycwmp</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.ManufacturerOUI</Name> <Value>FFFFFF</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.ProductClass</Name> <Value>easycwmp</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name> <Value></Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.SerialNumber</Name> <Value>FFFFFF123456</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name> <Value>example_sw_version</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name> <Value>1.0</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name> <Value>http://192.168.1.2:3333</Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name> <Value></Value> </ParameterValueStruct> <ParameterValueStruct xsi:type="xsd:string"> <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name> <Value>192.168.1.1</Value> </ParameterValueStruct> </ParameterList> </cwmp:Inform> </soap_env:Body> </soap_env:Envelope> <<<< 192.168.1.1 END Use of uninitialized value in scalar chomp at lib/CWMP/Parser.pm line 68, <GEN1> line 8. >>> dispatching to InformResponse with args undef >>>> 192.168.1.1 START At EasyCWMP: InformResponse Message Paring: < HTTP/1.1 200 OK < Content-Type: text/xml; charset="utf-8" < Content-Length: 421 < Server: Perl-CWMP/0.21 < SOAPServer: Perl-CWMP/0.21 < +++ RECEIVED HTTP RESPONSE (PART) +++ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> <soap:Header> <cwmp:NoMoreRequests>0</cwmp:NoMoreRequests> </soap:Header> <soap:Body> <cwmp:InformResponse> <MaxEnvelopes>1</MaxEnvelopes> </cwmp:InformResponse> </soap:Body> </soap:Envelope>--- RECEIVED HTTP RESPONSE (PART) --- +++ RECEIVED HTTP RESPONSE +++ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0"> <soap:Header> <cwmp:NoMoreRequests>0</cwmp:NoMoreRequests> </soap:Header> <soap:Body> <cwmp:InformResponse> <MaxEnvelopes>1</MaxEnvelopes> </cwmp:InformResponse> </soap:Body> </soap:Envelope>--- RECEIVED HTTP RESPONSE --- rpc_inform(225): parse Inform xml message from ACS failed +++ HTTP CLIENT CONFIGURATION +++ http_client_init(49):: url: http://admin:admin@192.168.1.2:3333/ http_client_init(55):: ssl_verify: SSL certificate validation disabled. --- HTTP CLIENT CONFIGURATION --- | ||||
Steps To Reproduce | 1.Start Perl-ACS: ./bin/acs.pl --debug 2.Start EasyCWMP: root@OpenWrt:~# /etc/init.d/easycwmpd start | ||||
Additional Information | Uploading Log file. | ||||
Tags | No tags attached. | ||||
e-mail notification | |||||
|
|
|
Hi Parshad, The problem cause is: The Perl-CWMP send the inform response without xsd and xsi namespaces. EasyCwmp make a check on these namespaces, then inform response is rejected for this cause. I checked the CWMP standard and I found that these namespaces are not mandotary for all ACS messages. I fixed this issue in the latest version of EasyCwmp. Please find the latest version at EasyCwmp website (http://www.easycwmp.org/index.php/manual) |
|
If you are installing EasyCwmp on OpenWrt, then you have to remove the old easycwmp folder from the package directory and remove easycwmp-openwrt.tar.gz from the package directory before installing the new version. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-05-28 14:39 | Parshad | New Issue | |
2014-05-28 14:39 | Parshad | File Added: CPE-ACS.log | |
2014-05-30 16:01 |
|
Note Added: 0000015 | |
2014-05-30 16:01 |
|
Note Edited: 0000015 | |
2014-05-30 16:05 |
|
Note Added: 0000016 | |
2014-05-30 16:06 |
|
Assigned To | => user13 |
2014-05-30 16:06 |
|
Status | new => feedback |
2014-05-30 16:06 |
|
Status | feedback => resolved |
2014-05-30 16:06 |
|
Resolution | open => fixed |