Greetings All.
I have managed to set up OpenSER with LDAP authentication. Now I would like it to create memory cached aliases each time a user registers. I do not wan to use any persistent storage because I have it already it is my LDAP directory. However, I would like OpenSER to cache those aliases as doing ldap lookup for every message does not look too apealing to me.
Let me explain how I see it:
if (is_method("REGISTER")) { if(is_present_hf("Proxy-Authorization")) { if (!ldap_search("ldap://sipaccounts/ou=dept,o=TELMARK,c=PL?uid,mail,uidNumber,userPassword?one?(uid=$f)) { #error handling }
ldap_result("uid/$avp(s:username)"); ldap_result("userPassword/$avp(s:password)"); ldap_result("mail/$avp(s:longalias)"); ldap_result("uidNumber/$avp(s:numalias)");
if(pv_proxy_authorize("telmark")) { proxy_challenge("telmark", "1"); exit; } } else { proxy_challenge("telmark", "1"); exit; }
if(!save("location")) sl_reply_error();
# And here the big thing! }
What to do to make
save("aliases");
(called twice) save uidNumber and mail (without @domain, these are transformations, I know) as aliases in usrloc?
PS. Please cc answers I am not a subscriber.
Hello,
On 03/26/08 22:19, Lukasz Stelmach wrote:
Greetings All.
I have managed to set up OpenSER with LDAP authentication. Now I would like it to create memory cached aliases each time a user registers. I do not wan to use any persistent storage because I have it already it is my LDAP directory. However, I would like OpenSER to cache those aliases as doing ldap lookup for every message does not look too apealing to me.
Let me explain how I see it:
if (is_method("REGISTER")) { if(is_present_hf("Proxy-Authorization")) { if (!ldap_search("ldap://sipaccounts/ou=dept,o=TELMARK,c=PL?uid,mail,uidNumber,userPassword?one?(uid=$f)) { #error handling }
ldap_result("uid/$avp(s:username)"); ldap_result("userPassword/$avp(s:password)"); ldap_result("mail/$avp(s:longalias)"); ldap_result("uidNumber/$avp(s:numalias)"); if(pv_proxy_authorize("telmark")) { proxy_challenge("telmark", "1"); exit; }
} else { proxy_challenge("telmark", "1"); exit; }
if(!save("location")) sl_reply_error();
# And here the big thing! }
What to do to make
save("aliases");
(called twice) save uidNumber and mail (without @domain, these are transformations, I know) as aliases in usrloc?
save() function is exported by registrar module and it saves the contact address from REGISTER message along with several other attributes to usrloc, in a table mentioned by the parameter. There is no clean solution for what you want with registrar/usrloc modules now. AFAIK ldap is very fast for search operations, but, of course, there could be other delays from the network.
However, you can try a hack: - after save() replace the contact address and other headers (e.g., To) with what you need using text/header operations exported by textops module - send the REGISTER to server itself - don't authenticate REGISTERs coming via loopback (from server iself) - use save_noreply() to save to aliases table
Should work.
Cheers, Daniel
PS. Please cc answers I am not a subscriber.