cs50ide.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/usr/bin/env bash
  2. while true;do ls | grep -q dockerbunker.sh;if [[ $? == 0 ]];then BASE_DIR=$PWD;break;else cd ../;fi;done
  3. PROPER_NAME="CS50 IDE"
  4. SERVICE_NAME="$(echo -e "${PROPER_NAME,,}" | tr -d '[:space:]')"
  5. PROMPT_SSL=1
  6. safe_to_keep_volumes_when_reconfiguring=1
  7. declare -a environment=( "data/env/dockerbunker.env" "data/include/init.sh" )
  8. for env in "${environment[@]}";do
  9. [[ -f "${BASE_DIR}/$env" ]] && source "${BASE_DIR}/$env"
  10. done
  11. declare -A WEB_SERVICES
  12. declare -a containers=( "${SERVICE_NAME}-service-dockerbunker" )
  13. declare -a volumes=( "${SERVICE_NAME}-data-vol-1")
  14. declare -a add_to_network=( "${SERVICE_NAME}-service-dockerbunker" )
  15. declare -a networks=( )
  16. declare -A IMAGES=( [service]="cs50/ide50-offline" )
  17. [[ -z $1 ]] && options_menu
  18. configure() {
  19. pre_configure_routine
  20. echo -e "# \e[4mCS50 IDE Settings\e[0m"
  21. set_domain
  22. echo -e "\nCS50 IDE should not be run anywhere but locally. If you want to run it on a server that is accessible by anyone, it is recommended to protect https://${SERVICE_DOMAIN} with basic authentication.\n"
  23. prompt_confirm "Use Basic Authentication to limit access to https://${SERVICE_DOMAIN}?" choice
  24. if [[ $? == 0 ]];then
  25. BASIC_AUTH="yes"
  26. if [[ -z $HTUSER ]]; then
  27. while [[ -z ${HTUSER} ]];do
  28. read -p "Basic Auth Username: " -ei "" HTUSER
  29. done
  30. else
  31. read -p "Basic Auth Username: " -ei "${HTUSER}" HTUSER
  32. fi
  33. unset HTPASSWD
  34. while [[ "${#HTPASSWD}" -le 6 || "$HTPASSWD" != *[A-Z]* || "$HTPASSWD" != *[a-z]* || "$HTPASSWD" != *[0-9]* ]];do
  35. if [ $VALIDATE ];then
  36. echo -e "\n\e[31m Password does not meet requirements\e[0m"
  37. fi
  38. stty_orig=$(stty -g)
  39. stty -echo
  40. read -p " $(printf "\n \e[4mPassword requirements\e[0m\n Minimum Length 6, Uppercase, Lowercase, Integer\n\n Enter Password:") " -ei "" HTPASSWD
  41. stty "$stty_orig"
  42. echo ""
  43. VALIDATE=1
  44. done
  45. unset VALIDATE
  46. echo ""
  47. else
  48. AUTH_SWITCH="#"
  49. BASIC_AUTH="no"
  50. fi
  51. cat <<-EOF >> "${SERVICE_ENV}"
  52. PROPER_NAME="${PROPER_NAME}"
  53. SERVICE_NAME=${SERVICE_NAME}
  54. LE_EMAIL=${LE_EMAIL}
  55. SSL_CHOICE=${SSL_CHOICE}
  56. BASIC_AUTH=${BASIC_AUTH}
  57. AUTH_SWITCH=${AUTH_SWITCH}
  58. HTUSER=${HTUSER}
  59. HTPASSWD=${HTPASSWD}
  60. SERVICE_DOMAIN=${SERVICE_DOMAIN}
  61. EOF
  62. post_configure_routine
  63. }
  64. setup() {
  65. initial_setup_routine
  66. SUBSTITUTE=( "\${SERVICE_DOMAIN}" "\${AUTH_SWITCH}" )
  67. basic_nginx
  68. docker_run_all
  69. post_setup_routine
  70. }
  71. if [[ $1 == "letsencrypt" ]];then
  72. $1 $*
  73. else
  74. $1
  75. fi