EasyCwmp

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000003easycwmp[All Projects] Helppublic2014-05-28 14:392014-05-30 16:06
ReporterParshad 
Assigned ToAnis 
PriorityurgentSeverityblockReproducibilityalways
StatusresolvedResolutionfixed 
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.
Attached Fileslog file icon CPE-ACS.log [^] (7,427 bytes) 2014-05-28 14:39

- Relationships

-  Notes
(0000015)
Anis (developer)
2014-05-30 16:01
edited on: 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 [^])

(0000016)
Anis (developer)
2014-05-30 16:05

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


Copyright © 2000 - 2017 MantisBT Team
Powered by Mantis Bugtracker