#!/bin/bash
#adopted from :
#http://opensourceconsulting.wordpress.com/2009/09/15/openerp-all-in-one-installer-update-for-dummies
#Caution : please stop any instance of running postgres daemon
PSQLRELEASE=8.3
PYTHONRELEASE=python2.5
UBUNTURELEASE=8.04
INSTALLPATH=/usr
ADDONSPATH=$INSTALLPATH/lib/$PYTHONRELEASE/site-packages/openerp-server/addons/
PASSWVAR="openerp"

echo "------------------------------------"
echo "Enabling ubuntu multiverse repository"
echo "------------------------------------"
APTSOURCES=/etc/apt/sources.list.d/sources.list

COMMENT=`grep 'hardy multiverse' $APTSOURCES`
UNCOMMENT=$(echo $COMMENT | sed 's|#||')
sed -i "s|$COMMENT|$UNCOMMENT|" $APTSOURCES

apt-get update
echo "------------------------------------"
echo "installing needed packages"
echo "------------------------------------"

apt-get -y install python python-psycopg2 python-reportlab \
python-egenix-mxdatetime python-xml python-tz python-pychart \
python-pydot python-lxml python-libxslt1 python-vobject \
python-xml python-dev build-essential python-setuptools bzr

#Create openerp as system user
/usr/sbin/adduser --quiet --system openerp

#create pgsql user called openerp
#/etc/init.d/postgresql-$PSQLRELEASE stop

/etc/init.d/postgresql-$PSQLRELEASE start
sudo -u postgres createuser openerp --no-superuser --createdb --no-createrole 
#Alter user open erp with defined password
sudo -u postgres psql template1 -U postgres -c "alter user openerp with password '$PASSWVAR'"

#Seting up OpenErp Server
#------Core OpenErp Server
cd /opt
echo "------------------------------------"
echo "Bazaar openerp server source"
echo "------------------------------------"
bzr branch lp:openobject-server/5.0 openerp-server
cd /opt/openerp-server
echo "------------------------------------"
echo "Compile and Install openerp"
echo "------------------------------------"
python setup.py install
chown -R openerp $INSTALLPATH/lib/$PYTHONRELEASE/site-packages/openerp-server
#------Copy addons
cd /opt
echo "------------------------------------"
echo "Bazaar openerp server addons"
echo "------------------------------------"
bzr branch lp:openobject-addons/5.0 addons
cp -r /opt/addons/ $INSTALLPATH/lib/$PYTHONRELEASE/site-packages/openerp-server/
chown -R openerp.root $ADDONSPATH
chmod 755 $ADDONSPATH
cd /opt
#------Creating init.d script
cat > /tmp/openerp-server <<"EOF"
#!/bin/sh

### BEGIN INIT INFO
# Provides:		openerp-server
# Required-Start:	$syslog
# Required-Stop:	$syslog
# Should-Start:		$network
# Should-Stop:		$network
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Enterprise Resource Management software
# Description:		OpenERP is a complete ERP and CRM software.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/openerp-server
NAME=openerp-server
DESC=openerp-server
USER=openerp

test -x ${DAEMON} || exit 0

set -e

case "${1}" in
	start)
		echo -n "Starting ${DESC}: "

		start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \
			--chuid ${USER} --background --make-pidfile \
			--exec ${DAEMON} -- --config=/etc/openerp-server.conf

		echo "${NAME}."
		;;

	stop)
		echo -n "Stopping ${DESC}: "

		start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \
			--oknodo

		echo "${NAME}."
		;;

	restart|force-reload)
		echo -n "Restarting ${DESC}: "

		start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \
			--oknodo

		sleep 1

		start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \
			--chuid ${USER} --background --make-pidfile \
			--exec ${DAEMON} -- --config=/etc/openerp-server.conf

		echo "${NAME}."
		;;

	*)
		N=/etc/init.d/${NAME}
		echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
		exit 1
		;;
esac

exit 0

EOF

cp /tmp/openerp-server /etc/init.d/
chmod +x /etc/init.d/openerp-server
#Create /var/log/openerp with proper ownership:
mkdir -p /var/log/openerp
touch /var/log/openerp/openerp.log
chown -R openerp.root /var/log/openerp/

