| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #!/bin/bash
- # info: change user package
- # options: USER PACKAGE [FORCE]
- #
- # The function changes user's hosting package.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument definition
- user=$1
- package=$2
- force=$3
- # Includes
- source $VESTA/func/main.sh
- source $VESTA/conf/vesta.conf
- is_package_avalable() {
- 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
- # Checking usage agains package limits
- if [ "$WEB_DOMAINS" != 'unlimited' ]; then
- if [ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ]; then
- check_result $E_LIMIT "Package doesn't cover WEB_DOMAIN usage"
- fi
- fi
- if [ "$DNS_DOMAINS" != 'unlimited' ]; then
- if [ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ]; then
- check_result $E_LIMIT "Package doesn't cover DNS_DOMAIN usage"
- fi
- fi
- if [ "$MAIL_DOMAINS" != 'unlimited' ]; then
- if [ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ]; then
- check_result $E_LIMIT "Package doesn't cover MAIL_DOMAIN usage"
- fi
- fi
- if [ "$DATABASES" != 'unlimited' ]; then
- if [ "$DATABASES" -lt "$U_DATABASES" ]; then
- check_result $E_LIMIT "Package doesn't cover DATABASE usage"
- fi
- fi
- if [ "$CRON_JOBS" != 'unlimited' ]; then
- if [ "$CRON_JOBS" -lt "$U_CRON_JOBS" ]; then
- check_result $E_LIMIT "Package doesn't cover CRON usage"
- fi
- fi
- if [ "$DISK_QUOTA" != 'unlimited' ]; then
- if [ "$DISK_QUOTA" -lt "$U_DISK" ]; then
- check_result $E_LIMIT "Package doesn't cover DISK usage"
- fi
- fi
- if [ "$BANDWIDTH" != 'unlimited' ]; then
- if [ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]; then
- check_result $E_LIMIT "Package doesn't cover BANDWIDTH usage"
- fi
- fi
- }
- change_user_package() {
- eval $(cat $USER_DATA/user.conf)
- eval $(cat $VESTA/data/packages/$package.pkg |egrep -v "TIME|DATE")
- echo "FNAME='$FNAME'
- LNAME='$LNAME'
- PACKAGE='$package'
- WEB_TEMPLATE='$WEB_TEMPLATE'
- PROXY_TEMPLATE='$PROXY_TEMPLATE'
- DNS_TEMPLATE='$DNS_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'
- LANGUAGE='$LANGUAGE'
- NOTIFICATIONS='$NOTIFICATIONS'
- TIME='$TIME'
- DATE='$DATE'" > $USER_DATA/user.conf
- }
- #----------------------------------------------------------#
- # Verifications #
- #----------------------------------------------------------#
- check_args '2' "$#" 'USER PACKAGE [FORCE]'
- is_format_valid '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
- # Update user shell
- shell_conf=$(echo "$pkg_data" | grep 'SHELL' | cut -f 2 -d \')
- shell=$(grep -w "$shell_conf" /etc/shells |head -n1)
- /usr/bin/chsh -s "$shell" "$user" &>/dev/null
- # Run template trigger
- if [ -x "$VESTA/data/packages/$package.sh" ]; then
- $VESTA/data/packages/$package.sh "$user" "$CONTACT" "$FNAME" "$LNAME"
- fi
- # Update disk quota
- source $VESTA/conf/vesta.conf
- if [ "$DISK_QUOTA" = 'yes' ]; then
- $BIN/v-update-user-quota $user
- fi
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- # Logging
- log_history "changed $user package to $package" '' 'admin'
- log_event "$OK" "$ARGUMENTS"
- exit
|