|
|
@@ -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
|