v-change-domain-owner 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #!/bin/bash
  2. # info: change domain owner
  3. # options: DOMAIN USER
  4. #
  5. # The function of changing domain ownership.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. domain=$1
  11. user=$2
  12. # Includes
  13. source $VESTA/func/ip.sh
  14. source $VESTA/func/main.sh
  15. source $VESTA/conf/vesta.conf
  16. #----------------------------------------------------------#
  17. # Verifications #
  18. #----------------------------------------------------------#
  19. check_args '2' "$#" 'DOMAIN USER'
  20. is_format_valid 'domain' 'user'
  21. is_object_valid 'user' 'USER' "$user"
  22. is_object_unsuspended 'user' 'USER' "$user"
  23. owner=$(v-search-domain-owner $domain)
  24. if [ -z "$owner" ]; then
  25. check_result $E_NOTEXIST "domain $domain doesn't exist"
  26. fi
  27. if [ "$owner" = "$user" ]; then
  28. exit
  29. fi
  30. #----------------------------------------------------------#
  31. # Action #
  32. #----------------------------------------------------------#
  33. # WEB domain
  34. web_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/web.conf)
  35. if [ ! -z "$web_data" ]; then
  36. $BIN/v-suspend-web-domain $owner $domain >> /dev/null 2>&1
  37. eval $web_data
  38. # Change IP
  39. if [ ! -z "$ip" ]; then
  40. web_data=$(echo "$web_data" | sed "s/IP='$IP'/IP='$ip'/")
  41. fi
  42. # Check SSL
  43. if [ "$SSL" = 'yes' ]; then
  44. ssl_crt=$VESTA/data/users/$owner/ssl/$domain.crt
  45. ssl_key=$VESTA/data/users/$owner/ssl/$domain.key
  46. ssl_ca=$VESTA/data/users/$owner/ssl/$domain.ca
  47. ssl_pem=$VESTA/data/users/$owner/ssl/$domain.pem
  48. mv $ssl_crt $VESTA/data/users/$user/ssl/
  49. mv $ssl_key $VESTA/data/users/$user/ssl/
  50. mv $ssl_ca $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1
  51. mv $ssl_pem $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1
  52. rm -f $HOMEDIR/$owner/conf/web/ssl.$domain.*
  53. fi
  54. # Check ftp user account
  55. if [ ! -z "$FTP_USER" ]; then
  56. /usr/sbin/userdel -f $FTP_USER >> /dev/null 2>&1
  57. old_str="FTP_USER='$FTP_USER'"
  58. new_str=$(echo "$old_str" | sed "s/${owner}_/${user}_/")
  59. web_data=$(echo "$web_data" | sed "s/$old_str/$new_str/")
  60. fi
  61. # Move config
  62. sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/web.conf
  63. echo "$web_data" >> $VESTA/data/users/$user/web.conf
  64. # Move data
  65. mv $HOMEDIR/$owner/web/$domain $HOMEDIR/$user/web/
  66. # Change ownership
  67. find $HOMEDIR/$user/web/$domain -user $owner \
  68. -exec chown -h $user:$user {} \;
  69. # Rebuild config
  70. $BIN/v-unsuspend-web-domain $user $domain no >> /dev/null 2>&1
  71. $BIN/v-rebuild-web-domains $owner no
  72. $BIN/v-rebuild-web-domains $user
  73. fi
  74. # DNS domain
  75. dns_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/dns.conf)
  76. if [ ! -z "$dns_data" ]; then
  77. eval $dns_data
  78. # Change IP
  79. if [ ! -z "$ip" ]; then
  80. dns_data=$(echo "$dns_data" | sed "s/IP='$IP'/IP='$ip'/")
  81. sed -i "s/$IP/$ip/g" $VESTA/data/users/$owner/dns/$domain.conf
  82. fi
  83. # Move config
  84. sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/dns.conf
  85. echo "$dns_data" >> $VESTA/data/users/$user/dns.conf
  86. # Move dns records
  87. mv $VESTA/data/users/$owner/dns/$domain.conf \
  88. $VESTA/data/users/$user/dns/
  89. # Rebuild config
  90. $BIN/v-unsuspend-dns-domain $user $domain no >> /dev/null 2>&1
  91. $BIN/v-rebuild-dns-domains $owner no
  92. $BIN/v-rebuild-dns-domains $user
  93. # Resync dns cluster
  94. if [ ! -z "$DNS_CLUSTER" ]; then
  95. v-sync-dns-cluster
  96. fi
  97. fi
  98. # MAIL domain
  99. mail_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/mail.conf)
  100. if [ ! -z "$mail_data" ]; then
  101. # Move config
  102. sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/mail.conf
  103. echo "$mail_data" >> $VESTA/data/users/$user/mail.conf
  104. mv -f $VESTA/data/users/$owner/mail/$domain.conf \
  105. $VESTA/data/users/$user/mail/
  106. # Move DKIM
  107. if [ -e "$VESTA/data/users/$owner/mail/$domain.pem" ]; then
  108. mv -f $VESTA/data/users/$owner/mail/$domain.pem \
  109. $VESTA/data/users/$user/mail/
  110. mv -f $VESTA/data/users/$owner/mail/$domain.pub \
  111. $VESTA/data/users/$user/mail/
  112. fi
  113. # Move data
  114. mv $HOMEDIR/$owner/mail/$domain $HOMEDIR/$user/mail/
  115. # Change ownership
  116. find $HOMEDIR/$user/mail/$domain -user $owner \
  117. -exec chown -h $user {} \;
  118. # Rebuild config
  119. $BIN/v-unsuspend-mail-domain $user $domain no >> /dev/null 2>&1
  120. $BIN/v-rebuild-mail-domains $owner no
  121. $BIN/v-rebuild-mail-domains $user
  122. fi
  123. # Update counters
  124. $BIN/v-update-user-counters $owner
  125. $BIN/v-update-user-counters $user
  126. #----------------------------------------------------------#
  127. # Vesta #
  128. #----------------------------------------------------------#
  129. # Logging
  130. log_event "$OK" "$ARGUMENTS"
  131. exit