Files
DFWebOS-Apps/mosquitto/hooks/pre-start

63 lines
1.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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