| SER
(Sip Express Router) installation with MYSQL
Now we are going to install SER (SIP express Router) using
MYSQL. It is supposed that MySQL is correctly installed in
the machine. In addition we have followed the steps of the
basic installation of the previous chapters and we have SER
installed with the basic configuration.
Installation:
1) Execute ser_mysql.sh script
VERY IMPORTANT: we must be root to execute the script. A simple
sudo is not valid. we must be log as root. In other way an
error like "/usr/local/sbin/ser_mysql.sh : line
160: gen_ha1 command not found HA1 calculation failed."
will be displayed.
# /usr/local/sbin/ser_mysql.sh create
Next fill the following gaps:
MySQL Password for root: root password of MySQL
Domain for the default user 'admin' : localhost
(or the one we have chosen)
Enter password: blank and Enter. It will
take the default password.
2 ) Configure ser.cfg file
ser.cfg is the configuration file
of SER server. We are going to speak about it in the following
chapters.
this file is placed in /usr/local/etc/ser/
In order to use MySQl we have to modify the ser.cfg file in
the following way. We must uncomment some lines. Pay attention
at the lines in bold.
#
# $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)
/* 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/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode",
0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode",
2)
# -- 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)
# SQL settings
#the deafult database name is "ser"
. dbhost can be "localhost"
modparam("usrloc", "db_url","mysql://mysqluser:mysqlpassword@dbhost/dbname")
modparam("auth_db", "db_url","mysql://mysqluser:mysqlpassword@dbhost/dbname")
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 > max_len ) {
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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
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("localhost", "subscriber")) {
www_challenge("localhost", "0");
break;
};
save("location");
break;
};
lookup("aliases");
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
3) Some comments of the lines added
- The default port of SER server is 5060 (same as
Asterisk). We can modify it at
#port=5061
- these lines added
modparam("usrloc", "db_url","mysql://user:password@localhost/ser")
modparam("auth_db", "db_url","mysql://user:password@localhost/ser")
are for versions up to 0.9.3. For lower versions:
modparam("usrloc", "db_url","sql://user:password@localhost/ser")
modparam("auth_db", "db_url","sql://user:password@localhost/ser")
4) Restart SER server
# /usr/local/sbin/serctl restart
Remember to export the SIP_DOMAIN variable if you
have restarted the machine
# export SIP_DOMAIN="localhost"
5) Configure a softphone to verify
In this case it is neccessary the user and password
The default name is "admin" and the password "heslo"
6) Add a new user
# /usr/local/sbin/serctl add <name> <password>
<email>
If a password is asked it must be "heslo"
and if an error like "/usr/local/sbin/ser_mysql.sh :
line 160: gen_ha1 command not found HA1 calculation failed."
appears remember that it is necessary to log as root
(not sudo)
You can verify that the new user can register in
your ser server with your softphone.
7) Add a line to the startup file of mysql
This is advisory in order the SER server can manage
multiple connections to the database. You have to add the
following line to the file my.cnf of MySQL in the [mysqld]
part
max_connections = 500
* The SER (SIP Express Router) is just working with MySQL.
This is a bit difficult part. If you have had problems you
can try to solve them in the chapter
about error + solutions of the SER server.
|