mirror of
https://github.com/myvesta/vesta
synced 2025-08-11 09:07:43 -07:00
DNS Cluster Serial fix
This commit is contained in:
parent
a379e01e5a
commit
264b851d1a
22 changed files with 79 additions and 40 deletions
bin
v-add-dns-domainv-add-dns-recordv-add-remote-dns-domainv-add-remote-dns-recordv-change-dns-domain-ipv-change-dns-domain-soav-change-dns-domain-tplv-change-dns-domain-ttlv-change-dns-recordv-change-dns-record-idv-change-remote-dns-domain-soav-change-remote-dns-domain-ttlv-delete-dns-recordv-insert-dns-domainv-list-dns-domainv-list-dns-domainsv-rebuild-dns-domainv-rebuild-dns-domainsv-suspend-dns-recordv-unsuspend-dns-record
func
web/templates/admin
|
@ -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
|
||||
|
|
|
@ -82,6 +82,7 @@ sort_dns_records
|
|||
|
||||
# Updating zone
|
||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||
update_domain_serial
|
||||
update_domain_zone
|
||||
fi
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -77,6 +77,7 @@ sort_dns_records
|
|||
|
||||
# Updating zone
|
||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||
update_domain_serial
|
||||
update_domain_zone
|
||||
fi
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ sort_dns_records
|
|||
|
||||
# Updating zone
|
||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||
update_domain_serial
|
||||
update_domain_zone
|
||||
fi
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ sort_dns_records
|
|||
|
||||
# Updating zone
|
||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||
update_domain_serial
|
||||
update_domain_zone
|
||||
fi
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ sort_dns_records
|
|||
|
||||
# Updating zone
|
||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||
update_domain_serial
|
||||
update_domain_zone
|
||||
fi
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue