v_change_user_package 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. IFS=$'\n'
  20. for key in $usr_data; do
  21. eval ${key%%=*}=${key#*=}
  22. done
  23. # Clearing vars
  24. WEB_DOMAINS='0'
  25. DATABASES='0'
  26. MAIL_DOMAINS='0'
  27. DNS_DOMAINS='0'
  28. DISK_QUOTA='0'
  29. BANDWIDTH='0'
  30. # Parsing package
  31. pkg_data=$(cat $V_PKG/$package.pkg)
  32. for key in $pkg_data; do
  33. eval ${key%%=*}=${key#*=}
  34. done
  35. # Comparing user data with package
  36. if [ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ] ||\
  37. [ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ] ||\
  38. [ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ] ||\
  39. [ "$DATABASES" -lt "$U_DATABASES" ] ||\
  40. [ "$CRON_JOBS" -lt "$U_CRON_JOBS" ] ||\
  41. [ "$DISK_QUOTA" -lt "$U_DISK" ] ||\
  42. [ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]; then
  43. echo "Error: Upgrade package"
  44. log_event 'debug' "$E_LIMIT $v_log"
  45. exit $E_LIMIT
  46. fi
  47. }
  48. change_user_package() {
  49. # Parsing user data
  50. usr_data=$(cat $V_USERS/$user/user.conf)
  51. eval $usr_data
  52. # Parsing package
  53. pkg_data=$(cat $V_PKG/$package.pkg)
  54. eval $pkg_data
  55. echo "FNAME='$FNAME'
  56. LNAME='$LNAME'
  57. PACKAGE='$package'
  58. WEB_DOMAINS='$WEB_DOMAINS'
  59. WEB_ALIASES='$WEB_ALIASES'
  60. WEB_TPL='$WEB_TPL'
  61. DNS_DOMAINS='$DNS_DOMAINS'
  62. DNS_RECORDS='$DNS_RECORDS'
  63. MAIL_DOMAINS='$MAIL_DOMAINS'
  64. MAIL_ACCOUNTS='$MAIL_ACCOUNTS'
  65. DATABASES='$DATABASES'
  66. CRON_JOBS='$CRON_JOBS'
  67. DISK_QUOTA='$DISK_QUOTA'
  68. BANDWIDTH='$BANDWIDTH'
  69. NS='$NS'
  70. SHELL='$SHELL'
  71. BACKUPS='$BACKUPS'
  72. CONTACT='$CONTACT'
  73. REPORTS='$REPORTS'
  74. RKEY='$RKEY'
  75. SUSPENDED='$SUSPENDED'
  76. SUSPENDED_USERS='$SUSPENDED_USERS'
  77. SUSPENDED_WEB='$SUSPENDED_WEB'
  78. SUSPENDED_DNS='$SUSPENDED_DNS'
  79. SUSPENDED_MAIL='$SUSPENDED_MAIL'
  80. SUSPENDED_DB='$SUSPENDED_DB'
  81. SUSPENDED_CRON='$SUSPENDED_CRON'
  82. IP_AVAIL='$IP_AVAIL'
  83. IP_OWNED='$IP_OWNED'
  84. U_USERS='$U_USERS'
  85. U_DISK='$U_DISK'
  86. U_DISK_DIRS='$U_DISK_DIRS'
  87. U_DISK_WEB='$U_DISK_WEB'
  88. U_DISK_MAIL='$U_DISK_MAIL'
  89. U_DISK_DB='$U_DISK_DB'
  90. U_BANDWIDTH='$U_BANDWIDTH'
  91. U_WEB_DOMAINS='$U_WEB_DOMAINS'
  92. U_WEB_SSL='$U_WEB_SSL'
  93. U_WEB_ALIASES='$U_WEB_ALIASES'
  94. U_DNS_DOMAINS='$U_DNS_DOMAINS'
  95. U_DNS_RECORDS='$U_DNS_RECORDS'
  96. U_MAIL_DOMAINS='$U_MAIL_DOMAINS'
  97. U_MAIL_ACCOUNTS='$U_MAIL_ACCOUNTS'
  98. U_DATABASES='$U_DATABASES'
  99. U_CRON_JOBS='$U_CRON_JOBS'
  100. DATE='$DATE'" > $V_USERS/$user/user.conf
  101. }
  102. #----------------------------------------------------------#
  103. # Verifications #
  104. #----------------------------------------------------------#
  105. # Checking arg number
  106. check_args '2' "$#" 'user package'
  107. # Checking argument format
  108. format_validation 'user' 'package'
  109. # Checking user
  110. is_user_valid
  111. # Checking package
  112. is_package_valid
  113. # Checking current data
  114. is_package_avalable
  115. #----------------------------------------------------------#
  116. # Action #
  117. #----------------------------------------------------------#
  118. # Changing user package
  119. change_user_package
  120. #----------------------------------------------------------#
  121. # Vesta #
  122. #----------------------------------------------------------#
  123. # Logging
  124. log_event 'system' "$V_EVENT"
  125. exit