Files
VestaCP/bin/v_update_user_bill
2012-01-10 17:10:18 +02:00

151 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
# info: update billing user billing
# options: user
#
# Function logs user parameters into billing database.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
user=$1
# Importing system enviroment as we run this script
# mostly by cron wich not read it by itself
source /etc/profile.d/vesta.sh
# Importing variables
source $VESTA/conf/vars.conf
source $V_CONF/vesta.conf
source $V_FUNC/shared.func
source $V_FUNC/domain.func
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
# Checking arg number
check_args '0' "$#" 'user'
# If user specified
if [ ! -z "$user" ]; then
# Checking argument format
format_validation 'user'
# Checking user
is_user_valid
fi
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Creating user_list
if [ -z "$user" ]; then
user_list=$(ls $V_USERS/)
else
user_list="$user"
fi
# Updating user billing
for user in $user_list; do
# Checking web system
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
# Cleaning value
U_DISK_WEB_DOMAINS=''
# Defining config
conf="$V_USERS/$user/web.conf"
# Defining fileds to select
field='$DOMAIN'
# Defining search string
search_string="DOMAIN='"
# Receiving user domain list
domains=$(dom_clear_search)
# Starting domain loop
i='1'; for domain in $domains; do
# Assigning domain values
u_disk=$(get_web_domain_value '$U_DISK')
u_band=$(get_web_domain_value '$U_BANDWIDTH')
disk="$domain:$u_disk"
band="$domain:$u_band"
if [ "$i" -eq '1' ]; then
U_DISK_WEB_DOMAINS="$disk"
U_BANDWIDTH_WEB_DOMAINS="$band"
else
U_DISK_WEB_DOMAINS="$U_DISK_WEB_DOMAINS,$disk"
U_BANDWIDTH_WEB_DOMAINS="$U_BANDWIDTH_WEB_DOMAINS,$band"
fi
# Itterating
i=$((i + 1))
done
fi
# Checking mail system
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
#FIXME
ok='ok'
fi
# Checking db system
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
#FIXME
ok='ok'
fi
# Importing user values
source $V_USERS/$user/user.conf
# Redefining date
DATE=$(date -d "$(date +'%m/01') -1day" +%F)
# Compiling report string
v_str="DATE='$DATE' PACKAGE='$PACKAGE'"
v_str="$v_str U_DISK='$U_DISK' U_BANDWIDTH='$U_BANDWIDTH'"
v_str="$v_str U_WEB_DOMAINS='$U_WEB_DOMAINS' U_WEB_SSL='$U_WEB_SSL'"
v_str="$v_str U_DNS_DOMAINS='$U_DNS_DOMAINS' U_DATABASES='$U_DATABASES'"
v_str="$v_str U_MAIL_DOMAINS='$U_MAIL_DOMAINS' IP_OWNED='$IP_OWNED'"
v_str="$v_str U_DISK_WEB_DOMAINS='$U_DISK_WEB_DOMAINS'"
v_str="$v_str U_BANDWIDTH_WEB_DOMAINS='$U_BANDWIDTH_WEB_DOMAINS'"
v_str="$v_str U_CRON_JOBS"
# Updating user billing log
billing="$V_USERS/$user/billing.log"
if [ -e "$billing" ]; then
# Checking dublicates
check_month=$(grep -n "DATE='$DATE'" $billing|cut -f 1 -d :)
if [ -z "$check_month" ]; then
# Updating as there no dublicates
echo "$v_str" >>$billing
else
# Replacing string with new data
sed -i "$check_month s/.*/$v_str/" $billing
fi
else
# Creating billing log
echo "$v_str" >$billing
fi
done
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Logging
log_event 'system' "$V_EVENT"
exit