[SR-Users] Setting Kamailio User-Agent dynamically

Daniel-Constantin Mierla miconda at gmail.com
Wed Oct 8 13:34:07 CEST 2014


Perhaps you can get it with adding User-Agent header to $uac_req(hdrs):

$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";

And sent the global parameter:

user_agent_header=""

But then no local generated request has user agent, which probably is ok 
for you.

There are still ways to use event_route[tm:local-request] to set a 
custom user agent header, but would require something like:
- add $us in $uac_req(hdrs) as X-UA header
- in event_route[tm:local-request], remove User-Agent and X-UA headers 
and add again User-Agent taking the value from X-UA

Cheers,
Daniel


On 07/10/14 23:06, Errol Samuels wrote:
> Hi Sammy,
>
> Thanks for your response and the clarification.
>
> What I am actually trying to do is to pass the real User-Agent info 
> for each device as the Registration is fowarded to Freeswitch so using 
> your code as an example instead of hardcoding the custom "User-Agent: 
> My Server SIP Server" which will show up in Freeswitch for ALL users I 
> want to do something like user_agent_header="User-Agent: $ua" ;
>
> Where $ua as you are aware would be the Real User-Agent of the actual 
> user who registration is being forwarded to Freeswitch.
>
> if($sel(contact.expires) != $null)
>                 $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + 
> $sel(contact.expires) + "\r\n";
>         else
>                 $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + 
> $hdr(Expires) + "\r\n";
>         event_route [tm:local-request] { # Handle locally generated 
> requests
>         xlog("L_INFO", "Routing locally generated $rm to <$ru> + 
> Modify the User-Agent Header \n");
>         user_agent_header="User-Agent: $ua" ;
>         }
>
>         uac_req_send();
>         exit;
>
>
> I tried to add that code just before the "uac_req_send()" but I get 
> errors when starting Kamailio,  Is this compatible with Kamailio 4.0.6?
>
>  0(44073) : <core> [cfg.y:3567]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 2-12: syntax error
>  0(44073) : <core> [cfg.y:3567]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 2-12: bad command
>  0(44073) : <core> [cfg.y:3567]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 2-12: bad command
>  0(44073) : <core> [cfg.y:3570]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 14: bad command
>  0(44073) : <core> [cfg.y:3567]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 15-30: bad command
>  0(44073) : <core> [cfg.y:3570]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 31: bad command
>  0(44073) : <core> [cfg.y:3570]: yyerror_at(): parse error in config 
> file /etc/kamailio/kamailio.cfg, line 1034, column 33: bad command
>
> regards,
>
> Errol
>
>
> On Tue, Oct 7, 2014 at 9:28 PM, SamyGo <govoiper at gmail.com 
> <mailto:govoiper at gmail.com>> wrote:
>
>     Hey Errol,
>
>     What I get from Daniel's email is that you only need to add this
>     route in your script and it will trigger itself automatically when
>     "uac_req_send()" function is executed.
>
>     event_route [tm:local-request] { # Handle locally generated requests
>     xlog("L_INFO", "Routing locally generated $rm to <$ru> + Modify
>     the User-Agent Header \n");
>     user_agent_header="User-Agent: My Super SIP Server" ;
>     }
>
>     Reference:
>     http://www.kamailio.org/wiki/cookbooks/4.1.x/core?s[]=event&s[]=route#event_route
>
>     BR,
>     Sammy
>
>
>     On Tue, Oct 7, 2014 at 11:20 AM, Errol Samuels
>     <ewsamuels at gmail.com <mailto:ewsamuels at gmail.com>> wrote:
>
>         Thanks for your input Daniel but pardon my ignorance as I am
>         not 100% clear where I need to add that
>         event_route[tm:local-request].
>
>         Here is the point where the REGISTER is being sent to
>         Freeswitch.  So are you able to provide an example of where I
>         send the real User-Agent of the device to Freeswitch?
>
>         # Forward REGISTER to FreeSwitch
>         route[REGFWD] {
>
>         if(!is_method("REGISTER"))
>                 {
>                         return;
>                 }
>
>                 route(DISPATCH);
>         $uac_req(method)="REGISTER";
>                 $uac_req(ruri)=$du;
>                 $uac_req(furi)=$fn + "<sip:" + $au + "@" + $ar + ">";
>                 $uac_req(turi)=$tn + "<sip:" + $au + "@" + $ar + ">";
>                 $uac_req(hdrs)="Contact: <sip:" + $au + "@"
>                                         + $ar
>                                         + ";fs_path=sip:"
>                                         + $sel(cfg_get.kamailio.bindip)
>                                         + ":" +
>         $sel(cfg_get.kamailio.bindport)
>                                         + ">"
>                                         + "\r\n";
>                 if($sel(contact.expires) != $null)
>                         $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " +
>         $sel(contact.expires) + "\r\n";
>                 else
>                         $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " +
>         $hdr(Expires) + "\r\n";
>                 uac_req_send();
>                 exit;
>         }
>
>         Thanks
>
>         Errol
>
>
>
>         On Tue, Oct 7, 2014 at 9:07 AM, Daniel-Constantin Mierla
>         <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>             You have to use event_route[tm:local-request] if you use
>             uac module to send out new REGISTER.
>
>             Cheers,
>             Daniel
>
>
>             On 03/10/14 18:32, Errol Samuels wrote:
>>             I also tried your last suggestion at the point when the
>>             registeris being forwarded to FS but it had no effect
>>
>>             # Forward REGISTER to Freeswitch
>>             route[REGFWD] {
>>             if(!is_method("REGISTER"))
>>                     {
>>             return;
>>                     }
>>
>>                     #if ( is_present_hf("User-Agent")) {
>>             *remove_hf("User-Agent");
>>             append_hf("User-Agent: $ua\r\n");*
>>                     #}
>>
>>             BR
>>
>>             Errol
>>
>>
>>             On Fri, Oct 3, 2014 at 5:08 PM, Rainer Piper
>>             <rainer.piper at soho-piper.de
>>             <mailto:rainer.piper at soho-piper.de>> wrote:
>>
>>                 Am 03.10.2014 um 17:52 schrieb Errol Samuels:
>>>                 Hi Rainer,
>>>
>>>                 Yes I did try user_agent_header = "User-Agent: $ua";
>>>                 but it just passes "$ua" to Freeswitch rather than
>>>                 the value of $ua.
>>>
>>>                 regards,
>>>
>>>                 Errol
>>>
>>>
>>>
>>>                 On Fri, Oct 3, 2014 at 4:32 PM, Rainer Piper
>>>                 <rainer.piper at soho-piper.de
>>>                 <mailto:rainer.piper at soho-piper.de>> wrote:
>>>
>>>                     Am 03.10.2014 um 17:04 schrieb Errol Samuels:
>>>>                     Hello All,
>>>>
>>>>                     I am using Kamailio in front of Freeswitch and
>>>>                     Kamailio is handling the registrations then
>>>>                     forwarding to Freeswitch and everything is
>>>>                     working for the most part.
>>>>
>>>>                     However, there is niggling pain in the neck
>>>>                     issue where the user's User-Agent shows in
>>>>                     Freeswitch as kamailio (4.0.6 (x86_64/linux))
>>>>                     instead of the user's Real User-Agent I am
>>>>                     trying to get Kamailio to pass the real
>>>>                     User-Agent of the user without success.
>>>>
>>>>                     I am able to set a static User-Agent by doing
>>>>                     this in the global section.
>>>>
>>>>                     *user_agent_header = "User-Agent: We love beer";*
>>>>
>>>>                     However, I am unable to set it dynamically for
>>>>                     example:
>>>>
>>>>                     *user_agent_header = "User-Agent: " + $ua;
>>>>                     *
>>>                     *have you tried ...
>>>
>>>                     **user_agent_header = "User-Agent: $ua";
>>>
>>>                     ?
>>>                     *
>>>
>>                 *Have you tried to remove the original hf
>>                 (User-Agent) and set the new one like:
>>
>>                 remove_hf("User-Agent");
>>                 append_hf("User-Agent: $ua\r\n");
>>                 *
>>                 *
>>                 ?
>>
>>                 *
>>>
>>>                     **
>>>>                     *
>>>>                     *
>>>>                     With is one Kamailio doesn't even start so my
>>>>                     syntax is probably wrong.
>>>>
>>>>                     I also tried playing around with the textops
>>>>                     module so I have ran out of ideas
>>>>
>>>>                     Any ideas?*
>>>>
>>>>                     *
>>>>                     Thanks in advance.*
>>>>
>>>>                     *
>>>>                     regards,
>>>>
>>>>                     Errol
>>>>                     *
>>>>                     *
>>>>                     *
>>>>
>>>>                     *
>>>>                     *
>>>>
>>>>
>>>>                     *
>>>>
>>>>
>>>>
>>>>
>>>>                     _______________________________________________
>>>>                     SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>>                     sr-users at lists.sip-router.org  <mailto:sr-users at lists.sip-router.org>
>>>>                     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>>                     -- 
>>>                     *Rainer Piper*
>>>                     Integration engineer
>>>                     Koeslinstr. 56
>>>                     53123 BONN
>>>                     GERMANY
>>>                     Phone: +49 228 97167161
>>>                     <tel:%2B49%20228%2097167161>
>>>                     P2P: sip:rainer at sip.soho-piper.de:5072 (pjsip-test)
>>>                     XMPP: rainer at xmpp.soho-piper.de
>>>                     <mailto:rainer at xmpp.soho-piper.de>
>>>
>>>                     _______________________________________________
>>>                     SIP Express Router (SER) and Kamailio (OpenSER)
>>>                     - sr-users mailing list
>>>                     sr-users at lists.sip-router.org
>>>                     <mailto:sr-users at lists.sip-router.org>
>>>                     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>>
>>>
>>>                 _______________________________________________
>>>                 SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>                 sr-users at lists.sip-router.org  <mailto:sr-users at lists.sip-router.org>
>>>                 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>>                 -- 
>>                 *Rainer Piper*
>>                 Integration engineer
>>                 Koeslinstr. 56
>>                 53123 BONN
>>                 GERMANY
>>                 Phone: +49 228 97167161 <tel:%2B49%20228%2097167161>
>>                 P2P: sip:rainer at sip.soho-piper.de:5072 (pjsip-test)
>>                 XMPP: rainer at xmpp.soho-piper.de
>>                 <mailto:rainer at xmpp.soho-piper.de>
>>
>>                 _______________________________________________
>>                 SIP Express Router (SER) and Kamailio (OpenSER) -
>>                 sr-users mailing list
>>                 sr-users at lists.sip-router.org
>>                 <mailto:sr-users at lists.sip-router.org>
>>                 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>>
>>
>>             _______________________________________________
>>             SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>             sr-users at lists.sip-router.org  <mailto:sr-users at lists.sip-router.org>
>>             http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>             -- 
>             Daniel-Constantin Mierla
>             http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>
>
>             _______________________________________________
>             SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>             mailing list
>             sr-users at lists.sip-router.org
>             <mailto:sr-users at lists.sip-router.org>
>             http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>         _______________________________________________
>         SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>         mailing list
>         sr-users at lists.sip-router.org
>         <mailto:sr-users at lists.sip-router.org>
>         http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>     _______________________________________________
>     SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>     list
>     sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20141008/115e9be7/attachment.html>


More information about the sr-users mailing list