Serghey Rodin 10 лет назад
Родитель
Сommit
264b851d1a

+ 3 - 2
bin/v-add-dns-domain

@@ -81,6 +81,7 @@ if [ -z $ns2 ]; then
 fi
 soa="$ns1"
 exp=$(date +%F -d "+ 1 year")
+serial=$(date +'%Y%m%d01')
 ttl=14400
 
 # Reading template
@@ -111,8 +112,8 @@ records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
 
 # Adding dns.conf record
 dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'"
-dns_rec="$dns_rec SOA='$soa' RECORDS='$records' SUSPENDED='no' TIME='$TIME'"
-dns_rec="$dns_rec DATE='$DATE'"
+dns_rec="$dns_rec SOA='$soa' SERIAL='$serial' SRC='' RECORDS='$records'"
+dns_rec="$dns_rec SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
 
 echo "$dns_rec" >> $USER_DATA/dns.conf
 chmod 660 $USER_DATA/dns.conf

+ 1 - 0
bin/v-add-dns-record

@@ -82,6 +82,7 @@ sort_dns_records
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 1
bin/v-add-remote-dns-domain

@@ -111,7 +111,7 @@ for cluster_str in $search_str; do
         fi
 
         # Rebuild dns zone
-        $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
+        $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
         if [ $? -ne 0 ]; then
             echo "Error: $TYPE connection to $HOST failed"
             log_event "$E_CONNECT $EVENT"

+ 4 - 1
bin/v-add-remote-dns-record

@@ -80,13 +80,16 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
         DNS_CLUSTER_IGNORE='dns-cluster'
     fi
 
+    # Sync SOA
+    $send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'domain' 'no'
+
     # Sync record
     str=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf)
     str=$(echo "$str" | sed 's/"/\\"/g')
     $send_cmd v-insert-dns-record $DNS_USER $domain "$str" 'no'
     if [ $? -eq 0 ]; then
         # Rebuild dns zone
-        $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
+        $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
         if [ $? -ne 0 ]; then
             echo "Error: $TYPE connection to $HOST failed (rebuild)"
             log_event "$E_CONNECT $EVENT"

+ 2 - 1
bin/v-change-dns-domain-ip

@@ -51,6 +51,7 @@ sed -i "s/$old/$ip/g" $USER_DATA/dns/$domain.conf
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 
@@ -59,7 +60,7 @@ if [ ! -z "$DNS_CLUSTER" ]; then
     # Check for first sync
     dlock=$(grep "domain $user $domain" $VESTA/data/queue/dns-cluster.pipe)
     if [ -z "$dlock" ]; then
-        cmd="$BIN/v-add-remote-dns-domain $user $domain domain"
+        cmd="$BIN/v-add-remote-dns-domain $user $domain domain yes"
         echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
     fi
 fi

+ 1 - 0
bin/v-change-dns-domain-soa

@@ -45,6 +45,7 @@ update_object_value 'dns' 'DOMAIN' "$domain" '$SOA' "$soa"
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 0
bin/v-change-dns-domain-tpl

@@ -67,6 +67,7 @@ records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 0
bin/v-change-dns-domain-ttl

@@ -44,6 +44,7 @@ update_object_value 'dns' 'DOMAIN' "$domain" '$TTL' "$ttl"
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 0
bin/v-change-dns-record

@@ -77,6 +77,7 @@ sort_dns_records
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 0
bin/v-change-dns-record-id

@@ -51,6 +51,7 @@ sort_dns_records
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 1
bin/v-change-remote-dns-domain-soa

@@ -85,7 +85,7 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
     $send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
 
     # Rebuild dns zone
-    $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
+    $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
     if [ $? -ne 0 ]; then
         echo "Error: $TYPE connection to $HOST failed (rebuild)"
         log_event "$E_CONNECT $EVENT"

+ 1 - 1
bin/v-change-remote-dns-domain-ttl

@@ -100,7 +100,7 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
     $send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
 
     # Rebuild dns zone
-    $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
+    $send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
     if [ $? -ne 0 ]; then
         echo "Error: $TYPE connection to $HOST failed (rebuild)"
         log_event "$E_CONNECT $EVENT"

