File: //scripts/stats_goaccess
#!/bin/bash
# Required for servers using other lang
LANG=en_US.UTF-8
domain=$1
username=$2
# Goaccess stats
if [ -e "/usr/bin/goaccess" ];then
if [ ! -e "/etc/goaccess.conf" ];then
wget static.cdn-cwp.com/files/3rdparty/stats/goaccess/goaccess.conf -O /etc/goaccess.conf
fi
if [ -e "/home/$username" ];then
if [ ! -e "/home/$username/cwp_stats/goaccess" ];then
if [ ! -e "/home/$username/cwp_stats" ];then
mkdir /home/$username/cwp_stats
test -h "/home/$username/cwp_stats" || chown $username.$username /home/$username/cwp_stats 2> /dev/null 1> /dev/null
fi
mkdir /home/$username/cwp_stats/goaccess 2> /dev/null 1> /dev/null
test -h "/home/$username/cwp_stats/goaccess" || chown $username.$username /home/$username/cwp_stats/goaccess 2> /dev/null 1> /dev/null
fi
if [ ! -e "/home/$username/cwp_stats/goaccess/daily" ];then
mkdir -p /home/$username/cwp_stats/goaccess/daily 2> /dev/null 1> /dev/null
test -h "/home/$username/cwp_stats/goaccess/daily" || chown $username.$username /home/$username/cwp_stats/goaccess/daily 2> /dev/null 1> /dev/null
fi
if [ ! -e "/home/$username/cwp_stats/goaccess/weekly" ];then
mkdir -p /home/$username/cwp_stats/goaccess/weekly 2> /dev/null 1> /dev/null
test -h "/home/$username/cwp_stats/goaccess/weekly" || chown $username.$username /home/$username/cwp_stats/goaccess/weekly 2> /dev/null 1> /dev/null
fi
if [ ! -e "/home/$username/cwp_stats/goaccess/monthly" ];then
mkdir -p /home/$username/cwp_stats/goaccess/monthly 2> /dev/null 1> /dev/null
test -h "/home/$username/cwp_stats/goaccess/monthly" || chown $username.$username /home/$username/cwp_stats/goaccess/monthly 2> /dev/null 1> /dev/null
fi
if [ -e "/usr/local/apache/domlogs/$domain.log" ];then
#daily log
grep "\[`date '+%d/%b/%Y' -d '1 day ago'`" /usr/local/apache/domlogs/"$domain".log | goaccess - --no-progress --output=/home/"$username"/cwp_stats/goaccess/daily/"$domain"_`date +%F -d '1 day ago'`.html -p /etc/goaccess.conf 2> /dev/null 1> /dev/null
#weekly log
weekDate=`date +%u`
if [ "$weekDate" = "7" ];then
grep "\[`date '+%d/%b/%Y' -d '1 day ago'`\|\[`date '+%d/%b/%Y' -d '2 day ago'`\|\[`date '+%d/%b/%Y' -d '3 day ago'`\|\[`date '+%d/%b/%Y' -d '4 day ago'`\|\[`date '+%d/%b/%Y' -d '5 day ago'`\|\[`date '+%d/%b/%Y' -d '6 day ago'`\|\[`date '+%d/%b/%Y' -d '7 day ago'`" /usr/local/apache/domlogs/"$domain".log | goaccess - --no-progress --output=/home/"$username"/cwp_stats/goaccess/weekly/"$domain"_`date +%F -d '1 day ago'`.html -p /etc/goaccess.conf 2> /dev/null 1> /dev/null
fi
#monthly log
todayDate=`date +%d`
if [ "$todayDate" = "01" ];then
grep "`date '+/%b/%Y' -d '1 month ago'`" /usr/local/apache/domlogs/"$domain".log | goaccess - --no-progress --output=/home/"$username"/cwp_stats/goaccess/monthly/"$domain"_`date +%F -d '1 day ago'`.html -p /etc/goaccess.conf 2> /dev/null 1> /dev/null
# Delete old logs
SEARCHDATE=`date '+/%b/%Y' -d '2 months ago'`
sed -i "\@$SEARCHDATE@d" /usr/local/apache/domlogs/"$domain".log 2> /dev/null 1> /dev/null
sed -i "\@$SEARCHDATE@d" /usr/local/apache/domlogs/"$domain".error.log 2> /dev/null 1> /dev/null
# Delete old daily stat files
find /home/"$username"/cwp_stats/goaccess/daily/ -type f -name "*.html" -mtime +45 -exec rm -f {} \; 2> /dev/null 1> /dev/null
chown $username.$username /home/"$username"/cwp_stats/goaccess/daily/*
# Delete old weekly stat files
find /home/"$username"/cwp_stats/goaccess/weekly/ -type f -name "*.html" -mtime +90 -exec rm -f {} \; 2> /dev/null 1> /dev/null
chown $username.$username /home/"$username"/cwp_stats/goaccess/weekly/*
# Delete old monthly stat files
find /home/"$username"/cwp_stats/goaccess/monthly/ -type f -name "*.html" -mtime +365 -exec rm -f {} \; 2> /dev/null 1> /dev/null
chown $username.$username /home/"$username"/cwp_stats/goaccess/monthly/*
fi
fi
fi
fi