- Complete the first gateway support implementation,

- More tests needed!
This commit is contained in:
2025-08-26 19:14:05 +02:00
parent 7e05bc0ba0
commit 235076b6b9
3 changed files with 107 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------
Network Tools V 1.1.0 - A. GIBERT - 2025/09/?? Network Tools V 1.1.0 - A. GIBERT - 2025/08/26
------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------
- Add VPN Gateway support. - Add VPN Gateway support.

View File

@@ -297,7 +297,7 @@ network_dst_tab_load()
tab_assign NETWORK_DST_TAB "${ndtl_id},Status" "${ndtl_status}" tab_assign NETWORK_DST_TAB "${ndtl_id},Status" "${ndtl_status}"
if [[ "${ndtl_type}" == "1" ]] if [[ "${ndtl_type}" == "5" ]]
then then
ndtl_host_name="" ndtl_host_name=""
dns_value="" dns_value=""
@@ -453,6 +453,55 @@ network_dst_tab_dev_lookup()
#--------------------------------------------------------------------------------------------------------------------------
# network_dst_ip_update
#--------------------------------------------------------------------------------------------------------------------------
network_dst_ip_update()
{
local dst_ip_new="$1"
if [[ "${dst_ip}" != "${dst_ip_new}" ]]
then
log_info "Network" "Update ${dst_host_name}: Old: [${dst_ip}] New: [${dst_ip_new}]"
${DEBUG} /usr/local/sbin/ip_host_update "${dst_host_name/.*}" "${dst_host_name#*.}" "${dst_ip_new}" 60
tab_assign NETWORK_DST_TAB "${dst_id},IP" "${dst_ip_new}"
else
log_trace "Network" "Skiping ${dst_host_name}: IP: [${dst_ip}]"
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# network_dst_name_ip_update
#--------------------------------------------------------------------------------------------------------------------------
network_dst_name_ip_update()
{
local dst_name="$1"
local dst_ip_new="$2"
network_dst_tab_name_lookup "${job_name}"
if [[ "${dst_id}" != "" ]]
then
network_dst_tab_get "${dst_id}"
network_dst_ip_update "${dst_ip_new}"
else
log_error "Network: dst name not found: [${dst_name}]"
fi
}
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
# network_src_tab_load # network_src_tab_load
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
@@ -519,11 +568,14 @@ network_src_tab_load()
;; ;;
"2") # OpenVPN "2") # OpenVPN
nstl_device="tun0" # nstl_device="tun0"
nstl_status_line="$( echo "${NETWORK_OPENVPN_STATUS}" | grep "${nstl_device}.log: CLIENT_LIST.*${nstl_ip},")" # nstl_status_line="$( echo "${NETWORK_OPENVPN_STATUS}" | grep "${nstl_device}.status: CLIENT_LIST.*${nstl_ip},")"
nstl_status_line="$( echo "${NETWORK_OPENVPN_STATUS}" | grep "CLIENT_LIST,.*${nstl_ip},")"
if [[ "${nstl_status_line}" == "" ]] if [[ "${nstl_status_line}" == "" ]]
then then
nstl_device=""
nstl_status="0" nstl_status="0"
nstl_bytes_received="" nstl_bytes_received=""
nstl_bytes_sent="" nstl_bytes_sent=""
@@ -538,6 +590,7 @@ network_src_tab_load()
set ${nstl_status_line} &>/dev/null set ${nstl_status_line} &>/dev/null
unset IFS unset IFS
nstl_device="$( echo $1 | sed -e "s%.*/%%" -e 's/.status.*//')"
nstl_bytes_received=$( echo ${6} | numfmt --to=iec-i --suffix=B) nstl_bytes_received=$( echo ${6} | numfmt --to=iec-i --suffix=B)
nstl_bytes_sent=$( echo ${7} | numfmt --to=iec-i --suffix=B) nstl_bytes_sent=$( echo ${7} | numfmt --to=iec-i --suffix=B)
nstl_start_date=${8} nstl_start_date=${8}
@@ -879,6 +932,23 @@ network_table_set()
#--------------------------------------------------------------------------------------------------------------------------
# network_dst_address_init_all
#--------------------------------------------------------------------------------------------------------------------------
network_dst_address_init_all()
{
for dst_id in ${NETWORK_DST_ID_LIST}
do
network_dst_tab_get "${dst_id}"
network_dst_ip_update "0.0.0.0"
done
}
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
# network_dst_address_refresh # network_dst_address_refresh
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
@@ -886,29 +956,31 @@ network_table_set()
network_dst_address_refresh() network_dst_address_refresh()
{ {
local dst_id="$1" local dst_id="$1"
local dst_host_name="$2"
local dst_ip_old="$3"
local dst_ip_new local dst_ip_new
local proxy_host="proxy${dst_id}.${NETWORK_DST_PROXY_NAME}" local proxy_host
local proxy_port=8080 local proxy_port=8080
dst_ip_new=$( nc -w ${NETWORK_NC_TIMEOUT} ${proxy_host} ${proxy_port}) network_dst_tab_get "${dst_id}"
if is_valid_ip ${dst_ip_new} if [[ ( "${dst_host_name}" != "" ) ]]
then then
if [[ "${dst_ip_old}" != "${dst_ip_new}" ]] if [[ ${dst_host_name} =~ ([0-9]+) ]]
then then
log_info "Network" "Update ${dst_host_name}: Old: [${dst_ip_old}] New: [${dst_ip_new}]" proxy_host="proxy${BASH_REMATCH[1]}.${NETWORK_DST_PROXY_NAME}"
${DEBUG} /usr/local/sbin/ip_host_update "${dst_host_name/.*}" "${dst_host_name#*.}" "${dst_ip_new}" 60
tab_assign NETWORK_DST_TAB "${dst_id},IP" "${dst_ip_new}" dst_ip_new="$( nc -w ${NETWORK_NC_TIMEOUT} ${proxy_host} ${proxy_port} 2>/dev/null)"
if is_valid_ip "${dst_ip_new}"
then
network_dst_ip_update "${dst_ip_new}"
else else
log_trace "Network" "Skiping ${dst_host_name}: IP: [${dst_ip_old}]" log_info "Network" "Skiping: [${dst_host_name}]: Invalid IP: [${dst_ip_new}]"
fi fi
else else
log_info "Network" "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP: [${dst_ip_old}]" log_info "Network" "Skiping: dst_id: [${dst_id}]: Invalid host_name: [${dst_host_name}]"
fi
fi fi
} }
@@ -924,8 +996,7 @@ network_dst_address_refresh_all()
{ {
for dst_id in ${NETWORK_DST_ID_LIST} for dst_id in ${NETWORK_DST_ID_LIST}
do do
network_dst_tab_get ${dst_id} network_dst_address_refresh "${dst_id}"
network_dst_address_refresh ${dst_id} ${dst_host_name} ${dst_ip}
done done
} }
@@ -1267,6 +1338,8 @@ network_start()
network_forward_start network_forward_start
network_dst_address_init_all
log_info "Network" "Network started!" log_info "Network" "Network started!"
} }