+ 1 - 0
bin/v-delete-dns-record

@@ -45,6 +45,7 @@ sed -i "/^ID='$id'/d" $USER_DATA/dns/$domain.conf
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 1
bin/v-insert-dns-domain

@@ -57,7 +57,7 @@ fi
 
 # Prepare values for the insert
 dns_rec="DOMAIN='$DOMAIN' IP='$IP' TPL='$TPL' TTL='$TTL' EXP='$EXP'"
-dns_rec="$dns_rec SOA='$SOA' SRC='$src' RECORDS='$RECORDS'"
+dns_rec="$dns_rec SOA='$SOA' SERIAL="$SERIAL" SRC='$src' RECORDS='$RECORDS'"
 dns_rec="$dns_rec SUSPENDED='$SUSPENDED' TIME='$TIME' DATE='$DATE'"
 echo "$dns_rec" >> $USER_DATA/dns.conf
 

+ 2 - 1
bin/v-list-dns-domain

@@ -87,7 +87,8 @@ is_object_valid 'dns' 'DOMAIN' "$domain"
 
 # Defining config and fields to select
 conf=$USER_DATA/dns.conf
-fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $RECORDS $SUSPENDED $TIME $DATE'
+fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
+    $SUSPENDED $TIME $DATE'
 
 # Listing domains
 case $format in 

+ 2 - 1
bin/v-list-dns-domains

@@ -32,7 +32,8 @@ is_object_valid 'user' 'USER' "$user"
 
 # Defining config and fields
 conf=$USER_DATA/dns.conf
-fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SRC $RECORDS $SUSPENDED $TIME $DATE'
+fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
+    $SUSPENDED $TIME $DATE'
 
 # Listing domains
 case $format in 

+ 10 - 4
bin/v-rebuild-dns-domain

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild dns domain
-# options: USER DOMAIN [RESTART]
+# options: USER DOMAIN [RESTART] [UPDATE_SERIAL]
 #
 # The function rebuilds DNS configuration files.
 
@@ -13,6 +13,7 @@
 user=$1
 domain=$2
 restart=$3
+update_serial=$4
 
 # Includes
 source $VESTA/func/main.sh
@@ -25,7 +26,7 @@ source $VESTA/conf/vesta.conf
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '2' "$#" 'USER DOMAIN [RESTART]'
+check_args '2' "$#" 'USER DOMAIN [RESTART] [UPDATE_SERIAL]'
 validate_format 'user' 'domain'
 is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
 is_object_valid 'user' 'USER' "$user"
@@ -59,10 +60,15 @@ if [ -e '/etc/bind/named.conf' ]; then
     dns_conf='/etc/bind/named.conf'
 fi
 
-# Remove old user's zone
+# Deleting old user's zone
 sed -i "/\/$user\/conf\/dns\/$domain/d" $dns_conf
 
-# Starting loop
+# Updating zone serial
+if [ "$update_serial" != 'no' ]; then
+    update_domain_serial
+fi
+
+# Rebuiling zone config
 rebuild_dns_domain_conf
 
 

+ 6 - 2
bin/v-rebuild-dns-domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild dns domains
-# options: USER [RESTART]
+# options: USER [RESTART] [UPDATE_SERIAL]
 #
 # The function rebuilds DNS configuration files.
 
@@ -12,6 +12,7 @@
 # Argument defenition
 user=$1
 restart=$2
+update_serial=$3
 
 # Includes
 source $VESTA/func/main.sh
@@ -24,7 +25,7 @@ source $VESTA/conf/vesta.conf
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'USER [RESTART]'
+check_args '1' "$#" 'USER [RESTART] [UPDATE_SERIAL]'
 validate_format 'user'
 is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
 is_object_valid 'user' 'USER' "$user"
@@ -65,6 +66,9 @@ sed -i "/\/$user\/conf\/dns/d" $dns_conf
 
 # Starting loop
 for domain in $(search_objects 'dns' 'DOMAIN' "*" 'DOMAIN'); do
