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

#----------------------------------------------------------#
#                Variables & Functions                     #
#----------------------------------------------------------#

# 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
# load config file
source_conf "$HESTIA/conf/hestia.conf"

# 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 [ -n "$WEB_SYSTEM" ]; then
		$BIN/v-update-sys-rrd-$WEB_SYSTEM "$period" > /dev/null 2>&1
	fi

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

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

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

	# Updating db stats
	if [ -n "$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                             #
#----------------------------------------------------------#

exit