Skip to content

Commit 68a34e1

Browse files
committed
dns cluster support
1 parent 0f7ea97 commit 68a34e1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1536
-64
lines changed

bin/v-add-dns-domain

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ update_domain_zone
128128
chmod 640 $conf
129129
chown root:named $conf
130130

131+
# dns-cluster
132+
if [ ! -z "$DNS_CLUSTER" ]; then
133+
cmd="v-add-remote-dns-domain $user $domain"
134+
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
135+
fi
136+
131137

132138
#----------------------------------------------------------#
133139
# Vesta #
@@ -139,7 +145,7 @@ increase_user_value "$user" '$U_DNS_RECORDS' "$records"
139145

140146
# Restart named
141147
if [ "$restart" != 'no' ]; then
142-
$BIN/v-restart-dns "$EVENT"
148+
$BIN/v-restart-dns
143149
fi
144150

145151
# Logging

bin/v-add-dns-on-web-alias

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ else
6161
$user $dom $IP '' '' '' '' $restart > /dev/null
6262

6363
if [ $? -eq 0 ]; then
64-
$BIN/v-add-dns-domain-record \
64+
$BIN/v-add-dns-record \
6565
$user $dom "$sub" A $IP '' '' $restart
6666
fi
6767
else
@@ -71,7 +71,7 @@ else
7171
rec=$(grep -w "RECORD='$sub'" $USER_DATA/dns/$dom.conf)
7272
fi
7373
if [ -z "$rec" ]; then
74-
$BIN/v-add-dns-domain-record \
74+
$BIN/v-add-dns-record \
7575
$user $dom "$sub" A $IP '' '' $restart > /dev/null
7676
fi
7777
fi
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# info: add dns domain record
2+
# info: add dns record
33
# options: USER DOMAIN RECORD TYPE VALUE [PRIORITY] [ID] [RESTART]
44
#
55
# The call is used for adding new DNS record. Complex records of TXT, MX and
@@ -73,6 +73,12 @@ sort_dns_records
7373
# Updating zone
7474
update_domain_zone
7575

76+
# dns-cluster
77+
if [ ! -z "$DNS_CLUSTER" ]; then
78+
cmd="v-add-remote-dns-record $user $domain $id"
79+
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
80+
fi
81+
7682

7783
#----------------------------------------------------------#
7884
# Vesta #
@@ -85,7 +91,7 @@ increase_user_value "$user" '$U_DNS_RECORDS'
8591

8692
# Restart named
8793
if [ "$restart" != 'no' ]; then
88-
$BIN/v-restart-dns "$EVENT"
94+
$BIN/v-restart-dns
8995
fi
9096

9197
# Logging

bin/v-add-mail-domain

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ if [ "$dkim" = 'yes' ]; then
8585
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
8686
record='_domainkey'
8787
policy="\"t=y; o=~;\""
88-
$BIN/v-add-dns-domain-record $user $domain $record TXT "$policy"
88+
$BIN/v-add-dns-record $user $domain $record TXT "$policy"
8989

9090
record='mail._domainkey'
9191
selector="\"k=rsa\; p=$p\""
92-
$BIN/v-add-dns-domain-record $user $domain $record TXT "$selector"
92+
$BIN/v-add-dns-record $user $domain $record TXT "$selector"
9393
fi
9494
fi
9595

bin/v-add-mail-domain-dkim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ if [ "$?" -eq 0 ]; then
5858
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
5959
record='_domainkey'
6060
policy="\"t=y; o=~;\""
61-
$BIN/v-add-dns-domain-record $user $domain $record TXT "$policy"
61+
$BIN/v-add-dns-record $user $domain $record TXT "$policy"
6262

6363
record='mail._domainkey'
6464
selector="\"k=rsa\; p=$p\""
65-
$BIN/v-add-dns-domain-record $user $domain $record TXT "$selector"
65+
$BIN/v-add-dns-record $user $domain $record TXT "$selector"
6666
fi
6767

6868

