Or perhaps I understand a little bit better now. I think the following script passage will work better. /Lasse P.S. To other beginners at SIP: Several clients can't handle the qop parameter correctly so it is safer to change the "1" to "0" in the challenges.
# REQUESTS DIRECTED TO MY DOMAIN if (uri=~"[@:]mydomain.com") {
# Challenge registrations if (method=="REGISTER") { if (!www_authorize("mydomain.com", "subscriber")) { www_challenge("mydomain.com", "1"); break; }; save("location"); break; };
# Challenge INVITE request where the sender has my domain in From if (method=="INVITE") { if (search("(f|From).*mydomain.com")) { if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "1"); break; }; }; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; };
# REQUESTS DIRECTED TO OTHER DOMAINS } else {
# Challenge any INVITE request where the sender has my domain in From if (method=="INVITE") { if (search("(f|From).*mydomain.com")) { if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "1"); break; };
# Drop INVITE requests where the sender does not have my domain in From } else { sl_send_reply("403", "Forbidden"); break; }; }; }; # forward to current uri now if (!t_relay()) { sl_reply_error(); };
On Friday 07 March 2003 00.49, Lasse Jansson wrote:
OK, I see what you mean.
<snip>
I see two limitations:
- if you only challenge INVITEs to outside domain, people out of your domain can call people in your domain and claim shamelessly your domain name in From, which is then sort of rubberstamped by the proxy; so I
think you can combine challenging based on From along with "anti-spam" policy "drop invites which have my domain neither in From nor in r-uri"
- if you apply such policies to other requests than BYE, you will run into
troubles, better be permissive about non-INVITEs. See
http://www.ietf.org/mail-archive/working-groups/sipping/current/msg04002. ht ml
-Jiri
At 10:10 PM 3/5/2003, Lasse Jansson wrote:
Thanks,
One last question: I guess that if I want my server to offer <forwarding of requests to other domains> only to authorized users in my domain I should restrict the last part more, as follows:
# For requests to other domains if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "1"); break; };
(i.e. I can skip the (search("(f|From).*mydomain.com")) condition in this case)
Lasse