initial commit
This commit is contained in:
143
image-entry.d/74-combine-tree.sh
Executable file
143
image-entry.d/74-combine-tree.sh
Executable file
@@ -0,0 +1,143 @@
|
||||
#!/bin/sh
|
||||
set -f
|
||||
|
||||
. /run/ngx/iep/00-common.envsh
|
||||
|
||||
[ "${NGX_STRICT_LOAD}" = 0 ] || set -e
|
||||
|
||||
load_error_delim() {
|
||||
IEP_DEBUG=0 log_always ' ----------------------------------- '
|
||||
}
|
||||
unset load_error_seen
|
||||
load_error() {
|
||||
[ "${load_error_seen:-}" != 1 ] || return
|
||||
load_error_seen=1
|
||||
load_error_delim
|
||||
log_always 'tree combine has failed'
|
||||
if [ "${NGX_STRICT_LOAD}" = 1 ] ; then
|
||||
t=15
|
||||
log_always "injecting delay for $t seconds"
|
||||
load_error_delim
|
||||
sleep $t
|
||||
exit 1
|
||||
fi
|
||||
load_error_delim
|
||||
}
|
||||
|
||||
install -d "${volume_root}/conf.load"
|
||||
|
||||
## Angie modules are loaded in [strict] order!
|
||||
combine_modules() {
|
||||
[ -n "$1" ] || return 1
|
||||
local n
|
||||
n="$1" ; shift
|
||||
|
||||
[ $# -ne 0 ] || return 0
|
||||
|
||||
local i m src_dir dst_dir src_name dst_name src_path dst_path dst_dir
|
||||
src_dir="${target_root}/mod"
|
||||
dst_dir="${volume_root}/conf.load"
|
||||
|
||||
i=0
|
||||
for m ; do
|
||||
[ -n "$m" ] || continue
|
||||
|
||||
case "$m" in
|
||||
/* | */../* | *\** | *\?* )
|
||||
log_always "module config filename '$m' is not legal, skipping"
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$m" in
|
||||
*/* ) src_name="$m.conf" ;;
|
||||
* ) src_name="$n-$m.conf" ;;
|
||||
esac
|
||||
dst_name=$(printf 'mod-%s-%02d-%s.conf' "$n" "$i" "$m" | tr -s '/_' '_')
|
||||
|
||||
src_path="${src_dir}/${src_name}"
|
||||
if ! [ -f "${src_path}" ] ; then
|
||||
log_always "file ${src_name} is not found in ${src_dir}/"
|
||||
load_error
|
||||
log "file ${src_name} is skipped"
|
||||
continue
|
||||
fi
|
||||
|
||||
dst_path="${dst_dir}/${dst_name}"
|
||||
|
||||
ln_cp "${src_path}" "${dst_path}"
|
||||
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
combine_confload() {
|
||||
[ -n "$1" ] || return 1
|
||||
local n
|
||||
n="$1" ; shift
|
||||
|
||||
[ $# -ne 0 ] || return 0
|
||||
|
||||
local s src_dir dst_dir src_name dst_name src_path dst_path
|
||||
src_dir="${target_root}/conf"
|
||||
dst_dir="${volume_root}/conf.load"
|
||||
|
||||
for s ; do
|
||||
[ -n "$s" ] || continue
|
||||
|
||||
case "$s" in
|
||||
/* | */../* | *\** | *\?* )
|
||||
log_always "config filename '$s' is not legal, skipping"
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$s" in
|
||||
*/* ) src_name="$s.conf" ;;
|
||||
* ) src_name="$n-$s.conf" ;;
|
||||
esac
|
||||
dst_name=$(printf '%s-%s.conf' "$n" "$s" | tr -s '/_' '_')
|
||||
|
||||
dst_path="${dst_dir}/${dst_name}"
|
||||
if [ -e "${dst_path}" ] ; then
|
||||
log "${dst_path} already exists, skipping"
|
||||
continue
|
||||
fi
|
||||
|
||||
src_path="${src_dir}/${src_name}"
|
||||
if ! [ -f "${src_path}" ] ; then
|
||||
log_always "file ${src_name} is not found in ${src_dir}/"
|
||||
if [ "${NGX_ALLOW_MISSING_CONFLOAD:-}" != 1 ] ; then
|
||||
load_error
|
||||
log "file ${src_name} is skipped"
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
ln_cp "${src_path}" "${dst_path}"
|
||||
done
|
||||
}
|
||||
|
||||
combine_modules core ${NGX_CORE_MODULES:-}
|
||||
combine_modules http ${NGX_HTTP_MODULES:-}
|
||||
combine_modules mail ${NGX_MAIL_MODULES:-}
|
||||
combine_modules stream ${NGX_STREAM_MODULES:-}
|
||||
|
||||
loose=$(( 1 - NGX_STRICT_LOAD ))
|
||||
NGX_ALLOW_MISSING_CONFLOAD=$(gobool_to_int "${NGX_ALLOW_MISSING_CONFLOAD:-${loose}}" ${loose})
|
||||
|
||||
combine_confload core ${NGX_CORE_CONFLOAD:-}
|
||||
combine_confload core_ev ${NGX_CORE_EVENTS_CONFLOAD:-}
|
||||
combine_confload http ${NGX_HTTP_CONFLOAD:-}
|
||||
combine_confload mail ${NGX_MAIL_CONFLOAD:-}
|
||||
combine_confload stream ${NGX_STREAM_CONFLOAD:-}
|
||||
|
||||
## some modules doesn't have configuration at all
|
||||
NGX_ALLOW_MISSING_CONFLOAD=1
|
||||
|
||||
combine_confload core ${NGX_CORE_MODULES:-}
|
||||
combine_confload http ${NGX_HTTP_MODULES:-}
|
||||
combine_confload mail ${NGX_MAIL_MODULES:-}
|
||||
combine_confload stream ${NGX_STREAM_MODULES:-}
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user