Package generation refactoring, stage 2.
Imported 3rd-party open-source modules which are being distributed
for NGINX Plus.
diff --git a/.hgignore b/.hgignore
new file mode 100644
index 0000000..b794689
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,4 @@
+syntax:glob
+.git/
+subinclude:contrib/.hgignore
+subinclude:contrib/tarballs/.hgignore
diff --git a/alpine/APKBUILD-base.in b/alpine/APKBUILD-base.in
index e75e74a..9dc1068 100644
--- a/alpine/APKBUILD-base.in
+++ b/alpine/APKBUILD-base.in
@@ -9,7 +9,7 @@
pkgver=$_base_version
pkgrel=$_base_release
pkgdesc="High performance web server"
-url="http://nginx.org/"
+url="https://nginx.org/"
arch="all"
license="2-clause BSD-like license"
provides="nginx-r$_base_version"
@@ -22,8 +22,7 @@
pkggroups=""
install="$pkgname.pre-install $pkgname.post-install $pkgname.pre-deinstall $pkgname.post-upgrade"
-# we would like to ship all docs/licenses in the base package
-#subpackages="$pkgname-doc"
+subpackages="$pkgname-dbg"
replaces="nginx-common nginx-initscripts nginx-lua nginx-rtmp"
source="nginx-$_base_version.tar.gz
diff --git a/alpine/APKBUILD-module.in b/alpine/APKBUILD-module.in
index e986377..119a1c8 100644
--- a/alpine/APKBUILD-module.in
+++ b/alpine/APKBUILD-module.in
@@ -9,7 +9,7 @@
pkgver=%%MODULE_VERSION_PREFIX%%%%MODULE_VERSION%%
pkgrel=%%MODULE_RELEASE%%
pkgdesc="%%SUMMARY%%"
-url="http://nginx.org/"
+url="https://nginx.org/"
arch="all"
license="2-clause BSD-like license"
depends="nginx-r$_base_version %%MODULE_DEPENDS%%"
@@ -23,8 +23,7 @@
pkggroups=""
install="$pkgname.post-install"
-# we would like to ship all docs/licenses in the base package
-#subpackages="$pkgname-doc"
+subpackages="$pkgname-dbg"
source="nginx-module-%%MODULE%%-$_base_version.tar.gz
%%MODULE_SOURCES%%
@@ -34,12 +33,75 @@
_modules_dir="usr/lib/nginx/modules"
+unpack() {
+ local u
+ verify || return 1
+ initdcheck || return 1
+ mkdir -p "$srcdir"
+ local gunzip=$(command -v pigz || echo gunzip)
+ [ $gunzip = "/usr/bin/pigz" ] && gunzip="$gunzip -d"
+ for u in $source; do
+ local s
+ local done=1
+ if is_remote "$u"; then
+ s="$SRCDEST/$(filename_from_uri $u)"
+ else
+ s="$startdir/$u"
+ fi
+ case "$s" in
+ *.tar)
+ done=0
+ msg "Unpacking $s..."
+ tar -C "$srcdir" -xf "$s" || return 1;;
+ *.tar.gz|*.tgz)
+ done=0
+ msg "Unpacking $s..."
+ $gunzip -c "$s" | tar -C "$srcdir" -x || return 1;;
+ *.tar.bz2)
+ done=0
+ msg "Unpacking $s..."
+ tar -C "$srcdir" -jxf "$s" || return 1;;
+ *.tar.lz)
+ done=0
+ msg "Unpacking $s..."
+ tar -C "$srcdir" --lzip -xf "$s" || return 1;;
+ *.tar.lzma)
+ done=0
+ msg "Unpacking $s..."
+ unlzma -T 0 -c "$s" | tar -C "$srcdir" -x \
+ || return 1;;
+ *.tar.xz)
+ done=0
+ msg "Unpacking $s..."
+ local threads_opt
+ if [ $(readlink -f $(command -v unxz)) != "/bin/busybox" ]; then
+ threads_opt="--threads=0"
+ fi
+ unxz $threads_opt -c "$s" | tar -C "$srcdir" -x || return 1;;
+ *.zip)
+ done=0
+ msg "Unpacking $s..."
+ unzip -n -q "$s" -d "$srcdir" || return 1;;
+ esac
+ if [ $done -eq 0 ]; then
+ bs=`basename $s`
+ sn=`echo $bs | sed -e 's/-[0-9].*$//'`
+ if [ "$sn" = "$bs" ] ; then
+ sn=${bs%-*}
+ fi
+ ( cd "$srcdir" && \
+ sndir=`find * -type d -maxdepth 1 -name "${sn}-*" | head -1` ; \
+ test -n "$sndir" && ln -s ${sndir} ${sn} ||: )
+ fi
+ done
+}
+
prepare() {
local file; for file in $source; do
case $file in
*~*.patch)
msg $file
- cd "$srcdir"/${file%%~*}-*
+ cd "$srcdir"/${file%%~*}
patch -p 1 -i "$srcdir/$file"
;;
*.patch)
@@ -68,13 +130,13 @@
cd "$builddir"
- CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT_DEBUG%%" --with-debug
+ CFLAGS= %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT_DEBUG%%" --with-debug
make $_make_opts modules
for so in `find objs/ -maxdepth 1 -type f -name "*.so"`; do \
debugso=`echo ${so} | sed -e "s|.so|-debug.so|"` ; \
mv ${so} ${debugso} ; \
done
- CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT%%"
+ CFLAGS= %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT%%"
make $_make_opts modules
}
diff --git a/alpine/APKBUILD-plus-module.in b/alpine/APKBUILD-plus-module.in
index e62b9db..3bbcf63 100644
--- a/alpine/APKBUILD-plus-module.in
+++ b/alpine/APKBUILD-plus-module.in
@@ -69,13 +69,13 @@
cd "$builddir"
- CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT_DEBUG%%" --with-debug
+ CFLAGS= %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT_DEBUG%%" --with-debug
make $_make_opts modules
for so in `find objs/ -maxdepth 1 -type f -name "*.so"`; do \
debugso=`echo ${so} | sed -e "s|.so|-debug.so|"` ; \
mv ${so} ${debugso} ; \
done
- CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT%%"
+ CFLAGS= %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT%%" --with-ld-opt="$LDFLAGS %%MODULE_LD_OPT%%"
make $_make_opts modules
}
diff --git a/alpine/Makefile b/alpine/Makefile
index 0e75654..66debe9 100644
--- a/alpine/Makefile
+++ b/alpine/Makefile
@@ -10,6 +10,8 @@
DOCS?= ../docs
SRCPATH?= ../..
MODSRC_PREFIX= ../
+CONTRIB?= ../contrib
+CONTRIB:= $(abspath $(CONTRIB))
MODULE_TARGET?= oss
@@ -33,6 +35,8 @@
default:
@echo "valid targets: all base $(addprefix module-, $(MODULES)) test test-debug"
+BASE_MODULES= geoip image-filter njs perl xslt
+
MODULES=
-include Makefile.module-*
@@ -79,12 +83,9 @@
--with-stream_ssl_module \
--with-stream_ssl_preread_module
-BASE_MODULE_CONFIGURE_ARGS=\
- --with-compat
-
export CR=\\n
-modname = $(shell echo $1 | cut -d '-' -f 3- | tr '-' '_')
+modname = $(shell echo $1 | tr '-' '_')
${HOME}/.abuild:
mkdir -p ${HOME}/.abuild
@@ -96,9 +97,23 @@
${HOME}/.abuild/abuild.conf: ${HOME}/.abuild/abuild-key.rsa | ${HOME}/.abuild
echo PACKAGER_PRIVKEY=\"${HOME}/.abuild/abuild-key.rsa\" > ${HOME}/.abuild/abuild.conf
-all: base modules
+list-base:
+ @printf "%-20s\t%s\n" nginx $(BASE_VERSION)-$(BASE_RELEASE)
+
+list-module-%:
+ @printf "%-20s\t%s\n" $* $(MODULE_VERSION_$(call modname, $*))-$(MODULE_RELEASE_$(call modname, $*))
+
+list-all-modules: $(addprefix list-module-, $(MODULES))
+
+list-base-modules: $(addprefix list-module-, $(BASE_MODULES))
+
+list: list-base list-all-modules
+
+all: base base-modules
@echo "===> all done"
+base-modules: base $(addprefix module-, $(BASE_MODULES))
+
modules: base $(addprefix module-, $(MODULES))
abuild: abuild-base $(addprefix abuild-module-, $(MODULES))
@@ -110,7 +125,8 @@
touch base
$(BASE_SRC):
- wget http://nginx.org/download/$(BASE_SRC)
+ cd $(CONTRIB) && make .sum-nginx
+ ln -s $(CONTRIB)/tarballs/$(BASE_SRC) $(BASE_SRC)
abuild-base: $(BASE_SRC)
@echo "===> Creating $@"
@@ -135,7 +151,7 @@
ln -s abuild-$@/pkg/$(MODULE_PACKAGE_PREFIX)-$*/usr/lib/nginx/modules $@ && \
touch $@
-abuild-module-%: $(BASE_SRC)
+abuild-module-%: $(BASE_SRC) .deps-module-%
@echo "===> Creating $@"
@{ \
set -e ; \
@@ -145,13 +161,16 @@
mkdir -p $${builddir} ; \
cp $(BASE_SRC) $${builddir}/nginx-module-$${module_asis}-$(BASE_VERSION).tar.gz ; \
sources= ; \
- for src in $(MODULE_SOURCES_$(call modname, $@)); do \
- cp src/$${src} $${builddir}/ ; \
+ for src in $(MODULE_SOURCES_$(call modname, $*)); do \
+ cp $(CONTRIB)/tarballs/$${src} $${builddir}/ ; \
sources="$${sources} $${src}" ; \
done ; \
- for p in $(MODULE_PATCHES_$(call modname, $@)); do \
- cp src/$${p} $${builddir}/ ; \
- sources="$${sources} $${p}" ; \
+ for p in $(MODULE_PATCHES_$(call modname, $*)); do \
+ dn=`dirname $${p}` ; \
+ bdn=`basename $${dn}` ; \
+ pn="$${bdn}~`basename $${p}`" ; \
+ cp $${p} $${builddir}/$${pn} ; \
+ sources="$${sources} $${pn}" ; \
done ; \
module_copyright="nginx-module-$${module_asis}.copyright" ; \
cp -p $(DOCS)/$${module_copyright} $${builddir}/COPYRIGHT ; \
@@ -160,34 +179,34 @@
else \
postinstall_script=$${builddir}/nginx-plus-module-$${module_asis}.post-install ; \
fi ; \
- definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- addcontroltags=`echo "$$MODULE_ADD_CONTROL_TAGS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- buildenv=`echo "$$MODULE_ENV_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- post=`echo "$$MODULE_POST_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ addcontroltags=`echo "$$MODULE_ADD_CONTROL_TAGS_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ buildenv=`echo "$$MODULE_ENV_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ post=`echo "$$MODULE_POST_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
cat $(APKBUILD_TEMPLATE) | sed \
-e "s#%%MODULE%%#$${module_asis}#g" \
- -e "s#%%SUMMARY%%#nginx $(MODULE_SUMMARY_$(call modname, $@))#g" \
- -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $@))#g" \
+ -e "s#%%SUMMARY%%#nginx $(MODULE_SUMMARY_$(call modname, $*))#g" \
+ -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $*))#g" \
-e "s#%%BASE_VERSION%%#$(BASE_VERSION)#g" \
-e "s#%%BASE_RELEASE%%#$(BASE_RELEASE)#g" \
+ -e 's#%%BASE_CONFIGURE_ARGS%%#$(BASE_CONFIGURE_ARGS)#g' \
-e "s#%%PLUS_VERSION%%#$(PLUS_VERSION)#g" \
- -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
- -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
- -e "s#%%MODULE_VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $@))#g" \
- -e 's#%%BASE_MODULE_CONFIGURE_ARGS%%#$(BASE_MODULE_CONFIGURE_ARGS)#g' \
- -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $@))#g" \
+ -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $*))#g" \
+ -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $*))#g" \
+ -e "s#%%MODULE_VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $*))#g" \
+ -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $*))#g" \
-e "s#%%MODULE_SOURCES%%#$${sources}#g" \
- -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$(call modname, $@))#g" \
- -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$(call modname, $@))#g" \
- -e "s#%%MODULE_PROVIDES%%#$(MODULE_PROVIDES_$(call modname, $@))#g" \
+ -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$(call modname, $*))#g" \
+ -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$(call modname, $*))#g" \
+ -e "s#%%MODULE_PROVIDES%%#$(MODULE_PROVIDES_$(call modname, $*))#g" \
-e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \
-e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \
- -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $@))#g" \
+ -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $*))#g" \
-e "s#%%ADD_CONTROL_TAGS%%#$${addcontroltags}#g" \
-e "s#%%MODULE_ENV%%#$${buildenv}#g" \
-e "s#%%MODULE_SRCDIR%%#$(MODULE_SRCDIR)#g" \
@@ -197,6 +216,9 @@
> $${postinstall_script} ; \
}
+.deps-module-%:
+ touch $@
+
nginx-tests:
@{ \
if [ -d "$(SRCPATH)/nginx-tests" ]; then \
@@ -204,7 +226,7 @@
cp -rP $(SRCPATH)/nginx-tests nginx-tests ; \
else \
echo "===> Cloning tests" ; \
- hg clone http://hg.nginx.org/nginx-tests ; \
+ hg clone https://hg.nginx.org/nginx-tests ; \
fi ; \
}
@@ -213,6 +235,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -220,12 +244,16 @@
globals="$$globals env PERL5LIB=$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl:$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl/blib/arch;" ; \
fi ; \
if [ -d $$pwd/abuild-module-modsecurity ]; then \
- export LD_LIBRARY_PATH=$$pwd/abuild-module-modsecurity/src/modsecurity-v$(LIBMODSECURITY_VERSION)/local/lib ; \
+ export LD_LIBRARY_PATH=$$pwd/abuild-module-modsecurity/src/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
fi ; \
if [ -d $$pwd/abuild-module-opentracing ]; then \
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$pwd/abuild-module-opentracing/src/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
+ if [ -d $$pwd/abuild-module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/abuild-module-lua/src/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/abuild-module-lua/src/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
}
test-debug: base nginx-tests
@@ -233,6 +261,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module-debug.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -240,16 +270,45 @@
globals="$$globals env PERL5LIB=$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl:$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl/blib/arch;" ; \
fi ; \
if [ -d $$pwd/abuild-module-modsecurity ]; then \
- export LD_LIBRARY_PATH=$$pwd/abuild-module-modsecurity/src/modsecurity-v$(LIBMODSECURITY_VERSION)/local/lib ; \
+ export LD_LIBRARY_PATH=$$pwd/abuild-module-modsecurity/src/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
fi ; \
if [ -d $$pwd/abuild-module-opentracing ]; then \
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$pwd/abuild-module-opentracing/src/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
+ if [ -d $$pwd/abuild-module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/abuild-module-lua/src/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/abuild-module-lua/src/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
+ }
+
+test-modules: $(addprefix test-module-, $(MODULES))
+
+test-module-%: base nginx-tests module-%
+ @{ \
+ module=`echo $@ | cut -d '-' -f 3-` ; \
+ testdir="$(MODULE_TESTS_$(shell echo $@ | cut -d '-' -f 3-))" ; \
+ if [ -z "$$testdir" ]; then \
+ echo "---> Skipping, no tests defined for $$module module" ; \
+ exit 0 ; \
+ fi ; \
+ pwd=`pwd` ; \
+ globals= ; \
+ if [ "$$module" = "modsecurity" ]; then \
+ export LD_LIBRARY_PATH=$$pwd/abuild-module-modsecurity/src/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
+ fi ; \
+ for so in `find module-$${module}/ -maxdepth 1 -type f -name "*module.so"`; do \
+ globals="$$globals load_module $$pwd/$$so;" ; \
+ done ; \
+ if [ ! -d nginx-tests/module-$${module} ]; then \
+ cp -r $${pwd}/abuild-module-$${module}/src/$${testdir} nginx-tests/module-$${module} ; \
+ ln -fs ../lib nginx-tests/module-$${module}/lib ; \
+ fi ; \
+ cd nginx-tests/module-$${module} && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
}
clean:
- @rm -rf base abuild-base abuild-module-* module-* $(BASE_SRC) nginx-tests
+ @rm -rf base abuild-base abuild-module-* module-* $(BASE_SRC) nginx-tests .deps-module-*
.PHONY: default all modules abuild test test-debug clean
diff --git a/alpine/Makefile.module-brotli b/alpine/Makefile.module-brotli
new file mode 100644
index 0000000..6645b56
--- /dev/null
+++ b/alpine/Makefile.module-brotli
@@ -0,0 +1,39 @@
+MODULES+= brotli
+
+MODULE_SUMMARY_brotli= 3rd-party brotli compression dynamic modules
+
+include $(CONTRIB)/src/ngx_brotli/version
+
+MODULE_VERSION_brotli= $(NGX_BROTLI_VERSION)
+MODULE_RELEASE_brotli= 1
+
+MODULE_VERSION_PREFIX_brotli=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_brotli= ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz
+
+MODULE_CONFARGS_brotli= --add-dynamic-module=$(MODSRC_PREFIX)ngx_brotli-$(NGX_BROTLI_VERSION)rc
+
+.deps-module-brotli:
+ cd $(CONTRIB) && make .sum-ngx_brotli
+ touch $@
+
+MODULE_BUILD_DEPENDS_brotli=brotli-dev
+
+define MODULE_POST_brotli
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_brotli) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_brotli_filter_module.so;
+ load_module modules/ngx_http_brotli_static_module.so;
+
+Please refer to the modules documentation for further details:
+https://github.com/google/ngx_brotli
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_brotli
diff --git a/alpine/Makefile.module-encrypted-session b/alpine/Makefile.module-encrypted-session
new file mode 100644
index 0000000..1ea5fae
--- /dev/null
+++ b/alpine/Makefile.module-encrypted-session
@@ -0,0 +1,54 @@
+MODULES+= encrypted-session
+
+MODULE_SUMMARY_encrypted_session= 3rd-party encrypted session dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/encrypted-session-nginx-module/version
+
+MODULE_VERSION_encrypted_session= $(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+MODULE_RELEASE_encrypted_session= 1
+
+MODULE_VERSION_PREFIX_encrypted_session=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_encrypted_session= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_encrypted_session= --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+
+.deps-module-encrypted-session:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-encrypted-session-nginx-module
+ touch $@
+
+prerequisites-for-module-encrypted-session: module-ndk
+
+MODULE_DEPENDS_encrypted_session=$(NDK_DEPENDENCY_TAG)
+
+define MODULE_PREINSTALL_encrypted_session
+ rm -f objs/ndk_http_module-debug.so
+ rm -f objs/ndk_http_module.so
+endef
+export MODULE_PREINSTALL_encrypted_session
+
+define MODULE_POST_encrypted_session
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_encrypted_session) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_encrypted_session_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/encrypted-session-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_encrypted_session
diff --git a/alpine/Makefile.module-geoip b/alpine/Makefile.module-geoip
index 1b421d7..1b98c00 100644
--- a/alpine/Makefile.module-geoip
+++ b/alpine/Makefile.module-geoip
@@ -10,7 +10,6 @@
--with-stream_geoip_module=dynamic
MODULE_BUILD_DEPENDS_geoip=geoip-dev
-MODULE_DEPENDS_geoip=geoip
define MODULE_ADD_CONTROL_TAGS_geoip
replaces="nginx-mod-http-geoip"
@@ -29,8 +28,8 @@
load_module modules/ngx_stream_geoip_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_geoip_module.html
-http://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
+https://nginx.org/en/docs/http/ngx_http_geoip_module.html
+https://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
----------------------------------------------------------------------
BANNER
diff --git a/alpine/Makefile.module-geoip2 b/alpine/Makefile.module-geoip2
new file mode 100644
index 0000000..39eebc0
--- /dev/null
+++ b/alpine/Makefile.module-geoip2
@@ -0,0 +1,42 @@
+MODULES+= geoip2
+
+MODULE_SUMMARY_geoip2= 3rd-party GeoIP2 dynamic modules
+
+include $(CONTRIB)/src/ngx_http_geoip2_module/version
+
+MODULE_VERSION_geoip2= $(GEOIP2_NGINX_MODULE_VERSION)
+MODULE_RELEASE_geoip2= 1
+
+MODULE_VERSION_PREFIX_geoip2=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_geoip2= ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_geoip2= --with-stream \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION)
+
+.deps-module-geoip2:
+ cd $(CONTRIB) && make .sum-ngx_http_geoip2_module
+ touch $@
+
+prerequisites-for-module-geoip2:
+
+MODULE_BUILD_DEPENDS_geoip2=libmaxminddb-dev
+
+define MODULE_POST_geoip2
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_geoip2) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_geoip2_module.so;
+ load_module modules/ngx_stream_geoip2_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/leev/ngx_http_geoip2_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_geoip2
diff --git a/alpine/Makefile.module-headers-more b/alpine/Makefile.module-headers-more
new file mode 100644
index 0000000..168c677
--- /dev/null
+++ b/alpine/Makefile.module-headers-more
@@ -0,0 +1,40 @@
+MODULES+= headers-more
+
+MODULE_SUMMARY_headers_more= 3rd-party headers-more dynamic module
+
+include $(CONTRIB)/src/headers-more-nginx-module/version
+
+MODULE_VERSION_headers_more= $(HEADERS_MORE_NGINX_MODULE_VERSION)
+MODULE_RELEASE_headers_more= 1
+
+MODULE_VERSION_PREFIX_headers_more=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_headers_more= headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_headers_more= --with-http_dav_module \
+ --with-http_realip_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION)
+
+.deps-module-headers-more:
+ cd $(CONTRIB) && make .sum-headers-more-nginx-module
+ touch $@
+
+prerequisites-for-module-headers-more:
+
+define MODULE_POST_headers_more
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_headers_more) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_headers_more_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/headers-more-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_headers_more
diff --git a/alpine/Makefile.module-image-filter b/alpine/Makefile.module-image-filter
index 7c874e6..f7e1dc6 100644
--- a/alpine/Makefile.module-image-filter
+++ b/alpine/Makefile.module-image-filter
@@ -7,7 +7,6 @@
MODULE_CONFARGS_image_filter= --with-http_image_filter_module=dynamic
-MODULE_DEPENDS_image_filter=libgd
MODULE_BUILD_DEPENDS_image_filter=gd-dev
define MODULE_ADD_CONTROL_TAGS_image_filter
@@ -26,7 +25,7 @@
load_module modules/ngx_http_image_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
+https://nginx.org/en/docs/http/ngx_http_image_filter_module.html
----------------------------------------------------------------------
BANNER
diff --git a/alpine/Makefile.module-lua b/alpine/Makefile.module-lua
new file mode 100644
index 0000000..8d66272
--- /dev/null
+++ b/alpine/Makefile.module-lua
@@ -0,0 +1,117 @@
+MODULES+= lua
+
+MODULE_SUMMARY_lua= 3rd-party Lua dynamic modules
+
+include $(CONTRIB)/src/luajit2/version
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/lua-nginx-module/version
+include $(CONTRIB)/src/stream-lua-nginx-module/version
+include $(CONTRIB)/src/lua-resty-core/version
+include $(CONTRIB)/src/lua-resty-lrucache/version
+
+MODULE_VERSION_lua= $(LUA_NGINX_MODULE_VERSION)
+MODULE_RELEASE_lua= 1
+
+MODULE_VERSION_PREFIX_lua=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_lua= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ lua-nginx-module-$(LUA_NGINX_MODULE_VERSION).tar.gz \
+ stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz \
+ luajit2-$(LUAJIT2_VERSION).tar.gz \
+ lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz \
+ lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz
+
+MODULE_PATCHES_lua= $(CONTRIB)/src/luajit2/Makefile.patch \
+ $(CONTRIB)/src/luajit2/src-luaconf.h.patch \
+ $(CONTRIB)/src/lua-nginx-module/config.patch \
+ $(CONTRIB)/src/stream-lua-nginx-module/config.patch
+
+MODULE_CONFARGS_lua= --with-http_dav_module \
+ --with-http_realip_module \
+ --with-http_ssl_module \
+ --with-http_v2_module \
+ --with-stream \
+ --with-stream_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)lua-nginx-module-$(LUA_NGINX_MODULE_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION)
+
+.deps-module-lua:
+ cd $(CONTRIB) && make \
+ .sum-luajit2 \
+ .sum-ngx_devel_kit \
+ .sum-lua-nginx-module \
+ .sum-stream-lua-nginx-module \
+ .sum-lua-resty-core \
+ .sum-lua-resty-lrucache
+ touch $@
+
+prerequisites-for-module-lua: module-ndk
+
+MODULE_DEPENDS_lua=$(NDK_DEPENDENCY_TAG)
+
+define MODULE_PREBUILD_lua
+ cd ../luajit2-$(LUAJIT2_VERSION) \&\& \
+ DESTDIR=`pwd` CFLAGS="-fPIC" make $$_make_opts install
+endef
+export MODULE_PREBUILD_lua
+
+define MODULE_ENV_lua
+LUAJIT_INC="../luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1" LUAJIT_LIB="../luajit2-$(LUAJIT2_VERSION)/usr/lib"
+endef
+export MODULE_ENV_lua
+
+define MODULE_PREINSTALL_lua
+ rm -f objs/ndk_http_module-debug.so
+ rm -f objs/ndk_http_module.so
+ mkdir -p "$$pkgdir"/usr/bin
+ mkdir -p "$$pkgdir"/usr/share/man/man1
+ install -m755 ../luajit2-$(LUAJIT2_VERSION)/usr/bin/luajit "$$pkgdir"/usr/bin/nginx-luajit
+ install -m644 ../luajit2-$(LUAJIT2_VERSION)/usr/share/man/man1/luajit.1 "$$pkgdir"/usr/share/man/man1/nginx-luajit.1
+ if [ -z "`echo $subpackages | grep -- -doc`" ]; then
+ gzip "$$pkgdir"/usr/share/man/man1/nginx-luajit.1
+ fi
+ mkdir -p "$$pkgdir"/usr/share/nginx-luajit-2.1/jit
+ for f in `find ../luajit2-$(LUAJIT2_VERSION)/usr/share/nginx-luajit-2.1/jit/ -type f`; do \
+ install -m644 $${f} "$$pkgdir"/usr/share/nginx-luajit-2.1/jit/ ; \
+ done
+ mkdir -p "$$pkgdir"/usr/include/nginx-luajit-2.1
+ for f in `find ../luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1/ -type f`; do \
+ install -m644 $${f} "$$pkgdir"/usr/include/nginx-luajit-2.1/ ; \
+ done
+ mkdir -p "$$pkgdir"/usr/share/nginx-luajit-2.1/resty
+ ( cd ../lua-resty-core-$(LUA_RESTY_CORE_VERSION) \&\& \
+ LUA_LIB_DIR="$$pkgdir"/usr/share/nginx-luajit-2.1 make install )
+ ( cd ../lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION) \&\& \
+ LUA_LIB_DIR="$$pkgdir"/usr/share/nginx-luajit-2.1 make install )
+
+endef
+export MODULE_PREINSTALL_lua
+
+define MODULE_POST_lua
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_lua) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_lua_module.so;
+ load_module modules/ngx_stream_lua_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+These modules are compiled with LuaJIT 2.1 library.
+The following binary should be used for testing and bytecode generation:
+
+ /usr/bin/nginx-luajit
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/lua-nginx-module
+https://github.com/openresty/stream-lua-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_lua
diff --git a/alpine/Makefile.module-modsecurity b/alpine/Makefile.module-modsecurity
new file mode 100644
index 0000000..3737429
--- /dev/null
+++ b/alpine/Makefile.module-modsecurity
@@ -0,0 +1,84 @@
+MODULES+= modsecurity
+
+MODULE_SUMMARY_modsecurity= 3rd-party ModSecurity dynamic module
+
+include $(CONTRIB)/src/modsecurity/version
+include $(CONTRIB)/src/modsecurity-nginx/version
+
+MODULE_VERSION_modsecurity= $(MODSECURITY_NGINX_VERSION)
+MODULE_RELEASE_modsecurity= 1
+LIBMODSECURITY_SOVER= $(MODSECURITY_VERSION)
+
+MODULE_VERSION_PREFIX_modsecurity=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_modsecurity= modsecurity-v$(MODSECURITY_VERSION).tar.gz \
+ modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+
+MODULE_PATCHES_modsecurity= $(CONTRIB)/src/modsecurity/PR2348.patch \
+ $(CONTRIB)/src/modsecurity-nginx/PR165.patch
+
+MODULE_CONFARGS_modsecurity= --add-dynamic-module=$(MODSRC_PREFIX)modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)
+
+.deps-module-modsecurity:
+ cd $(CONTRIB) && make \
+ .sum-modsecurity \
+ .sum-modsecurity-nginx
+ touch $@
+
+prerequisites-for-module-modsecurity:
+
+MODULE_BUILD_DEPENDS_modsecurity=yajl-dev libxml2-dev curl-dev patchelf
+
+define MODULE_PREBUILD_modsecurity
+ cd ../modsecurity-v$(MODSECURITY_VERSION) \&\& \
+ ./configure --prefix `pwd`/local --without-lmdb --without-lua \&\& \
+ make $$_make_opts install \&\& make check-TESTS
+ rm -f /tmp/audit_test.log /tmp/audit_test_parallel.log
+ rm -rf /tmp/test
+endef
+export MODULE_PREBUILD_modsecurity
+
+define MODULE_ENV_modsecurity
+MODSECURITY_INC="../modsecurity-v$(MODSECURITY_VERSION)/local/include" \
+MODSECURITY_LIB="../modsecurity-v$(MODSECURITY_VERSION)/local/lib" \
+NGX_IGNORE_RPATH=YES
+endef
+export MODULE_ENV_modsecurity
+
+MODULE_CC_OPT_DEBUG_modsecurity=-DMODSECURITY_DDEBUG=1
+
+define MODULE_PREINSTALL_modsecurity
+ mkdir -p "$$pkgdir"/usr/bin
+ install -m755 -s ../modsecurity-v$(MODSECURITY_VERSION)/local/bin/modsec-rules-check "$$pkgdir"/usr/bin/
+ patchelf --remove-rpath "$$pkgdir"/usr/bin/modsec-rules-check
+ mkdir -p "$$pkgdir"/usr/lib
+ install -m755 ../modsecurity-v$(MODSECURITY_VERSION)/local/lib/libmodsecurity.so.$(LIBMODSECURITY_SOVER) "$$pkgdir"/usr/lib/
+ ln -fs libmodsecurity.so.$(LIBMODSECURITY_SOVER) "$$pkgdir"/usr/lib/libmodsecurity.so.3
+ ln -fs libmodsecurity.so.$(LIBMODSECURITY_SOVER) "$$pkgdir"/usr/lib/libmodsecurity.so
+ mkdir -p "$$pkgdir"/etc/nginx/modsec
+ install -m644 ../modsecurity-v$(MODSECURITY_VERSION)/modsecurity.conf-recommended "$$pkgdir"/etc/nginx/modsec/modsecurity.conf
+ install -m644 ../modsecurity-v$(MODSECURITY_VERSION)/unicode.mapping "$$pkgdir"/etc/nginx/modsec/
+endef
+export MODULE_PREINSTALL_modsecurity
+
+MODULE_TESTS_modsecurity=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)/tests
+
+define MODULE_POST_modsecurity
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_modsecurity) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_modsecurity_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/SpiderLabs/ModSecurity-nginx
+
+----------------------------------------------------------------------
+BANNER
+
+/sbin/ldconfig
+endef
+export MODULE_POST_modsecurity
diff --git a/alpine/Makefile.module-ndk b/alpine/Makefile.module-ndk
new file mode 100644
index 0000000..6044916
--- /dev/null
+++ b/alpine/Makefile.module-ndk
@@ -0,0 +1,47 @@
+MODULES+= ndk
+
+MODULE_SUMMARY_ndk= 3rd-party NDK dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+
+MODULE_VERSION_ndk= $(NGX_DEVEL_KIT_VERSION)
+MODULE_RELEASE_ndk= 1
+
+MODULE_VERSION_PREFIX_ndk=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_ndk= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz
+
+MODULE_CONFARGS_ndk= --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION)
+
+.deps-module-ndk:
+ cd $(CONTRIB) && make .sum-ngx_devel_kit
+ touch $@
+
+prerequisites-for-module-ndk:
+
+MODULE_CC_OPT_ndk=-DNDK_SET_VAR -DNDK_UPSTREAM_LIST
+MODULE_CC_OPT_DEBUG_ndk=$(MODULE_CC_OPT_ndk)
+
+ifeq ($(MODULE_TARGET), plus)
+NDK_DEPENDENCY_TAG=nginx-plus-module-ndk-r$(PLUS_VERSION)
+else
+NDK_DEPENDENCY_TAG=nginx-module-ndk-r$(BASE_VERSION)
+endif
+
+define MODULE_POST_ndk
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_ndk) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/simpl/ngx_devel_kit
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_ndk
diff --git a/alpine/Makefile.module-njs b/alpine/Makefile.module-njs
index b75d573..ca0112a 100644
--- a/alpine/Makefile.module-njs
+++ b/alpine/Makefile.module-njs
@@ -1,13 +1,20 @@
MODULES+= njs
-MODULE_SUMMARY_njs= njs dynamic modules
+MODULE_SUMMARY_njs= njs dynamic modules
-MODULE_VERSION_njs= 0.5.0
-MODULE_RELEASE_njs= 1
+include $(CONTRIB)/src/njs/version
-MODULE_SOURCES_njs= njs-$(MODULE_VERSION_njs).tar.gz
-MODULE_CONFARGS_njs= --with-stream \
- --add-dynamic-module=$(MODSRC_PREFIX)njs-$(MODULE_VERSION_njs)/nginx
+MODULE_VERSION_njs= $(NJS_VERSION)
+MODULE_RELEASE_njs= 1
+
+MODULE_SOURCES_njs= njs-$(NJS_VERSION).tar.gz
+
+MODULE_CONFARGS_njs= --with-stream \
+ --add-dynamic-module=$(MODSRC_PREFIX)njs-$(NJS_VERSION)/nginx
+
+.deps-module-njs:
+ cd $(CONTRIB) && make .sum-njs
+ touch $@
MODULE_VERSION_PREFIX_njs=$(MODULE_TARGET_PREFIX)
MODULE_BUILD_DEPENDS_njs=libedit-dev
@@ -18,15 +25,15 @@
export MODULE_ADD_CONTROL_TAGS_njs
define MODULE_PREBUILD_njs
- cd ../njs-$(MODULE_VERSION_njs) \&\& ./configure \&\& make njs
+ cd ../njs-$(NJS_VERSION) \&\& ./configure \&\& make njs
endef
export MODULE_PREBUILD_njs
define MODULE_PREINSTALL_njs
mkdir -p "$$pkgdir"/usr/share/doc/nginx-module-njs
- install -m644 ../njs-$(MODULE_VERSION_njs)/CHANGES "$$pkgdir"/usr/share/doc/nginx-module-njs/
+ install -m644 ../njs-$(NJS_VERSION)/CHANGES "$$pkgdir"/usr/share/doc/nginx-module-njs/
mkdir -p "$$pkgdir"/usr/bin
- install -m755 -s ../njs-$(MODULE_VERSION_njs)/build/njs "$$pkgdir"/usr/bin/
+ install -m755 -s ../njs-$(NJS_VERSION)/build/njs "$$pkgdir"/usr/bin/
endef
export MODULE_PREINSTALL_njs
@@ -42,9 +49,9 @@
load_module modules/ngx_stream_js_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/njs/
-http://nginx.org/en/docs/http/ngx_http_js_module.html
-http://nginx.org/en/docs/stream/ngx_stream_js_module.html
+https://nginx.org/en/docs/njs/
+https://nginx.org/en/docs/http/ngx_http_js_module.html
+https://nginx.org/en/docs/stream/ngx_stream_js_module.html
----------------------------------------------------------------------
BANNER
diff --git a/alpine/Makefile.module-opentracing b/alpine/Makefile.module-opentracing
new file mode 100644
index 0000000..784a13c
--- /dev/null
+++ b/alpine/Makefile.module-opentracing
@@ -0,0 +1,94 @@
+MODULES+= opentracing
+
+MODULE_SUMMARY_opentracing= 3rd-party OpenTracing dynamic module
+
+include $(CONTRIB)/src/opentracing-cpp/version
+include $(CONTRIB)/src/nginx-opentracing/version
+include $(CONTRIB)/src/jaeger-client-cpp/version
+
+MODULE_VERSION_opentracing= $(NGINX_OPENTRACING_VERSION)
+MODULE_RELEASE_opentracing= 1
+
+MODULE_VERSION_PREFIX_opentracing=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_opentracing= opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz \
+ nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz \
+ jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz
+
+MODULE_PATCHES_opentracing= $(CONTRIB)/src/opentracing-cpp/CMakeLists.txt.patch \
+ $(CONTRIB)/src/jaeger-client-cpp/CMakeLists.txt.patch
+
+MODULE_CONFARGS_opentracing= --add-dynamic-module=$(MODSRC_PREFIX)nginx-opentracing-$(NGINX_OPENTRACING_VERSION)/opentracing
+
+.deps-module-opentracing:
+ cd $(CONTRIB) && make \
+ .sum-opentracing-cpp \
+ .sum-nginx-opentracing \
+ .sum-jaeger-client-cpp
+ touch $@
+
+prerequisites-for-module-opentracing:
+
+MODULE_BUILD_DEPENDS_opentracing=cmake yaml-cpp-dev
+
+define MODULE_PREBUILD_opentracing
+ ( cd ../opentracing-cpp-$(OPENTRACING_CPP_VERSION) \&\& \
+ mkdir .build \&\& \
+ cd .build \&\& \
+ cmake .. \&\& \
+ DESTDIR=`pwd`/.. make $$_make_opts install )
+ ( cd ../jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION) \&\& \
+ mkdir .build \&\& \
+ cd .build \&\& \
+ OpenTracing_DIR=$$builddir/../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/.build cmake -DCMAKE_BUILD_TYPE=Release -DJAEGERTRACING_PLUGIN=ON -DHUNTER_CONFIGURATION_TYPES=Release -DBUILD_TESTING=OFF ../ -DOPENTRACING_INC=$$builddir/../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include \&\& \
+ DESTDIR=`pwd`/.. make $$_make_opts )
+endef
+export MODULE_PREBUILD_opentracing
+
+MODULE_CC_OPT_opentracing=-I../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include
+MODULE_CC_OPT_DEBUG_opentracing=$(MODULE_CC_OPT_opentracing)
+MODULE_LD_OPT_opentracing=-L../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib
+MODULE_LD_OPT_DEBUG_opentracing=$(MODULE_LD_OPT_opentracing)
+
+define MODULE_PREINSTALL_opentracing
+ mkdir -p "$$pkgdir"/usr/lib
+ install -m755 ../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing.so.$(OPENTRACING_CPP_VERSION) "$$pkgdir"/usr/lib/
+ ln -fs libopentracing.so.$(OPENTRACING_CPP_VERSION) "$$pkgdir"/usr/lib/libopentracing.so.1
+ ln -fs libopentracing.so.1 "$$pkgdir"/usr/lib/libopentracing.so
+ install -m755 ../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) "$$pkgdir"/usr/lib/
+ ln -fs libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) "$$pkgdir"/usr/lib/libopentracing_mocktracer.so.1
+ ln -fs libopentracing_mocktracer.so.1 "$$pkgdir"/usr/lib/libmodsecurity_mocktracer.so
+ mkdir -p "$$pkgdir"/usr/include
+ cp -pr ../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include/opentracing "$$pkgdir"/usr/include/
+ mkdir -p "$$pkgdir"/usr/libexec/opentracing
+ install -m755 ../jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION)/.build/libjaegertracing_plugin.so "$$pkgdir"/usr/libexec/opentracing/
+endef
+export MODULE_PREINSTALL_opentracing
+
+define MODULE_POST_opentracing
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_opentracing) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_opentracing_module.so;
+
+Note that additional tracer plugins are required in order
+to communicate with corresponding services (e.g. Zipkin, Jaeger).
+This package includes the Jaeger dynamic tracer plugin:
+
+ /usr/libexec/opentracing/libjaegertracing_plugin.so
+
+Please refer to the module documentation for further details:
+https://github.com/opentracing-contrib/nginx-opentracing
+https://github.com/opentracing-contrib/nginx-opentracing/blob/master/doc/Reference.md
+
+OpenTracing project site (general info and documentation):
+http://opentracing.io/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_opentracing
diff --git a/alpine/Makefile.module-passenger b/alpine/Makefile.module-passenger
new file mode 100644
index 0000000..69a693e
--- /dev/null
+++ b/alpine/Makefile.module-passenger
@@ -0,0 +1,44 @@
+MODULES+= passenger
+
+MODULE_SUMMARY_passenger= 3rd-party Passenger dynamic module
+
+include $(CONTRIB)/src/passenger/version
+
+MODULE_VERSION_passenger= $(PASSENGER_VERSION)
+MODULE_RELEASE_passenger= 1
+
+MODULE_VERSION_PREFIX_passenger=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_passenger= passenger-$(PASSENGER_VERSION).tar.gz
+
+MODULE_PATCHES_passenger= $(CONTRIB)/src/passenger/build-nginx.rb.patch \
+ $(CONTRIB)/src/passenger/src-nginx_module-ContentHandler.c.patch
+
+MODULE_CONFARGS_passenger= --with-http_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)passenger-$(PASSENGER_VERSION)/src/nginx_module
+
+.deps-module-passenger:
+ cd $(CONTRIB) && make .sum-passenger
+ touch $@
+
+prerequisites-for-module-passenger:
+
+MODULE_BUILD_DEPENDS_passenger=ruby-dev ruby-rake ruby-etc
+
+define MODULE_POST_passenger
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_passenger) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_passenger_module.so;
+
+Please refer to the module documentation for further details:
+https://www.phusionpassenger.com/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_passenger
diff --git a/alpine/Makefile.module-perl b/alpine/Makefile.module-perl
index 330dd48..22a6fe2 100644
--- a/alpine/Makefile.module-perl
+++ b/alpine/Makefile.module-perl
@@ -34,7 +34,7 @@
load_module modules/ngx_http_perl_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_perl_module.html
+https://nginx.org/en/docs/http/ngx_http_perl_module.html
----------------------------------------------------------------------
BANNER
diff --git a/alpine/Makefile.module-rtmp b/alpine/Makefile.module-rtmp
new file mode 100644
index 0000000..d205e94
--- /dev/null
+++ b/alpine/Makefile.module-rtmp
@@ -0,0 +1,40 @@
+MODULES+= rtmp
+
+MODULE_SUMMARY_rtmp= 3rd-party RTMP dynamic module
+
+include $(CONTRIB)/src/nginx-rtmp-module/version
+
+MODULE_VERSION_rtmp= $(NGINX_RTMP_MODULE_VERSION)
+MODULE_RELEASE_rtmp= 1
+
+MODULE_VERSION_PREFIX_rtmp=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_rtmp= nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz
+
+MODULE_PATCHES_rtmp= $(CONTRIB)/src/nginx-rtmp-module/PR1340.patch
+
+MODULE_CONFARGS_rtmp= --add-dynamic-module=$(MODSRC_PREFIX)nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION)
+
+.deps-module-rtmp:
+ cd $(CONTRIB) && make .sum-nginx-rtmp-module
+ touch $@
+
+prerequisites-for-module-rtmp:
+
+define MODULE_POST_rtmp
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_rtmp) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_rtmp_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/arut/nginx-rtmp-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_rtmp
diff --git a/alpine/Makefile.module-set-misc b/alpine/Makefile.module-set-misc
new file mode 100644
index 0000000..ef9eae8
--- /dev/null
+++ b/alpine/Makefile.module-set-misc
@@ -0,0 +1,55 @@
+MODULES+= set-misc
+
+MODULE_SUMMARY_set_misc= 3rd-party set-misc dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/set-misc-nginx-module/version
+
+MODULE_VERSION_set_misc= $(SET_MISC_NGINX_MODULE_VERSION)
+MODULE_RELEASE_set_misc= 1
+
+MODULE_VERSION_PREFIX_set_misc=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_set_misc= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_set_misc= --with-http_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION)
+
+.deps-module-set-misc:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-set-misc-nginx-module
+ touch $@
+
+prerequisites-for-module-set-misc: module-ndk
+
+MODULE_DEPENDS_set_misc=$(NDK_DEPENDENCY_TAG)
+
+define MODULE_PREINSTALL_set_misc
+ rm -f objs/ndk_http_module-debug.so
+ rm -f objs/ndk_http_module.so
+endef
+export MODULE_PREINSTALL_set_misc
+
+define MODULE_POST_set_misc
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_set_misc) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_set_misc_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/set-misc-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_set_misc
diff --git a/alpine/Makefile.module-subs-filter b/alpine/Makefile.module-subs-filter
new file mode 100644
index 0000000..6b5213a
--- /dev/null
+++ b/alpine/Makefile.module-subs-filter
@@ -0,0 +1,38 @@
+MODULES+= subs-filter
+
+MODULE_SUMMARY_subs_filter= 3rd-party substitution dynamic module
+
+include $(CONTRIB)/src/ngx_http_substitutions_filter_module/version
+
+MODULE_VERSION_subs_filter= $(SUBSTITUTIONS_FILTER_NGINX_MODULE_VERSION)
+MODULE_RELEASE_subs_filter= 1
+
+MODULE_VERSION_PREFIX_subs_filter=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_subs_filter= ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz
+
+MODULE_CONFARGS_subs_filter= --add-dynamic-module=$(MODSRC_PREFIX)ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH)
+
+.deps-module-subs-filter:
+ cd $(CONTRIB) && make .sum-ngx_http_substitutions_filter_module
+ touch $@
+
+prerequisites-for-module-subs-filter:
+
+define MODULE_POST_subs_filter
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_subs_filter) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_subs_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/yaoweibin/ngx_http_substitutions_filter_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_subs_filter
diff --git a/alpine/Makefile.module-xslt b/alpine/Makefile.module-xslt
index f4674a1..1329c48 100644
--- a/alpine/Makefile.module-xslt
+++ b/alpine/Makefile.module-xslt
@@ -7,7 +7,6 @@
MODULE_CONFARGS_xslt= --with-http_xslt_module=dynamic
-MODULE_DEPENDS_xslt=libxslt
MODULE_BUILD_DEPENDS_xslt=libxslt-dev
define MODULE_ADD_CONTROL_TAGS_xslt
@@ -26,7 +25,7 @@
load_module modules/ngx_http_xslt_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_xslt_module.html
+https://nginx.org/en/docs/http/ngx_http_xslt_module.html
----------------------------------------------------------------------
BANNER
diff --git a/alpine/nginx.post-install b/alpine/nginx.post-install
index 13e7299..102c3e7 100644
--- a/alpine/nginx.post-install
+++ b/alpine/nginx.post-install
@@ -6,14 +6,14 @@
Thanks for using nginx!
Please find the official documentation for nginx here:
-* http://nginx.org/en/docs/
+* https://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
-* http://nginx.org/en/support.html
+* https://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
-* http://nginx.com/products/
+* https://nginx.com/products/
----------------------------------------------------------------------
BANNER
diff --git a/alpine/src/njs-0.5.0.tar.gz b/alpine/src/njs-0.5.0.tar.gz
deleted file mode 100644
index 688acfe..0000000
--- a/alpine/src/njs-0.5.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/contrib/.hgignore b/contrib/.hgignore
new file mode 100644
index 0000000..55586f6
--- /dev/null
+++ b/contrib/.hgignore
@@ -0,0 +1,2 @@
+syntax:glob
+.sum-*
diff --git a/contrib/Makefile b/contrib/Makefile
new file mode 100644
index 0000000..27addce
--- /dev/null
+++ b/contrib/Makefile
@@ -0,0 +1,143 @@
+all: install
+
+TOPSRC := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+SRC := $(TOPSRC)/src
+TARBALLS := $(TOPSRC)/tarballs
+VPATH := $(TARBALLS)
+PREFIX = $(TOPSRC)/local
+PREFIX := $(abspath $(PREFIX))
+
+PKGS_ALL := $(patsubst $(SRC)/%/Makefile,%,$(wildcard $(SRC)/*/Makefile))
+
+# Common download locations
+NGINX := https://nginx.org/download
+CONTRIB_NGINX := https://packages.nginx.org/contrib
+GITHUB := https://github.com
+
+#
+# Tools
+#
+NPROC := $(shell getconf _NPROCESSORS_ONLN)
+_SMP_MFLAGS := -j$(NPROC)
+
+ifndef GIT
+ifeq ($(shell git --version >/dev/null 2>&1 || echo FAIL),)
+GIT = git
+endif
+endif
+GIT ?= $(error git not found)
+
+ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),)
+download = curl -f -L -- "$(1)" > "$@"
+else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),)
+download = (rm -f $@.tmp && \
+ wget --passive -c -p -O $@.tmp "$(1)" && \
+ touch $@.tmp && \
+ mv $@.tmp $@ )
+else ifeq ($(which fetch >/dev/null 2>&1 || echo FAIL),)
+download = (rm -f $@.tmp && \
+ fetch -p -o $@.tmp "$(1)" && \
+ touch $@.tmp && \
+ mv $@.tmp $@)
+else
+download = $(error Neither curl nor wget found)
+endif
+
+download_pkg = $(call download,$(CONTRIB_NGINX)/$(2)/$(lastword $(subst /, ,$(@)))) || \
+ ( $(call download,$(1)) && echo "Please upload $(lastword $(subst /, ,$(@))) to $(CONTRIB_NGINX)" )
+
+ifeq ($(shell which xz >/dev/null 2>&1 || echo FAIL),)
+XZ = xz
+else
+XZ ?= $(error XZ (LZMA) compressor not found)
+endif
+
+ifeq ($(shell sha512sum --version >/dev/null 2>&1 || echo FAIL),)
+SHA512SUM = sha512sum --check
+else ifeq ($(shell shasum --version >/dev/null 2>&1 || echo FAIL),)
+SHA512SUM = shasum -a 512 --check
+else ifeq ($(shell openssl version >/dev/null 2>&1 || echo FAIL),)
+SHA512SUM = openssl dgst -sha512
+else
+SHA512SUM = $(error SHA-512 checksumming not found)
+endif
+
+#
+# Common helpers
+#
+download_git = \
+ rm -Rf -- "$(@:.tar.xz=)" && \
+ $(GIT) init --bare "$(@:.tar.xz=)" && \
+ (cd "$(@:.tar.xz=)" && \
+ $(GIT) remote add origin "$(1)" && \
+ $(GIT) fetch origin "$(2)") && \
+ (cd "$(@:.tar.xz=)" && \
+ $(GIT) archive --prefix="$(notdir $(@:.tar.xz=))/" \
+ --format=tar "$(3)") > "$(@:.xz=)" && \
+ echo "$(3) $(@)" > "$(@:.tar.xz=.githash)" && \
+ rm -Rf -- "$(@:.tar.xz=)" && \
+ $(XZ) --stdout "$(@:.xz=)" > "$@.tmp" && \
+ rm -f "$(@:.xz=)" && \
+ mv -f -- "$@.tmp" "$@"
+check_githash = \
+ h=`sed -e "s,^\([0-9a-fA-F]\{40\}\) .*/$(notdir $<),\1,g" \
+ < "$(<:.tar.xz=.githash)"` && \
+ test "$$h" = "$1"
+
+checksum = \
+ $(foreach f,$(filter $(TARBALLS)/%,$^), \
+ grep -- " $(f:$(TARBALLS)/%=%)$$" \
+ "$(SRC)/$(patsubst $(3)%,%,$@)/$(2)SUMS" &&) \
+ (cd $(TARBALLS) && $(1) /dev/stdin) < \
+ "$(SRC)/$(patsubst $(3)%,%,$@)/$(2)SUMS"
+CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512,.sum-)
+UNPACK = $(RM) -R $@ \
+ $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzfo $(f)) \
+ $(foreach f,$(filter %.tar.bz2,$^), && tar xvjfo $(f)) \
+ $(foreach f,$(filter %.tar.xz,$^), && tar xvJfo $(f)) \
+ $(foreach f,$(filter %.zip,$^), && unzip $(f))
+UNPACK_DIR = $(patsubst %.tar,%,$(basename $(notdir $<)))
+APPLY = (cd $(UNPACK_DIR) && patch -fp1) <
+MOVE = mv $(UNPACK_DIR) $@ && touch $@
+
+# Per-package build rules
+include $(SRC)/*/Makefile
+
+# Targets
+PKGS_DEPS := $(sort $(foreach p,$(PKGS),$(DEPS_$(p))))
+
+fetch: $(PKGS:%=.sum-%)
+install: $(PKGS:%=.%)
+
+clean:
+ -$(RM) $(foreach p,$(PKGS),.$(p) .sum-$(p) .dep-$(p))
+ -$(RM) -R $(foreach p,$(PKGS),$(p))
+ -$(RM) -R "$(PREFIX)"
+ -$(RM) $(TARBALLS)/*.*
+
+list:
+ @echo Packages:
+ @echo ' $(PKGS)' | tr " " "\n" | sort | tr "\n" " " |fmt
+ @echo Depended-on packages:
+ @echo ' $(PKGS_DEPS)' | tr " " "\n" | sort | tr "\n" " " |fmt
+
+.PHONY: all fetch install clean list
+
+# Default pattern rules
+.sum-%: $(SRC)/%/SHA512SUMS
+ $(CHECK_SHA512)
+ touch $@
+
+.sum-%:
+ $(error Download and check target not defined for $*)
+
+# Real dependency on missing packages
+$(patsubst %,.dep-%,$(PKGS)): .dep-%: .%
+ touch -r $< $@
+
+.SECONDEXPANSION:
+
+# Dependency propagation (convert 'DEPS_foo = bar' to '.foo: .bar')
+$(foreach p,$(PKGS),.$(p)): .%: $$(foreach d,$$(DEPS_$$*),.dep-$$(d))
+
+.DELETE_ON_ERROR:
diff --git a/contrib/src/encrypted-session-nginx-module/Makefile b/contrib/src/encrypted-session-nginx-module/Makefile
new file mode 100644
index 0000000..10afec9
--- /dev/null
+++ b/contrib/src/encrypted-session-nginx-module/Makefile
@@ -0,0 +1,20 @@
+# encrypted-session-nginx-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+ENCRYPTED_SESSION_NGINX_MODULE_URL := $(GITHUB)/openresty/encrypted-session-nginx-module/archive/v$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += encrypted-session-nginx-module
+
+$(TARBALLS)/encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(ENCRYPTED_SESSION_NGINX_MODULE_URL),encrypted-session-nginx-module)
+
+.sum-encrypted-session-nginx-module: encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz
+
+encrypted-session-nginx-module: encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz .sum-encrypted-session-nginx-module
+ $(UNPACK)
+ $(MOVE)
+
+DEPS_encrypted-session-nginx-module = ngx_devel_kit $(DEPS_ngx_devel_kit)
+
+.encrypted-session-nginx-module: encrypted-session-nginx-module
+ touch $@
diff --git a/contrib/src/encrypted-session-nginx-module/SHA512SUMS b/contrib/src/encrypted-session-nginx-module/SHA512SUMS
new file mode 100644
index 0000000..a91d560
--- /dev/null
+++ b/contrib/src/encrypted-session-nginx-module/SHA512SUMS
@@ -0,0 +1 @@
+80651951edd69d202e991a66f531bbe0398b4f062e822bb7748411f5f597eb1d5827102ba477bb6cd2793274adf6f6d60dd89fde7645174b091143251197af69 encrypted-session-nginx-module-0.08.tar.gz
diff --git a/contrib/src/encrypted-session-nginx-module/version b/contrib/src/encrypted-session-nginx-module/version
new file mode 100644
index 0000000..c043551
--- /dev/null
+++ b/contrib/src/encrypted-session-nginx-module/version
@@ -0,0 +1 @@
+ENCRYPTED_SESSION_NGINX_MODULE_VERSION := 0.08
diff --git a/contrib/src/headers-more-nginx-module/Makefile b/contrib/src/headers-more-nginx-module/Makefile
new file mode 100644
index 0000000..0601976
--- /dev/null
+++ b/contrib/src/headers-more-nginx-module/Makefile
@@ -0,0 +1,18 @@
+# headers-more-nginx-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+HEADERS_MORE_NGINX_MODULE_URL := $(GITHUB)/openresty/headers-more-nginx-module/archive/v$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += headers-more-nginx-module
+
+$(TARBALLS)/headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(HEADERS_MORE_NGINX_MODULE_URL),headers-more-nginx-module)
+
+.sum-headers-more-nginx-module: headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz
+
+headers-more-nginx-module: headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz .sum-headers-more-nginx-module
+ $(UNPACK)
+ $(MOVE)
+
+.headers-more-nginx-module: headers-more-nginx-module
+ touch $@
diff --git a/contrib/src/headers-more-nginx-module/SHA512SUMS b/contrib/src/headers-more-nginx-module/SHA512SUMS
new file mode 100644
index 0000000..e2f3bde
--- /dev/null
+++ b/contrib/src/headers-more-nginx-module/SHA512SUMS
@@ -0,0 +1 @@
+13165b1b8d4be281b8bd2404fa48d456013d560bace094c81da08a35dc6a4f025a809a3ae3a42be6bbf67abbcbe41e0730aba06f905220f3baeb01e1192a7d37 headers-more-nginx-module-0.33.tar.gz
diff --git a/contrib/src/headers-more-nginx-module/version b/contrib/src/headers-more-nginx-module/version
new file mode 100644
index 0000000..53ac4c1
--- /dev/null
+++ b/contrib/src/headers-more-nginx-module/version
@@ -0,0 +1 @@
+HEADERS_MORE_NGINX_MODULE_VERSION := 0.33
diff --git a/contrib/src/jaeger-client-cpp/CMakeLists.txt.patch b/contrib/src/jaeger-client-cpp/CMakeLists.txt.patch
new file mode 100644
index 0000000..9341f09
--- /dev/null
+++ b/contrib/src/jaeger-client-cpp/CMakeLists.txt.patch
@@ -0,0 +1,44 @@
+--- a/CMakeLists.txt 2020-06-08 15:24:23.000000000 +0000
++++ b/CMakeLists.txt 2020-12-10 14:06:50.510344080 +0000
+@@ -69,18 +69,11 @@
+ list(APPEND package_deps thrift)
+
+
+-hunter_add_package(opentracing-cpp)
+-# Not `${hunter_config}` because OpenTracing provides its own
+-# OpenTracingConfig.cmake file
++# use our own prebuilt version of opentracing-cpp
++include_directories(${OPENTRACING_INC})
+ find_package(OpenTracing CONFIG REQUIRED)
+-# Under Windows, link dynamically with OpenTracing
+-if (WIN32)
+- list(APPEND LIBS OpenTracing::opentracing)
+- set(OPENTRACING_LIB OpenTracing::opentracing)
+-else()
+- list(APPEND LIBS OpenTracing::opentracing-static)
+- set(OPENTRACING_LIB OpenTracing::opentracing-static)
+-endif()
++list(APPEND LIBS OpenTracing::opentracing-static)
++set(OPENTRACING_LIB OpenTracing::opentracing-static)
+ list(APPEND package_deps OpenTracing)
+
+ hunter_add_package(nlohmann_json)
+@@ -97,16 +90,8 @@
+ "NOT JAEGERTRACING_BUILD_CROSSDOCK" ON)
+
+ if(JAEGERTRACING_WITH_YAML_CPP)
+- hunter_add_package(yaml-cpp)
+- # Not `${hunter_config}` because yaml-cpp provides its own
+- # yaml-cpp-config.cmake file
+- find_package(yaml-cpp CONFIG REQUIRED)
+- if(HUNTER_ENABLED)
+- list(APPEND LIBS yaml-cpp::yaml-cpp)
+- else()
+- list(APPEND LIBS yaml-cpp)
+- endif()
+- list(APPEND package_deps yaml-cpp)
++ # rely on yaml-cpp provided by OS vendor
++ list(APPEND LIBS yaml-cpp)
+ endif()
+
+ include(CTest)
diff --git a/contrib/src/jaeger-client-cpp/Makefile b/contrib/src/jaeger-client-cpp/Makefile
new file mode 100644
index 0000000..ecf94b8
--- /dev/null
+++ b/contrib/src/jaeger-client-cpp/Makefile
@@ -0,0 +1,28 @@
+# jaeger-client-cpp
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+JAEGER_CLIENT_CPP_URL := $(GITHUB)/jaegertracing/jaeger-client-cpp/archive/v$(JAEGER_CLIENT_CPP_VERSION).tar.gz
+
+PKGS += jaeger-client-cpp
+
+$(TARBALLS)/jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz:
+ $(call download_pkg,$(JAEGER_CLIENT_CPP_URL),jaeger-client-cpp)
+
+.sum-jaeger-client-cpp: jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz
+
+jaeger-client-cpp: jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz .sum-jaeger-client-cpp
+ $(UNPACK)
+ $(APPLY) $(SRC)/jaeger-client-cpp/CMakeLists.txt.patch
+ $(MOVE)
+
+DEPS_jaeger-client-cpp = opentracing-cpp $(DEPS_opentracing-cpp)
+
+# note the https://github.com/google/myanmar-tools/issues/42
+.jaeger-client-cpp: jaeger-client-cpp
+ cd $< && \
+ mkdir -p .build && \
+ cd .build && \
+ CXXFLAGS="-Wno-error=deprecated-copy" OpenTracing_DIR=$(TOPSRC)/opentracing-cpp/.build cmake -DCMAKE_BUILD_TYPE=Release -DJAEGERTRACING_PLUGIN=ON -DHUNTER_CONFIGURATION_TYPES=Release -DOPENTRACING_INC=$(TOPSRC)/local/usr/local/include ../ && \
+ make $(_SMP_MFLAGS)
+ cd $< && install -s .build/libjaegertracing_plugin.so $(PREFIX)/
+ touch $@
diff --git a/contrib/src/jaeger-client-cpp/SHA512SUMS b/contrib/src/jaeger-client-cpp/SHA512SUMS
new file mode 100644
index 0000000..023f8c1
--- /dev/null
+++ b/contrib/src/jaeger-client-cpp/SHA512SUMS
@@ -0,0 +1 @@
+e2cd621a51f0e4d25ff67ddbe86f17f6ef976e36b99c489aebdd330616e641fd0e428d2301a394eaa8920d35619f2d6172c436e8b828f44bdbe39e290e1849f0 jaeger-client-cpp-0.6.0.tar.gz
diff --git a/contrib/src/jaeger-client-cpp/version b/contrib/src/jaeger-client-cpp/version
new file mode 100644
index 0000000..0d212b5
--- /dev/null
+++ b/contrib/src/jaeger-client-cpp/version
@@ -0,0 +1 @@
+JAEGER_CLIENT_CPP_VERSION := 0.6.0
diff --git a/contrib/src/lua-nginx-module/Makefile b/contrib/src/lua-nginx-module/Makefile
new file mode 100644
index 0000000..164e088
--- /dev/null
+++ b/contrib/src/lua-nginx-module/Makefile
@@ -0,0 +1,21 @@
+# lua-nginx-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+LUA_NGINX_MODULE_URL := $(GITHUB)/openresty/lua-nginx-module/archive/v$(LUA_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += lua-nginx-module
+
+$(TARBALLS)/lua-nginx-module-$(LUA_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(LUA_NGINX_MODULE_URL),lua-nginx-module)
+
+.sum-lua-nginx-module: lua-nginx-module-$(LUA_NGINX_MODULE_VERSION).tar.gz
+
+lua-nginx-module: lua-nginx-module-$(LUA_NGINX_MODULE_VERSION).tar.gz .sum-lua-nginx-module
+ $(UNPACK)
+ $(APPLY) $(SRC)/lua-nginx-module/config.patch
+ $(MOVE)
+
+DEPS_lua-nginx-module = luajit2 $(DEPS_luajit2) ngx_devel_kit $(DEPS_ngx_devel_kit)
+
+.lua-nginx-module: lua-nginx-module
+ touch $@
diff --git a/contrib/src/lua-nginx-module/SHA512SUMS b/contrib/src/lua-nginx-module/SHA512SUMS
new file mode 100644
index 0000000..80c6d91
--- /dev/null
+++ b/contrib/src/lua-nginx-module/SHA512SUMS
@@ -0,0 +1 @@
+6b258bdcb45f99f9cec3df14fa6747704ab1f0005f8a2ccd4440f8ec477e3dcbf6026e1acffc9d5fecb79605248168a77bd2a26d67c98c7d5cc336f9474ef68c lua-nginx-module-0.10.19.tar.gz
diff --git a/contrib/src/lua-nginx-module/config.patch b/contrib/src/lua-nginx-module/config.patch
new file mode 100644
index 0000000..2fc73f7
--- /dev/null
+++ b/contrib/src/lua-nginx-module/config.patch
@@ -0,0 +1,26 @@
+--- a/config 2015-12-20 05:43:48.000000000 +0000
++++ b/config 2015-12-25 08:01:04.138004474 +0000
+@@ -45,9 +45,9 @@
+ NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
+
+ if [ $NGX_RPATH = YES ]; then
+- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a -R$LUAJIT_LIB $luajit_ld_opt"
+ else
+- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a $ngx_lua_opt_L $luajit_ld_opt"
+ fi
+
+ . auto/feature
+@@ -71,9 +71,9 @@
+ NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
+
+ if [ $NGX_RPATH = YES ]; then
+- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a -R$LUAJIT_LIB $luajit_ld_opt"
+ else
+- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a $luajit_ld_opt"
+ fi
+
+ . auto/feature
diff --git a/contrib/src/lua-nginx-module/version b/contrib/src/lua-nginx-module/version
new file mode 100644
index 0000000..0b9a048
--- /dev/null
+++ b/contrib/src/lua-nginx-module/version
@@ -0,0 +1 @@
+LUA_NGINX_MODULE_VERSION := 0.10.19
diff --git a/contrib/src/lua-resty-core/Makefile b/contrib/src/lua-resty-core/Makefile
new file mode 100644
index 0000000..9fe8375
--- /dev/null
+++ b/contrib/src/lua-resty-core/Makefile
@@ -0,0 +1,18 @@
+# lua-resty-core
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+LUA_RESTY_CORE_URL := $(GITHUB)/openresty/lua-resty-core/archive/v$(LUA_RESTY_CORE_VERSION).tar.gz
+
+PKGS += lua-resty-core
+
+$(TARBALLS)/lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz:
+ $(call download_pkg,$(LUA_RESTY_CORE_URL),lua-resty-core)
+
+.sum-lua-resty-core: lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz
+
+lua-resty-core: lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz .sum-lua-resty-core
+ $(UNPACK)
+ $(MOVE)
+
+.lua-resty-core: lua-resty-core
+ touch $@
diff --git a/contrib/src/lua-resty-core/SHA512SUMS b/contrib/src/lua-resty-core/SHA512SUMS
new file mode 100644
index 0000000..67e1b69
--- /dev/null
+++ b/contrib/src/lua-resty-core/SHA512SUMS
@@ -0,0 +1 @@
+e34475fe3966493d010dd0e6e9d0073e6cd6e700ccf34048b6ac26af52206333b12500c755f29904fd5d792556d26d19f0ddfd3b61cd9f5e0dc608bef17051a5 lua-resty-core-0.1.21.tar.gz
diff --git a/contrib/src/lua-resty-core/version b/contrib/src/lua-resty-core/version
new file mode 100644
index 0000000..9878847
--- /dev/null
+++ b/contrib/src/lua-resty-core/version
@@ -0,0 +1 @@
+LUA_RESTY_CORE_VERSION := 0.1.21
diff --git a/contrib/src/lua-resty-lrucache/Makefile b/contrib/src/lua-resty-lrucache/Makefile
new file mode 100644
index 0000000..d6134ff
--- /dev/null
+++ b/contrib/src/lua-resty-lrucache/Makefile
@@ -0,0 +1,18 @@
+# lua-resty-lrucache
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+LUA_RESTY_LRUCACHE_URL := $(GITHUB)/openresty/lua-resty-lrucache/archive/v$(LUA_RESTY_LRUCACHE_VERSION).tar.gz
+
+PKGS += lua-resty-lrucache
+
+$(TARBALLS)/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz:
+ $(call download_pkg,$(LUA_RESTY_LRUCACHE_URL),lua-resty-lrucache)
+
+.sum-lua-resty-lrucache: lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz
+
+lua-resty-lrucache: lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz .sum-lua-resty-lrucache
+ $(UNPACK)
+ $(MOVE)
+
+.lua-resty-lrucache: lua-resty-lrucache
+ touch $@
diff --git a/contrib/src/lua-resty-lrucache/SHA512SUMS b/contrib/src/lua-resty-lrucache/SHA512SUMS
new file mode 100644
index 0000000..01d7e1a
--- /dev/null
+++ b/contrib/src/lua-resty-lrucache/SHA512SUMS
@@ -0,0 +1 @@
+619d52bded0c81913d285a5087e2544946f21e2cdddcf38a998230b023839ac158f329e46ec8f85b83f43076ee3237be25e0d2f872126064f45050d0dd7ec78e lua-resty-lrucache-0.10.tar.gz
diff --git a/contrib/src/lua-resty-lrucache/version b/contrib/src/lua-resty-lrucache/version
new file mode 100644
index 0000000..0bd59ad
--- /dev/null
+++ b/contrib/src/lua-resty-lrucache/version
@@ -0,0 +1 @@
+LUA_RESTY_LRUCACHE_VERSION := 0.10
diff --git a/contrib/src/luajit2/Makefile b/contrib/src/luajit2/Makefile
new file mode 100644
index 0000000..8ca77dd
--- /dev/null
+++ b/contrib/src/luajit2/Makefile
@@ -0,0 +1,22 @@
+# LuaJIT2
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+LUAJIT2_URL := $(GITHUB)/openresty/luajit2/archive/v$(LUAJIT2_VERSION).tar.gz
+
+PKGS += luajit2
+
+$(TARBALLS)/luajit2-$(LUAJIT2_VERSION).tar.gz:
+ $(call download_pkg,$(LUAJIT2_URL),luajit2)
+
+.sum-luajit2: luajit2-$(LUAJIT2_VERSION).tar.gz
+
+luajit2: luajit2-$(LUAJIT2_VERSION).tar.gz .sum-luajit2
+ $(UNPACK)
+ $(APPLY) $(SRC)/luajit2/Makefile.patch
+ $(APPLY) $(SRC)/luajit2/src-luaconf.h.patch
+ $(MOVE)
+
+.luajit2: luajit2
+ cd $< && DESTDIR=$(PREFIX) CFLAGS="-fPIC" $(MAKE) install
+ mv $(PREFIX)/usr/bin/luajit $(PREFIX)/usr/bin/nginx-luajit
+ touch $@
diff --git a/contrib/src/luajit2/Makefile.patch b/contrib/src/luajit2/Makefile.patch
new file mode 100644
index 0000000..79c6033
--- /dev/null
+++ b/contrib/src/luajit2/Makefile.patch
@@ -0,0 +1,23 @@
+--- a/Makefile 2017-09-14 14:20:50.000000000 +0300
++++ b/Makefile 2017-09-14 14:22:39.000000000 +0300
+@@ -25,7 +25,7 @@
+ # Change the installation path as needed. This automatically adjusts
+ # the paths in src/luaconf.h, too. Note: PREFIX must be an absolute path!
+ #
+-export PREFIX= /usr/local
++export PREFIX= /usr
+ export MULTILIB= lib
+ ##############################################################################
+
+@@ -33,9 +33,9 @@
+ INSTALL_BIN= $(DPREFIX)/bin
+ INSTALL_LIB= $(DPREFIX)/$(MULTILIB)
+ INSTALL_SHARE= $(DPREFIX)/share
+-INSTALL_INC= $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER)
++INSTALL_INC= $(DPREFIX)/include/nginx-luajit-$(MAJVER).$(MINVER)
+
+-INSTALL_LJLIBD= $(INSTALL_SHARE)/luajit-$(VERSION)
++INSTALL_LJLIBD= $(INSTALL_SHARE)/nginx-luajit-2.1
+ INSTALL_JITLIB= $(INSTALL_LJLIBD)/jit
+ INSTALL_LMODD= $(INSTALL_SHARE)/lua
+ INSTALL_LMOD= $(INSTALL_LMODD)/$(ABIVER)
diff --git a/contrib/src/luajit2/SHA512SUMS b/contrib/src/luajit2/SHA512SUMS
new file mode 100644
index 0000000..3e1fdfa
--- /dev/null
+++ b/contrib/src/luajit2/SHA512SUMS
@@ -0,0 +1 @@
+808a2564d02a261a9e4c94af5ba8051a1ea271f4187f46ca58b9894d0f69e42040d603d6d1caa03812a1db092684010498601e4d33a95d3e7955497e29f48a06 luajit2-2.1-20201027.tar.gz
diff --git a/contrib/src/luajit2/src-luaconf.h.patch b/contrib/src/luajit2/src-luaconf.h.patch
new file mode 100644
index 0000000..02783dd
--- /dev/null
+++ b/contrib/src/luajit2/src-luaconf.h.patch
@@ -0,0 +1,11 @@
+--- a/src/luaconf.h 2017-09-14 14:24:29.000000000 +0300
++++ b/src/luaconf.h 2017-09-14 14:25:08.000000000 +0300
+@@ -37,7 +37,7 @@
+ #endif
+ #define LUA_LROOT "/usr/local"
+ #define LUA_LUADIR "/lua/5.1/"
+-#define LUA_LJDIR "/luajit-2.1.0-beta3/"
++#define LUA_LJDIR "/nginx-luajit-2.1/"
+
+ #ifdef LUA_ROOT
+ #define LUA_JROOT LUA_ROOT
diff --git a/contrib/src/luajit2/version b/contrib/src/luajit2/version
new file mode 100644
index 0000000..0f46d87
--- /dev/null
+++ b/contrib/src/luajit2/version
@@ -0,0 +1 @@
+LUAJIT2_VERSION := 2.1-20201027
diff --git a/contrib/src/modsecurity-nginx/Makefile b/contrib/src/modsecurity-nginx/Makefile
new file mode 100644
index 0000000..ac768a5
--- /dev/null
+++ b/contrib/src/modsecurity-nginx/Makefile
@@ -0,0 +1,23 @@
+# ModSecurity-nginx
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+MODSECURITY_NGINX_GITURL := $(GITHUB)/SpiderLabs/ModSecurity-nginx.git
+
+PKGS += modsecurity-nginx
+
+$(TARBALLS)/modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz:
+ $(call download_git,$(MODSECURITY_NGINX_GITURL),,$(MODSECURITY_NGINX_GITHASH))
+
+.sum-modsecurity-nginx: modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+ $(call check_githash,$(MODSECURITY_NGINX_GITHASH))
+ touch $@
+
+modsecurity-nginx: modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz .sum-modsecurity-nginx
+ $(UNPACK)
+ $(APPLY) $(SRC)/modsecurity-nginx/PR165.patch
+ $(MOVE)
+
+DEPS_modsecurity-nginx = modsecurity $(DEPS_modsecurity)
+
+.modsecurity-nginx: modsecurity-nginx
+ touch $@
diff --git a/contrib/src/modsecurity-nginx/PR165.patch b/contrib/src/modsecurity-nginx/PR165.patch
new file mode 100644
index 0000000..d0505e7
--- /dev/null
+++ b/contrib/src/modsecurity-nginx/PR165.patch
@@ -0,0 +1,73 @@
+From d8987f6476edd2ac9d5df99778f9e12cfbe8e83e Mon Sep 17 00:00:00 2001
+From: Andrei Belov <defanator@gmail.com>
+Date: Tue, 6 Aug 2019 16:32:15 +0300
+Subject: [PATCH] Avoid processing of subrequests initiated by the error_page
+
+Closes #164, SpiderLabs/ModSecurity#2143.
+---
+ src/ngx_http_modsecurity_header_filter.c | 4 ++++
+ src/ngx_http_modsecurity_log.c | 4 ++++
+ src/ngx_http_modsecurity_pre_access.c | 4 ++++
+ src/ngx_http_modsecurity_rewrite.c | 4 ++++
+ 4 files changed, 16 insertions(+)
+
+diff --git a/src/ngx_http_modsecurity_header_filter.c b/src/ngx_http_modsecurity_header_filter.c
+index 3f9f748..04ad7ac 100644
+--- a/src/ngx_http_modsecurity_header_filter.c
++++ b/src/ngx_http_modsecurity_header_filter.c
+@@ -420,6 +420,10 @@ ngx_http_modsecurity_header_filter(ngx_http_request_t *r)
+
+ /* XXX: if NOT_MODIFIED, do we need to process it at all? see xslt_header_filter() */
+
++ if (r->error_page) {
++ return ngx_http_next_header_filter(r);
++ }
++
+ ctx = ngx_http_get_module_ctx(r, ngx_http_modsecurity_module);
+
+ dd("header filter, recovering ctx: %p", ctx);
+diff --git a/src/ngx_http_modsecurity_log.c b/src/ngx_http_modsecurity_log.c
+index 5546596..39cf6b7 100644
+--- a/src/ngx_http_modsecurity_log.c
++++ b/src/ngx_http_modsecurity_log.c
+@@ -41,6 +41,10 @@ ngx_http_modsecurity_log_handler(ngx_http_request_t *r)
+ ngx_http_modsecurity_ctx_t *ctx;
+ ngx_http_modsecurity_conf_t *mcf;
+
++ if (r->error_page) {
++ return NGX_OK;
++ }
++
+ dd("catching a new _log_ phase handler");
+
+ mcf = ngx_http_get_module_loc_conf(r, ngx_http_modsecurity_module);
+diff --git a/src/ngx_http_modsecurity_pre_access.c b/src/ngx_http_modsecurity_pre_access.c
+index 05d7140..d5389ad 100644
+--- a/src/ngx_http_modsecurity_pre_access.c
++++ b/src/ngx_http_modsecurity_pre_access.c
+@@ -48,6 +48,10 @@ ngx_http_modsecurity_pre_access_handler(ngx_http_request_t *r)
+ ngx_http_modsecurity_ctx_t *ctx;
+ ngx_http_modsecurity_conf_t *mcf;
+
++ if (r->error_page) {
++ return NGX_DECLINED;
++ }
++
+ dd("catching a new _preaccess_ phase handler");
+
+ mcf = ngx_http_get_module_loc_conf(r, ngx_http_modsecurity_module);
+diff --git a/src/ngx_http_modsecurity_rewrite.c b/src/ngx_http_modsecurity_rewrite.c
+index cd02438..fa178a2 100644
+--- a/src/ngx_http_modsecurity_rewrite.c
++++ b/src/ngx_http_modsecurity_rewrite.c
+@@ -27,6 +27,10 @@ ngx_http_modsecurity_rewrite_handler(ngx_http_request_t *r)
+ ngx_http_modsecurity_ctx_t *ctx;
+ ngx_http_modsecurity_conf_t *mcf;
+
++ if (r->error_page) {
++ return NGX_DECLINED;
++ }
++
+ mcf = ngx_http_get_module_loc_conf(r, ngx_http_modsecurity_module);
+ if (mcf == NULL || mcf->enable != 1) {
+ dd("ModSecurity not enabled... returning");
diff --git a/contrib/src/modsecurity-nginx/version b/contrib/src/modsecurity-nginx/version
new file mode 100644
index 0000000..7555ca6
--- /dev/null
+++ b/contrib/src/modsecurity-nginx/version
@@ -0,0 +1,2 @@
+MODSECURITY_NGINX_VERSION := 1.0.1
+MODSECURITY_NGINX_GITHASH := e50e43ee4cc87565922ed98b1b6c72751019c326
diff --git a/contrib/src/modsecurity/Makefile b/contrib/src/modsecurity/Makefile
new file mode 100644
index 0000000..0950753
--- /dev/null
+++ b/contrib/src/modsecurity/Makefile
@@ -0,0 +1,32 @@
+# ModSecurity
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+
+# The release tarball distributed from GitHub does not include
+# all the required submodules (libinjection in particular), so
+# we are building our own tarball by running build.sh + configure +
+# make dist from desired version tag.
+#
+# MODSECURITY_URL := $(GITHUB)/SpiderLabs/ModSecurity/archive/v$(MODSECURITY_VERSION).tar.gz
+MODSECURITY_URL := $(CONTRIB_NGINX)/modsecurity/modsecurity-v$(MODSECURITY_VERSION).tar.gz
+
+PKGS += modsecurity
+
+$(TARBALLS)/modsecurity-v$(MODSECURITY_VERSION).tar.gz:
+ $(call download_pkg,$(MODSECURITY_URL),modsecurity)
+
+.sum-modsecurity: modsecurity-v$(MODSECURITY_VERSION).tar.gz
+
+modsecurity: modsecurity-v$(MODSECURITY_VERSION).tar.gz .sum-modsecurity
+ $(UNPACK)
+ $(APPLY) $(SRC)/modsecurity/PR2348.patch
+ $(MOVE)
+
+.modsecurity: modsecurity
+ cd $< && \
+ ./configure --prefix $(PREFIX) --without-lmdb --without-lua && \
+ make $(_SMP_MFLAGS) install && \
+ TERM=foo make check-TESTS
+ rm -f /tmp/audit_test.log /tmp/audit_test_parallel.log
+ rm -rf /tmp/test
+ touch $@
diff --git a/contrib/src/modsecurity/PR2348.patch b/contrib/src/modsecurity/PR2348.patch
new file mode 100644
index 0000000..41e7a56
--- /dev/null
+++ b/contrib/src/modsecurity/PR2348.patch
@@ -0,0 +1,280 @@
+diff --git a/src/operators/rx.cc b/src/operators/rx.cc
+index 0ba983d73..b4fc6ff4d 100644
+--- a/src/operators/rx.cc
++++ b/src/operators/rx.cc
+@@ -38,7 +38,6 @@
+
+ bool Rx::evaluate(Transaction *transaction, Rule *rule,
+ const std::string& input, std::shared_ptr<RuleMessage> ruleMessage) {
+- std::list<SMatch> matches;
+ Regex *re;
+
+ if (m_param.empty() && !m_string->m_containsMacro) {
+@@ -52,29 +51,29 @@
+ re = m_re;
+ }
+
+- matches = re->searchAll(input);
++ std::vector<Utils::SMatchCapture> captures;
++ re->searchOneMatch(input, captures);
++
+ if (rule && rule->m_containsCaptureAction && transaction) {
+- int i = 0;
+- matches.reverse();
+- for (const SMatch& a : matches) {
++ for (const Utils::SMatchCapture& capture : captures) {
++ const std::string capture_substring(input.substr(capture.m_offset,capture.m_length));
+ transaction->m_collections.m_tx_collection->storeOrUpdateFirst(
+- std::to_string(i), a.str());
++ std::to_string(capture.m_group), capture_substring);
+ ms_dbg_a(transaction, 7, "Added regex subexpression TX." +
+- std::to_string(i) + ": " + a.str());
+- transaction->m_matched.push_back(a.str());
+- i++;
++ std::to_string(capture.m_group) + ": " + capture_substring);
++ transaction->m_matched.push_back(capture_substring);
+ }
+ }
+
+- for (const auto & i : matches) {
+- logOffset(ruleMessage, i.offset(), i.str().size());
++ for (const auto & capture : captures) {
++ logOffset(ruleMessage, capture.m_offset, capture.m_length);
+ }
+
+ if (m_string->m_containsMacro) {
+ delete re;
+ }
+
+- if (matches.size() > 0) {
++ if (captures.size() > 0) {
+ return true;
+ }
+
+diff --git a/src/utils/regex.cc b/src/utils/regex.cc
+index be56e378a..0feb256cc 100644
+--- a/src/utils/regex.cc
++++ b/src/utils/regex.cc
+@@ -16,10 +16,6 @@
+ #include "src/utils/regex.h"
+
+ #include <pcre.h>
+-#include <sys/socket.h>
+-#include <sys/types.h>
+-#include <netinet/in.h>
+-#include <arpa/inet.h>
+ #include <string>
+ #include <list>
+
+@@ -99,6 +95,26 @@ std::list<SMatch> Regex::searchAll(const std::string& s) const {
+ return retList;
+ }
+
++bool Regex::searchOneMatch(const std::string& s, std::vector<SMatchCapture>& captures) const {
++ const char *subject = s.c_str();
++ int ovector[OVECCOUNT];
++
++ int rc = pcre_exec(m_pc, m_pce, subject, s.size(), 0, 0, ovector, OVECCOUNT);
++
++ for (int i = 0; i < rc; i++) {
++ size_t start = ovector[2*i];
++ size_t end = ovector[2*i+1];
++ size_t len = end - start;
++ if (end > s.size()) {
++ continue;
++ }
++ SMatchCapture capture(i, start, len);
++ captures.push_back(capture);
++ }
++
++ return (rc > 0);
++}
++
+ int Regex::search(const std::string& s, SMatch *match) const {
+ int ovector[OVECCOUNT];
+ int ret = pcre_exec(m_pc, m_pce, s.c_str(),
+diff --git a/src/utils/regex.h b/src/utils/regex.h
+index 7dcc4dbf6..46dab6b83 100644
+--- a/src/utils/regex.h
++++ b/src/utils/regex.h
+@@ -19,6 +19,7 @@
+ #include <fstream>
+ #include <string>
+ #include <list>
++#include <vector>
+
+ #ifndef SRC_UTILS_REGEX_H_
+ #define SRC_UTILS_REGEX_H_
+@@ -47,6 +48,16 @@
+ size_t m_offset;
+ };
+
++struct SMatchCapture {
++ SMatchCapture(size_t group, size_t offset, size_t length) :
++ m_group(group),
++ m_offset(offset),
++ m_length(length) { }
++
++ size_t m_group; // E.g. 0 = full match; 6 = capture group 6
++ size_t m_offset; // offset of match within the analyzed string
++ size_t m_length;
++};
+
+ class Regex {
+ public:
+@@ -58,6 +69,7 @@
+ Regex& operator=(const Regex&) = delete;
+
+ std::list<SMatch> searchAll(const std::string& s) const;
++ bool searchOneMatch(const std::string& s, std::vector<SMatchCapture>& captures) const;
+ int search(const std::string &s, SMatch *m) const;
+ int search(const std::string &s) const;
+
+diff --git a/test/test-cases/regression/variable-TX.json b/test/test-cases/regression/variable-TX.json
+index 0cd45381b..904628e9b 100644
+--- a/test/test-cases/regression/variable-TX.json
++++ b/test/test-cases/regression/variable-TX.json
+@@ -80,5 +80,143 @@
+ "SecRule REQUEST_HEADERS \"@rx ([A-z]+)\" \"id:1,log,pass,capture,id:14\"",
+ "SecRule TX:0 \"@rx ([A-z]+)\" \"id:15\""
+ ]
++ },
++ {
++ "enabled":1,
++ "version_min":300000,
++ "title":"Testing Variables :: capture group match after unused group",
++ "client":{
++ "ip":"200.249.12.31",
++ "port":123
++ },
++ "server":{
++ "ip":"200.249.12.31",
++ "port":80
++ },
++ "request":{
++ "uri":"/?key=aadd",
++ "method":"GET"
++ },
++ "response":{
++ "headers":{
++ "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
++ "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
++ "Content-Type":"text/html"
++ },
++ "body":[
++ "no need."
++ ]
++ },
++ "expected":{
++ "debug_log":"Added regex subexpression TX\\.3: dd[\\s\\S]*Target value: \"dd\" \\(Variable\\: TX\\:3[\\s\\S]*Rule returned 1"
++ },
++ "rules":[
++ "SecRuleEngine On",
++ "SecRule ARGS \"@rx (aa)(bb|cc)?(dd)\" \"id:1,log,pass,capture,id:16\"",
++ "SecRule TX:3 \"@streq dd\" \"id:19,phase:2,log,pass\""
++ ]
++ },
++ {
++ "enabled":1,
++ "version_min":300000,
++ "title":"Testing Variables :: empty capture group match followed by nonempty capture group",
++ "client":{
++ "ip":"200.249.12.31",
++ "port":123
++ },
++ "server":{
++ "ip":"200.249.12.31",
++ "port":80
++ },
++ "request":{
++ "uri":"/?key=aadd",
++ "method":"GET"
++ },
++ "response":{
++ "headers":{
++ "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
++ "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
++ "Content-Type":"text/html"
++ },
++ "body":[
++ "no need."
++ ]
++ },
++ "expected":{
++ "debug_log":"Added regex subexpression TX\\.3: dd[\\s\\S]*Target value: \"dd\" \\(Variable\\: TX\\:3[\\s\\S]*Rule returned 1"
++ },
++ "rules":[
++ "SecRuleEngine On",
++ "SecRule ARGS \"@rx (aa)(bb|cc|)(dd)\" \"id:18,phase:1,log,pass,capture\"",
++ "SecRule TX:3 \"@streq dd\" \"id:19,phase:2,log,pass\""
++ ]
++ },
++ {
++ "enabled":1,
++ "version_min":300000,
++ "title":"Testing Variables :: repeating capture group -- alternates",
++ "client":{
++ "ip":"200.249.12.31",
++ "port":123
++ },
++ "server":{
++ "ip":"200.249.12.31",
++ "port":80
++ },
++ "request":{
++ "uri":"/?key=_abc123_",
++ "method":"GET"
++ },
++ "response":{
++ "headers":{
++ "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
++ "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
++ "Content-Type":"text/html"
++ },
++ "body":[
++ "no need."
++ ]
++ },
++ "expected":{
++ "debug_log":"Added regex subexpression TX\\.2: abc[\\s\\S]*Added regex subexpression TX\\.3: 123"
++ },
++ "rules":[
++ "SecRuleEngine On",
++ "SecRule ARGS \"@rx _((?:(abc)|(123))+)_\" \"id:18,phase:1,log,pass,capture\""
++ ]
++ },
++ {
++ "enabled":1,
++ "version_min":300000,
++ "title":"Testing Variables :: repeating capture group -- same (nested)",
++ "client":{
++ "ip":"200.249.12.31",
++ "port":123
++ },
++ "server":{
++ "ip":"200.249.12.31",
++ "port":80
++ },
++ "request":{
++ "uri":"/?key=a:5a:8a:9",
++ "method":"GET"
++ },
++ "response":{
++ "headers":{
++ "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
++ "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
++ "Content-Type":"text/html"
++ },
++ "body":[
++ "no need."
++ ]
++ },
++ "expected":{
++ "debug_log":"Added regex subexpression TX\\.1: 5[\\s\\S]*Added regex subexpression TX\\.2: 8[\\s\\S]*Added regex subexpression TX\\.3: 9"
++ },
++ "rules":[
++ "SecRuleEngine On",
++ "SecRule ARGS \"@rx a:([0-9])(?:a:([0-9])(?:a:([0-9]))*)*\" \"id:18,phase:1,log,pass,capture\""
++ ]
+ }
+ ]
diff --git a/contrib/src/modsecurity/SHA512SUMS b/contrib/src/modsecurity/SHA512SUMS
new file mode 100644
index 0000000..8f9ec47
--- /dev/null
+++ b/contrib/src/modsecurity/SHA512SUMS
@@ -0,0 +1 @@
+6ba9265054acfe7e67583dd0100bb592687080eee5d8cd5371785bb7b615a7361b52d0a037f6fa4e90ecfe857ed6a714969301b0bf17a638efebba86532f3f85 modsecurity-v3.0.4.tar.gz
diff --git a/contrib/src/modsecurity/version b/contrib/src/modsecurity/version
new file mode 100644
index 0000000..de8a971
--- /dev/null
+++ b/contrib/src/modsecurity/version
@@ -0,0 +1 @@
+MODSECURITY_VERSION := 3.0.4
diff --git a/contrib/src/nginx-opentracing/Makefile b/contrib/src/nginx-opentracing/Makefile
new file mode 100644
index 0000000..8cf13a0
--- /dev/null
+++ b/contrib/src/nginx-opentracing/Makefile
@@ -0,0 +1,20 @@
+# nginx-opentracing
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NGINX_OPENTRACING_URL := $(GITHUB)/opentracing-contrib/nginx-opentracing/archive/v$(NGINX_OPENTRACING_VERSION).tar.gz
+
+PKGS += nginx-opentracing
+
+$(TARBALLS)/nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz:
+ $(call download_pkg,$(NGINX_OPENTRACING_URL),nginx-opentracing)
+
+.sum-nginx-opentracing: nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz
+
+nginx-opentracing: nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz .sum-nginx-opentracing
+ $(UNPACK)
+ $(MOVE)
+
+DEPS_nginx-opentracing = opentracing-cpp $(DEPS_opentracing-cpp)
+
+.nginx-opentracing: nginx-opentracing
+ touch $@
diff --git a/contrib/src/nginx-opentracing/SHA512SUMS b/contrib/src/nginx-opentracing/SHA512SUMS
new file mode 100644
index 0000000..0971808
--- /dev/null
+++ b/contrib/src/nginx-opentracing/SHA512SUMS
@@ -0,0 +1 @@
+1700484555892e62c1dae846cd6b736ed084cdac6ee1cfd4f903644c4119de227ec8682ff5b2590c9b53524ab4305de3267f419a68226f33f9b3ef8128028dbf nginx-opentracing-0.10.0.tar.gz
diff --git a/contrib/src/nginx-opentracing/version b/contrib/src/nginx-opentracing/version
new file mode 100644
index 0000000..9d09f3e
--- /dev/null
+++ b/contrib/src/nginx-opentracing/version
@@ -0,0 +1 @@
+NGINX_OPENTRACING_VERSION := 0.10.0
diff --git a/contrib/src/nginx-rtmp-module/Makefile b/contrib/src/nginx-rtmp-module/Makefile
new file mode 100644
index 0000000..048f26a
--- /dev/null
+++ b/contrib/src/nginx-rtmp-module/Makefile
@@ -0,0 +1,19 @@
+# nginx-rtmp-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NGINX_RTMP_MODULE_URL := $(GITHUB)/arut/nginx-rtmp-module/archive/v$(NGINX_RTMP_MODULE_VERSION).tar.gz
+
+PKGS += nginx-rtmp-module
+
+$(TARBALLS)/nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(NGINX_RTMP_MODULE_URL),nginx-rtmp-module)
+
+.sum-nginx-rtmp-module: nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz
+
+nginx-rtmp-module: nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz .sum-nginx-rtmp-module
+ $(UNPACK)
+ $(APPLY) $(SRC)/nginx-rtmp-module/PR1340.patch
+ $(MOVE)
+
+.nginx-rtmp-module: nginx-rtmp-module
+ touch $@
diff --git a/contrib/src/nginx-rtmp-module/PR1340.patch b/contrib/src/nginx-rtmp-module/PR1340.patch
new file mode 100644
index 0000000..4315592
--- /dev/null
+++ b/contrib/src/nginx-rtmp-module/PR1340.patch
@@ -0,0 +1,21 @@
+From 28f0acce2ebcd20f236e2d804a2ebef77b0f5640 Mon Sep 17 00:00:00 2001
+From: Andrei Belov <defanator@gmail.com>
+Date: Sat, 22 Dec 2018 02:39:31 +0300
+Subject: [PATCH] Fixed building with gcc 8
+
+---
+ ngx_rtmp_eval.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ngx_rtmp_eval.c b/ngx_rtmp_eval.c
+index 1e5195a9..c658f14e 100644
+--- a/ngx_rtmp_eval.c
++++ b/ngx_rtmp_eval.c
+@@ -166,6 +166,7 @@ ngx_rtmp_eval(void *ctx, ngx_str_t *in, ngx_rtmp_eval_t **e, ngx_str_t *out,
+ state = ESCAPE;
+ continue;
+ }
++ /* fall through */
+
+ case ESCAPE:
+ ngx_rtmp_eval_append(&b, &c, 1, log);
diff --git a/contrib/src/nginx-rtmp-module/SHA512SUMS b/contrib/src/nginx-rtmp-module/SHA512SUMS
new file mode 100644
index 0000000..56f0f0e
--- /dev/null
+++ b/contrib/src/nginx-rtmp-module/SHA512SUMS
@@ -0,0 +1 @@
+4a0af5e9afa4deb0b53de8de7ddb2cfa6430d372e1ef9e421f01b509548bd134d427345442ac1ce667338cc2a1484dc2ab732e316e878ac7d3537dc527d5f922 nginx-rtmp-module-1.2.1.tar.gz
diff --git a/contrib/src/nginx-rtmp-module/version b/contrib/src/nginx-rtmp-module/version
new file mode 100644
index 0000000..e311d2d
--- /dev/null
+++ b/contrib/src/nginx-rtmp-module/version
@@ -0,0 +1 @@
+NGINX_RTMP_MODULE_VERSION := 1.2.1
diff --git a/contrib/src/nginx/Makefile b/contrib/src/nginx/Makefile
new file mode 100644
index 0000000..bcaf27e
--- /dev/null
+++ b/contrib/src/nginx/Makefile
@@ -0,0 +1,44 @@
+# nginx
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NGINX_URL := $(NGINX)/nginx-$(NGINX_VERSION).tar.gz
+
+PKGS += nginx
+
+$(TARBALLS)/nginx-$(NGINX_VERSION).tar.gz:
+ $(call download_pkg,$(NGINX_URL),nginx)
+
+.sum-nginx: nginx-$(NGINX_VERSION).tar.gz
+
+nginx: nginx-$(NGINX_VERSION).tar.gz .sum-nginx
+ $(UNPACK)
+ $(MOVE)
+
+.nginx: nginx
+ cd $< && ./configure \
+ --prefix=$(PREFIX) \
+ --with-compat \
+ --with-threads \
+ --with-http_addition_module \
+ --with-http_auth_request_module \
+ --with-http_dav_module \
+ --with-http_flv_module \
+ --with-http_gunzip_module \
+ --with-http_gzip_static_module \
+ --with-http_mp4_module \
+ --with-http_random_index_module \
+ --with-http_realip_module \
+ --with-http_secure_link_module \
+ --with-http_slice_module \
+ --with-http_ssl_module \
+ --with-http_stub_status_module \
+ --with-http_sub_module \
+ --with-http_v2_module \
+ --with-mail \
+ --with-mail_ssl_module \
+ --with-stream \
+ --with-stream_realip_module \
+ --with-stream_ssl_module \
+ --with-stream_ssl_preread_module
+ cd $< && $(MAKE) $(_SMP_MFLAGS) install
+ touch $@
diff --git a/contrib/src/nginx/SHA512SUMS b/contrib/src/nginx/SHA512SUMS
new file mode 100644
index 0000000..1f4efe0
--- /dev/null
+++ b/contrib/src/nginx/SHA512SUMS
@@ -0,0 +1 @@
+1249c56b124a8de71f5d722e53d599f3b0cb14dc0f95b1eb905a6a8019b2d33f8e76874de2a88d49c4c82ee4fa7aabd42e5044a0a110892c23b50f71cb632148 nginx-1.19.6.tar.gz
diff --git a/contrib/src/nginx/version b/contrib/src/nginx/version
new file mode 100644
index 0000000..3268628
--- /dev/null
+++ b/contrib/src/nginx/version
@@ -0,0 +1 @@
+NGINX_VERSION := 1.19.6
diff --git a/contrib/src/ngx_brotli/Makefile b/contrib/src/ngx_brotli/Makefile
new file mode 100644
index 0000000..f6dc1e4
--- /dev/null
+++ b/contrib/src/ngx_brotli/Makefile
@@ -0,0 +1,18 @@
+# ngx_brotli
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NGX_BROTLI_URL := $(GITHUB)/google/ngx_brotli/archive/v$(NGX_BROTLI_VERSION)rc.tar.gz
+
+PKGS += ngx_brotli
+
+$(TARBALLS)/ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz:
+ $(call download_pkg,$(NGX_BROTLI_URL),ngx_brotli)
+
+.sum-ngx_brotli: ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz
+
+ngx_brotli: ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz .sum-ngx_brotli
+ $(UNPACK)
+ $(MOVE)
+
+.ngx_brotli: ngx_brotli
+ touch $@
diff --git a/contrib/src/ngx_brotli/SHA512SUMS b/contrib/src/ngx_brotli/SHA512SUMS
new file mode 100644
index 0000000..aa01259
--- /dev/null
+++ b/contrib/src/ngx_brotli/SHA512SUMS
@@ -0,0 +1 @@
+05a880d5e48ac83be84498ed41fb4750211b827a9d7541acfd6ef494e5205a6e853d5594bfec3ab4ae668ea3f803e4f4b0ba550c76811971c8e266e42663c56d ngx_brotli-1.0.0.tar.gz
diff --git a/contrib/src/ngx_brotli/version b/contrib/src/ngx_brotli/version
new file mode 100644
index 0000000..5bcecfc
--- /dev/null
+++ b/contrib/src/ngx_brotli/version
@@ -0,0 +1 @@
+NGX_BROTLI_VERSION := 1.0.0
diff --git a/contrib/src/ngx_devel_kit/Makefile b/contrib/src/ngx_devel_kit/Makefile
new file mode 100644
index 0000000..77bb36c
--- /dev/null
+++ b/contrib/src/ngx_devel_kit/Makefile
@@ -0,0 +1,18 @@
+# ngx_devel_kit
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NGX_DEVEL_KIT_URL := $(GITHUB)/vision5/ngx_devel_kit/archive/v$(NGX_DEVEL_KIT_VERSION).tar.gz
+
+PKGS += ngx_devel_kit
+
+$(TARBALLS)/ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz:
+ $(call download_pkg,$(NGX_DEVEL_KIT_URL),ngx_devel_kit)
+
+.sum-ngx_devel_kit: ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz
+
+ngx_devel_kit: ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz .sum-ngx_devel_kit
+ $(UNPACK)
+ $(MOVE)
+
+.ngx_devel_kit: ngx_devel_kit
+ touch $@
diff --git a/contrib/src/ngx_devel_kit/SHA512SUMS b/contrib/src/ngx_devel_kit/SHA512SUMS
new file mode 100644
index 0000000..faf80d4
--- /dev/null
+++ b/contrib/src/ngx_devel_kit/SHA512SUMS
@@ -0,0 +1 @@
+de1e3349d8dd08e5982279b2219dc8a8006739f0409b8e0f5c50d93434beff1fbafba43e9c5ac85a5fab90afc5c0a7244a340610339c36f82f2cba7233e72de9 ngx_devel_kit-0.3.1.tar.gz
diff --git a/contrib/src/ngx_devel_kit/version b/contrib/src/ngx_devel_kit/version
new file mode 100644
index 0000000..94d8e14
--- /dev/null
+++ b/contrib/src/ngx_devel_kit/version
@@ -0,0 +1 @@
+NGX_DEVEL_KIT_VERSION := 0.3.1
diff --git a/contrib/src/ngx_http_geoip2_module/Makefile b/contrib/src/ngx_http_geoip2_module/Makefile
new file mode 100644
index 0000000..2810d2e
--- /dev/null
+++ b/contrib/src/ngx_http_geoip2_module/Makefile
@@ -0,0 +1,18 @@
+# ngx_http_geoip2_module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+GEOIP2_NGINX_MODULE_URL := $(GITHUB)/leev/ngx_http_geoip2_module/archive/$(GEOIP2_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += ngx_http_geoip2_module
+
+$(TARBALLS)/ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(GEOIP2_NGINX_MODULE_URL),ngx_http_geoip2_module)
+
+.sum-ngx_http_geoip2_module: ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz
+
+ngx_http_geoip2_module: ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz .sum-ngx_http_geoip2_module
+ $(UNPACK)
+ $(MOVE)
+
+.ngx_http_geoip2_module: ngx_http_geoip2_module
+ touch $@
diff --git a/contrib/src/ngx_http_geoip2_module/SHA512SUMS b/contrib/src/ngx_http_geoip2_module/SHA512SUMS
new file mode 100644
index 0000000..ec84b01
--- /dev/null
+++ b/contrib/src/ngx_http_geoip2_module/SHA512SUMS
@@ -0,0 +1 @@
+06963b598c54e22d75ce837fb222f5aa6c9494c29e558ff46f1205d7159fc305414bfac4ed3288c836dcbf7628d92f26458e1992d34fc2f4b73275a32847bdc0 ngx_http_geoip2_module-3.3.tar.gz
diff --git a/contrib/src/ngx_http_geoip2_module/version b/contrib/src/ngx_http_geoip2_module/version
new file mode 100644
index 0000000..2be1719
--- /dev/null
+++ b/contrib/src/ngx_http_geoip2_module/version
@@ -0,0 +1 @@
+GEOIP2_NGINX_MODULE_VERSION := 3.3
diff --git a/contrib/src/ngx_http_substitutions_filter_module/Makefile b/contrib/src/ngx_http_substitutions_filter_module/Makefile
new file mode 100644
index 0000000..e6df0a0
--- /dev/null
+++ b/contrib/src/ngx_http_substitutions_filter_module/Makefile
@@ -0,0 +1,20 @@
+# ngx_http_substitutions_filter_module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+SUBSTITUTIONS_FILTER_NGINX_MODULE_GITURL := $(GITHUB)/yaoweibin/ngx_http_substitutions_filter_module.git
+
+PKGS += ngx_http_substitutions_filter_module
+
+$(TARBALLS)/ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz:
+ $(call download_git,$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITURL),,$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH))
+
+.sum-ngx_http_substitutions_filter_module: ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz
+ $(call check_githash,$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH))
+ touch $@
+
+ngx_http_substitutions_filter_module: ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz .sum-ngx_http_substitutions_filter_module
+ $(UNPACK)
+ $(MOVE)
+
+.ngx_http_substitutions_filter_module: ngx_http_substitutions_filter_module
+ touch $@
diff --git a/contrib/src/ngx_http_substitutions_filter_module/version b/contrib/src/ngx_http_substitutions_filter_module/version
new file mode 100644
index 0000000..e809e30
--- /dev/null
+++ b/contrib/src/ngx_http_substitutions_filter_module/version
@@ -0,0 +1,2 @@
+SUBSTITUTIONS_FILTER_NGINX_MODULE_VERSION := 0.6.4
+SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH := b8a71eacc7f986ba091282ab8b1bbbc6ae1807e0
diff --git a/contrib/src/njs/Makefile b/contrib/src/njs/Makefile
new file mode 100644
index 0000000..1d6675e
--- /dev/null
+++ b/contrib/src/njs/Makefile
@@ -0,0 +1,19 @@
+# njs
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+NJS_URL := https://hg.nginx.org/njs/archive/$(NJS_VERSION).tar.gz
+
+PKGS += njs
+
+$(TARBALLS)/njs-$(NJS_VERSION).tar.gz:
+ $(call download_pkg,$(NJS_URL),njs)
+
+.sum-njs: njs-$(NJS_VERSION).tar.gz
+
+njs: njs-$(NJS_VERSION).tar.gz .sum-njs
+ $(UNPACK)
+ $(MOVE)
+
+.njs: njs
+ cd $< && ./configure && $(MAKE) njs
+ touch $@
diff --git a/contrib/src/njs/SHA512SUMS b/contrib/src/njs/SHA512SUMS
new file mode 100644
index 0000000..bad4017
--- /dev/null
+++ b/contrib/src/njs/SHA512SUMS
@@ -0,0 +1 @@
+f90e894ae477bfb0fe28f24ce26f64d83749832ca45e5b3ac61d6df2c25f1a330842f13bf801cf08875c6c3006332afe3ec66d72d234dc26e5f527fb17f96370 njs-0.5.0.tar.gz
diff --git a/contrib/src/njs/version b/contrib/src/njs/version
new file mode 100644
index 0000000..a71ebd0
--- /dev/null
+++ b/contrib/src/njs/version
@@ -0,0 +1 @@
+NJS_VERSION := 0.5.0
diff --git a/contrib/src/opentracing-cpp/CMakeLists.txt.patch b/contrib/src/opentracing-cpp/CMakeLists.txt.patch
new file mode 100644
index 0000000..9a392e5
--- /dev/null
+++ b/contrib/src/opentracing-cpp/CMakeLists.txt.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt 2019-09-18 21:59:25.000000000 +0000
++++ b/CMakeLists.txt 2020-12-10 14:14:05.462435162 +0000
+@@ -180,7 +180,7 @@
+ target_link_libraries(opentracing-static ${LIBRARIES})
+ # Windows generates a lib and dll files for a shared library. using the same name will override the lib file generated by the shared target
+ if (NOT WIN32)
+- set_target_properties(opentracing-static PROPERTIES OUTPUT_NAME opentracing)
++ set_target_properties(opentracing-static PROPERTIES OUTPUT_NAME opentracing POSITION_INDEPENDENT_CODE ON)
+ endif()
+ target_compile_definitions(opentracing-static PUBLIC OPENTRACING_STATIC)
+ target_include_directories(opentracing-static INTERFACE "$<INSTALL_INTERFACE:include/>")
diff --git a/contrib/src/opentracing-cpp/Makefile b/contrib/src/opentracing-cpp/Makefile
new file mode 100644
index 0000000..536c4d8
--- /dev/null
+++ b/contrib/src/opentracing-cpp/Makefile
@@ -0,0 +1,24 @@
+# opentracing-cpp
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+OPENTRACING_CPP_URL := $(GITHUB)/opentracing/opentracing-cpp/archive/v$(OPENTRACING_CPP_VERSION).tar.gz
+
+PKGS += opentracing-cpp
+
+$(TARBALLS)/opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz:
+ $(call download_pkg,$(OPENTRACING_CPP_URL),opentracing-cpp)
+
+.sum-opentracing-cpp: opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz
+
+opentracing-cpp: opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz .sum-opentracing-cpp
+ $(UNPACK)
+ $(APPLY) $(SRC)/opentracing-cpp/CMakeLists.txt.patch
+ $(MOVE)
+
+.opentracing-cpp: opentracing-cpp
+ cd $< && \
+ mkdir .build && \
+ cd .build && \
+ cmake ../ && \
+ DESTDIR=$(PREFIX) make $(_SMP_MFLAGS) install
+ touch $@
diff --git a/contrib/src/opentracing-cpp/SHA512SUMS b/contrib/src/opentracing-cpp/SHA512SUMS
new file mode 100644
index 0000000..359ceba
--- /dev/null
+++ b/contrib/src/opentracing-cpp/SHA512SUMS
@@ -0,0 +1 @@
+e4efad670d5f09e7ce2e1cd4820c7efdd12d8ffbc2f9cbeb54427f640922aa547e12cf01ae0066f5b89304c7f592ab2c2612139bf3275b19773028f1d8c159b5 opentracing-cpp-1.6.0.tar.gz
diff --git a/contrib/src/opentracing-cpp/version b/contrib/src/opentracing-cpp/version
new file mode 100644
index 0000000..379967a
--- /dev/null
+++ b/contrib/src/opentracing-cpp/version
@@ -0,0 +1 @@
+OPENTRACING_CPP_VERSION := 1.6.0
diff --git a/contrib/src/passenger/Makefile b/contrib/src/passenger/Makefile
new file mode 100644
index 0000000..60f84a1
--- /dev/null
+++ b/contrib/src/passenger/Makefile
@@ -0,0 +1,20 @@
+# passenger
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+PASSENGER_URL := http://s3.amazonaws.com/phusion-passenger/releases/passenger-$(PASSENGER_VERSION).tar.gz
+
+PKGS += passenger
+
+$(TARBALLS)/passenger-$(PASSENGER_VERSION).tar.gz:
+ $(call download_pkg,$(PASSENGER_URL),passenger)
+
+.sum-passenger: passenger-$(PASSENGER_VERSION).tar.gz
+
+passenger: passenger-$(PASSENGER_VERSION).tar.gz .sum-passenger
+ $(UNPACK)
+ $(APPLY) $(SRC)/passenger/build-nginx.rb.patch
+ $(APPLY) $(SRC)/passenger/src-nginx_module-ContentHandler.c.patch
+ $(MOVE)
+
+.passenger: passenger
+ touch $@
diff --git a/contrib/src/passenger/SHA512SUMS b/contrib/src/passenger/SHA512SUMS
new file mode 100644
index 0000000..9146f76
--- /dev/null
+++ b/contrib/src/passenger/SHA512SUMS
@@ -0,0 +1 @@
+57a013dbbddab13862c2d5445d048aafdc5a56297c56d3d642a39fe7757d3bcbd7e9e21aca36ebeb0f54a03d26e0886031a947cb098026a516900cc5bff42f0c passenger-6.0.6.tar.gz
diff --git a/contrib/src/passenger/build-nginx.rb.patch b/contrib/src/passenger/build-nginx.rb.patch
new file mode 100644
index 0000000..f120c13
--- /dev/null
+++ b/contrib/src/passenger/build-nginx.rb.patch
@@ -0,0 +1,33 @@
+--- a/build/nginx.rb 2013-10-27 04:00:00.000000000 +0400
++++ b/build/nginx.rb 2020-11-23 11:36:59.000000000 +0300
+@@ -39,13 +39,12 @@
+ desc "Build Nginx support files"
+ task :nginx => [
+ :nginx_without_native_support,
+- NATIVE_SUPPORT_TARGET
++ LIBBOOST_OXT,
+ ].compact
+
+ desc "Build Nginx support files, including objects suitable for dynamic linking against Nginx"
+ task 'nginx:as_dynamic_module' => [
+ :nginx_dynamic_without_native_support,
+- NATIVE_SUPPORT_TARGET
+ ].compact
+
+ # Workaround for https://github.com/jimweirich/rake/issues/274
+@@ -53,7 +52,6 @@
+
+ task :nginx_without_native_support => [
+ auto_generated_sources,
+- AGENT_TARGET,
+ COMMON_LIBRARY.only(*NGINX_LIBS_SELECTOR).link_objects
+ ].flatten
+
+@@ -61,7 +59,6 @@
+ # it also creates a namespace:clean task to clean up the output_dir
+ task :nginx_dynamic_without_native_support => [
+ auto_generated_sources,
+- AGENT_TARGET,
+ define_libboost_oxt_task("nginx", NGINX_DYNAMIC_OUTPUT_DIR + "libboost_oxt", "-fPIC"),
+ COMMON_LIBRARY.only(*NGINX_LIBS_SELECTOR).
+ set_namespace("nginx").set_output_dir(NGINX_DYNAMIC_OUTPUT_DIR + "module_libpassenger_common").define_tasks("-fPIC").
diff --git a/contrib/src/passenger/src-nginx_module-ContentHandler.c.patch b/contrib/src/passenger/src-nginx_module-ContentHandler.c.patch
new file mode 100644
index 0000000..b81c3ae
--- /dev/null
+++ b/contrib/src/passenger/src-nginx_module-ContentHandler.c.patch
@@ -0,0 +1,14 @@
+# see https://github.com/phusion/passenger/pull/1841
+--- a/src/nginx_module/ContentHandler.c 2013-10-27 00:00:00.000000000 +0000
++++ b/src/nginx_module/ContentHandler.c 2020-12-17 14:10:27.556476564 +0000
+@@ -656,7 +656,9 @@
+ state->content_length.len = ngx_snprintf(state->content_length.data,
+ sizeof("4294967295") - 1, "%O", r->headers_in.content_length_n)
+ - state->content_length.data;
+- } // else: content_length not used
++ } else { // else: content_length not used
++ state->content_length.len = 0;
++ }
+
+ state->core_password.data = (u_char *) psg_watchdog_launcher_get_core_password(
+ psg_watchdog_launcher, &len);
diff --git a/contrib/src/passenger/version b/contrib/src/passenger/version
new file mode 100644
index 0000000..f7552d5
--- /dev/null
+++ b/contrib/src/passenger/version
@@ -0,0 +1 @@
+PASSENGER_VERSION := 6.0.6
diff --git a/contrib/src/set-misc-nginx-module/Makefile b/contrib/src/set-misc-nginx-module/Makefile
new file mode 100644
index 0000000..0ecfb35
--- /dev/null
+++ b/contrib/src/set-misc-nginx-module/Makefile
@@ -0,0 +1,20 @@
+# set-misc-nginx-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+SET_MISC_NGINX_MODULE_URL := $(GITHUB)/openresty/set-misc-nginx-module/archive/v$(SET_MISC_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += set-misc-nginx-module
+
+$(TARBALLS)/set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(SET_MISC_NGINX_MODULE_URL),set-misc-nginx-module)
+
+.sum-set-misc-nginx-module: set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz
+
+set-misc-nginx-module: set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz .sum-set-misc-nginx-module
+ $(UNPACK)
+ $(MOVE)
+
+DEPS_set-misc-nginx-module = ngx_devel_kit $(DEPS_ngx_devel_kit)
+
+.set-misc-nginx-module: set-misc-nginx-module
+ touch $@
diff --git a/contrib/src/set-misc-nginx-module/SHA512SUMS b/contrib/src/set-misc-nginx-module/SHA512SUMS
new file mode 100644
index 0000000..cb80f18
--- /dev/null
+++ b/contrib/src/set-misc-nginx-module/SHA512SUMS
@@ -0,0 +1 @@
+5590526f60c99630f99a49bfa9e3455baee6d58cd2a1419eab1367a838dafb87a50f5e2607aa8ac557b90dbf633dcf61069c997b3526cddc8f2fc45820a7bc3b set-misc-nginx-module-0.32.tar.gz
diff --git a/contrib/src/set-misc-nginx-module/version b/contrib/src/set-misc-nginx-module/version
new file mode 100644
index 0000000..98ee11d
--- /dev/null
+++ b/contrib/src/set-misc-nginx-module/version
@@ -0,0 +1 @@
+SET_MISC_NGINX_MODULE_VERSION := 0.32
diff --git a/contrib/src/stream-lua-nginx-module/Makefile b/contrib/src/stream-lua-nginx-module/Makefile
new file mode 100644
index 0000000..d2222ac
--- /dev/null
+++ b/contrib/src/stream-lua-nginx-module/Makefile
@@ -0,0 +1,21 @@
+# stream-lua-nginx-module
+
+include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version
+STREAM_LUA_NGINX_MODULE_URL := $(GITHUB)/openresty/stream-lua-nginx-module/archive/v$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz
+
+PKGS += stream-lua-nginx-module
+
+$(TARBALLS)/stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz:
+ $(call download_pkg,$(STREAM_LUA_NGINX_MODULE_URL),stream-lua-nginx-module)
+
+.sum-stream-lua-nginx-module: stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz
+
+stream-lua-nginx-module: stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz .sum-stream-lua-nginx-module
+ $(UNPACK)
+ $(APPLY) $(SRC)/stream-lua-nginx-module/config.patch
+ $(MOVE)
+
+DEPS_stream-lua-nginx-module = luajit2 $(DEPS_luajit2) ngx_devel_kit $(DEPS_ngx_devel_kit)
+
+.stream-lua-nginx-module: stream-lua-nginx-module
+ touch $@
diff --git a/contrib/src/stream-lua-nginx-module/SHA512SUMS b/contrib/src/stream-lua-nginx-module/SHA512SUMS
new file mode 100644
index 0000000..e7226f3
--- /dev/null
+++ b/contrib/src/stream-lua-nginx-module/SHA512SUMS
@@ -0,0 +1 @@
+82cd43956feaded415881a21f186edd0bdcf416cb7148d0cabe2567aee27479b0db24bbdcc7d3f5a16d7d1b6c5cf2aeb9fca25145bd2df1c900655fa967569db stream-lua-nginx-module-0.0.9.tar.gz
diff --git a/contrib/src/stream-lua-nginx-module/config.patch b/contrib/src/stream-lua-nginx-module/config.patch
new file mode 100644
index 0000000..2fc73f7
--- /dev/null
+++ b/contrib/src/stream-lua-nginx-module/config.patch
@@ -0,0 +1,26 @@
+--- a/config 2015-12-20 05:43:48.000000000 +0000
++++ b/config 2015-12-25 08:01:04.138004474 +0000
+@@ -45,9 +45,9 @@
+ NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
+
+ if [ $NGX_RPATH = YES ]; then
+- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a -R$LUAJIT_LIB $luajit_ld_opt"
+ else
+- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a $ngx_lua_opt_L $luajit_ld_opt"
+ fi
+
+ . auto/feature
+@@ -71,9 +71,9 @@
+ NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
+
+ if [ $NGX_RPATH = YES ]; then
+- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a -R$LUAJIT_LIB $luajit_ld_opt"
+ else
+- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt"
++ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a $luajit_ld_opt"
+ fi
+
+ . auto/feature
diff --git a/contrib/src/stream-lua-nginx-module/version b/contrib/src/stream-lua-nginx-module/version
new file mode 100644
index 0000000..7744542
--- /dev/null
+++ b/contrib/src/stream-lua-nginx-module/version
@@ -0,0 +1 @@
+STREAM_LUA_NGINX_MODULE_VERSION := 0.0.9
diff --git a/contrib/tarballs/.hgignore b/contrib/tarballs/.hgignore
new file mode 100644
index 0000000..8d876d7
--- /dev/null
+++ b/contrib/tarballs/.hgignore
@@ -0,0 +1,3 @@
+syntax:glob
+*.tar.*
+*.githash
diff --git a/debian/Makefile b/debian/Makefile
index 7a4c58c..7d0105f 100644
--- a/debian/Makefile
+++ b/debian/Makefile
@@ -9,6 +9,8 @@
DOCS?= ../docs
BUILD_ENV_PATH= ${HOME}/debuild
MODULE_TARGET?= oss
+CONTRIB?= ../contrib
+CONTRIB:= $(abspath $(CONTRIB))
ifeq ($(MODULE_TARGET), plus)
MODULE_CONTROL_TEMPLATE= nginx-plus-module.control.in
@@ -26,15 +28,16 @@
MODULE_TARGET_PREFIX=$(TARGET_VERSION)+
MODULE_PACKAGE_VENDOR= Sergey Budnevitch <sb@nginx.com>
-MODULE_PACKAGE_URL= http://nginx.org/
+MODULE_PACKAGE_URL= https://nginx.org/
CODENAME= $(shell lsb_release -cs)
ARCH= $(shell uname -m)
NPROC= $(shell getconf _NPROCESSORS_ONLN)
MODSRC_PREFIX= extra/
-MODSRC_PATH= $(MODSRC_PREFIX)
BUILD_DIR= $$(BUILDDIR_nginx)
+BASE_MODULES= geoip image-filter njs perl xslt
+
MODULES=
-include Makefile.module-*
@@ -82,14 +85,28 @@
export CR=\\n
-modname = $(shell echo $1 | cut -d '-' -f 3- | tr '-' '_')
+modname = $(shell echo $1 | tr '-' '_')
default:
@echo "valid targets: all base $(addprefix module-, $(MODULES)) test test-debug"
-all: base modules
+list-base:
+ @printf "%-20s\t%s\n" nginx $(BASE_VERSION)-$(BASE_RELEASE)
+
+list-module-%:
+ @printf "%-20s\t%s\n" $* $(MODULE_VERSION_$(call modname, $*))-$(MODULE_RELEASE_$(call modname, $*))
+
+list-all-modules: $(addprefix list-module-, $(MODULES))
+
+list-base-modules: $(addprefix list-module-, $(BASE_MODULES))
+
+list: list-base list-all-modules
+
+all: base base-modules
@echo "===> all done"
+base-modules: $(addprefix module-, $(BASE_MODULES))
+
modules: $(addprefix module-, $(MODULES))
rules: rules-base $(addprefix rules-module-, $(MODULES))
@@ -101,15 +118,8 @@
ln -s debuild-base/$(SRCDIR)/debian/nginx/usr/sbin base
$(BASE_SRC):
- @{ \
- if [ -f $(SRCPATH)/$(BASE_SRC) ]; then \
- cp -P $(SRCPATH)/$(BASE_SRC) $(BASE_SRC) ; \
- elif [ -f $(SRCPATH)/nginx_$(BASE_VERSION).orig.tar.gz ]; then \
- cp -P $(SRCPATH)/nginx_$(BASE_VERSION).orig.tar.gz $(BASE_SRC) ; \
- else \
- wget http://nginx.org/download/$(BASE_SRC) ; \
- fi ; \
- }
+ cd $(CONTRIB) && make .sum-nginx
+ ln -s $(CONTRIB)/tarballs/$(BASE_SRC) $(BASE_SRC)
nginx.deb-changelog:
@echo "===> Generating $@"
@@ -161,7 +171,7 @@
}
-rules-module-%: $(BASE_SRC) nginx-module-%.deb-changelog
+rules-module-%: $(BASE_SRC) nginx-module-%.deb-changelog .deps-module-%
@echo "===> Creating $@"
@{ \
set -e ; \
@@ -170,10 +180,10 @@
builddir=`echo debuild-module-$${module_asis}` ; \
mkdir -p $${builddir} ; \
if [ "$(MODULE_TARGET)" = "oss" ]; then \
- module_version="$(MODULE_VERSION_PREFIX_$(call modname, $@))$(MODULE_VERSION_$(call modname, $@))" ; \
+ module_version="$(MODULE_VERSION_PREFIX_$(call modname, $*))$(MODULE_VERSION_$(call modname, $*))" ; \
orig_name="nginx-module-$${module_asis}_$${module_version}.orig.tar.gz" ; \
else \
- module_version="$(MODULE_VERSION_PREFIX_$(call modname, $@))$(MODULE_VERSION_$(call modname, $@))" ; \
+ module_version="$(MODULE_VERSION_PREFIX_$(call modname, $*))$(MODULE_VERSION_$(call modname, $*))" ; \
orig_name="nginx-plus-module-$${module_asis}_$${module_version}.orig.tar.gz" ; \
fi ; \
cp $(BASE_SRC) $${builddir}/$${orig_name} ; \
@@ -182,36 +192,43 @@
mkdir -p $${builddir}/$(SRCDIR)/debian/source ; \
echo "3.0 (quilt)" > $${builddir}/$(SRCDIR)/debian/source/format ; \
echo "9" > $${builddir}/$(SRCDIR)/debian/compat ; \
- for src in $(MODULE_SOURCES_$(call modname, $@)); do \
- tar -C $${builddir}/$(SRCDIR)/debian/extra -xf extra/$${src} ; \
+ for src in $(MODULE_SOURCES_$(call modname, $*)); do \
+ tar -C $${builddir}/$(SRCDIR)/debian/extra -xvf $(CONTRIB)/tarballs/$${src} ; \
+ sn=`echo $${src} | sed -e 's/-[0-9].*$$//'` ; \
+ if [ "$${sn}" = "$${src}" ] ; then \
+ sn=$${src%-*} ; \
+ fi ; \
+ ( cd $${builddir}/$(SRCDIR)/debian/extra && ln -s $${sn}-* $${sn} ) ; \
done ; \
- for p in $(MODULE_PATCHES_$(call modname, $@)); do \
- ( cd $${builddir}/$(SRCDIR)/debian/extra && patch -p1 < $${curdir}/extra/$${p} ) ; \
+ for p in $(MODULE_PATCHES_$(call modname, $*)); do \
+ dn=`dirname $${p}` ; \
+ bdn=`basename $${dn}` ; \
+ ( cd $${builddir}/$(SRCDIR)/debian/extra/$${bdn} && patch -p1 < $${p} ) ; \
done ; \
( cd $${builddir}/$(SRCDIR) && find debian/ -type f -exec file --mime {} \; | fgrep 'charset=binary' | cut -d ':' -f 1 > include-binaries && mv include-binaries debian/source/ ) ; \
module_copyright="nginx-module-$${module_asis}.copyright" ; \
cp -p $(DOCS)/$${module_copyright} $${builddir}/$(SRCDIR)/debian/copyright ; \
- definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- addcontroltags=`echo "$$MODULE_ADD_CONTROL_TAGS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- buildenv=`echo "$$MODULE_ENV_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- post=`echo "$$MODULE_POST_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ addcontroltags=`echo "$$MODULE_ADD_CONTROL_TAGS_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ buildenv=`echo "$$MODULE_ENV_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ post=`echo "$$MODULE_POST_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
cat $(MODULE_CONTROL_TEMPLATE) | sed \
-e "s#%%MODULE%%#$${module_asis}#g" \
-e "s#%%MODULE_PACKAGE_VENDOR%%#$(MODULE_PACKAGE_VENDOR)#g" \
-e "s#%%MODULE_PACKAGE_URL%%#$(MODULE_PACKAGE_URL)#g" \
- -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_PREFIX) $(MODULE_SUMMARY_$(call modname, $@))#g" \
- -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $@))#g" \
+ -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_PREFIX) $(MODULE_SUMMARY_$(call modname, $*))#g" \
+ -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $*))#g" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
-e "s#%%BASE_VERSION%%#$(BASE_VERSION)#g" \
-e "s#%%BASE_RELEASE%%#$(BASE_RELEASE)#g" \
-e "s#%%PLUS_VERSION%%#$(PLUS_VERSION)#g" \
- -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $@))#g" \
- -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
- -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
- -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$(call modname, $@))#g" \
- -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$(call modname, $@))#g" \
+ -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $*))#g" \
+ -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $*))#g" \
+ -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $*))#g" \
+ -e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$(call modname, $*))#g" \
+ -e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$(call modname, $*))#g" \
-e "s#%%ADD_CONTROL_TAGS%%#$${addcontroltags}#g" \
> $${builddir}/$(SRCDIR)/debian/control ; \
cat nginx-module-$*.deb-changelog | sed \
@@ -221,9 +238,9 @@
-e "s#%%PLUS_VERSION%%#$(PLUS_VERSION)#g" \
-e "s#%%MODULE%%#$${module_asis}#g" \
-e "s#%%CODENAME%%#$(CODENAME)#g" \
- -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $@))#g" \
- -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
- -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
+ -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $*))#g" \
+ -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $*))#g" \
+ -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $*))#g" \
> $${builddir}/$(SRCDIR)/debian/changelog ; \
cat nginx-module.rules.in | sed \
-e "s#%%MODULE%%#$${module_asis}#g" \
@@ -232,14 +249,14 @@
-e "s#%%BASE_RELEASE%%#$(BASE_RELEASE)#g" \
-e "s#%%TARGET_SUFFIX%%#$(TARGET_SUFFIX)#g" \
-e "s#%%BASE_CONFIGURE_ARGS%%#$(BASE_CONFIGURE_ARGS)#g" \
- -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $@))#g" \
+ -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $*))#g" \
-e "s#%%MODULE_DEFINITIONS%%#$${definitions}#g" \
-e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \
-e "s#%%MODULE_ENV%%#$${buildenv}#g" \
- -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $@))#g" \
+ -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $*))#g" \
-e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \
> $${builddir}/$(SRCDIR)/debian/rules ; \
cat nginx-module.postinst.in | sed \
@@ -249,6 +266,9 @@
ln -s $${builddir}/$(SRCDIR)/debian/rules $@ ; \
}
+.deps-module-%:
+ touch $@
+
nginx-tests:
@{ \
if [ -d "$(SRCPATH)/nginx-tests" ]; then \
@@ -256,7 +276,7 @@
cp -rP $(SRCPATH)/nginx-tests nginx-tests ; \
else \
echo "===> Cloning tests" ; \
- hg clone http://hg.nginx.org/nginx-tests ; \
+ hg clone https://hg.nginx.org/nginx-tests ; \
fi ; \
}
@@ -265,6 +285,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -272,12 +294,16 @@
globals="$$globals env PERL5LIB=$$pwd/debuild-module-perl/$(SRCDIR)/debian/build-nginx/objs/src/http/modules/perl:$$pwd/debuild-module-perl/nginx-$(BASE_VERSION)/debian/build-nginx/objs/src/http/modules/perl/blib/arch;" ; \
fi ; \
if [ -d $$pwd/debuild-module-modsecurity ]; then \
- export LD_LIBRARY_PATH=$$pwd/debuild-module-modsecurity/$(SRCDIR)/debian/build-nginx/extra/modsecurity-v$(LIBMODSECURITY_VERSION)/local/lib ; \
+ export LD_LIBRARY_PATH=$$pwd/debuild-module-modsecurity/$(SRCDIR)/debian/build-nginx/extra/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
fi ; \
if [ -d $$pwd/debuild-module-opentracing ]; then \
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$pwd/debuild-module-opentracing/$(SRCDIR)/debian/build-nginx/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove . ; \
+ if [ -d $$pwd/debuild-module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/debuild-module-lua/nginx-$(BASE_VERSION)/debian/extra/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/debuild-module-lua/nginx-$(BASE_VERSION)/debian/extra/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
}
test-debug: base nginx-tests
@@ -285,6 +311,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module-debug.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -292,44 +320,47 @@
globals="$$globals env PERL5LIB=$$pwd/debuild-module-perl/$(SRCDIR)/debian/build-nginx-debug/objs/src/http/modules/perl:$$pwd/debuild-module-perl/nginx-$(BASE_VERSION)/debian/build-nginx/objs/src/http/modules/perl/blib/arch;" ; \
fi ; \
if [ -d $$pwd/debuild-module-modsecurity ]; then \
- export LD_LIBRARY_PATH=$$pwd/debuild-module-modsecurity/$(SRCDIR)/debian/build-nginx-debug/extra/modsecurity-v$(LIBMODSECURITY_VERSION)/local/lib ; \
+ export LD_LIBRARY_PATH=$$pwd/debuild-module-modsecurity/$(SRCDIR)/debian/build-nginx-debug/extra/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
fi ; \
if [ -d $$pwd/debuild-module-opentracing ]; then \
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$pwd/debuild-module-opentracing/$(SRCDIR)/debian/build-nginx-debug/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" prove . ; \
+ if [ -d $$pwd/debuild-module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/debuild-module-lua/nginx-$(BASE_VERSION)/debian/extra/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/debuild-module-lua/nginx-$(BASE_VERSION)/debian/extra/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
}
-prepare-build-env: $(BASE_SRC)
+test-modules: $(addprefix test-module-, $(MODULES))
+
+test-module-%: base nginx-tests module-%
@{ \
- set -e ; \
- cwd=`pwd` ; \
- case $$cwd in $(BUILD_ENV_PATH)*) \
- echo "You are in $(BUILD_ENV_PATH), skipping" >&2 ; \
- exit 1 ; \
- esac ; \
- if [ -e $(BUILD_ENV_PATH) ]; then \
- echo "$(BUILD_ENV_PATH) is already exists and going to be removed." ; \
- echo "Press Enter to continue or Ctrl+C to exit" ; \
- read ; \
- rm -rf $(BUILD_ENV_PATH) ; \
+ module=`echo $@ | cut -d '-' -f 3-` ; \
+ testdir="$(MODULE_TESTS_$(shell echo $@ | cut -d '-' -f 3-))" ; \
+ if [ -z "$$testdir" ]; then \
+ echo "---> Skipping, no tests defined for $$module module" ; \
+ exit 0 ; \
fi ; \
- mkdir -p $(BUILD_ENV_PATH) ; \
- tar -C $(BUILD_ENV_PATH) -xf $(BASE_SRC) ; \
- cp -rP $${cwd} $(BUILD_ENV_PATH)/nginx-$(BASE_VERSION)/ ; \
- cp $(BASE_SRC) $(BUILD_ENV_PATH)/nginx_$(BASE_VERSION).orig.tar.gz ; \
- cp -pr $(DOCS) $(BUILD_ENV_PATH)/$(SRCDIR)/; \
- echo "Build environment has been created in: $(BUILD_ENV_PATH)" ; \
- echo ; \
- echo "Please do the following in order to get available build targets:" ; \
- echo " cd $(BUILD_ENV_PATH)/nginx-$(BASE_VERSION)/debian" ; \
- echo " make" ; \
+ pwd=`pwd` ; \
+ globals= ; \
+ if [ "$$module" = "modsecurity" ]; then \
+ export LD_LIBRARY_PATH=$$pwd/debuild-module-modsecurity/$(SRCDIR)/debian/build-nginx/extra/modsecurity-v$(MODSECURITY_VERSION)/local/lib ; \
+ fi ; \
+ for so in `find module-$${module}/ -maxdepth 1 -type f -name "*module.so"`; do \
+ globals="$$globals load_module $$pwd/$$so;" ; \
+ done ; \
+ if [ ! -d nginx-tests/module-$${module} ]; then \
+ cp -r $${pwd}/debuild-module-$${module}/$(SRCDIR)/debian/extra/$${testdir} nginx-tests/module-$${module} ; \
+ ln -fs ../lib nginx-tests/module-$${module}/lib ; \
+ fi ; \
+ cd nginx-tests/module-$${module} && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
}
clean:
- @rm -rf base module-* rules-base rules-module-* debuild-base debuild-module-* nginx-tests $(BASE_SRC)
+ @rm -rf base module-* rules-base rules-module-* debuild-base debuild-module-* nginx-tests $(BASE_SRC) .deps-module-*
@rm -f nginx.deb-changelog nginx-module-*.deb-changelog
-.PHONY: default all modules rules test test-debug clean
+.PHONY: default list list-base list-all-modules list-base-modules all modules rules test test-debug clean
.SECONDARY:
diff --git a/debian/Makefile.module-brotli b/debian/Makefile.module-brotli
new file mode 100644
index 0000000..589c8cb
--- /dev/null
+++ b/debian/Makefile.module-brotli
@@ -0,0 +1,39 @@
+MODULES+= brotli
+
+MODULE_SUMMARY_brotli= 3rd-party brotli compression dynamic modules
+
+include $(CONTRIB)/src/ngx_brotli/version
+
+MODULE_VERSION_brotli= $(NGX_BROTLI_VERSION)
+MODULE_RELEASE_brotli= 1
+
+MODULE_VERSION_PREFIX_brotli=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_brotli= ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz
+
+MODULE_CONFARGS_brotli= --add-dynamic-module=$(MODSRC_PREFIX)ngx_brotli-$(NGX_BROTLI_VERSION)rc
+
+.deps-module-brotli:
+ cd $(CONTRIB) && make .sum-ngx_brotli
+ touch $@
+
+MODULE_BUILD_DEPENDS_brotli=,libbrotli-dev
+
+define MODULE_POST_brotli
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_brotli) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_brotli_filter_module.so;
+ load_module modules/ngx_http_brotli_static_module.so;
+
+Please refer to the modules documentation for further details:
+https://github.com/google/ngx_brotli
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_brotli
diff --git a/debian/Makefile.module-encrypted-session b/debian/Makefile.module-encrypted-session
new file mode 100644
index 0000000..34dcedd
--- /dev/null
+++ b/debian/Makefile.module-encrypted-session
@@ -0,0 +1,52 @@
+MODULES+= encrypted-session
+
+MODULE_SUMMARY_encrypted_session= 3rd-party encrypted session dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/encrypted-session-nginx-module/version
+
+MODULE_VERSION_encrypted_session= $(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+MODULE_RELEASE_encrypted_session= 1
+
+MODULE_VERSION_PREFIX_encrypted_session=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_encrypted_session= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_encrypted_session= --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+
+.deps-module-encrypted-session:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-encrypted-session-nginx-module
+ touch $@
+
+MODULE_DEPENDS_encrypted_session=,$(NDK_DEPENDENCY_TAG)
+
+define MODULE_PREINSTALL_encrypted_session
+ rm -f $$(BUILDDIR_nginx_debug)/objs/ndk_http_module-debug.so
+ rm -f $$(BUILDDIR_nginx)/objs/ndk_http_module.so
+endef
+export MODULE_PREINSTALL_encrypted_session
+
+define MODULE_POST_encrypted_session
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_encrypted_session) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_encrypted_session_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/encrypted-session-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_encrypted_session
diff --git a/debian/Makefile.module-geoip b/debian/Makefile.module-geoip
index 5823ed0..1152422 100644
--- a/debian/Makefile.module-geoip
+++ b/debian/Makefile.module-geoip
@@ -9,7 +9,6 @@
--with-stream_geoip_module=dynamic
MODULE_BUILD_DEPENDS_geoip=,libgeoip-dev
-MODULE_DEPENDS_geoip=,libgeoip1
define MODULE_POST_geoip
cat <<BANNER
@@ -23,8 +22,8 @@
load_module modules/ngx_stream_geoip_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_geoip_module.html
-http://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
+https://nginx.org/en/docs/http/ngx_http_geoip_module.html
+https://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
----------------------------------------------------------------------
BANNER
diff --git a/debian/Makefile.module-geoip2 b/debian/Makefile.module-geoip2
new file mode 100644
index 0000000..1bf53c1
--- /dev/null
+++ b/debian/Makefile.module-geoip2
@@ -0,0 +1,40 @@
+MODULES+= geoip2
+
+MODULE_SUMMARY_geoip2= 3rd-party GeoIP2 dynamic modules
+
+include $(CONTRIB)/src/ngx_http_geoip2_module/version
+
+MODULE_VERSION_geoip2= $(GEOIP2_NGINX_MODULE_VERSION)
+MODULE_RELEASE_geoip2= 1
+
+MODULE_VERSION_PREFIX_geoip2=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_geoip2= ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_geoip2= --with-stream \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION)
+
+.deps-module-geoip2:
+ cd $(CONTRIB) && make .sum-ngx_http_geoip2_module
+ touch $@
+
+MODULE_BUILD_DEPENDS_geoip2=, libmaxminddb-dev
+
+define MODULE_POST_geoip2
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_geoip2) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_geoip2_module.so;
+ load_module modules/ngx_stream_geoip2_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/leev/ngx_http_geoip2_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_geoip2
diff --git a/debian/Makefile.module-headers-more b/debian/Makefile.module-headers-more
new file mode 100644
index 0000000..560f043
--- /dev/null
+++ b/debian/Makefile.module-headers-more
@@ -0,0 +1,38 @@
+MODULES+= headers-more
+
+MODULE_SUMMARY_headers_more= 3rd-party headers-more dynamic module
+
+include $(CONTRIB)/src/headers-more-nginx-module/version
+
+MODULE_VERSION_headers_more= $(HEADERS_MORE_NGINX_MODULE_VERSION)
+MODULE_RELEASE_headers_more= 1
+
+MODULE_VERSION_PREFIX_headers_more=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_headers_more= headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_headers_more= --with-http_dav_module \
+ --with-http_realip_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION)
+
+.deps-module-headers-more:
+ cd $(CONTRIB) && make .sum-headers-more-nginx-module
+ touch $@
+
+define MODULE_POST_headers_more
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_headers_more) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_headers_more_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/headers-more-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_headers_more
diff --git a/debian/Makefile.module-image-filter b/debian/Makefile.module-image-filter
index 5c54ebb..51dc347 100644
--- a/debian/Makefile.module-image-filter
+++ b/debian/Makefile.module-image-filter
@@ -20,7 +20,7 @@
load_module modules/ngx_http_image_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
+https://nginx.org/en/docs/http/ngx_http_image_filter_module.html
----------------------------------------------------------------------
BANNER
diff --git a/debian/Makefile.module-lua b/debian/Makefile.module-lua
new file mode 100644
index 0000000..0c70931
--- /dev/null
+++ b/debian/Makefile.module-lua
@@ -0,0 +1,122 @@
+MODULES+= lua
+
+MODULE_SUMMARY_lua= 3rd-party Lua dynamic modules
+
+include $(CONTRIB)/src/luajit2/version
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/lua-nginx-module/version
+include $(CONTRIB)/src/stream-lua-nginx-module/version
+include $(CONTRIB)/src/lua-resty-core/version
+include $(CONTRIB)/src/lua-resty-lrucache/version
+
+MODULE_VERSION_lua= $(LUA_NGINX_MODULE_VERSION)
+MODULE_RELEASE_lua= 1
+
+MODULE_VERSION_PREFIX_lua=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_lua= ngx_devel_kit-$(MODULE_VERSION_ndk).tar.gz \
+ lua-nginx-module-$(MODULE_VERSION_lua).tar.gz \
+ stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz \
+ luajit2-$(LUAJIT2_VERSION).tar.gz \
+ lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz \
+ lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz
+
+MODULE_PATCHES_lua= $(CONTRIB)/src/luajit2/Makefile.patch \
+ $(CONTRIB)/src/luajit2/src-luaconf.h.patch \
+ $(CONTRIB)/src/lua-nginx-module/config.patch \
+ $(CONTRIB)/src/stream-lua-nginx-module/config.patch
+
+MODULE_CONFARGS_lua= --with-http_dav_module \
+ --with-http_realip_module \
+ --with-http_ssl_module \
+ --with-http_v2_module \
+ --with-stream \
+ --with-stream_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)lua-nginx-module-$(LUA_NGINX_MODULE_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION)
+
+.deps-module-lua:
+ cd $(CONTRIB) && make \
+ .sum-luajit2 \
+ .sum-ngx_devel_kit \
+ .sum-lua-nginx-module \
+ .sum-stream-lua-nginx-module \
+ .sum-lua-resty-core \
+ .sum-lua-resty-lrucache
+ touch $@
+
+MODULE_DEPENDS_lua=,$(NDK_DEPENDENCY_TAG)
+
+define MODULE_DEFINITIONS_lua
+ USE_LUAJIT = 1
+ LUAJIT_INC_nginx=$$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1
+ LUAJIT_LIB_nginx=$$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/lib
+ LUAJIT_INC_nginx_debug=$$(BUILDDIR_nginx_debug)/extra/luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1
+ LUAJIT_LIB_nginx_debug=$$(BUILDDIR_nginx_debug)/extra/luajit2-$(LUAJIT2_VERSION)/usr/lib
+endef
+export MODULE_DEFINITIONS_lua
+
+define MODULE_PREBUILD_lua
+ cd $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION) \&\& \
+ DESTDIR="$$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)" CFLAGS="-fPIC" $$(MAKE) -j$$(NUMJOBS) install
+ mv $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/bin/luajit $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/bin/nginx-luajit
+ mv $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/share/man/man1/luajit.1 $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/share/man/man1/nginx-luajit.1
+endef
+export MODULE_PREBUILD_lua
+
+define MODULE_ENV_lua
+LUAJIT_INC="$$(LUAJIT_INC_$$(shell echo $$@ | cut -d '.' -f 3))" LUAJIT_LIB="$$(LUAJIT_LIB_$$(shell echo $$@ | cut -d '.' -f 3))"
+endef
+export MODULE_ENV_lua
+
+define MODULE_PREINSTALL_lua
+ rm -f $$(BUILDDIR_nginx_debug)/objs/ndk_http_module-debug.so
+ rm -f $$(BUILDDIR_nginx)/objs/ndk_http_module.so
+ mkdir -p $$(INSTALLDIR)/usr/bin
+ mkdir -p $$(INSTALLDIR)/usr/share/man/man1
+ install -m755 $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/bin/nginx-luajit $$(INSTALLDIR)/usr/bin/
+ install -m644 $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/share/man/man1/nginx-luajit.1 $$(INSTALLDIR)/usr/share/man/man1/
+ mkdir -p $$(INSTALLDIR)/usr/share/nginx-luajit-2.1/jit
+ for f in `find $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/share/nginx-luajit-2.1/jit/ -type f`; do \
+ install -m644 $$$${f} $$(INSTALLDIR)/usr/share/nginx-luajit-2.1/jit/ ; \
+ done
+ mkdir -p $$(INSTALLDIR)/usr/include/nginx-luajit-2.1
+ for f in `find $$(BUILDDIR_nginx)/extra/luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1/ -type f`; do \
+ install -m644 $$$${f} $$(INSTALLDIR)/usr/include/nginx-luajit-2.1/ ; \
+ done
+ mkdir -p $$(INSTALLDIR)/usr/share/nginx-luajit-2.1/resty
+ cd $$(BUILDDIR_nginx)/extra/lua-resty-core-$(LUA_RESTY_CORE_VERSION) \&\& \
+ LUA_LIB_DIR=$$(INSTALLDIR)/usr/share/nginx-luajit-2.1 make install
+ cd $$(BUILDDIR_nginx)/extra/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION) \&\& \
+ LUA_LIB_DIR=$$(INSTALLDIR)/usr/share/nginx-luajit-2.1 make install
+endef
+export MODULE_PREINSTALL_lua
+
+define MODULE_POST_lua
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_lua) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_lua_module.so;
+ load_module modules/ngx_stream_lua_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+These modules are compiled with LuaJIT 2.1 library.
+The following binary should be used for testing and bytecode generation:
+
+ /usr/bin/nginx-luajit
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/lua-nginx-module
+https://github.com/openresty/stream-lua-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_lua
diff --git a/debian/Makefile.module-modsecurity b/debian/Makefile.module-modsecurity
new file mode 100644
index 0000000..1a9997e
--- /dev/null
+++ b/debian/Makefile.module-modsecurity
@@ -0,0 +1,81 @@
+MODULES+= modsecurity
+
+MODULE_SUMMARY_modsecurity= 3rd-party ModSecurity dynamic module
+
+include $(CONTRIB)/src/modsecurity/version
+include $(CONTRIB)/src/modsecurity-nginx/version
+
+MODULE_VERSION_modsecurity= $(MODSECURITY_NGINX_VERSION)
+MODULE_RELEASE_modsecurity= 1
+LIBMODSECURITY_SOVER= $(MODSECURITY_VERSION)
+
+MODULE_VERSION_PREFIX_modsecurity=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_modsecurity= modsecurity-v$(MODSECURITY_VERSION).tar.gz \
+ modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+
+MODULE_PATCHES_modsecurity= $(CONTRIB)/src/modsecurity/PR2348.patch \
+ $(CONTRIB)/src/modsecurity-nginx/PR165.patch
+
+MODULE_CONFARGS_modsecurity= --add-dynamic-module=$(MODSRC_PREFIX)modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)
+
+.deps-module-modsecurity:
+ cd $(CONTRIB) && make \
+ .sum-modsecurity \
+ .sum-modsecurity-nginx
+ touch $@
+
+MODULE_BUILD_DEPENDS_modsecurity=,libxml2-dev,libyajl-dev,libcurl4-openssl-dev
+
+define MODULE_PREBUILD_modsecurity
+ cd $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION) \&\& \
+ ./configure --prefix $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION)/local --without-lmdb --without-lua \&\& \
+ $$(MAKE) -j$$(NUMJOBS) install \&\& $$(MAKE) check-TESTS
+ rm -f /tmp/audit_test.log /tmp/audit_test_parallel.log
+ rm -rf /tmp/test
+endef
+export MODULE_PREBUILD_modsecurity
+
+define MODULE_ENV_modsecurity
+MODSECURITY_INC="$$(BUILDDIR_$$(shell echo $$@ | cut -d '.' -f 3))/extra/modsecurity-v$(MODSECURITY_VERSION)/local/include" \
+MODSECURITY_LIB="$$(BUILDDIR_$$(shell echo $$@ | cut -d '.' -f 3))/extra/modsecurity-v$(MODSECURITY_VERSION)/local/lib" \
+NGX_IGNORE_RPATH=YES
+endef
+export MODULE_ENV_modsecurity
+
+MODULE_CC_OPT_DEBUG_modsecurity=-DMODSECURITY_DDEBUG=1
+
+define MODULE_PREINSTALL_modsecurity
+ mkdir -p $$(INSTALLDIR)/usr/bin
+ install -m755 -s $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION)/local/bin/modsec-rules-check $$(INSTALLDIR)/usr/bin/
+ mkdir -p $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)
+ install -m755 $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION)/local/lib/libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)
+ ln -fs libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libmodsecurity.so.3
+ ln -fs libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libmodsecurity.so
+ mkdir -p $$(INSTALLDIR)/etc/nginx/modsec
+ install -m644 $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION)/modsecurity.conf-recommended $$(INSTALLDIR)/etc/nginx/modsec/modsecurity.conf
+ install -m644 $$(BUILDDIR_nginx)/extra/modsecurity-v$(MODSECURITY_VERSION)/unicode.mapping $$(INSTALLDIR)/etc/nginx/modsec/
+endef
+export MODULE_PREINSTALL_modsecurity
+
+MODULE_TESTS_modsecurity=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)/tests
+
+define MODULE_POST_modsecurity
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_modsecurity) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_modsecurity_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/SpiderLabs/ModSecurity-nginx
+
+----------------------------------------------------------------------
+BANNER
+
+/sbin/ldconfig
+endef
+export MODULE_POST_modsecurity
diff --git a/debian/Makefile.module-ndk b/debian/Makefile.module-ndk
new file mode 100644
index 0000000..ab7624e
--- /dev/null
+++ b/debian/Makefile.module-ndk
@@ -0,0 +1,45 @@
+MODULES+= ndk
+
+MODULE_SUMMARY_ndk= 3rd-party NDK dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+
+MODULE_VERSION_ndk= $(NGX_DEVEL_KIT_VERSION)
+MODULE_RELEASE_ndk= 1
+
+MODULE_VERSION_PREFIX_ndk=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_ndk= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz
+
+MODULE_CONFARGS_ndk= --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION)
+
+.deps-module-ndk:
+ cd $(CONTRIB) && make .sum-ngx_devel_kit
+ touch $@
+
+MODULE_CC_OPT_ndk=-DNDK_SET_VAR -DNDK_UPSTREAM_LIST
+MODULE_CC_OPT_DEBUG_ndk=$(MODULE_CC_OPT_ndk)
+
+ifeq ($(MODULE_TARGET), plus)
+NDK_DEPENDENCY_TAG= nginx-plus-module-ndk-r$(PLUS_VERSION)
+else
+NDK_DEPENDENCY_TAG= nginx-module-ndk-r$(BASE_VERSION)
+endif
+
+define MODULE_POST_ndk
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_ndk) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/simpl/ngx_devel_kit
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_ndk
diff --git a/debian/Makefile.module-njs b/debian/Makefile.module-njs
index 241236b..2e1109d 100644
--- a/debian/Makefile.module-njs
+++ b/debian/Makefile.module-njs
@@ -2,27 +2,33 @@
MODULE_SUMMARY_njs= njs dynamic modules
-MODULE_VERSION_njs= 0.5.0
+include $(CONTRIB)/src/njs/version
+
+MODULE_VERSION_njs= $(NJS_VERSION)
MODULE_RELEASE_njs= 1
-MODULE_SOURCES_njs= njs-$(MODULE_VERSION_njs).tar.gz
+MODULE_SOURCES_njs= njs-$(NJS_VERSION).tar.gz
-MODULE_CONFARGS_njs= --add-dynamic-module=$(MODSRC_PREFIX)njs-$(MODULE_VERSION_njs)/nginx
+MODULE_CONFARGS_njs= --add-dynamic-module=$(MODSRC_PREFIX)njs-$(NJS_VERSION)/nginx
+
+.deps-module-njs:
+ cd $(CONTRIB) && make .sum-njs
+ touch $@
MODULE_VERSION_PREFIX_njs=$(MODULE_TARGET_PREFIX)
MODULE_BUILD_DEPENDS_njs=,libedit-dev
define MODULE_PREBUILD_njs
- cd debian/extra/njs-$(MODULE_VERSION_njs) \&\& ./configure \&\& make njs
+ cd debian/extra/njs-$(NJS_VERSION) \&\& ./configure \&\& make njs
endef
export MODULE_PREBUILD_njs
define MODULE_PREINSTALL_njs
mkdir -p $$(INSTALLDIR)/usr/share/doc/nginx-module-njs
- install -m644 $$(BUILDDIR_nginx)/extra/njs-$(MODULE_VERSION_njs)/CHANGES $$(INSTALLDIR)/usr/share/doc/nginx-module-njs/
+ install -m644 $$(BUILDDIR_nginx)/extra/njs-$(NJS_VERSION)/CHANGES $$(INSTALLDIR)/usr/share/doc/nginx-module-njs/
mkdir -p $$(INSTALLDIR)/usr/bin
- install -m755 $$(CURDIR)/debian/extra/njs-$(MODULE_VERSION_njs)/build/njs $$(INSTALLDIR)/usr/bin/
+ install -m755 $$(CURDIR)/debian/extra/njs-$(NJS_VERSION)/build/njs $$(INSTALLDIR)/usr/bin/
endef
export MODULE_PREINSTALL_njs
@@ -38,9 +44,9 @@
load_module modules/ngx_stream_js_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/njs/
-http://nginx.org/en/docs/http/ngx_http_js_module.html
-http://nginx.org/en/docs/stream/ngx_stream_js_module.html
+https://nginx.org/en/docs/njs/
+https://nginx.org/en/docs/http/ngx_http_js_module.html
+https://nginx.org/en/docs/stream/ngx_stream_js_module.html
----------------------------------------------------------------------
BANNER
diff --git a/debian/Makefile.module-opentracing b/debian/Makefile.module-opentracing
new file mode 100644
index 0000000..a7d6709
--- /dev/null
+++ b/debian/Makefile.module-opentracing
@@ -0,0 +1,92 @@
+MODULES+= opentracing
+
+MODULE_SUMMARY_opentracing= 3rd-party OpenTracing dynamic module
+
+include $(CONTRIB)/src/opentracing-cpp/version
+include $(CONTRIB)/src/nginx-opentracing/version
+include $(CONTRIB)/src/jaeger-client-cpp/version
+
+MODULE_VERSION_opentracing= $(NGINX_OPENTRACING_VERSION)
+MODULE_RELEASE_opentracing= 1
+
+MODULE_VERSION_PREFIX_opentracing=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_opentracing= opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz \
+ nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz \
+ jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz
+
+MODULE_PATCHES_opentracing= $(CONTRIB)/src/opentracing-cpp/CMakeLists.txt.patch \
+ $(CONTRIB)/src/jaeger-client-cpp/CMakeLists.txt.patch
+
+MODULE_CONFARGS_opentracing= --add-dynamic-module=$(MODSRC_PREFIX)nginx-opentracing-$(NGINX_OPENTRACING_VERSION)/opentracing
+
+.deps-module-opentracing:
+ cd $(CONTRIB) && make \
+ .sum-opentracing-cpp \
+ .sum-nginx-opentracing \
+ .sum-jaeger-client-cpp
+ touch $@
+
+MODULE_BUILD_DEPENDS_opentracing=,cmake,libyaml-cpp-dev
+
+define MODULE_PREBUILD_opentracing
+ cd $$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION) \&\& \
+ mkdir .build \&\& \
+ cd .build \&\& \
+ cmake ../ \&\& \
+ DESTDIR=$$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION) $$(MAKE) -j$$(NUMJOBS) install
+ cd $$(BUILDDIR_nginx)/extra/jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION) \&\& \
+ mkdir .build \&\& \
+ cd .build \&\& \
+ OpenTracing_DIR=$$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/.build cmake -DCMAKE_BUILD_TYPE=Release -DJAEGERTRACING_PLUGIN=ON -DHUNTER_CONFIGURATION_TYPES=Release -DBUILD_TESTING=OFF ../ -DOPENTRACING_INC=$$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include \&\& \
+ $$(MAKE) -j$$(NUMJOBS)
+endef
+export MODULE_PREBUILD_opentracing
+
+MODULE_CC_OPT_opentracing=-I$$\(BUILDDIR_nginx\)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include
+MODULE_CC_OPT_DEBUG_opentracing=$(MODULE_CC_OPT_opentracing)
+MODULE_LD_OPT_opentracing=-L$$\(BUILDDIR_nginx\)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib
+MODULE_LD_OPT_DEBUG_opentracing=$(MODULE_LD_OPT_opentracing)
+
+define MODULE_PREINSTALL_opentracing
+ mkdir -p $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)
+ install -m755 $$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing.so.$(OPENTRACING_CPP_VERSION) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)
+ ln -fs libopentracing.so.$(OPENTRACING_CPP_VERSION) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libopentracing.so.1
+ ln -fs libopentracing.so.1 $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libopentracing.so
+ install -m755 $$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)
+ ln -fs libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libopentracing_mocktracer.so.1
+ ln -fs libopentracing_mocktracer.so.1 $$(INSTALLDIR)/usr/lib/$$(DEB_HOST_MULTIARCH)/libopentracing_mocktracer.so
+ mkdir -p $$(INSTALLDIR)/usr/include
+ cp -pr $$(BUILDDIR_nginx)/extra/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include/opentracing $$(INSTALLDIR)/usr/include/
+ mkdir -p $$(INSTALLDIR)/usr/libexec/opentracing
+ install -m755 $$(BUILDDIR_nginx)/extra/jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION)/.build/libjaegertracing_plugin.so $$(INSTALLDIR)/usr/libexec/opentracing/
+endef
+export MODULE_PREINSTALL_opentracing
+
+define MODULE_POST_opentracing
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_opentracing) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_opentracing_module.so;
+
+Note that additional tracer plugins are required in order
+to communicate with corresponding services (e.g. Zipkin, Jaeger).
+This package includes the Jaeger dynamic tracer plugin:
+
+ /usr/libexec/opentracing/libjaegertracing_plugin.so
+
+Please refer to the module documentation for further details:
+https://github.com/opentracing-contrib/nginx-opentracing
+https://github.com/opentracing-contrib/nginx-opentracing/blob/master/doc/Reference.md
+
+OpenTracing project site (general info and documentation):
+https://opentracing.io/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_opentracing
diff --git a/debian/Makefile.module-passenger b/debian/Makefile.module-passenger
new file mode 100644
index 0000000..907d3cd
--- /dev/null
+++ b/debian/Makefile.module-passenger
@@ -0,0 +1,41 @@
+MODULES+= passenger
+
+MODULE_SUMMARY_passenger= 3rd-party Passenger dynamic module
+
+include $(CONTRIB)/src/passenger/version
+
+MODULE_VERSION_passenger= $(PASSENGER_VERSION)
+MODULE_RELEASE_passenger= 1
+
+MODULE_VERSION_PREFIX_passenger=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_passenger= passenger-$(PASSENGER_VERSION).tar.gz
+MODULE_PATCHES_passenger= $(CONTRIB)/src/passenger/build-nginx.rb.patch \
+ $(CONTRIB)/src/passenger/src-nginx_module-ContentHandler.c.patch
+
+MODULE_CONFARGS_passenger= --with-http_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)passenger-$(PASSENGER_VERSION)/src/nginx_module
+
+.deps-module-passenger:
+ cd $(CONTRIB) && make .sum-passenger
+ touch $@
+
+MODULE_BUILD_DEPENDS_passenger=, rake
+
+define MODULE_POST_passenger
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_passenger) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_passenger_module.so;
+
+Please refer to the module documentation for further details:
+https://www.phusionpassenger.com/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_passenger
diff --git a/debian/Makefile.module-perl b/debian/Makefile.module-perl
index 50dedfa..ce9c3ef 100644
--- a/debian/Makefile.module-perl
+++ b/debian/Makefile.module-perl
@@ -30,7 +30,7 @@
load_module modules/ngx_http_perl_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_perl_module.html
+https://nginx.org/en/docs/http/ngx_http_perl_module.html
----------------------------------------------------------------------
BANNER
diff --git a/debian/Makefile.module-rtmp b/debian/Makefile.module-rtmp
new file mode 100644
index 0000000..8593852
--- /dev/null
+++ b/debian/Makefile.module-rtmp
@@ -0,0 +1,37 @@
+MODULES+= rtmp
+
+MODULE_SUMMARY_rtmp= 3rd-party RTMP dynamic module
+
+include $(CONTRIB)/src/nginx-rtmp-module/version
+
+MODULE_VERSION_rtmp= $(NGINX_RTMP_MODULE_VERSION)
+MODULE_RELEASE_rtmp= 1
+
+MODULE_VERSION_PREFIX_rtmp=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_rtmp= nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz
+MODULE_PATCHES_rtmp= $(CONTRIB)/src/nginx-rtmp-module/PR1340.patch
+
+MODULE_CONFARGS_rtmp= --add-dynamic-module=$(MODSRC_PREFIX)nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION)
+
+.deps-module-rtmp:
+ cd $(CONTRIB) && make .sum-nginx-rtmp-module
+ touch $@
+
+define MODULE_POST_rtmp
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_rtmp) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_rtmp_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/arut/nginx-rtmp-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_rtmp
diff --git a/debian/Makefile.module-set-misc b/debian/Makefile.module-set-misc
new file mode 100644
index 0000000..de7799d
--- /dev/null
+++ b/debian/Makefile.module-set-misc
@@ -0,0 +1,53 @@
+MODULES+= set-misc
+
+MODULE_SUMMARY_set_misc= 3rd-party set-misc dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/set-misc-nginx-module/version
+
+MODULE_VERSION_set_misc= $(SET_MISC_NGINX_MODULE_VERSION)
+MODULE_RELEASE_set_misc= 1
+
+MODULE_VERSION_PREFIX_set_misc=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_set_misc= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_set_misc= --with-http_ssl_module \
+ --add-dynamic-module=$(MODSRC_PREFIX)ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=$(MODSRC_PREFIX)set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION)
+
+.deps-module-set-misc:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-set-misc-nginx-module
+ touch $@
+
+MODULE_DEPENDS_set_misc=,$(NDK_DEPENDENCY_TAG)
+
+define MODULE_PREINSTALL_set_misc
+ rm -f $$(BUILDDIR_nginx_debug)/objs/ndk_http_module-debug.so
+ rm -f $$(BUILDDIR_nginx)/objs/ndk_http_module.so
+endef
+export MODULE_PREINSTALL_set_misc
+
+define MODULE_POST_set_misc
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_set_misc) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_set_misc_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/set-misc-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_set_misc
diff --git a/debian/Makefile.module-subs-filter b/debian/Makefile.module-subs-filter
new file mode 100644
index 0000000..f73f85d
--- /dev/null
+++ b/debian/Makefile.module-subs-filter
@@ -0,0 +1,36 @@
+MODULES+= subs-filter
+
+MODULE_SUMMARY_subs_filter= 3rd-party substitution dynamic module
+
+include $(CONTRIB)/src/ngx_http_substitutions_filter_module/version
+
+MODULE_VERSION_subs_filter= $(SUBSTITUTIONS_FILTER_NGINX_MODULE_VERSION)
+MODULE_RELEASE_subs_filter= 1
+
+MODULE_VERSION_PREFIX_subs_filter=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_subs_filter= ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz
+
+MODULE_CONFARGS_subs_filter= --add-dynamic-module=$(MODSRC_PREFIX)ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH)
+
+.deps-module-subs-filter:
+ cd $(CONTRIB) && make .sum-ngx_http_substitutions_filter_module
+ touch $@
+
+define MODULE_POST_subs_filter
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_subs_filter) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_subs_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/yaoweibin/ngx_http_substitutions_filter_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_subs_filter
diff --git a/debian/Makefile.module-xslt b/debian/Makefile.module-xslt
index 5e655bb..2d6e00c 100644
--- a/debian/Makefile.module-xslt
+++ b/debian/Makefile.module-xslt
@@ -20,7 +20,7 @@
load_module modules/ngx_http_xslt_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_xslt_module.html
+https://nginx.org/en/docs/http/ngx_http_xslt_module.html
----------------------------------------------------------------------
BANNER
diff --git a/debian/extra/njs-0.5.0.tar.gz b/debian/extra/njs-0.5.0.tar.gz
deleted file mode 100644
index 688acfe..0000000
--- a/debian/extra/njs-0.5.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/debian/nginx-debug.service b/debian/nginx-debug.service
index af0bba4..5ae4759 100644
--- a/debian/nginx-debug.service
+++ b/debian/nginx-debug.service
@@ -1,6 +1,6 @@
[Unit]
Description=nginx - high performance web server
-Documentation=http://nginx.org/en/docs/
+Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
diff --git a/debian/nginx.control.in b/debian/nginx.control.in
index 69a34cf..0474938 100644
--- a/debian/nginx.control.in
+++ b/debian/nginx.control.in
@@ -11,7 +11,7 @@
libpcre3-dev,
zlib1g-dev
Standards-Version: 3.9.8.0
-Homepage: http://nginx.org
+Homepage: https://nginx.org
Package: nginx
Architecture: any
diff --git a/debian/nginx.preinst b/debian/nginx.preinst
index c18b83b..dc26ffb 100644
--- a/debian/nginx.preinst
+++ b/debian/nginx.preinst
@@ -32,14 +32,14 @@
Thanks for using nginx!
Please find the official documentation for nginx here:
-* http://nginx.org/en/docs/
+* https://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
-* http://nginx.org/en/support.html
+* https://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
-* http://nginx.com/products/
+* https://nginx.com/products/
----------------------------------------------------------------------
BANNER
diff --git a/debian/nginx.service b/debian/nginx.service
index e509a2e..833aa45 100644
--- a/debian/nginx.service
+++ b/debian/nginx.service
@@ -1,6 +1,6 @@
[Unit]
Description=nginx - high performance web server
-Documentation=http://nginx.org/en/docs/
+Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
diff --git a/docs/Makefile b/docs/Makefile
index 244c64c..b3e5ffb 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -5,10 +5,22 @@
XSLS?= xslscript.pl
PACKAGES= nginx \
+ nginx-module-brotli \
+ nginx-module-encrypted-session \
nginx-module-geoip \
+ nginx-module-geoip2 \
+ nginx-module-headers-more \
nginx-module-image-filter \
+ nginx-module-lua \
+ nginx-module-modsecurity \
+ nginx-module-ndk \
nginx-module-njs \
+ nginx-module-opentracing \
+ nginx-module-passenger \
nginx-module-perl \
+ nginx-module-rtmp \
+ nginx-module-set-misc \
+ nginx-module-subs-filter \
nginx-module-xslt
all: changes changelogs
diff --git a/docs/nginx-module-brotli.copyright b/docs/nginx-module-brotli.copyright
new file mode 100644
index 0000000..d07af3b
--- /dev/null
+++ b/docs/nginx-module-brotli.copyright
@@ -0,0 +1,25 @@
+Copyright (C) 2002-2015 Igor Sysoev
+Copyright (C) 2011-2015 Nginx, Inc.
+Copyright (C) 2015 Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/docs/nginx-module-brotli.xml b/docs/nginx-module-brotli.xml
new file mode 100644
index 0000000..03e893d
--- /dev/null
+++ b/docs/nginx-module-brotli.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_brotli">
+
+
+<changes apply="nginx-module-brotli" ver="1.0.0" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of brotli nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-encrypted-session.copyright b/docs/nginx-module-encrypted-session.copyright
new file mode 100644
index 0000000..0f8e413
--- /dev/null
+++ b/docs/nginx-module-encrypted-session.copyright
@@ -0,0 +1,25 @@
+Copyright (c) 2009-2018, Yichun Zhang (agentzh) <agentzh@gmail.com>, OpenResty Inc.
+
+This module is licensed under the terms of the BSD license.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-encrypted-session.xml b/docs/nginx-module-encrypted-session.xml
new file mode 100644
index 0000000..f0bfb7d
--- /dev/null
+++ b/docs/nginx-module-encrypted-session.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_encrypted_session">
+
+
+<changes apply="nginx-module-encrypted-session" ver="0.08" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of encrypted session nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-geoip2.copyright b/docs/nginx-module-geoip2.copyright
new file mode 100644
index 0000000..fdc13a7
--- /dev/null
+++ b/docs/nginx-module-geoip2.copyright
@@ -0,0 +1,23 @@
+Copyright (c) 2014, Lee Valentine <lee@leev.net>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-geoip2.xml b/docs/nginx-module-geoip2.xml
new file mode 100644
index 0000000..9a29a4f
--- /dev/null
+++ b/docs/nginx-module-geoip2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_geoip2">
+
+
+<changes apply="nginx-module-geoip2" ver="3.3" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of geoip2 nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-headers-more.copyright b/docs/nginx-module-headers-more.copyright
new file mode 100644
index 0000000..a787148
--- /dev/null
+++ b/docs/nginx-module-headers-more.copyright
@@ -0,0 +1,30 @@
+The code base is borrowed directly from the standard headers module
+in Nginx 0.8.24. This part of code is copyrighted by Igor Sysoev.
+
+Copyright (c) 2009-2017, Yichun "agentzh" Zhang (ç« äº¦æ˜¥) agentzh@gmail.com, OpenResty Inc.
+Copyright (c) 2010-2013, Bernd Dorn.
+
+This module is licensed under the terms of the BSD license.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-headers-more.xml b/docs/nginx-module-headers-more.xml
new file mode 100644
index 0000000..7be47e1
--- /dev/null
+++ b/docs/nginx-module-headers-more.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_headers_more">
+
+
+<changes apply="nginx-module-headers-more" ver="0.33" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of headers more nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-lua.copyright b/docs/nginx-module-lua.copyright
new file mode 100644
index 0000000..cd2c396
--- /dev/null
+++ b/docs/nginx-module-lua.copyright
@@ -0,0 +1,151 @@
+This module is licensed under the BSD license.
+
+Copyright (C) 2009-2017, by Xiaozhe Wang (chaoslawful) chaoslawful@gmail.com.
+Copyright (C) 2009-2019, by Yichun "agentzh" Zhang (ç« äº¦æ˜¥) agentzh@gmail.com, OpenResty Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+Includes LuaJIT with the following license:
+
+LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
+
+Copyright (C) 2005-2017 Mike Pall. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+[ MIT license: http://www.opensource.org/licenses/mit-license.php ]
+
+===============================================================================
+[ LuaJIT includes code from Lua 5.1/5.2, which has this license statement: ]
+
+Copyright (C) 1994-2012 Lua.org, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+===============================================================================
+[ LuaJIT includes code from dlmalloc, which has this license statement: ]
+
+This is a version (aka dlmalloc) of malloc/free/realloc written by
+Doug Lea and released to the public domain, as explained at
+http://creativecommons.org/licenses/publicdomain
+
+===============================================================================
+Includes lua-resty-core with the following license:
+
+This module is licensed under the BSD license.
+
+Copyright (C) 2013-2019, by Yichun "agentzh" Zhang, OpenResty Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+Includes lua-resty-lrucache with the following license:
+
+This module is licensed under the BSD license.
+
+Copyright (C) 2014-2019, by Yichun "agentzh" Zhang, OpenResty Inc.
+Copyright (C) 2014-2017, by Shuxin Yang.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-lua.xml b/docs/nginx-module-lua.xml
new file mode 100644
index 0000000..a4f8c21
--- /dev/null
+++ b/docs/nginx-module-lua.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_lua">
+
+
+<changes apply="nginx-module-lua" ver="0.10.19" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of Lua nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-modsecurity.copyright b/docs/nginx-module-modsecurity.copyright
new file mode 100644
index 0000000..b040295
--- /dev/null
+++ b/docs/nginx-module-modsecurity.copyright
@@ -0,0 +1,73 @@
+
+ModSecurity, http://www.modsecurity.org/
+Copyright (c) 2015 Trustwave Holdings, Inc. (http://www.trustwave.com/)
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+Includes the libinjection library distributed under the following license:
+
+/*
+ * Copyright 2012, 2013, 2014
+ * Nick Galbreath -- nickg [at] client9 [dot] com
+ * http://www.client9.com/projects/libinjection/
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of libinjection nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This is the standard "new" BSD license:
+ * http://www.opensource.org/licenses/bsd-license.php
+ */
+
+
+Includes the YAJL library distributed under the following license:
+
+Copyright (c) 2007-2014, Lloyd Hilaiel <me@lloyd.io>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/docs/nginx-module-modsecurity.xml b/docs/nginx-module-modsecurity.xml
new file mode 100644
index 0000000..884f989
--- /dev/null
+++ b/docs/nginx-module-modsecurity.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_modsecurity">
+
+
+<changes apply="nginx-module-modsecurity" ver="1.0.1" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of ModSecurity nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-ndk.copyright b/docs/nginx-module-ndk.copyright
new file mode 100644
index 0000000..973d39e
--- /dev/null
+++ b/docs/nginx-module-ndk.copyright
@@ -0,0 +1,29 @@
+Copyright (c) 2010-2018, Marcus Clyne
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors
+may be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-ndk.xml b/docs/nginx-module-ndk.xml
new file mode 100644
index 0000000..5114028
--- /dev/null
+++ b/docs/nginx-module-ndk.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_ndk">
+
+
+<changes apply="nginx-module-ndk" ver="0.3.1" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of nginx devel kit module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-opentracing.copyright b/docs/nginx-module-opentracing.copyright
new file mode 100644
index 0000000..8dada3e
--- /dev/null
+++ b/docs/nginx-module-opentracing.copyright
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/docs/nginx-module-opentracing.xml b/docs/nginx-module-opentracing.xml
new file mode 100644
index 0000000..4444f6d
--- /dev/null
+++ b/docs/nginx-module-opentracing.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_opentracing">
+
+
+<changes apply="nginx-module-opentracing" ver="0.10.0" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of OpenTracing nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-passenger.copyright b/docs/nginx-module-passenger.copyright
new file mode 100644
index 0000000..aa2c62c
--- /dev/null
+++ b/docs/nginx-module-passenger.copyright
@@ -0,0 +1,19 @@
+Copyright (c) 2010-2017 Phusion Holding B.V.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/docs/nginx-module-passenger.xml b/docs/nginx-module-passenger.xml
new file mode 100644
index 0000000..565ffa5
--- /dev/null
+++ b/docs/nginx-module-passenger.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_passenger">
+
+
+<changes apply="nginx-module-passenger" ver="6.0.6" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of Passenger nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-rtmp.copyright b/docs/nginx-module-rtmp.copyright
new file mode 100644
index 0000000..15cb1e0
--- /dev/null
+++ b/docs/nginx-module-rtmp.copyright
@@ -0,0 +1,22 @@
+Copyright (c) 2012-2014, Roman Arutyunyan
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-rtmp.xml b/docs/nginx-module-rtmp.xml
new file mode 100644
index 0000000..55cb23f
--- /dev/null
+++ b/docs/nginx-module-rtmp.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_rtmp">
+
+
+<changes apply="nginx-module-rtmp" ver="1.2.1" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of RTMP nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-set-misc.copyright b/docs/nginx-module-set-misc.copyright
new file mode 100644
index 0000000..e54a086
--- /dev/null
+++ b/docs/nginx-module-set-misc.copyright
@@ -0,0 +1,26 @@
+Copyright (C) 2009-2018, Yichun Zhang (ç« äº¦æ˜¥) <agentzh@gmail.com>, OpenResty Inc.
+
+This module is licensed under the terms of the BSD license.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-set-misc.xml b/docs/nginx-module-set-misc.xml
new file mode 100644
index 0000000..1f8b43e
--- /dev/null
+++ b/docs/nginx-module-set-misc.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_set_misc">
+
+
+<changes apply="nginx-module-set-misc" ver="0.32" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of set misc nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/docs/nginx-module-subs-filter.copyright b/docs/nginx-module-subs-filter.copyright
new file mode 100644
index 0000000..2c59504
--- /dev/null
+++ b/docs/nginx-module-subs-filter.copyright
@@ -0,0 +1,28 @@
+This module is licensed under the BSD license.
+
+Copyright (C) 2014 by Weibin Yao <yaoweibin@gmail.com>.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/nginx-module-subs-filter.xml b/docs/nginx-module-subs-filter.xml
new file mode 100644
index 0000000..fab0ad3
--- /dev/null
+++ b/docs/nginx-module-subs-filter.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!DOCTYPE change_log SYSTEM "changes.dtd" >
+
+
+<change_log title="nginx_module_subs_filter">
+
+
+<changes apply="nginx-module-subs-filter" ver="0.6.4" rev="1" basever="1.19.6"
+ date="2020-12-17" time="12:00:00 +0300"
+ packager="Andrei Belov <defanator@gmail.com>">
+
+<change>
+<para>
+Initial release of subs filter nginx module package.
+</para>
+</change>
+
+</changes>
+
+
+</change_log>
diff --git a/rpm/SOURCES/njs-0.5.0.tar.gz b/rpm/SOURCES/njs-0.5.0.tar.gz
deleted file mode 100644
index 688acfe..0000000
--- a/rpm/SOURCES/njs-0.5.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/rpm/SPECS/Makefile b/rpm/SPECS/Makefile
index 515e947..8452a14 100644
--- a/rpm/SPECS/Makefile
+++ b/rpm/SPECS/Makefile
@@ -8,9 +8,10 @@
BUILD_ENV_PATH= ${HOME}/rpmbuild
MODULE_TARGET?= oss
MODSRC_PREFIX=
-MODSRC_PATH= $(SRCPATH)
BUILD_DIR= %{bdir}
DOCS?= ../../docs
+CONTRIB?= ../../contrib
+CONTRIB:= $(abspath $(CONTRIB))
ifeq ($(MODULE_TARGET), plus)
MODULE_SPEC_TEMPLATE= nginx-plus-module.spec.in
@@ -27,9 +28,11 @@
MODULE_TARGET_PREFIX=$(TARGET_VERSION)+
MODULE_PACKAGE_VENDOR= Nginx, Inc.
-MODULE_PACKAGE_URL= http://nginx.org/
+MODULE_PACKAGE_URL= https://nginx.org/
MODULE_PACKAGE_LICENSE=2-clause BSD-like license
+BASE_MODULES= geoip image-filter njs perl xslt
+
MODULES=
-include Makefile.module-*
@@ -77,23 +80,35 @@
export CR=\\n
-modname = $(shell echo $1 | cut -c 14- | cut -d '.' -f 1 | tr '-' '_')
+modname = $(shell echo $1 | tr '-' '_')
default:
@echo "valid targets: all base $(addprefix module-, $(MODULES)) test test-debug"
-all: base modules
+list-base:
+ @printf "%-20s\t%s\n" nginx $(BASE_VERSION)-$(BASE_RELEASE)
+
+list-module-%:
+ @printf "%-20s\t%s\n" $* $(MODULE_VERSION_$(call modname, $*))-$(MODULE_RELEASE_$(call modname, $*))
+
+list-all-modules: $(addprefix list-module-, $(MODULES))
+
+list-base-modules: $(addprefix list-module-, $(BASE_MODULES))
+
+list: list-base list-all-modules
+
+all: base base-modules
@echo "===> all done"
+base-modules: $(addprefix module-, $(BASE_MODULES))
+
modules: $(addprefix module-, $(MODULES))
specs: nginx.spec $(addsuffix .spec, $(addprefix nginx-module-, $(MODULES)))
-$(BASE_SRC):
- wget http://nginx.org/download/$(BASE_SRC)
-
$(SRCPATH)/$(BASE_SRC):
- @cd $(SRCPATH) && wget http://nginx.org/download/$(BASE_SRC)
+ cd $(CONTRIB) && make .sum-nginx
+ cd $(SRCPATH) && ln -s $(CONTRIB)/tarballs/$(BASE_SRC) $(BASE_SRC)
base: nginx.spec $(SRCPATH)/$(BASE_SRC)
@echo "===> Building base package" ; \
@@ -120,7 +135,10 @@
cp -p $(DOCS)/nginx.copyright ../SOURCES/ ; \
}
-module-%: nginx-module-%.spec check-compat-% $(SRCPATH)/$(BASE_SRC)
+.deps-module-%:
+ touch $@
+
+module-%: nginx-module-%.spec check-compat-% $(SRCPATH)/$(BASE_SRC) .deps-module-%
@if [ -e nginx-$@.skip ]; then \
echo "---> Skipping nginx-$@ package (`cat nginx-$@.skip`)" ; \
else \
@@ -140,19 +158,42 @@
i=100 ; \
sources= ; \
prepsources= ; \
- for src in $(MODULE_SOURCES_$(call modname, $@)); do \
+ for src in $(MODULE_SOURCES_$(call modname, $*)); do \
+ if [ -h ../SOURCES/$${src} ] ; then rm ../SOURCES/$${src} ; fi ; \
+ ln -s $(CONTRIB)/tarballs/$${src} ../SOURCES/$${src} ; \
s="`printf "Source%d: %s\n" $${i} $${src}`" ; \
sources="$${sources}\n$${s}" ; \
- s="`printf "tar zxf %%{SOURCE%d\}" $${i}`" ; \
+ case "$${src}" in \
+ *.tar.xz) \
+ taropts="xvJfo" ; \
+ ;; \
+ *) \
+ taropts="xvzfo" ; \
+ ;; \
+ esac ; \
+ s="`printf "tar $${taropts} %%{SOURCE%d\}" $${i}`" ; \
+ prepsources="$${prepsources}\n$${s}" ; \
+ sn=`echo $${src} | sed -e 's/-[0-9].*$$//'` ; \
+ if [ "$${sn}" = "$${src}" ] ; then \
+ sn=$${src%-*} ; \
+ fi ; \
+ s="`printf "ln -s $${sn}-* $${sn}"`" ; \
prepsources="$${prepsources}\n$${s}" ; \
i=$$(($${i}+1)) ; \
done ; \
i=100 ; \
patches= ; \
preppatches= ; \
- for src in $(MODULE_PATCHES_$(call modname, $@)); do \
- s="`printf "Patch%d: %s\n" $${i} $${src}`" ; \
+ for src in $(MODULE_PATCHES_$(call modname, $*)); do \
+ dn=`dirname $${src}` ; \
+ bdn=`basename $${dn}` ; \
+ pn="$${bdn}_`basename $${src}`" ; \
+ if [ -h ../SOURCES/$${pn} ] ; then rm ../SOURCES/$${pn} ; fi ; \
+ ln -s $${src} ../SOURCES/$${pn} ; \
+ s="`printf "Patch%d: %s\n" $${i} $${pn}`" ; \
patches="$${patches}\n$${s}" ; \
+ s="`printf "cd %%{bdir}/$${bdn}"`" ; \
+ preppatches="$${preppatches}\n$${s}" ; \
s="`printf "%%patch%d -p1" $${i}`" ; \
preppatches="$${preppatches}\n$${s}" ; \
i=$$(($${i}+1)) ; \
@@ -163,28 +204,28 @@
if [ "$(MODULE_TARGET)" = "plus" ]; then \
pkgname=`echo $${pkgname} | sed -e "s#^nginx-#nginx-plus-#"` ; \
fi ; \
- definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- buildenv=`echo "$$MODULE_ENV_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- files=`echo "$$MODULE_FILES_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
- post=`echo "$$MODULE_POST_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ buildenv=`echo "$$MODULE_ENV_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ files=`echo "$$MODULE_FILES_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+ post=`echo "$$MODULE_POST_$(call modname, $*)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
cat $(MODULE_SPEC_TEMPLATE) | sed \
-e "s#%%NAME%%#$${pkgname}#g" \
-e "s#%%MODULE_PACKAGE_VENDOR%%#$(MODULE_PACKAGE_VENDOR)#g" \
-e "s#%%MODULE_PACKAGE_URL%%#$(MODULE_PACKAGE_URL)#g" \
-e "s#%%MODULE_PACKAGE_LICENSE%%#$(MODULE_PACKAGE_LICENSE)#g" \
- -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_PREFIX) $(MODULE_SUMMARY_$(call modname, $@))#g" \
- -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $@))#g" \
+ -e "s#%%SUMMARY%%#$(MODULE_SUMMARY_PREFIX) $(MODULE_SUMMARY_$(call modname, $*))#g" \
+ -e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $*))#g" \
-e "s#%%TARGET_VERSION%%#$(TARGET_VERSION)#g" \
-e "s#%%BASE_VERSION%%#$(BASE_VERSION)#g" \
-e "s#%%BASE_RELEASE%%#$(BASE_RELEASE)#g" \
-e "s#%%PLUS_VERSION%%#$(PLUS_VERSION)#g" \
- -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $@))#g" \
- -e "s#%%VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
- -e "s#%%RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
+ -e "s#%%VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $*))#g" \
+ -e "s#%%VERSION%%#$(MODULE_VERSION_$(call modname, $*))#g" \
+ -e "s#%%RELEASE%%#$(MODULE_RELEASE_$(call modname, $*))#g" \
-e "s#%%BASE_CONFIGURE_ARGS%%#$(BASE_CONFIGURE_ARGS)#g" \
- -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $@))#g" \
+ -e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $*))#g" \
-e "s#%%COPYRIGHT_SOURCE%%#$${module_copyright}#g" \
-e "s#%%MODULE_SOURCES%%#$${sources}#g" \
-e "s#%%MODULE_PATCHES%%#$${patches}#g" \
@@ -193,10 +234,10 @@
-e "s#%%MODULE_DEFINITIONS%%#$${definitions}#g" \
-e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \
-e "s#%%MODULE_ENV%%#$${buildenv}#g" \
- -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $@))#g" \
- -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $@))#g" \
+ -e "s#%%MODULE_CC_OPT%%#$(MODULE_CC_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT%%#$(MODULE_LD_OPT_$(call modname, $*))#g" \
+ -e "s#%%MODULE_LD_OPT_DEBUG%%#$(MODULE_LD_OPT_DEBUG_$(call modname, $*))#g" \
-e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \
-e "s#%%MODULE_FILES%%#$${files}#g" \
-e "s#%%MODULE_POST%%#$${post}#g" \
@@ -205,8 +246,8 @@
-e 's#%%TARGET_VERSION%%#$(TARGET_VERSION)#g' \
-e 's#%%BASE_VERSION%%#$(BASE_VERSION)#g' \
-e 's#%%BASE_RELEASE%%#$(BASE_RELEASE)#g' \
- -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
- -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
+ -e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $*))#g" \
+ -e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $*))#g" \
>> $@.tmp && \
mv $@.tmp $@ ; \
}
@@ -230,7 +271,7 @@
cp -rP ../nginx-tests nginx-tests ; \
else \
echo "===> Cloning tests" ; \
- hg clone http://hg.nginx.org/nginx-tests ; \
+ hg clone https://hg.nginx.org/nginx-tests ; \
fi ; \
}
@@ -239,6 +280,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -248,7 +291,11 @@
if [ -d $$pwd/module-opentracing ]; then \
export LD_LIBRARY_PATH=$$pwd/module-opentracing/../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove . ; \
+ if [ -d $$pwd/module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/../BUILD/nginx-module-lua-$(BASE_VERSION)/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/../BUILD/nginx-module-lua-$(BASE_VERSION)/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
}
test-debug: base nginx-tests
@@ -256,6 +303,8 @@
@{ \
pwd=`pwd` ; \
globals= ; \
+ globals_http= ; \
+ globals_stream= ; \
for so in `find module-*/ -maxdepth 1 -type f -name "*module-debug.so" | sort -t / -k 2`; do \
globals="$$globals load_module $$pwd/$$so;" ; \
done ; \
@@ -265,34 +314,33 @@
if [ -d $$pwd/module-opentracing ]; then \
export LD_LIBRARY_PATH=$$pwd/module-opentracing/../opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib ; \
fi ; \
- cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" prove . ; \
+ if [ -d $$pwd/module-lua ]; then \
+ globals_http="lua_package_path '$$pwd/../BUILD/nginx-module-lua-$(BASE_VERSION)/lua-resty-core-$(LUA_RESTY_CORE_VERSION)/lib/?.lua;$$pwd/../BUILD/nginx-module-lua-$(BASE_VERSION)/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION)/lib/?.lua;;';" ; \
+ globals_stream="$$globals_http" ; \
+ fi ; \
+ cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" TEST_NGINX_GLOBALS_HTTP="$$globals_http" TEST_NGINX_GLOBALS_STREAM="$$globals_stream" prove $$PROVE_ARGS . ; \
}
-prepare-build-env: $(BASE_SRC)
+test-modules: $(addprefix test-module-, $(MODULES))
+
+test-module-%: base nginx-tests module-%
@{ \
- set -e ; \
- cwd=`pwd` ; \
- case $$cwd in $(BUILD_ENV_PATH)*) \
- echo "You are in $(BUILD_ENV_PATH), skipping" >&2 ; \
- exit 1 ; \
- esac ; \
- if [ -e $(BUILD_ENV_PATH) ]; then \
- echo "$(BUILD_ENV_PATH) is already exists and going to be removed." ; \
- echo "Press Enter to continue or Ctrl+C to exit" ; \
- read ; \
- rm -rf $(BUILD_ENV_PATH) ; \
+ module=`echo $@ | cut -d '-' -f 3-` ; \
+ testdir="$(MODULE_TESTS_$(shell echo $@ | cut -d '-' -f 3-))" ; \
+ if [ -z "$$testdir" ]; then \
+ echo "---> Skipping, no tests defined for $$module module" ; \
+ exit 0 ; \
fi ; \
- mkdir -p $(BUILD_ENV_PATH) ; \
- pd=`dirname $${cwd}` ; \
- cp -rP $${pd}/SPECS $(BUILD_ENV_PATH)/ ; \
- cp -rP $${pd}/SOURCES $(BUILD_ENV_PATH)/ ; \
- cp $(BASE_SRC) $(BUILD_ENV_PATH)/SOURCES/ ; \
- cp -pr $(DOCS) $(BUILD_ENV_PATH); \
- echo "Build environment has been created in: $(BUILD_ENV_PATH)" ; \
- echo ; \
- echo "Please do the following in order to get available build targets:" ; \
- echo " cd $(BUILD_ENV_PATH)/SPECS" ; \
- echo " make" ; \
+ pwd=`pwd` ; \
+ globals= ; \
+ for so in `find module-$${module}/ -maxdepth 1 -type f -name "*module.so"`; do \
+ globals="$$globals load_module $$pwd/$$so;" ; \
+ done ; \
+ if [ ! -d nginx-tests/module-$${module} ]; then \
+ cp -r $${pwd}/module-$${module}/../$${testdir} nginx-tests/module-$${module} ; \
+ ln -fs ../lib nginx-tests/module-$${module}/lib ; \
+ fi ; \
+ cd nginx-tests/module-$${module} && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
}
clean:
@@ -301,7 +349,9 @@
@rm -rf nginx-tests
@rm -f $(BASE_SRC) $(SRCPATH)/$(BASE_SRC)
@rm -f nginx.rpm-changelog nginx-module-*.rpm-changelog
+ @rm -f .deps-module-*
+ @find ../SOURCES/ -type l -delete
-.PHONY: default all modules specs test test-debug clean
+.PHONY: default list list-base list-all-modules list-base-modules all modules specs test test-debug clean
.SECONDARY:
diff --git a/rpm/SPECS/Makefile.module-brotli b/rpm/SPECS/Makefile.module-brotli
new file mode 100644
index 0000000..6e28d69
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-brotli
@@ -0,0 +1,46 @@
+MODULES+= brotli
+
+MODULE_SUMMARY_brotli= 3rd-party brotli compression dynamic modules
+
+include $(CONTRIB)/src/ngx_brotli/version
+
+MODULE_VERSION_brotli= $(NGX_BROTLI_VERSION)
+MODULE_RELEASE_brotli= 1
+
+MODULE_VERSION_PREFIX_brotli=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_brotli= ngx_brotli-$(NGX_BROTLI_VERSION).tar.gz
+
+MODULE_CONFARGS_brotli= --add-dynamic-module=ngx_brotli-$(NGX_BROTLI_VERSION)rc
+
+.deps-module-brotli:
+ cd $(CONTRIB) && make .sum-ngx_brotli
+ touch $@
+
+define MODULE_DEFINITIONS_brotli
+%if 0%{?suse_version} == 0
+BuildRequires: brotli-devel
+%else
+BuildRequires: libbrotli-devel
+%endif
+endef
+export MODULE_DEFINITIONS_brotli
+
+define MODULE_POST_brotli
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_brotli) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_brotli_filter_module.so;
+ load_module modules/ngx_http_brotli_static_module.so;
+
+Please refer to the modules documentation for further details:
+https://github.com/google/ngx_brotli
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_brotli
diff --git a/rpm/SPECS/Makefile.module-encrypted-session b/rpm/SPECS/Makefile.module-encrypted-session
new file mode 100644
index 0000000..a1895fe
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-encrypted-session
@@ -0,0 +1,54 @@
+MODULES+= encrypted-session
+
+MODULE_SUMMARY_encrypted_session= 3rd-party encrypted session dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/encrypted-session-nginx-module/version
+
+MODULE_VERSION_encrypted_session= $(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+MODULE_RELEASE_encrypted_session= 1
+
+MODULE_VERSION_PREFIX_encrypted_session=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_encrypted_session= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_encrypted_session= --add-dynamic-module=ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=encrypted-session-nginx-module-$(ENCRYPTED_SESSION_NGINX_MODULE_VERSION)
+
+.deps-module-encrypted-session:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-encrypted-session-nginx-module
+ touch $@
+
+define MODULE_DEFINITIONS_encrypted_session
+Requires: $(NDK_DEPENDENCY_TAG)
+endef
+export MODULE_DEFINITIONS_encrypted_session
+
+define MODULE_PREINSTALL_encrypted_session
+%{__rm} -f %{bdir}/objs/ndk_http_module.so %{bdir}/objs/ndk_http_module-debug.so
+endef
+export MODULE_PREINSTALL_encrypted_session
+
+define MODULE_POST_encrypted_session
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_encrypted_session) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_encrypted_session_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/encrypted-session-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_encrypted_session
diff --git a/rpm/SPECS/Makefile.module-geoip b/rpm/SPECS/Makefile.module-geoip
index 4ff160d..04beadb 100644
--- a/rpm/SPECS/Makefile.module-geoip
+++ b/rpm/SPECS/Makefile.module-geoip
@@ -11,10 +11,8 @@
define MODULE_DEFINITIONS_geoip
%if 0%{?suse_version} >= 1315
BuildRequires: libGeoIP-devel
-Requires: libGeoIP1
%else
BuildRequires: GeoIP-devel
-Requires: GeoIP
%endif
endef
export MODULE_DEFINITIONS_geoip
@@ -31,8 +29,8 @@
load_module modules/ngx_stream_geoip_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_geoip_module.html
-http://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
+https://nginx.org/en/docs/http/ngx_http_geoip_module.html
+https://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
----------------------------------------------------------------------
BANNER
diff --git a/rpm/SPECS/Makefile.module-geoip2 b/rpm/SPECS/Makefile.module-geoip2
new file mode 100644
index 0000000..d31a252
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-geoip2
@@ -0,0 +1,43 @@
+MODULES+= geoip2
+
+MODULE_SUMMARY_geoip2= 3rd-party GeoIP2 dynamic modules
+
+include $(CONTRIB)/src/ngx_http_geoip2_module/version
+
+MODULE_VERSION_geoip2= $(GEOIP2_NGINX_MODULE_VERSION)
+MODULE_RELEASE_geoip2= 1
+
+MODULE_VERSION_PREFIX_geoip2=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_geoip2= ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_geoip2= --with-stream \
+ --add-dynamic-module=ngx_http_geoip2_module-$(GEOIP2_NGINX_MODULE_VERSION)
+
+.deps-module-geoip2:
+ cd $(CONTRIB) && make .sum-ngx_http_geoip2_module
+ touch $@
+
+define MODULE_DEFINITIONS_geoip2
+BuildRequires: libmaxminddb-devel
+endef
+export MODULE_DEFINITIONS_geoip2
+
+define MODULE_POST_geoip2
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_geoip2) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_geoip2_module.so;
+ load_module modules/ngx_stream_geoip2_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/leev/ngx_http_geoip2_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_geoip2
diff --git a/rpm/SPECS/Makefile.module-headers-more b/rpm/SPECS/Makefile.module-headers-more
new file mode 100644
index 0000000..8316522
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-headers-more
@@ -0,0 +1,38 @@
+MODULES+= headers-more
+
+MODULE_SUMMARY_headers_more= 3rd-party headers-more dynamic module
+
+include $(CONTRIB)/src/headers-more-nginx-module/version
+
+MODULE_VERSION_headers_more= $(HEADERS_MORE_NGINX_MODULE_VERSION)
+MODULE_RELEASE_headers_more= 1
+
+MODULE_VERSION_PREFIX_headers_more=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_headers_more= headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_headers_more= --with-http_dav_module \
+ --with-http_realip_module \
+ --add-dynamic-module=headers-more-nginx-module-$(HEADERS_MORE_NGINX_MODULE_VERSION)
+
+.deps-module-headers-more:
+ cd $(CONTRIB) && make .sum-headers-more-nginx-module
+ touch $@
+
+define MODULE_POST_headers_more
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_headers_more) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_headers_more_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/headers-more-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_headers_more
diff --git a/rpm/SPECS/Makefile.module-image-filter b/rpm/SPECS/Makefile.module-image-filter
index 6f92860..d53e312 100644
--- a/rpm/SPECS/Makefile.module-image-filter
+++ b/rpm/SPECS/Makefile.module-image-filter
@@ -9,7 +9,6 @@
define MODULE_DEFINITIONS_image_filter
BuildRequires: gd-devel
-Requires: gd
endef
export MODULE_DEFINITIONS_image_filter
@@ -24,7 +23,7 @@
load_module modules/ngx_http_image_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
+https://nginx.org/en/docs/http/ngx_http_image_filter_module.html
----------------------------------------------------------------------
BANNER
diff --git a/rpm/SPECS/Makefile.module-lua b/rpm/SPECS/Makefile.module-lua
new file mode 100644
index 0000000..3cc7041
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-lua
@@ -0,0 +1,129 @@
+MODULES+= lua
+
+MODULE_SUMMARY_lua= 3rd-party Lua dynamic modules
+
+include $(CONTRIB)/src/luajit2/version
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/lua-nginx-module/version
+include $(CONTRIB)/src/stream-lua-nginx-module/version
+include $(CONTRIB)/src/lua-resty-core/version
+include $(CONTRIB)/src/lua-resty-lrucache/version
+
+MODULE_VERSION_lua= $(LUA_NGINX_MODULE_VERSION)
+MODULE_RELEASE_lua= 1
+
+MODULE_VERSION_PREFIX_lua=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_lua= luajit2-$(LUAJIT2_VERSION).tar.gz \
+ ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ lua-nginx-module-$(LUA_NGINX_MODULE_VERSION).tar.gz \
+ stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION).tar.gz \
+ lua-resty-core-$(LUA_RESTY_CORE_VERSION).tar.gz \
+ lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION).tar.gz
+
+MODULE_PATCHES_lua= $(CONTRIB)/src/luajit2/Makefile.patch \
+ $(CONTRIB)/src/luajit2/src-luaconf.h.patch \
+ $(CONTRIB)/src/lua-nginx-module/config.patch \
+ $(CONTRIB)/src/stream-lua-nginx-module/config.patch
+
+MODULE_CONFARGS_lua= --with-http_dav_module \
+ --with-http_realip_module \
+ --with-http_ssl_module \
+ --with-http_v2_module \
+ --with-stream \
+ --with-stream_ssl_module \
+ --add-dynamic-module=ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=lua-nginx-module-$(LUA_NGINX_MODULE_VERSION) \
+ --add-dynamic-module=stream-lua-nginx-module-$(STREAM_LUA_NGINX_MODULE_VERSION)
+
+.deps-module-lua:
+ cd $(CONTRIB) && make \
+ .sum-luajit2 \
+ .sum-ngx_devel_kit \
+ .sum-lua-nginx-module \
+ .sum-stream-lua-nginx-module \
+ .sum-lua-resty-core \
+ .sum-lua-resty-lrucache
+ touch $@
+
+define MODULE_DEFINITIONS_lua
+Requires: $(NDK_DEPENDENCY_TAG)
+%define LUAJIT_INC %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1
+%define LUAJIT_LIB %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/lib
+endef
+export MODULE_DEFINITIONS_lua
+
+define MODULE_PREBUILD_lua
+cd %{bdir}/luajit2-$(LUAJIT2_VERSION)
+DESTDIR="%{bdir}/luajit2-$(LUAJIT2_VERSION)" CFLAGS="-fPIC" make %{?_smp_mflags} install
+mv %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/bin/luajit %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/bin/nginx-luajit
+endef
+export MODULE_PREBUILD_lua
+
+define MODULE_ENV_lua
+LUAJIT_INC="%{LUAJIT_INC}" \\
+LUAJIT_LIB="%{LUAJIT_LIB}" \\
+endef
+export MODULE_ENV_lua
+
+define MODULE_PREINSTALL_lua
+%{__rm} -f %{bdir}/objs/ndk_http_module.so %{bdir}/objs/ndk_http_module-debug.so
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_bindir}
+%{__install} -m755 %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/bin/nginx-luajit \
+ $$RPM_BUILD_ROOT%{_bindir}/
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_datadir}/nginx-luajit-2.1/jit
+for f in `find %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/share/nginx-luajit-2.1/jit/ -type f`; do
+ %{__install} -m644 $${f} $$RPM_BUILD_ROOT%{_datadir}/nginx-luajit-2.1/jit/
+done
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_includedir}/nginx-luajit-2.1
+for f in `find %{bdir}/luajit2-$(LUAJIT2_VERSION)/usr/include/nginx-luajit-2.1/ -type f`; do
+ %{__install} -m644 $${f} $$RPM_BUILD_ROOT%{_includedir}/nginx-luajit-2.1/
+done
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_includedir}/nginx-luajit-2.1/resty
+cd %{bdir}/lua-resty-core-$(LUA_RESTY_CORE_VERSION) \&\& \
+ LUA_LIB_DIR=$$RPM_BUILD_ROOT%{_datadir}/nginx-luajit-2.1 make install
+cd %{bdir}/lua-resty-lrucache-$(LUA_RESTY_LRUCACHE_VERSION) \&\& \
+ LUA_LIB_DIR=$$RPM_BUILD_ROOT%{_datadir}/nginx-luajit-2.1 make install
+endef
+export MODULE_PREINSTALL_lua
+
+define MODULE_FILES_lua
+%{_bindir}/nginx-luajit
+%dir %{_datadir}/nginx-luajit-2.1/jit
+%{_datadir}/nginx-luajit-2.1/jit/*
+%dir %{_datadir}/nginx-luajit-2.1/ngx
+%{_datadir}/nginx-luajit-2.1/ngx/*
+%dir %{_datadir}/nginx-luajit-2.1/resty
+%{_datadir}/nginx-luajit-2.1/resty/*
+%dir %{_includedir}/nginx-luajit-2.1
+%{_includedir}/nginx-luajit-2.1/*
+endef
+export MODULE_FILES_lua
+
+define MODULE_POST_lua
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_lua) for $(MODULE_SUMMARY_PREFIX) have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_lua_module.so;
+ load_module modules/ngx_stream_lua_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+These modules are compiled with LuaJIT 2.1 library.
+The following binary should be used for testing and bytecode generation:
+
+ /usr/bin/nginx-luajit
+
+Please refer to the modules documentation for further details:
+https://github.com/openresty/lua-nginx-module
+https://github.com/openresty/stream-lua-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_lua
diff --git a/rpm/SPECS/Makefile.module-modsecurity b/rpm/SPECS/Makefile.module-modsecurity
new file mode 100644
index 0000000..392a07c
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-modsecurity
@@ -0,0 +1,100 @@
+MODULES+= modsecurity
+
+MODULE_SUMMARY_modsecurity= 3rd-party ModSecurity dynamic module
+
+include $(CONTRIB)/src/modsecurity/version
+include $(CONTRIB)/src/modsecurity-nginx/version
+
+MODULE_VERSION_modsecurity= $(MODSECURITY_NGINX_VERSION)
+MODULE_RELEASE_modsecurity= 1
+LIBMODSECURITY_SOVER= $(MODSECURITY_VERSION)
+
+MODULE_VERSION_PREFIX_modsecurity=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_modsecurity= modsecurity-v$(MODSECURITY_VERSION).tar.gz \
+ modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+
+MODULE_PATCHES_modsecurity= $(CONTRIB)/src/modsecurity/PR2348.patch \
+ $(CONTRIB)/src/modsecurity-nginx/PR165.patch
+
+MODULE_CONFARGS_modsecurity= --add-dynamic-module=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)
+
+.deps-module-modsecurity:
+ cd $(CONTRIB) && make \
+ .sum-modsecurity \
+ .sum-modsecurity-nginx
+ touch $@
+
+define MODULE_DEFINITIONS_modsecurity
+BuildRequires: gcc-c++
+BuildRequires: yajl-devel
+BuildRequires: libcurl-devel
+BuildRequires: libxml2-devel
+endef
+export MODULE_DEFINITIONS_modsecurity
+
+define MODULE_PREBUILD_modsecurity
+cd %{bdir}/modsecurity-v$(MODSECURITY_VERSION) \&\& \
+./configure --prefix %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local --without-lmdb --without-lua \&\& \
+make %{?_smp_mflags} install \&\& TERM=foo make check-TESTS
+rm -f /tmp/audit_test.log /tmp/audit_test_parallel.log
+rm -rf /tmp/test
+endef
+export MODULE_PREBUILD_modsecurity
+
+define MODULE_ENV_modsecurity
+MODSECURITY_INC="%{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/include" \\
+MODSECURITY_LIB="%{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/lib" \\
+NGX_IGNORE_RPATH=yes \\
+endef
+export MODULE_ENV_modsecurity
+
+MODULE_CC_OPT_DEBUG_modsecurity=-DMODSECURITY_DDEBUG=1
+
+define MODULE_PREINSTALL_modsecurity
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_bindir}
+%{__install} -m755 -s %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/bin/modsec-rules-check \
+ $$RPM_BUILD_ROOT%{_bindir}/
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_libdir}
+%{__install} -m755 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/lib/libmodsecurity.so.$(LIBMODSECURITY_SOVER) \
+ $$RPM_BUILD_ROOT%{_libdir}/
+%{__ln_s} -f libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$RPM_BUILD_ROOT%{_libdir}/libmodsecurity.so.3
+%{__ln_s} -f libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$RPM_BUILD_ROOT%{_libdir}/libmodsecurity.so
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec
+%{__install} -m644 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/modsecurity.conf-recommended \
+ $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec/modsecurity.conf
+%{__install} -m644 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/unicode.mapping \
+ $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec/
+endef
+export MODULE_PREINSTALL_modsecurity
+
+define MODULE_FILES_modsecurity
+%dir %{_sysconfdir}/nginx/modsec
+%config(noreplace) %{_sysconfdir}/nginx/modsec/modsecurity.conf
+%config(noreplace) %{_sysconfdir}/nginx/modsec/unicode.mapping
+%{_bindir}/modsec-rules-check
+%{_libdir}/libmodsecurity.so.$(LIBMODSECURITY_SOVER)
+%{_libdir}/libmodsecurity.so.3
+%{_libdir}/libmodsecurity.so
+endef
+export MODULE_FILES_modsecurity
+
+MODULE_TESTS_modsecurity=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)/tests
+
+define MODULE_POST_modsecurity
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_modsecurity) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_modsecurity_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/SpiderLabs/ModSecurity-nginx
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_modsecurity
diff --git a/rpm/SPECS/Makefile.module-ndk b/rpm/SPECS/Makefile.module-ndk
new file mode 100644
index 0000000..60d94fd
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-ndk
@@ -0,0 +1,45 @@
+MODULES+= ndk
+
+MODULE_SUMMARY_ndk= 3rd-party NDK dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+
+MODULE_VERSION_ndk= $(NGX_DEVEL_KIT_VERSION)
+MODULE_RELEASE_ndk= 1
+
+MODULE_VERSION_PREFIX_ndk=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_ndk= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz
+
+MODULE_CONFARGS_ndk= --add-dynamic-module=ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION)
+
+.deps-module-ndk:
+ cd $(CONTRIB) && make .sum-ngx_devel_kit
+ touch $@
+
+MODULE_CC_OPT_ndk=-DNDK_SET_VAR -DNDK_UPSTREAM_LIST
+MODULE_CC_OPT_DEBUG_ndk=$(MODULE_CC_OPT_ndk)
+
+ifeq ($(MODULE_TARGET), plus)
+NDK_DEPENDENCY_TAG= nginx-plus-module-ndk-r$(PLUS_VERSION)
+else
+NDK_DEPENDENCY_TAG= nginx-module-ndk-r$(BASE_VERSION)
+endif
+
+define MODULE_POST_ndk
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_ndk) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/simpl/ngx_devel_kit
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_ndk
diff --git a/rpm/SPECS/Makefile.module-njs b/rpm/SPECS/Makefile.module-njs
index 97a2704..719dd7d 100644
--- a/rpm/SPECS/Makefile.module-njs
+++ b/rpm/SPECS/Makefile.module-njs
@@ -2,14 +2,20 @@
MODULE_SUMMARY_njs= njs dynamic modules
-MODULE_VERSION_njs= 0.5.0
+include $(CONTRIB)/src/njs/version
+
+MODULE_VERSION_njs= $(NJS_VERSION)
MODULE_RELEASE_njs= 1
MODULE_VERSION_PREFIX_njs=$(MODULE_TARGET_PREFIX)
-MODULE_SOURCES_njs= njs-$(MODULE_VERSION_njs).tar.gz
+MODULE_SOURCES_njs= njs-$(NJS_VERSION).tar.gz
-MODULE_CONFARGS_njs= --add-dynamic-module=njs-$(MODULE_VERSION_njs)/nginx
+MODULE_CONFARGS_njs= --add-dynamic-module=njs-$(NJS_VERSION)/nginx
+
+.deps-module-njs:
+ cd $(CONTRIB) && make .sum-njs
+ touch $@
define MODULE_DEFINITIONS_njs
BuildRequires: libedit-devel
@@ -17,15 +23,15 @@
export MODULE_DEFINITIONS_njs
define MODULE_PREBUILD_njs
-cd %{bdir}/njs-$(MODULE_VERSION_njs) \&\& ./configure \&\& make njs
+cd %{bdir}/njs-$(NJS_VERSION) \&\& ./configure \&\& make njs
endef
export MODULE_PREBUILD_njs
define MODULE_PREINSTALL_njs
-%{__install} -m644 %{bdir}/njs-$(MODULE_VERSION_njs)/CHANGES \
+%{__install} -m644 %{bdir}/njs-$(NJS_VERSION)/CHANGES \
$$RPM_BUILD_ROOT%{_datadir}/doc/%{name}/
%{__mkdir} -p $$RPM_BUILD_ROOT%{_bindir}
-%{__install} -m755 %{bdir}/njs-$(MODULE_VERSION_njs)/build/njs \
+%{__install} -m755 %{bdir}/njs-$(NJS_VERSION)/build/njs \
$$RPM_BUILD_ROOT%{_bindir}/
endef
export MODULE_PREINSTALL_njs
@@ -47,9 +53,9 @@
load_module modules/ngx_stream_js_module.so;
Please refer to the modules documentation for further details:
-http://nginx.org/en/docs/njs/
-http://nginx.org/en/docs/http/ngx_http_js_module.html
-http://nginx.org/en/docs/stream/ngx_stream_js_module.html
+https://nginx.org/en/docs/njs/
+https://nginx.org/en/docs/http/ngx_http_js_module.html
+https://nginx.org/en/docs/stream/ngx_stream_js_module.html
----------------------------------------------------------------------
BANNER
diff --git a/rpm/SPECS/Makefile.module-opentracing b/rpm/SPECS/Makefile.module-opentracing
new file mode 100644
index 0000000..2a2a9f4
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-opentracing
@@ -0,0 +1,126 @@
+MODULES+= opentracing
+
+MODULE_SUMMARY_opentracing= 3rd-party OpenTracing dynamic module
+
+include $(CONTRIB)/src/opentracing-cpp/version
+include $(CONTRIB)/src/nginx-opentracing/version
+include $(CONTRIB)/src/jaeger-client-cpp/version
+
+MODULE_VERSION_opentracing= $(NGINX_OPENTRACING_VERSION)
+MODULE_RELEASE_opentracing= 1
+
+MODULE_VERSION_PREFIX_opentracing=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_opentracing= opentracing-cpp-$(OPENTRACING_CPP_VERSION).tar.gz \
+ nginx-opentracing-$(NGINX_OPENTRACING_VERSION).tar.gz \
+ jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION).tar.gz
+
+MODULE_PATCHES_opentracing= $(CONTRIB)/src/opentracing-cpp/CMakeLists.txt.patch \
+ $(CONTRIB)/src/jaeger-client-cpp/CMakeLists.txt.patch
+
+MODULE_CONFARGS_opentracing= --add-dynamic-module=nginx-opentracing-$(NGINX_OPENTRACING_VERSION)/opentracing
+
+.deps-module-opentracing:
+ cd $(CONTRIB) && make \
+ .sum-opentracing-cpp \
+ .sum-nginx-opentracing \
+ .sum-jaeger-client-cpp
+ touch $@
+
+define MODULE_DEFINITIONS_opentracing
+%if (0%{?rhel} > 0) || (0%{?amzn} > 0)
+%if (0%{?rhel} >= 8)
+BuildRequires: cmake
+%define _cmake_cmd %{__cmake}
+%else
+BuildRequires: cmake3
+%define _cmake_cmd %{__cmake3}
+%endif
+%endif
+
+%if (0%{?suse_version} >= 1500) || (0%{?fedora} > 0)
+BuildRequires: cmake
+%define _cmake_cmd %{__cmake}
+%endif
+BuildRequires: libstdc++-static
+BuildRequires: yaml-cpp-devel
+endef
+export MODULE_DEFINITIONS_opentracing
+
+MODULE_CC_OPT_opentracing=-I%{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include
+MODULE_CC_OPT_DEBUG_opentracing=$(MODULE_CC_OPT_opentracing)
+MODULE_LD_OPT_opentracing=-L%{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib
+MODULE_LD_OPT_DEBUG_opentracing=$(MODULE_LD_OPT_opentracing)
+
+define MODULE_PREBUILD_opentracing
+cd %{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION) \&\& \
+mkdir .build \&\& \
+cd .build \&\& \
+%{_cmake_cmd} ../ \&\& \
+DESTDIR=%{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION) make %{?_smp_mflags} install || exit 1
+cd %{bdir}/jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION) \&\& \
+mkdir .build \&\& \
+cd .build \&\& \
+OpenTracing_DIR=%{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/.build %{_cmake_cmd} -DCMAKE_BUILD_TYPE=Release -DJAEGERTRACING_PLUGIN=ON -DHUNTER_CONFIGURATION_TYPES=Release -DBUILD_TESTING=OFF ../ -DOPENTRACING_INC=%{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include \&\& \
+make %{?_smp_mflags} || exit 1
+endef
+export MODULE_PREBUILD_opentracing
+
+define MODULE_PREINSTALL_opentracing
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_libdir}
+%{__install} -m755 %{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing.so.$(OPENTRACING_CPP_VERSION) \
+ $$RPM_BUILD_ROOT%{_libdir}/
+%{__install} -m755 %{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/lib/libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) \
+ $$RPM_BUILD_ROOT%{_libdir}/
+%{__ln_s} -f libopentracing.so.$(OPENTRACING_CPP_VERSION) $$RPM_BUILD_ROOT%{_libdir}/libopentracing.so.1
+%{__ln_s} -f libopentracing.so.1 $$RPM_BUILD_ROOT%{_libdir}/libopentracing.so
+%{__ln_s} -f libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION) $$RPM_BUILD_ROOT%{_libdir}/libopentracing_mocktracer.so.1
+%{__ln_s} -f libopentracing_mocktracer.so.1 $$RPM_BUILD_ROOT%{_libdir}/libopentracing_mocktracer.so
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_includedir}
+%{__cp} -rp %{bdir}/opentracing-cpp-$(OPENTRACING_CPP_VERSION)/usr/local/include/opentracing $$RPM_BUILD_ROOT%{_includedir}/
+%{__mkdir} -p $$RPM_BUILD_ROOT%{_libexecdir}/opentracing
+%{__install} -m755 %{bdir}/jaeger-client-cpp-$(JAEGER_CLIENT_CPP_VERSION)/.build/libjaegertracing_plugin.so $$RPM_BUILD_ROOT%{_libexecdir}/opentracing/
+endef
+export MODULE_PREINSTALL_opentracing
+
+define MODULE_FILES_opentracing
+%{_libdir}/libopentracing.so.$(OPENTRACING_CPP_VERSION)
+%{_libdir}/libopentracing.so.1
+%{_libdir}/libopentracing.so
+%{_libdir}/libopentracing_mocktracer.so.$(OPENTRACING_CPP_VERSION)
+%{_libdir}/libopentracing_mocktracer.so.1
+%{_libdir}/libopentracing_mocktracer.so
+%dir %{_libexecdir}/opentracing
+%{_libexecdir}/opentracing/libjaegertracing_plugin.so
+%dir %{_includedir}/opentracing
+%{_includedir}/opentracing/*
+endef
+export MODULE_FILES_opentracing
+
+define MODULE_POST_opentracing
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_opentracing) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_opentracing_module.so;
+
+Note that additional tracer plugins are required in order
+to communicate with corresponding services (e.g. Zipkin, Jaeger).
+This package includes the Jaeger dynamic tracer plugin:
+
+ /usr/libexec/opentracing/libjaegertracing_plugin.so
+
+Please refer to the module documentation for further details:
+https://github.com/opentracing-contrib/nginx-opentracing
+https://github.com/opentracing-contrib/nginx-opentracing/blob/master/doc/Reference.md
+
+OpenTracing project site (general info and documentation):
+https://opentracing.io/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_opentracing
diff --git a/rpm/SPECS/Makefile.module-passenger b/rpm/SPECS/Makefile.module-passenger
new file mode 100644
index 0000000..1fa2793
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-passenger
@@ -0,0 +1,43 @@
+MODULES+= passenger
+
+MODULE_SUMMARY_passenger= 3rd-party Passenger dynamic module
+
+include $(CONTRIB)/src/passenger/version
+
+MODULE_VERSION_passenger= $(PASSENGER_VERSION)
+MODULE_RELEASE_passenger= 1
+
+MODULE_VERSION_PREFIX_passenger=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_passenger= passenger-$(PASSENGER_VERSION).tar.gz
+MODULE_PATCHES_passenger= $(CONTRIB)/src/passenger/build-nginx.rb.patch
+
+MODULE_CONFARGS_passenger= --with-http_ssl_module \
+ --add-dynamic-module=passenger-$(PASSENGER_VERSION)/src/nginx_module
+
+.deps-module-passenger:
+ cd $(CONTRIB) && make .sum-passenger
+ touch $@
+
+define MODULE_DEFINITIONS_passenger
+BuildRequires: rubygem-rake
+endef
+export MODULE_DEFINITIONS_passenger
+
+define MODULE_POST_passenger
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_passenger) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_passenger_module.so;
+
+Please refer to the module documentation for further details:
+https://www.phusionpassenger.com/
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_passenger
diff --git a/rpm/SPECS/Makefile.module-perl b/rpm/SPECS/Makefile.module-perl
index 67205fa..826fbfc 100644
--- a/rpm/SPECS/Makefile.module-perl
+++ b/rpm/SPECS/Makefile.module-perl
@@ -47,7 +47,7 @@
load_module modules/ngx_http_perl_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_perl_module.html
+https://nginx.org/en/docs/http/ngx_http_perl_module.html
----------------------------------------------------------------------
BANNER
diff --git a/rpm/SPECS/Makefile.module-rtmp b/rpm/SPECS/Makefile.module-rtmp
new file mode 100644
index 0000000..4eb68b0
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-rtmp
@@ -0,0 +1,37 @@
+MODULES+= rtmp
+
+MODULE_SUMMARY_rtmp= 3rd-party RTMP dynamic module
+
+include $(CONTRIB)/src/nginx-rtmp-module/version
+
+MODULE_VERSION_rtmp= $(NGINX_RTMP_MODULE_VERSION)
+MODULE_RELEASE_rtmp= 1
+
+MODULE_VERSION_PREFIX_rtmp=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_rtmp= nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION).tar.gz
+MODULE_PATCHES_rtmp= $(CONTRIB)/src/nginx-rtmp-module/PR1340.patch
+
+MODULE_CONFARGS_rtmp= --add-dynamic-module=nginx-rtmp-module-$(NGINX_RTMP_MODULE_VERSION)
+
+.deps-module-rtmp:
+ cd $(CONTRIB) && make .sum-nginx-rtmp-module
+ touch $@
+
+define MODULE_POST_rtmp
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_rtmp) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_rtmp_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/arut/nginx-rtmp-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_rtmp
diff --git a/rpm/SPECS/Makefile.module-set-misc b/rpm/SPECS/Makefile.module-set-misc
new file mode 100644
index 0000000..33d82d7
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-set-misc
@@ -0,0 +1,55 @@
+MODULES+= set-misc
+
+MODULE_SUMMARY_set_misc= 3rd-party set-misc dynamic module
+
+include $(CONTRIB)/src/ngx_devel_kit/version
+include $(CONTRIB)/src/set-misc-nginx-module/version
+
+MODULE_VERSION_set_misc= $(SET_MISC_NGINX_MODULE_VERSION)
+MODULE_RELEASE_set_misc= 1
+
+MODULE_VERSION_PREFIX_set_misc=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_set_misc= ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION).tar.gz \
+ set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION).tar.gz
+
+MODULE_CONFARGS_set_misc= --with-http_ssl_module \
+ --add-dynamic-module=ngx_devel_kit-$(NGX_DEVEL_KIT_VERSION) \
+ --add-dynamic-module=set-misc-nginx-module-$(SET_MISC_NGINX_MODULE_VERSION)
+
+.deps-module-set-misc:
+ cd $(CONTRIB) && make \
+ .sum-ngx_devel_kit \
+ .sum-set-misc-nginx-module
+ touch $@
+
+define MODULE_DEFINITIONS_set_misc
+Requires: $(NDK_DEPENDENCY_TAG)
+endef
+export MODULE_DEFINITIONS_set_misc
+
+define MODULE_PREINSTALL_set_misc
+%{__rm} -f %{bdir}/objs/ndk_http_module.so %{bdir}/objs/ndk_http_module-debug.so
+endef
+export MODULE_PREINSTALL_set_misc
+
+define MODULE_POST_set_misc
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_set_misc) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ndk_http_module.so;
+ load_module modules/ngx_http_set_misc_module.so;
+
+Note that ndk_http_module.so must be placed first.
+
+Please refer to the module documentation for further details:
+https://github.com/openresty/set-misc-nginx-module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_set_misc
diff --git a/rpm/SPECS/Makefile.module-subs-filter b/rpm/SPECS/Makefile.module-subs-filter
new file mode 100644
index 0000000..cf2d1ee
--- /dev/null
+++ b/rpm/SPECS/Makefile.module-subs-filter
@@ -0,0 +1,36 @@
+MODULES+= subs-filter
+
+MODULE_SUMMARY_subs_filter= 3rd-party substitution dynamic module
+
+include $(CONTRIB)/src/ngx_http_substitutions_filter_module/version
+
+MODULE_VERSION_subs_filter= $(SUBSTITUTIONS_FILTER_NGINX_MODULE_VERSION)
+MODULE_RELEASE_subs_filter= 1
+
+MODULE_VERSION_PREFIX_subs_filter=$(MODULE_TARGET_PREFIX)
+
+MODULE_SOURCES_subs_filter= ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH).tar.xz
+
+MODULE_CONFARGS_subs_filter= --add-dynamic-module=ngx_http_substitutions_filter_module-$(SUBSTITUTIONS_FILTER_NGINX_MODULE_GITHASH)
+
+.deps-module-subs-filter:
+ cd $(CONTRIB) && make .sum-ngx_http_substitutions_filter_module
+ touch $@
+
+define MODULE_POST_subs_filter
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_subs_filter) for $(MODULE_SUMMARY_PREFIX) has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+ load_module modules/ngx_http_subs_filter_module.so;
+
+Please refer to the module documentation for further details:
+https://github.com/yaoweibin/ngx_http_substitutions_filter_module
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_subs_filter
diff --git a/rpm/SPECS/Makefile.module-xslt b/rpm/SPECS/Makefile.module-xslt
index 4403110..86a9452 100644
--- a/rpm/SPECS/Makefile.module-xslt
+++ b/rpm/SPECS/Makefile.module-xslt
@@ -9,7 +9,6 @@
define MODULE_DEFINITIONS_xslt
BuildRequires: libxslt-devel
-Requires: libxslt
endef
export MODULE_DEFINITIONS_xslt
@@ -24,7 +23,7 @@
load_module modules/ngx_http_xslt_filter_module.so;
Please refer to the module documentation for further details:
-http://nginx.org/en/docs/http/ngx_http_xslt_module.html
+https://nginx.org/en/docs/http/ngx_http_xslt_module.html
----------------------------------------------------------------------
BANNER
diff --git a/rpm/SPECS/nginx-module.spec.in b/rpm/SPECS/nginx-module.spec.in
index 139d6fb..78ac7db 100644
--- a/rpm/SPECS/nginx-module.spec.in
+++ b/rpm/SPECS/nginx-module.spec.in
@@ -45,7 +45,7 @@
URL: %%MODULE_PACKAGE_URL%%
Group: %{_group}
-Source0: http://nginx.org/download/nginx-%{base_version}.tar.gz
+Source0: https://nginx.org/download/nginx-%{base_version}.tar.gz
Source1: %%COPYRIGHT_SOURCE%%
%%MODULE_SOURCES%%
diff --git a/rpm/SPECS/nginx-plus-module.spec.in b/rpm/SPECS/nginx-plus-module.spec.in
index 560cae3..0862eff 100644
--- a/rpm/SPECS/nginx-plus-module.spec.in
+++ b/rpm/SPECS/nginx-plus-module.spec.in
@@ -42,7 +42,7 @@
URL: %%MODULE_PACKAGE_URL%%
Group: %{_group}
-Source0: http://nginx.org/download/nginx-%{base_version}.tar.gz
+Source0: https://nginx.org/download/nginx-%{base_version}.tar.gz
Source1: %%COPYRIGHT_SOURCE%%
%%MODULE_SOURCES%%
diff --git a/rpm/SPECS/nginx.spec.in b/rpm/SPECS/nginx.spec.in
index 2cffcd6..dbb0311 100644
--- a/rpm/SPECS/nginx.spec.in
+++ b/rpm/SPECS/nginx.spec.in
@@ -76,10 +76,10 @@
Version: %{base_version}
Release: %{base_release}
Vendor: Nginx, Inc.
-URL: http://nginx.org/
+URL: https://nginx.org/
Group: %{_group}
-Source0: http://nginx.org/download/%{name}-%{version}.tar.gz
+Source0: https://nginx.org/download/%{name}-%{version}.tar.gz
Source1: logrotate
Source2: nginx.init.in
Source3: nginx.sysconf
@@ -284,14 +284,14 @@
Thanks for using nginx!
Please find the official documentation for nginx here:
-* http://nginx.org/en/docs/
+* https://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
-* http://nginx.org/en/support.html
+* https://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
-* http://nginx.com/products/
+* https://nginx.com/products/
----------------------------------------------------------------------
BANNER