The example I gave works for me with openser 1.3.0 and I have not tried it with other versions.
In the example the substring contained within the ( ) like (Contact:.+@) is supposed to be preserved by /\1whatever/ and the remainder of the left side should be discarded.
It's too bad that openser is designed primarily for service providers With a few tweaks it would be easier for SIP users to set up. Like I mentioned earlier there is an old patched version of nathelper that did the contact mangling quite well. And the typical small user has to deal with dynamic IP's as well. I think the IP's of eth0 or whatever should be made available to the routing script like a pseudo var. Another nice thing would be a well thought example script that would serve the needs of a home or small business phone system. It's time to get off the soap box.
I am curious, how do you go about setting $var(my_ip)?
On Thursday 10 January 2008, Peter P GMX wrote:
I have a similar problem, but this regexp solution caused a strange behaviour
The original Contact Address, which shall replaced is: sip:49xxxxxx1200@10.10.1.51:5060 with $var(my_ip)=33.222.111.0 (Example)
subst('/(Contact:.+@)[0-9.]+.*>/\1$var(my_ip)>/'); leads to sip:49xxxxxx1200@10.10.1.51:506049xxxxxx1200@33.222.111.0 So the secod address is simply added.
I tried another way: replace_all("sip:49xxxxxx1200@10.10.1.51>", "sip:49xxxxxx1200@33.222.111.0>"); leads to Contact: sip:49xxxxxx1200@33.222.111.0sip:49xxxxxx1200@10.10.1.51:5060
Best regards Peter
Robert Dyck schrieb:
I assume you are referring to a SIP message and not its IP wrapper. And I also assume you are using fix_nated_contact() from nathelper. This function is working as it was designed. I quote from the documentation "Rewrites Contact HF to contain request's source address:port".
I believe nathelper was built to aid service providers who might receive SIP messages with unroutable contacts.
In the past I have used a patched version of nathlper that let you specify the address you wanted in the Contact. I did not write the patch and I am not a programmer so I did not want to build a new patch for each new version of openser. I finally settled for a textops equivalent. $var(my_ip) is set elsewhere in the script.
subst('/(Contact:.+@)[0-9.]+.*>/\1$var(my_ip)>/');
On Friday 28 December 2007, Alex Balashov wrote:
Greetings,
I have a strange problem using OpenSER 1.3.x with nathelper.
Two ethernet interfaces:
eth0 = 192.168.0.0/24 eth1 = outside.ip/29
For some reason, no matter what I do to mangle the requests with nathelper's functions, the packet is *always* sent out of eth1 with the *source address* of the machine's eth0. Obviously, the response from the far-end SIP peer never gets back.
The packet does physically go over eth1, I know that much from packet captures. I don't even see how this is possible; when OpenSER issues a packet, shouldn't it originate according to the machine's routing table, take the most specific route, and consequently, adopt the right source address?
What gives?
I have OpenSER 'listening' on both interfaces, and have tried both on and off with this setting.
Thanks,
-- Alex Balashov Evariste Systems Web : http://www.evaristesys.com/ Tel : +1-678-954-0670 Direct : +1-678-954-0671
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users