#!/bin/bash
# OpenMeetings 2.0 Automatic Installer and Updater
# Version: 2
# Date: 01/08/2012
# Includes a Menu to choose between upgrade 2.1 or fresh install of 2.0
# Stephen Cottham
#
# Report any problems to the usual mail-list
#
while :
do
clear
echo "**************************"
echo "* OpenMeetings Installer *"
echo "**************************"
echo "* [I] Install"
echo "* [U] Upgrade"
echo "* [X] Exit"
echo "**************************"
echo -n "Enter your menu choice [I, U or X]: "
read yourch
case $yourch in
I) clear 
echo "Installing Fresh OpenMeetings 2.0"
echo
sleep 1
echo "Creating Working Directory.................................................................."
echo
sleep 1
if ! [ -d "/usr/adm" ]; then
mkdir /usr/adm;
fi
echo "Backing up sources.list and adding new repos................................................"
echo
sleep 1
mv /etc/apt/sources.list /etc/apt/sources.old
touch /etc/apt/sources.list
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp2.de.debian.org/debian squeeze main non-free" >> /etc/apt/sources.list
echo "deb http://deb-multimedia.org squeeze main" >> /etc/apt/sources.list
apt-get update
apt-get install expect -y
sh -c 'echo sun-java6-jdk shared/accepted-sun-dlj-v1-1 select true | /usr/bin/debconf-set-selections';

clear
echo "Installaing Java 6 (Sun)...................................................................."
echo
sleep 1
apt-get install sun-java6-jdk -y

clear
echo "Installing OpenOffice and needed pre-req's.................................................."
echo
sleep 1
apt-get install openoffice.org-writer openoffice.org-calc openoffice.org-impress \
openoffice.org-draw openoffice.org-math imagemagick gs-gpl -y
apt-get install libgif-dev xpdf php5 php5-mysql libfreetype6 libfreetype6-dev libjpeg8 libjpeg62 libjpeg8-dev -y
apt-get install g++ libjpeg-dev libdirectfb-dev libart-2.0-2 libt1-5 zip unzip bzip2 -y
apt-get install subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev -y
apt-get install libmp3lame-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore4-dev zlib1g-dev -y
apt-get install libogg-dev sox libvorbis0a libvorbis-dev libgsm1 libgsm1-dev libfaad2 subversion flvtool2 lame --force-yes -y

clear
echo "Installing MySQL Server...................................................................."
echo
sleep 1
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password password'
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password password'
apt-get -y install mysql-server

clear
echo "Creating DB and setting Permissions......................................................."
echo
sleep 1
rm -f /usr/adm/db_create.php 
echo '<?php
$con = mysql_connect("localhost","root","password");
if (!$con)
  {
  die;
  }

