mirror of https://github.com/sipwise/kamailio.git
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.
109 lines
2.4 KiB
109 lines
2.4 KiB
log_stderror=yes
|
|
listen=127.0.0.1
|
|
loadpath "../../modules/:../../modules_k/"
|
|
loadmodule "../../modules/db_mysql/db_mysql.so"
|
|
loadmodule "../../modules/tm/tm.so"
|
|
loadmodule "sl"
|
|
loadmodule "rr"
|
|
loadmodule "maxfwd"
|
|
loadmodule "textops"
|
|
loadmodule "xlog"
|
|
loadmodule "usrloc"
|
|
loadmodule "registrar"
|
|
loadmodule "pv"
|
|
loadmodule "mi_fifo"
|
|
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
|
|
|
|
route{
|
|
xlog("received by kamailio[$pp] at '$Tf' from $si:$sp, method: $(rm{s.tolower}), transport: $rP:$Ri:$rp, user agent: $ua\n");
|
|
|
|
if !(route(39)) {
|
|
xlog("L_ERR", "Error getting identity\n");
|
|
exit;
|
|
}
|
|
xlog("L_ERR", "My identity: $avp(i:83)\n");
|
|
$var(x) = "sip:" + $fU +"@" + $td;
|
|
xlog("var(x): $var(x), MD5 var(x): $(var(x){s.md5})\n");
|
|
|
|
if (!method=="REGISTER")
|
|
record_route();
|
|
|
|
if (loose_route()) {
|
|
# mark routing logic in request
|
|
append_hf("P-hint: rr-enforced\r\n");
|
|
route(1);
|
|
};
|
|
|
|
if (!uri==myself) {
|
|
append_hf("P-hint: outbound\r\n");
|
|
route(1);
|
|
};
|
|
xlog("From header tag: $(hdr(From){param.value,tag})\n");
|
|
|
|
if(is_method("REGISTER")) {
|
|
if(is_present_hf("Expires")) {
|
|
xlog("Expires header field present\n");
|
|
if($(hdr(Expires){s.int}) > 0) {
|
|
xlog("this is an registration\n");
|
|
}
|
|
if($(hdr(Expires){s.int}) == 0) {
|
|
xlog("this is an unregistration\n");
|
|
}
|
|
}
|
|
if(is_present_hf("Contact")) {
|
|
xlog("Contact header field present\n");
|
|
if ($(hdr(Contact){param.value,expires}{s.int}) > 0) {
|
|
xlog("this is an registration\n");
|
|
}
|
|
if ($(ct{param.value,expires}{s.int}) == 0) {
|
|
xlog("this is an unregistration\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (uri==myself) {
|
|
if (method=="REGISTER") {
|
|
save("location");
|
|
exit;
|
|
}
|
|
if (!lookup("location")) {
|
|
sl_send_reply("404", "Not Found");
|
|
exit;
|
|
}
|
|
append_hf("P-hint: usrloc applied\r\n");
|
|
}
|
|
|
|
route(1);
|
|
}
|
|
|
|
route[1] {
|
|
if (!t_relay()) {
|
|
sl_reply_error();
|
|
}
|
|
exit;
|
|
}
|
|
|
|
route[39] {
|
|
if ($ai) {
|
|
$avp(i:81)=$(ai{uri.user});
|
|
$avp(i:82)=$(ai{uri.domain});
|
|
$avp(i:83)=$ai;
|
|
xlog("L_ERR", "Getting identity from P-Asserted-Identity header\n");
|
|
} else if ($pu) {
|
|
$avp(i:81)=$(pu{uri.user});
|
|
$avp(i:82)=$(pu{uri.domain});
|
|
$avp(i:83)=$pu;
|
|
xlog("L_ERR", "Getting identity from P-Preferred-Identity header\n");
|
|
} else if ($fU) {
|
|
$avp(i:81)=$(fu{uri.user});
|
|
$avp(i:82)=$(fu{uri.domain});
|
|
$avp(i:83)=$fu;
|
|
xlog("L_ERR", "Getting identity from FROM URI\n");
|
|
} else {
|
|
xlog("L_ERR", "No identity for $rm: $fu -> $ru\n");
|
|
return;# -1;
|
|
}
|
|
|
|
return; #1;
|
|
}
|