[Freeswitch-users] xml_cdr encoding issues

Assaf Dahary adahary at gmail.com
Wed Mar 11 11:53:18 MSK 2015


Hi,

I have installed a fresh FS on a DigitalOcean VPS (CentOS 6.5 64bit).
FreeSWITCH Version 1.5.15b+git~20150303T230402Z~86c68d906a~64bit (git
86c68d9 2015-03-03 23:04:02Z 64bit)

I'm using mod_cml_cdr to process call logs into DB using a PHP script ($xml
= simplexml_load_string($xml_string);) 

The problem is that the xml parsing is failing because the generated POST
XML CDR string received on my web is NOT url-encoded as should be.
I verified that encoding is enabled: <param name="encode" value="true"/>
(see full conf file below).

This un-encoded line from the posted xml CDR is one example for what is
causing the xml parsing error:
<sip_full_from>"99252627"
<sip:1234 at 11.11.11.11>;tag=y3Xr3g6HZZtBQ</sip_full_from>.

On other FS I get it encoded with no xml errors:
<sip_full_from>%3Csip%3A1234%40abc.com%3E%3Btag%3DnQGk6NEXS0yYrSeyIYCbrXmge7
80R7J4</sip_full_from>

I've reinstalled all PHP/XML/CURL related modules with no help.
I also tried to post to my other FS web server thinking that the local FS
web is decoding and then passing to the php xml script - still with no help.

Any tip/help/advise will be appreciated.

Regards

Assaf 


This is my xml_cdr.conf.xml file:

<configuration name="xml_cdr.conf" description="XML CDR CURL logger">
  <settings>
    <!-- the url to post to if blank web posting is disabled  -->
    <!-- <param name="url" value="http://localhost/cdr_curl/post.php"/> -->

    <!-- optional: credentials to send to web server -->
    <!--    <param name="cred" value="user:pass"/> -->

    <!-- the total number of retries (not counting the first 'try') to post
to webserver incase of failure -->
    <!-- <param name="retries" value="2"/> -->

    <!-- delay between retries in seconds, default is 5 seconds -->
    <!-- <param name="delay" value="1"/> -->

    <!-- optional: if not present we do not log every record to disk -->
    <!-- either an absolute path, a relative path assuming ${prefix}/logs or
a blank value will default to ${prefix}/logs/xml_cdr -->
    <param name="log-dir" value=""/>

    <!-- optional: if not present we do log the b leg -->
    <!-- true or false if we should create a cdr for the b leg of a call-->
    <param name="log-b-leg" value="false"/>
    
    <!-- optional: if not present, all filenames are the uuid of the call
-->
    <!-- true or false if a leg files are prefixed "a_" -->
    <param name="prefix-a-leg" value="true"/>

    <!-- encode the post data may be 'true' for url encoding, 'false' for no
encoding or 'base64' for base64 encoding -->
    <param name="encode" value="true"/>

    <!-- optional: set to true to disable Expect: 100-continue lighttpd
requires this setting --> 
    <!--<param name="disable-100-continue" value="true"/>--> 
    
    <!-- optional: full path to the error log dir for failed web posts if
not specified its the same as log-dir -->
    <!-- either an absolute path, a relative path assuming ${prefix}/logs or
a blank or omitted value will default to ${prefix}/logs/xml_cdr -->
    <!-- <param name="err-log-dir" value="/tmp"/> -->

    <!-- optional: if enabled this will disable CA root certificate checks
by libcurl -->
    <!-- note: default value is disabled. only enable if you want this! -->
    <!-- <param name="ignore-cacert-check" value="true" /> -->

  </settings>
</configuration> 






Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list