diff --git a/sulu/sulu-builder/Makefile b/sulu/sulu-builder/Makefile index 2e513f88f..90f002de4 100644 --- a/sulu/sulu-builder/Makefile +++ b/sulu/sulu-builder/Makefile @@ -98,8 +98,12 @@ define Package/sulu/install/Default $(INSTALL_DIR) $(1)/sulu/ $(INSTALL_DIR) $(1)/etc/sulu + $(INSTALL_DATA) ./files/maintenance.html $(1)/sulu/ + $(LN) /tmp/sulu $(1)/sulu/connection + $(INSTALL_BIN) ./files/etc/sulu/sulu.sh $(1)/etc/sulu/ $(INSTALL_DATA) ./files/etc/sulu/nginx.locations $(1)/etc/sulu/ + $(INSTALL_BIN) ./files/etc/sulu/sulu_watcher.sh $(1)/etc/sulu/ $(INSTALL_DIR) $(1)/etc/users/roles $(INSTALL_DATA) ./files/etc/users/roles/*.json $(1)/etc/users/roles/ @@ -109,6 +113,8 @@ define Package/sulu/install/Default ifneq ($(CONFIG_SULU_DEFAULT_UI)$(CONFIG_SULU_BUILDER_DEFAULT_UI),) $(INSTALL_DATA) ./files/etc/uci-defaults/41-make-sulu-default-ui $(1)/etc/uci-defaults/ endif + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/etc/init.d/sulu $(1)/etc/init.d/ endef define Package/sulu/install/Post diff --git a/sulu/sulu-builder/files/etc/init.d/sulu b/sulu/sulu-builder/files/etc/init.d/sulu new file mode 100644 index 000000000..e1fa47ff0 --- /dev/null +++ b/sulu/sulu-builder/files/etc/init.d/sulu @@ -0,0 +1,15 @@ +#!/bin/sh /etc/rc.common + +START=9 +STOP=01 + +USE_PROCD=1 + +PROG=/etc/sulu/sulu_watcher.sh + +start_service() +{ + procd_open_instance "sulu" + procd_set_param command ${PROG} + procd_close_instance "sulu" +} diff --git a/sulu/sulu-builder/files/etc/sulu/nginx.locations b/sulu/sulu-builder/files/etc/sulu/nginx.locations index af48faf69..4b5452cd7 100644 --- a/sulu/sulu-builder/files/etc/sulu/nginx.locations +++ b/sulu/sulu-builder/files/etc/sulu/nginx.locations @@ -8,6 +8,10 @@ location /sitemap.xml { return 200 "User-agent: *\nDisallow: /\n"; } +location /maintenance.html { + internal; +} + location /wss { proxy_pass_request_headers on; proxy_cache off; @@ -46,7 +50,10 @@ location / { add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,Content-Type,Range' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; } - add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; - add_header Pragma 'no-cache'; + + if (!-f $document_root/connection/ready) { + return 503; + } + expires 0; } diff --git a/sulu/sulu-builder/files/etc/sulu/sulu_watcher.sh b/sulu/sulu-builder/files/etc/sulu/sulu_watcher.sh new file mode 100644 index 000000000..7152a6785 --- /dev/null +++ b/sulu/sulu-builder/files/etc/sulu/sulu_watcher.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +if ! command -v obuspa >/dev/null 2>&1; then + exit 0 +fi + +USP_PATH="/tmp/sulu/" + +log() { + logger -t sulu_watcher "$*" +} + +wait_for_obuspa() { + while true; do + ENDPOINTID="$(obuspa -c get Device.LocalAgent.EndpointID |grep Device.|awk '{print $3}')" + sleep 2 + if [ -n "${ENDPOINTID}" ]; then + break; + fi + done +} + +mark_usp_ready() { + mkdir -p "${USP_PATH}" + touch ${USP_PATH}/ready +} + +wait_for_obuspa +mark_usp_ready diff --git a/sulu/sulu-builder/files/etc/uci-defaults/40-add-sulu-config b/sulu/sulu-builder/files/etc/uci-defaults/40-add-sulu-config index 5ede27fc9..641e6ca93 100644 --- a/sulu/sulu-builder/files/etc/uci-defaults/40-add-sulu-config +++ b/sulu/sulu-builder/files/etc/uci-defaults/40-add-sulu-config @@ -51,6 +51,7 @@ add_sulu_userinterface_uci() uci_set userinterface _sulu_s _nginx_ssl_certificate '/etc/nginx/conf.d/_lan.crt' uci_set userinterface _sulu_s _nginx_ssl_certificate_key '/etc/nginx/conf.d/_lan.key' uci_set userinterface _sulu_s _nginx_ssl_session_cache 'none' + uci_set userinterface _sulu_s _nginx_error_page '503 /maintenance.html' uci_set userinterface _sulu_s protocol 'HTTPS' uci_add_list userinterface _sulu_s role 'admin' uci_add_list userinterface _sulu_s role 'user' diff --git a/sulu/sulu-builder/files/maintenance.html b/sulu/sulu-builder/files/maintenance.html new file mode 100644 index 000000000..0463d0cc8 --- /dev/null +++ b/sulu/sulu-builder/files/maintenance.html @@ -0,0 +1,17 @@ + + + + + Service Unavailable + + + + + +

503 Service Unavailable

+

Sulu backend not ready yet

+

We apologize for the inconvenience and appreciate your patience.

+
+

Please refresh the page to check again.

+ +