v-change-dns-domain-tpl 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/bash
  2. # info: change dns domain template
  3. # options: USER DOMAIN TEMPLATE [RESTART]
  4. #
  5. # The function for changing the template of records. By updating old records
  6. # will be removed and new records will be generated in accordance with
  7. # parameters of new template.
  8. #----------------------------------------------------------#
  9. # Variable&Function #
  10. #----------------------------------------------------------#
  11. # Argument definition
  12. user=$1
  13. domain=$(idn -t --quiet -u "$2" )
  14. template=$3
  15. restart=$4
  16. domain_idn="$domain"
  17. if [[ "$domain" = *[![:ascii:]]* ]]; then
  18. domain_idn=$(idn -t --quiet -a $domain)
  19. fi
  20. # Includes
  21. source $VESTA/func/main.sh
  22. source $VESTA/func/domain.sh
  23. source $VESTA/conf/vesta.conf
  24. #----------------------------------------------------------#
  25. # Verifications #
  26. #----------------------------------------------------------#
  27. check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
  28. is_format_valid 'user' 'domain' 'template'
  29. is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
  30. is_object_valid 'user' 'USER' "$user"
  31. is_object_unsuspended 'user' 'USER' "$user"
  32. is_object_valid 'dns' 'DOMAIN' "$domain"
  33. is_object_unsuspended 'dns' 'DOMAIN' "$domain"
  34. is_dns_template_valid "$template"
  35. #----------------------------------------------------------#
  36. # Action #
  37. #----------------------------------------------------------#
  38. # Defining variables
  39. get_domain_values 'dns'
  40. i=1
  41. ns=$(get_user_value '$NS')
  42. for nameserver in ${ns//,/ };do
  43. eval ns$i=$nameserver
  44. (( ++i))
  45. done
  46. # Reading template
  47. template_data=$(cat $DNSTPL/$template.tpl)
  48. # Deleting unused nameservers
  49. if [ -z "$ns3" ]; then
  50. template_data=$(echo "$template_data" |grep -v %ns3%)
  51. fi
  52. if [ -z "$ns4" ]; then
  53. template_data=$(echo "$template_data" |grep -v %ns4%)
  54. fi
  55. if [ -z "$ns5" ]; then
  56. template_data=$(echo "$template_data" |grep -v %ns5%)
  57. fi
  58. if [ -z "$ns6" ]; then
  59. template_data=$(echo "$template_data" |grep -v %ns6%)
  60. fi
  61. if [ -z "$ns7" ]; then
  62. template_data=$(echo "$template_data" |grep -v %ns7%)
  63. fi
  64. if [ -z "$ns8" ]; then
  65. template_data=$(echo "$template_data" |grep -v %ns8%)
  66. fi
  67. # Changing tpl
  68. echo "$template_data" |\
  69. sed -e "s/%ip%/$IP/g" \
  70. -e "s/%domain_idn%/$domain_idn/g" \
  71. -e "s/%domain%/$domain/g" \
  72. -e "s/%ns1%/$ns1/g" \
  73. -e "s/%ns2%/$ns2/g" \
  74. -e "s/%ns3%/$ns3/g" \
  75. -e "s/%ns4%/$ns4/g" \
  76. -e "s/%ns5%/$ns5/g" \
  77. -e "s/%ns6%/$ns6/g" \
  78. -e "s/%ns7%/$ns7/g" \
  79. -e "s/%ns8%/$ns8/g" \
  80. -e "s/%time%/$TIME/g" \
  81. -e "s/%date%/$DATE/g" > $USER_DATA/dns/$domain.conf
  82. records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
  83. # Updating zone
  84. if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
  85. update_domain_serial
  86. update_domain_zone
  87. fi
  88. # Updating dns-cluster queue
  89. if [ ! -z "$DNS_CLUSTER" ]; then
  90. # Check for first sync
  91. dlock=$(grep "domain $user $domain" $VESTA/data/queue/dns-cluster.pipe)
  92. if [ -z "$dlock" ]; then
  93. cmd="$BIN/v-add-remote-dns-domain $user $domain domain"
  94. echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
  95. fi
  96. fi
  97. #----------------------------------------------------------#
  98. # Vesta #
  99. #----------------------------------------------------------#
  100. # Updating vesta config
  101. update_object_value 'dns' 'DOMAIN' "$domain" '$TPL' "$template"
  102. update_object_value 'dns' 'DOMAIN' "$domain" '$RECORDS' "$records"
  103. # Restarting named
  104. if [ "$restart" != 'no' ]; then
  105. $BIN/v-restart-dns
  106. check_result $? "DNS restart failed" >/dev/null
  107. fi
  108. # Logging
  109. log_history "changed dns template for $domain to $template" '' 'admin'
  110. log_event "$OK" "$ARGUMENTS"
  111. exit