- Improve VPN supervisor log,

- Add IP validation on refresh.
This commit is contained in:
2025-07-21 18:35:33 +02:00
parent a532fcf8e1
commit 579e6a60ca
2 changed files with 50 additions and 41 deletions

View File

@@ -60,6 +60,38 @@ fi
#--------------------------------------------------------------------------------------------------------------------------
# is_valid_ip
#--------------------------------------------------------------------------------------------------------------------------
is_valid_ip()
{
local ip=$1
local regex='^([0-9]{1,3}\.){3}[0-9]{1,3}$'
if [[ $ip =~ $regex ]]
then
IFS='.' read -r o1 o2 o3 o4 <<< "$ip"
for octet in $o1 $o2 $o3 $o4
do
if (( octet < 0 || octet > 255 ))
then
return 1
fi
done
return 0
else
return 1
fi
}
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
# ip_to_num # ip_to_num
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
@@ -775,14 +807,19 @@ network_dst_address_refresh()
dst_ip_new=$( nc ${proxy_host} ${proxy_port}) dst_ip_new=$( nc ${proxy_host} ${proxy_port})
if [[ "${dst_ip_old}" != "${dst_ip_new}" ]] if is_valid_ip ${dst_ip_new}
then then
${LOG} "Update ${dst_host_name}: Old: [${dst_ip_old}] New: [${dst_ip_new}]" if [[ "${dst_ip_old}" != "${dst_ip_new}" ]]
${DEBUG} /usr/local/sbin/ip_host_update "${dst_host_name/.*}" "${dst_host_name#*.}" "${dst_ip_new}" 60 then
${LOG} "Update ${dst_host_name}: Old: [${dst_ip_old}] 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}" tab_assign NETWORK_DST_TAB "${dst_id},IP" "${dst_ip_new}"
else
${LOG} "Skiping ${dst_host_name}: IP: [${dst_ip_old}]"
fi
else else
${LOG} "Skiping ${dst_host_name}: IP: [${dst_ip_old}]" ${LOG} "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP[${dst_ip_old}]"
fi fi
} }

View File

@@ -29,9 +29,6 @@ declare -g VPN_PID_FILE="/var/lib/network/rx3-vpn.pid"
declare -g VPN_STATUS_FILE="/var/lib/network/rx3-vpn.status" declare -g VPN_STATUS_FILE="/var/lib/network/rx3-vpn.status"
declare -g VPN_STATUS_LOCK="/var/lock/network/rx3-vpn.status" declare -g VPN_STATUS_LOCK="/var/lock/network/rx3-vpn.status"
#declare -g VPN_TEMPLATE_FILE="/etc/openvpn/template/ext-client-tunx.conf"
#declare -g VPN_CONFIG_FILE="/etc/openvpn/ext-client-DEVICE.conf"
@@ -198,9 +195,6 @@ vpn_job_tab_init()
log_print "${VPN_LOG_FILE}" "${LOG}" "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]" log_print "${VPN_LOG_FILE}" "${LOG}" "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]"
# ${LOG} "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]"
# echo >>${VPN_LOG_FILE} $(date) "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]"
job_id=$(( ${job_id} + 1)) job_id=$(( ${job_id} + 1))
fi fi
done done
@@ -227,9 +221,6 @@ vpn_job_tab_deinit()
then then
log_print "${VPN_LOG_FILE}" "${LOG}" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..." log_print "${VPN_LOG_FILE}" "${LOG}" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..."
# ${LOG} $(date) "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..."
# echo >> ${VPN_LOG_FILE} $(date) "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..."
kill -15 ${job_pid} kill -15 ${job_pid}
fi fi
done done
@@ -282,9 +273,6 @@ vpn_supervisor()
log_print "${VPN_LOG_FILE}" "${LOG}" "Starting Supervisor..." log_print "${VPN_LOG_FILE}" "${LOG}" "Starting Supervisor..."
# ${LOG} "Starting Superviosr, PId: [$$]..."
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Starting Supervisor..."
# Main Loop # Main Loop
@@ -301,9 +289,6 @@ vpn_supervisor()
then then
log_print "${VPN_LOG_FILE}" "${LOG}" "Restarting Cmd: [${job_cmd}]..." log_print "${VPN_LOG_FILE}" "${LOG}" "Restarting Cmd: [${job_cmd}]..."
# ${LOG} "Restarting Cmd: [${job_cmd}]..."
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Restarting Cmd: [${job_cmd}]..."
eval ${DEBUG} ${job_cmd} eval ${DEBUG} ${job_cmd}
job_pid="$( ps aux | grep "${job_cmd}" | grep -v grep | head -1 | awk '{print $2}')" job_pid="$( ps aux | grep "${job_cmd}" | grep -v grep | head -1 | awk '{print $2}')"
@@ -317,16 +302,15 @@ 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_print "${VPN_LOG_FILE}" "${LOG}" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" log_print "${VPN_LOG_FILE}" "${LOG}" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!"
fi
# ${LOG} "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!"
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!"
fi
done done
log_print "${VPN_LOG_FILE}" "${LOG}" "Saving VPN tab..."
vpn_job_tab_save vpn_job_tab_save
sleep 30 sleep 30
log_print "${VPN_LOG_FILE}" "${LOG}" "Refreshing DNS entries..."
network_dst_address_refresh_all network_dst_address_refresh_all
done done
} }
@@ -408,15 +392,9 @@ vpn_start()
log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon started, PId: [${daemon_pid}]" log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon started, PId: [${daemon_pid}]"
# ${LOG} "($$):" "Daemon started, PId: [${daemon_pid}]"
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Daemon started, PId: [${daemon_pid}]"
echo >${VPN_PID_FILE} "${daemon_pid}" echo >${VPN_PID_FILE} "${daemon_pid}"
else else
log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon already running PId: [${daemon_pid}]" log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon already running PId: [${daemon_pid}]"
# echo 1>&2 "($$):" "Daemon already running PId: [${daemon_pid}]"
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Daemon already running PId: [${daemon_pid}]"
fi fi
} }
@@ -446,15 +424,9 @@ vpn_stop()
if [[ "${daemon_pid}" == "0" ]] || [[ $rc != 0 ]] if [[ "${daemon_pid}" == "0" ]] || [[ $rc != 0 ]]
then then
log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon already stoped!" log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon already stoped!"
# ${LOG} "($$):" "Daemon already stoped!"
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Daemon already stoped!"
else else
log_print "${VPN_LOG_FILE}" "${LOG}" "Stoping daemon, PId: [${daemon_pid}]..." log_print "${VPN_LOG_FILE}" "${LOG}" "Stoping daemon, PId: [${daemon_pid}]..."
# ${LOG} "($$):" "Stoping daemon, PId: [${daemon_pid}]..."
# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Stoping daemon, PId: [${daemon_pid}]..."
kill -15 ${daemon_pid} kill -15 ${daemon_pid}
fi fi
@@ -488,10 +460,10 @@ vpn_status()
echo "Number of VPN Jobs: (${#VPN_JOB_IDX[@]})" echo "Number of VPN Jobs: (${#VPN_JOB_IDX[@]})"
if [ -f ${VPN_STATUS_FILE} ] # if [ -f ${VPN_STATUS_FILE} ]
then # then
cat ${VPN_STATUS_FILE} # cat ${VPN_STATUS_FILE}
fi # fi
echo -e "Id | Name | PId | Date | Command" echo -e "Id | Name | PId | Date | Command"
echo "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------" echo "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------"