Procházet zdrojové kódy

New database key structure

Serghey Rodin před 14 roky
rodič
revize
a87fcd9555

+ 7 - 3
bin/v_add_user

@@ -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
-chmod 660 $V_USERS/$user/billing.log
+touch $V_USERS/$user/stats.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'

+ 7 - 8
bin/v_change_user_package

@@ -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'
-    for key in $usr_data; do
-        eval ${key%%=*}=${key#*=}
-    done
+    eval $usr_data
 
 
     # 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 ${key%%=*}=${key#*=}
-    done
+    eval $pkg_data
 
 
     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'

+ 6 - 13
bin/v_list_user

@@ -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)
-
-    # Parsing key=value
-    eval $line
+    source $V_USERS/$USER/user.conf
 
 
-    # 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
-    $U_BANDWIDTH $U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS
-    $U_DNS_RECORDS $U_MAIL_DOMAINS $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS
-    $DATE'
+    $SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_OWNED $U_USERS
+    $U_DISK $U_DISK_DIRS $U_DISK_WEB $U_DISK_MAIL $U_DISK_DB $U_BANDWIDTH
+    $U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS $U_DNS_RECORDS
+    $U_MAIL_DOMAINS $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS $DATE'
 
 
 # Listing user
 # Listing user
 case $format in 
 case $format in 

+ 5 - 11
bin/v_list_users

@@ -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)
-
-        # Assign key/value config
-        eval $user_data
+        source $V_USERS/$USER/user.conf
 
 
         # 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)
-
-        # Assign key/value config
-        eval $user_data
-
+        source $V_USERS/$USER/user.conf
         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_WEB_SSL \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS"
+fields="$fields \$U_USERS \$U_DISK \$U_DISK_DIRS \$U_DISK_WEB \$U_DISK_MAIL"
+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"
 
 

+ 0 - 152
bin/v_update_user_bill

@@ -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 - 0
bin/v_update_user_counters

@@ -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 - 0
bin/v_update_user_stats

@@ -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

+ 4 - 33
func/shared.func

@@ -652,23 +652,11 @@ is_template_valid() {
     esac
     esac
 }
 }
 
 
-
 get_user_value() {
 get_user_value() {
     key="$1"
     key="$1"
     USER="$user"
     USER="$user"
-
-    # Parsing domains
-    string=$( cat $V_USERS/$user/user.conf )
-
-    # Parsing key=value
-    for keys in $string; do
-        eval ${keys%%=*}=${keys#*=}
-    done
-
-    # Self reference
+    source $V_USERS/$user/user.conf
     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"
-
-    # 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')
+    old=$(grep "$key=" $conf | cut -f 2 -d \')
 
 
     # 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() {