Skip to content

Commit 7b08240

Browse files
committed
Improved remote API
1 parent 89c1f64 commit 7b08240

File tree

2 files changed

+64
-86
lines changed

2 files changed

+64
-86
lines changed

func/remote.sh

Lines changed: 53 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
send_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

3131
send_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

8773
is_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

12281
remote_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
}

web/api/index.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,17 @@
6565
if(!empty($arg9)){
6666
$cmdquery = $cmdquery.$arg9; }
6767

68-
// Run query
69-
exec ($cmdquery, $output, $return_var);
68+
// Check command
69+
if ($cmd == "'v-make-tmp-file'") {
70+
// Used in DNS Cluster
71+
$fp = fopen($_POST['arg2'], 'w');
72+
fwrite($fp, $_POST['arg1']."\n");
73+
fclose($fp);
74+
$return_var = 0;
75+
} else {
76+
// Run normal cmd query
77+
exec ($cmdquery, $output, $return_var);
78+
}
7079

7180
if ((!empty($_POST['returncode'])) && ($_POST['returncode'] == 'yes')) {
7281
echo $return_var;

0 commit comments

Comments
 (0)