#!/bin/bash # info: update domains bandwidth usage # options: USER # # example: v-update-web-domains-traff bob # # This function recalculates bandwidth usage for all user webdomains. #----------------------------------------------------------# # Variables & Functions # #----------------------------------------------------------# # Argument definition user=$1 # Includes # shellcheck source=/etc/hestiacp/hestia.conf source /etc/hestiacp/hestia.conf # shellcheck source=/usr/local/hestia/func/main.sh source $HESTIA/func/main.sh # shellcheck source=/usr/local/hestia/func/domain.sh source $HESTIA/func/domain.sh # load config file source_conf "$HESTIA/conf/hestia.conf" #----------------------------------------------------------# # Verifications # #----------------------------------------------------------# check_args '1' "$#" 'USER' is_format_valid 'user' is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM' is_object_valid 'user' 'USER' "$user" "$user" #----------------------------------------------------------# # Action # #----------------------------------------------------------# for domain in $(search_objects 'web' 'SUSPENDED' "no" 'DOMAIN'); do # Reset BW counter on the start of the month if [ "$(date +%d)" = '01' ]; then update_object_value 'web' 'DOMAIN' "$domain" '$U_BANDWIDTH' '0' fi log_file="/var/log/$WEB_SYSTEM/domains/$domain.bytes" bytes=0 # Parsing log while read line; do if [[ "$line" =~ ^[0-9]+$ ]]; then line=${line#0} if [ -n "$line" ]; then bytes=$(($bytes + $line)) fi fi done < $log_file # Converting to Mb mb=$(echo "$bytes / 1024 / 1024" | bc) # Nulling log echo > $log_file get_domain_values 'web' bandwidth=$((U_BANDWIDTH + mb)) # Updating bandwidth value in config update_object_value 'web' 'DOMAIN' "$domain" '$U_BANDWIDTH' "$bandwidth" done #----------------------------------------------------------# # Hestia # #----------------------------------------------------------# # Recalculating user bandwidth recalc_user_bandwidth_usage exit