initdemopassword.sh 4.8 KB

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