|
|
#!/usr/bin/env bash |
|
|
set -Eeuo pipefail |
|
|
|
|
|
: "${VNC_PORT:="5900"}" |
|
|
: "${MON_PORT:="7100"}" |
|
|
: "${WEB_PORT:="8006"}" |
|
|
: "${WSD_PORT:="8004"}" |
|
|
: "${WSS_PORT:="5700"}" |
|
|
|
|
|
if (( VNC_PORT < 5900 )); then |
|
|
warn "VNC port cannot be set lower than 5900, ignoring value $VNC_PORT." |
|
|
VNC_PORT="5900" |
|
|
fi |
|
|
|
|
|
cp -r /var/www/* /run/shm |
|
|
rm -f /var/run/websocketd.pid |
|
|
|
|
|
html "Starting $APP for $ENGINE..." |
|
|
|
|
|
if [[ "${WEB:-}" != [Nn]* ]]; then |
|
|
|
|
|
mkdir -p /etc/nginx/sites-enabled |
|
|
cp /etc/nginx/default.conf /etc/nginx/sites-enabled/web.conf |
|
|
|
|
|
user="admin" |
|
|
[ -n "${USER:-}" ] && user="${USER:-}" |
|
|
|
|
|
if [ -n "${PASS:-}" ]; then |
|
|
|
|
|
|
|
|
echo "$user:{PLAIN}${PASS:-}" > /etc/nginx/.htpasswd |
|
|
|
|
|
sed -i "s/auth_basic off/auth_basic \"NoVNC\"/g" /etc/nginx/sites-enabled/web.conf |
|
|
|
|
|
fi |
|
|
|
|
|
sed -i "s/listen 8006 default_server;/listen $WEB_PORT default_server;/g" /etc/nginx/sites-enabled/web.conf |
|
|
sed -i "s/proxy_pass http:\/\/127.0.0.1:5700\/;/proxy_pass http:\/\/127.0.0.1:$WSS_PORT\/;/g" /etc/nginx/sites-enabled/web.conf |
|
|
sed -i "s/proxy_pass http:\/\/127.0.0.1:8004\/;/proxy_pass http:\/\/127.0.0.1:$WSD_PORT\/;/g" /etc/nginx/sites-enabled/web.conf |
|
|
|
|
|
|
|
|
if [ -f /proc/net/if_inet6 ] && [ -n "$(ifconfig -a | grep inet6)" ]; then |
|
|
|
|
|
sed -i "s/listen $WEB_PORT default_server;/listen [::]:$WEB_PORT default_server ipv6only=off;/g" /etc/nginx/sites-enabled/web.conf |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mkdir -p /run /run/shm |
|
|
CONF_PID=$(sed -n 's/^[[:space:]]*pid[[:space:]]\+\([^;]*\);.*/\1/p' /etc/nginx/nginx.conf 2>/dev/null | tr -d '"' | head -n1 || true) |
|
|
|
|
|
if [ -n "$CONF_PID" ]; then |
|
|
PID_FILE="$CONF_PID" |
|
|
mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true |
|
|
touch "$PID_FILE" 2>/dev/null || true |
|
|
if [ -w "$PID_FILE" ] 2>/dev/null; then |
|
|
info "Starting nginx (using pid from config): $PID_FILE" |
|
|
nginx -e stderr |
|
|
else |
|
|
|
|
|
PID_FILE="/run/shm/nginx.pid" |
|
|
mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true |
|
|
touch "$PID_FILE" 2>/dev/null || true |
|
|
info "Config pid $CONF_PID not writable, starting nginx with fallback pid: $PID_FILE" |
|
|
nginx -g "pid $PID_FILE;" -e stderr |
|
|
fi |
|
|
else |
|
|
|
|
|
PID_FILE="/run/nginx.pid" |
|
|
if ! touch "$PID_FILE" 2>/dev/null || [ ! -w "$PID_FILE" ] 2>/dev/null; then |
|
|
PID_FILE="/run/shm/nginx.pid" |
|
|
mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true |
|
|
touch "$PID_FILE" 2>/dev/null || true |
|
|
fi |
|
|
info "Starting nginx with pid file: $PID_FILE" |
|
|
nginx -g "pid $PID_FILE;" -e stderr |
|
|
fi |
|
|
|
|
|
|
|
|
mkdir -p /run/shm |
|
|
websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/run/shm/websocketd.log 2>&1 & |
|
|
echo "$!" > /run/websocketd.pid |
|
|
|
|
|
fi |
|
|
|
|
|
return 0 |
|
|
|