1
0
mirror of https://github.com/myvesta/vesta.git synced 2025-03-12 04:35:23 -07:00

new handy rebuild function

This commit is contained in:
Serghey Rodin 2011-08-24 16:19:56 +03:00
parent 91794b59b9
commit 70b70c97c1

132
bin/v_rebuild_dns_domains Executable file

@ -0,0 +1,132 @@
#!/bin/bash
# info: rebuilding dns domains
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
user="$1"
# Importing variables
source $VESTA/conf/vars.conf
source $V_FUNC/shared_func.sh
source $V_FUNC/domain_func.sh
source $V_FUNC/ip_func.sh
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
# Checking arg number
check_args '1' "$#" 'user'
# Checking argument format
format_validation 'user'
# Checking dns system is enabled
is_system_enabled 'dns'
# Checking user
is_user_valid
# Checking user is active
is_user_suspended
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Checking zones folder
if [ ! -d "$V_USERS/$user/zones" ]; then
rm -f $V_USERS/$user/zones
mkdir $V_USERS/$user/zones
fi
# Defining config
conf="$V_USERS/$user/dns.conf"
# Defining search string
search_string="DOMAIN"
# Defining fileds to select
field='$DOMAIN'
# Parsing unsuspeneded domains
domains=$(dom_clear_search)
# Defining user name servers
ns=$(get_user_value '$NS')
i=1
for nameserver in ${ns//,/ };do
eval ns$i="$nameserver"
i=$((i + 1))
done
# Starting loop
for domain in $domains; do
# Defining variables
domain_idn=$(idn -t --quiet -a "$domain")
ip="$(get_dns_domain_value '$IP')"
template="$(get_dns_domain_value '$TPL')"
exp="$(get_dns_domain_value '$EXP')"
soa="$(get_dns_domain_value '$SOA')"
ttl="$(get_dns_domain_value '$TTL')"
suspend="$(get_dns_domain_value '$SUSPEND')"
# Checking zone file
if [ ! -e "$V_USERS/$user/zones/$domain" ]; then
cat $V_DNSTPL/$template.tpl |\
sed -e "s/%ip%/$ip/g" \
-e "s/%domain_idn%/$domain_idn/g" \
-e "s/%domain%/$domain/g" \
-e "s/%ns1%/$ns1/g" \
-e "s/%ns2%/$ns2/g" \
-e "s/%ns3%/$ns3/g" \
-e "s/%ns4%/$ns4/g" \
-e "s/%ns5%/$ns5/g" \
-e "s/%ns6%/$ns6/g" \
-e "s/%ns7%/$ns7/g" \
-e "s/%ns8%/$ns8/g" \
-e "s/%date%/$V_DATE/g" > $V_USERS/$user/zones/$domain
fi
# Sorting records
sort_dns_records
# Updating zone
update_domain_zone
# Bind config check
nconf='/etc/named.conf'
if [ "$suspend" = 'yes' ]; then
rm_string=$(grep -n /etc/namedb/$domain.db $nconf | cut -d : -f 1)
if [ ! -z "$rm_string" ]; then
sed -i "$rm_string d" $nconf
fi
else
check_string=$(grep /etc/namedb/$domain.db $nconf)
if [ -z "$check_string" ]; then
named="zone \"$domain_idn\""
named="$named {type master; file \"/etc/namedb/$domain.db\";};"
echo "$named" >> /etc/named.conf
fi
fi
done
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Adding task to the vesta pipe
restart_schedule 'dns'
# Logging
log_event 'system' "$V_EVENT"
exit $OK