mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-21 05:44:07 -07:00
New database key structure
This commit is contained in:
parent
c5e5262fed
commit
a87fcd9555
8 changed files with 320 additions and 220 deletions
|
@ -124,8 +124,8 @@ touch $V_USERS/$user/backup.conf
|
||||||
chmod 660 $V_USERS/$user/backup.conf
|
chmod 660 $V_USERS/$user/backup.conf
|
||||||
touch $V_USERS/$user/history.log
|
touch $V_USERS/$user/history.log
|
||||||
chmod 660 $V_USERS/$user/history.log
|
chmod 660 $V_USERS/$user/history.log
|
||||||
touch $V_USERS/$user/billing.log
|
touch $V_USERS/$user/stats.log
|
||||||
chmod 660 $V_USERS/$user/billing.log
|
chmod 660 $V_USERS/$user/stats.log
|
||||||
|
|
||||||
echo "v_update_user_disk $user" >> $V_QUEUE/disk.pipe
|
echo "v_update_user_disk $user" >> $V_QUEUE/disk.pipe
|
||||||
|
|
||||||
|
@ -180,8 +180,12 @@ SUSPENDED_MAIL='0'
|
||||||
SUSPENDED_DB='0'
|
SUSPENDED_DB='0'
|
||||||
SUSPENDED_CRON='0'
|
SUSPENDED_CRON='0'
|
||||||
IP_OWNED='0'
|
IP_OWNED='0'
|
||||||
U_DIR_DISK='0'
|
U_USERS='0'
|
||||||
U_DISK='0'
|
U_DISK='0'
|
||||||
|
U_DISK_DIRS='0'
|
||||||
|
U_DISK_WEB='0'
|
||||||
|
U_DISK_MAIL='0'
|
||||||
|
U_DISK_DB='0'
|
||||||
U_BANDWIDTH='0'
|
U_BANDWIDTH='0'
|
||||||
U_WEB_DOMAINS='0'
|
U_WEB_DOMAINS='0'
|
||||||
U_WEB_SSL='0'
|
U_WEB_SSL='0'
|
||||||
|
|
|
@ -57,16 +57,11 @@ is_package_avalable() {
|
||||||
change_user_package() {
|
change_user_package() {
|
||||||
# Parsing user data
|
# Parsing user data
|
||||||
usr_data=$(cat $V_USERS/$user/user.conf)
|
usr_data=$(cat $V_USERS/$user/user.conf)
|
||||||
IFS=$'\n'
|
eval $usr_data
|
||||||
for key in $usr_data; do
|
|
||||||
eval ${key%%=*}=${key#*=}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Parsing package
|
# Parsing package
|
||||||
pkg_data=$(cat $V_PKG/$package.pkg)
|
pkg_data=$(cat $V_PKG/$package.pkg)
|
||||||
for key in $pkg_data; do
|
eval $pkg_data
|
||||||
eval ${key%%=*}=${key#*=}
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "FNAME='$FNAME'
|
echo "FNAME='$FNAME'
|
||||||
LNAME='$LNAME'
|
LNAME='$LNAME'
|
||||||
|
@ -96,8 +91,12 @@ SUSPENDED_MAIL='$SUSPENDED_MAIL'
|
||||||
SUSPENDED_DB='$SUSPENDED_DB'
|
SUSPENDED_DB='$SUSPENDED_DB'
|
||||||
SUSPENDED_CRON='$SUSPENDED_CRON'
|
SUSPENDED_CRON='$SUSPENDED_CRON'
|
||||||
IP_OWNED='$IP_OWNED'
|
IP_OWNED='$IP_OWNED'
|
||||||
U_DIR_DISK='$U_DIR_DISK'
|
U_USERS='$U_USERS'
|
||||||
U_DISK='$U_DISK'
|
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_BANDWIDTH='$U_BANDWIDTH'
|
||||||
U_WEB_DOMAINS='$U_WEB_DOMAINS'
|
U_WEB_DOMAINS='$U_WEB_DOMAINS'
|
||||||
U_WEB_SSL='$U_WEB_SSL'
|
U_WEB_SSL='$U_WEB_SSL'
|
||||||
|
|
|
@ -22,14 +22,11 @@ source $V_FUNC/shared.func
|
||||||
json_list_user() {
|
json_list_user() {
|
||||||
i=1
|
i=1
|
||||||
fileds_count=$(echo "$fields" | wc -w)
|
fileds_count=$(echo "$fields" | wc -w)
|
||||||
line=$(cat $V_USERS/$USER/user.conf)
|
source $V_USERS/$USER/user.conf
|
||||||
|
|
||||||
# Print top bracket
|
# Print top bracket
|
||||||
echo '{'
|
echo '{'
|
||||||
|
|
||||||
# Assing key=value
|
|
||||||
eval $line
|
|
||||||
|
|
||||||
# Starting output loop
|
# Starting output loop
|
||||||
for field in $fields; do
|
for field in $fields; do
|
||||||
# Parsing key=value
|
# Parsing key=value
|
||||||
|
@ -59,12 +56,8 @@ json_list_user() {
|
||||||
|
|
||||||
# Shell function
|
# Shell function
|
||||||
shell_list_user() {
|
shell_list_user() {
|
||||||
line=$(cat $V_USERS/$USER/user.conf)
|
source $V_USERS/$USER/user.conf
|
||||||
|
|
||||||
# Parsing key=value
|
|
||||||
eval $line
|
|
||||||
|
|
||||||
# Print result line
|
|
||||||
for field in $fields; do
|
for field in $fields; do
|
||||||
eval key="$field"
|
eval key="$field"
|
||||||
echo "${field//$/}: $key "
|
echo "${field//$/}: $key "
|
||||||
|
@ -98,10 +91,10 @@ fields='$USER $FNAME $LNAME $PACKAGE $WEB_DOMAINS $WEB_ALIASES $WEB_TPL
|
||||||
$DNS_DOMAINS $DNS_RECORDS $MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES
|
$DNS_DOMAINS $DNS_RECORDS $MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES
|
||||||
$CRON_JOBS $DISK_QUOTA $BANDWIDTH $NS $SHELL $BACKUPS $CONTACT $REPORTS
|
$CRON_JOBS $DISK_QUOTA $BANDWIDTH $NS $SHELL $BACKUPS $CONTACT $REPORTS
|
||||||
$RKEY $SUSPENDED $SUSPENDED_USERS $SUSPENDED_WEB $SUSPENDED_DNS
|
$RKEY $SUSPENDED $SUSPENDED_USERS $SUSPENDED_WEB $SUSPENDED_DNS
|
||||||
$SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_OWNED $U_DIR_DISK $U_DISK
|
$SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_OWNED $U_USERS
|
||||||
$U_BANDWIDTH $U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS
|
$U_DISK $U_DISK_DIRS $U_DISK_WEB $U_DISK_MAIL $U_DISK_DB $U_BANDWIDTH
|
||||||
$U_DNS_RECORDS $U_MAIL_DOMAINS $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS
|
$U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS $U_DNS_RECORDS
|
||||||
$DATE'
|
$U_MAIL_DOMAINS $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS $DATE'
|
||||||
|
|
||||||
# Listing user
|
# Listing user
|
||||||
case $format in
|
case $format in
|
||||||
|
|
|
@ -23,10 +23,7 @@ json_list_users() {
|
||||||
# Starting main loop
|
# Starting main loop
|
||||||
for USER in $(ls $V_USERS/); do
|
for USER in $(ls $V_USERS/); do
|
||||||
# Reading user data
|
# Reading user data
|
||||||
user_data=$(cat $V_USERS/$USER/user.conf)
|
source $V_USERS/$USER/user.conf
|
||||||
|
|
||||||
# Assign key/value config
|
|
||||||
eval $user_data
|
|
||||||
|
|
||||||
# Closing bracket if there already was output
|
# Closing bracket if there already was output
|
||||||
if [ -n "$data" ]; then
|
if [ -n "$data" ]; then
|
||||||
|
@ -74,11 +71,7 @@ shell_list_users() {
|
||||||
|
|
||||||
# Starting main loop
|
# Starting main loop
|
||||||
for USER in $(ls $V_USERS/); do
|
for USER in $(ls $V_USERS/); do
|
||||||
user_data=$(cat $V_USERS/$USER/user.conf)
|
source $V_USERS/$USER/user.conf
|
||||||
|
|
||||||
# Assign key/value config
|
|
||||||
eval $user_data
|
|
||||||
|
|
||||||
eval echo "$fields"
|
eval echo "$fields"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -95,8 +88,9 @@ fields="$fields \$DATABASES \$CRON_JOBS \$DISK_QUOTA \$BANDWIDTH \$NS \$SHELL"
|
||||||
fields="$fields \$BACKUPS \$CONTACT \$REPORTS \$RKEY \$SUSPENDED"
|
fields="$fields \$BACKUPS \$CONTACT \$REPORTS \$RKEY \$SUSPENDED"
|
||||||
fields="$fields \$SUSPENDED_USERS \$SUSPENDED_WEB \$SUSPENDED_DNS"
|
fields="$fields \$SUSPENDED_USERS \$SUSPENDED_WEB \$SUSPENDED_DNS"
|
||||||
fields="$fields \$SUSPENDED_MAIL \$SUSPENDED_DB \$SUSPENDED_CRON \$IP_OWNED"
|
fields="$fields \$SUSPENDED_MAIL \$SUSPENDED_DB \$SUSPENDED_CRON \$IP_OWNED"
|
||||||
fields="$fields \$U_DIR_DISK \$U_DISK \$U_BANDWIDTH \$U_WEB_DOMAINS"
|
fields="$fields \$U_USERS \$U_DISK \$U_DISK_DIRS \$U_DISK_WEB \$U_DISK_MAIL"
|
||||||
fields="$fields \$U_WEB_SSL \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS"
|
fields="$fields \$U_DISK_DB \$U_BANDWIDTH \$U_WEB_DOMAINS \$U_WEB_SSL"
|
||||||
|
fields="$fields \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS "
|
||||||
fields="$fields \$U_MAIL_DOMAINS \$U_MAIL_ACCOUNTS \$U_DATABASES \$U_CRON_JOBS"
|
fields="$fields \$U_MAIL_DOMAINS \$U_MAIL_ACCOUNTS \$U_DATABASES \$U_CRON_JOBS"
|
||||||
fields="$fields \$DATE"
|
fields="$fields \$DATE"
|
||||||
|
|
||||||
|
|
|
@ -1,152 +0,0 @@
|
||||||
#!/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
|
|
||||||
chmod 660 $billing
|
|
||||||
else
|
|
||||||
# Replacing string with new data
|
|
||||||
sed -i "$check_month s/.*/$v_str/" $billing
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# Creating billing log
|
|
||||||
echo "$v_str" >$billing
|
|
||||||
chmod 660 $billing
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
#----------------------------------------------------------#
|
|
||||||
# Vesta #
|
|
||||||
#----------------------------------------------------------#
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
log_event 'system' "$V_EVENT"
|
|
||||||
|
|
||||||
exit
|
|
190
bin/v_update_user_counters
Executable file
190
bin/v_update_user_counters
Executable file
|
@ -0,0 +1,190 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: update user usage counters
|
||||||
|
# options: user
|
||||||
|
#
|
||||||
|
# Function updates usage counters like U_WEB_DOMAINS, U_MAIL_ACCOUNTS, etc.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.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 stats
|
||||||
|
for user in $user_list; do
|
||||||
|
# Cleaning counters
|
||||||
|
SUSPENDED_USERS=0
|
||||||
|
SUSPENDED_WEB=0
|
||||||
|
SUSPENDED_DNS=0
|
||||||
|
SUSPENDED_MAIL=0
|
||||||
|
SUSPENDED_DB=0
|
||||||
|
SUSPENDED_CRON=0
|
||||||
|
IP_OWNED=0
|
||||||
|
U_USERS=0
|
||||||
|
DISK=0
|
||||||
|
U_DISK=0
|
||||||
|
U_DISK_DIRS=$(get_user_value '$U_DISK_DIRS')
|
||||||
|
if [ -z "$U_DISK_DIRS" ]; then
|
||||||
|
U_DISK_DIRS=0
|
||||||
|
fi
|
||||||
|
U_DISK_WEB=0
|
||||||
|
U_DISK_MAIL=0
|
||||||
|
U_DISK_DB=0
|
||||||
|
BANDWIDTH=0
|
||||||
|
U_BANDWIDTH=0
|
||||||
|
U_WEB_DOMAINS=0
|
||||||
|
U_WEB_SSL=0
|
||||||
|
U_WEB_ALIASES=0
|
||||||
|
U_DNS_DOMAINS=0
|
||||||
|
U_DNS_RECORDS=0
|
||||||
|
U_MAIL_DOMAINS=0
|
||||||
|
U_MAIL_ACCOUNTS=0
|
||||||
|
U_DATABASES=0
|
||||||
|
U_CRON_JOBS=0
|
||||||
|
|
||||||
|
# New IFS
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
# Checking users
|
||||||
|
if [ "$user" = 'vesta' ]; then
|
||||||
|
SUSPENDED_USERS=$(grep "SUSPENDED='yes'" $V_USERS/*/user.conf|wc -l)
|
||||||
|
U_USERS=$(ls $V_USERS/|wc -l)
|
||||||
|
U_USERS=$((U_USERS - 1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checking ip
|
||||||
|
for ip in $(ls $V_IPS) ;do
|
||||||
|
source $V_IPS/$ip
|
||||||
|
if [ "$OWNER" = "$user" ]; then
|
||||||
|
IP_OWNED=$((IP_OWNED + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Checking web system
|
||||||
|
for domain_str in $(cat $V_USERS/$user/web.conf) ;do
|
||||||
|
eval $domain_str
|
||||||
|
U_DISK_WEB=$((U_DISK_WEB + U_DISK))
|
||||||
|
U_WEB_DOMAINS=$((U_WEB_DOMAINS + 1))
|
||||||
|
if [ "$SSL" = 'yes' ]; then
|
||||||
|
U_WEB_SSL=$((U_WEB_SSL + 1))
|
||||||
|
fi
|
||||||
|
if [ "$SUSPENDED" = 'yes' ]; then
|
||||||
|
SUSPENDED_WEB=$((SUSPENDED_WEB + 1))
|
||||||
|
fi
|
||||||
|
if [ ! -z "$ALIAS" ]; then
|
||||||
|
aliases=$(echo "$ALIAS"|tr ',' '\n'| wc -l)
|
||||||
|
aliases=$((aliases + 1))
|
||||||
|
U_WEB_ALIASES=$((U_WEB_ALIASES + aliases))
|
||||||
|
fi
|
||||||
|
BANDWIDTH=$((BANDWIDTH + U_BANDWIDTH))
|
||||||
|
done
|
||||||
|
DISK=$((DISK + U_DISK_WEB))
|
||||||
|
|
||||||
|
# Checking dns system
|
||||||
|
for domain_str in $(cat $V_USERS/$user/dns.conf); do
|
||||||
|
eval $domain_str
|
||||||
|
U_DNS_DOMAINS=$((U_DNS_DOMAINS + 1))
|
||||||
|
records=$(wc -l $V_USERS/$user/dns/$DOMAIN| cut -f 1 -d ' ')
|
||||||
|
U_DNS_RECORDS=$((U_DNS_RECORDS + records))
|
||||||
|
if [ "$SUSPENDED" = 'yes' ]; then
|
||||||
|
SUSPENDED_DNS=$((SUSPENDED_DNS + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Checking mail system
|
||||||
|
SUSPENDED_MAIL=0
|
||||||
|
DISK=$((DISK + U_DISK_MAIL))
|
||||||
|
|
||||||
|
# Checking db system
|
||||||
|
for db_str in $(cat $V_USERS/$user/db.conf); do
|
||||||
|
eval $db_str
|
||||||
|
U_DISK_DB=$((U_DISK_DB + U_DISK))
|
||||||
|
U_DATABASES=$((U_DATABASES + 1))
|
||||||
|
if [ "$SUSPENDED" = 'yes' ]; then
|
||||||
|
SUSPENDED_DB=$((SUSPENDED_DB + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
DISK=$((DISK + U_DISK_DB))
|
||||||
|
|
||||||
|
# Checking mail system
|
||||||
|
for cron_str in $(cat $V_USERS/$user/cron.conf);do
|
||||||
|
eval $cron_str
|
||||||
|
U_CRON_JOBS=$((U_CRON_JOBS + 1))
|
||||||
|
if [ "$SUSPENDED" = 'yes' ]; then
|
||||||
|
SUSPENDED_CRON=$((SUSPENDED_CRON + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
U_DISK=$DISK
|
||||||
|
U_BANDWIDTH=$BANDWIDTH
|
||||||
|
update_user_value "$user" '$SUSPENDED_USERS' "$SUSPENDED_USERS"
|
||||||
|
update_user_value "$user" '$SUSPENDED_WEB' "$SUSPENDED_WEB"
|
||||||
|
update_user_value "$user" '$SUSPENDED_DNS' "$SUSPENDED_DNS"
|
||||||
|
update_user_value "$user" '$SUSPENDED_MAIL' "$SUSPENDED_MAIL"
|
||||||
|
update_user_value "$user" '$SUSPENDED_DB' "$SUSPENDED_DB"
|
||||||
|
update_user_value "$user" '$SUSPENDED_CRON' "$SUSPENDED_CRON"
|
||||||
|
update_user_value "$user" '$IP_OWNED' "$IP_OWNED"
|
||||||
|
update_user_value "$user" '$U_USERS' "$U_USERS"
|
||||||
|
update_user_value "$user" '$U_DISK' "$U_DISK"
|
||||||
|
update_user_value "$user" '$U_DISK_DIRS' "$U_DISK_DIRS"
|
||||||
|
update_user_value "$user" '$U_DISK_WEB' "$U_DISK_WEB"
|
||||||
|
update_user_value "$user" '$U_DISK_MAIL' "$U_DISK_MAIL"
|
||||||
|
update_user_value "$user" '$U_DISK_DB' "$U_DISK_DB"
|
||||||
|
update_user_value "$user" '$U_BANDWIDTH' "$U_BANDWIDTH"
|
||||||
|
update_user_value "$user" '$U_WEB_DOMAINS' "$U_WEB_DOMAINS"
|
||||||
|
update_user_value "$user" '$U_WEB_SSL' "$U_WEB_SSL"
|
||||||
|
update_user_value "$user" '$U_WEB_ALIASES' "$U_WEB_ALIASES"
|
||||||
|
update_user_value "$user" '$U_DNS_DOMAINS' "$U_DNS_DOMAINS"
|
||||||
|
update_user_value "$user" '$U_DNS_RECORDS' "$U_DNS_RECORDS"
|
||||||
|
update_user_value "$user" '$U_MAIL_DOMAINS' "$U_MAIL_DOMAINS"
|
||||||
|
update_user_value "$user" '$U_MAIL_ACCOUNTS' "$U_MAIL_ACCOUNTS"
|
||||||
|
update_user_value "$user" '$U_DATABASES' "$U_DATABASES"
|
||||||
|
update_user_value "$user" '$U_CRON_JOBS' "$U_CRON_JOBS"
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
101
bin/v_update_user_stats
Executable file
101
bin/v_update_user_stats
Executable file
|
@ -0,0 +1,101 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: update user statistics
|
||||||
|
# options: user
|
||||||
|
#
|
||||||
|
# Function logs user parameters into statistics 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 stats
|
||||||
|
for user in $user_list; do
|
||||||
|
|
||||||
|
# Importing user values
|
||||||
|
source $V_USERS/$user/user.conf
|
||||||
|
DATE=$(date -d "$(date +'%m/01') -1day" +%F)
|
||||||
|
|
||||||
|
# Compiling report string
|
||||||
|
s="DATE='$DATE' PACKAGE='$PACKAGE' IP_OWNED='$IP_OWNED'"
|
||||||
|
s="$s U_DISK='$U_DISK' U_DISK_DIRS='$U_DISK_DIRS' U_DISK_WEB='$U_DISK_WEB'"
|
||||||
|
s="$s U_DISK_MAIL='$U_DISK_MAIL' U_DISK_DB='$U_DISK_DB'"
|
||||||
|
s="$s U_DISK_DATABASES='$U_DISK_DATABASES'"
|
||||||
|
s="$s U_BANDWIDTH='$U_BANDWIDTH' U_WEB_DOMAINS='$U_WEB_DOMAINS'"
|
||||||
|
s="$s U_WEB_SSL='$U_WEB_SSL' U_WEB_ALIASES='$U_WEB_ALIASES'"
|
||||||
|
s="$s U_DNS_DOMAINS='$U_DNS_DOMAINS' U_DNS_RECORDS='$U_DNS_RECORDS'"
|
||||||
|
s="$s U_MAIL_DOMAINS='$U_MAIL_DOMAINS' U_MAIL_DOMAINS='$U_MAIL_DOMAINS'"
|
||||||
|
s="$s U_MAIL_ACCOUNTS='$U_MAIL_ACCOUNTS' U_DATABASES='$U_DATABASES'"
|
||||||
|
s="$s U_CRON_JOBS='$U_CRON_JOBS'"
|
||||||
|
|
||||||
|
# Updating user stats log
|
||||||
|
stats="$V_USERS/$user/stats.log"
|
||||||
|
if [ -e "$stats" ]; then
|
||||||
|
# Checking dublicates
|
||||||
|
check_month=$(grep -n "DATE='$DATE'" $stats|cut -f 1 -d :)
|
||||||
|
if [ -z "$check_month" ]; then
|
||||||
|
# Updating as there no dublicates
|
||||||
|
echo "$s" >> $stats
|
||||||
|
chmod 660 $stats
|
||||||
|
else
|
||||||
|
# Replacing string with new data
|
||||||
|
sed -i "$check_month s/.*/$s/" $stats
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Creating stats log
|
||||||
|
echo "$s" >$stats
|
||||||
|
chmod 660 $stats
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
|
@ -652,23 +652,11 @@ is_template_valid() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
get_user_value() {
|
get_user_value() {
|
||||||
key="$1"
|
key="$1"
|
||||||
USER="$user"
|
USER="$user"
|
||||||
|
source $V_USERS/$user/user.conf
|
||||||
# Parsing domains
|
|
||||||
string=$( cat $V_USERS/$user/user.conf )
|
|
||||||
|
|
||||||
# Parsing key=value
|
|
||||||
for keys in $string; do
|
|
||||||
eval ${keys%%=*}=${keys#*=}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Self reference
|
|
||||||
eval value="$key"
|
eval value="$key"
|
||||||
|
|
||||||
# Print value
|
|
||||||
echo "$value"
|
echo "$value"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,31 +679,14 @@ is_package_valid() {
|
||||||
|
|
||||||
update_user_value() {
|
update_user_value() {
|
||||||
USER="$1"
|
USER="$1"
|
||||||
key="$2"
|
key="${2//$}"
|
||||||
value="$3"
|
value="$3"
|
||||||
|
|
||||||
# Defining conf
|
|
||||||
conf="$V_USERS/$USER/user.conf"
|
conf="$V_USERS/$USER/user.conf"
|
||||||
|
old=$(grep "$key=" $conf | cut -f 2 -d \')
|
||||||
# Parsing conf
|
|
||||||
str=$(cat $conf)
|
|
||||||
|
|
||||||
# Reading key=values
|
|
||||||
for keys in $str; do
|
|
||||||
eval ${keys%%=*}=${keys#*=}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Define clean key
|
|
||||||
c_key=$(echo "${key//$/}")
|
|
||||||
|
|
||||||
eval old="${key}"
|
|
||||||
|
|
||||||
# Escaping slashes
|
|
||||||
old=$(echo "$old" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
|
|
||||||
new=$(echo "$value" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
|
|
||||||
|
|
||||||
# Updating conf
|
# Updating conf
|
||||||
sed -i "s/$c_key='${old//\*/\\*}'/$c_key='${new//\*/\\*}'/g" $conf
|
sed -i "s/$key='$old'/$key='$value'/g" $conf
|
||||||
}
|
}
|
||||||
|
|
||||||
increase_user_value() {
|
increase_user_value() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue