v-change-dns-domain-tpl 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 defenition
  12. user=$1
  13. domain=$(idn -t --quiet -u "$2" )
  14. domain_idn=$(idn -t --quiet -a "$domain")
  15. template=$3
  16. restart=$4
  17. # Includes
  18. source $VESTA/conf/vesta.conf
  19. source $VESTA/func/main.sh
  20. source $VESTA/func/domain.sh
  21. #----------------------------------------------------------#
  22. # Verifications #
  23. #----------------------------------------------------------#
  24. check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
  25. validate_format 'user' 'domain' 'template'
  26. is_system_enabled "$DNS_SYSTEM"
  27. is_object_valid 'user' 'USER' "$user"
  28. is_object_unsuspended 'user' 'USER' "$user"
  29. is_object_valid 'dns' 'DOMAIN' "$domain"
  30. is_object_unsuspended 'dns' 'DOMAIN' "$domain"
  31. is_dns_template_valid
  32. #----------------------------------------------------------#
  33. # Action #
  34. #----------------------------------------------------------#
  35. # Defining variables
  36. ip=$(get_object_value 'dns' 'DOMAIN' "$domain" '$IP')
  37. i=1
  38. ns=$(get_user_value '$NS')
  39. for nameserver in ${ns//,/ };do
  40. eval ns$i=$nameserver
  41. (( ++i))
  42. done
  43. # Changing tpl
  44. update_object_value 'dns' 'DOMAIN' "$domain" '$TPL' "$template"
  45. # Adding zone to dns dir
  46. cat $DNSTPL/$template.tpl |\
  47. sed -e "s/%ip%/$ip/g" \
  48. -e "s/%domain_idn%/$domain_idn/g" \
  49. -e "s/%domain%/$domain/g" \
  50. -e "s/%ns1%/$ns1/g" \
  51. -e "s/%ns2%/$ns2/g" \
  52. -e "s/%ns3%/$ns3/g" \
  53. -e "s/%ns4%/$ns4/g" \
  54. -e "s/%time%/$TIME/g" \
  55. -e "s/%date%/$DATE/g" > $USER_DATA/dns/$domain.conf
  56. # Updating zone
  57. update_domain_zone
  58. # dns-cluster
  59. if [ ! -z "$DNS_CLUSTER" ]; then
  60. cmd="v-add-remote-dns-domain $user $domain"
  61. echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
  62. fi
  63. #----------------------------------------------------------#
  64. # Vesta #
  65. #----------------------------------------------------------#
  66. # Restart named
  67. if [ "$restart" != 'no' ]; then
  68. $BIN/v-restart-dns
  69. fi
  70. # Logging
  71. log_history "changed dns template for $domain to $template" '' 'admin'
  72. log_event "$OK" "$EVENT"
  73. exit