initdemopassword.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #!/bin/sh
  2. #------------------------------------------------------
  3. # Script to reinit admin password.
  4. # Note: "dialog" tool need to be available if no parameter provided.
  5. #
  6. # Laurent Destailleur - eldy@users.sourceforge.net
  7. #------------------------------------------------------
  8. # Usage: initdemopassword.sh confirm
  9. # usage: initdemopassword.sh confirm base port login pass
  10. #------------------------------------------------------
  11. export mydir=`echo "$0" | sed -e 's/initdemopassword.sh//'`;
  12. if [ "x$mydir" = 'x' -o "x$mydir" = 'x./' ]
  13. then
  14. export mydir="."
  15. fi
  16. export id=`id -u`;
  17. # ----------------------------- check if root
  18. if [ "x$id" != "x0" -a "x$id" != "x1001" ]
  19. then
  20. echo "Script must be ran as root"
  21. exit
  22. fi
  23. # ----------------------------- command line params
  24. confirm=$1;
  25. base=$2;
  26. port=$3;
  27. demologin=$4;
  28. demopass=$5;
  29. demopasshash=$6;
  30. # ----------------------------- check params
  31. if [ "x$confirm" != "xconfirm" ]
  32. then
  33. echo "----- $0 -----"
  34. echo "Usage: initdemopassword.sh confirm [base port login pass password_hash_algo]"
  35. echo "password_hash_algo can be md5 or password_hash"
  36. exit
  37. fi
  38. # ----------------------------- if no params on command line
  39. if [ "x$demopass" = "x" ]
  40. then
  41. export dumpfile=`ls -v $mydir/mysqldump_dolibarr_*.sql | tail -n 1`
  42. export dumpfile=`basename $dumpfile`
  43. # ----------------------------- database name
  44. DIALOG=${DIALOG=dialog}
  45. DIALOG="$DIALOG --ascii-lines"
  46. fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$
  47. trap "rm -f $fichtemp" 0 1 2 5 15
  48. $DIALOG --title "Reset login password" --clear \
  49. --inputbox "Mysql database name :" 16 55 dolibarrdemo 2> $fichtemp
  50. valret=$?
  51. case $valret in
  52. 0)
  53. base=`cat $fichtemp`;;
  54. 1)
  55. exit;;
  56. 255)
  57. exit;;
  58. esac
  59. rm $fichtemp
  60. # ---------------------------- database port
  61. DIALOG=${DIALOG=dialog}
  62. fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$
  63. trap "rm -f $fichtemp" 0 1 2 5 15
  64. $DIALOG --title "Reset login password" --clear \
  65. --inputbox "Mysql port (ex: 3306):" 16 55 3306 2> $fichtemp
  66. valret=$?
  67. case $valret in
  68. 0)
  69. port=`cat $fichtemp`;;
  70. 1)
  71. exit;;
  72. 255)
  73. exit;;
  74. esac
  75. rm $fichtemp
  76. # ----------------------------- demo login
  77. DIALOG=${DIALOG=dialog}
  78. DIALOG="$DIALOG --ascii-lines"
  79. fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$
  80. trap "rm -f $fichtemp" 0 1 2 5 15
  81. $DIALOG --title "Reset login password" --clear \
  82. --inputbox "Login to reset :" 16 55 dolibarrdemologin 2> $fichtemp
  83. valret=$?
  84. case $valret in
  85. 0)
  86. demologin=`cat $fichtemp`;;
  87. 1)
  88. exit;;
  89. 255)
  90. exit;;
  91. esac
  92. rm fichtemp
  93. # ----------------------------- demo pass
  94. DIALOG=${DIALOG=dialog}
  95. DIALOG="$DIALOG --ascii-lines"
  96. fichtemp=`tempfile 2>/dev/null` || fichtemp=/tmp/test$$
  97. trap "rm -f $fichtemp" 0 1 2 5 15
  98. $DIALOG --title "Reset login password" --clear \
  99. --inputbox "Pass to set :" 16 55 dolibarrdemopass 2> $fichtemp
  100. valret=$?
  101. case $valret in
  102. 0)
  103. demopass=`cat $fichtemp`;;
  104. 1)
  105. exit;;
  106. 255)
  107. exit;;
  108. esac
  109. rm fichtemp
  110. 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' `
  111. # ---------------------------- confirmation
  112. DIALOG=${DIALOG=dialog}
  113. $DIALOG --title "Reset login password" --clear \
  114. --yesno "Do you confirm ? \n Mysql database : '$base' \n Mysql port : '$port' \n Demo login: '$demologin' \n Demo password : '$demopass'" 15 55
  115. case $? in
  116. 0) echo "Ok, start process...";;
  117. 1) exit;;
  118. 255) exit;;
  119. esac
  120. fi
  121. # ---------------------------- run sql file
  122. if [ "x$passwd" != "x" ]
  123. then
  124. export passwd="-p$passwd"
  125. fi
  126. #echo "mysql -P$port -u$admin $passwd $base < $mydir/$dumpfile"
  127. #mysql -P$port -u$admin $passwd $base < $mydir/$dumpfile
  128. if [ "x${demopasshash}" != "xpassword_hash" ]
  129. then
  130. echo '<?php echo MD5("$demopass"); ?>' > /tmp/tmp.php
  131. newpass=`php -f /tmp/tmp.php`
  132. rm /tmp/tmp.php
  133. else
  134. echo '<?php echo password_hash("'$demopass'", PASSWORD_DEFAULT); ?>' > /tmp/tmp.php
  135. newpass=`php -f /tmp/tmp.php`
  136. rm /tmp/tmp.php
  137. fi
  138. echo "echo \"UPDATE llx_user SET pass_crypted = '$newpass' WHERE login = '$demologin';\" | mysql -P$port $base"
  139. echo "UPDATE llx_user SET pass_crypted = '$newpass' WHERE login = '$demologin';" | mysql -P$port $base
  140. export res=$?
  141. if [ $res -ne 0 ]; then
  142. echo "Error to execute sql with mysql -P$port -u$admin -p***** $base"
  143. exit
  144. fi
  145. if [ -s "$mydir/initdemopostsql.sql" ]; then
  146. echo A file initdemopostsql.sql was found, we execute it.
  147. mysql -P$port $base < "$mydir/initdemopostsql.sql"
  148. else
  149. echo No file initdemopostsql.sql found, so no extra sql action done.
  150. fi
  151. if [ "x$res" = "x0" ]
  152. then
  153. echo "Success, file successfully loaded."
  154. else
  155. echo "Error, load failed."
  156. fi
  157. echo