From 69963535364ad054fa7402fa24d47db17d0483c7 Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Sat, 26 Jul 2025 00:01:24 +0200 Subject: [PATCH] - Add log type support, - Add NETWORK_LOG_TRACE config variable. --- usr/local/lib/default.bash | 130 +++++++++++++++++++++++++----------- usr/local/lib/dns.bash | 22 +++--- usr/local/lib/network.bash | 56 ++++++++-------- usr/local/lib/vpn.bash | 34 +++++----- usr/local/sbin/vyprvpn-down | 8 +-- usr/local/sbin/vyprvpn-up | 8 +-- 6 files changed, 154 insertions(+), 104 deletions(-) diff --git a/usr/local/lib/default.bash b/usr/local/lib/default.bash index ed8ee7d..78b3a81 100644 --- a/usr/local/lib/default.bash +++ b/usr/local/lib/default.bash @@ -15,6 +15,7 @@ fi declare -g LOG_FILE="" declare -g LOG_LOCK="" declare -g LOG_ECHO="" +declare -g LOG_TRACE="DISABLED" @@ -289,7 +290,7 @@ file_unlock() #-------------------------------------------------------------------------------------------------------------------------- -# log_file_set +# log_set #-------------------------------------------------------------------------------------------------------------------------- log_set() @@ -297,47 +298,17 @@ log_set() local log_file="$1" local lock_file="$2" local echo_function="$3" + local log_trace="$4" - LOG_FILE="${log_file}" - LOG_LOCK="${lock_file}" - LOG_ECHO="${echo_function}" -} + LOG_FILE="${log_file}" + LOG_LOCK="${lock_file}" + LOG_ECHO="${echo_function}" - - - - -#-------------------------------------------------------------------------------------------------------------------------- -# log_print_file -#-------------------------------------------------------------------------------------------------------------------------- - -log_print_file() -{ - local log_file="$1" - local lock_file="$2" - local echo_function="$3" - local log_prefix="$4" - - - shift; shift; shift; shift - - ${echo_function} "($BASHPID):" "$*" - - if [[ "${log_file}" != "" ]] - then - if [[ "${lock_file}" != "" ]] - then - file_lock "${lock_file}" WRITE 8 - fi - - printf >> "${log_file}" "%s %9s %8s %s\n" "$(date --rfc-3339=seconds -u)" "($BASHPID)" "${log_prefix}:" "$*" - - if [[ "${lock_file}" != "" ]] - then - file_unlock 8 - fi - fi + if [[ ${log_trace} != "" ]] + then + LOG_TRACE="${log_trace}" + fi } @@ -350,5 +321,84 @@ log_print_file() log_print() { - log_print_file "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" $* + local log_file="$1" + local lock_file="$2" + local echo_function="$3" + local log_type="$4" + local log_prefix="$5" + + + shift; shift; shift; shift; shift + + if [[ "${log_type}" != "TRA" ]] || [[ "${LOG_TRACE}" != "DISABLED" ]] + then + ${echo_function} "($BASHPID):" "$*" + + if [[ "${log_file}" != "" ]] + then + if [[ "${lock_file}" != "" ]] + then + 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}:" "$*" + + if [[ "${lock_file}" != "" ]] + then + file_unlock 8 + fi + fi + fi +} + + + + + +#-------------------------------------------------------------------------------------------------------------------------- +# log_trace +#-------------------------------------------------------------------------------------------------------------------------- + +log_trace() +{ + log_print "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" "TRA" $* +} + + + + + +#-------------------------------------------------------------------------------------------------------------------------- +# log_info +#-------------------------------------------------------------------------------------------------------------------------- + +log_info() +{ + log_print "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" "INF" $* +} + + + + + +#-------------------------------------------------------------------------------------------------------------------------- +# log_warning +#-------------------------------------------------------------------------------------------------------------------------- + +log_warning() +{ + log_print "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" "WRN" $* +} + + + + + +#-------------------------------------------------------------------------------------------------------------------------- +# log_error +#-------------------------------------------------------------------------------------------------------------------------- + +log_error() +{ + log_print "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" "ERR" $* } diff --git a/usr/local/lib/dns.bash b/usr/local/lib/dns.bash index 3fa70e5..c3dc136 100644 --- a/usr/local/lib/dns.bash +++ b/usr/local/lib/dns.bash @@ -53,13 +53,13 @@ declare -g DNS_CACHE_UPDATED=0 dns_tab_load() { - log_print "DNS" "Loading DNS cache..." + log_trace "DNS" "Loading DNS cache..." file_lock "${DNS_CACHE_LOCK}" READ 9 if [[ ( -e "${DNS_CACHE_FILE}" ) && ( "${NETWORK_CONFIG_FILE}" -ot "${DNS_CACHE_FILE}" ) ]] then - log_print "DNS" "Read CacheFile" + log_trace "DNS" "Read CacheFile" while IFS= read -r line do @@ -76,7 +76,7 @@ dns_tab_load() fi done < ${DNS_CACHE_FILE} else - log_print "DNS" "Init CacheFile" + log_trace "DNS" "Init CacheFile" >${DNS_CACHE_FILE} fi @@ -96,13 +96,13 @@ dns_tab_load() dns_tab_save() { - log_print "DNS" "Saving DNS cache..." + log_trace "DNS" "Saving DNS cache..." if [[ "${DNS_CACHE_UPDATED}" != "0" ]] then file_lock "${DNS_CACHE_LOCK}" WRITE 9 - log_print "DNS" "Write CacheFile" + log_trace "DNS" "Write CacheFile" ( for key in "${!DNS_A_TAB[@]}" @@ -143,7 +143,7 @@ dns_tab_get() then dns_value="${DNS_A_TAB["${dns_key}"]}" else - log_print "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]" + log_trace "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]" return 1 fi ;; @@ -153,13 +153,13 @@ dns_tab_get() then dns_value="${DNS_PTR_TAB["${dns_key}"]}" else - log_print "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]" + log_trace "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]" return 1 fi ;; esac - log_print "DNS" "Lookup succeed: Type: [${dns_type}] Key: [${dns_key}] Value: [${dns_value}]" + log_trace "DNS" "Lookup succeed: Type: [${dns_type}] Key: [${dns_key}] Value: [${dns_value}]" return 0 } @@ -181,9 +181,9 @@ dns_tab_put() if [[ "${dtp_value}" == "" ]] then - log_print "DNS" "Skiping cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]" + log_trace "DNS" "Skiping cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]" else - log_print "DNS" "Update cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]" + log_trace "DNS" "Update cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]" var_assign DNS_${dtp_type}_ID_LIST "${dtp_key}" INC tab_assign DNS_${dtp_type}_TAB "${dtp_key}" "${dtp_value}" @@ -216,7 +216,7 @@ dns_lookup() if [[ "$?" != "0" ]] then - log_print "DNS" "Out of Cache: Type: [${dl_type}] Key: [${dl_key}] Flag: [${dl_flag}]" + log_trace "DNS" "Out of Cache: Type: [${dl_type}] Key: [${dl_key}] Flag: [${dl_flag}]" case ${dl_type} in diff --git a/usr/local/lib/network.bash b/usr/local/lib/network.bash index 7bb3ce5..2f52c53 100644 --- a/usr/local/lib/network.bash +++ b/usr/local/lib/network.bash @@ -46,6 +46,8 @@ declare -g NETWORK_LOG_FILE declare -g NETWORK_LOG_LOCK #declare -g NETWORK_LOG_LOCK="${NETWORK_LOG_FILE}" +declare -g NETWORK_LOG_TRACE + declare -g NETWORK_NC_TIMEOUT @@ -140,7 +142,7 @@ num_to_ip() network_common_load() { - log_print "Network" "Loading common..." + log_trace "Network" "Loading common..." NETWORK_OPENVPN_STATUS="$( sudo /usr/local/sbin/openvpn-status)" NETWORK_TABLE_LIST="" @@ -175,7 +177,7 @@ network_ip_route_tab_load() nirtl_id=0 - log_print "Network" "Loading IP Route tab..." + log_trace "Network" "Loading IP Route tab..." while IFS= read -r line do @@ -263,7 +265,7 @@ network_dst_tab_load() ndtl_id=0 - log_print "Network" "Loading Dst tab..." + log_trace "Network" "Loading Dst tab..." while IFS= read -r line do @@ -449,7 +451,7 @@ network_src_tab_load() nstl_port_default=3000 - log_print "Network" "Loading Src tab..." + log_trace "Network" "Loading Src tab..." ip_base=$( ip_to_num ${NETWORK_SRC_LOCAL_ADDRESS}) @@ -659,7 +661,7 @@ network_src_tab_ip_lookup() network_tab_load() { - log_print "Network" "Loading config..." + log_trace "Network" "Loading config..." dns_tab_load @@ -707,14 +709,14 @@ network_table_init() if [[ ${dst_type} == "0" ]] then - log_print "Network" "Copy main default route into table 3 (VPN Local routing table)" + log_trace "Network" "Copy main default route into table 3 (VPN Local routing table)" if [[ "$(ip route list match 0.0.0.0 table main)" != "" ]] then ${DEBUG} ip route add $(ip route list match 0.0.0.0 table main) table 3 fi else - log_print "Network" "Define default route to device: [${dst_device}] into table: [${dst_table}]" + log_trace "Network" "Define default route to device: [${dst_device}] into table: [${dst_table}]" if [[ "$(ip link show ${dst_device})" != "" ]] then @@ -722,7 +724,7 @@ network_table_init() fi fi - log_print "Network" "Add Rx3 routes in VPN tables" + log_trace "Network" "Add Rx3 routes in VPN tables" for ip_route_id in ${NETWORK_IP_ROUTE_ID_LIST} do @@ -743,7 +745,7 @@ network_table_init() network_table_deinit() { - log_print "Network" "Remove Rx3 routes in VPN tables" + log_trace "Network" "Remove Rx3 routes in VPN tables" for table in ${NETWORK_TABLE_LIST} do @@ -760,7 +762,7 @@ network_table_deinit() network_dst_tab_get ${dst_id} - log_print "Network" "Remove default route in table: [${dst_table}]" + log_trace "Network" "Remove default route in table: [${dst_table}]" ${DEBUG} ip route del default table ${dst_table} 2>/dev/null done @@ -828,15 +830,15 @@ network_dst_address_refresh() then if [[ "${dst_ip_old}" != "${dst_ip_new}" ]] then - log_print "Network" "Update ${dst_host_name}: Old: [${dst_ip_old}] New: [${dst_ip_new}]" + log_info "Network" "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}" else - log_print "Network" "Skiping ${dst_host_name}: IP: [${dst_ip_old}]" + log_trace "Network" "Skiping ${dst_host_name}: IP: [${dst_ip_old}]" fi else - log_print "Network" "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP: [${dst_ip_old}]" + log_info "Network" "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP: [${dst_ip_old}]" fi } @@ -876,18 +878,18 @@ function bridge_up bu_table=$6 - log_print "Network" "Create bridge [${bu_bridge_device}]..." + log_trace "Network" "Create bridge [${bu_bridge_device}]..." ${DEBUG} ip link add name ${bu_bridge_device} type bridge - log_print "Network" "Configure host side [${bu_bridge_device}:${bu_bridge_address}/${bu_bridge_mask}]..." + log_trace "Network" "Configure host side [${bu_bridge_device}:${bu_bridge_address}/${bu_bridge_mask}]..." ${DEBUG} ip link set ${bu_bridge_device} up ${DEBUG} ip addr add ${bu_bridge_address}/${bu_bridge_mask} dev ${bu_bridge_device} - log_print "Network" "Configure IP rule and routing [${bu_bridge_device}]..." + log_trace "Network" "Configure IP rule and routing [${bu_bridge_device}]..." ${DEBUG} ip rule add from ${bu_peer_address} table ${bu_table} @@ -916,7 +918,7 @@ function bridge_down bd_table=$6 - log_print "Network" "Remove IP routing and rule [${bd_bridge_device}]..." + log_trace "Network" "Remove IP routing and rule [${bd_bridge_device}]..." for bd_tab in ${NETWORK_TABLE_LIST} do @@ -926,7 +928,7 @@ function bridge_down ${DEBUG} ip rule del from ${bd_peer_address} table ${bd_table} 2>/dev/null - log_print "Network" "Remove bridge [${bd_bridge_device}]..." + log_trace "Network" "Remove bridge [${bd_bridge_device}]..." ${DEBUG} ip link show ${bd_bridge_device} &>/dev/null && ${DEBUG} ip link del ${bd_bridge_device} } @@ -941,7 +943,7 @@ function bridge_down network_bridge_init() { - log_print "Network" "Add all Bridges" + log_trace "Network" "Add all Bridges" for src_id in ${NETWORK_SRC_ID_LIST} do @@ -970,7 +972,7 @@ network_bridge_init() network_bridge_deinit() { - log_print "Network" "Remove all Bridge" + log_trace "Network" "Remove all Bridge" for src_id in ${NETWORK_SRC_ID_LIST} do @@ -1036,12 +1038,12 @@ network_forward_remove() network_forward_start() { - log_print "Network" "Create VPN forward chain" + log_trace "Network" "Create VPN forward chain" ${DEBUG} iptables -t nat -N PREROUTING-VPN - log_print "Network" "Add jump rule for VPN" + log_trace "Network" "Add jump rule for VPN" for dst_id in ${NETWORK_DST_ID_LIST} do @@ -1054,7 +1056,7 @@ network_forward_start() done - log_print "Network" "Add VPN client addresse rules" + log_trace "Network" "Add VPN client addresse rules" for src_id in ${NETWORK_SRC_ID_LIST} do @@ -1079,7 +1081,7 @@ network_forward_start() network_forward_stop() { - log_print "Network" "Remove VPN client addresse rules" + log_trace "Network" "Remove VPN client addresse rules" for src_id in ${NETWORK_SRC_ID_LIST} do @@ -1094,7 +1096,7 @@ network_forward_stop() done - log_print "Network" "Remove Jump rule for VPN" + log_trace "Network" "Remove Jump rule for VPN" for dst_id in ${NETWORK_DST_ID_LIST} do @@ -1107,7 +1109,7 @@ network_forward_stop() done - log_print "Network" "Delete VPN forward chain" + log_trace "Network" "Delete VPN forward chain" ${DEBUG} iptables -t nat -X PREROUTING-VPN 2>/dev/null } @@ -1148,7 +1150,7 @@ network_init() export ECHO=":" fi - log_set "${NETWORK_LOG_FILE}" "${NETWORK_LOG_LOCK}" "${ECHO}" + log_set "${NETWORK_LOG_FILE}" "${NETWORK_LOG_LOCK}" "${ECHO}" "${NETWORK_LOG_TRACE}" dns_init diff --git a/usr/local/lib/vpn.bash b/usr/local/lib/vpn.bash index f8a7587..230d383 100644 --- a/usr/local/lib/vpn.bash +++ b/usr/local/lib/vpn.bash @@ -54,7 +54,7 @@ vpn_config_make() local mng_port=$(( 2330 + ${Device/tun/})) - log_print "VPN" "Creating config File: [${Config_File}] Device: [${Device}] Mng_Port: (${mng_port}) Target_Config: [${Target_Config}]" + log_info "VPN" "Creating config File: [${Config_File}] Device: [${Device}] Mng_Port: (${mng_port}) Target_Config: [${Target_Config}]" ${DEBUG} cp -f ${VPN_TEMPLATE_FILE} ${Config_File} ${DEBUG} sed -e "s/TARGET-CFG/${Target_Config}-client.conf/" -e "s/VPN-DEVICE/${Device}/" -e "s/MNG-PORT/${mng_port}/" -i ${Config_File} @@ -76,7 +76,7 @@ vpn_job_tab_load() local job_cmd - log_print "VPN" "Loading Job tab..." + log_trace "VPN" "Loading Job tab..." while IFS= read -r line do @@ -197,7 +197,7 @@ vpn_job_tab_init() vpn_config_make "${config_file}" "${dst_device}" "${dst_config}" - log_print "VPN" "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]" + log_trace "VPN" "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]" job_id=$(( ${job_id} + 1)) fi @@ -223,13 +223,13 @@ vpn_job_tab_deinit() if [[ "${job_PId}" -gt 0 ]] then - log_print "VPN" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..." + log_info "VPN" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..." kill -15 ${job_pid} fi done - log_print "VPN" "Flushing status file..." + log_info "VPN" "Flushing status file..." file_lock ${VPN_STATUS_LOCK} WRITE 9 @@ -284,7 +284,7 @@ vpn_supervisor() local job_pid - log_print "VPN" "Starting Supervisor..." + log_info "VPN" "Starting Supervisor..." # Main Loop @@ -300,7 +300,7 @@ vpn_supervisor() if [[ ${job_pid} == 0 ]] || [[ $rc != 0 ]] then - log_print "VPN" "Restarting Cmd: [${job_cmd}]..." + log_info "VPN" "Restarting Cmd: [${job_cmd}]..." eval ${DEBUG} ${job_cmd} @@ -314,16 +314,16 @@ vpn_supervisor() tab_assign VPN_JOB_TAB "${job_id},PId" "${job_pid}" tab_assign VPN_JOB_TAB "${job_id},Date" "$(date --rfc-3339=seconds -u)" - log_print "VPN" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" + log_info "VPN" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!" fi done - log_print "VPN" "Saving VPN tab..." + log_trace "VPN" "Saving VPN tab..." vpn_job_tab_save sleep ${VPN_LOOP_DELAY} - log_print "VPN" "Refreshing DNS entries..." + log_trace "VPN" "Refreshing DNS entries..." network_dst_address_refresh_all done } @@ -350,13 +350,13 @@ vpn_jobs_kill() if [[ ${job_pid} != 0 ]] && [[ $rc == 0 ]] then - log_print "VPN" "Killing Job Id: [${job_id}] Job_PId: [${job_pid}] Cmd: [${job_cmd}]..." + log_info "VPN" "Killing Job Id: [${job_id}] Job_PId: [${job_pid}] Cmd: [${job_cmd}]..." kill -15 "${job_pid}" fi done - log_print "VPN" "Saving VPN tab..." + log_trace "VPN" "Saving VPN tab..." vpn_job_tab_save } @@ -378,8 +378,6 @@ vpn_init() file_dir_init ${VPN_STATUS_FILE} root apache file_unlock 9 - # file_dir_init ${VPN_LOG_FILE} root apache - if [[ -s "${VPN_STATUS_FILE}" ]] then file_lock ${VPN_STATUS_LOCK} READ 9 @@ -435,11 +433,11 @@ vpn_start() vpn_supervisor & daemon_pid=$! - log_print "VPN" "Daemon started, PId: [${daemon_pid}]" + log_info "VPN" "Daemon started, PId: [${daemon_pid}]" echo >${VPN_PID_FILE} "${daemon_pid}" else - log_print "VPN" "Daemon already running PId: [${daemon_pid}]" + log_info "VPN" "Daemon already running PId: [${daemon_pid}]" fi } @@ -468,9 +466,9 @@ vpn_stop() if [[ "${daemon_pid}" == "0" ]] || [[ $rc != 0 ]] then - log_print "VPN" "Daemon already stoped!" + log_info "VPN" "Daemon already stoped!" else - log_print "VPN" "Stoping daemon, PId: [${daemon_pid}]..." + log_info "VPN" "Stoping daemon, PId: [${daemon_pid}]..." kill -15 ${daemon_pid} fi diff --git a/usr/local/sbin/vyprvpn-down b/usr/local/sbin/vyprvpn-down index e966681..dc5213d 100755 --- a/usr/local/sbin/vyprvpn-down +++ b/usr/local/sbin/vyprvpn-down @@ -47,15 +47,15 @@ line="[${Dev}]: Local_MTU: [${Local_MTU}] Remote_MTU: [${Remote_MTU}] Local_ if [[ "${dst_table}" != "" ]] then - log_print "VPN-Down" "$line" " Status: [OK]" + log_info "VPN-Down" "$line" " Status: [OK]" remote_address=0.0.0.0 - log_print "VPN-Down" "[${Dev}]: set ${remote_address} to vpn${id}.vpn.rx3" + log_trace "VPN-Down" "[${Dev}]: set ${remote_address} to vpn${id}.vpn.rx3" ${DEBUG} ip_host_update vpn${id} vpn.rx3 ${remote_address} 60 else - log_print "VPN-Down" "$line" " Status: [ERROR]!" + log_error "VPN-Down" "$line" " Status: [ERROR]!" fi -log_print "VPN-Down" "[${Dev}]: Done!" +log_trace "VPN-Down" "[${Dev}]: Done!" diff --git a/usr/local/sbin/vyprvpn-up b/usr/local/sbin/vyprvpn-up index e567f33..d986c56 100755 --- a/usr/local/sbin/vyprvpn-up +++ b/usr/local/sbin/vyprvpn-up @@ -48,13 +48,13 @@ line="[${Dev}]: Local_MTU: [${Local_MTU}] Remote_MTU: [${Remote_MTU}] Local_ if [[ "${dst_table}" != "" ]] then - log_print "VPN-Up" "$line" " Status: [OK]" - log_print "VPN-Up" "[${Dev}]: ip route add table: [${dst_table}] default dev: [${Dev}]" + log_info "VPN-Up" "$line" " Status: [OK]" + log_trace "VPN-Up" "[${Dev}]: ip route add table: [${dst_table}] default dev: [${Dev}]" ${DEBUG} ip route del table ${dst_table} default ${DEBUG} ip route add table ${dst_table} default dev ${Dev} else - log_print "VPN-Up" "$line" " Status: [ERROR]!" + log_error "VPN-Up" "$line" " Status: [ERROR]!" fi -log_print "VPN-Up" "[${Dev}]: Done!" +log_trace "VPN-Up" "[${Dev}]: Done!"