| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #!/bin/bash
- # info: change user package
- # options: user package [force]
- #
- # The function changes user's hosting package.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument defenition
- user=$1
- package=$2
- force=$3
- # Includes
- source $VESTA/conf/vesta.conf
- source $VESTA/func/main.sh
- is_package_avalable() {
- # Parsing user data
- usr_data=$(cat $USER_DATA/user.conf)
- IFS=$'\n'
- for key in $usr_data; do
- eval ${key%%=*}=${key#*=}
- done
- WEB_DOMAINS='0'
- DATABASES='0'
- MAIL_DOMAINS='0'
- DNS_DOMAINS='0'
- DISK_QUOTA='0'
- BANDWIDTH='0'
- pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |\
- grep -v DATE)
- eval $pkg_data
- # Comparing user data with package
- if [[ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ]] ||\
- [[ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ]] ||\
- [[ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ]] ||\
- [[ "$DATABASES" -lt "$U_DATABASES" ]] ||\
- [[ "$CRON_JOBS" -lt "$U_CRON_JOBS" ]] ||\
- [[ "$DISK_QUOTA" -lt "$U_DISK" ]] ||\
- [[ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]]; then
- echo "Error: Package not cover current usage"
- log_event "$E_LIMIT" "$EVENT"
- exit $E_LIMIT
- fi
- }
- change_user_package() {
- usr_data=$(cat $USER_DATA/user.conf)
- eval $usr_data
- pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |\
- grep -v DATE)
- eval $pkg_data
- echo "FNAME='$FNAME'
- LNAME='$LNAME'
- PACKAGE='$package'
- TEMPLATE='$TEMPLATE'
- WEB_DOMAINS='$WEB_DOMAINS'
- WEB_ALIASES='$WEB_ALIASES'
- DNS_DOMAINS='$DNS_DOMAINS'
- DNS_RECORDS='$DNS_RECORDS'
- MAIL_DOMAINS='$MAIL_DOMAINS'
- MAIL_ACCOUNTS='$MAIL_ACCOUNTS'
- DATABASES='$DATABASES'
- CRON_JOBS='$CRON_JOBS'
- DISK_QUOTA='$DISK_QUOTA'
- BANDWIDTH='$BANDWIDTH'
- NS='$NS'
- SHELL='$SHELL'
- BACKUPS='$BACKUPS'
- CONTACT='$CONTACT'
- CRON_REPORTS='$CRON_REPORTS'
- MD5='$MD5'
- RKEY='$RKEY'
- SUSPENDED='$SUSPENDED'
- SUSPENDED_USERS='$SUSPENDED_USERS'
- SUSPENDED_WEB='$SUSPENDED_WEB'
- SUSPENDED_DNS='$SUSPENDED_DNS'
- SUSPENDED_MAIL='$SUSPENDED_MAIL'
- SUSPENDED_DB='$SUSPENDED_DB'
- SUSPENDED_CRON='$SUSPENDED_CRON'
- IP_AVAIL='$IP_AVAIL'
- IP_OWNED='$IP_OWNED'
- U_USERS='$U_USERS'
- U_DISK='$U_DISK'
- U_DISK_DIRS='$U_DISK_DIRS'
- U_DISK_WEB='$U_DISK_WEB'
- U_DISK_MAIL='$U_DISK_MAIL'
- U_DISK_DB='$U_DISK_DB'
- U_BANDWIDTH='$U_BANDWIDTH'
- U_WEB_DOMAINS='$U_WEB_DOMAINS'
- U_WEB_SSL='$U_WEB_SSL'
- U_WEB_ALIASES='$U_WEB_ALIASES'
- U_DNS_DOMAINS='$U_DNS_DOMAINS'
- U_DNS_RECORDS='$U_DNS_RECORDS'
- U_MAIL_DOMAINS='$U_MAIL_DOMAINS'
- U_MAIL_DKIM='$U_MAIL_DKIM'
- U_MAIL_ACCOUNTS='$U_MAIL_ACCOUNTS'
- U_DATABASES='$U_DATABASES'
- U_CRON_JOBS='$U_CRON_JOBS'
- U_BACKUPS='$U_BACKUPS'
- TIME='$TIME'
- DATE='$DATE'" > $USER_DATA/user.conf
- }
- #----------------------------------------------------------#
- # Verifications #
- #----------------------------------------------------------#
- check_args '2' "$#" 'user package [force]'
- validate_format 'user' 'package'
- is_object_valid 'user' 'USER' "$user"
- is_package_valid
- if [ "$force" != 'yes' ];then
- is_package_avalable
- fi
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Changing user package
- change_user_package
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- # Logging
- log_history "changed $user package to $package" '' 'admin'
- log_event "$OK" "$EVENT"
- exit
|