#!/bin/bash
# info: update domain statistics
# options: user domain
#
# The function runs log analyzer for speciefic webdomain.


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

# Argument defenition
user=$1
domain=$(idn -t --quiet -u "$2" )
domain_idn=$(idn -t --quiet -a "$domain")

# Includes
source $VESTA/conf/vesta.conf
source $VESTA/func/main.sh
source $VESTA/func/domain.sh


#----------------------------------------------------------#
#                    Verifications                         #
#----------------------------------------------------------#

check_args '2' "$#" 'user domain'
validate_format 'user' 'domain'
is_system_enabled "$WEB_SYSTEM"
is_object_valid 'user' 'USER' "$user"
is_object_unsuspended 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain"
is_object_unsuspended 'web' 'DOMAIN' "$domain"
is_object_value_exist 'web' 'DOMAIN' "$domain" '$STATS'


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

get_domain_values 'web'

# Checking config
config="$HOMEDIR/$user/conf/web/$STATS.$domain.conf"
if [ ! -e "$config" ]; then
    echo "Error: Parsing error"
    log_event "$E_PARSING" "$EVENT"
    exit $E_PARSING
fi

# Checking statistics directory
dir="$HOMEDIR/$user/web/$domain/stats"
if [ ! -e "$dir" ]; then
    mkdir -p $dir
fi

# Defining functions
build_webalizer() {
    /usr/bin/webalizer -c $config
}

build_awstats() {
    awstats="/var/www/awstats"
    awstats_options="-config=$config -staticlinks -update -output"
    month=$(date "+%Y-%m")
    output='alldomains allhosts lasthosts unknownip allrobots lastrobots
            session urldetail urlentry urlexit osdetail unknownos
            browserdetail unknownbrowser refererse refererpages keyphrases
            keywords errors404'

    # Checking statistics directory
    if [ ! -e "$dir/$month" ]; then
        mkdir -p $dir/$month
    fi

    # Icon directory check
    if [ ! -e "$dir/icon" ]; then
        cp -r $awstats/icon $dir/
    fi

    # Creating main awstats page
    $awstats/awstats.pl $awstats_options |\
        sed -e "s%awstats.$config.%%g"  > $dir/$month/index.html

    # Creating suplemental awstats pages
    for format in $output; do
        $awstats/awstats.pl $awstats_options=$format |\
            sed -e "s%awstats.$config.%%g" > $dir/$month/$format.html
    done

    # Creating index page
    cat  $WEBTPL/awstats_index.tpl | sed -e "s/%month%/$month/g" \
         > $dir/index.html

    # Creating navigation page
    months=$(find $dir -type d | sed -e "s%$dir/%%g" -e "s%$dir%%g" |\
            grep -v icon | sort -r )
    for link in $months; do
        select_m="$select_m\t    <option value=\"$link\">$link<\/option>\n"
    done
    cat $WEBTPL/awstats_nav.tpl | sed -e "s/%select_month%/$select_m/" \
         > $dir/nav.html

}

# Switching on statistics type
case $stats in
    webalizer) build_webalizer ;;
    awstats) build_awstats ;;
esac

# Chown
chown -R $user:$(groups $user| cut -f 3 -d ' ') $dir


#----------------------------------------------------------#
#                       Vesta                              #
#----------------------------------------------------------#

# Logging
log_event "$OK" "$EVENT"

exit
