View Issue Details

IDProjectCategoryView StatusLast Update
0000003easycwmpHelppublic2014-05-30 16:06
ReporterParshad Assigned Touser13 
PriorityurgentSeverityblockReproducibilityalways
Status resolvedResolutionfixed 
PlatformOpenWRTOSLinuxOS Version3.10
Summary0000003: CWMP Version mis-match between EasyCWMP and Perl-ACS causing SOAPAction Header missing and creating XML parser problem
DescriptionWe 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 start
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 Reproduce1.Start Perl-ACS:
./bin/acs.pl --debug

2.Start EasyCWMP:
root@OpenWrt:~# /etc/init.d/easycwmpd start
Additional InformationUploading Log file.
TagsNo tags attached.
e-mail notification

Activities

Parshad

2014-05-28 14:39

reporter  

CPE-ACS.log (7,427 bytes)

user13

2014-05-30 16:01

  ~0000015

Last edited: 2014-05-30 16:01

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)

user13

2014-05-30 16:05

  ~0000016

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.

Issue History

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 user13 Note Added: 0000015
2014-05-30 16:01 user13 Note Edited: 0000015
2014-05-30 16:05 user13 Note Added: 0000016
2014-05-30 16:06 user13 Assigned To => user13
2014-05-30 16:06 user13 Status new => feedback
2014-05-30 16:06 user13 Status feedback => resolved
2014-05-30 16:06 user13 Resolution open => fixed