11send_api_cmd () {
2- if [ -z $PORT ]; then
3- PORT=8083
4- fi
5- if [ -z $USER ]; then
6- USER=admin
7- fi
8-
92 answer=$( curl -s -k \
103 --data-urlencode " user=$USER " \
114 --data-urlencode " password=$PASSWORD " \
@@ -20,21 +13,22 @@ send_api_cmd() {
2013 --data-urlencode " arg7=$8 " \
2114 --data-urlencode " arg8=$9 " \
2215 https://$HOST :$PORT /api/)
16+ return $answer
17+ }
2318
24- if [ " $answer " != ' 0' ]; then
25- return 1
26- else
27- return 0
28- fi
19+ send_api_file () {
20+ answer=$( curl -s -k \
21+ --data-urlencode " user=$USER " \
22+ --data-urlencode " password=$PASSWORD " \
23+ --data-urlencode " returncode=yes" \
24+ --data-urlencode " cmd=v-make-tmp-file" \
25+ --data-urlencode " arg1=$( cat $1 ) " \
26+ --data-urlencode " arg2=$2 " \
27+ https://$HOST :$PORT /api/)
28+ return $answer
2929}
3030
3131send_ssh_cmd () {
32- if [ -z $PORT ]; then
33- PORT=22
34- fi
35- if [ -z $USER ]; then
36- USER=admin
37- fi
3832 if [ -z " $IDENTITY_FILE " ] && [ " $USER " = ' root' ]; then
3933 IDENTITY_FILE=" /root/.ssh/id_rsa"
4034 fi
@@ -55,13 +49,7 @@ send_ssh_cmd() {
5549 fi
5650}
5751
58- scp_cmd () {
59- if [ -z $PORT ]; then
60- PORT=22
61- fi
62- if [ -z $USER ]; then
63- USER=admin
64- fi
52+ send_scp_file () {
6553 if [ -z " $IDENTITY_FILE " ]; then
6654 IDENTITY_FILE=" /home/admin/.ssh/id_rsa"
6755 fi
@@ -77,75 +65,33 @@ is_dnshost_new() {
7765 if [ -e " $VESTA /conf/dns-cluster.conf" ]; then
7866 check_host=$( grep " HOST='$host '" $VESTA /conf/dns-cluster.conf)
7967 if [ ! -z " $check_host " ]; then
80- echo " Error: dns host $host exists"
81- log_event " $E_EXISTS " " $EVENT "
82- exit $E_EXISTS
68+ check_result $E_EXISTS " remote dns host $host exists"
8369 fi
8470 fi
8571}
8672
8773is_dnshost_alive () {
88- HOST=$host
89- PORT=$port
90- USER=$user
91- PASSWORD=$password
92-
93- # Switch on connection type
94- case $type in
95- ssh) send_cmd=" send_ssh_cmd" ;;
96- * ) send_cmd=" send_api_cmd" ;;
97- esac
74+ cluster_cmd v-list-sys-config
75+ check_result $? " $type connection to $HOST failed" $E_CONNECT
9876
99- # Check host connection
100- $send_cmd v-list-sys-config
101- if [ $? -ne 0 ]; then
102- echo " Error: $type connection to $HOST failed"
103- log_event " $E_CONNECT " " $EVENT "
104- exit $E_CONNECT
105- fi
106-
107- # Check recipient dns user
108- if [ -z " $DNS_USER " ]; then
109- DNS_USER=' dns-cluster'
110- fi
111- if [ ! -z " $verbose " ]; then
112- echo " DNS_USER: $DNS_USER "
113- fi
114- $send_cmd v-list-user $DNS_USER
115- if [ $? -ne 0 ]; then
116- echo " Error: dns user $DNS_USER doesn't exist"
117- log_event " $E_NOTEXIST " " $EVENT "
118- exit $E_NOTEXIST
119- fi
77+ cluster_cmd v-list-user $DNS_USER
78+ check_result $? " $DNS_USER doesn't exist" $E_CONNECT
12079}
12180
12281remote_dns_health_check () {
123- # Define tmp mail vars
124- subj=" DNS sync failed"
125- email=$( grep CONTACT $VESTA /data/users/admin/user.conf | cut -f 2 -d \' )
126- send_mail=" $VESTA /web/inc/mail-wrapper.php"
127- tmpfile=$( mktemp)
82+ OLD_IFS=" $IFS "
83+ IFS=$' \n '
12884
12985 # Starting health-check
13086 for str in $( grep " SUSPENDED='no'" $VESTA /conf/dns-cluster.conf) ; do
131-
132- # Get host values
13387 eval $str
13488
135- # Check connection type
136- if [ -z " TYPE" ]; then
137- TYPE=' api'
138- fi
139-
140- # Switch on connection type
141- case $TYPE in
142- ssh) send_cmd=" send_ssh_cmd" ;;
143- * ) send_cmd=" send_api_cmd" ;;
144- esac
145-
146- # Check host connection
147- $send_cmd v-list-sys-config
89+ # Checking host connection
90+ cluster_cmd v-list-user $DNS_USER
14891 if [ $? -ne 0 ]; then
92+
93+ # Creating error report
94+ tmpfile=$( mktemp)
14995 echo " $( basename $0 ) $* " > $tmpfile
15096 echo -e " Error: $TYPE connection to $HOST failed.\n" >> $tmpfile
15197 echo -n " Remote dns host has been suspended." >> $tmpfile
@@ -154,14 +100,37 @@ remote_dns_health_check() {
154100 echo " v-unsuspend-remote-dns-host $HOST " >> $tmpfile
155101 echo " v-sync-dns-cluster $HOST " >> $tmpfile
156102 echo -e " \n\n--\nVesta Control Panel\n$( hostname) " >> $tmpfile
157- cat $tmpfile | $send_mail -s " $subj " $email
158103
104+ if [ " $1 " = ' no_email' ]; then
105+ cat $tmpfile
106+ else
107+ subj=" DNS sync failed"
108+ email=$( $BIN /v-get-user-value admin CONTACT)
109+ cat $tmpfile | $send_mail -s " $subj " $email
110+ fi
111+
112+ # Deleting tmp file
113+ rm -f $tmpfile
159114 log_event " $E_CONNECT " " $EVENT "
160- dconf=" ../../../conf/dns-cluster"
115+
116+ # Suspending remote host
117+ dconf=" ../../conf/dns-cluster"
161118 update_object_value " $dconf " ' HOST' " $HOST " ' $SUSPENDED' ' yes'
162119 fi
163-
164- # Remove tmp file
165- rm -f $tmpfile
166120 done
121+ IFS=" $OLD_IFS "
122+ }
123+
124+ cluster_cmd () {
125+ case $TYPE in
126+ ssh) send_ssh_cmd $* ;;
127+ api) send_api_cmd $* ;;
128+ esac
129+ }
130+
131+ cluster_file () {
132+ case $TYPE in
133+ ssh) send_scp_file $* ;;
134+ api) send_api_file $* ;;
135+ esac
167136}
0 commit comments