diff --git a/usr/local/lib/network.bash b/usr/local/lib/network.bash index 7131f04..70315c3 100644 --- a/usr/local/lib/network.bash +++ b/usr/local/lib/network.bash @@ -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 #-------------------------------------------------------------------------------------------------------------------------- @@ -746,7 +778,7 @@ network_table_set() tab_assign NETWORK_SRC_TAB "${src_id},Table" "${ts_table}" - + ${DEBUG} sed "/^NETWORK_SRC_CONFIG=\"/,/^\"/ { s/^\(${nts_ip//./\\.}[[:space:]]\+\([^\t ]\+[[:space:]]\+\)\{2\}\)[^[:space:]]\+/\1${nts_table}/ }" -i ${NETWORK_CONFIG_FILE} @@ -775,14 +807,19 @@ network_dst_address_refresh() dst_ip_new=$( nc ${proxy_host} ${proxy_port}) - if [[ "${dst_ip_old}" != "${dst_ip_new}" ]] + if is_valid_ip ${dst_ip_new} 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 + if [[ "${dst_ip_old}" != "${dst_ip_new}" ]] + 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 - ${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 } diff --git a/usr/local/lib/vpn.bash b/usr/local/lib/vpn.bash index 0a17953..71d716b 100644 --- a/usr/local/lib/vpn.bash +++ b/usr/local/lib/vpn.bash @@ -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_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} "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)) fi done @@ -227,9 +221,6 @@ vpn_job_tab_deinit() then 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} fi done @@ -282,9 +273,6 @@ vpn_supervisor() log_print "${VPN_LOG_FILE}" "${LOG}" "Starting Supervisor..." -# ${LOG} "Starting Superviosr, PId: [$$]..." -# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Starting Supervisor..." - # Main Loop @@ -301,9 +289,6 @@ vpn_supervisor() then 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} 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)" log_print "${VPN_LOG_FILE}" "${LOG}" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" - -# ${LOG} "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" -# echo >> ${VPN_LOG_FILE} $(date) "($$):" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" - fi + fi done + log_print "${VPN_LOG_FILE}" "${LOG}" "Saving VPN tab..." vpn_job_tab_save sleep 30 + log_print "${VPN_LOG_FILE}" "${LOG}" "Refreshing DNS entries..." network_dst_address_refresh_all done } @@ -407,16 +391,10 @@ vpn_start() 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}" else 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 } @@ -446,14 +424,8 @@ vpn_stop() if [[ "${daemon_pid}" == "0" ]] || [[ $rc != 0 ]] then log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon already stoped!" - -# ${LOG} "($$):" "Daemon already stoped!" -# echo >> ${VPN_LOG_FILE} $(date) "($$):" "Daemon already stoped!" else 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} fi @@ -488,10 +460,10 @@ vpn_status() echo "Number of VPN Jobs: (${#VPN_JOB_IDX[@]})" - if [ -f ${VPN_STATUS_FILE} ] - then - cat ${VPN_STATUS_FILE} - fi +# if [ -f ${VPN_STATUS_FILE} ] +# then +# cat ${VPN_STATUS_FILE} +# fi echo -e "Id | Name | PId | Date | Command" echo "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------"