if (mysql_query("CREATE DATABASE openmeetings DEFAULT CHARACTER SET 'utf8';",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

mysql_close($con);
?>' >> /usr/adm/db_create.php

php /usr/adm/db_create.php

rm -f /usr/adm/db_priv.php

echo "<?php
\$con = mysql_connect(\"localhost\",\"root\",\"password\");
if (!\$con)
  {
  die;
  }
if (mysql_query('GRANT ALL PRIVILEGES ON openmeetings.* TO \"openmeetings\"@\"localhost\" IDENTIFIED BY \"password\" WITH GRANT OPTION;',\$con))
  {
  echo \"Database created\";
  }
else
  {
  echo \"Error creating database: \" . mysql_error();
  }

mysql_close($con);
?>" >> /usr/adm/db_priv.php

php /usr/adm/db_priv.php 

clear
echo "Compiling and installing SWFTools........................................................."
echo
sleep 1
wget http://www.swftools.org/swftools-2012-04-08-0857.tar.gz
tar -zxvf swftools-2012-04-08-0857.tar.gz
cd swftools-2012-04-08-0857
./configure
make
make install

clear
echo "Compiling and installing FFMpeg..........................................................."
echo
sleep 1
cd /usr/adm
wget http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.gz
tar -zxvf ffmpeg-0.11.1.tar.gz
cd ffmpeg-0.11.1
./configure --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libgsm \
--enable-libfaac --enable-gpl --enable-nonfree
make
checkinstall

clear
echo "Downloading and installing JODConverter......................................................"
echo
sleep 1
cd /usr/adm
wget http://jodconverter.googlecode.com/files/jodconverter-core-3.0-beta-4-dist.zip
unzip jodconverter-core-3.0-beta-4-dist.zip

clear
echo "Installing ApacheAnt......................................................................."
echo
sleep 1
cd /usr/adm
wget http://mirror.catn.com/pub/apache//ant/binaries/apache-ant-1.8.4-bin.tar.gz
tar -zxvf apache-ant-1.8.4-bin.tar.gz

clear
echo "Checking out OM2.0........................................................................."
echo
sleep 1
cd /usr/adm
svn checkout http://svn.apache.org/repos/asf/incubator/openmeetings/branches/2.0/
cd /usr/adm/2.0

clear
echo "Compiling and Installing OM 2.0............................................................"
echo
sleep 1
/usr/adm/apache-ant-1.8.4/bin/ant clean.all
/usr/adm/apache-ant-1.8.4/bin/ant -Ddb=mysql

cd /usr/adm/2.0/dist
mv red5/ /usr/lib/
cp -R /usr/adm/jodconverter-core-3.0-beta-4 /usr/lib/red5/webapps/openmeetings

clear
echo "Setting up permissions and creating start-up scripts......................................."
echo
sleep 1
chown -R nobody /usr/lib/red5
chmod +x /usr/lib/red5/red5.sh
chmod +x /usr/lib/red5/red5-debug.sh

rm -f /etc/init.d/red5
touch /etc/init.d/red5
echo '#! /bin/sh
### BEGIN INIT INFO
# Provides: red5
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts red5 server for Openmeetings.
### END INIT INFO
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server for OpenMeetings
# processname: red5
# Created By: Sohail Riaz (sohaileo@gmail.com)
# Modified by Alvaro Bustos
PROG=red5
RED5_HOME=/usr/lib/red5
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid
[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5
RETVAL=0
case "$1" in
start)
cd $RED5_HOME
start-stop-daemon --start -c nobody --pidfile $PIDFILE \
--chdir $RED5_HOME --background --make-pidfile \
--exec $DAEMON >/dev/null 2>/dev/null &
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo $! > $PIDFILE
fi
echo
;;
stop)
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--name java
rm -f $PIDFILE
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
;;
restart|force-reload)
$0 stop
$0 start
;;
status)
# Debian and Ubuntu 10 status check
ps aux | grep -f $PIDFILE >/dev/null 2>/dev/null && RETVAL=0 || RETVAL=3
# Ubuntu 12 status check using improved "start-stop-daemon" status query
# (use the above command, or comment out above command and uncomment the two
below commands.
# start-stop-daemon --status --pidfile $PIDFILE
# RETVAL=$?
[ $RETVAL -eq 0 ] && echo "$PROG is running"
[ $RETVAL -eq 1 ] && echo "$PROG is not running and the pid file exists"
[ $RETVAL -eq 3 ] && echo "$PROG is not running"
[ $RETVAL -eq 4 ] && echo "$PROG - unable to determine status"
;;
checkports)
netstat -anp | grep soffice
netstat -anp | grep java
;;
*)
echo $"Usage: $0 {start|stop|restart|force-reload|status|checkports}"
RETVAL=1
esac
exit $RETVAL
' >> /etc/init.d/red5

chmod +x /etc/init.d/red5
update-rc.d red5 defaults

clear
echo "Setting up Om to use MYSQL backend................................................"
echo
sleep 1
mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml \
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml-ori
mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml \
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
sed -i 's/Username=root/Username=openmeetings/g' /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
sed -i 's/Password=/Password=password/g' /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
/etc/init.d/red5 start

clear
echo "Cleaning up after install........................................................."
echo
sleep 1
apt-get remove php5 -y 
apt-get remove php5-mysql -y
apt-get autoremove -y

clear
echo "Openmeetings is now installed please open a browser to:"
echo "http://<OMServerIPaddress>:5080/openmeetings/install"
echo
sleep 5
;;


U) clear 
echo "Updating Openmeetings to latest Build...................................................."
echo
sleep 5
apt-get install php5 php5-mysql -y
echo
echo "Creating Working Directory.................................................................."
echo
sleep 1
if ! [ -d "/usr/adm" ]; then
mkdir /usr/adm;
fi
echo
echo "Stopping running OM Services..................................................................."
echo
sleep 1
/etc/init.d/red5 stop

