Serghey Rodin 14 лет назад
Родитель
Сommit
70b70c97c1
1 измененных файлов с 132 добавлено и 0 удалено
  1. 132 0
      bin/v_rebuild_dns_domains

+ 132 - 0
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