jsonserver.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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="json-server"
  4. SERVICE_NAME="$(echo -e "${PROPER_NAME,,}" | tr -cd '[:alnum:]')"
  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 add_to_network=( "${SERVICE_NAME}-service-dockerbunker" )
  14. declare -A IMAGES=( [service]="clue/json-server" )
  15. declare -A volumes=( [${SERVICE_NAME}-data-vol-1]="/data" )
  16. declare -a networks=( )
  17. [[ -z $1 ]] && options_menu
  18. configure() {
  19. pre_configure_routine
  20. echo -e "# \e[4mjson-server Settings\e[0m"
  21. [[ ! -d "${CONF_DIR}"/jsonserver ]] && \
  22. mkdir -p "${CONF_DIR}"/jsonserver
  23. [[ ! -f "${CONF_DIR}"/jsonserver/db.json ]] \
  24. && echo -e "\nCannot find db.json in \e[3mdata/conf/jsonserver/db.json\e[0m\n" \
  25. && exit 1
  26. set_domain
  27. prompt_confirm "Set Authentication Request Header?"
  28. if [ $? == 0 ]; then
  29. MIDDLEWARE="--middlewares auth.js"
  30. read -p "Authorization Request Header [key]: " -ei "X-Authorize" AUTH_REQ_HEADER_KEY
  31. read -p "Authorization Request Header [value]: " -ei "I Like Turtles" AUTH_REQ_HEADER_VALUE
  32. fi
  33. SUBSTITUTE=( "\${AUTH_REQ_HEADER_KEY}" "\${AUTH_REQ_HEADER_VALUE}" )
  34. [[ -f "${CONF_DIR}"/jsonserver/auth.js ]] \
  35. && rm "${SERVICES_DIR}"/${SERVICE_NAME}/jsonserver/auth.js
  36. cp "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js.tmpl "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js
  37. for variable in "${SUBSTITUTE[@]}";do
  38. subst="\\${variable}"
  39. variable=`eval echo "$variable"`
  40. sed -i "s@${subst}@${variable}@g;" \
  41. "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js
  42. done
  43. [[ -f "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js ]] \
  44. && mv "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js "${CONF_DIR}"/jsonserver
  45. cat <<-EOF >> "${SERVICE_ENV}"
  46. PROPER_NAME="${PROPER_NAME}"
  47. SERVICE_NAME=${SERVICE_NAME}
  48. SSL_CHOICE=${SSL_CHOICE}
  49. LE_EMAIL=${LE_EMAIL}
  50. MIDDLEWARE="${MIDDLEWARE}"
  51. AUTH_REQ_HEADER_KEY="${AUTH_REQ_HEADER_KEY}"
  52. AUTH_REQ_HEADER_VALUE="${AUTH_REQ_HEADER_VALUE}"
  53. SERVICE_DOMAIN=${SERVICE_DOMAIN}
  54. EOF
  55. post_configure_routine
  56. }
  57. setup() {
  58. initial_setup_routine
  59. basic_nginx
  60. docker_run_all
  61. post_setup_routine
  62. echo -e "\njson-server can be reached at https://${SERVICE_DOMAIN}/v1"
  63. }
  64. if [[ $1 == "letsencrypt" ]];then
  65. $1 $*
  66. else
  67. $1
  68. fi