Fix condition for In-Dialog IPSec forwarding
This commit is contained in:
@@ -162,12 +162,25 @@ route[MO_indialog] {
|
||||
xnotice("Contact header: $ct\n");
|
||||
setflag(FLT_MOBILE_ORIG);
|
||||
t_on_reply("MO_indialog_reply");
|
||||
if ($du != "" && $ru != "") {
|
||||
|
||||
if ($du != "" && $ru != "" && $fs != "") {
|
||||
# Remove sips: and sip: from destination URI for comparision
|
||||
$var(destination) = $(du{re.subst,/sips://g});
|
||||
$var(destination) = $(var(destination){re.subst,/sip://g});
|
||||
$var(destination_alias) = $(var(destination){re.subst,/:/~/g});
|
||||
if (is_request() && $dp != 5060 && ($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*")) {
|
||||
|
||||
# $var(fs_bck) = $fs;
|
||||
# $var(fs_proto) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\1/g});
|
||||
# $var(fs_ip) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\2/g});
|
||||
# $var(fs_port) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\3/g});
|
||||
|
||||
# if (($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*") &&
|
||||
# ($var(fs_ip) == IPSEC_LISTEN_ADDR &&
|
||||
# (($var(fs_port) >= IPSEC_CLIENT_PORT && $var(fs_port) <= IPSEC_CLIENT_PORT + IPSEC_MAX_CONN) ||
|
||||
# ($var(fs_port) >= IPSEC_SERVER_PORT && $var(fs_port) <= IPSEC_SERVER_PORT + IPSEC_MAX_CONN)))) {
|
||||
# ipsec_forward("location");
|
||||
# }
|
||||
if ($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*") {
|
||||
ipsec_forward("location");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,15 +87,25 @@ route[MT_indialog] {
|
||||
xnotice("Contact header: $ct\n");
|
||||
#resetflag(FLT_MOBILE_ORIG);
|
||||
t_on_reply("MT_indialog_reply");
|
||||
if ($du != "" && $ru != "") {
|
||||
if ($du != "" && $ru != "" && $fs != "") {
|
||||
# Remove sips: and sip: from destination URI for comparision
|
||||
$var(destination) = $(du{re.subst,/sips://g});
|
||||
$var(destination) = $(var(destination){re.subst,/sip://g});
|
||||
$var(destination_alias) = $(var(destination){re.subst,/:/~/g});
|
||||
$var(alias_proto) = $(ru{re.subst,/^(.*);alias=.*~[0-9]*~//g});
|
||||
if (is_request() && $var(alias_proto) == 2 && ($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*")) {
|
||||
$du = $du+";transport=tcp";
|
||||
$fs = $(fs{re.subst,/udp/tcp/g});
|
||||
|
||||
# $var(fs_bck) = $fs;
|
||||
# $var(fs_proto) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\1/g});
|
||||
# $var(fs_ip) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\2/g});
|
||||
# $var(fs_port) = $(var(fs_bck){re.subst,/^([^:]*):([^:]*):([^:]*)/\3/g});
|
||||
|
||||
# if (($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*") &&
|
||||
# ($var(fs_ip) == IPSEC_LISTEN_ADDR &&
|
||||
# (($var(fs_port) >= IPSEC_CLIENT_PORT && $var(fs_port) <= IPSEC_CLIENT_PORT + IPSEC_MAX_CONN) ||
|
||||
# ($var(fs_port) >= IPSEC_SERVER_PORT && $var(fs_port) <= IPSEC_SERVER_PORT + IPSEC_MAX_CONN)))) {
|
||||
# ipsec_forward("location");
|
||||
# }
|
||||
if ($ru =~ ".*" + $var(destination) + ".*" || $ru =~ ".*" + $var(destination_alias) + ".*") {
|
||||
ipsec_forward("location");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user