iopsys-feed/userinterface/files/backend/nginx/95-migrate-nginx-userinterface
2024-04-20 13:03:43 +05:30

116 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
. /lib/functions.sh
DEBUG=0
get_options() {
local name sec options tmp
name="$1"
sec="$2"
tmp="$name.$sec"
options=$(uci -X show ${tmp}|grep "${tmp}\."|sed "s/${tmp}\.//g"|sed "s/=.*$//g"|sort|uniq)
echo ${options}
}
parse_nginx_server() {
port=""
allow_host=""
protocol="HTTP"
# Check if section is already present in userinterface uci
sec=$(uci -q get userinterface."${1}")
if [ -n "${sec}" ]; then
# Section already present
return 0
fi
# Create a new http_access section
uci -q set userinterface."${1}"="http_access"
uci -q set userinterface."${1}".protocol="HTTP"
for option in $(get_options nginx ${1});
do
case ${option} in
uci_enable)
config_get_bool tmp "${1}" "${option}" 1
uci_set nginx ${1} ${option}
uci -q set userinterface."${1}".enable=$tmp
;;
uci_access)
config_get tmp "${1}" "${option}"
uci_set nginx ${1} ${option}
uci -q set userinterface."${1}".access=$tmp
;;
uci_interface)
config_get tmp "${1}" "${option}"
uci_set nginx ${1} ${option}
uci -q set userinterface."${1}".interface=$tmp
;;
listen)
config_get tmp "${1}" "${option}"
port="$(echo ${tmp}|grep -o '[[:digit:]]*'|head -n 1)"
uci -q set userinterface."${1}".port=$port
;;
ssl_certificate)
uci_set userinterface "${1}" protocol "HTTPS"
if [ "${DEBUG}" -eq 1 ]; then
config_get tmp "${1}" "${option}"
uci_set userinterface "${1}" "_nginx_${option}" "$tmp"
fi
;;
root)
config_get tmp "${1}" "${option}"
uci -q set userinterface."${1}".path_prefix=$tmp
;;
include)
allow_host=""
config_get tmp "${1}" "${option}"
for i in $tmp; do
if [[ "${i}" == allow_host_* ]]; then
allow_host=$(cat /etc/nginx/${i} | grep allow | cut -d' ' -f 2 | cut -d';' -f 1)
break
else
if [ "${DEBUG}" -eq 1 ]; then
uci_add_list userinterface "${1}" "_nginx_${option}" "$tmp"
fi
fi
done
for i in $allow_host; do
uci_add_list userinterface "${1}" "allow_host" "${i}"
done
;;
server_name|access_log|error_log)
;;
*)
if [ "${DEBUG}" -eq 1 ]; then
config_get tmp "${1}" "${option}"
uci_set userinterface "${1}" "_nginx_${option}" "$tmp"
fi
;;
esac
done
}
migrate_global_config() {
local en
config_get_bool en global uci_enable ""
if [ -n "${en}" ]; then
uci_set userinterface "global" "enable" "${en}"
else
uci_set userinterface "global" "enable" "1"
fi
}
migrate_uci_userinterface() {
migrate_global_config
config_load nginx
config_foreach parse_nginx_server server
}
migrate_uci_userinterface