Skip to content

Commit 70b70c9

Browse files
committed
new handy rebuild function
1 parent 91794b5 commit 70b70c9

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

bin/v_rebuild_dns_domains

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
#!/bin/bash
2+
# info: rebuilding dns domains
3+
4+
#----------------------------------------------------------#
5+
# Variable&Function #
6+
#----------------------------------------------------------#
7+
8+
# Argument defenition
9+
user="$1"
10+
11+
# Importing variables
12+
source $VESTA/conf/vars.conf
13+
source $V_FUNC/shared_func.sh
14+
source $V_FUNC/domain_func.sh
15+
source $V_FUNC/ip_func.sh
16+
17+
18+
#----------------------------------------------------------#
19+
# Verifications #
20+
#----------------------------------------------------------#
21+
22+
# Checking arg number
23+
check_args '1' "$#" 'user'
24+
25+
# Checking argument format
26+
format_validation 'user'
27+
28+
# Checking dns system is enabled
29+
is_system_enabled 'dns'
30+
31+
# Checking user
32+
is_user_valid
33+
34+
# Checking user is active
35+
is_user_suspended
36+
37+
38+
#----------------------------------------------------------#
39+
# Action #
40+
#----------------------------------------------------------#
41+
42+
# Checking zones folder
43+
if [ ! -d "$V_USERS/$user/zones" ]; then
44+
rm -f $V_USERS/$user/zones
45+
mkdir $V_USERS/$user/zones
46+
fi
47+
48+
# Defining config
49+
conf="$V_USERS/$user/dns.conf"
50+
51+
# Defining search string
52+
search_string="DOMAIN"
53+
54+
# Defining fileds to select
55+
field='$DOMAIN'
56+
57+
# Parsing unsuspeneded domains
58+
domains=$(dom_clear_search)
59+
60+
# Defining user name servers
61+
ns=$(get_user_value '$NS')
62+
i=1
63+
for nameserver in ${ns//,/ };do
64+
eval ns$i="$nameserver"
65+
i=$((i + 1))
66+
done
67+
68+
# Starting loop
69+
for domain in $domains; do
70+
71+
# Defining variables
72+
domain_idn=$(idn -t --quiet -a "$domain")
73+
ip="$(get_dns_domain_value '$IP')"
74+
template="$(get_dns_domain_value '$TPL')"
75+
exp="$(get_dns_domain_value '$EXP')"
76+
soa="$(get_dns_domain_value '$SOA')"
77+
ttl="$(get_dns_domain_value '$TTL')"
78+
suspend="$(get_dns_domain_value '$SUSPEND')"
79+
80+
# Checking zone file
81+
if [ ! -e "$V_USERS/$user/zones/$domain" ]; then
82+
cat $V_DNSTPL/$template.tpl |\
83+
sed -e "s/%ip%/$ip/g" \
84+
-e "s/%domain_idn%/$domain_idn/g" \
85+
-e "s/%domain%/$domain/g" \
86+
-e "s/%ns1%/$ns1/g" \
87+
-e "s/%ns2%/$ns2/g" \
88+
-e "s/%ns3%/$ns3/g" \
89+
-e "s/%ns4%/$ns4/g" \
90+
-e "s/%ns5%/$ns5/g" \
91+
-e "s/%ns6%/$ns6/g" \
92+
-e "s/%ns7%/$ns7/g" \
93+
-e "s/%ns8%/$ns8/g" \
94+
-e "s/%date%/$V_DATE/g" > $V_USERS/$user/zones/$domain
95+
fi
96+
97+
# Sorting records
98+
sort_dns_records
99+
100+
# Updating zone
101+
update_domain_zone
102+
103+
# Bind config check
104+
nconf='/etc/named.conf'
105+
106+
if [ "$suspend" = 'yes' ]; then
107+
rm_string=$(grep -n /etc/namedb/$domain.db $nconf | cut -d : -f 1)
108+
if [ ! -z "$rm_string" ]; then
109+
sed -i "$rm_string d" $nconf
110+
fi
111+
else
112+
check_string=$(grep /etc/namedb/$domain.db $nconf)
113+
if [ -z "$check_string" ]; then
114+
named="zone \"$domain_idn\""
115+
named="$named {type master; file \"/etc/namedb/$domain.db\";};"
116+
echo "$named" >> /etc/named.conf
117+
fi
118+
fi
119+
done
120+
121+
122+
#----------------------------------------------------------#
123+
# Vesta #
124+
#----------------------------------------------------------#
125+
126+
# Adding task to the vesta pipe
127+
restart_schedule 'dns'
128+
129+
# Logging
130+
log_event 'system' "$V_EVENT"
131+
132+
exit $OK

0 commit comments

Comments
 (0)