passenger 4.0.59 → 4.0.60

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (579) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/CHANGELOG +15 -0
  5. data/bin/passenger-install-apache2-module +2 -1
  6. data/bin/passenger-install-nginx-module +8 -2
  7. data/ext/apache2/Hooks.cpp +21 -2
  8. data/ext/apache2/MergeDirConfig.cpp +40 -40
  9. data/ext/common/ApplicationPool2/Group.h +14 -10
  10. data/ext/common/ApplicationPool2/Implementation.cpp +13 -7
  11. data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
  12. data/ext/common/Constants.h +1 -1
  13. data/ext/nginx/ContentHandler.c +17 -1
  14. data/lib/phusion_passenger.rb +4 -5
  15. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +4 -3
  16. data/lib/phusion_passenger/platform_info/openssl.rb +61 -0
  17. data/lib/phusion_passenger/standalone/runtime_installer.rb +27 -22
  18. data/packaging/debian/LICENSE.md +19 -0
  19. data/packaging/debian/README.md +320 -0
  20. data/packaging/debian/Vagrantfile +25 -0
  21. data/packaging/debian/build +210 -0
  22. data/packaging/debian/debian_specs/nginx/changelog +1989 -0
  23. data/packaging/debian/debian_specs/nginx/compat.erb +5 -0
  24. data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +25 -0
  25. data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +24 -0
  26. data/packaging/debian/debian_specs/nginx/conf/koi-utf +109 -0
  27. data/packaging/debian/debian_specs/nginx/conf/koi-win +103 -0
  28. data/packaging/debian/debian_specs/nginx/conf/mime.types +89 -0
  29. data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +97 -0
  30. data/packaging/debian/debian_specs/nginx/conf/proxy_params +4 -0
  31. data/packaging/debian/debian_specs/nginx/conf/scgi_params +16 -0
  32. data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +93 -0
  33. data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +13 -0
  34. data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +5 -0
  35. data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +16 -0
  36. data/packaging/debian/debian_specs/nginx/conf/win-utf +125 -0
  37. data/packaging/debian/debian_specs/nginx/control.erb +226 -0
  38. data/packaging/debian/debian_specs/nginx/copyright +196 -0
  39. data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +1 -0
  40. data/packaging/debian/debian_specs/nginx/gbp.conf +2 -0
  41. data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +14 -0
  42. data/packaging/debian/debian_specs/nginx/help/docs/php +119 -0
  43. data/packaging/debian/debian_specs/nginx/help/docs/support-irc +28 -0
  44. data/packaging/debian/debian_specs/nginx/help/docs/upstream +51 -0
  45. data/packaging/debian/debian_specs/nginx/help/examples/drupal +114 -0
  46. data/packaging/debian/debian_specs/nginx/help/examples/http +59 -0
  47. data/packaging/debian/debian_specs/nginx/help/examples/mail +30 -0
  48. data/packaging/debian/debian_specs/nginx/help/examples/mailman +59 -0
  49. data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +34 -0
  50. data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +162 -0
  51. data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +155 -0
  52. data/packaging/debian/debian_specs/nginx/help/examples/wordpress +74 -0
  53. data/packaging/debian/debian_specs/nginx/helpers.rb +41 -0
  54. data/packaging/debian/debian_specs/nginx/index-debian.html.in +32 -0
  55. data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +32 -0
  56. data/packaging/debian/debian_specs/nginx/index.html.erb +10 -0
  57. data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +65 -0
  58. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +510 -0
  59. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +5 -0
  60. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +395 -0
  61. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +119 -0
  62. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +348 -0
  63. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +80 -0
  64. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +826 -0
  65. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +26 -0
  66. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +716 -0
  67. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +26 -0
  68. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +380 -0
  69. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +52 -0
  70. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +32 -0
  71. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +215 -0
  72. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +35 -0
  73. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +25 -0
  74. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +93 -0
  75. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +4 -0
  76. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +462 -0
  77. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +66 -0
  78. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +26 -0
  79. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +171 -0
  80. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +7 -0
  81. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +21 -0
  82. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +1803 -0
  83. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +29 -0
  84. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +9 -0
  85. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +824 -0
  86. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +139 -0
  87. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +395 -0
  88. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +1 -0
  89. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +10 -0
  90. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +8 -0
  91. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +597 -0
  92. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +5 -0
  93. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +12 -0
  94. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +22 -0
  95. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +25 -0
  96. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +35 -0
  97. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +22 -0
  98. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +3 -0
  99. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +4 -0
  100. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +5 -0
  101. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +15 -0
  102. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +2 -0
  103. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +7 -0
  104. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +43 -0
  105. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +78 -0
  106. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +6 -0
  107. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +12 -0
  108. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +49 -0
  109. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +63 -0
  110. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +62 -0
  111. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +124 -0
  112. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +48 -0
  113. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +45 -0
  114. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +12 -0
  115. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +4 -0
  116. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +136 -0
  117. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +797 -0
  118. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +17 -0
  119. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +24 -0
  120. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +113 -0
  121. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +2203 -0
  122. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +5423 -0
  123. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +227 -0
  124. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +72 -0
  125. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +98 -0
  126. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +66 -0
  127. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +112 -0
  128. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +16 -0
  129. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +291 -0
  130. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +19 -0
  131. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +117 -0
  132. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +77 -0
  133. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +200 -0
  134. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +155 -0
  135. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +58 -0
  136. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +43 -0
  137. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +5 -0
  138. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +129 -0
  139. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +30 -0
  140. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +192 -0
  141. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +21 -0
  142. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +396 -0
  143. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +44 -0
  144. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +72 -0
  145. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +171 -0
  146. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +57 -0
  147. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +12 -0
  148. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +82 -0
  149. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +45 -0
  150. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +138 -0
  151. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +3 -0
  152. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +35 -0
  153. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +3 -0
  154. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +165 -0
  155. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +67 -0
  156. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +583 -0
  157. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +22 -0
  158. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +20 -0
  159. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +12 -0
  160. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +215 -0
  161. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +7 -0
  162. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +103 -0
  163. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +26 -0
  164. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +602 -0
  165. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +44 -0
  166. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +434 -0
  167. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +37 -0
  168. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +14 -0
  169. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +205 -0
  170. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +27 -0
  171. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +45 -0
  172. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +6 -0
  173. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +25 -0
  174. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +1850 -0
  175. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +5 -0
  176. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +1558 -0
  177. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +109 -0
  178. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +344 -0
  179. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +25 -0
  180. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +282 -0
  181. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +15 -0
  182. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +183 -0
  183. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +16 -0
  184. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +429 -0
  185. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +18 -0
  186. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +178 -0
  187. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +13 -0
  188. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +667 -0
  189. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +137 -0
  190. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +452 -0
  191. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +31 -0
  192. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +208 -0
  193. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +16 -0
  194. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +788 -0
  195. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +19 -0
  196. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +96 -0
  197. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +13 -0
  198. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +298 -0
  199. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +58 -0
  200. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +110 -0
  201. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +9 -0
  202. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +45 -0
  203. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +8 -0
  204. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +131 -0
  205. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +38 -0
  206. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +24 -0
  207. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +206 -0
  208. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +54 -0
  209. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +26 -0
  210. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +191 -0
  211. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +59 -0
  212. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +73 -0
  213. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +783 -0
  214. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +31 -0
  215. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +361 -0
  216. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +120 -0
  217. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +1180 -0
  218. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +1 -0
  219. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +146 -0
  220. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +5 -0
  221. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +51 -0
  222. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +178 -0
  223. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +5 -0
  224. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +246 -0
  225. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +9 -0
  226. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +51 -0
  227. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +6954 -0
  228. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +363 -0
  229. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +5898 -0
  230. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +61 -0
  231. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +3 -0
  232. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +138 -0
  233. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +140 -0
  234. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +52 -0
  235. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +82 -0
  236. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +377 -0
  237. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +22 -0
  238. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +77 -0
  239. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +537 -0
  240. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +20 -0
  241. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +632 -0
  242. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +31 -0
  243. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +296 -0
  244. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +24 -0
  245. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +175 -0
  246. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +20 -0
  247. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +887 -0
  248. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +22 -0
  249. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +478 -0
  250. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +67 -0
  251. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +19 -0
  252. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +148 -0
  253. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +20 -0
  254. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +369 -0
  255. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +26 -0
  256. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +483 -0
  257. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +20 -0
  258. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +379 -0
  259. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +23 -0
  260. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +216 -0
  261. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +23 -0
  262. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +1081 -0
  263. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +56 -0
  264. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +58 -0
  265. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +33 -0
  266. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +302 -0
  267. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +29 -0
  268. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +1370 -0
  269. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +22 -0
  270. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +782 -0
  271. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +22 -0
  272. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +625 -0
  273. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +23 -0
  274. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +42 -0
  275. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +23 -0
  276. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +320 -0
  277. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +25 -0
  278. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +300 -0
  279. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +20 -0
  280. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +227 -0
  281. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +22 -0
  282. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +252 -0
  283. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +20 -0
  284. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +924 -0
  285. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +184 -0
  286. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +21 -0
  287. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +794 -0
  288. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +28 -0
  289. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +106 -0
  290. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +23 -0
  291. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +94 -0
  292. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +13 -0
  293. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +85 -0
  294. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +2468 -0
  295. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +22 -0
  296. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +1169 -0
  297. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +20 -0
  298. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +252 -0
  299. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +19 -0
  300. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +351 -0
  301. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +22 -0
  302. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +538 -0
  303. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +86 -0
  304. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +216 -0
  305. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +15 -0
  306. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +1844 -0
  307. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +52 -0
  308. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +191 -0
  309. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +20 -0
  310. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +5314 -0
  311. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +156 -0
  312. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +1624 -0
  313. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +56 -0
  314. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +704 -0
  315. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +20 -0
  316. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +1741 -0
  317. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +46 -0
  318. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +278 -0
  319. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +21 -0
  320. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +661 -0
  321. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +20 -0
  322. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +110 -0
  323. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +20 -0
  324. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +283 -0
  325. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +36 -0
  326. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +3972 -0
  327. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +423 -0
  328. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +499 -0
  329. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +20 -0
  330. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +64 -0
  331. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +17 -0
  332. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +5 -0
  333. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +39 -0
  334. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +55 -0
  335. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +27 -0
  336. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +415 -0
  337. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +62 -0
  338. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +64 -0
  339. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +8 -0
  340. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +8 -0
  341. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +102 -0
  342. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +10 -0
  343. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +4 -0
  344. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +144 -0
  345. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +107 -0
  346. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +25 -0
  347. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +8 -0
  348. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +329 -0
  349. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +3 -0
  350. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +1774 -0
  351. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +53 -0
  352. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +3 -0
  353. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +1356 -0
  354. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +37 -0
  355. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +24 -0
  356. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +20 -0
  357. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +182 -0
  358. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +8 -0
  359. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +23 -0
  360. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +1305 -0
  361. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +52 -0
  362. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +103 -0
  363. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +102 -0
  364. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +37 -0
  365. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +141 -0
  366. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +3 -0
  367. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +120 -0
  368. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +199 -0
  369. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +123 -0
  370. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +1298 -0
  371. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +275 -0
  372. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +820 -0
  373. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +470 -0
  374. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +82 -0
  375. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +83 -0
  376. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +81 -0
  377. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +93 -0
  378. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +34 -0
  379. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +415 -0
  380. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +716 -0
  381. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +29 -0
  382. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +64 -0
  383. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +63 -0
  384. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +539 -0
  385. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +682 -0
  386. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +341 -0
  387. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +1413 -0
  388. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +81 -0
  389. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +735 -0
  390. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +315 -0
  391. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +524 -0
  392. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +1749 -0
  393. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +874 -0
  394. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +136 -0
  395. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +32 -0
  396. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +32 -0
  397. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +108 -0
  398. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +59 -0
  399. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +5 -0
  400. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +7 -0
  401. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +29 -0
  402. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +129 -0
  403. data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +135 -0
  404. data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +45 -0
  405. data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +32 -0
  406. data/packaging/debian/debian_specs/nginx/nginx-common.install +3 -0
  407. data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +2 -0
  408. data/packaging/debian/debian_specs/nginx/nginx-common.manpages +1 -0
  409. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +10 -0
  410. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +214 -0
  411. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +18 -0
  412. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +37 -0
  413. data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +66 -0
  414. data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +46 -0
  415. data/packaging/debian/debian_specs/nginx/nginx-common.preinst +47 -0
  416. data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +28 -0
  417. data/packaging/debian/debian_specs/nginx/nginx-doc.docs +2 -0
  418. data/packaging/debian/debian_specs/nginx/nginx-doc.examples +1 -0
  419. data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +17 -0
  420. data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +1 -0
  421. data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +44 -0
  422. data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +22 -0
  423. data/packaging/debian/debian_specs/nginx/nginx.1 +47 -0
  424. data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +23 -0
  425. data/packaging/debian/debian_specs/nginx/patches/series +1 -0
  426. data/packaging/debian/debian_specs/nginx/rules.erb +185 -0
  427. data/packaging/debian/debian_specs/nginx/source/format +1 -0
  428. data/packaging/debian/debian_specs/nginx/tests/control +4 -0
  429. data/packaging/debian/debian_specs/nginx/ufw/nginx +14 -0
  430. data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +34 -0
  431. data/packaging/debian/debian_specs/nginx/watch +3 -0
  432. data/packaging/debian/debian_specs/passenger/README.Debian +12 -0
  433. data/packaging/debian/debian_specs/passenger/changelog +316 -0
  434. data/packaging/debian/debian_specs/passenger/compat +1 -0
  435. data/packaging/debian/debian_specs/passenger/control.erb +123 -0
  436. data/packaging/debian/debian_specs/passenger/copyright +385 -0
  437. data/packaging/debian/debian_specs/passenger/helpers.rb +24 -0
  438. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +3 -0
  439. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +36 -0
  440. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +15 -0
  441. data/packaging/debian/debian_specs/passenger/locations.ini.erb +14 -0
  442. data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +3 -0
  443. data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +2 -0
  444. data/packaging/debian/debian_specs/passenger/passenger.conf +6 -0
  445. data/packaging/debian/debian_specs/passenger/passenger.docs +4 -0
  446. data/packaging/debian/debian_specs/passenger/passenger.install.erb +16 -0
  447. data/packaging/debian/debian_specs/passenger/passenger.load +3 -0
  448. data/packaging/debian/debian_specs/passenger/passenger.manpages +3 -0
  449. data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +29 -0
  450. data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +54 -0
  451. data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +37 -0
  452. data/packaging/debian/debian_specs/passenger/patches/series +0 -0
  453. data/packaging/debian/debian_specs/passenger/rules.erb +84 -0
  454. data/packaging/debian/debian_specs/passenger/source/format +1 -0
  455. data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +12 -0
  456. data/packaging/debian/debian_specs/passenger_enterprise/changelog +316 -0
  457. data/packaging/debian/debian_specs/passenger_enterprise/compat +1 -0
  458. data/packaging/debian/debian_specs/passenger_enterprise/control.erb +123 -0
  459. data/packaging/debian/debian_specs/passenger_enterprise/copyright +385 -0
  460. data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +2 -0
  461. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +3 -0
  462. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +36 -0
  463. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +15 -0
  464. data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +14 -0
  465. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +3 -0
  466. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +2 -0
  467. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +4 -0
  468. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +14 -0
  469. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +3 -0
  470. data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +6 -0
  471. data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +3 -0
  472. data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +1 -0
  473. data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +1 -0
  474. data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +1 -0
  475. data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
  476. data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +84 -0
  477. data/packaging/debian/debian_specs/passenger_enterprise/source/format +1 -0
  478. data/packaging/debian/docker_images/Makefile +38 -0
  479. data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
  480. data/packaging/debian/docker_images/buildbox/Dockerfile +3 -0
  481. data/packaging/debian/docker_images/buildbox/Gemfile +9 -0
  482. data/packaging/debian/docker_images/buildbox/Gemfile.lock +42 -0
  483. data/packaging/debian/docker_images/buildbox/install.sh +85 -0
  484. data/packaging/debian/docker_images/buildbox/pbuilderrc +4 -0
  485. data/packaging/debian/docker_images/buildbox/sudoers.conf +6 -0
  486. data/packaging/debian/docker_images/setup-buildbox-docker-image +7 -0
  487. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +7 -0
  488. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +7 -0
  489. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +7 -0
  490. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +7 -0
  491. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +7 -0
  492. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +7 -0
  493. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +7 -0
  494. data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +3 -0
  495. data/packaging/debian/docker_images/testbox-debian-6/Gemfile +2 -0
  496. data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +23 -0
  497. data/packaging/debian/docker_images/testbox-debian-6/argparse.py +2374 -0
  498. data/packaging/debian/docker_images/testbox-debian-6/install.sh +78 -0
  499. data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +3 -0
  500. data/packaging/debian/docker_images/testbox-debian-7/Gemfile +2 -0
  501. data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +23 -0
  502. data/packaging/debian/docker_images/testbox-debian-7/install.sh +71 -0
  503. data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +3 -0
  504. data/packaging/debian/docker_images/testbox-debian-8/Gemfile +2 -0
  505. data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +23 -0
  506. data/packaging/debian/docker_images/testbox-debian-8/install.sh +70 -0
  507. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +3 -0
  508. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +2 -0
  509. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +23 -0
  510. data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +69 -0
  511. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +3 -0
  512. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +2 -0
  513. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +23 -0
  514. data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +69 -0
  515. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +3 -0
  516. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +2 -0
  517. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +23 -0
  518. data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +69 -0
  519. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +3 -0
  520. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +2 -0
  521. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +23 -0
  522. data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +69 -0
  523. data/packaging/debian/internal/build/Rakefile +235 -0
  524. data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +76 -0
  525. data/packaging/debian/internal/build/build-source-package.rb +121 -0
  526. data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +17 -0
  527. data/packaging/debian/internal/build/rakefile_support.rb +96 -0
  528. data/packaging/debian/internal/build/setup-environment-essentials.sh +15 -0
  529. data/packaging/debian/internal/build/setup-environment.sh +29 -0
  530. data/packaging/debian/internal/lib/distro_info.rb +82 -0
  531. data/packaging/debian/internal/lib/distro_info.sh +303 -0
  532. data/packaging/debian/internal/lib/distro_info.sh.erb +65 -0
  533. data/packaging/debian/internal/lib/library.sh +83 -0
  534. data/packaging/debian/internal/lib/preprocessor.rb +173 -0
  535. data/packaging/debian/internal/lib/tracking.rb +95 -0
  536. data/packaging/debian/internal/lib/tracking_category.rb +45 -0
  537. data/packaging/debian/internal/lib/tracking_database.rb +132 -0
  538. data/packaging/debian/internal/lib/tracking_task.rb +148 -0
  539. data/packaging/debian/internal/lib/utils.rb +78 -0
  540. data/packaging/debian/internal/publish/Rakefile +97 -0
  541. data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +1 -0
  542. data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +1 -0
  543. data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +1 -0
  544. data/packaging/debian/internal/publish/preinit.sh +7 -0
  545. data/packaging/debian/internal/publish/rakefile_support.rb +183 -0
  546. data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +11 -0
  547. data/packaging/debian/internal/scripts/initccache.sh +35 -0
  548. data/packaging/debian/internal/scripts/inituidgid.sh +19 -0
  549. data/packaging/debian/internal/scripts/my_init +340 -0
  550. data/packaging/debian/internal/scripts/pin_certificates +34 -0
  551. data/packaging/debian/internal/scripts/regen_distro_info_script.sh +3 -0
  552. data/packaging/debian/internal/scripts/setup-vagrant.sh +12 -0
  553. data/packaging/debian/internal/scripts/setuser +31 -0
  554. data/packaging/debian/internal/shell/initpbuilder.sh +3 -0
  555. data/packaging/debian/internal/shell/preinit.sh +28 -0
  556. data/packaging/debian/internal/shell/sudoers.conf +1 -0
  557. data/packaging/debian/internal/test/apache/apache-24.conf +5 -0
  558. data/packaging/debian/internal/test/apache/apache-pre-24.conf +4 -0
  559. data/packaging/debian/internal/test/apache/vhost.conf +17 -0
  560. data/packaging/debian/internal/test/misc/config.json +15 -0
  561. data/packaging/debian/internal/test/misc/hosts.conf +4 -0
  562. data/packaging/debian/internal/test/misc/init.sh +25 -0
  563. data/packaging/debian/internal/test/misc/nodejs_test_app.js +6 -0
  564. data/packaging/debian/internal/test/misc/python_test_app.py +3 -0
  565. data/packaging/debian/internal/test/misc/ruby_test_app.rb +5 -0
  566. data/packaging/debian/internal/test/misc/test_support.rb +61 -0
  567. data/packaging/debian/internal/test/nginx/vhost.conf +23 -0
  568. data/packaging/debian/internal/test/system_web_server_test.rb +126 -0
  569. data/packaging/debian/internal/test/test.sh +141 -0
  570. data/packaging/debian/jenkins/publish/clear_caches.rb +48 -0
  571. data/packaging/debian/jenkins/publish/publish.sh +69 -0
  572. data/packaging/debian/jenkins/test/test.sh +63 -0
  573. data/packaging/debian/passenger_apt_automation.sublime-project +14 -0
  574. data/packaging/debian/publish +172 -0
  575. data/packaging/debian/shell +116 -0
  576. data/packaging/debian/test +142 -0
  577. metadata +563 -3
  578. metadata.gz.asc +7 -7
  579. data/resources/oss-binaries.phusionpassenger.com.crt +0 -208
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+
3
+ # this file is mostly meant to be used by the author himself.
4
+
5
+ root=`pwd`
6
+ version=$1
7
+ home=~
8
+ force=$2
9
+
10
+ #--with-cc=gcc46 \
11
+
12
+ ngx-build $force $version \
13
+ --with-ld-opt="-L$PCRE_LIB -Wl,-rpath,$PCRE_LIB:$LIBDRIZZLE_LIB:$LUAJIT_LIB:/usr/local/lib" \
14
+ --without-mail_pop3_module \
15
+ --without-mail_imap_module \
16
+ --without-mail_smtp_module \
17
+ --without-http_upstream_ip_hash_module \
18
+ --without-http_empty_gif_module \
19
+ --without-http_memcached_module \
20
+ --without-http_referer_module \
21
+ --without-http_autoindex_module \
22
+ --without-http_auth_basic_module \
23
+ --without-http_userid_module \
24
+ --with-http_realip_module \
25
+ --add-module=$root/../eval-nginx-module \
26
+ --add-module=$root/../lua-nginx-module \
27
+ --add-module=$root/../echo-nginx-module \
28
+ --add-module=$root $opts \
29
+ --with-debug
30
+ #--add-module=$root/../ndk-nginx-module \
31
+ #--without-http_ssi_module # we cannot disable ssi because echo_location_async depends on it (i dunno why?!)
32
+
@@ -0,0 +1,215 @@
1
+ {
2
+ <insert_a_suppression_name_here>
3
+ Memcheck:Cond
4
+ fun:lj_str_new
5
+ }
6
+ {
7
+ <insert_a_suppression_name_here>
8
+ Memcheck:Cond
9
+ fun:lj_str_new
10
+ fun:lua_pushlstring
11
+ }
12
+ {
13
+ <insert_a_suppression_name_here>
14
+ Memcheck:Addr4
15
+ fun:lj_str_new
16
+ fun:lua_pushlstring
17
+ }
18
+ {
19
+ <insert_a_suppression_name_here>
20
+ Memcheck:Leak
21
+ fun:malloc
22
+ fun:ngx_alloc
23
+ obj:*
24
+ }
25
+ {
26
+ <insert_a_suppression_name_here>
27
+ Memcheck:Leak
28
+ fun:malloc
29
+ fun:ngx_alloc
30
+ }
31
+ {
32
+ <insert_a_suppression_name_here>
33
+ Memcheck:Leak
34
+ fun:malloc
35
+ fun:ngx_alloc
36
+ fun:ngx_palloc_large
37
+ fun:ngx_palloc
38
+ }
39
+ {
40
+ <insert_a_suppression_name_here>
41
+ Memcheck:Leak
42
+ fun:malloc
43
+ fun:ngx_alloc
44
+ fun:ngx_calloc
45
+ fun:ngx_event_process_init
46
+ }
47
+ {
48
+ <insert_a_suppression_name_here>
49
+ Memcheck:Addr4
50
+ fun:lj_str_new
51
+ fun:lua_pushlstring
52
+ fun:ngx_http_lua_get_output_header
53
+ }
54
+ {
55
+ <insert_a_suppression_name_here>
56
+ Memcheck:Addr4
57
+ fun:lj_str_new
58
+ fun:lua_getfield
59
+ fun:ngx_http_lua_cache_load_code
60
+ }
61
+ {
62
+ <insert_a_suppression_name_here>
63
+ Memcheck:Addr4
64
+ fun:lj_str_new
65
+ fun:lua_setfield
66
+ fun:ngx_http_lua_cache_store_code
67
+ }
68
+ {
69
+ <insert_a_suppression_name_here>
70
+ Memcheck:Leak
71
+ fun:malloc
72
+ fun:ngx_alloc
73
+ fun:ngx_event_process_init
74
+ }
75
+ {
76
+ <insert_a_suppression_name_here>
77
+ Memcheck:Leak
78
+ fun:malloc
79
+ fun:ngx_alloc
80
+ fun:(below main)
81
+ }
82
+ {
83
+ <insert_a_suppression_name_here>
84
+ Memcheck:Param
85
+ epoll_ctl(event)
86
+ fun:epoll_ctl
87
+ }
88
+ {
89
+ <insert_a_suppression_name_here>
90
+ Memcheck:Leak
91
+ fun:malloc
92
+ fun:ngx_alloc
93
+ fun:ngx_create_pool
94
+ }
95
+ {
96
+ <insert_a_suppression_name_here>
97
+ Memcheck:Leak
98
+ fun:malloc
99
+ fun:ngx_alloc
100
+ fun:ngx_malloc
101
+ fun:ngx_palloc_large
102
+ }
103
+ {
104
+ <insert_a_suppression_name_here>
105
+ Memcheck:Cond
106
+ fun:memcpy
107
+ fun:ngx_vslprintf
108
+ fun:ngx_log_error_core
109
+ fun:ngx_http_charset_header_filter
110
+ }
111
+ {
112
+ <insert_a_suppression_name_here>
113
+ Memcheck:Leak
114
+ fun:malloc
115
+ fun:ngx_alloc
116
+ fun:ngx_malloc
117
+ fun:ngx_pnalloc
118
+ }
119
+ {
120
+ <insert_a_suppression_name_here>
121
+ Memcheck:Leak
122
+ fun:malloc
123
+ fun:ngx_alloc
124
+ fun:ngx_malloc
125
+ fun:ngx_palloc
126
+ }
127
+ {
128
+ nginx-core-process-init
129
+ Memcheck:Leak
130
+ fun:malloc
131
+ fun:ngx_alloc
132
+ fun:ngx_event_process_init
133
+ }
134
+ {
135
+ nginx-core-crc32-init
136
+ Memcheck:Leak
137
+ fun:malloc
138
+ fun:ngx_alloc
139
+ fun:ngx_crc32_table_init
140
+ fun:main
141
+ }
142
+ {
143
+ palloc_large_for_init_request
144
+ Memcheck:Leak
145
+ fun:malloc
146
+ fun:ngx_alloc
147
+ fun:ngx_palloc_large
148
+ fun:ngx_palloc
149
+ fun:ngx_pcalloc
150
+ fun:ngx_http_init_request
151
+ fun:ngx_epoll_process_events
152
+ fun:ngx_process_events_and_timers
153
+ }
154
+ {
155
+ palloc_large_for_create_temp_buf
156
+ Memcheck:Leak
157
+ fun:malloc
158
+ fun:ngx_alloc
159
+ fun:ngx_palloc_large
160
+ fun:ngx_palloc
161
+ fun:ngx_create_temp_buf
162
+ fun:ngx_http_init_request
163
+ fun:ngx_epoll_process_events
164
+ fun:ngx_process_events_and_timers
165
+ }
166
+ {
167
+ accept_create_pool
168
+ Memcheck:Leak
169
+ fun:memalign
170
+ fun:posix_memalign
171
+ fun:ngx_memalign
172
+ fun:ngx_create_pool
173
+ fun:ngx_event_accept
174
+ fun:ngx_epoll_process_events
175
+ fun:ngx_process_events_and_timers
176
+ }
177
+ {
178
+ create_pool_for_init_req
179
+ Memcheck:Leak
180
+ fun:memalign
181
+ fun:posix_memalign
182
+ fun:ngx_memalign
183
+ fun:ngx_create_pool
184
+ fun:ngx_http_init_request
185
+ fun:ngx_epoll_process_events
186
+ fun:ngx_process_events_and_timers
187
+ }
188
+ {
189
+ <insert_a_suppression_name_here>
190
+ Memcheck:Leak
191
+ fun:memalign
192
+ fun:posix_memalign
193
+ fun:ngx_memalign
194
+ fun:ngx_palloc_block
195
+ fun:ngx_palloc
196
+ }
197
+ {
198
+ <insert_a_suppression_name_here>
199
+ Memcheck:Addr8
200
+ fun:getenv
201
+ fun:gcov_exit
202
+ fun:exit
203
+ fun:ngx_master_process_exit
204
+ }
205
+ {
206
+ <insert_a_suppression_name_here>
207
+ Memcheck:Cond
208
+ fun:index
209
+ fun:expand_dynamic_string_token
210
+ fun:_dl_map_object
211
+ fun:map_doit
212
+ fun:_dl_catch_error
213
+ fun:do_preload
214
+ fun:dl_main
215
+ }
@@ -0,0 +1,35 @@
1
+ 2015-02-04 sto@iti.es
2
+
3
+ * Version 1.4.
4
+ * Cleanup PAM responses on error, the module was not doing it, causing
5
+ memory leaks (thanks to Michael Koziarski for the report).
6
+
7
+ 2013-09-17 sto@iti.es
8
+
9
+ * Version 1.3.
10
+ * Added support to export HOST and REQUEST variables to the PAM ENVIRONMENT.
11
+ Thanks to Ruben Jenster for the initial patch, his version is available
12
+ from https://github.com/r10r/ngx_http_auth_pam_module; my version uses his
13
+ implementation but only if the user sets the ``pam_auth_set_pam_env``
14
+ flag.
15
+ * Fixed bug from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=+721702
16
+ (ngx_module_t commands array should end with a ngx_null_command); the bug
17
+ was already fixed on the PAM_ENV patch, but I forgot about it until I went
18
+ back to my svn repository to add the debian patch... better latter than
19
+ never... ;)
20
+
21
+ 2010-11-15 sto@iti.upv.es
22
+
23
+ * Version 1.2.
24
+ * Fixed possible memory leak when authentication fails, pam_end has to
25
+ be called to free memory (thanks to Neil Chintomby).
26
+
27
+ 2009-01-26 sto@iti.upv.es
28
+
29
+ * Version 1.1.
30
+ * Fixed ngx_log_debugX calls, no we use the correct X value on each
31
+ call.
32
+
33
+ 2008-09-17 sto@iti.upv.es
34
+
35
+ * Initial version (1.0).
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (C) 2008-2015 Sergio Talens Oliag
3
+ *
4
+ * Redistribution and use in source and binary forms, with or without
5
+ * modification, are permitted provided that the following conditions
6
+ * are met:
7
+ * 1. Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * 2. Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ *
13
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
17
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23
+ * SUCH DAMAGE.
24
+ *
25
+ */
@@ -0,0 +1,93 @@
1
+ # ngx_http_auth_pam_module
2
+
3
+ ## Nginx module to use PAM for simple http authentication
4
+
5
+ ### Compilation
6
+
7
+ When compiling from source build as usual adding the -add-module option:
8
+
9
+ ./configure --add-module=$PATH_TO_MODULE
10
+
11
+ If you are using a Debian GNU/Linux distribution install the nginx-full package;
12
+ the module has been included in the nginx debian package since version 1.1.6-1
13
+ and there are newer packages on the stable distribution (wheezy) and the wheezy
14
+ version is also available from the oldstable backports repository
15
+ (squeeze-backports).
16
+
17
+ ### Configuration
18
+
19
+ The module only has two directives:
20
+
21
+ - ``auth_pam``: This is the http authentication realm. If given the value
22
+ ``off`` the module is disabled (needed when we want to override the value
23
+ set on a lower-level directive).
24
+
25
+ - ``auth_pam_service_name``: this is the PAM service name and by default it is
26
+ set to ``nginx``.
27
+
28
+ ### Examples
29
+
30
+ To protect everything under ``/secure`` you will add the following to the
31
+ ``nginx.conf`` file:
32
+
33
+ location /secure {
34
+ auth_pam "Secure Zone";
35
+ auth_pam_service_name "nginx";
36
+ }
37
+
38
+ Note that the module runs as the web server user, so the PAM modules used must
39
+ be able to authenticate the users without being root; that means that if you
40
+ want to use the ``pam_unix.so`` module to autenticate users you need to let the
41
+ web server user to read the ``/etc/shadow`` file if that does not scare you (on
42
+ Debian like systems you can add the ``www-data`` user to the ``shadow`` group).
43
+
44
+ As an example, to authenticate users against an LDAP server (using the
45
+ ``pam_ldap.so`` module) you will use an ``/etc/pam.d/nginx`` like the
46
+ following:
47
+
48
+ auth required /lib/security/pam_ldap.so
49
+ account required /lib/security/pam_ldap.so
50
+
51
+ If you also want to limit the users from LDAP that can authenticate you can
52
+ use the ``pam_listfile.so`` module; to limit who can access resources under
53
+ ``/restricted`` add the following to the ``nginx.conf`` file:
54
+
55
+ location /restricted {
56
+ auth_pam "Restricted Zone";
57
+ auth_pam_service_name "nginx_restricted";
58
+ }
59
+
60
+ Use the following ``/etc/pam.d/nginx_restricted`` file:
61
+
62
+ auth required /lib/security/pam_listfile.so onerr=fail item=user \
63
+ sense=allow file=/etc/nginx/restricted_users
64
+ auth required /lib/security/pam_ldap.so
65
+ account required /lib/security/pam_ldap.so
66
+
67
+ And add the users allowed to authenticate to the ``/etc/nginx/restricted_users``
68
+ (remember that the web server user has to be able to read this file).
69
+
70
+ ### PAM Environment
71
+
72
+ If you want use the ``pam_exec.so`` plugin for request based authentication the
73
+ module can add to the PAM environment the ``HOST`` and ``REQUEST`` variables if
74
+ you set the ``auth_pam_set_pam_env`` flag::
75
+
76
+ location /pam_exec_protected {
77
+ auth_pam "Exec Zone";
78
+ auth_pam_service_name "nginx_exec";
79
+ auth_pam_set_pam_env on;
80
+ }
81
+
82
+ With this configuration if you access an URL like:
83
+
84
+ http://localhost:8000/pam_exec_protected/page?foo=yes&bar=too
85
+
86
+ the PAM environment will include the following variables:
87
+
88
+ HOST=localhost:8000
89
+ REQUEST=GET /pam_exec_protected/page?foo=yes&bar=too HTTP/1.1
90
+
91
+ You may use this information for request based authentication.
92
+ You need a recent pam release (>= version 1.0.90) to expose environment
93
+ variables to pam_exec.
@@ -0,0 +1,4 @@
1
+ ngx_addon_name=ngx_http_auth_pam_module
2
+ HTTP_MODULES="$HTTP_MODULES ngx_http_auth_pam_module"
3
+ NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_auth_pam_module.c"
4
+ CORE_LIBS="$CORE_LIBS -lpam"
@@ -0,0 +1,462 @@
1
+ /*
2
+ * Copyright (C) 2008-2015 Sergio Talens-Oliag <sto@iti.es>
3
+ *
4
+ * Based on nginx's 'ngx_http_auth_basic_module.c' by Igor Sysoev and apache's
5
+ * 'mod_auth_pam.c' by Ingo Luetkebolhe.
6
+ *
7
+ * File: ngx_http_auth_pam_module.c
8
+ */
9
+
10
+ #include <ngx_config.h>
11
+ #include <ngx_core.h>
12
+ #include <ngx_http.h>
13
+ #include <security/pam_appl.h>
14
+
15
+ #define NGX_PAM_SERVICE_NAME "nginx"
16
+
17
+ /* Module context data */
18
+ typedef struct {
19
+ ngx_str_t passwd;
20
+ } ngx_http_auth_pam_ctx_t;
21
+
22
+ /* PAM userinfo */
23
+ typedef struct {
24
+ ngx_str_t username;
25
+ ngx_str_t password;
26
+ } ngx_pam_userinfo;
27
+
28
+ /* Module configuration struct */
29
+ typedef struct {
30
+ ngx_str_t realm; /* http basic auth realm */
31
+ ngx_str_t service_name; /* pam service name */
32
+ ngx_flag_t set_pam_env; /* flag that indicates if we should export
33
+ variables to PAM or NOT */
34
+ } ngx_http_auth_pam_loc_conf_t;
35
+
36
+ /* Module handler */
37
+ static ngx_int_t ngx_http_auth_pam_handler(ngx_http_request_t *r);
38
+
39
+ /* Function that authenticates the user -- is the only function that uses PAM */
40
+ static ngx_int_t ngx_http_auth_pam_authenticate(ngx_http_request_t *r,
41
+ ngx_http_auth_pam_ctx_t *ctx,
42
+ ngx_str_t *passwd, void *conf);
43
+
44
+ static ngx_int_t ngx_http_auth_pam_set_realm(ngx_http_request_t *r,
45
+ ngx_str_t *realm);
46
+
47
+ static void *ngx_http_auth_pam_create_loc_conf(ngx_conf_t *cf);
48
+
49
+ static char *ngx_http_auth_pam_merge_loc_conf(ngx_conf_t *cf,
50
+ void *parent, void *child);
51
+
52
+ static ngx_int_t ngx_http_auth_pam_init(ngx_conf_t *cf);
53
+
54
+ static char *ngx_http_auth_pam(ngx_conf_t *cf, void *post, void *data);
55
+
56
+ static ngx_conf_post_handler_pt ngx_http_auth_pam_p = ngx_http_auth_pam;
57
+
58
+ static int ngx_auth_pam_talker(int num_msg, const struct pam_message ** msg,
59
+ struct pam_response ** resp, void *appdata_ptr);
60
+
61
+ static ngx_command_t ngx_http_auth_pam_commands[] = {
62
+
63
+ { ngx_string("auth_pam"),
64
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LMT_CONF
65
+ |NGX_CONF_TAKE1,
66
+ ngx_conf_set_str_slot,
67
+ NGX_HTTP_LOC_CONF_OFFSET,
68
+ offsetof(ngx_http_auth_pam_loc_conf_t, realm),
69
+ &ngx_http_auth_pam_p },
70
+
71
+ { ngx_string("auth_pam_service_name"),
72
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LMT_CONF
73
+ |NGX_CONF_TAKE1,
74
+ ngx_conf_set_str_slot,
75
+ NGX_HTTP_LOC_CONF_OFFSET,
76
+ offsetof(ngx_http_auth_pam_loc_conf_t, service_name),
77
+ NULL },
78
+
79
+ { ngx_string("auth_pam_set_pam_env"),
80
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LMT_CONF
81
+ |NGX_CONF_FLAG,
82
+ ngx_conf_set_flag_slot,
83
+ NGX_HTTP_LOC_CONF_OFFSET,
84
+ offsetof(ngx_http_auth_pam_loc_conf_t, set_pam_env),
85
+ NULL },
86
+
87
+ ngx_null_command
88
+ };
89
+
90
+
91
+ static ngx_http_module_t ngx_http_auth_pam_module_ctx = {
92
+ NULL, /* preconfiguration */
93
+ ngx_http_auth_pam_init, /* postconfiguration */
94
+
95
+ NULL, /* create main configuration */
96
+ NULL, /* init main configuration */
97
+
98
+ NULL, /* create server configuration */
99
+ NULL, /* merge server configuration */
100
+
101
+ ngx_http_auth_pam_create_loc_conf, /* create location configuration */
102
+ ngx_http_auth_pam_merge_loc_conf /* merge location configuration */
103
+ };
104
+
105
+
106
+ ngx_module_t ngx_http_auth_pam_module = {
107
+ NGX_MODULE_V1,
108
+ &ngx_http_auth_pam_module_ctx, /* module context */
109
+ ngx_http_auth_pam_commands, /* module directives */
110
+ NGX_HTTP_MODULE, /* module type */
111
+ NULL, /* init master */
112
+ NULL, /* init module */
113
+ NULL, /* init process */
114
+ NULL, /* init thread */
115
+ NULL, /* exit thread */
116
+ NULL, /* exit process */
117
+ NULL, /* exit master */
118
+ NGX_MODULE_V1_PADDING
119
+ };
120
+
121
+
122
+ /*
123
+ * Function to free PAM_CONV responses if an error is returned.
124
+ */
125
+ static void
126
+ free_resp(int num_msg, struct pam_response *response)
127
+ {
128
+ int i;
129
+ if (response == NULL)
130
+ return;
131
+ for (i = 0; i < num_msg; i++) {
132
+ if (response[i].resp) {
133
+ /* clear before freeing -- may be a password */
134
+ bzero(response[i].resp, strlen(response[i].resp));
135
+ free(response[i].resp);
136
+ response[i].resp = NULL;
137
+ }
138
+ }
139
+ free(response);
140
+ }
141
+
142
+ /*
143
+ * ngx_auth_pam_talker: supply authentication information to PAM when asked
144
+ *
145
+ * Assumptions:
146
+ * A password is asked for by requesting input without echoing
147
+ * A username is asked for by requesting input _with_ echoing
148
+ */
149
+ static int
150
+ ngx_auth_pam_talker(int num_msg, const struct pam_message ** msg,
151
+ struct pam_response ** resp, void *appdata_ptr)
152
+ {
153
+ int i;
154
+ ngx_pam_userinfo *uinfo;
155
+ struct pam_response *response;
156
+
157
+ uinfo = (ngx_pam_userinfo *) appdata_ptr;
158
+ response = NULL;
159
+
160
+ /* parameter sanity checking */
161
+ if (!resp || !msg || !uinfo)
162
+ return PAM_CONV_ERR;
163
+
164
+ /* allocate memory to store response */
165
+ response = malloc(num_msg * sizeof(struct pam_response));
166
+ if (!response)
167
+ return PAM_CONV_ERR;
168
+
169
+ /* copy values */
170
+ for (i = 0; i < num_msg; i++) {
171
+ /* initialize to safe values */
172
+ response[i].resp_retcode = 0;
173
+ response[i].resp = 0;
174
+
175
+ /* select response based on requested output style */
176
+ switch (msg[i]->msg_style) {
177
+ case PAM_PROMPT_ECHO_ON:
178
+ /* on memory allocation failure, auth fails */
179
+ response[i].resp = strdup((const char *)uinfo->username.data);
180
+ break;
181
+ case PAM_PROMPT_ECHO_OFF:
182
+ response[i].resp = strdup((const char *)uinfo->password.data);
183
+ break;
184
+ default:
185
+ free_resp(i, response);
186
+ return PAM_CONV_ERR;
187
+ }
188
+ }
189
+ /* everything okay, set PAM response values */
190
+ *resp = response;
191
+ return PAM_SUCCESS;
192
+ }
193
+
194
+ static ngx_int_t
195
+ ngx_http_auth_pam_handler(ngx_http_request_t *r)
196
+ {
197
+ ngx_int_t rc;
198
+ ngx_http_auth_pam_ctx_t *ctx;
199
+ ngx_http_auth_pam_loc_conf_t *alcf;
200
+
201
+ alcf = ngx_http_get_module_loc_conf(r, ngx_http_auth_pam_module);
202
+
203
+ if (alcf->realm.len == 0) {
204
+ return NGX_DECLINED;
205
+ }
206
+
207
+ ctx = ngx_http_get_module_ctx(r, ngx_http_auth_pam_module);
208
+
209
+ if (ctx) {
210
+ return ngx_http_auth_pam_authenticate(r, ctx, &ctx->passwd, alcf);
211
+ }
212
+
213
+ /* Decode http auth user and passwd, leaving values on the request */
214
+ rc = ngx_http_auth_basic_user(r);
215
+
216
+ if (rc == NGX_DECLINED) {
217
+ return ngx_http_auth_pam_set_realm(r, &alcf->realm);
218
+ }
219
+
220
+ if (rc == NGX_ERROR) {
221
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
222
+ }
223
+
224
+ /* Check user & password using PAM */
225
+ return ngx_http_auth_pam_authenticate(r, ctx, &ctx->passwd, alcf);
226
+ }
227
+
228
+ /**
229
+ * create a key value pair from the given key and value string
230
+ */
231
+ static void set_to_pam_env(pam_handle_t *pamh, ngx_http_request_t *r,
232
+ char *key, char *value)
233
+ {
234
+ if (key != NULL && value != NULL) {
235
+ size_t size = strlen(key) + strlen(value) + 1 * sizeof(char);
236
+ char *key_value_pair = ngx_palloc(r->pool, size);
237
+ sprintf(key_value_pair, "%s=%s", key, value);
238
+
239
+ pam_putenv(pamh, key_value_pair);
240
+ }
241
+ }
242
+
243
+ /**
244
+ * creates a '\0' terminated string from the given ngx_str_t
245
+ *
246
+ * @param source nginx string structure with data and length
247
+ * @param pool pool of the request used for memory allocation
248
+ */
249
+ static char* ngx_strncpy_s(ngx_str_t source, ngx_pool_t *pool)
250
+ {
251
+ // allocate memory in pool
252
+ char* destination = ngx_palloc(pool, source.len + 1);
253
+ strncpy(destination, (char *) source.data, source.len);
254
+ // add null terminator
255
+ destination[source.len] = '\0';
256
+ return destination;
257
+ }
258
+
259
+ /**
260
+ * enrich pam environment with request parameters
261
+ */
262
+ static void add_request_info_to_pam_env(pam_handle_t *pamh,
263
+ ngx_http_request_t *r)
264
+ {
265
+ char *request_info = ngx_strncpy_s(r->request_line, r->pool);
266
+ char *host_info = ngx_strncpy_s(r->headers_in.host->value, r->pool);
267
+
268
+ set_to_pam_env(pamh, r, "REQUEST", request_info);
269
+ set_to_pam_env(pamh, r, "HOST", host_info);
270
+ }
271
+
272
+ static ngx_int_t
273
+ ngx_http_auth_pam_authenticate(ngx_http_request_t *r,
274
+ ngx_http_auth_pam_ctx_t *ctx, ngx_str_t *passwd,
275
+ void *conf)
276
+ {
277
+ ngx_int_t rc;
278
+ ngx_http_auth_pam_loc_conf_t *alcf;
279
+
280
+ ngx_pam_userinfo uinfo;
281
+ struct pam_conv conv_info; /* PAM struct */
282
+ pam_handle_t *pamh;
283
+ u_char *service_name;
284
+
285
+ alcf = conf;
286
+
287
+ size_t len;
288
+ u_char *uname_buf, *p;
289
+
290
+ /**
291
+ * Get username and password, note that r->headers_in.user contains the
292
+ * string 'user:pass', so we need to copy the username
293
+ **/
294
+ for (len = 0; len < r->headers_in.user.len; len++) {
295
+ if (r->headers_in.user.data[len] == ':') {
296
+ break;
297
+ }
298
+ }
299
+ uname_buf = ngx_palloc(r->pool, len+1);
300
+ if (uname_buf == NULL) {
301
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
302
+ }
303
+ p = ngx_cpymem(uname_buf, r->headers_in.user.data , len);
304
+ *p ='\0';
305
+
306
+ uinfo.username.data = uname_buf;
307
+ uinfo.username.len = len;
308
+
309
+ uinfo.password.data = r->headers_in.passwd.data;
310
+ uinfo.password.len = r->headers_in.passwd.len;
311
+
312
+ conv_info.conv = &ngx_auth_pam_talker;
313
+ conv_info.appdata_ptr = (void *) &uinfo;
314
+
315
+ pamh = NULL;
316
+
317
+ /* Initialize PAM */
318
+ if (alcf->service_name.data == NULL) {
319
+ service_name = (u_char *) NGX_PAM_SERVICE_NAME;
320
+ } else {
321
+ service_name = alcf->service_name.data;
322
+ }
323
+ if ((rc = pam_start((const char *) service_name,
324
+ (const char *) uinfo.username.data,
325
+ &conv_info,
326
+ &pamh)) != PAM_SUCCESS) {
327
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
328
+ "PAM: Could not start pam service: %s",
329
+ pam_strerror(pamh, rc));
330
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
331
+ }
332
+
333
+ if (alcf->set_pam_env) {
334
+ add_request_info_to_pam_env(pamh, r);
335
+ }
336
+
337
+ /* try to authenticate user, log error on failure */
338
+ if ((rc = pam_authenticate(pamh,
339
+ PAM_DISALLOW_NULL_AUTHTOK)) != PAM_SUCCESS) {
340
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
341
+ "PAM: user '%s' - not authenticated: %s",
342
+ uinfo.username.data, pam_strerror(pamh, rc));
343
+ pam_end(pamh, PAM_SUCCESS);
344
+ return ngx_http_auth_pam_set_realm(r, &alcf->realm);
345
+ } /* endif authenticate */
346
+
347
+ /* check that the account is healthy */
348
+ if ((rc = pam_acct_mgmt(pamh, PAM_DISALLOW_NULL_AUTHTOK)) != PAM_SUCCESS) {
349
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
350
+ "PAM: user '%s' - invalid account: %s",
351
+ uinfo.username.data, pam_strerror(pamh, rc));
352
+ pam_end(pamh, PAM_SUCCESS);
353
+ return ngx_http_auth_pam_set_realm(r, &alcf->realm);
354
+ }
355
+
356
+ pam_end(pamh, PAM_SUCCESS);
357
+ return NGX_OK;
358
+ }
359
+
360
+ static ngx_int_t
361
+ ngx_http_auth_pam_set_realm(ngx_http_request_t *r, ngx_str_t *realm)
362
+ {
363
+ r->headers_out.www_authenticate = ngx_list_push(&r->headers_out.headers);
364
+ if (r->headers_out.www_authenticate == NULL) {
365
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
366
+ }
367
+
368
+ r->headers_out.www_authenticate->hash = 1;
369
+ r->headers_out.www_authenticate->key.len = sizeof("WWW-Authenticate") - 1;
370
+ r->headers_out.www_authenticate->key.data = (u_char *) "WWW-Authenticate";
371
+ r->headers_out.www_authenticate->value = *realm;
372
+
373
+ return NGX_HTTP_UNAUTHORIZED;
374
+ }
375
+
376
+ static void *
377
+ ngx_http_auth_pam_create_loc_conf(ngx_conf_t *cf)
378
+ {
379
+ ngx_http_auth_pam_loc_conf_t *conf;
380
+
381
+ conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_auth_pam_loc_conf_t));
382
+ if (conf == NULL) {
383
+ return NGX_CONF_ERROR;
384
+ }
385
+
386
+ /* Strings are already NULL, but the flags have to be marked as unset */
387
+ conf->set_pam_env = NGX_CONF_UNSET;
388
+
389
+ return conf;
390
+ }
391
+
392
+ static char *
393
+ ngx_http_auth_pam_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
394
+ {
395
+ ngx_http_auth_pam_loc_conf_t *prev = parent;
396
+ ngx_http_auth_pam_loc_conf_t *conf = child;
397
+
398
+ if (conf->realm.data == NULL) {
399
+ conf->realm = prev->realm;
400
+ }
401
+
402
+ if (conf->service_name.data == NULL) {
403
+ conf->service_name = prev->service_name;
404
+ }
405
+
406
+ /* By default set_pam_env is off */
407
+ ngx_conf_merge_value(conf->set_pam_env, prev->set_pam_env, 0);
408
+
409
+ return NGX_CONF_OK;
410
+ }
411
+
412
+ static ngx_int_t
413
+ ngx_http_auth_pam_init(ngx_conf_t *cf)
414
+ {
415
+ ngx_http_handler_pt *h;
416
+ ngx_http_core_main_conf_t *cmcf;
417
+
418
+ cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
419
+
420
+ h = ngx_array_push(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers);
421
+ if (h == NULL) {
422
+ return NGX_ERROR;
423
+ }
424
+
425
+ *h = ngx_http_auth_pam_handler;
426
+
427
+ return NGX_OK;
428
+ }
429
+
430
+ static char *
431
+ ngx_http_auth_pam(ngx_conf_t *cf, void *post, void *data)
432
+ {
433
+ ngx_str_t *realm = data;
434
+
435
+ size_t len;
436
+ u_char *basic, *p;
437
+
438
+ if (ngx_strcmp(realm->data, "off") == 0) {
439
+ realm->len = 0;
440
+ realm->data = (u_char *) "";
441
+
442
+ return NGX_CONF_OK;
443
+ }
444
+
445
+ len = sizeof("Basic realm=\"") - 1 + realm->len + 1;
446
+
447
+ basic = ngx_palloc(cf->pool, len);
448
+ if (basic == NULL) {
449
+ return NGX_CONF_ERROR;
450
+ }
451
+
452
+ p = ngx_cpymem(basic, "Basic realm=\"", sizeof("Basic realm=\"") - 1);
453
+ p = ngx_cpymem(p, realm->data, realm->len);
454
+ *p = '"';
455
+
456
+ realm->len = len;
457
+ realm->data = basic;
458
+
459
+ return NGX_CONF_OK;
460
+ }
461
+
462
+ /* File: ngx_http_auth_pam_module.c */