#!/bin/sh
mkdir flowscan_packages
cd flowscan_packages
if [ ! -e "FlowScan-1.006.tar.gz" ]
then wget http://net.doit.wisc.edu/~plonka/FlowScan/FlowScan-1.006.tar.gz; fi
if [ ! -e "rrdtool-1.2.11.tar.gz" ]
then wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.2.11.tar.gz; fi
if [ ! -e "Boulder-1.30.tar.gz" ]
then wget http://search.cpan.org/CPAN/authors/id/L/LD/LDS/Boulder-1.30.tar.gz; fi
if [ ! -e "Net-Patricia-1.010.tar.gz" ]
then wget http://search.cpan.org/CPAN/authors/id/P/PL/PLONKA/Net-Patricia-1.010.tar.gz; fi
if [ ! -e "ConfigReader-0.5.tar.gz" ]
then wget http://search.cpan.org/CPAN/authors/id/A/AM/AMW/ConfigReader-0.5.tar.gz; fi
if [ ! -e "jkflow-v3.5.2.tgz" ]
then wget http://users.telenet.be/jurgen.kobierczynski/jkflow/jkflow-v3.5.2.tgz; fi
if [ ! -e "flow-tools-0.67.tar.gz" ]
then wget ftp://ftp.eng.oar.net/pub/flow-tools/flow-tools-0.67.tar.gz; fi
if [ ! -e "HTML-Table-2.02.tar.gz" ]
then wget http://search.cpan.org/CPAN/authors/id/A/AJ/AJPEACOCK/HTML-Table-2.02.tar.gz; fi
if [ ! -e "XML-Simple-2.14.tar.gz" ]
then wget http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-Simple-2.14.tar.gz; fi
tar -zxvf FlowScan-1.006.tar.gz
tar -zxvf rrdtool-1.2.11.tar.gz
tar -zxvf Boulder-1.30.tar.gz
tar -zxvf Net-Patricia-1.010.tar.gz
tar -zxvf ConfigReader-0.5.tar.gz
tar -zxvf jkflow-v3.5.2.tgz
tar -zxvf flow-tools-0.67.tar.gz
tar -zxvf HTML-Table-2.02.tar.gz
tar -zxvf XML-Simple-2.14.tar.gz
# Apply patch to make flow-tools compiling with gcc 3.4 (Fedora Core 3, 4, Centos 4.0, 4.2)
#patch -p0 < JKFlow-v3.5.2/flow-tools_gcc34_patch
# Apply patch to make flow-tools compiling with gcc 4.0 (Fedora Core 5)
patch -p0 < JKFlow-v3.5.2/flow-tools_gcc40_patch
# Apply patch to resolve error "option '/var/flows/...'"
patch -p0 FlowScan-1.006/FlowScan.pm < JKFlow-v3.5.2/FlowScan.pm_flow-tools_patch
cd rrdtool-1.2.11
./configure --disable-tcl --disable-python --disable-rrdcgi
make
make install
cd bindings/perl-shared
perl Makefile.PL
make
make install
cd ../../..
#Make sure FlowScan finds rrdtool
export PATH=$PATH:/usr/local/rrdtool-1.2.11/bin
#Make sude FlowScan finds RRDs
#Exchange comments here when your distribution doesn't use ld.so.conf.d directory
#echo '/usr/local/rrdtool-1.2.11/lib' >> /etc/ld.so.conf
echo '/usr/local/rrdtool-1.2.11/lib' > /etc/ld.so.conf.d/rrdtool.conf
/sbin/ldconfig
cd Boulder-1.30
perl Makefile.PL
make
make install
cd ..
cd Net-Patricia-1.010
perl Makefile.PL
make
make install
cd ..
cd ConfigReader-0.5
cp ConfigReader.pod /usr/lib/perl5/vendor_perl
mkdir /usr/lib/perl5/vendor_perl/ConfigReader
cp DirectiveStyle.pm /usr/lib/perl5/vendor_perl/ConfigReader
cp Spec.pm /usr/lib/perl5/vendor_perl/ConfigReader
cp Values.pm /usr/lib/perl5/vendor_perl/ConfigReader
cd ..
cd flow-tools-0.67
./configure
make
make install
#Exchange comments here when your distribution doesn't use ld.so.conf.d directory
#echo '/usr/local/netflow/lib' >> /etc/ld.so.conf
echo '/usr/local/netflow/lib' > /etc/ld.so.conf.d/netflow.conf
/sbin/ldconfig
#Cflow must be compiled for flow-tools
cd contrib
tar -zxvf Cflow-1.051.tar.gz
cd Cflow-1.051
perl Makefile.PL
make
make install
cd ../../..
cd HTML-Table-2.02
perl Makefile.PL
make
make install
cd ..
cd XML-Simple-2.14
perl Makefile.PL
make
make install
cd ..
cd FlowScan-1.006
./configure
make install
cat cf/flowscan.cf | \
sed s/FlowFileGlob\ flows.*/FlowFileGlob\ \\/var\\/flows\\/flows\\/ft-v05.*/ | \
sed s/CampusIO/JKFlow/ > /usr/local/bin/flowscan.cf
cd ..
cd JKFlow-v3.5.2
#avoid reporting nothing, because when there is no traffic from/to 10.0.0.0/8 no traffic shows up
cat JKFlow_example_verybasic.xml | \
sed s/\ localsubnets=\"10.0.0.0\\/8\"// > /usr/local/bin/JKFlow.xml
cp JKFlow.pm /usr/local/bin/JKFlow.pm
mkdir -p /var/flows/flows
mkdir -p /var/flows/reports/rrds
mkdir -p /var/flows/score
# SELinux disables CGI-scripts, enable boolean flag CGI-script SELinux if you don't want this
/usr/sbin/setenforce 0
cp JKGrapher.pl /var/www/cgi-bin/
cd ../..
echo ''
echo 'FlowScan 1.006 + flow-tools 0.67 + JKFlow 3.5.2 with a basic JKFlow.xml are now installed'
echo 'Modify /usr/local/bin/JKFlow.xml for your reporting needs' 
echo 'Flow-tools flowfiles should be dumped to /var/flows/flows using flow-capture'
echo 'Please add the following rule in /etc/profile, and relogin to activate the changes:'
echo ''
echo 'export PATH=$PATH:/usr/local/rrdtool-1.2.11/bin:/usr/local/netflow/bin/'
echo ''
echo 'To start flowscan, use:'
echo ''
echo '/usr/local/bin/flowscan'
echo ''
echo 'To start flow-capture use:'
echo ''
echo '/usr/local/netflow/bin/flow-capture -p /var/run/flow-capture.pid -n 287 \'
echo '-N 0 -w /var/flows/flows/ -S 5 0/0/2055'

