nginx: introduce migration for old uci conf template

Introduce support for migration of old uci conf template to new version.
Uci conf template are saved in config backup. This cause problem on config
restore as old config template might have compatibility problem with new
nginx implementation.

Add logic to migrate the template script at runtime to correctly align
to latest change from nginx and nginx-util.

Fixes: 65a676ed56 ("nginx: introduce support for dynamic modules")
Fixes: #20904
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
Christian Marangi 2023-05-04 01:47:07 +02:00
parent e499f0adf1
commit 6a3cc76ea5
No known key found for this signature in database
GPG key ID: AC001D09ADBFEAD7

View file

@ -8,11 +8,27 @@ USE_PROCD=1
G_OPTS="daemon off;"
NGINX_UTIL="/usr/bin/nginx-util"
UCI_CONF_TEMPLATE="/etc/nginx/uci.conf.template"
LATEST_UCI_CONF_VERSION="1.1"
eval $("${NGINX_UTIL}" get_env)
CONF=""
nginx_check_luci_template() {
UCI_CONF_VERSION="$(sed -nr 's/# UCI_CONF_VERSION=(.*)/\1/p' $UCI_CONF_TEMPLATE)"
# No need to migrate already latest version
if [ "$UCI_CONF_VERSION" = "$LATEST_UCI_CONF_VERSION" ]; then
return
fi
if [ -z "$UCI_CONF_VERSION" ]; then
echo "" >> $UCI_CONF_TEMPLATE
echo "include module.d/*.module;" >> $UCI_CONF_TEMPLATE
echo "# UCI_CONF_VERSION=1.1" >> $UCI_CONF_TEMPLATE
fi
}
nginx_init() {
[ -z "${CONF}" ] || return # already called.
@ -23,6 +39,10 @@ nginx_init() {
rm -f "$(readlink "${UCI_CONF}")"
${NGINX_UTIL} init_lan
if [ -f $UCI_CONF_TEMPLATE ]; then
nginx_check_luci_template
fi
if [ -e "${UCI_CONF}" ]
then CONF="${UCI_CONF}"
else CONF="${NGINX_CONF}"