[Serusers] Associate a # with a SIP client

Nick Hoffman nick.hoffman at altcall.com
Mon Feb 13 10:00:44 CET 2006


> Nick Hoffman wrote:
> > Hey guys. How can you configure SER to associate a particular phone
> > number, say 12341234, with a particular SIP client/user agent?
> >
> > The aim is to be able to call them with either john at foo.bar or
> > 12341234, but ensure that SER associates 12341234 with john at foo.bar
> > rather than john at foo.bar telling SER "I can be reached at 12341234".
> >
> > Cheers!
> > -- Nick
> > e: nick.hoffman at altcall.com
> > p: +61 7 5591 3588
> > f: +61 7 5591 6588
> >
> > If you receive this email by mistake, please notify us and do not make
> > any use of the email.  We do not waive any privilege, confidentiality
> > or copyright associated with it.


On Thu February 9 2006 19:59, Klaus Darilion <klaus.mailinglists at pernau.at> 
wrote:
> lookup("aliases") and the aliases table will translate from the alias to
> the real name (address or record, canonical URI, ...).
>
>
>    lookup("aliases");
>    if (!lookup("location")) {
>      sl_send_reply("404","Not found");
>      break;
>    }
>
> regards
> klaus


Hi Klaus. I added the lines you mentioned above into ser.cfg and restarted 
SER, but dialing 12341234 returned a 404 Not Found to my softphone. I 
wasn't sure where those lines were supposed to go, so I tried them in a 
few places, all with the same result.

At the moment I have a very basic ser.cfg which I have attached to this 
email. When you have a minute, if you would't mind taking a look through 
it and letting me know what else needs to be done to get aliases working, 
I'd greatly appreciate it.

Cheers!
-- Nick
e: nick.hoffman at altcall.com
p: +61 7 5591 3588
f: +61 7 5591 6588

If you receive this email by mistake, please notify us and do not make any 
use of the email.  We do not waive any privilege, confidentiality or 
copyright associated with it.
-------------- next part --------------
#
# $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $
#
# simple quick-start config script
#

# ----------- global configuration parameters ------------------------

#debug=3         # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no	# (cmd line: -E)

listen=10.0.100.12

/* Uncomment these lines to enter debugging mode 
fork=no
log_stderror=yes
*/

check_via=no	# (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
port=5060
#children=4
fifo="/tmp/ser_fifo"

# ------------------ module loading ----------------------------------

# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/domain.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/textops.so"

# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/lib/ser/modules/auth.so"
#loadmodule "/usr/lib/ser/modules/auth_db.so"

# ----------------- setting module-specific parameters ---------------

# -- usrloc params --

modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url", "mysql://ser:hello@localhost/ser")
modparam("usrloc", "use_domain", 1)

# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config), 
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")

# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)

# -- domain params --
modparam("domain", "db_url", "mysql://ser:hello@localhost/ser")
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")

# -- registrar params --
modparam("registrar", "use_domain", 1)

# -------------------------  request routing logic -------------------

# main routing logic

route{

	# initial sanity checks -- messages with
	# max_forwards==0, or excessively long requests
	if (!mf_process_maxfwd_header("10")) {
		sl_send_reply("483","Too Many Hops");
		break;
	};
	if (msg:len >=  2048 ) {
		sl_send_reply("513", "Message too big");
		break;
	};
	

	# we record-route all messages -- to make sure that
	# subsequent messages will go through our proxy; that's
	# particularly good if upstream and downstream entities
	# use different transport protocol
	if (!method=="REGISTER") record_route();	

	# subsequent messages withing a dialog should take the
	# path determined by record-routing
	if (loose_route()) {
		# mark routing logic in request
		append_hf("P-hint: rr-enforced\r\n"); 
		route(1);
		break;
	};

	if (!uri==myself) {
		# mark routing logic in request
		append_hf("P-hint: outbound\r\n"); 
		route(1);
		break;
	};

	lookup("aliases");
	if (!lookup("location")) {
		sl_send_reply("404","Not found");
		break;
		}


	# if the request is for other domain use UsrLoc
	# (in case, it does not work, use the following command
	# with proper names and addresses in it)
	if (uri==myself) {

		if (method=="REGISTER") {

# Uncomment this if you want to use digest authentication
#			if (!www_authorize("iptel.org", "subscriber")) {
#				www_challenge("iptel.org", "0");
#				break;
#			};

			save("location");
			break;
		};

		lookup("aliases");
		if (!uri==myself) {
			append_hf("P-hint: outbound alias\r\n"); 
			route(1);
			break;
		};

		# native SIP destinations are handled using our USRLOC DB
		if (!lookup("location")) {
			sl_send_reply("404", "Not Found");
			break;
		};
	};
	append_hf("P-hint: usrloc applied\r\n"); 
	route(1);
}

route[1] 
{
	# send it out now; use stateful forwarding as it works reliably
	# even for UDP2TCP
	if (!t_relay()) {
		sl_reply_error();
	};
}



More information about the sr-users mailing list