mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-24 19:14:05 +08:00
Compare commits
3 Commits
devel-no-h
...
3.10.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60b31e43c8 | ||
|
|
07adfe806f | ||
|
|
7a4766a2f7 |
@@ -27,9 +27,9 @@ failover() {
|
||||
|
||||
add() {
|
||||
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/${1}\[${failchk}\]//g")
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/\(^\|.*\]\)${1}\[${failchk}\]/\1/g")
|
||||
wan_fail_map="$wan_fail_map${1}[x]"
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/${1}\[${recvrychk}\]//g")
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/\(^\|.*\]\)${1}\[${recvrychk}\]/\1/g")
|
||||
update_cache
|
||||
|
||||
if [ "$existing_failover" == "2" ]; then
|
||||
@@ -46,8 +46,8 @@ failover() {
|
||||
|
||||
del() {
|
||||
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/${1}\[${recvrychk}\]//g")
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/${1}\[${failchk}\]//g")
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/\(^\|.*\]\)${1}\[${recvrychk}\]/\1/g")
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/\(^\|.*\]\)${1}\[${failchk}\]/\1/g")
|
||||
update_cache
|
||||
|
||||
if [ "$existing_failover" == "3" ]; then
|
||||
@@ -70,7 +70,7 @@ fail_wan() {
|
||||
|
||||
local failchk=$(query_config failchk $1)
|
||||
local recvrychk=$(query_config recvrychk $1)
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/${1}\[${recvrychk}\]//g")
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/\(^\|.*\]\)${1}\[${recvrychk}\]/\1/g")
|
||||
|
||||
if [ -z "$failchk" ]; then
|
||||
failchk=1
|
||||
@@ -80,7 +80,7 @@ fail_wan() {
|
||||
if [ "$failchk" != "x" ]; then
|
||||
new_fail_count=$(($failchk + 1))
|
||||
if [ "$new_fail_count" -lt "$health_fail_retries" ]; then
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/${1}\[${failchk}\]/$1\[${new_fail_count}\]/g")
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/\(^\|.*\]\)${1}\[${failchk}\]/\1${1}\[${new_fail_count}\]/g")
|
||||
else
|
||||
failover add $1
|
||||
refresh_dns
|
||||
@@ -103,7 +103,7 @@ recover_wan() {
|
||||
local wanid=$(query_config wanid $1)
|
||||
|
||||
if [ ! -z "$failchk" -a "$failchk" != "x" ]; then
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/${1}\[${failchk}\]//g")
|
||||
wan_fail_map=$(echo $wan_fail_map | sed -e "s/\(^\|.*\]\)${1}\[${failchk}\]/\1/g")
|
||||
update_cache
|
||||
fi
|
||||
|
||||
@@ -117,7 +117,7 @@ recover_wan() {
|
||||
else
|
||||
new_recovery_count=$(($recvrychk + 1))
|
||||
if [ "$new_recovery_count" -lt "$health_recovery_retries" ]; then
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/${1}\[${recvrychk}\]/$1\[${new_recovery_count}\]/g")
|
||||
wan_recovery_map=$(echo $wan_recovery_map | sed -e "s/\(^\|.*\]\)${1}\[${recvrychk}\]/\1${1}\[${new_recovery_count}\]/g")
|
||||
update_cache
|
||||
else
|
||||
failover del $1
|
||||
@@ -138,11 +138,12 @@ acquire_wan_data() {
|
||||
local old_gateway
|
||||
|
||||
local ifname ipaddr gateway
|
||||
network_flush_cache
|
||||
network_get_device ifname ${1} || ifname=x
|
||||
network_get_ipaddr ipaddr ${1} || ipaddr=x
|
||||
network_get_gateway gateway ${1} || gateway=x
|
||||
|
||||
check_old_map=$(echo $wan_id_map 2>&1 | grep -o "$1\[")
|
||||
check_old_map=$(echo $wan_id_map 2>&1 | grep -o -e "^$1\[" -e "\]$1\[")
|
||||
|
||||
if [ -z $check_old_map ]; then
|
||||
wancount=$(($wancount + 1))
|
||||
@@ -160,9 +161,9 @@ acquire_wan_data() {
|
||||
old_ifname=$(query_config ifname $1)
|
||||
get_wanid=$(query_config wanid $1)
|
||||
|
||||
wan_if_map=$(echo $wan_if_map | sed -e "s/${1}\[${old_ifname}\]/$1\[${ifname}\]/g")
|
||||
wan_ip_map=$(echo $wan_ip_map | sed -e "s/${1}\[${old_ipaddr}\]/$1\[${ipaddr}\]/g")
|
||||
wan_gw_map=$(echo $wan_gw_map | sed -e "s/${1}\[${old_gateway}\]/$1\[${gateway}\]/g")
|
||||
wan_if_map=$(echo $wan_if_map | sed -e "s/\(^\|.*\]\)${1}\[${old_ifname}\]/\1${1}\[${ifname}\]/g")
|
||||
wan_ip_map=$(echo $wan_ip_map | sed -e "s/\(^\|.*\]\)${1}\[${old_ipaddr}\]/\1${1}\[${ipaddr}\]/g")
|
||||
wan_gw_map=$(echo $wan_gw_map | sed -e "s/\(^\|.*\]\)${1}\[${old_gateway}\]/\1${1}\[${gateway}\]/g")
|
||||
|
||||
if [ "$old_ifname" != "$ifname" ]; then
|
||||
iptables -D MultiWanPreHandler -t mangle -i $old_$ifname -m state --state NEW -j FW${get_wanid}MARK
|
||||
@@ -205,14 +206,14 @@ update_cache() {
|
||||
|
||||
query_config() {
|
||||
case $1 in
|
||||
ifname) echo $wan_if_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
ipaddr) echo $wan_ip_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
gateway) echo $wan_gw_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
wanid) echo $wan_id_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
failchk) echo $wan_fail_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
recvrychk) echo $wan_recovery_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
monitor) echo $wan_monitor_map | grep -o "$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
group) echo $wan_id_map | grep -o "\w*\[$2\]" | awk -F "[" '{print $1}';;
|
||||
ifname) echo $wan_if_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
ipaddr) echo $wan_ip_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
gateway) echo $wan_gw_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
wanid) echo $wan_id_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
failchk) echo $wan_fail_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
recvrychk) echo $wan_recovery_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
monitor) echo $wan_monitor_map | grep -o -e "^$2\[\w*.*\]" -e "\]$2\[\w*.*\]" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}';;
|
||||
group) echo $wan_id_map | grep -o "\w*\[$2\]" | awk -F "[" '{print $1}';;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -435,6 +436,34 @@ mwanrule() {
|
||||
add_rule
|
||||
}
|
||||
|
||||
|
||||
get_dns_servers() {
|
||||
local group=$1
|
||||
local groups=$1
|
||||
local dns=""
|
||||
local dnss=""
|
||||
local aliases=""
|
||||
local g
|
||||
|
||||
aliases="$(uci show network| grep =\'@$group\')"
|
||||
|
||||
for g in $aliases ; do
|
||||
g=${g#*.}; g=${g%%.*}
|
||||
[ "$(uci -q get network.$g)" == "interface" ] || continue
|
||||
groups="$groups $g"
|
||||
done
|
||||
|
||||
groups="$(echo $groups | tr ' ' '\n' | sort -u | tr '\n' ' ')"
|
||||
|
||||
for group in $groups ; do
|
||||
network_get_dnsserver dns ${group}
|
||||
dnss="$dnss $dns"
|
||||
done
|
||||
|
||||
echo $dnss
|
||||
}
|
||||
|
||||
|
||||
refresh_dns() {
|
||||
local dns
|
||||
local group
|
||||
@@ -445,6 +474,8 @@ refresh_dns() {
|
||||
local compile_dns
|
||||
local dns_server
|
||||
|
||||
network_flush_cache
|
||||
|
||||
iptables -F MultiWanDNS -t mangle
|
||||
|
||||
rm /tmp/resolv.conf.auto
|
||||
@@ -461,7 +492,7 @@ refresh_dns() {
|
||||
failchk=$(query_config failchk $group)
|
||||
|
||||
dns=$(uci_get_state multiwan ${group} dns 'auto')
|
||||
[ "$dns" == "auto" ] && network_get_dnsserver dns ${group}
|
||||
[ "$dns" == "auto" ] && dns=$(get_dns_servers $group)
|
||||
dns=$(echo $dns | sed -e "s/ /\n/g")
|
||||
|
||||
if [ ! -z "$dns" -a "$failchk" != "x" -a "$ipaddr" != "x" -a "$gateway" != "x" -a "$ifname" != "x" ]; then
|
||||
@@ -822,6 +853,7 @@ monitor_wan() {
|
||||
while :; do
|
||||
[ "${health_monitor%.*}" = 'parallel' ] && sleep $health_interval
|
||||
|
||||
network_flush_cache
|
||||
network_get_device ifname ${1} || ifname=x
|
||||
network_get_ipaddr ipaddr ${1} || ipaddr=x
|
||||
network_get_gateway gateway ${1} || gateway=x
|
||||
@@ -892,7 +924,7 @@ monitor_wan() {
|
||||
fi
|
||||
|
||||
[ "$health_monitor" = 'serial' ] && {
|
||||
wan_monitor_map=$(echo $wan_monitor_map | sed -e "s/$1\[\w*\]/$1\[$(date +%s)\]/g")
|
||||
wan_monitor_map=$(echo $wan_monitor_map | sed -e "s/\(^\|.*\]\)${1}\[\w*\]/\1${1}\[$(date +%s)\]/g")
|
||||
update_cache
|
||||
break
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user