#!/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