#!/bin/bash
# info: update system rrd charts
# options: NONE
#
# The script is wrapper for all rrd functions. It updates all 
# v-update-sys-rrd_* at once.


#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#

# Importing system environment  as we run this script
# mostly by cron wich do not read it by itself
source /etc/profile

# Includes
source $HESTIA/func/main.sh
source $HESTIA/conf/hestia.conf

# Another workaround for cron environment
PATH="$PATH:$BIN"
export PATH

# Checking rrddir
if [ ! -d "$RRD" ]; then
    mkdir -p $RRD
fi


#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#

# Checking daily period
if [ -e "$RRD/daily.rrd" ]; then
    mtime=$(stat -c "%Y" $RRD/daily.rrd)
    ctime=$(date +%s)
    dtime=$((ctime - mtime))
    # Update every 5 minute
    if [ "$dtime" -gt '290' ]; then
        touch $RRD/daily.rrd
        periods="$periods daily"
    fi
else
    touch $RRD/daily.rrd
    periods="$periods daily"
fi

# Checking weekly period
if [ -e "$RRD/weekly.rrd" ]; then
    mtime=$(stat -c "%Y" $RRD/weekly.rrd)
    ctime=$(date +%s)
    dtime=$((ctime - mtime))
    # Update every hour
    if [ "$dtime" -gt '3590' ]; then
        touch $RRD/weekly.rrd
        periods="$periods weekly"
    fi
else
    touch $RRD/weekly.rrd
    periods="$periods weekly"
fi

# Checking monthly period
if [ -e "$RRD/monthly.rrd" ]; then
    mtime=$(stat -c "%Y" $RRD/monthly.rrd)
    ctime=$(date +%s)
    dtime=$((ctime - mtime))
    # Update every 6 hours
    if [ "$dtime" -gt '21590' ]; then
        touch $RRD/monthly.rrd
        periods="$periods monthly"
    fi
else
    touch $RRD/monthly.rrd
    periods="$periods monthly"
fi

# Checking yearly period
if [ -e "$RRD/yearly.rrd" ]; then
    mtime=$(stat -c "%Y" $RRD/yearly.rrd)
    ctime=$(date +%s)
    dtime=$((ctime - mtime))
    # Update every 12 hours
    if [ "$dtime" -gt '43190' ]; then
        touch $RRD/yearly.rrd
        periods="$periods yearly"
    fi
else
    touch $RRD/yearly.rrd
    periods="$periods yearly"
fi


# Updateing system stats
for period in $periods; do

    $BIN/v-update-sys-rrd-la $period >/dev/null 2>&1
    $BIN/v-update-sys-rrd-net $period >/dev/null 2>&1
    $BIN/v-update-sys-rrd-mem $period >/dev/null 2>&1
    $BIN/v-update-sys-rrd-ssh $period >/dev/null 2>&1

    # Updating web stats
    if [ ! -z "$WEB_SYSTEM" ]; then
        $BIN/v-update-sys-rrd-$WEB_SYSTEM $period >/dev/null 2>&1
    fi

    if [ ! -z "$PROXY_SYSTEM" ]; then
        $BIN/v-update-sys-rrd-$PROXY_SYSTEM $period >/dev/null 2>&1
    fi

    # Updating mail stats
    if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
        $BIN/v-update-sys-rrd-mail $period >/dev/null 2>&1
    fi

    # Updating ftp stats
    if [ ! -z "$FTP_SYSTEM" ] && [ "$FTP_SYSTEM" != 'no' ]; then
        $BIN/v-update-sys-rrd-ftp $period >/dev/null 2>&1
    fi

    # Updating db stats
    if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
        for type in ${DB_SYSTEM//,/ }; do
            # Switching on db type
            case $type in
                mysql) $BIN/v-update-sys-rrd-mysql $period >/dev/null 2>&1 ;;
                pgsql) $BIN/v-update-sys-rrd-pgsql $period >/dev/null 2>&1 ;;
            esac
        done
    fi
done


#----------------------------------------------------------#
#                       Hestia                             #
#----------------------------------------------------------#

# No Logging
#log_event "$OK" "$ARGUMENTS"

exit
