v_add_mail_domain 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #!/bin/bash
  2. # info: add mail domain
  3. # options: user domain [antispam] [antivirus]
  4. #
  5. # The function adds MAIL domain.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. domain=$(idn -t --quiet -u "$2" )
  12. domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
  13. domain_idn=$(idn -t --quiet -a "$domain")
  14. antispam=${3-yes}
  15. antivirus=${3-yes}
  16. # Importing variables
  17. source $VESTA/conf/vars.conf
  18. source $V_CONF/vesta.conf
  19. source $V_FUNC/shared.func
  20. source $V_FUNC/domain.func
  21. #----------------------------------------------------------#
  22. # Verifications #
  23. #----------------------------------------------------------#
  24. # Checking arg number
  25. check_args '3' "$#" 'user domain [antispam] [antivirus]'
  26. # Checking argument format
  27. format_validation 'user' 'domain' 'antispam' 'antivirus'
  28. # Checking dns system is enabled
  29. is_system_enabled 'mail'
  30. # Checking user
  31. is_user_valid
  32. # Checking user is active
  33. is_user_suspended
  34. # Checking domain
  35. is_domain_new 'quiet'
  36. if [ $? -ne 0 ]; then
  37. # Checking domain owner
  38. is_domain_owner
  39. # Checking domain service
  40. is_dns_domain_free
  41. fi
  42. # Checking package
  43. is_package_full 'mail'
  44. exit
  45. #----------------------------------------------------------#
  46. # Action #
  47. #----------------------------------------------------------#
  48. # Defining variables
  49. i=1
  50. ns=$(get_user_value '$NS')
  51. for nameserver in ${ns//,/ };do
  52. eval ns$i=$nameserver
  53. i=$((i + 1))
  54. done
  55. if [ -z "$soa" ]; then
  56. soa="$ns1"
  57. fi
  58. # Adding zone to dns dir
  59. cat $V_DNSTPL/$template.tpl |\
  60. sed -e "s/%ip%/$ip/g" \
  61. -e "s/%domain_idn%/$domain_idn/g" \
  62. -e "s/%domain%/$domain/g" \
  63. -e "s/%ns1%/$ns1/g" \
  64. -e "s/%ns2%/$ns2/g" \
  65. -e "s/%ns3%/$ns3/g" \
  66. -e "s/%ns4%/$ns4/g" \
  67. -e "s/%ns5%/$ns5/g" \
  68. -e "s/%ns6%/$ns6/g" \
  69. -e "s/%ns7%/$ns7/g" \
  70. -e "s/%ns8%/$ns8/g" \
  71. -e "s/%date%/$V_DATE/g" > $V_USERS/$user/dns/$domain
  72. # Adding dns.conf record
  73. dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'"
  74. dns_rec="$dns_rec SOA='$soa' SUSPENDED='no' DATE='$V_DATE'"
  75. echo "$dns_rec" >> $V_USERS/$user/dns.conf
  76. chmod 660 $V_USERS/$user/dns.conf
  77. # Adding zone in named.conf
  78. named="zone \"$domain_idn\" {type master; file"
  79. named="$named \"$V_HOME/$user/conf/dns/$domain.db\";};"
  80. echo "$named" >> /etc/named.conf
  81. # Updating domain dns zone
  82. conf="$V_HOME/$user/conf/dns/$domain.db"
  83. update_domain_zone
  84. chmod 640 $conf
  85. chown root:named $conf
  86. #----------------------------------------------------------#
  87. # Vesta #
  88. #----------------------------------------------------------#
  89. # Increasing domain value
  90. increase_user_value "$user" '$U_DNS_DOMAINS'
  91. # Adding task to the vesta pipe
  92. restart_schedule 'dns'
  93. # Logging
  94. log_history "$V_EVENT" "v_delete_dns_domain $user $domain"
  95. log_event 'system' "$V_EVENT"
  96. exit