You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules/rtpproxy/examples/alg.cfg

106 lines
2.6 KiB

# $Id$
#
# Simple application level gateway config script.
#
# Assumes that SER/rtpproxy run on a machine, which connected to
# two non-routable letworks: 192.168.0.0/24 and 192.168.1.1/24.
#
# Correspondingly, this machine has two IP addresses: 192.168.0.1
# and 192.168.1.1.
#
# 192.168.0.0/24 - "internal" network
# 192.168.1.0/24 - "external" network
#
# rtpproxy started with `-l 192.168.0.1/192.168.1.1' option.
#
# ------------------ module loading ----------------------------------
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/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/rtpproxy.so"
# ----------------- setting module-specific parameters ---------------
# -- nathelper params --
modparam("nathelper", "natping_interval", 15)
# ------------------ main fun below ----------------------------------
route {
# initial sanity checks -- messages with
# max_forwars == 0, or excessively long requests,
# or those that don't addressed to us
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;
};
if (!(uri == myself) && method == "INVITE") {
sl_send_reply("403", "Call cannot be served here");
break;
};
if (method == "REGISTER") {
if (dst_ip == 192.168.0.1) {
save("location-internal");
} else if (dst_ip == 192.168.1.1) {
save("location-external");
} else {
sl_send_reply("403", "Call cannot be served here");
};
break;
};
if (method == "INVITE") {
if (lookup("location-internal")) {
if (dst_ip == 192.168.0.1)
if (rtpproxy_offer("FAII"))
t_on_reply("1");
if (dst_ip == 192.168.1.1)
if (rtpproxy_offer("FAEI"))
t_on_reply("1");
} else if (lookup("location-external")) {
if (dst_ip == 192.168.0.1)
if (rtpproxy_offer("FAIE"))
t_on_reply("1");
if (dst_ip == 192.168.1.1)
if (rtpproxy_offer("FAEE"))
t_on_reply("1");
} else {
sl_send_reply("403", "Call cannot be served here");
break;
};
}
if (method == "BYE" || method == "CANCEL")
unforce_rtp_proxy();
# Do strict routing if pre-loaded route headers present
if (loose_route()) {
t_relay();
break;
};
if (method == "INVITE")
record_route();
if (!t_relay())
sl_reply_error();
}
onreply_route[1] {
if (!(status=~"183" || status=~"200"))
break;
rtpproxy_answer("FA");
}