#!/bin/sh #------------------------------------------------------ # Script to purge and init a database with demo values. # Note: "dialog" tool need to be available if no parameter provided. # # WARNING: This script erase all data of database # with data into dump file # # Regis Houssin - regis.houssin@inodbox.com # Laurent Destailleur - eldy@users.sourceforge.net #------------------------------------------------------ # Usage: initdemo.sh confirm # usage: initdemo.sh confirm mysqldump_dolibarr_x.x.x.sql database port login pass #------------------------------------------------------ export mydir=`echo "$0" | sed -e 's/initdemo.sh//'`; if [ "x$mydir" = 'x' -o "x$mydir" = 'x./' ] then export mydir="." fi export id=`id -u`; # ----------------------------- check if root if [ "x$id" != "x0" -a "x$id" != "x1001" ] then echo "Script must be ran as root" exit fi # ----------------------------- command line params confirm=$1; dumpfile=$2; base=$3; port=$4; admin=$5; passwd=$6; # ----------------------------- check params if [ "x$confirm" != "xconfirm" ] then echo "----- $0 -----" echo "Usage: initdemo.sh confirm [mysqldump_dolibarr_x.x.x.sql database port login pass]" exit fi # ----------------------------- if no params on command line if [ "x$passwd" = "x" ] then export dumpfile=`ls -v $mydir/mysqldump_dolibarr_*.sql | tail -n 1` export dumpfile=`basename $dumpfile` # ----------------------------- input file DIALOG=${DIALOG=dialog} DIALOG="$DIALOG --ascii-lines" fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$ trap "rm -f $fichtemp" 0 1 2 5 15 $DIALOG --title "Init Dolibarr with demo values" --clear \ --inputbox "Input dump file :" 16 55 $dumpfile 2> $fichtemp valret=$? case $valret in 0) dumpfile=`cat $fichtemp`;; 1) exit;; 255) exit;; esac rm $fichtemp # ----------------------------- database name DIALOG=${DIALOG=dialog} DIALOG="$DIALOG --ascii-lines" fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$ trap "rm -f $fichtemp" 0 1 2 5 15 $DIALOG --title "Init Dolibarr with demo values" --clear \ --inputbox "Mysql database name :" 16 55 dolibarrdemo 2> $fichtemp valret=$? case $valret in 0) base=`cat $fichtemp`;; 1) exit;; 255) exit;; esac rm $fichtemp # ---------------------------- database port DIALOG=${DIALOG=dialog} fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$ trap "rm -f $fichtemp" 0 1 2 5 15 $DIALOG --title "Init Dolibarr with demo values" --clear \ --inputbox "Mysql port (ex: 3306):" 16 55 3306 2> $fichtemp valret=$? case $valret in 0) port=`cat $fichtemp`;; 1) exit;; 255) exit;; esac rm $fichtemp # ---------------------------- compte admin mysql DIALOG=${DIALOG=dialog} fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$ trap "rm -f $fichtemp" 0 1 2 5 15 $DIALOG --title "Init Dolibarr with demo values" --clear \ --inputbox "Mysql user login (ex: root):" 16 55 root 2> $fichtemp valret=$? case $valret in 0) admin=`cat $fichtemp`;; 1) exit;; 255) exit;; esac rm $fichtemp # ---------------------------- mot de passe admin mysql DIALOG=${DIALOG=dialog} fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$ trap "rm -f $fichtemp" 0 1 2 5 15 $DIALOG --title "Init Dolibarr with demo values" --clear \ --passwordbox "Password for Mysql user login :" 16 55 2> $fichtemp valret=$? case $valret in 0) passwd=`cat $fichtemp`;; 1) exit;; 255) exit;; esac rm $fichtemp export documentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g' ` # ---------------------------- confirmation DIALOG=${DIALOG=dialog} $DIALOG --title "Init Dolibarr with demo values" --clear \ --yesno "Do you confirm ? \n Dump file : '$dumpfile' \n Dump dir : '$mydir' \n Document dir : '$documentdir' \n Mysql database : '$base' \n Mysql port : '$port' \n Mysql login: '$admin' \n Mysql password : --hidden--" 15 55 case $? in 0) echo "Ok, start process...";; 1) exit;; 255) exit;; esac fi # ---------------------------- run sql file if [ "x$passwd" != "x" ] then export passwd="-p$passwd" fi #echo "mysql -P$port -u$admin $passwd $base < $mydir/$dumpfile" #mysql -P$port -u$admin $passwd $base < $mydir/$dumpfile #echo "drop old table" echo "drop table if exists llx_accounting_account;" | mysql -P$port -u$admin $passwd $base echo "mysql -P$port -u$admin -p***** $base < $mydir/$dumpfile" mysql -P$port -u$admin $passwd $base < $mydir/$dumpfile export res=$? if [ $res -ne 0 ]; then echo "Error to load database dump with mysql -P$port -u$admin -p***** $base < $mydir/$dumpfile" exit fi $mydir/updatedemo.php confirm export res=$? # ---------------------------- copy demo files export documentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g' ` if [ "x$documentdir" != "x" ] then $DIALOG --title "Reset document directory" --clear \ --inputbox "DELETE and recreate document directory $documentdir/:" 16 55 n 2> $fichtemp valret=$? case $valret in 0) rep=`cat $fichtemp`;; 1) exit;; 255) exit;; esac echo "rep=$rep" if [ "x$rep" = "xy" ]; then echo rm -fr "$documentdir/*" rm -fr $documentdir/* fi echo cp -pr $mydir/documents_demo/* "$documentdir/" cp -pr $mydir/documents_demo/* "$documentdir/" mkdir "$documentdir/doctemplates/" 2>/dev/null echo cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/" cp -pr $mydir/../../htdocs/install/doctemplates/* "$documentdir/doctemplates/" echo cp -pr $mydir/../../htdocs/install/medias/* "$documentdir/medias/image/" cp -pr $mydir/../../htdocs/install/medias/* "$documentdir/medias/image/" mkdir -p "$documentdir/ecm/Administrative documents" 2>/dev/null mkdir -p "$documentdir/ecm/Images" 2>/dev/null rm -f "$documentdir/doctemplates/"*/index.html echo cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images" cp -pr $mydir/../../doc/images/* "$documentdir/ecm/Images" chmod -R u+w "$documentdir/" chown -R www-data "$documentdir/" else echo Detection of documents directory from $mydir failed so demo files were not copied. fi if [ -s "$mydir/initdemopostsql.sql" ]; then mysql -P$port $base < "$mydir/initdemopostsql.sql" fi if [ "x$res" = "x0" ] then echo "Success, file successfully loaded." else echo "Error, load failed." fi echo