123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #!/usr/bin/env bash
- while true;do ls | grep -q dockerbunker.sh;if [[ $? == 0 ]];then BASE_DIR=$PWD;break;else cd ../;fi;done
- PROPER_NAME="json-server"
- SERVICE_NAME="$(echo -e "${PROPER_NAME,,}" | tr -cd '[:alnum:]')"
- PROMPT_SSL=1
- safe_to_keep_volumes_when_reconfiguring=1
- declare -a environment=( "data/env/dockerbunker.env" "data/include/init.sh" )
- for env in "${environment[@]}";do
- [[ -f "${BASE_DIR}"/$env ]] && source "${BASE_DIR}"/$env
- done
- declare -A WEB_SERVICES
- declare -a containers=( "${SERVICE_NAME}-service-dockerbunker" )
- declare -a add_to_network=( "${SERVICE_NAME}-service-dockerbunker" )
- declare -A IMAGES=( [service]="chaosbunker/json-server" )
- declare -A volumes=( [${SERVICE_NAME}-data-vol-1]="/json-server" )
- declare -a networks=( )
- [[ -z $1 ]] && options_menu
- configure() {
- pre_configure_routine
-
- echo -e "# \e[4mjson-server Settings\e[0m"
- [[ ! -d "${CONF_DIR}"/jsonserver ]] && \
- mkdir -p "${CONF_DIR}"/jsonserver
- [[ ! -f "${CONF_DIR}"/jsonserver/db.json ]] \
- && echo -e "\nCannot find db.json in \e[3mdata/conf/jsonserver/db.json\e[0m\n" \
- && exit 1
- set_domain
-
- prompt_confirm "Restrict GET requests?"
- if [ $? == 0 ]; then
- read -p "Header [key]: " -ei "X-Authorize" GET_REQ_HEADER_KEY
- read -p "Header [value]: " -ei "I Like Turtles" GET_REQ_HEADER_VALUE
- fi
-
- prompt_confirm "Restrict all other request methods with secondary header?"
- if [ $? == 0 ]; then
- read -p "Header [key]: " -ei "X-Modify" MODIFY_REQ_HEADER_KEY
- read -p "Header [value]: " -ei "I Really Like Turtles" MODIFY_REQ_HEADER_VALUE
- fi
- prompt_confirm "Set database id property? [default: id]"
- if [ $? == 0 ]; then
- read -p ": " DB_ID_PROPERTY
- ID=${ID}" --id ${DB_ID_PROPERTY}"
- fi
- prompt_confirm "Set custom routes?"
- if [ $? == 0 ]; then
- cp "${SERVICES_DIR}"/${SERVICE_NAME}/routes.json "${CONF_DIR}"/${SERVICE_NAME}
- echo -e "\nYou can modify your routes.json in ${CONF_DIR}/${SERVICE_NAME}/\n"
- fi
- SUBSTITUTE=( "\${MODIFY_REQ_HEADER_KEY}" "\${MODIFY_REQ_HEADER_VALUE}" "\${GET_REQ_HEADER_KEY}" "\${GET_REQ_HEADER_VALUE}" )
-
- [[ -f "${CONF_DIR}"/jsonserver/auth.js ]] \
- && rm "${SERVICES_DIR}"/${SERVICE_NAME}/jsonserver/auth.js
-
- cp "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js.tmpl "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js
- for variable in "${SUBSTITUTE[@]}";do
- subst="\\${variable}"
- variable=`eval echo "$variable"`
- sed -i "s@${subst}@${variable}@g;" \
- "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js
- done
-
- [[ -f "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js ]] \
- && mv "${SERVICES_DIR}"/${SERVICE_NAME}/auth.js "${CONF_DIR}"/${SERVICE_NAME}
-
- prompt_confirm "Remove default index.html?"
- if [ $? == 0 ]; then
- mkdir -p ${CONF_DIR}/jsonserver/public
- cp "${SERVICES_DIR}"/${SERVICE_NAME}/index.html "${CONF_DIR}"/${SERVICE_NAME}/public
- echo -e "\nPlace your index.html in ${CONF_DIR}/${SERVICE_NAME}/\n"
- fi
-
- cat <<-EOF >> "${SERVICE_ENV}"
- PROPER_NAME="${PROPER_NAME}"
- SERVICE_NAME=${SERVICE_NAME}
- SSL_CHOICE=${SSL_CHOICE}
- LE_EMAIL=${LE_EMAIL}
- ID="${ID}"
- GET_REQ_HEADER_KEY="${GET_REQ_HEADER_KEY}"
- GET_REQ_HEADER_VALUE="${GET_REQ_HEADER_VALUE}"
- MODIFY_REQ_HEADER_KEY="${MODIFY_REQ_HEADER_KEY}"
- MODIFY_REQ_HEADER_VALUE="${MODIFY_REQ_HEADER_VALUE}"
- SERVICE_DOMAIN=${SERVICE_DOMAIN}
- EOF
- post_configure_routine
- }
- setup() {
- initial_setup_routine
- SUBSTITUTE=( "\${SERVICE_DOMAIN}" )
- basic_nginx
-
- docker_run_all
- post_setup_routine
-
- echo -e "\njson-server can be reached at https://${SERVICE_DOMAIN}/v1"
- }
- if [[ $1 == "letsencrypt" ]];then
- $1 $*
- else
- $1
- fi
|