diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 8eda7b4bd..b4a78b30b 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -519,6 +519,31 @@ _set_vpn_ip() { fi } +_delete_client2client() { + if [ -n "$(echo $1 | grep omr_client2client)" ]; then + uci -q delete network.$1 + fi +} + +_set_client2client() { + local c2cid=0 + [ -z "$vps_config" ] && vps_config=$(_get_json "config") + [ -z "$vps_config" ] && return + c2cips="$(echo "$vps_config" | jsonfilter -q -e '@.client2client.lanips)" + vpnifname="$(uci -q get network.omrvpn.ifname)" + vpnip_local=$(ip -4 -br addr ls dev ${vpnifname} | awk -F'[ /]+' '{print $3}') + for lanip in $c2cips; do + c2cid=$((c2cid+1)) + uci -q batch <<-EOF >/dev/null + set network.omr_client2client_${c2cid}=route + set network.omr_client2client_${c2cid}.interface=omrvpn + set network.omr_client2client_${c2cid}.target=$(echo $lanip | awk -F '/' '{print $1}') + set network.omr_client2client_${c2cid}.netmask=$(echo $lanip | awk -F '/' '{print $2}') + set network.omr_client2client_${c2cid}.gateway=${vpnip_local} + EOF + done +} + _vps_firewall_redirect_port() { local src proto src_dport config_get src $1 src @@ -1070,6 +1095,10 @@ _config_service() { [ -n "$wanips" ] && _set_wan_ip _set_lan_ip _set_vpn_ip + _delete_client2client + if [ "$(echo "$vps_config" | jsonfilter -q -e '@.client2client.enabled')" == "true" ]; then + _set_client2client + fi [ "$error" = 0 ] && { #logger -t "OMR-VPS" "No errors" uci -q set openmptcprouter.${servername}.lastchange=$(date "+%s")