4
0

core_dl.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/bash
  2. # LGSM core_dl.sh function
  3. # Author: Daniel Gibbs
  4. # Website: http://gameservermanagers.com
  5. lgsm_version="050216"
  6. # Description: Deals with all downloads for LGSM.
  7. # Downloads can be defined in code like so
  8. # fn_dl "dl_filename" "dl_filepath" "dl_url" "dl_md5"
  9. # fn_dl "file.tar.bz2" "/home/gameserver" "http://example.com/file.tar/bz2" "10cd7353aa9d758a075c600a6dd193fd"
  10. fn_dl_md5(){
  11. # Runs MD5 Check if available
  12. if [ -n "${dl_md5}" ]; then
  13. echo -ne "verifying ${dl_filename} with MD5...\c"
  14. local md5check=$(md5sum "${dl_filepath}/${dl_filename}"|awk '{print $1;}')
  15. if [ "${md5check}" != "${dl_md5}" ]; then
  16. fn_printfaileol
  17. echo "${dl_filename} MD5 checksum: ${md5check}"
  18. echo -e "expected MD5 checksum: ${dl_md5}"
  19. while true; do
  20. read -e -i "y" -p "Retry download? [Y/n]" yn
  21. case $yn in
  22. [Yy]* ) retry_dl=1; fn_dl;;
  23. [Nn]* ) echo Exiting; exit 1;;
  24. * ) echo "Please answer yes or no.";;
  25. esac
  26. done
  27. else
  28. fn_printokeol
  29. fi
  30. fi
  31. }
  32. fn_dl(){
  33. # defines variables from other script file
  34. dl_filename=$1
  35. dl_filepath=$2
  36. dl_url=$3
  37. dl_md5=$4
  38. if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then
  39. echo -e "downloading ${dl_filename}..."
  40. dl=$(curl --progress-bar --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}")
  41. exitcode=$?
  42. echo -ne "downloading ${dl_filename}...\c"
  43. if [ ${exitcode} -ne 0 ]; then
  44. fn_printfaileol
  45. echo -e "${dl_url}\n"
  46. exit ${exitcode}
  47. else
  48. fn_printokeol
  49. fi
  50. else
  51. echo -ne "${dl_filename} already exists...\c"
  52. fn_dl_md5
  53. while true; do
  54. read -e -i "n" -p "Download again? [y/N]" yn
  55. case $yn in
  56. [Yy]* ) fn_dl; retry_dl=1;;
  57. [Nn]* ) break;;
  58. * ) echo "Please answer yes or no.";;
  59. esac
  60. done
  61. fi
  62. fn_dl_md5
  63. }