mirror of
https://github.com/myvesta/vesta.git
synced 2025-01-07 19:49:51 -08:00
121 lines
3.1 KiB
Bash
121 lines
3.1 KiB
Bash
#!/bin/bash
|
|
# info: change dns domain ip address
|
|
# options: USER DOMAIN IPV6
|
|
#
|
|
# The function for changing the main ipv6 of DNS zone.
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument definition
|
|
user=$1
|
|
domain=$2
|
|
ipv6=$3
|
|
restart=$4
|
|
|
|
# Includes
|
|
source $VESTA/func/main.sh
|
|
source $VESTA/func/ipv6.sh
|
|
source $VESTA/func/domain.sh
|
|
source $VESTA/conf/vesta.conf
|
|
|
|
# Additional argument formatting
|
|
format_domain
|
|
format_domain_idn
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '3' "$#" 'USER DOMAIN IP'
|
|
is_format_valid 'user' 'domain'
|
|
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
|
is_object_valid 'user' 'USER' "$user"
|
|
is_object_unsuspended 'user' 'USER' "$user"
|
|
is_object_valid 'dns' 'DOMAIN' "$domain"
|
|
is_object_unsuspended 'dns' 'DOMAIN' "$domain"
|
|
|
|
if [ "$ipv6" != "no" ]; then
|
|
is_format_valid 'ipv6'
|
|
fi
|
|
if [ "$ipv6" != "no" ]; then
|
|
is_ipv6_valid "$ipv6" "$user"
|
|
else
|
|
ipv6=''
|
|
fi
|
|
|
|
# Get old ip
|
|
get_domain_values 'dns'
|
|
if [ -z @"$ipv6" ] && [ -z "$IP" ]; then
|
|
check_result $E_INVALID "IP or IPv6 is required"
|
|
fi
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
old=$IP6
|
|
|
|
if [ -z "$old" ]; then
|
|
#Create new
|
|
# Generating timestamp
|
|
time_n_date=$(date +'%T %F')
|
|
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
|
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
|
ip=""
|
|
add_dns_config_records
|
|
else
|
|
if [ ! -z "$ipv6" ]; then
|
|
# Changing records
|
|
sed -i "s/$old/$ipv6/g" $USER_DATA/dns/$domain.conf
|
|
else
|
|
#Delete configs
|
|
ipv6=""
|
|
ip=$IP
|
|
remove_dns_config_records
|
|
fi
|
|
fi
|
|
|
|
# Changing ip
|
|
update_object_value 'dns' 'DOMAIN' "$domain" '$IP6' "$ipv6"
|
|
|
|
#update counters
|
|
records="$(wc -l $USER_DATA/dns/$domain.conf | cut -f1 -d ' ')"
|
|
update_object_value 'dns' 'DOMAIN' "$domain" '$RECORDS' "$records"
|
|
records=$(wc -l $USER_DATA/dns/*.conf | cut -f 1 -d ' ')
|
|
update_user_value "$user" '$U_DNS_RECORDS' "$records"
|
|
|
|
# Updating zone
|
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
|
update_domain_serial
|
|
update_domain_zone
|
|
fi
|
|
|
|
# Updating dns-cluster queue
|
|
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 yes"
|
|
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
|
|
fi
|
|
fi
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Restarting named
|
|
$BIN/v-restart-dns $restart
|
|
check_result $? "DNS restart failed" >/dev/null
|
|
|
|
# Logging
|
|
log_history "changed dns ip for $domain to $ip"
|
|
log_event "$OK" "$ARGUMENTS"
|
|
|
|
exit
|