- New centralized logfile system for Network, DNS & VPN,
- Now kill VPN suprocesses, - Move file config in syscoinfig file, - Misc fixes.
This commit is contained in:
@@ -12,6 +12,9 @@ fi
|
|||||||
# Global Variable
|
# Global Variable
|
||||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
declare -g LOG_FILE=""
|
||||||
|
declare -g LOG_LOCK=""
|
||||||
|
declare -g LOG_ECHO=""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -253,7 +256,7 @@ file_lock()
|
|||||||
|
|
||||||
if ! flock ${flag} -w 5 ${desc}
|
if ! flock ${flag} -w 5 ${desc}
|
||||||
then
|
then
|
||||||
err_echo "Failed to acquire read lock on: [${file}]"
|
err_echo "Failed to acquire [${mode}] lock on: [${file}]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -285,18 +288,67 @@ file_unlock()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
# log_file_set
|
||||||
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
log_set()
|
||||||
|
{
|
||||||
|
local log_file="$1"
|
||||||
|
local lock_file="$2"
|
||||||
|
local echo_function="$3"
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
# log_print
|
# log_print
|
||||||
#--------------------------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
log_print()
|
log_print()
|
||||||
{
|
{
|
||||||
local log_file="$1"
|
log_print_file "${LOG_FILE}" "${LOG_LOCK}" "${LOG_ECHO}" $*
|
||||||
local echo_function="$2"
|
|
||||||
|
|
||||||
|
|
||||||
shift; shift
|
|
||||||
|
|
||||||
${echo_function} "($BASHPID):" "$*"
|
|
||||||
echo >> ${VPN_LOG_FILE} $(date) "($BASHPID):" "$*"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,17 +31,17 @@ declare -g DNS_A_ID_LIST
|
|||||||
declare -Ag DNS_PTR_TAB
|
declare -Ag DNS_PTR_TAB
|
||||||
declare -g DNS_PTR_ID_LIST
|
declare -g DNS_PTR_ID_LIST
|
||||||
|
|
||||||
declare -g DNS_CACHE_FILE="/var/cache/network/dns.cache"
|
declare -g DNS_CACHE_FILE
|
||||||
declare -g DNS_CACHE_LOCK="/var/lock/network/dns.lock"
|
declare -g DNS_CACHE_LOCK
|
||||||
#declare -g DNS_CACHE_LOCK="${DNS_CACHE_FILE}"
|
#declare -g DNS_CACHE_LOCK="${DNS_CACHE_FILE}"
|
||||||
|
|
||||||
declare -g DNS_CACHE_UPDATED=0
|
declare -g DNS_CACHE_UPDATED=0
|
||||||
|
|
||||||
|
|
||||||
if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
|
#if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
|
||||||
then
|
#then
|
||||||
export LOG=":"
|
# export LOG=":"
|
||||||
fi
|
#fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -53,13 +53,13 @@ fi
|
|||||||
|
|
||||||
dns_tab_load()
|
dns_tab_load()
|
||||||
{
|
{
|
||||||
${LOG} 1>&2 "Loading DNS cache..."
|
log_print "DNS" "Loading DNS cache..."
|
||||||
|
|
||||||
file_lock "${DNS_CACHE_LOCK}" READ 9
|
file_lock "${DNS_CACHE_LOCK}" READ 9
|
||||||
|
|
||||||
if [[ ( -e "${DNS_CACHE_FILE}" ) && ( "${NETWORK_CONFIG_FILE}" -ot "${DNS_CACHE_FILE}" ) ]]
|
if [[ ( -e "${DNS_CACHE_FILE}" ) && ( "${NETWORK_CONFIG_FILE}" -ot "${DNS_CACHE_FILE}" ) ]]
|
||||||
then
|
then
|
||||||
${LOG} 1>&2 "DNS: Read CacheFile"
|
log_print "DNS" "Read CacheFile"
|
||||||
|
|
||||||
while IFS= read -r line
|
while IFS= read -r line
|
||||||
do
|
do
|
||||||
@@ -76,7 +76,7 @@ dns_tab_load()
|
|||||||
fi
|
fi
|
||||||
done < ${DNS_CACHE_FILE}
|
done < ${DNS_CACHE_FILE}
|
||||||
else
|
else
|
||||||
${LOG} 1>&2 "DNS: Init CacheFile"
|
log_print "DNS" "Init CacheFile"
|
||||||
|
|
||||||
>${DNS_CACHE_FILE}
|
>${DNS_CACHE_FILE}
|
||||||
fi
|
fi
|
||||||
@@ -96,13 +96,13 @@ dns_tab_load()
|
|||||||
|
|
||||||
dns_tab_save()
|
dns_tab_save()
|
||||||
{
|
{
|
||||||
${LOG} 1>&2 "Saving DNS cache..."
|
log_print "DNS" "Saving DNS cache..."
|
||||||
|
|
||||||
if [[ "${DNS_CACHE_UPDATED}" != "0" ]]
|
if [[ "${DNS_CACHE_UPDATED}" != "0" ]]
|
||||||
then
|
then
|
||||||
file_lock "${DNS_CACHE_LOCK}" WRITE 9
|
file_lock "${DNS_CACHE_LOCK}" WRITE 9
|
||||||
|
|
||||||
${LOG} 1>&2 "DNS: Write CacheFile"
|
log_print "DNS" "Write CacheFile"
|
||||||
|
|
||||||
(
|
(
|
||||||
for key in "${!DNS_A_TAB[@]}"
|
for key in "${!DNS_A_TAB[@]}"
|
||||||
@@ -143,7 +143,7 @@ dns_tab_get()
|
|||||||
then
|
then
|
||||||
dns_value="${DNS_A_TAB["${dns_key}"]}"
|
dns_value="${DNS_A_TAB["${dns_key}"]}"
|
||||||
else
|
else
|
||||||
${LOG} "DNS: Lookup failed: Type: [${dns_type}] Key: [${dns_key}]"
|
log_print "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@@ -153,13 +153,13 @@ dns_tab_get()
|
|||||||
then
|
then
|
||||||
dns_value="${DNS_PTR_TAB["${dns_key}"]}"
|
dns_value="${DNS_PTR_TAB["${dns_key}"]}"
|
||||||
else
|
else
|
||||||
${LOG} "DNS: Lookup failed: Type: [${dns_type}] Key: [${dns_key}]"
|
log_print "DNS" "Lookup failed: Type: [${dns_type}] Key: [${dns_key}]"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
${LOG} "DNS: Lookup succeed: Type: [${dns_type}] Key: [${dns_key}] Value: [${dns_value}]"
|
log_print "DNS" "Lookup succeed: Type: [${dns_type}] Key: [${dns_key}] Value: [${dns_value}]"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -181,9 +181,9 @@ dns_tab_put()
|
|||||||
|
|
||||||
if [[ "${dtp_value}" == "" ]]
|
if [[ "${dtp_value}" == "" ]]
|
||||||
then
|
then
|
||||||
${LOG} 1>&2 "DNS: Skiping cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]"
|
log_print "DNS" "Skiping cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]"
|
||||||
else
|
else
|
||||||
${LOG} 1>&2 "DNS: Update cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]"
|
log_print "DNS" "Update cache entry: Type: [${dtp_type}] Key: [${dtp_key}] Value: [${dtp_value}]"
|
||||||
|
|
||||||
var_assign DNS_${dtp_type}_ID_LIST "${dtp_key}" INC
|
var_assign DNS_${dtp_type}_ID_LIST "${dtp_key}" INC
|
||||||
tab_assign DNS_${dtp_type}_TAB "${dtp_key}" "${dtp_value}"
|
tab_assign DNS_${dtp_type}_TAB "${dtp_key}" "${dtp_value}"
|
||||||
@@ -216,7 +216,7 @@ dns_lookup()
|
|||||||
|
|
||||||
if [[ "$?" != "0" ]]
|
if [[ "$?" != "0" ]]
|
||||||
then
|
then
|
||||||
${LOG} "DNS: Out of Cache: Type: [${dl_type}] Key: [${dl_key}] Flag: [${dl_flag}]"
|
log_print "DNS" "Out of Cache: Type: [${dl_type}] Key: [${dl_key}] Flag: [${dl_flag}]"
|
||||||
|
|
||||||
case ${dl_type}
|
case ${dl_type}
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -39,24 +39,12 @@ declare -Ag NETWORK_DST_NAME_IDX
|
|||||||
declare -Ag NETWORK_DST_DEV_IDX
|
declare -Ag NETWORK_DST_DEV_IDX
|
||||||
|
|
||||||
declare -g NETWORK_CONFIG_FILE="/etc/sysconfig/rx3-network"
|
declare -g NETWORK_CONFIG_FILE="/etc/sysconfig/rx3-network"
|
||||||
declare -g NETWORK_CONFIG_LOCK="/var/lock/network/rx3-network"
|
declare -g NETWORK_CONFIG_LOCK="/var/lock/network/config"
|
||||||
#declare -g NETWORK_CONFIG_LOCK="${NETWORK_CONFIG_FILE}"
|
#declare -g NETWORK_CONFIG_LOCK="${NETWORK_CONFIG_FILE}"
|
||||||
|
|
||||||
|
declare -g NETWORK_LOG_FILE
|
||||||
|
declare -g NETWORK_LOG_LOCK
|
||||||
|
#declare -g NETWORK_LOG_LOCK="${NETWORK_LOG_FILE}"
|
||||||
|
|
||||||
file_lock ${NETWORK_CONFIG_LOCK} READ 9
|
|
||||||
|
|
||||||
[ -e "${NETWORK_CONFIG_FILE}" ] && . "${NETWORK_CONFIG_FILE}"
|
|
||||||
|
|
||||||
file_unlock 9
|
|
||||||
|
|
||||||
|
|
||||||
if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
|
|
||||||
then
|
|
||||||
export LOG=":"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -150,7 +138,7 @@ num_to_ip()
|
|||||||
|
|
||||||
network_common_load()
|
network_common_load()
|
||||||
{
|
{
|
||||||
${LOG} 1>&2 "Loading common..."
|
log_print "Network" "Loading common..."
|
||||||
|
|
||||||
NETWORK_OPENVPN_STATUS="$( sudo /usr/local/sbin/openvpn-status)"
|
NETWORK_OPENVPN_STATUS="$( sudo /usr/local/sbin/openvpn-status)"
|
||||||
NETWORK_TABLE_LIST=""
|
NETWORK_TABLE_LIST=""
|
||||||
@@ -185,7 +173,7 @@ network_ip_route_tab_load()
|
|||||||
nirtl_id=0
|
nirtl_id=0
|
||||||
|
|
||||||
|
|
||||||
${LOG} 1>&2 "Loading IP Route tab..."
|
log_print "Network" "Loading IP Route tab..."
|
||||||
|
|
||||||
while IFS= read -r line
|
while IFS= read -r line
|
||||||
do
|
do
|
||||||
@@ -273,7 +261,7 @@ network_dst_tab_load()
|
|||||||
ndtl_id=0
|
ndtl_id=0
|
||||||
|
|
||||||
|
|
||||||
${LOG} 1>&2 "Loading Dst tab..."
|
log_print "Network" "Loading Dst tab..."
|
||||||
|
|
||||||
while IFS= read -r line
|
while IFS= read -r line
|
||||||
do
|
do
|
||||||
@@ -459,7 +447,7 @@ network_src_tab_load()
|
|||||||
nstl_port_default=3000
|
nstl_port_default=3000
|
||||||
|
|
||||||
|
|
||||||
${LOG} 1>&2 "Loading Src tab..."
|
log_print "Network" "Loading Src tab..."
|
||||||
|
|
||||||
ip_base=$( ip_to_num ${NETWORK_SRC_LOCAL_ADDRESS})
|
ip_base=$( ip_to_num ${NETWORK_SRC_LOCAL_ADDRESS})
|
||||||
|
|
||||||
@@ -669,7 +657,7 @@ network_src_tab_ip_lookup()
|
|||||||
|
|
||||||
network_tab_load()
|
network_tab_load()
|
||||||
{
|
{
|
||||||
${LOG} 1>&2 "Loading config..."
|
log_print "Network" "Loading config..."
|
||||||
|
|
||||||
dns_tab_load
|
dns_tab_load
|
||||||
|
|
||||||
@@ -717,14 +705,14 @@ network_table_init()
|
|||||||
|
|
||||||
if [[ ${dst_type} == "0" ]]
|
if [[ ${dst_type} == "0" ]]
|
||||||
then
|
then
|
||||||
${LOG} "Copy main default route into table 3 (VPN Local routing table)"
|
log_print "Network" "Copy main default route into table 3 (VPN Local routing table)"
|
||||||
|
|
||||||
if [[ "$(ip route list match 0.0.0.0 table main)" != "" ]]
|
if [[ "$(ip route list match 0.0.0.0 table main)" != "" ]]
|
||||||
then
|
then
|
||||||
${DEBUG} ip route add $(ip route list match 0.0.0.0 table main) table 3
|
${DEBUG} ip route add $(ip route list match 0.0.0.0 table main) table 3
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
${LOG} "Define default route to device: [${dst_device}] into table: [${dst_table}]"
|
log_print "Network" "Define default route to device: [${dst_device}] into table: [${dst_table}]"
|
||||||
|
|
||||||
if [[ "$(ip link show ${dst_device})" != "" ]]
|
if [[ "$(ip link show ${dst_device})" != "" ]]
|
||||||
then
|
then
|
||||||
@@ -732,7 +720,7 @@ network_table_init()
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${LOG} "Add Rx3 routes in VPN tables"
|
log_print "Network" "Add Rx3 routes in VPN tables"
|
||||||
|
|
||||||
for ip_route_id in ${NETWORK_IP_ROUTE_ID_LIST}
|
for ip_route_id in ${NETWORK_IP_ROUTE_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -753,7 +741,7 @@ network_table_init()
|
|||||||
|
|
||||||
network_table_deinit()
|
network_table_deinit()
|
||||||
{
|
{
|
||||||
${LOG} "Remove Rx3 routes in VPN tables"
|
log_print "Network" "Remove Rx3 routes in VPN tables"
|
||||||
|
|
||||||
for table in ${NETWORK_TABLE_LIST}
|
for table in ${NETWORK_TABLE_LIST}
|
||||||
do
|
do
|
||||||
@@ -770,9 +758,9 @@ network_table_deinit()
|
|||||||
network_dst_tab_get ${dst_id}
|
network_dst_tab_get ${dst_id}
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Remove default route in table: [${dst_table}]"
|
log_print "Network" "Remove default route in table: [${dst_table}]"
|
||||||
|
|
||||||
${DEBUG} ip route del default table ${dst_table}
|
${DEBUG} ip route del default table ${dst_table} 2>/dev/null
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -832,21 +820,21 @@ network_dst_address_refresh()
|
|||||||
local proxy_port=8080
|
local proxy_port=8080
|
||||||
|
|
||||||
|
|
||||||
dst_ip_new=$( nc ${proxy_host} ${proxy_port})
|
dst_ip_new=$( nc -w 5 ${proxy_host} ${proxy_port})
|
||||||
|
|
||||||
if is_valid_ip ${dst_ip_new}
|
if is_valid_ip ${dst_ip_new}
|
||||||
then
|
then
|
||||||
if [[ "${dst_ip_old}" != "${dst_ip_new}" ]]
|
if [[ "${dst_ip_old}" != "${dst_ip_new}" ]]
|
||||||
then
|
then
|
||||||
${LOG} "Update ${dst_host_name}: Old: [${dst_ip_old}] New: [${dst_ip_new}]"
|
log_print "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
|
${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
|
else
|
||||||
${LOG} "Skiping ${dst_host_name}: IP: [${dst_ip_old}]"
|
log_print "Network" "Skiping ${dst_host_name}: IP: [${dst_ip_old}]"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
${LOG} "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP[${dst_ip_old}]"
|
log_print "Network" "Skiping ${dst_host_name}: Invalid IP: [${dst_ip_new}] Old IP: [${dst_ip_old}]"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -886,18 +874,18 @@ function bridge_up
|
|||||||
bu_table=$6
|
bu_table=$6
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Create bridge [${bu_bridge_device}]..."
|
log_print "Network" "Create bridge [${bu_bridge_device}]..."
|
||||||
|
|
||||||
${DEBUG} ip link add name ${bu_bridge_device} type bridge
|
${DEBUG} ip link add name ${bu_bridge_device} type bridge
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Configure host side [${bu_bridge_device}:${bu_bridge_address}/${bu_bridge_mask}]..."
|
log_print "Network" "Configure host side [${bu_bridge_device}:${bu_bridge_address}/${bu_bridge_mask}]..."
|
||||||
|
|
||||||
${DEBUG} ip link set ${bu_bridge_device} up
|
${DEBUG} ip link set ${bu_bridge_device} up
|
||||||
${DEBUG} ip addr add ${bu_bridge_address}/${bu_bridge_mask} dev ${bu_bridge_device}
|
${DEBUG} ip addr add ${bu_bridge_address}/${bu_bridge_mask} dev ${bu_bridge_device}
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Configure IP rule and routing [${bu_bridge_device}]..."
|
log_print "Network" "Configure IP rule and routing [${bu_bridge_device}]..."
|
||||||
|
|
||||||
${DEBUG} ip rule add from ${bu_peer_address} table ${bu_table}
|
${DEBUG} ip rule add from ${bu_peer_address} table ${bu_table}
|
||||||
|
|
||||||
@@ -926,17 +914,17 @@ function bridge_down
|
|||||||
bd_table=$6
|
bd_table=$6
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Remove IP routing and rule [${bd_bridge_device}]..."
|
log_print "Network" "Remove IP routing and rule [${bd_bridge_device}]..."
|
||||||
|
|
||||||
for bd_tab in ${NETWORK_TABLE_LIST}
|
for bd_tab in ${NETWORK_TABLE_LIST}
|
||||||
do
|
do
|
||||||
${DEBUG} ip route del ${bd_bridge_network}/${bd_bridge_mask} dev ${bd_bridge_device} table ${bd_tab} || true
|
${DEBUG} ip route del ${bd_bridge_network}/${bd_bridge_mask} dev ${bd_bridge_device} table ${bd_tab} 2>/dev/null || true
|
||||||
done
|
done
|
||||||
|
|
||||||
${DEBUG} ip rule del from ${bd_peer_address} table ${bd_table}
|
${DEBUG} ip rule del from ${bd_peer_address} table ${bd_table} 2>/dev/null
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Remove bridge [${bd_bridge_device}]..."
|
log_print "Network" "Remove bridge [${bd_bridge_device}]..."
|
||||||
|
|
||||||
${DEBUG} ip link show ${bd_bridge_device} &>/dev/null && ${DEBUG} ip link del ${bd_bridge_device}
|
${DEBUG} ip link show ${bd_bridge_device} &>/dev/null && ${DEBUG} ip link del ${bd_bridge_device}
|
||||||
}
|
}
|
||||||
@@ -951,7 +939,7 @@ function bridge_down
|
|||||||
|
|
||||||
network_bridge_init()
|
network_bridge_init()
|
||||||
{
|
{
|
||||||
${LOG} "Add all Bridges"
|
log_print "Network" "Add all Bridges"
|
||||||
|
|
||||||
for src_id in ${NETWORK_SRC_ID_LIST}
|
for src_id in ${NETWORK_SRC_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -980,7 +968,7 @@ network_bridge_init()
|
|||||||
|
|
||||||
network_bridge_deinit()
|
network_bridge_deinit()
|
||||||
{
|
{
|
||||||
${LOG} "Remove all Bridge"
|
log_print "Network" "Remove all Bridge"
|
||||||
|
|
||||||
for src_id in ${NETWORK_SRC_ID_LIST}
|
for src_id in ${NETWORK_SRC_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -1046,12 +1034,12 @@ network_forward_remove()
|
|||||||
|
|
||||||
network_forward_start()
|
network_forward_start()
|
||||||
{
|
{
|
||||||
${LOG} "Create VPN forward chain"
|
log_print "Network" "Create VPN forward chain"
|
||||||
|
|
||||||
${DEBUG} iptables -t nat -N PREROUTING-VPN
|
${DEBUG} iptables -t nat -N PREROUTING-VPN
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Add jump rule for VPN"
|
log_print "Network" "Add jump rule for VPN"
|
||||||
|
|
||||||
for dst_id in ${NETWORK_DST_ID_LIST}
|
for dst_id in ${NETWORK_DST_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -1064,7 +1052,7 @@ network_forward_start()
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Add VPN client addresse rules"
|
log_print "Network" "Add VPN client addresse rules"
|
||||||
|
|
||||||
for src_id in ${NETWORK_SRC_ID_LIST}
|
for src_id in ${NETWORK_SRC_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -1089,7 +1077,7 @@ network_forward_start()
|
|||||||
|
|
||||||
network_forward_stop()
|
network_forward_stop()
|
||||||
{
|
{
|
||||||
${LOG} "Remove VPN client addresse rules"
|
log_print "Network" "Remove VPN client addresse rules"
|
||||||
|
|
||||||
for src_id in ${NETWORK_SRC_ID_LIST}
|
for src_id in ${NETWORK_SRC_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -1104,7 +1092,7 @@ network_forward_stop()
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Remove Jump rule for VPN"
|
log_print "Network" "Remove Jump rule for VPN"
|
||||||
|
|
||||||
for dst_id in ${NETWORK_DST_ID_LIST}
|
for dst_id in ${NETWORK_DST_ID_LIST}
|
||||||
do
|
do
|
||||||
@@ -1112,14 +1100,14 @@ network_forward_stop()
|
|||||||
|
|
||||||
if [[ "${dst_type}" != "0" ]]
|
if [[ "${dst_type}" != "0" ]]
|
||||||
then
|
then
|
||||||
${DEBUG} iptables -t nat -D PREROUTING -i ${dst_device} -j PREROUTING-VPN
|
${DEBUG} iptables -t nat -D PREROUTING -i ${dst_device} -j PREROUTING-VPN 2>/dev/null
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
${LOG} "Delete VPN forward chain"
|
log_print "Network" "Delete VPN forward chain"
|
||||||
|
|
||||||
${DEBUG} iptables -t nat -X PREROUTING-VPN
|
${DEBUG} iptables -t nat -X PREROUTING-VPN 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1132,9 +1120,39 @@ network_forward_stop()
|
|||||||
|
|
||||||
network_init()
|
network_init()
|
||||||
{
|
{
|
||||||
|
file_dir_init ${NETWORK_CONFIG_LOCK} root apache
|
||||||
|
file_lock ${NETWORK_CONFIG_LOCK} READ 9
|
||||||
|
|
||||||
|
[ -e "${NETWORK_CONFIG_FILE}" ] && . "${NETWORK_CONFIG_FILE}"
|
||||||
|
|
||||||
|
file_unlock 9
|
||||||
|
|
||||||
|
|
||||||
|
# By default Loggin is enabled
|
||||||
|
# export LOG="" to disable it
|
||||||
|
|
||||||
|
if [ -v LOG ] && [[ "${LOG}" == "" ]]
|
||||||
|
then
|
||||||
|
export NETWORK_LOG_FILE=""
|
||||||
|
export NETWORK_LOG_LOCK=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# By default Echoing is disabled
|
||||||
|
# export LOG="echo" to enable it
|
||||||
|
|
||||||
|
if [ ! -v ECHO ] || [[ "${ECHO}" == "" ]]
|
||||||
|
then
|
||||||
|
export ECHO=":"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_set "${NETWORK_LOG_FILE}" "${NETWORK_LOG_LOCK}" "${ECHO}"
|
||||||
|
|
||||||
|
|
||||||
dns_init
|
dns_init
|
||||||
|
|
||||||
file_dir_init ${NETWORK_CONFIG_LOCK} root apache
|
file_dir_init ${NETWORK_LOG_FILE} root apache
|
||||||
|
file_dir_init ${NETWORK_LOG_LOCK} root apache
|
||||||
|
|
||||||
network_tab_load
|
network_tab_load
|
||||||
}
|
}
|
||||||
@@ -1179,11 +1197,14 @@ network_start()
|
|||||||
|
|
||||||
network_stop()
|
network_stop()
|
||||||
{
|
{
|
||||||
|
|
||||||
network_forward_stop
|
network_forward_stop
|
||||||
|
|
||||||
network_bridge_deinit
|
network_bridge_deinit
|
||||||
|
|
||||||
network_table_deinit
|
network_table_deinit
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,19 +25,18 @@ declare -Ag VPN_JOB_TAB
|
|||||||
declare -Ag VPN_JOB_ID_LIST
|
declare -Ag VPN_JOB_ID_LIST
|
||||||
declare -Ag VPN_JOB_NAME_IDX
|
declare -Ag VPN_JOB_NAME_IDX
|
||||||
|
|
||||||
declare -g VPN_LOG_FILE="/var/log/network/rx3-vpn.log"
|
declare -g VPN_PID_FILE
|
||||||
declare -g VPN_PID_FILE="/var/lib/network/rx3-vpn.pid"
|
declare -g VPN_STATUS_FILE
|
||||||
declare -g VPN_STATUS_FILE="/var/lib/network/rx3-vpn.status"
|
declare -g VPN_STATUS_LOCK
|
||||||
declare -g VPN_STATUS_LOCK="/var/lock/network/rx3-vpn.status"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
|
#if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
|
||||||
then
|
#then
|
||||||
export LOG=":"
|
# export LOG=":"
|
||||||
fi
|
#fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -55,7 +54,7 @@ vpn_config_make()
|
|||||||
|
|
||||||
local mng_port=$(( 2330 + ${Device/tun/}))
|
local mng_port=$(( 2330 + ${Device/tun/}))
|
||||||
|
|
||||||
${LOG} "Creating config File: [${Config_File}] Device: [${Device}] Mng_Port: (${mng_port}) Target_Config: [${Target_Config}]"
|
log_print "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} 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}
|
${DEBUG} sed -e "s/TARGET-CFG/${Target_Config}-client.conf/" -e "s/VPN-DEVICE/${Device}/" -e "s/MNG-PORT/${mng_port}/" -i ${Config_File}
|
||||||
@@ -77,7 +76,7 @@ vpn_job_tab_load()
|
|||||||
local job_cmd
|
local job_cmd
|
||||||
|
|
||||||
|
|
||||||
${LOG} 1>&2 "Loading Job tab..."
|
log_print "VPN" "Loading Job tab..."
|
||||||
|
|
||||||
while IFS= read -r line
|
while IFS= read -r line
|
||||||
do
|
do
|
||||||
@@ -198,7 +197,7 @@ vpn_job_tab_init()
|
|||||||
|
|
||||||
vpn_config_make "${config_file}" "${dst_device}" "${dst_config}"
|
vpn_config_make "${config_file}" "${dst_device}" "${dst_config}"
|
||||||
|
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Loading config: Id: [${job_id}] Name: [${dst_name}] Cmd: [${VPN_JOB_TAB["${job_id},Cmd"]}]"
|
log_print "VPN" "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
|
||||||
@@ -224,13 +223,13 @@ vpn_job_tab_deinit()
|
|||||||
|
|
||||||
if [[ "${job_PId}" -gt 0 ]]
|
if [[ "${job_PId}" -gt 0 ]]
|
||||||
then
|
then
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..."
|
log_print "VPN" "Killing : Id: [${job_id}] Name: [${job_name}] PId: [${job_pid}]..."
|
||||||
|
|
||||||
kill -15 ${job_pid}
|
kill -15 ${job_pid}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
${LOG} "Flushing status file..."
|
log_print "VPN" "Flushing status file..."
|
||||||
|
|
||||||
file_lock ${VPN_STATUS_LOCK} WRITE 9
|
file_lock ${VPN_STATUS_LOCK} WRITE 9
|
||||||
|
|
||||||
@@ -285,7 +284,7 @@ vpn_supervisor()
|
|||||||
local job_pid
|
local job_pid
|
||||||
|
|
||||||
|
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Starting Supervisor..."
|
log_print "VPN" "Starting Supervisor..."
|
||||||
|
|
||||||
|
|
||||||
# Main Loop
|
# Main Loop
|
||||||
@@ -301,7 +300,7 @@ vpn_supervisor()
|
|||||||
|
|
||||||
if [[ ${job_pid} == 0 ]] || [[ $rc != 0 ]]
|
if [[ ${job_pid} == 0 ]] || [[ $rc != 0 ]]
|
||||||
then
|
then
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Restarting Cmd: [${job_cmd}]..."
|
log_print "VPN" "Restarting Cmd: [${job_cmd}]..."
|
||||||
|
|
||||||
eval ${DEBUG} ${job_cmd}
|
eval ${DEBUG} ${job_cmd}
|
||||||
|
|
||||||
@@ -315,16 +314,16 @@ vpn_supervisor()
|
|||||||
tab_assign VPN_JOB_TAB "${job_id},PId" "${job_pid}"
|
tab_assign VPN_JOB_TAB "${job_id},PId" "${job_pid}"
|
||||||
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" "PId: [${VPN_JOB_TAB["${job_id},PId"]}]!"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Saving VPN tab..."
|
log_print "VPN" "Saving VPN tab..."
|
||||||
vpn_job_tab_save
|
vpn_job_tab_save
|
||||||
|
|
||||||
sleep 30
|
sleep ${VPN_LOOP_DELAY}
|
||||||
|
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Refreshing DNS entries..."
|
log_print "VPN" "Refreshing DNS entries..."
|
||||||
network_dst_address_refresh_all
|
network_dst_address_refresh_all
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -333,6 +332,38 @@ vpn_supervisor()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
# vpn_kill_jobs
|
||||||
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
vpn_jobs_kill()
|
||||||
|
{
|
||||||
|
local job_id
|
||||||
|
|
||||||
|
|
||||||
|
for job_id in ${VPN_JOB_ID_LIST}
|
||||||
|
do
|
||||||
|
vpn_job_tab_get "${job_id}"
|
||||||
|
|
||||||
|
${DEBUG} kill -0 "${job_pid}" 2>/dev/null
|
||||||
|
rc=$?
|
||||||
|
|
||||||
|
if [[ ${job_pid} != 0 ]] && [[ $rc == 0 ]]
|
||||||
|
then
|
||||||
|
log_print "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..."
|
||||||
|
vpn_job_tab_save
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
# vpn_init
|
# vpn_init
|
||||||
#--------------------------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------------------------
|
||||||
@@ -347,7 +378,7 @@ vpn_init()
|
|||||||
file_dir_init ${VPN_STATUS_FILE} root apache
|
file_dir_init ${VPN_STATUS_FILE} root apache
|
||||||
file_unlock 9
|
file_unlock 9
|
||||||
|
|
||||||
file_dir_init ${VPN_LOG_FILE} root apache
|
# file_dir_init ${VPN_LOG_FILE} root apache
|
||||||
|
|
||||||
if [[ -s "${VPN_STATUS_FILE}" ]]
|
if [[ -s "${VPN_STATUS_FILE}" ]]
|
||||||
then
|
then
|
||||||
@@ -404,11 +435,11 @@ vpn_start()
|
|||||||
vpn_supervisor &
|
vpn_supervisor &
|
||||||
daemon_pid=$!
|
daemon_pid=$!
|
||||||
|
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Daemon started, PId: [${daemon_pid}]"
|
log_print "VPN" "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" "Daemon already running PId: [${daemon_pid}]"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -437,15 +468,17 @@ 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" "Daemon already stoped!"
|
||||||
else
|
else
|
||||||
log_print "${VPN_LOG_FILE}" "${LOG}" "Stoping daemon, PId: [${daemon_pid}]..."
|
log_print "VPN" "Stoping daemon, PId: [${daemon_pid}]..."
|
||||||
|
|
||||||
kill -15 ${daemon_pid}
|
kill -15 ${daemon_pid}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
>${VPN_PID_FILE}
|
>${VPN_PID_FILE}
|
||||||
|
|
||||||
|
vpn_jobs_kill
|
||||||
|
|
||||||
vpn_job_tab_deinit
|
vpn_job_tab_deinit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
time_in=$(date +%s%N)
|
time_in=$(date +%s%N)
|
||||||
|
|
||||||
|
|
||||||
|
# No Log please
|
||||||
|
export LOG=""
|
||||||
|
|
||||||
. /usr/local/lib/network.bash
|
. /usr/local/lib/network.bash
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user