v_change_user_package 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #!/bin/bash
  2. # info: change user package
  3. # options: user package
  4. #
  5. # The function changes user's hosting package.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. package=$2
  12. # Importing variables
  13. source $VESTA/conf/vars.conf
  14. source $V_CONF/vesta.conf
  15. source $V_FUNC/shared.func
  16. is_package_avalable() {
  17. # Parsing user data
  18. usr_data=$(cat $V_USERS/$user/user.conf)
  19. for key in $usr_data; do
  20. eval ${key%%=*}=${key#*=}
  21. done
  22. # Clearing vars
  23. WEB_DOMAINS='0'
  24. WEB_SSL='0'
  25. DATABASES='0'
  26. MAIL_DOMAINS='0'
  27. MAIL_BOXES='0'
  28. MAIL_FORWARDERS='0'
  29. DNS_DOMAINS='0'
  30. DISK_QUOTA='0'
  31. BANDWIDTH='0'
  32. # Parsing package
  33. pkg_data=$(cat $V_PKG/$package.pkg)
  34. for key in $pkg_data; do
  35. eval ${key%%=*}=${key#*=}
  36. done
  37. # Comparing user data with package
  38. if [ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ] ||\
  39. [ "$WEB_SSL" -lt "$U_WEB_SSL" ] ||\
  40. [ "$DATABASES" -lt "$U_DATABASES" ] ||\
  41. [ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ] ||\
  42. [ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ] ||\
  43. [ "$DISK_QUOTA" -lt "$U_DISK" ] ||\
  44. [ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]; then
  45. echo "Error: Upgrade package"
  46. log_event 'debug' "$E_LIMIT $v_log"
  47. exit $E_LIMIT
  48. fi
  49. }
  50. change_user_package() {
  51. # Parsing user data
  52. usr_data=$(cat $V_USERS/$user/user.conf)
  53. for key in $usr_data; do
  54. eval ${key%%=*}=${key#*=}
  55. done
  56. # Parsing package
  57. pkg_data=$(cat $V_PKG/$package.pkg)
  58. for key in $pkg_data; do
  59. eval ${key%%=*}=${key#*=}
  60. done
  61. echo "FNAME='$FNAME'
  62. LNAME='$LNAME'
  63. PACKAGE='$package'
  64. WEB_DOMAINS='$WEB_DOMAINS'
  65. WEB_SSL='$WEB_SSL'
  66. WEB_ALIASES='$WEB_ALIASES'
  67. DATABASES='$DATABASES'
  68. MAIL_DOMAINS='$MAIL_DOMAINS'
  69. MAIL_BOXES='$MAIL_BOXES'
  70. MAIL_FORWARDERS='$MAIL_FORWARDERS'
  71. DNS_DOMAINS='$DNS_DOMAINS'
  72. DISK_QUOTA='$DISK_QUOTA'
  73. BANDWIDTH='$BANDWIDTH'
  74. NS='$NS'
  75. SHELL='$SHELL'
  76. BACKUPS='$BACKUPS'
  77. WEB_TPL='$WEB_TPL'
  78. SUSPENDED='$SUSPENDED'
  79. CONTACT='$CONTACT'
  80. RKEY='$RKEY'
  81. REPORTS='$REPORTS'
  82. IP_OWNED='$IP_OWNED'
  83. U_DIR_DISK='$U_DIR_DISK'
  84. U_DISK='$U_DISK'
  85. U_BANDWIDTH='$U_BANDWIDTH'
  86. U_WEB_DOMAINS='$U_WEB_DOMAINS'
  87. U_WEB_SSL='$U_WEB_SSL'
  88. U_DNS_DOMAINS='$U_DNS_DOMAINS'
  89. U_DATABASES='$U_DATABASES'
  90. U_MAIL_DOMAINS='$U_MAIL_DOMAINS'
  91. U_CRON_JOBS='$U_CRON_JOBS'
  92. DATE='$DATE'" > $V_USERS/$user/user.conf
  93. }
  94. #----------------------------------------------------------#
  95. # Verifications #
  96. #----------------------------------------------------------#
  97. # Checking arg number
  98. check_args '2' "$#" 'user package'
  99. # Checking argument format
  100. format_validation 'user' 'package'
  101. # Checking user
  102. is_user_valid
  103. # Checking user is active
  104. is_user_suspended
  105. # Checking package
  106. is_package_valid
  107. # Checking current data
  108. is_package_avalable
  109. #----------------------------------------------------------#
  110. # Action #
  111. #----------------------------------------------------------#
  112. # Get old package value
  113. old_package=$(get_user_value '$PACKAGE')
  114. # Changing user package
  115. change_user_package
  116. #----------------------------------------------------------#
  117. # Vesta #
  118. #----------------------------------------------------------#
  119. # Logging
  120. log_event 'system' "$V_EVENT"
  121. exit