echo
echo "Backing up current OM configuration............................................................"
echo
sleep 1
mv /usr/adm/backup_om.zip /usr/adm/backup_om.$(date -u +\%Y\%m\%d\%H\%M\%S).zip
cd /usr/lib/red5
./admin.sh -b -file /usr/adm/backup_om.zip

echo
echo "Dropping current Openmeetings Database........................................................."
echo
sleep 1

rm -f /usr/adm/db_drop.php 
echo '<?php
$con = mysql_connect("localhost","root","password");
if (!$con)
  {
  die;
  }

if (mysql_query("DROP DATABASE openmeetings;",$con))
  {
  echo "Database dropped";
  }
else
  {
  echo "Error dropping database: " . mysql_error();
  }

mysql_close($con);
?>' >> /usr/adm/db_drop.php

php /usr/adm/db_drop.php

echo
echo "Creating DB and setting Permissions......................................................."
echo
sleep 1
rm -f /usr/adm/db_create.php 
echo '<?php
$con = mysql_connect("localhost","root","password");
if (!$con)
  {
  die;
  }

if (mysql_query("CREATE DATABASE openmeetings DEFAULT CHARACTER SET 'utf8';",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

mysql_close($con);
?>' >> /usr/adm/db_create.php

php /usr/adm/db_create.php

rm -f /usr/adm/db_priv.php

echo "<?php
\$con = mysql_connect(\"localhost\",\"root\",\"password\");
if (!\$con)
  {
  die;
  }
if (mysql_query('GRANT ALL PRIVILEGES ON openmeetings.* TO \"openmeetings\"@\"localhost\" IDENTIFIED BY \"password\" WITH GRANT OPTION;',\$con))
  {
  echo \"Database created\";
  }
else
  {
  echo \"Error creating database: \" . mysql_error();
  }

mysql_close($con);
?>" >> /usr/adm/db_priv.php

php /usr/adm/db_priv.php

clear
echo "Archiving old OM Instance......................................................."
echo
sleep 1
mv /usr/lib/red5 /usr/lib/red5.$(date -u +\%Y\%m\%d\%H\%M\%S)

echo "Checking out Latest Build......................................................."
echo
sleep 1
cd /usr/adm
rm -Rf /usr/adm/singlewebapp
svn checkout http://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/

clear
echo "Installing ApacheAnt............................................................"
echo
sleep 1
cd /usr/adm
wget http://mirror.catn.com/pub/apache//ant/binaries/apache-ant-1.8.4-bin.tar.gz
tar -zxvf apache-ant-1.8.4-bin.tar.gz

clear
echo "Compiling and Installing latest OpenMeetings Build.............................."
echo
sleep 1
cd /usr/adm/singlewebapp
/usr/adm/apache-ant-1.8.4/bin/ant clean.all
/usr/adm/apache-ant-1.8.4/bin/ant -Ddb=mysql

mv /usr/adm/singlewebapp/dist/red5/ /usr/lib/
cp -R /usr/adm/jodconverter-core-3.0-beta-4 /usr/lib/red5/webapps/openmeetings

clear
echo "Setting permissions on OM Files................................................."
echo
sleep 1
chown -R nobody /usr/lib/red5
chmod +x /usr/lib/red5/red5.sh
chmod +x /usr/lib/red5/red5-debug.sh

echo "Setting up Om to use MYSQL backend.............................................."
echo
sleep 1
mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml \
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml-ori
mv /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml \
/usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
sed -i 's/Username=root/Username=openmeetings/g' /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
sed -i 's/Password=/Password=password/g' /usr/lib/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml

echo "Restoring OM Configuration....................................................."
echo
sleep 1
cd /usr/lib/red5
./admin.sh -i -file /usr/adm/backup_om.zip
sleep 5

echo "starting OM...................................................................."
echo
/etc/init.d/red5 start
sleep 10
echo "Cleaning up after install......................................................"
echo
sleep 1

apt-get remove php5 -y 
apt-get remove php5-mysql -y
apt-get autoremove -y

clear
echo "OpenMeetings has now been updated.............................................."
sleep 5

;;
X) exit 0;;
*) echo "Oopps!!! Please select choice I, U or X";
echo "Press Enter to continue. . ." ; read ;;
esac
done