– Kamailio SIP Server –

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
presence:configuration-file [2011/09/07 16:25]
92.112.156.8
presence:configuration-file [2012/03/22 13:40] (current)
80.250.1.245 removed spam
Line 1: Line 1:
 +====== OpenSER Configuration File For Presence Server ======
 +
 +==== Example started from default configuration file ====
 +
 +The example uses '​10.10.10.10'​ as server'​s IP address, you have to replace it with yours.
 +
 +<code c>#
 +# $Id$
 +#
 +# simple quick-start config script
 +#
 +
 +# ----------- global configuration parameters ------------------------
 +
 +/* Uncomment these lines to enter debugging mode */ 
 +debug=7 ​           # debug level (cmd line: -dddddddddd)
 +fork=no
 +log_stderror=yes
 +
 +check_via=no #​ (cmd. line: -v)
 +dns=no ​         # (cmd. line: -r)
 +rev_dns=no ​     # (cmd. line: -R)
 +listen=udp:​10.10.10.10:​5060
 +children=4
 +
 +
 +#
 +# uncomment the following lines for TLS support
 +#​disable_tls = 0
 +#listen = tls:​your_IP:​5061
 +#​tls_verify_server = 1
 +#​tls_verify_client = 1
 +#​tls_require_client_certificate = 0
 +#tls_method = TLSv1
 +#​tls_certificate = "/​usr/​local/​etc/​openser/​tls/​user/​user-cert.pem"​
 +#​tls_private_key = "/​usr/​local/​etc/​openser/​tls/​user/​user-privkey.pem"​
 +#​tls_ca_list = "/​usr/​local/​etc/​openser/​tls/​user/​user-calist.pem"​
 +
 +# ------------------ module loading ----------------------------------
 +mpath="/​usr/​local/​lib/​openser/​modules/"​
 +
 +loadmodule "​mysql.so"​
 +loadmodule "​sl.so"​
 +loadmodule "​maxfwd.so"​
 +loadmodule "​textops.so"​
 +loadmodule "​tm.so"​
 +loadmodule "​rr.so"​
 +loadmodule "​presence.so"​
 +loadmodule "​avpops.so"​
 +
 +loadmodule "​usrloc.so"​
 +loadmodule "​registrar.so"​
 +loadmodule "​mi_fifo.so"​
 +
 +
 +# Uncomment this if you want digest authentication
 +# mysql.so must be loaded !
 +#loadmodule "/​usr/​local/​lib/​openser/​modules/​auth.so"​
 +#loadmodule "/​usr/​local/​lib/​openser/​modules/​auth_db.so"​
 +
 +# ----------------- setting module-specific parameters ---------------
 +
 +# -- usrloc params --
 +# 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)
 +
 +# -- presence params --
 +modparam("​presence|usrloc",​ "​db_url",​
 +   "​mysql://​openser:​openserrw@127.0.0.1/​openser"​)
 +modparam("​presence",​ "​max_expires",​ 3600)
 +modparam("​presence",​ "​force_active",​ 1)
 +modparam("​presence",​ "​server_address",​ "​sip:​10.10.10.10:​5060"​ )
 +
 +# -- mi_fifo params --
 +modparam("​mi_fifo","​fifo_name",​ "/​tmp/​openser_fifo"​)
 +
 +# ------------------------- ​ 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"​);​
 + exit;
 + };
 +
 + if (msg:len >=  2048 ) {
 + sl_send_reply("​513",​ "​Message too big");
 + exit;
 + };
 +
 + # 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);
 + };
 +
 + if (!uri==myself) {
 + # mark routing logic in request
 + append_hf("​P-hint:​ outbound\r\n"​); ​
 + # if you have some interdomain connections via TLS
 + #​if(uri=~"​@tls_domain1.net"​) {
 + #​ t_relay("​tls:​domain1.net"​);​
 + # exit;
 + #} else if(uri=~"​@tls_domain2.net"​) {
 + #​ t_relay("​tls:​domain2.net"​);​
 + # exit;
 + #}
 + route(1);
 + };
 +
 + # 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) {
 +
 + # presence handling
 + if( is_method("​PUBLISH|SUBSCRIBE"​))
 + route(2);​
 +
 + if (method=="​REGISTER"​) {
 +
 + # Uncomment this if you want to use digest authentication
 + #if (!www_authorize("​openser.org",​ "​subscriber"​)) {
 + #​ www_challenge("​openser.org",​ "​0"​);​
 + # exit;
 + #};
 +
 + save("​location"​);​
 + exit;
 + };
 +
 + # native SIP destinations are handled using our USRLOC DB
 + if (!lookup("​location"​)) {
 + sl_send_reply("​404",​ "Not Found"​);​
 + exit;
 + };
 + 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();​
 + };
 + exit;
 +}
 +
 +# presence handling route
 +route[2]
 +{
 + # absorb retransmissions
 + if (! t_newtran())
 + {
 +         sl_reply_error();​
 +         exit;
 + };
 +
 + if(is_method("​PUBLISH"​))
 + {
 + handle_publish();​
 + t_release();​
 + } else if( is_method("​SUBSCRIBE"​)) {
 + handle_subscribe();​
 + t_release();​
 + };
 +
 + exit;
 +}
 +
 +</​code>​
 +
 +==== Stand alone presence server ====
 +
 +
 +The example uses '​10.10.10.10'​ as server'​s IP address, you have to replace it with yours.
 +
 +For NAT traversal you have to use fix_nated_contact() from '​nathelper'​ module. In your main SIP server, just forward PUBLISH and SUBSCRIBE requests to the presence server.
 +
 +<code c>
 +#
 +# $Id$
 +#
 +# simple quick-start config script
 +#
 +
 +# ----------- global configuration parameters ------------------------
 +
 +/* Uncomment these lines to enter debugging mode */
 +debug=7 ​           # debug level (cmd line: -dddddddddd)
 +fork=no
 +log_stderror=yes
 +
 +check_via=no ​   # (cmd. line: -v)
 +dns=no ​         # (cmd. line: -r)
 +rev_dns=no ​     # (cmd. line: -R)
 +listen=udp:​10.10.10.10:​5060
 +children=4
 +
 +#
 +# uncomment the following lines for TLS support
 +#​disable_tls = 0
 +#listen = tls:​your_IP:​5061
 +#​tls_verify_server = 1
 +#​tls_verify_client = 1
 +#​tls_require_client_certificate = 0
 +#tls_method = TLSv1
 +#​tls_certificate = "/​usr/​local/​etc/​openser/​tls/​user/​user-cert.pem"​
 +#​tls_private_key = "/​usr/​local/​etc/​openser/​tls/​user/​user-privkey.pem"​
 +#​tls_ca_list = "/​usr/​local/​etc/​openser/​tls/​user/​user-calist.pem"​
 +
 +# ------------------ module loading ----------------------------------
 +mpath="/​usr/​local/​openser/​lib/​openser/​modules/"​
 +
 +loadmodule "​mysql.so"​
 +loadmodule "​sl.so"​
 +loadmodule "​maxfwd.so"​
 +loadmodule "​textops.so"​
 +loadmodule "​tm.so"​
 +loadmodule "​rr.so"​
 +loadmodule "​presence.so"​
 +loadmodule "​avpops.so"​
 +loadmodule "​mi_fifo.so"​
 +
 +## Uncomment this line if this presence server is handling Dialog Info presence ( BLF )
 +#loadmodule "​presence_dialoginfo.so"​
 +
 +## Uncomment this line if this presence server is handling MWI ( Message Waiting Indicator, the voicemail light )
 +#loadmodule "​presence_mwi.so"​
 +
 +# ----------------- setting module-specific parameters ---------------
 +
 +# -- rr params --
 +# add value to ;lr param to make some broken UAs happy
 +modparam("​rr",​ "​enable_full_lr",​ 1)
 +
 +# -- presence params --
 +modparam("​presence",​ "​db_url",​ "​mysql://​openser:​openserrw@localhost/​openser"​)
 +
 +modparam("​presence",​ "​force_active",​ 1)
 +
 +modparam("​presence",​ "​server_address",​ "​sip:​10.10.10.10:​5060"​)
 +
 +modparam("​mi_fifo",​ "​fifo_name",​ "/​tmp/​openser_fifo_presence"​)
 +
 +# ------------------------- ​ 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"​);​
 +        exit;
 +    };
 +
 +    if (msg:len >=  2048 ) {
 +        sl_send_reply("​513",​ "​Message too big");
 +        exit;
 +    };
 +
 +    # 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 (!is_method("​SUBSCRIBE|PUBLISH"​)) {
 +        sl_send_reply("​488",​ "Not Acceptable Here"​);​
 +        exit;
 +    }
 +
 +    # presence handling
 +    if (! t_newtran())
 +    {
 +        sl_reply_error();​
 +        exit;
 +     };
 +
 +    if(is_method("​PUBLISH"​))
 +    {
 +        handle_publish(""​);​
 +        t_release();​
 +    } else if( is_method("​SUBSCRIBE"​))
 +    {
 +        handle_subscribe();​
 +        t_release();​
 +    };
 +
 +    exit;
 +}
 +</​code>​
 +
 +===== Presence-Related Stuff =====
 +
 +{{indexmenu>​presence|js}}