/
init.sh
83 lines (64 loc) · 2.56 KB
/
init.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env bash
REPO_DIR=$(dirname "$0")
ENV_FILE="${REPO_DIR}/.env"
if [ ! -f $ENV_FILE ]; then
echo "ERROR: \".env\" file not detected."; exit
fi
source $ENV_FILE
echo "INFO: Environment file detected."
DOMAIN_NAME=${DOMAIN_NAME:-localhost}
HTTP_PORT=$([ ${NGINX_HTTP_PORT:-80} == 80 ] && echo "" || echo :${NGINX_HTTP_PORT})
HTTPS_PORT=$([ ${NGINX_HTTPS_PORT:-443} == 443 ] && echo "" || echo :${NGINX_HTTPS_PORT})
# Clean install
rm -rf ${REPO_DIR}/core
# HTTP by default
cp ${REPO_DIR}/config/nginx/templates/http.conf ${REPO_DIR}/config/nginx/default.conf
# Map DOMAIN_NAME to 127.0.0.1
echo "INFO: Adding \"127.0.0.1 ${DOMAIN_NAME}\" entry on /etc/hosts."
grep -qxF '127.0.0.1 '${DOMAIN_NAME} /etc/hosts || echo "127.0.0.1 ${DOMAIN_NAME}" | sudo tee -a /etc/hosts
# If NOT macOS EXIT
if [[ "$OSTYPE" != "darwin"* ]]; then
echo "INFO: WordPress installed on \"http://${DOMAIN_NAME}${HTTP_PORT}\"\nRUN > docker-compose up -d --build"
exit 0;
fi
###################################
# Some crazy magic for macOS only #
###################################
# Trusted self-signed certificates automatically
echo "INFO: macOS detected!"
DOMAIN_CERTS_DIR="${REPO_DIR}/${CERTS_DIR:-certs}/dev/${DOMAIN_NAME}"
if [ ! -d "${DOMAIN_CERTS_DIR}" ]; then
mkdir -p ${DOMAIN_CERTS_DIR}
fi
# HTTPS by default
cp ${REPO_DIR}/config/nginx/templates/https.conf ${REPO_DIR}/config/nginx/default.conf
# Generate openssl.cnf file
cat "/System/Library/OpenSSL/openssl.cnf" > ${DOMAIN_CERTS_DIR}/openssl.cnf
printf '[SAN]\nsubjectAltName=DNS:'${DOMAIN_NAME} >> ${DOMAIN_CERTS_DIR}/openssl.cnf
# Generate self-signed certificates
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout ${DOMAIN_CERTS_DIR}/privkey.pem \
-new \
-out ${DOMAIN_CERTS_DIR}/fullchain.pem \
-subj /CN=\*.${DOMAIN_NAME} \
-reqexts SAN \
-extensions SAN \
-config ${DOMAIN_CERTS_DIR}/openssl.cnf \
-sha256 \
-days 3650 \
> /dev/null 2>&1
echo "INFO: Self-signed certificates generated!"
#mv fullchain.pem ${DOMAIN_CERTS_DIR}/
#mv privkey.pem ${DOMAIN_CERTS_DIR}/
rm -f ${DOMAIN_CERTS_DIR}/openssl.cnf
# Trust self-signed certificate
echo "INFO: Adding trusted certificates to Keychain ..."
if [ $(security dump-keychain | grep "${DOMAIN_NAME}" | wc -l | awk '{print $1}') -gt 0 ]; then
sudo security delete-certificate -c ${DOMAIN_NAME}
fi
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ${DOMAIN_CERTS_DIR}/fullchain.pem
echo "INFO: WordPress installed on https://${DOMAIN_NAME}${HTTPS_PORT}\nRUN > docker-compose up -d --build"
exit 0;