bin/v-add-remote-dns-domain

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
#!/bin/bash
2+
# info: add remote dns domain
3+
# options: USER DOMAIN
4+
#
5+
# The function synchronize dns domain with the remote server.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
domain=$2
15+
16+
# Includes
17+
source $VESTA/conf/vesta.conf
18+
source $VESTA/func/main.sh
19+
source $VESTA/func/remote.sh
20+
21+
22+
#----------------------------------------------------------#
23+
# Verifications #
24+
#----------------------------------------------------------#
25+
26+
check_args '2' "$#" 'USER DOMAIN'
27+
validate_format 'user' 'domain'
28+
is_system_enabled "$DNS_CLUSTER"
29+
is_object_valid 'user' 'USER' "$user"
30+
is_object_valid 'dns' 'DOMAIN' "$domain"
31+
32+
if [ ! -e "$VESTA/conf/dns-cluster.conf" ]; then
33+
echo "Error: dns-cluster.conf doesn't exist"
34+
log_event "$E_NOTEXIST $EVENT"
35+
exit $E_NOTEXIST
36+
fi
37+
38+
number_of_proc=$(ps auxf | grep -v grep | grep $VESTA/bin/$SCRIPT | wc -l)
39+
if [ "$number_of_proc" -gt 2 ]; then
40+
echo "Error: another sync process already exists"
41+
log_event "$E_EXISTS $EVENT"
42+
exit $E_EXISTS
43+
fi
44+
45+
46+
#----------------------------------------------------------#
47+
# Action #
48+
#----------------------------------------------------------#
49+
50+
old_ifs="$IFS"
51+
IFS=$'\n'
52+
53+
# Starting cluster loop
54+
for cluster_str in $(cat $VESTA/conf/dns-cluster.conf); do
55+
56+
# Get host values
57+
eval $cluster_str
58+
59+
# Check connection type
60+
if [ -z "TYPE" ]; then
61+
TYPE='api'
62+
fi
63+
64+
# Switch on connection type
65+
case $TYPE in
66+
ssh) send_cmd="send_ssh_cmd" ;;
67+
*) send_cmd="send_api_cmd" ;;
68+
esac
69+
70+
# Check host connection
71+
$send_cmd v-list-sys-config
72+
if [ $? -ne 0 ]; then
73+
echo "Error: $TYPE connection to $HOST failed"
74+
log_event "$E_CONNECT $EVENT"
75+
exit $E_CONNECT
76+
fi
77+
78+
# Check recipient dns user
79+
if [ -z "$DNS_USER" ]; then
80+
DNS_USER='dns-cluster'
81+
fi
82+
$send_cmd v-list-user $DNS_USER
83+
if [ $? -ne 0 ]; then
84+
echo "Error: dns user $DNS_USER doesn't exist"
85+
log_event "$E_NOTEXIST $EVENT"
86+
exit $E_NOTEXIST
87+
fi
88+
89+
# Check dns exceptions
90+
if [ -z "$DNS_CLUSTER_IGNORE" ]; then
91+
DNS_CLUSTER_IGNORE='dns-cluster'
92+
fi
93+
94+
# Sync domain
95+
str=$(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
96+
eval $str
97+
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME
98+
99+
# Sync records
100+
if [ "$TYPE" = 'ssh' ]; then
101+
tmp=$(mktemp -u)
102+
scp_cmd $USER_DATA/dns/$DOMAIN.conf $tmp
103+
$send_cmd v-insert-dns-records $DNS_USER $DOMAIN $tmp
104+
else
105+
for str in $(cat $USER_DATA/dns/$DOMAIN.conf); do
106+
str=$(echo "$str" | sed 's/"/\\"/g')
107+
$send_cmd v-insert-dns-record $DNS_USER $DOMAIN "$str"
108+
done
109+
fi
110+
111+
# Rebuild dns zone
112+
$send_cmd v-rebuild-dns-domain $DNS_USER $domain no
113+
if [ $? -ne 0 ]; then
114+
echo "Error: $TYPE connection to $HOST failed (rebuild)"
115+
log_event "$E_CONNECT $EVENT"
116+
exit $E_CONNECT
117+
fi
118+
119+
done
120+
121+
# Update pipe
122+
pipe="$VESTA/data/queue/dns-cluster.pipe"
123+
str=$(grep -n "$SCRIPT $1 $2$" $pipe | cut -f1 -d: | head -n1)
124+
if [ ! -z "$str" ]; then
125+
sed -i "$str d" $pipe
126+
fi
127+
128+
129+
#----------------------------------------------------------#
130+
# Vesta #
131+
#----------------------------------------------------------#
132+
133+
exit

bin/v-add-remote-dns-record

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
#!/bin/bash
2+
# info: add remote dns domain record
3+
# options: USER DOMAIN ID
4+
#
5+
# The function synchronize dns domain with the remote server.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
domain=$2
15+
id=$3
16+
17+
# Includes
18+
source $VESTA/conf/vesta.conf
19+
source $VESTA/func/main.sh
20+
source $VESTA/func/remote.sh
21+
22+
23+
#----------------------------------------------------------#
24+
# Verifications #
25+
#----------------------------------------------------------#
26+
27+
check_args '3' "$#" 'USER DOMAIN ID'
28+
validate_format 'user' 'domain' 'id'
29+
is_system_enabled "$DNS_CLUSTER"
30+
is_object_valid 'user' 'USER' "$user"
31+
is_object_valid 'dns' 'DOMAIN' "$domain"
32+
is_object_valid "dns/$domain" 'ID' "$id"
33+
34+
if [ ! -e "$VESTA/conf/dns-cluster.conf" ]; then
35+
echo "Error: dns-cluster.conf doesn't exist"
36+
log_event "$E_NOTEXIST $EVENT"
37+
exit $E_NOTEXIST
38+
fi
39+
40+
number_of_proc=$(ps auxf | grep -v grep | grep $VESTA/bin/$SCRIPT | wc -l)
41+
if [ "$number_of_proc" -gt 2 ]; then
42+
echo "Error: another sync process already exists"
43+
log_event "$E_EXISTS $EVENT"
44+
exit $E_EXISTS
45+
fi
46+
47+
48+
#----------------------------------------------------------#
49+
# Action #
50+
#----------------------------------------------------------#
51+
52+
old_ifs="$IFS"
53+
IFS=$'\n'
54+
55+
# Starting cluster loop
56+
for cluster_str in $(cat $VESTA/conf/dns-cluster.conf); do
57+
58+
# Get host values
59+
eval $cluster_str
60+
61+
# Check connection type
62+
if [ -z "TYPE" ]; then
63+
TYPE='api'
64+
fi
65+
66+
# Switch on connection type
67+
case $TYPE in
68+
ssh) send_cmd="send_ssh_cmd" ;;
69+
*) send_cmd="send_api_cmd" ;;
70+
esac
71+
72+
# Check host connection
73+
$send_cmd v-list-sys-config
74+
if [ $? -ne 0 ]; then
75+
echo "Error: $TYPE connection to $HOST failed"
76+
log_event "$E_CONNECT $EVENT"
77+
exit $E_CONNECT
78+
fi
79+
80+
# Check recipient dns user
81+
if [ -z "$DNS_USER" ]; then
82+
DNS_USER='dns-cluster'
83+
fi
84+
$send_cmd v-list-user $DNS_USER
85+
if [ $? -ne 0 ]; then
86+
echo "Error: dns user $DNS_USER doesn't exist"
87+
log_event "$E_NOTEXIST $EVENT"
88+
exit $E_NOTEXIST
89+
fi
90+
91+
# Check dns exceptions
92+
if [ -z "$DNS_CLUSTER_IGNORE" ]; then
93+
DNS_CLUSTER_IGNORE='dns-cluster'
94+
fi
95+
96+
# Sync record
97+
str=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf)
98+
str=$(echo "$str" | sed 's/"/\\"/g')
99+
$send_cmd v-insert-dns-record $DNS_USER $domain "$str"
100+
101+
# Rebuild dns zone
102+
$send_cmd v-rebuild-dns-domain $DNS_USER $domain no
103+
if [ $? -ne 0 ]; then
104+
echo "Error: $TYPE connection to $HOST failed (rebuild)"
105+
log_event "$E_CONNECT $EVENT"
106+
exit $E_CONNECT
107+
fi
108+
109+
done
110+
111+
# Update pipe
112+
pipe="$VESTA/data/queue/dns-cluster.pipe"
113+
str=$(grep -n "$SCRIPT $1 $2 $3$" $pipe | cut -f1 -d: | head -n1)
114+
if [ ! -z "$str" ]; then
115+
sed -i "$str d" $pipe
116+
fi
117+
118+
119+
#----------------------------------------------------------#
120+
# Vesta #
121+
#----------------------------------------------------------#
122+
123+
exit

