diff --git a/src/server.sh b/src/server.sh index a1f528e..fb1225b 100644 --- a/src/server.sh +++ b/src/server.sh @@ -16,13 +16,15 @@ WEB_PID="/run/nginx.pid" WSD_PID="$QEMU_DIR/websocketd.pid" prepareWebFiles() { - cp -r /var/www/* "$QEMU_DIR" - rm -f "$WSD_PID" "$WEB_PID" + + cp -r /var/www/* "$QEMU_DIR" || return 1 + rm -f "$WSD_PID" "$WEB_PID" || return 1 return 0 } configureWebPorts() { + sed -i "s/listen 5000 default_server;/listen $WEB_PORT default_server;/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 @@ -32,7 +34,7 @@ configureWebPorts() { configureIpv6Listen() { # shellcheck disable=SC2143 - if [ -f /proc/net/if_inet6 ] && [[ "$(cat /proc/sys/net/ipv6/conf/all/disable_ipv6 2>/dev/null)" != "1" ]] && [ -n "$(ifconfig -a | grep inet6)" ]; then + if [ -f /proc/net/if_inet6 ] && [[ "$(cat /proc/sys/net/ipv6/conf/all/disable_ipv6 2>/dev/null)" != "1" ]]; then sed -i "s/listen $WEB_PORT default_server;/listen [::]:$WEB_PORT default_server ipv6only=off;/g" /etc/nginx/sites-enabled/web.conf fi @@ -44,8 +46,8 @@ configureWebServer() { mkdir -p /etc/nginx/sites-enabled cp /etc/nginx/default.conf /etc/nginx/sites-enabled/web.conf - configureWebPorts - configureIpv6Listen + configureWebPorts || return 1 + configureIpv6Listen || return 1 return 0 } @@ -53,24 +55,46 @@ configureWebServer() { startWebServer() { # Start webserver - nginx -e stderr + nginx -e stderr || return 1 + + return 0 } startWebsocketServer() { + local log="/var/log/websocketd.log" + rm -f "$log" + # Start websocket server - websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/var/log/websocketd.log & - echo "$!" > "$WSD_PID" + websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh > "$log" 2>&1 & + local pid=$! + + if ! echo "$pid" > "$WSD_PID"; then + kill "$pid" 2>/dev/null || : + return 1 + fi + + sleep 0.1 + + if ! isAlive "$pid"; then + rm -f "$WSD_PID" + [ -s "$log" ] && cat "$log" >&2 + error "Failed to start websocket server!" + return 1 + fi + + return 0 } -prepareWebFiles +prepareWebFiles || return 1 html "Starting $APP for $ENGINE..." -if ! disabled "${WEB:-}"; then - configureWebServer - startWebServer - startWebsocketServer -fi +disabled "${WEB:-}" && return 0 + +configureWebServer || return 1 + +startWebServer || return 1 +startWebsocketServer || return 1 return 0