diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index f5193e100..9e94a08a1 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -1190,6 +1190,19 @@ function settings_add() local sfe_bridge = luci.http.formvalue("sfe_bridge") or "0" ucic:set("openmptcprouter","settings","sfe_bridge",sfe_bridge) + -- Enable/disable SIP ALG + local sipalg = luci.http.formvalue("sipalg") or "0" + ucic:set("openmptcprouter","settings","sipalg",sipalg) + ucic:foreach("firewall", "zone", function (section) + ucic:set("firewall",section[".name"],"auto_helper",sipalg) + end) + if sipalg == "1" then + luci.sys.call("modprobe nf_conntrack_ip >/dev/null 2>/dev/null") + luci.sys.call("modprobe nf_nat_sip >/dev/null 2>/dev/null") + else + luci.sys.call("rmmod nf_nat_sip >/dev/null 2>/dev/null") + luci.sys.call("rmmod nf_conntrack_ip >/dev/null 2>/dev/null") + end ucic:save("openmptcprouter") ucic:commit("openmptcprouter") diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index c866f921e..2db886333 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -219,6 +219,12 @@ +
+ +
+ checked<% end %>> +
+

diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 6ac763eac..0f3b63c10 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -843,6 +843,19 @@ _set_vpn_ip() { fi } +_set_sipalg() { + local settings + sipalg="$(uci -q get openmptcprouter.settings.sipalg)" + if [ "$sipalg" = "1" ]; then + sipalg="true" + else + sipalg="false" + fi + settings='{"enable" : "'$sipalg'"}' + result=$(_set_json "sipalg" "$settings") +} + + _delete_client2client() { if [ -n "$(echo $1 | grep omr_client2client)" ]; then uci -q delete network.$1 @@ -1882,6 +1895,7 @@ _config_service() { lanips="" config_foreach _get_lan_ip interface _set_lan_ip + _set_sipalg config_foreach _delete_client2client route if [ "$(uci -q get openmptcprouter.settings.vpn)" != "openvpn" ] && [ "$(echo "$vps_config" | jsonfilter -q -e '@.client2client.enabled')" == "true" ]; then _set_client2client diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index fe0cbdf61..709eaaf05 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -240,6 +240,15 @@ uci -q batch <<-EOF >/dev/null set firewall.@include[0].reload='1' commit firewall EOF +if [ "$(uci -q get openmptcprouter.settings.sipalg)" != "1" ]; then + uci -q batch <<-EOF >/dev/null + set firewall.zone_lan.auto_helper='0' + set firewall.zone_wan.auto_helper='0' + commit firewall + EOF + rmmod nf_nat_sip 2>&1 >/dev/null + rmmod nf_conntrack_sip 2>&1 >/dev/null +fi rm -f /tmp/luci-indexcache