sudo sed -i "s#/usr/bin/openerp-server#$INSTALLPATH/bin/openerp-server#g" /etc/init.d/openerp-server
cd /opt
#----Creating openerp-server.conf
cat > /tmp/openerp-server.conf <<"EOF2"
# /etc/openerp-server.conf(5) - configuration file for openerp-server(1)

[options]
# Enable the debugging mode (default False).
#verbose = True 

# The file where the server pid will be stored (default False).
#pidfile = /var/run/openerp.pid

# The file where the server log will be stored (default False).
logfile = /var/log/openerp/openerp.log

# The IP address on which the server will bind.
# If empty, it will bind on all interfaces (default empty).
#interface = localhost
interface = 
# The TCP port on which the server will listen (default 8069).
port = 8069

# Enable debug mode (default False).
#debug_mode = True 

# Launch server over https instead of http (default False).
secure = False

# Specify the SMTP server for sending email (default localhost).
smtp_server = localhost

# Specify the SMTP user for sending email (default False).
smtp_user = False

# Specify the SMTP password for sending email (default False).
smtp_password = False

# Specify the database name.
db_name =

# Specify the database user name (default None).
db_user = openerp

# Specify the database password for db_user (default None).
db_password = 

# Specify the database host (default localhost).
db_host =

# Specify the database port (default None).
db_port = 5432

EOF2

cp /tmp/openerp-server.conf /etc/
chown root.root /etc/openerp-server.conf
chmod 644 /etc/openerp-server.conf

sudo sed -i "s/db_password =/db_password = $PASSWVAR/g" /etc/openerp-server.conf
update-rc.d openerp-server start 21 2 3 4 5 . stop 21 0 1 6 .

cd /opt
echo "------------------------------------"
echo "Bazaar openerp web-client source"
echo "------------------------------------"
bzr branch lp:openobject-client-web/5.0 openerp-web
cd /opt/openerp-web
echo "--------------------------------------"
echo "Compile and install openerp web-client"
echo "may take a while since easy_install "
echo "will also install needed python module"
echo "--------------------------------------"

sudo easy_install -U openerp-web

#Adopting existing init script 
cd /opt
chmod +x /usr/lib/python2.5/site-packages/openerp_web-5.0.6-py2.5.egg/scripts/openerp-web
ln -s /usr/lib/python2.5/site-packages/openerp_web-5.0.6-py2.5.egg/scripts/openerp-web /etc/init.d/openerp-web
update-rc.d openerp-web start 70 2 3 4 5 . stop 20 0 1 6 .

#Adopting existing config 
ln -s /usr/lib/python2.5/site-packages/openerp_web-5.0.6-py2.5.egg/config/openerp-web.cfg /etc/openerp-web.cfg

#Enabling log.access and log.error files
ERPWEBCONFIG=/etc/openerp-web.cfg

#1st : log.access_file
COMMENT=`grep 'log.access_file' $ERPWEBCONFIG`
UNCOMMENT=$(echo $COMMENT | sed 's|#||')
sed -i "s|$COMMENT|$UNCOMMENT|" $ERPWEBCONFIG

#2nd : log.error_file
COMMENT=`grep 'log.error_file' $ERPWEBCONFIG`
UNCOMMENT=$(echo $COMMENT | sed 's|#||')
sed -i "s|$COMMENT|$UNCOMMENT|" $ERPWEBCONFIG


#Create /var/log/openerp-web.log with proper ownership:
mkdir -p /var/log/openerp-web
touch /var/log/openerp-web/access.log
touch /var/log/openerp-web/error.log
chown -R openerp.root /var/log/openerp-web/


apt-get clean
cd /opt
rm -rf openerp-server
rm -rf openerp-web
rm -rf addons

#add usage information
USAGE=/etc/confconsole/usage.txt
sed -i -e '6 a Openerp:	http://$ipaddr:8080' $USAGE
#delete the extra blank line so everything fits on a single screen
sed -i '9 d' $USAGE

cd /

