From 67f1ec7de8a416904e3216e2bd3d3d7c52f83034 Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Sat, 23 Aug 2025 11:58:29 +0200 Subject: [PATCH] - Start VPN gateways support implementation. --- ReleaseNotes.txt | 10 ++++++- usr/local/lib/default.bash | 2 +- usr/local/sbin/openvpn-client-down | 42 +++++++++++++++++++++++++++ usr/local/sbin/openvpn-client-up | 45 +++++++++++++++++++++++++++++ usr/local/sbin/openvpn-down | 16 +++++----- usr/local/sbin/openvpn-up | 14 ++++----- var/www/cgi-bin/vpn-admin_board.cgi | 4 ++- 7 files changed, 115 insertions(+), 18 deletions(-) create mode 100755 usr/local/sbin/openvpn-client-down create mode 100755 usr/local/sbin/openvpn-client-up diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 3ca04ee..3486311 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,5 +1,13 @@ ------------------------------------------------------------------------------------------------------------------------------------ -Network Rools V 1.0.0 - A. GIBERT - 2025/08/12 +Network Tools V 1.1.0 - A. GIBERT - 2025/09/?? +------------------------------------------------------------------------------------------------------------------------------------ + +- Add VPN Gateway support. + + + +------------------------------------------------------------------------------------------------------------------------------------ +Network Tools V 1.0.0 - A. GIBERT - 2025/08/12 ------------------------------------------------------------------------------------------------------------------------------------ - Initial release, diff --git a/usr/local/lib/default.bash b/usr/local/lib/default.bash index 31a98c3..68c55e8 100644 --- a/usr/local/lib/default.bash +++ b/usr/local/lib/default.bash @@ -341,7 +341,7 @@ log_print() file_lock "${lock_file}" WRITE 8 fi - printf >> "${log_file}" "%s %9s %3s %8s %s\n" "$(date --rfc-3339=seconds -u)" "($BASHPID)" "${log_type}" "${log_prefix}:" "$*" + printf >> "${log_file}" "%s %9s %3s %16s %s\n" "$(date --rfc-3339=seconds -u)" "($BASHPID)" "${log_type}" "${log_prefix}:" "$*" if [[ "${lock_file}" != "" ]] then diff --git a/usr/local/sbin/openvpn-client-down b/usr/local/sbin/openvpn-client-down new file mode 100755 index 0000000..dd3a8df --- /dev/null +++ b/usr/local/sbin/openvpn-client-down @@ -0,0 +1,42 @@ +#!/bin/bash + +#DEBUG="" +#DEBUG="echo" +#DEBUG=":" + +#LOG=":" +#LOG="echo" +#LOG="" + + + +# Includes +#----------------------------------------------------------------------------------------------------------------------------------- + +. /usr/local/lib/network.bash + + + +# Global Variables +#----------------------------------------------------------------------------------------------------------------------------------- + +#LOG_FILE=/var/log/openvpn/up-down.log + + + + + +# Main +#----------------------------------------------------------------------------------------------------------------------------------- + +network_init + + + +line="[${dev}]: Local_Int_Address: [${ifconfig_local}] Remote_Int_Address: [${ifconfig_pool_remote_ip}] Remote_Ext_Addres: [${untrusted_ip}] Common_Name: [${common_name}] Duration: [${time_duration}]" + +log_info "VPN-Client-Down" "$line" " Status: [OK]" + +touch /etc/openvpn/status/${common_name}.status + +log_trace "VPN-Client-Down" "[${dev}]: Done!" diff --git a/usr/local/sbin/openvpn-client-up b/usr/local/sbin/openvpn-client-up new file mode 100755 index 0000000..6972e47 --- /dev/null +++ b/usr/local/sbin/openvpn-client-up @@ -0,0 +1,45 @@ +#!/bin/bash + +#DEBUG="" +#DEBUG="echo" +#DEBUG=":" + +#LOG=":" +#LOG="echo" +#LOG="" + + + +# Includes +#----------------------------------------------------------------------------------------------------------------------------------- + +. /usr/local/lib/network.bash + + + +# Global Variables +#----------------------------------------------------------------------------------------------------------------------------------- + +#LOG_FILE=/var/log/openvpn/up-down.log + + + + + +# Main +#----------------------------------------------------------------------------------------------------------------------------------- + +Output_Param_File="$1" + + +network_init + + + +line="[${dev}]: Local_Int_Address: [${ifconfig_local}] Remote_Int_Address: [${ifconfig_pool_remote_ip}] Remote_Ext_Addres: [${untrusted_ip}] Common_Name: [${common_name}] Output_Param_File: [${Output_Param_File}]" + +log_info "VPN-Client-Up" "$line" " Status: [OK]" + +touch /etc/openvpn/status/${common_name}.status + +log_trace "VPN-Client-Up" "[${dev}]: Done!" diff --git a/usr/local/sbin/openvpn-down b/usr/local/sbin/openvpn-down index dc5213d..1f8499f 100755 --- a/usr/local/sbin/openvpn-down +++ b/usr/local/sbin/openvpn-down @@ -28,12 +28,12 @@ # Main #----------------------------------------------------------------------------------------------------------------------------------- -Dev="$1" -Local_MTU="$2" -Remote_MTU="$3" + Dev="$1" + Local_MTU="$2" + Remote_MTU="$3" Local_Address="$4" Local_Netmask="$5" -Phase="$6" + Phase="$6" network_init @@ -43,11 +43,11 @@ network_dst_tab_dev_lookup "${Dev}" network_dst_tab_get "${dst_id}" -line="[${Dev}]: Local_MTU: [${Local_MTU}] Remote_MTU: [${Remote_MTU}] Local_Address: [${Local_Address}] Local_Netmask: [${Local_Netmask}] Dst_Table: ${dst_table} Phase: ${Phase}" +line="[${Dev}]: Local_MTU: [${Local_MTU}] Remote_MTU: [${Remote_MTU}] Local_Address: [${Local_Address}] Local_Netmask: [${Local_Netmask}] Dst_Table: [${dst_table}] Phase: [${Phase}]" if [[ "${dst_table}" != "" ]] then - log_info "VPN-Down" "$line" " Status: [OK]" + log_info "VPN-Down" "$line" " Status: [OK]" remote_address=0.0.0.0 @@ -55,7 +55,7 @@ then ${DEBUG} ip_host_update vpn${id} vpn.rx3 ${remote_address} 60 else - log_error "VPN-Down" "$line" " Status: [ERROR]!" + log_error "VPN-Down" "$line" " Status: [ERROR]!" fi -log_trace "VPN-Down" "[${Dev}]: Done!" +log_trace "VPN-Down" "[${Dev}]: Done!" diff --git a/usr/local/sbin/openvpn-up b/usr/local/sbin/openvpn-up index 0aec51f..a84c00d 100755 --- a/usr/local/sbin/openvpn-up +++ b/usr/local/sbin/openvpn-up @@ -29,12 +29,12 @@ # Main #----------------------------------------------------------------------------------------------------------------------------------- -Dev="$1" -Local_MTU="$2" -Remote_MTU="$3" + Dev="$1" + Local_MTU="$2" + Remote_MTU="$3" Local_Address="$4" Local_Netmask="$5" -Phase="$6" + Phase="$6" network_init @@ -48,12 +48,12 @@ line="[${Dev}]: Local_MTU: [${Local_MTU}] Remote_MTU: [${Remote_MTU}] Local_ if [[ "${dst_table}" != "" ]] then - log_info "VPN-Up" "$line" " Status: [OK]" + log_info "VPN-Up" "$line" " Status: [OK]" log_trace "VPN-Up" "[${Dev}]: ip route add table: [${dst_table}] default dev: [${Dev}]" network_route_dst_init ${dst_id} else - log_error "VPN-Up" "$line" " Status: [ERROR]!" + log_error "VPN-Up" "$line" " Status: [ERROR]!" fi -log_trace "VPN-Up" "[${Dev}]: Done!" +log_trace "VPN-Up" "[${Dev}]: Done!" diff --git a/var/www/cgi-bin/vpn-admin_board.cgi b/var/www/cgi-bin/vpn-admin_board.cgi index 3c24399..a58add7 100755 --- a/var/www/cgi-bin/vpn-admin_board.cgi +++ b/var/www/cgi-bin/vpn-admin_board.cgi @@ -686,7 +686,9 @@ else if [[ ( ${admin} == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]] then - sudo /usr/local/sbin/rx3_net_adm table_set ${ip} $((${vpn} + 3)) 1>&2 + network_dst_tab_get "${vpn}" + + sudo /usr/local/sbin/rx3_net_adm table_set ${ip} ${dst_table} 1>&2 if [[ "$?" == 0 ]] then