Žilinská univerzita > Fakulta riadenia a informatiky > Katedra informačných sietí

OpenSIPs installation on Debian

Installation of openSIPs on Debian(sqeeze) - 32bit:

Edit sources.list to use new repository: 

    joe /etc/apt/sources.list
    deb http://www.opensips.org/apt/ lenny main

#Following 2 lines are not needed in lenny:
    deb http://ftp.sk.debian.org/debian/ lenny main  
    deb-src http://ftp.sk.debian.org/debian/ lenny main

Update:   

    apt-get update
    apt-get upgrade

Download:

    apt-get install gcc bison flex make openssl libmysqlclient-dev 
        libradiusclient-ng2 libradiusclient-ng-dev mysql-server libxmlrpc-c3-dev

Install openSIPs and modules:

    apt-get install opensips opensips-mysql-module opensips-postgres-module opensips-unixodbc-module 
                    opensips-jabber-module opensips-cpl-module opensips-radius-modules opensips-presence-modules 
                    opensips-xmlrpc-module opensips-perl-modules opensips-snmpstats-module opensips-xmpp-module 
                    opensips-carrierroute-module opensips-berkeley-module opensips-ldap-modules opensips-geoip-module 
                    opensips-regex-module opensips-identity-module opensips-b2bua-module opensips-dbhttp-module opensips-console

 

Now do changes in following files:

     joe /etc/opensips/opensips.cfg
        alias=a.local  #{"your domain"}

     joe /etc/opensips/opensipsctlrc
        #uncomment and set domain
        SIP_DOMAIN=a.local 

Run OpenSIPs:

     joe /etc/default/opensips
        RUN_OPENSIPS=yes

 

Now you can make call with any user because the authentication is not working yet.
 

Let's set up authentication with mysql:

Uncomment following lines:

   joe /etc/opensips/opensipsctlrc
      SIP_DOMAIN=a.local #your domain
        DBENGINE=MYSQL
        DBHOST=localhost
        DBNAME=opensips
        DBRWUSER=opensips
        DBRWPW="opensipsrw"
        DBROUSER=opensipsro
        DBROPW=opensipsro
        DBROOTUSER="root"
        USERCOL="username"
        INSTALL_EXTRA_TABLES=ask
        INSTALL_PRESENCE_TABLES=ask
       CTLENGINE="FIFO"
        OSIPS_FIFO="/tmp/opensips_fifo"
        PID_FILE=/var/run/opensips/opensips.pid 

Create databese:         

    opensipsdbctl create

Now you need to set openSIPs server to use mysql database to authenticate users:
In file:    

    joe /etc/opensips/opensips.cfg

change (COMMENT/UNCOMMENT) this lines:       

        loadmodule "db_mysql.so"
        loadmodule "auth.so"
        loadmodule "auth_db.so"
        !!! COMMENT #modparam("usrloc", "db_mode",   0)
        modparam("usrloc", "db_mode",   2)
        modparam("usrloc", "db_url","mysql://opensips:opensipsrw@localhost/opensips")
        modparam("auth_db", "calculate_ha1", yes)
        modparam("auth_db", "password_column", "password")
        modparam("auth_db", "db_url","mysql://opensips:opensipsrw@localhost/opensips")

and the same file down in routing logic UNCOMMENT:       

    if (is_method("REGISTER"))
            {
                    # authenticate the REGISTER requests (uncomment to enable auth)
                    if (!www_authorize("IP_ADDRESS", "subscriber"))
                    {
                            www_challenge("IP_ADDRESS", "0");
                            exit;
                    }

where IP_ADDRESS part is the IP adrress of your openSIPs server.

 

To make call two users are needed. You will add them with command:   

    opensipsctl add "login" "password"
    #Example: opensipsctl add miso miso

Now restart openSIPs server:        

    opensipsctl restart

The authentication is now enabled.

The next service we can install on OpenSIPs server is PRESENCE. There are two options how to configure presence: with or without XCAP server.

Presence without XCAP server:

 

Uncomment following lines in config file /etc/opensips/opensips.cfg

    loadmodule "presence.so"
    loadmodule "presence_xml.so"

    modparam("presence|presence_xml", "db_url","mysql://opensips:opensipsrw@localhost/opensips")
    modparam("presence_xml", "force_active", 1)

 And again it's necessary to set the address and port your OpenSIPs server is listening on (example: 158.193.139.80) in /etc/opensips/opensips.cfg

    modparam("presence", "server_address", "sip:158.193.139.80:5060")

Finally some changes are needed in routing logic in /etc/opensips/opensips.cfg

Uncomment:

    if( is_method("PUBLISH|SUBSCRIBE"))
         route(2);

Comment:

    #if (is_method("PUBLISH"))
    #{
    #       sl_send_reply("503", "Service Unavailable");
    #       exit;
    #}

and uncomment route(2):

    route[2] 
    { 
        if (!t_newtran()) { 
              sl_reply_error(); 
              exit; 
        };
        if(is_method("PUBLISH"))
        {
                handle_publish();
        }
        else
        if( is_method("SUBSCRIBE"))
        {
                handle_subscribe();
        }

        exit;
    }

The presence service is now working. The client should be set to presence-agent mode.

 

NOW: TESTING PRESENCE WITH XCAP SERVER

Groups: