xml_cdr encoding issues
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@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>
https://freeswitch.org/jira/browse/FS-7258 <https://freeswitch.org/jira/browse/FS-7258>
On Mar 11, 2015, at 4:53 AM, Assaf Dahary <adahary@gmail.com> wrote:
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@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>
Michael, I saw that there is a fix/patch for this issue. But how I add/compile it (sorry - not much know HOWTO) ? From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Jerris Sent: Wednesday, March 11, 2015 2:14 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] xml_cdr encoding issues https://freeswitch.org/jira/browse/FS-7258 On Mar 11, 2015, at 4:53 AM, Assaf Dahary <adahary@gmail.com> wrote: 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@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>
participants (2)
-
Assaf Dahary
-
Michael Jerris