Files
VestaCP/bin/v_change_user_package
2012-02-20 12:46:25 +02:00

151 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# info: change user package
# options: user package
#
# The function changes user's hosting package.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
user=$1
package=$2
# Importing variables
source $VESTA/conf/vars.conf
source $V_CONF/vesta.conf
source $V_FUNC/shared.func
is_package_avalable() {
# Parsing user data
usr_data=$(cat $V_USERS/$user/user.conf)
IFS=$'\n'
for key in $usr_data; do
eval ${key%%=*}=${key#*=}
done
# Clearing vars
WEB_DOMAINS='0'
DATABASES='0'
MAIL_DOMAINS='0'
DNS_DOMAINS='0'
DISK_QUOTA='0'
BANDWIDTH='0'
# Parsing package
pkg_data=$(cat $V_PKG/$package.pkg)
for key in $pkg_data; do
eval ${key%%=*}=${key#*=}
done
# 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: Upgrade package"
log_event 'debug' "$E_LIMIT $v_log"
exit $E_LIMIT
fi
}
change_user_package() {
# Parsing user data
usr_data=$(cat $V_USERS/$user/user.conf)
eval $usr_data
# Parsing package
pkg_data=$(cat $V_PKG/$package.pkg)
eval $pkg_data
echo "FNAME='$FNAME'
LNAME='$LNAME'
PACKAGE='$package'
WEB_DOMAINS='$WEB_DOMAINS'
WEB_ALIASES='$WEB_ALIASES'
WEB_TPL='$WEB_TPL'
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'
REPORTS='$REPORTS'
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_ACCOUNTS='$U_MAIL_ACCOUNTS'
U_DATABASES='$U_DATABASES'
U_CRON_JOBS='$U_CRON_JOBS'
DATE='$DATE'" > $V_USERS/$user/user.conf
}
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
# Checking arg number
check_args '2' "$#" 'user package'
# Checking argument format
format_validation 'user' 'package'
# Checking user
is_user_valid
# Checking package
is_package_valid
# Checking current data
is_package_avalable
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Changing user package
change_user_package
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Logging
log_event 'system' "$V_EVENT"
exit