castellano | contact
 
    >VoIP Protocols   >Telephones   >QoS   >Codecs   >Forum   >Dictionary   >Future
 
Main Menu
SER (SIP Express Router)
    >Introduction   >SER vs Asterisk   >Linux Installation   >FreeBSD Installation   >Installation + MySQL   >Errors + Solutions    
  VoIP Protocols
  Telephones
  QoS
  Codecs
  SER (SIP Express Router)
  Introduction
  SER vs Asterisk
  Linux Installation
  FreeBSD Installation
  Installation + MySQL
  Errors + solutions
  Asterisk
  Forum
  Dictionary
  Future
     
 

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.




 
   
VoIP Foro©2006