+   if [ "$update_serial" != 'no' ]; then
+        update_domain_serial
+    fi
     rebuild_dns_domain_conf
 done
 

+ 1 - 0
bin/v-suspend-dns-record

@@ -54,6 +54,7 @@ sort_dns_records
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 1 - 0
bin/v-unsuspend-dns-record

@@ -53,6 +53,7 @@ sort_dns_records
 
 # Updating zone
 if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
+    update_domain_serial
     update_domain_zone
 fi
 

+ 28 - 22
func/domain.sh

@@ -216,32 +216,13 @@ is_mail_new() {
 # Update domain zone
 update_domain_zone() {
     conf="$HOMEDIR/$user/conf/dns/$domain.db"
-    line=$(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
+    domain_param=$(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
     fields='$RECORD\t$TTL\tIN\t$TYPE\t$PRIORITY\t$VALUE'
-    if [ -e $conf ]; then
-        zn_serial=$(head $conf|grep 'SOA' -A1|tail -n 1|sed "s/ //g")
-        s_date=$(echo ${zn_serial:0:8})
-        c_date=$(date +'%Y%m%d')
-        if [ "$s_date" == "$c_date" ]; then
-            cur_value=$(echo ${zn_serial:8} )
-            new_value=$(expr $cur_value + 1 )
-            len_value=$(expr length $new_value)
-            if [ 1 -eq "$len_value" ]; then
-                new_value='0'$new_value
-            fi
-            serial="$c_date""$new_value"
-        else
-            serial="$(date +'%Y%m%d01')"
-        fi
-    else
-        serial="$(date +'%Y%m%d01')"
-    fi
-
-    eval $line
+    eval $domain_param
     SOA=$(idn --quiet -a -t "$SOA")
     echo "\$TTL $TTL
 @    IN    SOA    $SOA.    root.$domain_idn. (
-                                            $serial
+                                            $SERIAL
                                             7200
                                             3600
                                             1209600
@@ -264,6 +245,31 @@ update_domain_zone() {
     done < $USER_DATA/dns/$domain.conf
 }
 
+# Update zone serial
+update_domain_serial() {
+    zn_conf="$HOMEDIR/$user/conf/dns/$domain.db"
+    if [ -e $zn_conf ]; then
+        zn_serial=$(head $zn_conf |grep 'SOA' -A1 |tail -n 1 |sed "s/ //g")
+        s_date=$(echo ${zn_serial:0:8})
+        c_date=$(date +'%Y%m%d')
+        if [ "$s_date" == "$c_date" ]; then
+            cur_value=$(echo ${zn_serial:8} )
+            new_value=$(expr $cur_value + 1 )
+            len_value=$(expr length $new_value)
+            if [ 1 -eq "$len_value" ]; then
+                new_value='0'$new_value
+            fi
+            serial="$c_date""$new_value"
+        else
+            serial="$(date +'%Y%m%d01')"
+        fi
+    else
+        serial="$(date +'%Y%m%d01')"
+    fi
+    add_object_key "dns" 'DOMAIN' "$domain" 'SERIAL' 'RECORDS'
+    update_object_value 'dns' 'DOMAIN' "$domain" '$SERIAL' "$serial"
+}
+
 # Get next DNS record ID
 get_next_dnsrecord(){
     if [ -z "$id" ]; then

+ 9 - 2
web/templates/admin/list_dns.html

@@ -161,13 +161,20 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
                 </td>
                 <td>
                   <div class="l-unit__stat-cols clearfix">
-                    <div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Expire')?>:</div>
+                    <div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Serial')?>:</div>
                     <div class="l-unit__stat-col l-unit__stat-col--right">
-                      <b><?=translate_date($data[$key]['EXP'])?></b>
+                      <b><?=$data[$key]['SERIAL']?></b>
                     </div>
                   </div>
                 </td>
                 <td>
+
+                  <div class="l-unit__stat-cols clearfix">
+                    <div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Expire')?>:</div>
+                    <div class="l-unit__stat-col l-unit__stat-col--right">
+                      <b><?=$data[$key]['EXP']?></b>
+                    </div>
+                  </div>
                 </td>
               </tr>