#! /bin/sh
# FusionForge Installation Dependency Setup
#
# Copyright 2006 GForge, LLC
# Copyright (C) 2010 Alain Peyrat - Alcatel-Lucent
# Copyright (C) 2011 Christian Bayle
# Copyright 2013-2014, Franck Villaume - TrivialDev
# http://fusionforge.org/
#
# @version
#
# highly inspired from GInstaller
#
# FusionForge is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# FusionForge is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with FusionForge; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

msg(){
	GREEN="[01;32m"
	NORMAL="[00m"
	RED="[01;31m"
	case $1 in
		red)
			echo "$RED $2 $NORMAL"
			;;
		green)
			echo "$GREEN $2 $NORMAL"
			;;
	esac
}


deps_redhat() {
	if [ ! -f /tmp/done_yum ]
	then
		addFusionForgeYumRepo
		addDagRPMForgeYumRepo
		msg green "Installing packages: Executing YUM. Please wait..."
		case $(yum info postgresql | awk '/^Version/ {print $3}') in
		    7.*|8.0*|8.1*|8.2*)
			pg=postgresql84
			;;
		    *)
			pg=postgresql
		esac
		case $targetversion in
			6|el6*)
				packagelist="httpd php mailman cvs $pg $pg-libs $pg-server $pg-contrib perl-URI php-pgsql subversion mod_dav_svn postfix rcs php-gd mod_ssl wget openssh which liberation-fonts php-htmlpurifier php-mbstring poppler-utils php-pear-HTTP_WebDAV_Server antiword shared-mime-info rsync git gitweb"
				;;
			5|el5*)
				packagelist="httpd php mailman cvs $pg $pg-libs $pg-server $pg-contrib perl-URI php-pgsql subversion mod_dav_svn postfix rcs php-gd mod_ssl wget openssh which liberation-fonts php-htmlpurifier php-mbstring poppler-utils php-pecl-zip php-pear-HTTP_WebDAV_Server antiword php-pecl-Fileinfo shared-mime-info rsync git gitweb"
				;;
			*)
				msg red "Target version unknown. Die here"
				exit 1
				;;
		esac
		yum --enablerepo=fusionforge --enablerepo=dag-rpmforge -y --skip-broken install $packagelist
		touch /tmp/done_yum
	fi
}

deps_debian() {
	msg green "Installing packages: Executing apt-get. Please wait..."
	DEBIAN_FRONTEND=noninteractive
	export DEBIAN_FRONTEND
	apt-get -y update
	apt-get -y --force-yes install apache2 libapache2-mod-php5 php5 php5-cli php5-pgsql cvs postgresql postgresql-contrib php5-curl curl ssh lsb-release php5-cli php-htmlpurifier
	apt-get -y --force-yes install libipc-run-perl liburi-perl
	apt-get -y --force-yes install subversion subversion-tools # libapache2-svn
	apt-get -y --force-yes install python-moinmoin python-psycopg2 python-pygments libapache2-mod-wsgi
	apt-get -y --force-yes install mediawiki
	apt-get -y --force-yes install git gitweb
	a2enmod headers
	a2enmod proxy
	a2enmod ssl
	a2enmod rewrite
	a2enmod vhost_alias
	a2enmod access_compat
	a2enmod alias
	a2enmod dir
	a2enmod authn_core
	a2enmod wsgi
	a2enmod cgi
	# TODO: automate next
	msg red "You Must Install Mailman Manually: apt-get install mailman postfix"
}

# http://www.arklinux.org/
deps_ark() {
	msg green "Installing packages: Executing apt-get. Please wait..."
	apt-get update
	apt-get -y install httpd php mailman cvs postgresql postgresql-libs postgresql-server postgresql-contrib perl-URI php-pgsql subversion subversion-server-httpd postfix rcs mod_ssl wget ssh git gitweb

	msg green "Restarting PostgreSQL"
	/sbin/service postgresql restart

	# TODO: automate next
	msg red "You Must Install htmlpurifier manually."
}

