v-delete-user 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. # info: delete user
  3. # options: USER
  4. #
  5. # This function deletes a certain user and all his resources such as domains,
  6. # databases, cron jobs, etc.
  7. #----------------------------------------------------------#
  8. # Variable&Function #
  9. #----------------------------------------------------------#
  10. # Argument definition
  11. user=$1
  12. restart=$2
  13. # Includes
  14. source $HESTIA/func/main.sh
  15. source $HESTIA/func/domain.sh
  16. source $HESTIA/func/db.sh
  17. source $HESTIA/func/ip.sh
  18. source $HESTIA/conf/hestia.conf
  19. #----------------------------------------------------------#
  20. # Verifications #
  21. #----------------------------------------------------------#
  22. check_args '1' "$#" 'USER'
  23. is_format_valid 'user'
  24. is_object_valid 'user' 'USER' "$user"
  25. is_object_unsuspended 'user' 'USER' "$user"
  26. if [ "$user" = 'admin' ]; then
  27. exit
  28. fi
  29. #----------------------------------------------------------#
  30. # Action #
  31. #----------------------------------------------------------#
  32. # Deleting web domains
  33. if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
  34. $BIN/v-unsuspend-web-domains $user $restart
  35. $BIN/v-delete-web-domains $user $restart
  36. check_result "$?" "web domain deletion failed"
  37. fi
  38. # Deleting dns domains
  39. if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
  40. $BIN/v-unsuspend-dns-domains $user $restart
  41. $BIN/v-delete-dns-domains $user $restart
  42. check_result "$?" "dns domain deletion failed"
  43. fi
  44. # Deleting mail domains
  45. if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
  46. $BIN/v-unsuspend-mail-domains $user
  47. $BIN/v-delete-mail-domains $user
  48. check_result "$?" "mail domain deletion failed"
  49. fi
  50. # Deleting databases
  51. if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
  52. $BIN/v-unsuspend-databases $user
  53. $BIN/v-delete-databases $user
  54. check_result "$?" "database deletion failed"
  55. fi
  56. # Releasing user ips
  57. $BIN/v-delete-user-ips "$user"
  58. check_result "$?" "user ip release failed"
  59. # Deleteing user pipes
  60. sed -i "/ $user$/d" $HESTIA/data/queue/disk.pipe
  61. sed -i "/ $user$/d" $HESTIA/data/queue/traffic.pipe
  62. # Deleting sftp jail
  63. $BIN/v-delete-user-sftp-jail $user
  64. # Deleting system user
  65. /usr/sbin/userdel -f $user >> /dev/null 2>&1
  66. if [ $? -ne 0 ]; then
  67. sed -i "/^$user:/d" /etc/passwd
  68. sed -i "/^$user:/d" /etc/shadow
  69. fi
  70. /usr/sbin/groupdel $user >> /dev/null 2>&1
  71. if [ $? -ne 0 ]; then
  72. sed -i "/^$user:/d" /etc/group
  73. fi
  74. # Deleting user directories
  75. chattr -i $HOMEDIR/$user/conf
  76. rm -rf $HOMEDIR/$user
  77. rm -f /var/spool/mail/$user
  78. rm -f /var/spool/cron/$user
  79. rm -f /var/spool/cron/crontabs/$user
  80. rm -rf $USER_DATA
  81. # Updating admin counter
  82. if [ "$user" != 'admin' ]; then
  83. decrease_user_value 'admin' '$U_USERS'
  84. fi
  85. #----------------------------------------------------------#
  86. # Hestia #
  87. #----------------------------------------------------------#
  88. # Logging
  89. log_history "deleted system user $user" '' 'admin'
  90. log_event "$OK" "$ARGUMENTS"
  91. exit