#!/bin/bash

usage() {
	echo "newzen.sh -l login [ -n name ]"
	echo " -n name = nom total unix - si absent : passe au sql"
}

LOGIN=""
NAME=""

while true
  do
  case $1 in
	  -l)
		  LOGIN=$2
		  shift 2
		  ;;
	  -n) 
		  NAME=$2
		  shift 2
		  ;;
	  -h)  
		  usage
		  exit 1
		  ;;
	  *)
		  break
		  ;;
  esac
done

# Login obligatoire
if [ -z "$LOGIN" ]
	then
	usage
	echo "  Login absent"
	exit 1
elif test `echo $LOGIN | wc -w` -ne 1
	then
	usage
	echo "  Le login doit etre constitué d'un mot unique."
	exit 1
elif test `getent passwd | grep -c "^$1:"` -ne 0
	then
	usage
	echo "  L'utilisateur existe deja."
	exit 1
fi

echo "* checking for files..."
if [ ! -d /home/crm/src/crm/ ]
	then
	echo "Répertoire /home/crm/src/crm/ introuvable"
	exit 1
fi


GLOBAL=globals_$LOGIN
HOME=/home/$LOGIN

if [ -z "$NAME" ]
	then

	dialog --title "NEWZEN : Creation Unix" \
		--msgbox "Creation utilateur et fichiers impossible car nom manquant.\
\nVoir option -n" 12 45

else

	dialog --title "NEWZEN : Creation Unix" \
		--yesno "Voulez-vous un utilisateur Unix **$LOGIN** et ses fichiers de conf ?\n \
\nVous devez etre loggue en administrateur ! " 12 45
	if [ $? = 0 ]
		then

# Creation des mots de passes (cryptes et non cryptes)
		passwds=`makepasswd --chars=6 --crypt`
		passwd=`echo $passwds | awk '{print($1)}'`
		cryptedpasswd=`echo $passwds | awk '{print($2)}'`

# Ajout de l'utilisateur et du repertoire home
		echo " *creating user $LOGIN..."
		useradd -m -p "$cryptedpasswd" -c "$NAME" $LOGIN

# Creation repertoires
		echo " *making directories..."
		cd $HOME
		mkdir -p config admin dump log public_html tex upl_file bin
		chgrp www-data upl_file tex config public_html bin
		chmod 770 upl_file tex
		chmod 750 config log dump admin
		chmod 755 bin
		chmod 710 public_html

# Creation globals
		echo " *setting config files..."
		cd /home/crm/config/
		ln -s $HOME/config/$GLOBAL.mak ./$GLOBAL.mak
		ln -s $HOME/config/$GLOBAL.py ./$GLOBAL.py
		ln -s $HOME/config/$GLOBAL.pyc ./$GLOBAL.pyc
		ln -s $HOME/config/$GLOBAL.pyo ./$GLOBAL.pyo
		ln -s $HOME/config/$GLOBAL.sh ./$GLOBAL.sh
		ln -s $HOME/config/$GLOBAL.pl ./$GLOBAL.pl
		cd /home/crm/src/crm/config/ && cp globals.mak $GLOBAL.mak
		sed -i -e "s/^\(APPLICATION\)=.*/\1=$LOGIN/" \
			-e "s/^\(DBPWD\)=.*/\1=$passwd/" \
			-e "s/^\(DBHOST\)=.*/\1=jules/" $GLOBAL.mak
		make GLOBALFILE=$GLOBAL.mak install

#bin
		cd $HOME/bin/
		mkdir ZEN
		ln -s /home/crm/bin/ZEN/crm.pgml ZEN/$LOGIN.pgml

# ADMIN
		echo " *setting admin files"
		cd $HOME/admin && cp /home/crm/admin/crontab.template . && cp /home/crm/admin/Makefile .
		sed -i -e "s/\(chargement.sh\)/\1 -f $GLOBAL.sh/" \
			-e "s/\(mailer.sh\)/\1 -f $GLOBAL.sh/" \
			-e "s/\(make_rapport.sh\)/\1 -f $GLOBAL.sh/g" crontab.template

		sed -i -e "s/\/home\/crm\/config\/globals.mak/\/home\/$LOGIN\/config\/$GLOBAL.mak/" \
			-e "s/globals.sh/$GLOBAL.sh/" Makefile

		chown -R $LOGIN $HOME
	fi
fi


if [ ! -f $HOME/config/$GLOBAL.sh ]
	then
	dialog --title "NEWZEN" \
		--msgbox "$HOME/config/$GLOBAL.sh introuvable ! Arret." 12 45
else

	. $HOME/config/$GLOBAL.sh
	exec_sql() {
		exec-sql.sh -t 30 -H ${DBHOST} -d ${DBNAME} -u "${DBUSER}" -p "${DBPWD}" -l $LOGFILE -c "$1" | dos2unix -f -- 
		if [ $? -ne 0 ]
			then
			error "cannot execute '$1' on ${DBNAME}@${DBHOST}"
		fi
	}

# GENERATION
	dialog --title "NEWZEN : creation base" \
		--yesno "Voulez-vous creer une base et un utilisateur **$CRONUSER** sur Jules ?\n \
\nVous devez avoir acces a postgres et connaitre le mot de passe postgres ! " 12 45
	if [ $? = 0 ]
		then
		cd /home/crm/src/crm/base/generation
		make clean
		rm -f createuser.ok
		make GLOBALFILE=$GLOBAL.mak install
	fi

# CHARGEMENT
	dialog --title "NEWZEN : chargement base" \
		--yesno "Voulez-vous charger la base **$CRONUSER** sur Jules ?\n \
\nVous devez avoir parametre vos fichiers LST (valeurs de vos entites).
Si vous ne comprenez pas lisez la doc Zen sur garage.pimentech.net ! " 12 45
	if [ $? = 0 ]
		then
		cd /home/crm/src/crm/base/chargement
		make clean
		make GLOBALFILE=$GLOBAL.mak install
		exec_sql "UPDATE userid SET login='${CRONUSER}', pwd='${DBPWD}' WHERE uid=1"
		exec_sql "UPDATE societe SET ztitle='${CRONUSER}' WHERE uid=1"
	fi

	dialog --title "NEWZEN : fin" \
		--msgbox "Il ne reste plus qu'a creer une instance de Zen dans Zope avec l'ID '$CRONUSER'.\
\n\nMerci d'avoir utilise NewZen.sh ! " 12 45

fi