bin/v-change-dns-domain-exp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ is_object_unsuspended 'dns' 'DOMAIN' "$domain"
4141
# Changing exp
4242
update_object_value 'dns' 'DOMAIN' "$domain" '$EXP' "$exp"
4343

44+
# dns-cluster
45+
if [ ! -z "$DNS_CLUSTER" ]; then
46+
cmd="v-change-remote-dns-domain-exp $user $domain"
47+
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
48+
fi
49+
4450

4551
#----------------------------------------------------------#
4652
# Vesta #

bin/v-change-dns-domain-ip

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,20 @@ sed -i "s/$old/$ip/g" $USER_DATA/dns/$domain.conf
5252
# Updating zone
5353
update_domain_zone
5454

55+
# dns-cluster
56+
if [ ! -z "$DNS_CLUSTER" ]; then
57+
cmd="v-add-remote-dns-domain $user $domain"
58+
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
59+
fi
60+
5561

5662
#----------------------------------------------------------#
5763
# Vesta #
5864
#----------------------------------------------------------#
5965

6066
# Restart named
6167
if [ "$restart" != 'no' ]; then
62-
$BIN/v-restart-dns "$EVENT"
68+
$BIN/v-restart-dns
6369
fi
6470

6571
# Logging

0 commit comments

Comments
 (0)