|
@@ -0,0 +1,172 @@
|
|
|
|
+#
|
|
|
|
+# $Id$
|
|
|
|
+#
|
|
|
|
+# iptel.org real world configuration
|
|
|
|
+#
|
|
|
|
+
|
|
|
|
+# ----------- global configuration parameters ------------------------
|
|
|
|
+
|
|
|
|
+# we're debugging now
|
|
|
|
+
|
|
|
|
+debug=9 # debug level (cmd line: -dddddddddd)
|
|
|
|
+fork=no
|
|
|
|
+log_stderror=yes # (cmd line: -E)
|
|
|
|
+
|
|
|
|
+#fork=yes
|
|
|
|
+#children=16
|
|
|
|
+#log_stderror=no # (cmd line: -E)
|
|
|
|
+
|
|
|
|
+check_via=yes # (cmd. line: -v)
|
|
|
|
+dns=on # (cmd. line: -r)
|
|
|
|
+rev_dns=yes # (cmd. line: -R)
|
|
|
|
+
|
|
|
|
+# experimental usage at port 5060
|
|
|
|
+#port=9060
|
|
|
|
+#port=8060
|
|
|
|
+port=5060
|
|
|
|
+# advertise IP address in Via (as opposed to advertising DNS name
|
|
|
|
+# which is annoying for downstream servers and some phones can
|
|
|
|
+# not handle DNS at all)
|
|
|
|
+#listen=195.37.77.101
|
|
|
|
+#listen=193.175.135.170
|
|
|
|
+# ------------------ module loading ----------------------------------
|
|
|
|
+
|
|
|
|
+loadmodule "../sip_router/modules/sl/sl.so"
|
|
|
|
+loadmodule "../sip_router/modules/print/print.so"
|
|
|
|
+loadmodule "../sip_router/modules/tm/tm_mod.so"
|
|
|
|
+#loadmodule "../sip_router/modules/acc/acc.so"
|
|
|
|
+loadmodule "../sip_router/modules/rr/rr.so"
|
|
|
|
+loadmodule "../sip_router/modules/maxfwd/maxfwd.so"
|
|
|
|
+#loadmodule "../sip_router/modules/mysql/mysql.so"
|
|
|
|
+loadmodule "../sip_router/modules/usrloc/usrloc.so"
|
|
|
|
+#loadmodule "../sip_router/modules/auth/auth.so"
|
|
|
|
+#loadmodule "../sip_router/modules/cpl/cpl.so"
|
|
|
|
+loadmodule "../sip_router/modules/radius_acc/radius_acc.so"
|
|
|
|
+loadmodule "../sip_router/modules/registrar/registrar.so"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# ----------------- setting module-specific parameters ---------------
|
|
|
|
+
|
|
|
|
+# -- usrloc params --
|
|
|
|
+
|
|
|
|
+# use in-RAM usrloc
|
|
|
|
+#modparam("usrloc", "use_db", 0)
|
|
|
|
+
|
|
|
|
+# -- acc params --
|
|
|
|
+# report ACKs too for sake of completeness -- as we account PSTN
|
|
|
|
+# destinations which are RR, ACKs should show up
|
|
|
|
+#modparam("acc", "report_ack", 1)
|
|
|
|
+# don't bother me with early media reports (I don't like 183
|
|
|
|
+# too much anyway...ever thought of timer C hitting after
|
|
|
|
+# listening to music-on-hold for five minutes?)
|
|
|
|
+#modparam("acc", "early_media", 0)
|
|
|
|
+#modparam("acc", "log_level", 1)
|
|
|
|
+# that is the flag for which we will account -- don't forget to
|
|
|
|
+# set the same one :-)
|
|
|
|
+#modparam("acc", "acc_flag", 1 )
|
|
|
|
+# we are interested only in succesful transactions
|
|
|
|
+#modparam("acc", "failed_transactions", 0 )
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# -- acc params --
|
|
|
|
+# report ACKs too for sake of completeness -- as we account PSTN
|
|
|
|
+# destinations which are RR, ACKs should show up
|
|
|
|
+modparam("radius_acc", "report_ack", 1)
|
|
|
|
+# don't bother me with early media reports (I don't like 183
|
|
|
|
+# too much anyway...ever thought of timer C hitting after
|
|
|
|
+# listening to music-on-hold for five minutes?)
|
|
|
|
+modparam("radius_acc", "early_media", 0)
|
|
|
|
+modparam("radius_acc", "log_level", 1)
|
|
|
|
+# that is the flag for which we will account -- don't forget to
|
|
|
|
+# set the same one :-)
|
|
|
|
+modparam("radius_acc", "acc_flag", 1 )
|
|
|
|
+# we are interested only in succesful transactions
|
|
|
|
+modparam("radius_acc", "failed_transactions", 0 )
|
|
|
|
+
|
|
|
|
+# -- tm params --
|
|
|
|
+modparam("tm", "fr_timer", 30 )
|
|
|
|
+modparam("tm", "fr_inv_timer", 60 )
|
|
|
|
+
|
|
|
|
+# ------------------------- request routing logic -------------------
|
|
|
|
+
|
|
|
|
+# main routing logic
|
|
|
|
+
|
|
|
|
+route{
|
|
|
|
+
|
|
|
|
+ # filter local stateless ACK generated by authentication of mf replies
|
|
|
|
+ sl_filter_ACK();
|
|
|
|
+
|
|
|
|
+ # filter too old messages
|
|
|
|
+ log("LOG: Checking maxfwd\n");
|
|
|
|
+ if (!mf_process_maxfwd_header("10")) {
|
|
|
|
+ log("LOG: Too many hops\n");
|
|
|
|
+ sl_send_reply("483","Too Many Hops");
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ # len_gt *after* max_fwd, otherwise an "INVITE sip:[email protected]"
|
|
|
|
+ # will cause "message too big" for a short message
|
|
|
|
+
|
|
|
|
+ if (len_gt( max_len )) {
|
|
|
|
+ sl_send_reply("513", "Riesengross -- Message too large");
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ # Do strict routing if route headers present
|
|
|
|
+ if (method=="INVITE") {
|
|
|
|
+ addRecordRoute();
|
|
|
|
+ } else {
|
|
|
|
+ rewriteFromRoute();
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ # that is outbound request...
|
|
|
|
+
|
|
|
|
+ if (!(uri=~"fox\.iptel\.org([;:].*)*"
|
|
|
|
+ | uri=~"[@:\.]195\.37\.77\.101([;:].*)*" )) {
|
|
|
|
+ route(2);
|
|
|
|
+ # break from route (2) return -- stop then !
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+ # here we continue with requests for our domain...
|
|
|
|
+
|
|
|
|
+ if (method=="REGISTER") {
|
|
|
|
+ # update Contact database
|
|
|
|
+ log("LOG: REGISTER is authorized, saving location\n");
|
|
|
|
+ save("location");
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ # native SIP destinations are handled using our USRLOC DB
|
|
|
|
+ if (!lookup("location")) {
|
|
|
|
+ if (method=="ACK") {
|
|
|
|
+ log("Ooops -- an ACK made it here -- probably UAC screwed up to-tags\n");
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+ log("LOG: Unable to lookup contact, sending 404\n");
|
|
|
|
+ sl_send_reply("404", "Not Found");
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ # label for accounting
|
|
|
|
+ setflag(1);
|
|
|
|
+ # we now know we may, we know where, let it go out now!
|
|
|
|
+ if (!t_relay()) {
|
|
|
|
+ sl_reply_error();
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+}
|
|
|
|
+#---------------------------------------------------------------------
|
|
|
|
+
|
|
|
|
+# routing logic for outbound requests targeted out of our domain
|
|
|
|
+# -- use outbound proxy iptel.org (note that except to FOKUS/PBX,
|
|
|
|
+# or itpel.org users, requests will be challenged)
|
|
|
|
+route[2] {
|
|
|
|
+ log("LOG: that's a request to outside");
|
|
|
|
+ # label for accounting
|
|
|
|
+ setflag(1);
|
|
|
|
+ if (!t_relay_to("fox.iptel.org", "5060")) {
|
|
|
|
+ sl_reply_error();
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+}
|