v-delete-user 3.2 KB

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