# Cacti Install Script
# This script should work on all RHEL/CentOS 6.x systems but was built and tested
# on a CentOS 6 system installed with the minimal CD.
# By: Chris Adams
#     linuxchris@gmail.com
# On: 29 Aug 2011
# 
# Modify the password variables below to match what you want

MYSQLPASS='MySQ11%-4'
CACTIPASS='C@ct1'
CACTIVERSION=`wget -qO- www.cacti.net| grep "latest version" | sed 's/<[^>]*>//g' | awk '{print $NF}'`
RRDVERSION=1.4.5
PKG_CONFIG_PATH=/usr/lib/pkgconfig/
CACTITMP=/tmp/cactisql.tmp
SERVERS=(mysqld httpd ntpd)
OFFSERVERS=(iptables ip6tables)

# Centos Minimal needs these added
yum install httpd php php-mysql php-snmp php-xml mysql mysql-server \
cairo-devel libxml2-devel pango-devel pango libpng-devel freetype \
freetype-devel libart_lgpl-devel net-snmp-utils gcc wget man make \
perl-CPAN perl-ExtUtils-MakeMaker perl-ExtUtils-MakeMaker-Coverage \
crontabs xorg-x11-fonts-100dpi xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi \
ntp

#Disable SELinux and the local firewall
sed -i -e "s/^SELINUX\=enforcing/SELINUX\=disabled//" /etc/selinux/config
for i in ${OFFSERVERS[@]}; do
	echo "Starting ${i}\n"
	chkconfig ${i} off
	service ${i} stop
	done

#Turn onn and enable the needed servers to start at boot
for i in ${SERVERS[@]}; do
	echo "Starting ${i}\n"
	chkconfig ${i} on
	service ${i} start
	done	
	
# Add teh fonts we installed to the font cache for Apache to use
fc-cache -vfs

# Download the latest rrdtool and store in /opt 
cd /opt
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz
tar -xzf rrdtool.tar.gz
cd rrdtool-$RRDVERSION
#Build and install rrdtool
./configure && make && make install
cd /usr/local
ln -s /opt/rrdtool-$RRDVERSION rrdtool

#Set Mysql password for root 
mysqladmin --user=root password $MYSQLPASS
mysqladmin --user=root -p$MYSQLPASS reload

#Now on to the Cacti stuff
mkdir -p /var/www/html/cacti
cd /var/www/html/
wget http://www.cacti.net/downloads/cacti-$CACTIVERSION.tar.gz
tar -xzf cacti-$CACTIVERSION.tar.gz
mv cacti-$CACTIVERSION cacti
cd cacti
#Cacti SQL
echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '$CACTIPASS';" > $CACTITMP
echo "flush privileges;" >> $CACTITMP
mysqladmin --user=root create cacti -p$MYSQLPASS
mysql -u root -p$MYSQLPASS cacti < cacti.sql
mysql -u root -p$MYSQLPASS cacti < $CACTITMP
rm -f $CACTITMP
#Set the proper password for the Cacti DB user in the config
sed -i -e "s/^\$database_password\ \= \"cactiuser\"/\$database_password\ \= \"${CACTIPASS}\"/" include/config.php
chown -R apache:apache /var/www/html/cacti
# Crontab entry for cacti (runs as root)
echo '*/5 * * * * root /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1' > /etc/cron.d/0Cacti

echo "If there were no errors reported, everything should now be installed!\n"
echo "You will now need to reboot the server to apply the SELinux setting.\n"