- Add log type support,

- Add NETWORK_LOG_TRACE config variable.
This commit is contained in:
2025-07-26 00:01:24 +02:00
parent b76a23a9c7
commit 6996353536
6 changed files with 154 additions and 104 deletions

View File

@@ -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" $*
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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!"

View File

@@ -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!"