deps_suse() {
	msg green "Installing Packages with yast"
	yast -i php5 apache2-prefork php mailman cvs postgresql postgresql-libs postgresql-server postgresql-contrib perl-URI php4-pgsql subversion apache-mod_dav_svn ssh postfix rcs php4-gd mod_ssl perl-IPC-Run php4-curl wget subversion-server apache2-mod_php4 git gitweb

	msg green "Fixing php4 installation"
	cp /usr/lib/apache2-prefork/libphp4.so /usr/lib/apache2/mod_php.so

	msg green "Stopping Apache"
	/etc/init.d/apache2 stop

	msg green "Restarting PostgreSQL"
	/etc/init.d/postgresql stop
	/etc/init.d/postgresql start

	msg green "Starting Apache"
	/etc/init.d/apache2 start

	# TODO: automate next
	msg red "You Must Install htmlpurifier manually."

}

deps_opensuse() {
	msg green "Installing Packages with yast"
	# check for newer suse
	release=`awk '{print $2}' /etc/SuSE-release | head -n 1`
        if [ $release = "13.1" ]; then
		modules="php5 apache2-prefork apache2-mod_php5 cvs mailman perl-IPC-Run perl-URI php5-curl php5-gd php5-gettext php5-pgsql postfix postgresql92 postgresql-libs postgresql92-server postgresql92-contrib rcs openssh subversion subversion-server wget viewvc git git-web"
	else
		modules="php5 apache2-prefork apache2-mod_php5 cvs mailman perl-IPC-Run perl-URI php5 php5-curl php5-gd php5-gettext php5-pgsql postfix postgresql postgresql-contrib postgresql-libs postgresql-server rcs openssh subversion subversion-server wget viewvc git gitweb"
	fi
	yast -i ${modules}

	msg green "Restarting PostgreSQL..."
	rcpostgresql restart
	msg green "Restarting Apache..."
	rcapache2 restart

	if [ $release = "13.1" ]; then
		msg green "Installing htmlpurifier with pear"
		pear channel-discover htmlpurifier.org
		pear install hp/HTMLPurifier

		# make symlinks to meet standards
		ln -s /usr/share/php5/PEAR /usr/share/pear
		ln -s /usr/share/php5 /usr/share/php
	else
		# TODO: automate next
		msg red "You Must Install htmlpurifier manually."
	fi
}

addFusionForgeYumRepo() {
	if [ ! -f "/etc/yum.repos.d/fusionforge.repo" ]
	then 
		msg green "Adding Fusionforge YUM repository"
		if [ -z "$FFORGE_RPM_REPO" ]
		then 
			rpm_repo="http://fusionforge.fusionforge.org/rpm/5.3"
		else
			rpm_repo="$FFORGE_RPM_REPO"
		fi
		cat > /etc/yum.repos.d/fusionforge.repo <<-END
# Name: FusionForge RPM Repository
# URL: http://fusionforge.org/
[fusionforge]
name = Red Hat Enterprise \$releasever - fusionforge.org
baseurl = $rpm_repo
enabled = 0
protect = 0
gpgcheck = 0
END
	fi
}

addDagRPMForgeYumRepo() {
	if [ ! -f "/etc/yum.repos.d/dag-rpmforge.repo" ]
	then
		msg green "Adding Dag RPMForge YUM repository" ]
		if [ -z "$DAG_RPMFORGE_REPO" ]
		then
			rpm_repo="http://apt.sw.be/redhat"
		else
			rpm_repo="$DAG_RPMFORGE_REPO"
		fi
		cat > /etc/yum.repos.d/dag-rpmforge.repo <<-END
# Name: RPMforge RPM Repository for Red Hat Enterprise \$releasever - dag
# URL: http://rpmforge.net/
[dag-rpmforge]
name = Red Hat Enterprise $targetversion - RPMforge.net - dag
baseurl = $rpm_repo/$targetversion/en/\$basearch/dag
enabled = 0
protect = 0
gpgcheck = 0
END
	fi
}

deps_centos(){
	deps_redhat
}

deps_rhel(){
	deps_redhat
}

deps_fedora(){
	deps_redhat
}

deps_ubuntu(){
	deps_debian
}
