Discussion:
[SR-Users] Setting Kamailio User-Agent dynamically
Errol Samuels
2014-10-03 15:04:55 UTC
Permalink
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;*

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
Rainer Piper
2014-10-03 15:32:30 UTC
Permalink
Post by 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";*
*user_agent_header = "User-Agent: " + $ua;
*
*have you tried ...

**user_agent_header = "User-Agent: $ua";

?
*
Post by Errol Samuels
*
*
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
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161
P2P: sip:rainer-fwazL+***@public.gmane.org:5072 (pjsip-test)
XMPP: rainer-gm1cXc+Wa7vhPBOlVbd/***@public.gmane.org
Errol Samuels
2014-10-03 15:52:16 UTC
Permalink
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
Post by 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";*
*user_agent_header = "User-Agent: " + $ua; *
*have you tried ... *
*user_agent_header = "User-Agent: $ua"; ? *
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Rainer Piper
2014-10-03 16:08:40 UTC
Permalink
Post by 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
Post by 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";*
*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");
**
?

*
Post by Errol Samuels
**
Post by Errol Samuels
*
*
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
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>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161
P2P: sip:rainer-fwazL+***@public.gmane.org:5072 (pjsip-test)
XMPP: rainer-gm1cXc+Wa7vhPBOlVbd/***@public.gmane.org
Errol Samuels
2014-10-03 16:32:30 UTC
Permalink
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
Post by 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
Post by 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";*
*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"); *
* ? *
Post by Errol Samuels
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Daniel-Constantin Mierla
2014-10-07 08:07:16 UTC
Permalink
You have to use event_route[tm:local-request] if you use uac module to
send out new REGISTER.

Cheers,
Daniel
Post by Errol Samuels
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
Post by 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
Post by 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";*
*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
remove_hf("User-Agent");
append_hf("User-Agent: $ua\r\n");
*
*
?
*
Post by Errol Samuels
**
Post by Errol Samuels
*
*
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
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>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
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>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Errol Samuels
2014-10-07 16:20:12 UTC
Permalink
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
Post by Daniel-Constantin Mierla
You have to use event_route[tm:local-request] if you use uac module to
send out new REGISTER.
Cheers,
Daniel
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
Post by 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
Post by 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";*
*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"); *
* ? *
Post by Errol Samuels
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
SamyGo
2014-10-07 20:28:59 UTC
Permalink
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
Post by Errol Samuels
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;
+ $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 <
Post by Daniel-Constantin Mierla
You have to use event_route[tm:local-request] if you use uac module to
send out new REGISTER.
Cheers,
Daniel
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
Post by 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
Post by 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";*
*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"); *
* ? *
Post by Errol Samuels
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Errol Samuels
2014-10-07 21:06:16 UTC
Permalink
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
Post by SamyGo
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" ;
}
http://www.kamailio.org/wiki/cookbooks/4.1.x/core?s[]=event&s[]=route#event_route
BR,
Sammy
Post by Errol Samuels
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;
+ $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 <
Post by Daniel-Constantin Mierla
You have to use event_route[tm:local-request] if you use uac module to
send out new REGISTER.
Cheers,
Daniel
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
Post by 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 <
Post by 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";*
*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"); *
* ? *
Post by Errol Samuels
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
SamyGo
2014-10-07 21:35:50 UTC
Permalink
No no, not like that, its a separate route and needs to be placed outside
the other route[] { ... }
Post by Errol Samuels
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
Post by SamyGo
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" ;
}
http://www.kamailio.org/wiki/cookbooks/4.1.x/core?s[]=event&s[]=route#event_route
BR,
Sammy
Post by Errol Samuels
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;
+ $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 <
Post by Daniel-Constantin Mierla
You have to use event_route[tm:local-request] if you use uac module to
send out new REGISTER.
Cheers,
Daniel
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 <
Post by 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 <
Post by 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";*
*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"); *
* ? *
Post by Errol Samuels
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
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
*Rainer Piper*
Integration engineer
Koeslinstr. 56
53123 BONN
GERMANY
Phone: +49 228 97167161 <%2B49%20228%2097167161>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Daniel-Constantin Mierla
2014-10-08 11:34:07 UTC
Permalink
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
Post by Errol Samuels
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
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
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" ;
}
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
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;
+ $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
You have to use event_route[tm:local-request] if you use
uac module to send out new REGISTER.
Cheers,
Daniel
Post by Errol Samuels
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
Post by 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
Post by 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
*user_agent_header = "User-Agent: " + $ua; *
*have you tried ...
**user_agent_header = "User-Agent: $ua";
?
*
*Have you tried to remove the original hf
remove_hf("User-Agent");
append_hf("User-Agent: $ua\r\n");
*
*
?
*
Post by Errol Samuels
**
Post by Errol Samuels
*
*
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
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>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER)
- sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
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>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) -
sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
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
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Errol Samuels
2014-10-08 17:25:01 UTC
Permalink
I followed Daniel's instructions and made some progress but not 100% there
yet.

-------[Global section]----------

user_agent_header=""

-------[Main Routing Logic]-------

# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.

# 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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif

------------

Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.

U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
To: <sip:1001-aCOfPi+F4h3/***@public.gmane.org>.
From: <sip:1001-aCOfPi+F4h3/***@public.gmane.org>;tag=6f72f76f3402bf7cf11f6917529ca761-2ceb.
CSeq: 10 REGISTER.
Call-ID: 4570a277563cdffc-61869-tjnByB6xtXpGkm7sEN/***@public.gmane.org
Max-Forwards: 70.
Content-Length: 0.
.
Contact: <sip:1001-aCOfPi+F4h3/***@public.gmane.org;fs_path=sip:184.xx.xx.208:5060>.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------

Got some extra dots in there but not sure why they are there and how they
got there.
Any ideas? Anything I missed?

BR

Errol
Post by Daniel-Constantin Mierla
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
Errol Samuels
2014-10-09 10:08:50 UTC
Permalink
Just found something interesting.

I just commented out the "user_agent_header" in the Global section and
restarted kamailio and now the REGISTER message seems to be completely
intact but now we have two occurrences of the User-Agent. I tried doing
the remove_hf("User-Agent) but it doesn't seem to have any effect.

U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.xx.xx.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.154.215.238;branch=z9hG4bK323.a0452631.0.
To: <sip:205-aCOfPi+F4h3/***@public.gmane.org>.
From: <sip:205-aCOfPi+F4h3/***@public.gmane.org>;tag=6f72f76f3402bf7cf11f6917529ca761-b489.
CSeq: 10 REGISTER.
Call-ID: 6ac0486a044f66e5-62858-tjnByB6xtXpGkm7sEN/***@public.gmane.org
Max-Forwards: 70.
Content-Length: 0.
*User-Agent: kamailio (4.0.6 (x86_64/linux)).*
Contact: <sip:205-aCOfPi+F4h3/***@public.gmane.org;fs_path=sip:184.xx.xx.208:5060>.
*User-Agent: Yealink SIP-T46G 28.72.0.26.*
Expires: 120.
.

Any ideas?

BR

Errol
Post by Errol Samuels
I followed Daniel's instructions and made some progress but not 100% there
yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
Post by Errol Samuels
;tag=6f72f76f3402bf7cf11f6917529ca761-2ceb.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and how they
got there.
Any ideas? Anything I missed?
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla <
Post by Errol Samuels
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
Daniel-Constantin Mierla
2014-10-09 11:10:31 UTC
Permalink
I just commented on the other email you send, try with something like:

user_agent_header="X-Proxy: xyz"

Cheers,
Daniel
Post by Errol Samuels
Just found something interesting.
I just commented out the "user_agent_header" in the Global section and
restarted kamailio and now the REGISTER message seems to be completely
intact but now we have two occurrences of the User-Agent. I tried
doing the remove_hf("User-Agent) but it doesn't seem to have any effect.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.xx.xx.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.154.215.238;branch=z9hG4bK323.a0452631.0.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
*User-Agent: kamailio (4.0.6 (x86_64/linux)).*
*User-Agent: Yealink SIP-T46G 28.72.0.26.*
Expires: 120.
.
Any ideas?
BR
Errol
I followed Daniel's instructions and made some progress but not
100% there yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and
how they got there.
Any ideas? Anything I missed?
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Daniel-Constantin Mierla
2014-10-09 11:09:25 UTC
Permalink
Post by Errol Samuels
I followed Daniel's instructions and made some progress but not 100%
there yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and how
they got there.
Any ideas? Anything I missed?
Apparently by setting an empty user-agent header value in kamailio
config file results in an empty line in headers, which means end of
headers. So it kind of breaks the headers -- I will fix that in kamailio.

A solution for now will be to use:

user_agent_header = "X-Proxy: abc"

Or, in other words, set the value of the parameter to something that
doesn't include User-Agent: as header name.

Cheers,
Daniel
Post by Errol Samuels
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla
Perhaps you can get it with adding User-Agent header to
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Errol Samuels
2014-10-09 11:19:57 UTC
Permalink
HI Daniel,

Thanks for that.

In my case I would need to use something like:

user_agent_header = "X-Proxy: $ua"

since we don't what to hardcode a specific value which would affect every
device that is registering but rather $ua which would set the real UA of
the device that is registering at that time.

Does that make sense?

regards,

Errol
Post by Errol Samuels
I followed Daniel's instructions and made some progress but not 100%
there yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
Post by Errol Samuels
;tag=6f72f76f3402bf7cf11f6917529ca761-2ceb.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and how they
got there.
Any ideas? Anything I missed?
Apparently by setting an empty user-agent header value in kamailio config
file results in an empty line in headers, which means end of headers. So it
kind of breaks the headers -- I will fix that in kamailio.
user_agent_header = "X-Proxy: abc"
Or, in other words, set the value of the parameter to something that
doesn't include User-Agent: as header name.
Cheers,
Daniel
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla <
Post by Errol Samuels
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Daniel-Constantin Mierla
2014-10-09 11:52:15 UTC
Permalink
Hello,
Post by Errol Samuels
HI Daniel,
Thanks for that.
user_agent_header = "X-Proxy: $ua"
The only purpose of the above line is that Kamailio doesn't add an
User-Agent header by itself, but this X-Proxy (which you can change as
well).

Then you still add User-Agent in $uac_req(hdrs), but you don't end up
with two User-Agent headers anymore.

Hope is more clear now the purpose of X-Proxy header.

Cheers,
Daniel
Post by Errol Samuels
since we don't what to hardcode a specific value which would affect
every device that is registering but rather $ua which would set the
real UA of the device that is registering at that time.
Does that make sense?
regards,
Errol
On Thu, Oct 9, 2014 at 12:09 PM, Daniel-Constantin Mierla
Post by Errol Samuels
I followed Daniel's instructions and made some progress but not
100% there yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but in
Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and
how they got there.
Any ideas? Anything I missed?
Apparently by setting an empty user-agent header value in kamailio
config file results in an empty line in headers, which means end
of headers. So it kind of breaks the headers -- I will fix that in
kamailio.
user_agent_header = "X-Proxy: abc"
Or, in other words, set the value of the parameter to something
that doesn't include User-Agent: as header name.
Cheers,
Daniel
Post by Errol Samuels
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Daniel-Constantin Mierla
2014-10-09 20:38:50 UTC
Permalink
Btw, there is a global parameter to disable server signatures:

- http://www.kamailio.org/wiki/cookbooks/devel/core#server_signature

According to the code, it affect USER-Agent when generating a request
and Server header for replies.

Turn it of and can get rid of the workaround with custom header name.

Cheers,
Daniel
Post by Daniel-Constantin Mierla
Hello,
Post by Errol Samuels
HI Daniel,
Thanks for that.
user_agent_header = "X-Proxy: $ua"
The only purpose of the above line is that Kamailio doesn't add an
User-Agent header by itself, but this X-Proxy (which you can change as
well).
Then you still add User-Agent in $uac_req(hdrs), but you don't end up
with two User-Agent headers anymore.
Hope is more clear now the purpose of X-Proxy header.
Cheers,
Daniel
Post by Errol Samuels
since we don't what to hardcode a specific value which would affect
every device that is registering but rather $ua which would set the
real UA of the device that is registering at that time.
Does that make sense?
regards,
Errol
On Thu, Oct 9, 2014 at 12:09 PM, Daniel-Constantin Mierla
Post by Errol Samuels
I followed Daniel's instructions and made some progress but not
100% there yet.
-------[Global section]----------
user_agent_header=""
-------[Main Routing Logic]-------
# handle registrations
if (is_method("REGISTER"))
{
$avp(new_user_agent) = $ua;
}
route(REGISTRAR);
.
.
# Forward REGISTER to Freeswitch
route[REGFWD] {
if(!is_method("REGISTER"))
{
return;
}
route(DISPATCH);
$uac_req(method)="REGISTER";
$uac_req(ruri)=$du;
+ $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(hdrs)= $uac_req(hdrs) + "User-Agent: " +
$avp(new_user_agent) + "\r\n";
uac_req_send();
exit;
}
#!endif
------------
Now the correct User-Agent appears in the REGISTER message but
in Freeswitch it shows as unknown.
U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
REGISTER sip:184.x.x.198:6060 SIP/2.0.
Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
CSeq: 10 REGISTER.
Max-Forwards: 70.
Content-Length: 0.
.
Expires: 120.
User-Agent: Yealink SIP-T46G 28.72.0.26.
.
----------------
Got some extra dots in there but not sure why they are there and
how they got there.
Any ideas? Anything I missed?
Apparently by setting an empty user-agent header value in
kamailio config file results in an empty line in headers, which
means end of headers. So it kind of breaks the headers -- I will
fix that in kamailio.
user_agent_header = "X-Proxy: abc"
Or, in other words, set the value of the parameter to something
that doesn't include User-Agent: as header name.
Cheers,
Daniel
Post by Errol Samuels
BR
Errol
On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla
$uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";
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
- 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
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda -http://www.linkedin.com/in/miconda
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Loading...