#!/bin/bash

usage() {
	echo "newpim.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

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

if [ -z "$NAME" ]
	then

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

else

	dialog --title "NEWPIM : Creation Unix" \
		--yesno "Voulez-vous 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/pimengest2 admin/ log/ log_apache/ public_html/
		rm -rf log_apache/
		chgrp -R www-data config log public_html
		touch log/pimengest2.log
		chgrp -R www-data log public_html
		chown -R $LOGIN config admin log
		chmod 750 admin config log

# config
		cd /etc/pimengest2
		cp pimengest2rc ${LOGIN}rc
		sed  -e "s/^\(DBUSER=\).*/\1$LOGIN/" \
			-e "s/^\(DBNAME=\).*/\1$LOGIN/" \
			-e "s/^\(DBPWD=\).*/\1$passwd/" \
			-e "s/^\(LOGFILE=\).*/\1\/home\/${LOGIN}\/log\/pimengest2\.log/" ${LOGIN}rc > ${LOGIN}rc.tmp
		mv ${LOGIN}rc.tmp ${LOGIN}rc
		chmod 640 ${LOGIN}rc

# pdf
		mkdir -p /var/lib/pimengest2/pdf/$LOGIN
		chgrp www-data /var/lib/pimengest2/pdf/$LOGIN
		chmod 770 /var/lib/pimengest2/pdf/$LOGIN
# pgfile
		mkdir -p /var/lib/pimengest2/pgfile/$LOGIN
		chgrp www-data /var/lib/pimengest2/pgfile/$LOGIN
		chmod 770 /var/lib/pimengest2/pgfile/$LOGIN
	fi
fi

. /etc/pimengest2/${LOGIN}rc

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
}

# base
dialog --title "NEWPIM : creation base" \
	--yesno "Voulez-vous creer une base et un utilisateur **$DBUSER** ?\n \
\nVous devez avoir acces a postgres et connaitre le mot de passe postgres ! " 12 45
if [ $? = 0 ]
	then
	/usr/lib/pimengest2/bin/pg2-createdb ${DBUSER}rc
	GLOBAL=/home/${DBUSER}/config/pimengest2/globals.phps
	cp /usr/share/pimentcore/pimengest2/php4/globals.phps.${DBUSER}rc $GLOBAL && \
		rm -f /usr/share/pimentcore/pimengest2/php4/globals.phps.${DBUSER}rc
	chmod 644 $GLOBAL
fi

# apache http.conf
if [ -d /etc/apache -a -f /etc/apache/httpd.conf ]
	then
	dialog --title "NEWPIM : parametrage Apache" \
		--yesno "Voulez-vous configurer Apache ?\n \
\nCela va ajouter une entree dans httpd.conf " 12 45
	if [ $? = 0 ]
		then
		if [ ! -f /home/${DBUSER}/config/pimengest2/globals.phps ]
			then
			echo "/home/${DBUSER}/config/pimengest2/globals.phps introuvable. arret."
			exit 1
		fi
		CONF=/etc/apache/httpd.conf
		echo '' >> $CONF
		echo '## virtual host ajoute par newpim.sh' >> $CONF
		echo "<VirtualHost $DBUSER.pimentech.fr>" >> $CONF
		echo "  ServerName $DBUSER.pimentech.fr" >> $CONF
		echo "  DocumentRoot /home/$DBUSER/public_html" >> $CONF
		echo "  ErrorLog /home/$DBUSER/log_apache/error.log" >> $CONF
		echo "  CustomLog /home/$DBUSER/log_apache/access.log combined" >> $CONF
		echo "  php_admin_value include_path \"/home/$DBUSER/config/pimengest2:.:/usr/share/pimentcore:/usr/share/php-libcommon:/usr/local/jpgraph/src\"" >> $CONF
		echo "  php_admin_value open_basedir \"/home/$DBUSER/config/pimengest2:.:/usr/share/pimentcore:/usr/share/php-libcommon:/home/$DBUSER/public_html:/tmp:/var/lib/pimengest2/pdf/$DBUSER:/var/lib/pimengest2/pgfiles/$DBUSER:/usr/local/jpgraph/src\"" >> $CONF
		echo '</VirtualHost>' >> $CONF
		echo '' >> $CONF
		dialog --title "NEWPIM : Apache" \
			--msgbox "Un VirtualHost **$DBUSER** a ete ajoute dans httpd.conf.
Reload d'Apache necessaire." 12 45
	fi

else
	dialog --title "NEWPIM : parametrage Apache" \
		--msgbox "/etc/apache/ introuvable ! Arret."
fi

# SQL
dialog --title "NEWPIM : parametrage SQL" \
	--yesno "Voulez-vous faire le parametrage SQL ? " 12 45
if [ $? = 0 ]
	then
	exec_sql "UPDATE userid SET login='$DBUSER', pwd='$DBPWD', codemodif='newpim.sh' WHERE login='admin'"
	exec_sql "UPDATE personne_physique SET nom='$DBUSER', codemodif='newpim.sh' WHERE nom='admin'"
fi

# fin
dialog --title "NEWPIM : fin" \
	--msgbox "Merci d'avoir utilise NewPim.sh ! " 12 45


