Files
tuend-work 4478491d73 z
2025-11-13 07:41:56 +07:00

114 lines
3.0 KiB
Bash

#!/bin/sh
# This script is written by Martynas Bendorius and DirectAdmin
# It is used to install AWstats into DirectAdmin servers
# Official AWstats webpage: http://www.awstats.org
#AWSTATS_VER=6.95
#link bug?
#http://www.directadmin.com/forum/showthread.php?p=193914#post193914
AWSTATS_VER=7.7
DA_SCRIPTS=/usr/local/directadmin/scripts
DA_CONF=/usr/local/directadmin/conf/directadmin.conf
DA_TEMPLATE_CONF=/usr/local/directadmin/data/templates/directadmin.conf
HTTPPATH=http://da-mirror.wpcloud.vn/services/all/awstats
TARFILE=${DA_SCRIPTS}/packages/awstats-${AWSTATS_VER}.tar.gz
USR=/usr/local
REALPATH=${USR}/awstats-${AWSTATS_VER}
ALIASPATH=${USR}/awstats
OS=`uname`
if [ "${OS}" = "FreeBSD" ]; then
WGET=/usr/local/bin/wget
TAR=/usr/bin/tar
CHOWN=/usr/sbin/chown
ROOTGRP=wheel
else
WGET=/usr/bin/wget
TAR=/bin/tar
CHOWN=/bin/chown
ROOTGRP=root
fi
if [ ! -e ${TARFILE} ]; then
${WGET} -O ${TARFILE} ${HTTPPATH}/awstats-${AWSTATS_VER}.tar.gz
fi
if [ ! -e ${TARFILE} ]; then
echo "Can not download awstats-${AWSTATS_VER}"
exit 1
fi
#Extract the file
${TAR} xzf ${TARFILE} -C ${USR}
if [ ! -e ${REALPATH} ]; then
echo "Directory ${REALPATH} does not exist"
exit 1
fi
#link it from a fake path:
/bin/rm -f ${ALIASPATH}
/bin/ln -sf awstats-${AWSTATS_VER} ${ALIASPATH}
cd ${REALPATH}
${CHOWN} -R root:${ROOTGRP} ${REALPATH}
chmod -R 755 ${REALPATH}
#patch the url bug: this is ni the 7.3 tar.gz file, so no need to patch. Creates a patch rej file.
#echo "Patching awstats_buildstaticpages.pl to fix url bug...";
#cd ${REALPATH}/tools
#wget -O awstats_url.patch http://da-mirror.wpcloud.vn/services/custombuild/patches/awstats_url.patch
#if [ ! -s awstats_url.patch ]; then
# echo "Error with awstats_url.patch. File is missing or empty";
#else
# patch -p0 < awstats_url.patch
#fi
#sets the value of $1 to $2 in the file $3
setVal()
{
if [ ! -e $3 ]; then
return;
fi
COUNT=`grep -c $1 $3`
if [ "$COUNT" -eq 0 ]; then
#ok, it's not there, add it.
echo "$1=$2" >> $3
return;
else
#ok, the value is already in the file $3, so use perl to regex it.
perl -pi -e "s/`grep ${1}= ${3}`/${1}=${2}/" ${3}
fi
}
#setup the directadmin.conf
#disable webalizer, enable awstats.
setVal awstats 1 ${DA_TEMPLATE_CONF}
setVal webalizer 0 ${DA_TEMPLATE_CONF}
setVal awstats 1 ${DA_CONF}
setVal webalizer 0 ${DA_CONF}
echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue
CAGEFS_DA_CFG=/etc/cagefs/conf.d/directadmin.cfg
if [ -s ${CAGEFS_DA_CFG} ]; then
C=`grep ^paths= ${CAGEFS_DA_CFG} | grep -c ${REALPATH}`
if [ "${C}" -eq 0 ]; then
#From: paths=/usr/local/awstats/, /usr/local/php
#To: paths=/usr/local/awstats/, /usr/local/awstats-7.7/, /usr/local/awstats, /usr/local/php
STR="perl -pi -e 's#^paths=/usr/local/awstats/, /usr/local/php#paths=/usr/local/awstats/, ${REALPATH}/, /usr/local/awstats, /usr/local/php'"
eval ${STR}
fi
if [ ! -d /usr/share/cagefs-skeleton${REALPATH} ] && [ -x /usr/sbin/cagefsctl ]; then
/usr/sbin/cagefsctl --force-update
fi
fi
echo "AWstats package is installed."