From 70b70c97c14581f5ee603310c0903615ebf7aac3 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Wed, 24 Aug 2011 16:19:56 +0300 Subject: [PATCH] new handy rebuild function --- bin/v_rebuild_dns_domains | 132 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100755 bin/v_rebuild_dns_domains diff --git a/bin/v_rebuild_dns_domains b/bin/v_rebuild_dns_domains new file mode 100755 index 000000000..c2bcef3ca --- /dev/null +++ b/bin/v_rebuild_dns_domains @@ -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