63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"
|
||
APP_DATA_DIR="${APP_DIR}/data"
|
||
|
||
NGINX_CONFIG_DIR="${APP_DATA_DIR}/nginx"
|
||
NGINX_CONFIG_FILE="${NGINX_CONFIG_DIR}/default.conf"
|
||
MOSQUITTO_CONFIG_FILE="${APP_DATA_DIR}/config/mosquitto.conf"
|
||
|
||
NGINX_MARKER_REGEX='^# DFWebOS Mosquitto canonical nginx.conf 17-Mar-2026$'
|
||
LEGACY_HTTP_DIR_LINE='http_dir /mosquitto/www'
|
||
|
||
mkdir -p "${NGINX_CONFIG_DIR}"
|
||
|
||
if [[ ! -f "${NGINX_CONFIG_FILE}" ]] || ! grep -qx "${NGINX_MARKER_REGEX}" "${NGINX_CONFIG_FILE}"; then
|
||
echo "Updating nginx configuration file for Mosquitto."
|
||
cat >"${NGINX_CONFIG_FILE}" <<'EOF'
|
||
# Зонт Mosquitto канонический nginx.conf 17 марта 2026 г.
|
||
map $http_upgrade $connection_upgrade {
|
||
default upgrade;
|
||
'' close;
|
||
}
|
||
|
||
map $http_upgrade $upgrade_request {
|
||
default 1;
|
||
'' 0;
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
server_name _;
|
||
root /usr/share/nginx/html;
|
||
index index.html;
|
||
|
||
location / {
|
||
error_page 418 = @websocket;
|
||
|
||
if ($upgrade_request = 1) {
|
||
return 418;
|
||
}
|
||
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
|
||
location @websocket {
|
||
proxy_pass http://broker:9001;
|
||
proxy_http_version 1.1;
|
||
proxy_read_timeout 1d;
|
||
proxy_send_timeout 1d;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
}
|
||
}
|
||
EOF
|
||
fi
|
||
|
||
if [[ -f "${MOSQUITTO_CONFIG_FILE}" ]] && grep -qxF "${LEGACY_HTTP_DIR_LINE}" "${MOSQUITTO_CONFIG_FILE}"; then
|
||
echo "Removing legacy http_dir configuration from mosquitto.conf."
|
||
sed -i '\|^http_dir /mosquitto/www$|d' "${MOSQUITTO_CONFIG_FILE}"
|
||
fi
|