123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- debug=3 # debug level (cmd line: -dddddddddd)
- check_via=no # (cmd. line: -v)
- dns=no # (cmd. line: -r)
- rev_dns=no # (cmd. line: -R)
- port=5060
- children=2
- alias="test-domain.com"
- mhomed=yes # usefull for multihomed hosts, small performance penalty
- #tcp_accept_aliases=yes # accepts the tcp alias via option (see NEWS)
- #tcp_poll_method="sigio_rt"
- # ------------------ module loading ----------------------------------
- # Uncomment this if you want to use SQL database
- loadmodule "/usr/lib/ser/modules/sl.so"
- loadmodule "/usr/lib/ser/modules/avp.so"
- loadmodule "/usr/lib/ser/modules/avpops.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"
- loadmodule "/usr/lib/ser/modules/dialog.so"
- loadmodule "/usr/lib/ser/modules/rls.so"
- loadmodule "/usr/lib/ser/modules/pa.so"
- loadmodule "/usr/lib/ser/modules/presence_b2b.so"
- loadmodule "/usr/lib/ser/modules/uri.so"
- loadmodule "/usr/lib/ser/modules/fifo.so"
- loadmodule "/usr/lib/ser/modules/xmlrpc.so"
- loadmodule "/usr/lib/ser/modules/xlog.so"
- # ----------------- setting module-specific parameters ---------------
- # add value to ;lr param to make some broken UAs happy
- modparam("rr", "enable_full_lr", 1)
- modparam("rls", "min_expiration", 120)
- modparam("rls", "max_expiration", 120)
- modparam("rls", "default_expiration", 120)
- modparam("rls", "auth", "none")
- modparam("rls", "xcap_root", "http://localhost/xcap")
- modparam("rls", "reduce_xcap_needs", 1)
- modparam("rls", "db_mode", 0)
- # modparam("rls", "db_url", "mysql://ser:[email protected]:3306/ser")
- modparam("pa", "use_db", 0)
- modparam("pa", "offline_winfo_timer", 600)
- modparam("pa", "offline_winfo_expiration", 600)
- # modparam("pa", "db_url", "mysql://ser:[email protected]:3306/ser")
- # mode of PA authorization: none, implicit or xcap
- modparam("pa", "auth", "xcap")
- modparam("pa", "auth_xcap_root", "http://localhost/xcap")
- modparam("pa", "winfo_auth", "none")
- modparam("pa", "use_callbacks", 1)
- modparam("pa", "accept_internal_subscriptions", 0)
- modparam("pa", "max_subscription_expiration", 120)
- modparam("pa", "timer_interval", 1)
- modparam("presence_b2b", "presence_route", "<sip:127.0.0.1;lr>")
- # modparam("presence_b2b", "presence_route", "<sip:127.0.0.1;transport=tcp;lr>")
- modparam("presence_b2b", "on_error_retry_time", 60)
- modparam("presence_b2b", "wait_for_term_notify", 33)
- modparam("presence_b2b", "resubscribe_delta", 30)
- modparam("presence_b2b", "min_resubscribe_time", 60)
- modparam("presence_b2b", "default_expiration", 3600)
- modparam("presence_b2b", "handle_presence_subscriptions", 1)
- modparam("usrloc", "db_mode", 0)
- # modparam("domain|uri_db|acc|auth_db|usrloc|msilo", "db_url", "mysql://ser:[email protected]:3306/ser")
- modparam("fifo", "fifo_file", "/tmp/ser_fifo")
- # ------------------------- request routing logic -------------------
- # main routing logic
- route{
- # XML RPC
- if (method == "POST" || method == "GET") {
- create_via();
- dispatch_rpc();
- break;
- }
- # 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
- 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) {
-
- if (method=="SUBSCRIBE") {
- if (!t_newtran()) {
- sl_reply_error();
- break;
- };
-
- # new subscription
- if (@to.tag=="") {
- if ((@msg.supported=~"eventlist")) {
- # Supported header field
- # -> may be RLS subscription
- if (is_simple_rls_target("$uid-list")) {
- # log(1, "it is simple subscription!\n");
- # handle_rls_subscription("1");
- # takes From UID and makes XCAP query
- # for user's list named "default"
- if (@to.tag=="") {
- # only for new subscriptions (with empty to tag
- if (!query_resource_list("default")) {
- t_reply("500", "XCAP query error");
- break;
- }
- }
- }
-
- if (!have_flat_list()) {
- # query_resource_list failed or was not called
- # do standard RLS query acording to To/AOR
- query_rls_services();
- }
-
- if (have_flat_list()) {
- handle_rls_subscription("1");
- break;
- }
- }
-
- # SUBSCRIBE to existing user
- # xlog("L_ERR", "PA: handling subscription: %tu from: %fu\n");
- handle_subscription("registrar");
-
- break;
- }
- else { # renewal subscription
- if (!handle_rls_subscription("0")) {
- handle_subscription("registrar");
- }
- break;
- }
-
- }
- if (method=="REGISTER") {
- save("location");
- break;
- };
-
-
- if (method=="PUBLISH") {
- if (!t_newtran()) {
- sl_reply_error();
- break;
- };
- handle_publish("registrar");
- break;
- };
-
- if (method=="NOTIFY") {
- if (!t_newtran()) {
- log(1, "newtran error\n");
- sl_reply_error();
- break;
- };
- if (!handle_notify()) {
- t_reply("481", "Unable to handle notification");
- }
- break;
- };
-
- # message authorization
- if (method=="MESSAGE") {
- log(1, "MESSAGE authorization\n");
- if (!authorize_message("http://localhost/xcap")) {
- sl_reply("403", "Forbidden");
- 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();
- };
- }
|