View File

@@ -208,7 +208,7 @@ vpn_job_tab_init()
tab_assign VPN_JOB_TAB "${job_id},Name" "${dst_name}" tab_assign VPN_JOB_TAB "${job_id},Name" "${dst_name}"
tab_assign VPN_JOB_TAB "${job_id},PId" "0" tab_assign VPN_JOB_TAB "${job_id},PId" "0"
tab_assign VPN_JOB_TAB "${job_id},Cmd" "/usr/sbin/openvpn --config ${config_file} --dev ${dst_device} --daemon" tab_assign VPN_JOB_TAB "${job_id},Cmd" "/usr/sbin/openvpn --config ${config_file} --daemon"
tab_assign VPN_JOB_TAB "${job_id},Date" "" tab_assign VPN_JOB_TAB "${job_id},Date" ""
tab_assign VPN_JOB_NAME_IDX "${dst_name}" "${job_id}" tab_assign VPN_JOB_NAME_IDX "${dst_name}" "${job_id}"
@@ -315,6 +315,7 @@ vpn_supervisor()
do do
vpn_job_tab_get "${job_id}" vpn_job_tab_get "${job_id}"
${DEBUG} kill -0 "${job_pid}" 2>/dev/null ${DEBUG} kill -0 "${job_pid}" 2>/dev/null
rc=$? rc=$?
@@ -335,6 +336,8 @@ vpn_supervisor()
tab_assign VPN_JOB_TAB "${job_id},Date" "$(date --rfc-3339=seconds -u)" tab_assign VPN_JOB_TAB "${job_id},Date" "$(date --rfc-3339=seconds -u)"
log_info "VPN" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" log_info "VPN" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!"
network_dst_name_ip_update "${job_name}" "0.0.0.0"
fi fi
done done