nginx: fix problem with migration of uci conf template
authorChristian Marangi <ansuelsmth@gmail.com>
Sun, 11 Jun 2023 02:29:54 +0000 (04:29 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Sun, 11 Jun 2023 02:36:12 +0000 (04:36 +0200)
Fix some problem with migration of uci conf template and include of
module.d directive.

Fix 2 case:
- uci.conf.template not versioned but with the include module.d
  resulting in double include module.d

- uci.conf.template version 1.1 with the include module.d at the end
  of the config. This is problematic for nginx as modules must be
  included before any http directive.

Handle this 2 case to restore a working uci.conf.template configuration
on migrated config.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
net/nginx/Makefile
net/nginx/files/nginx.init

index 061d82346ee9d60c83a00486830d220648b717f0..162c1956545d57ef83704c3d1d70fcc1445f422c 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nginx
 PKG_VERSION:=1.24.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://nginx.org/download/
index 9e3ed0a7ac25c353cddf644bee8578c00357e581..c84e0496cfbe1a8c428476d9781f4e88e162db6b 100644 (file)
@@ -9,7 +9,7 @@ G_OPTS="daemon off;"
 
 NGINX_UTIL="/usr/bin/nginx-util"
 UCI_CONF_TEMPLATE="/etc/nginx/uci.conf.template"
-LATEST_UCI_CONF_VERSION="1.1"
+LATEST_UCI_CONF_VERSION="1.2"
 
 eval $("${NGINX_UTIL}" get_env)
 
@@ -23,10 +23,25 @@ nginx_check_luci_template() {
                return
        fi
 
+       # Fix wrong entry for the module.d include
+       if [ "$UCI_CONF_VERSION" = "1.1" ]; then
+               # Remove any entry
+               sed -i '/^include module\.d\/\*\.module;/d' $UCI_CONF_TEMPLATE
+               # Put the include before events {}
+               sed -i 's/events {/include module.d\/*.module;\n\nevents {/' $UCI_CONF_TEMPLATE
+       fi
+
+       if [ "$UCI_CONF_VERSION" != "$LATEST_UCI_CONF_VERSION" ]; then
+               sed -i "s/# UCI_CONF_VERSION=.*/# UCI_CONF_VERSION=$LATEST_UCI_CONF_VERSION/" $UCI_CONF_TEMPLATE
+       fi
+
        if [ -z "$UCI_CONF_VERSION" ]; then
+               # Handle funny case with template with the include module but no version
+               if ! grep -q -e '^include module\.d/\*\.module;$' $UCI_CONF_TEMPLATE; then
+                       sed -i 's/events {/include module.d\/*.module;\n\nevents {/' $UCI_CONF_TEMPLATE
+               fi
                echo "" >> $UCI_CONF_TEMPLATE
-               echo "include module.d/*.module;" >> $UCI_CONF_TEMPLATE
-               echo "# UCI_CONF_VERSION=1.1" >> $UCI_CONF_TEMPLATE
+               echo "# UCI_CONF_VERSION=1.2"  >> $UCI_CONF_TEMPLATE
        fi
 }