Merge ~ahasenack/ubuntu/+source/apache2:cosmic-apache2-2.4.33-3 into ubuntu/+source/apache2:debian/sid

Proposed by Andreas Hasenack
Status: Merged
Merge reported by: Andreas Hasenack
Merged at revision: f56d4eef5ef98217336fc95782e7af15a2290df4
Proposed branch: ~ahasenack/ubuntu/+source/apache2:cosmic-apache2-2.4.33-3
Merge into: ubuntu/+source/apache2:debian/sid
Diff against target: 442956 lines (+433840/-40)
1421 files modified
debian/apache2-bin.install (+1/-0)
debian/apache2-utils.ufw.profile (+14/-0)
debian/apache2.dirs (+1/-0)
debian/apache2.install (+1/-0)
debian/apache2.postrm (+1/-0)
debian/apache2.py (+48/-0)
debian/changelog (+1338/-0)
debian/control (+4/-27)
debian/index.html (+19/-12)
debian/patches/086_svn_cross_compiles (+118/-0)
debian/patches/series (+3/-0)
debian/rules (+3/-1)
debian/source/include-binaries (+1/-0)
debian/tests/check-http2 (+41/-0)
debian/tests/control (+4/-0)
docs/manual/style/latex/atbeginend.sty (+80/-0)
docs/manual/style/manualpage.dtd (+29/-0)
docs/manual/style/modulesynopsis.dtd (+92/-0)
docs/manual/style/scripts/MINIFY (+5/-0)
docs/manual/style/scripts/prettify.js (+1622/-0)
docs/manual/style/scripts/prettify.min.js (+124/-0)
docs/manual/style/sitemap.dtd (+42/-0)
docs/manual/style/version.ent (+24/-0)
docs/manual/suexec.html (+21/-0)
docs/manual/suexec.html.en (+643/-0)
docs/manual/suexec.html.fr (+689/-0)
docs/manual/suexec.html.ja.utf8 (+643/-0)
docs/manual/suexec.html.ko.euc-kr (+564/-0)
docs/manual/suexec.html.tr.utf8 (+583/-0)
docs/manual/upgrading.html (+9/-0)
docs/manual/upgrading.html.en (+537/-0)
docs/manual/upgrading.html.fr (+598/-0)
docs/manual/urlmapping.html (+21/-0)
docs/manual/urlmapping.html.en (+379/-0)
docs/manual/urlmapping.html.fr (+402/-0)
docs/manual/urlmapping.html.ja.utf8 (+318/-0)
docs/manual/urlmapping.html.ko.euc-kr (+277/-0)
docs/manual/urlmapping.html.tr.utf8 (+365/-0)
docs/manual/vhosts/details.html (+17/-0)
docs/manual/vhosts/details.html.en (+348/-0)
docs/manual/vhosts/details.html.fr (+369/-0)
docs/manual/vhosts/details.html.ko.euc-kr (+412/-0)
docs/manual/vhosts/details.html.tr.utf8 (+319/-0)
docs/manual/vhosts/examples.html (+21/-0)
docs/manual/vhosts/examples.html.en (+566/-0)
docs/manual/vhosts/examples.html.fr (+586/-0)
docs/manual/vhosts/examples.html.ja.utf8 (+680/-0)
docs/manual/vhosts/examples.html.ko.euc-kr (+657/-0)
docs/manual/vhosts/examples.html.tr.utf8 (+562/-0)
docs/manual/vhosts/fd-limits.html (+21/-0)
docs/manual/vhosts/fd-limits.html.en (+155/-0)
docs/manual/vhosts/fd-limits.html.fr (+167/-0)
docs/manual/vhosts/fd-limits.html.ja.utf8 (+157/-0)
docs/manual/vhosts/fd-limits.html.ko.euc-kr (+152/-0)
docs/manual/vhosts/fd-limits.html.tr.utf8 (+150/-0)
docs/manual/vhosts/index.html (+29/-0)
docs/manual/vhosts/index.html.de (+124/-0)
docs/manual/vhosts/index.html.en (+126/-0)
docs/manual/vhosts/index.html.fr (+127/-0)
docs/manual/vhosts/index.html.ja.utf8 (+120/-0)
docs/manual/vhosts/index.html.ko.euc-kr (+119/-0)
docs/manual/vhosts/index.html.tr.utf8 (+123/-0)
docs/manual/vhosts/index.html.zh-cn.utf8 (+105/-0)
docs/manual/vhosts/ip-based.html (+21/-0)
docs/manual/vhosts/ip-based.html.en (+210/-0)
docs/manual/vhosts/ip-based.html.fr (+213/-0)
docs/manual/vhosts/ip-based.html.ja.utf8 (+190/-0)
docs/manual/vhosts/ip-based.html.ko.euc-kr (+180/-0)
docs/manual/vhosts/ip-based.html.tr.utf8 (+211/-0)
docs/manual/vhosts/mass.html (+17/-0)
docs/manual/vhosts/mass.html.en (+348/-0)
docs/manual/vhosts/mass.html.fr (+363/-0)
docs/manual/vhosts/mass.html.ko.euc-kr (+453/-0)
docs/manual/vhosts/mass.html.tr.utf8 (+334/-0)
docs/manual/vhosts/name-based.html (+25/-0)
docs/manual/vhosts/name-based.html.de (+299/-0)
docs/manual/vhosts/name-based.html.en (+224/-0)
docs/manual/vhosts/name-based.html.fr (+267/-0)
docs/manual/vhosts/name-based.html.ja.utf8 (+303/-0)
docs/manual/vhosts/name-based.html.ko.euc-kr (+266/-0)
docs/manual/vhosts/name-based.html.tr.utf8 (+238/-0)
docs/server-status/README.md (+40/-0)
docs/server-status/server-status.lua (+1901/-0)
emacs-style (+12/-0)
httpd.dep (+68/-0)
httpd.dsp (+111/-0)
httpd.mak (+344/-0)
httpd.spec (+493/-0)
include/.indent.pro (+54/-0)
include/ap_compat.h (+30/-0)
include/ap_config.h (+206/-0)
include/ap_config_auto.h.in (+310/-0)
include/ap_config_layout.h.in (+64/-0)
include/ap_expr.h (+353/-0)
include/ap_hooks.h (+162/-0)
include/ap_listen.h (+163/-0)
include/ap_mmn.h (+554/-0)
include/ap_mpm.h (+235/-0)
include/ap_provider.h (+100/-0)
include/ap_regex.h (+275/-0)
include/ap_regkey.h (+219/-0)
include/ap_release.h (+83/-0)
include/ap_slotmem.h (+199/-0)
include/ap_socache.h (+230/-0)
include/apache_noprobes.h (+344/-0)
include/heartbeat.h (+60/-0)
include/http_config.h (+1408/-0)
include/http_connection.h (+168/-0)
include/http_core.h (+1049/-0)
include/http_log.h (+836/-0)
include/http_main.h (+88/-0)
include/http_protocol.h (+1021/-0)
include/http_request.h (+630/-0)
include/http_vhost.h (+119/-0)
include/httpd.h (+2405/-0)
include/mod_auth.h (+141/-0)
include/mod_core.h (+103/-0)
include/mod_request.h (+64/-0)
include/mpm_common.h (+470/-0)
include/scoreboard.h (+246/-0)
include/util_cfgtree.h (+98/-0)
include/util_charset.h (+72/-0)
include/util_cookies.h (+146/-0)
include/util_ebcdic.h (+92/-0)
include/util_fcgi.h (+280/-0)
include/util_filter.h (+639/-0)
include/util_ldap.h (+398/-0)
include/util_md5.h (+72/-0)
include/util_mutex.h (+223/-0)
include/util_script.h (+233/-0)
include/util_time.h (+117/-0)
include/util_varbuf.h (+197/-0)
include/util_xml.h (+51/-0)
libhttpd.dep (+2421/-0)
libhttpd.dsp (+846/-0)
libhttpd.mak (+1366/-0)
modules/Makefile.in (+6/-0)
modules/NWGNUmakefile (+121/-0)
modules/README (+67/-0)
modules/aaa/.indent.pro (+54/-0)
modules/aaa/Makefile.in (+3/-0)
modules/aaa/NWGNUaccesscompat (+248/-0)
modules/aaa/NWGNUallowmethods (+248/-0)
modules/aaa/NWGNUauthbasc (+248/-0)
modules/aaa/NWGNUauthdigt (+248/-0)
modules/aaa/NWGNUauthform (+250/-0)
modules/aaa/NWGNUauthnano (+248/-0)
modules/aaa/NWGNUauthndbd (+249/-0)
modules/aaa/NWGNUauthndbm (+248/-0)
modules/aaa/NWGNUauthnfil (+248/-0)
modules/aaa/NWGNUauthnsocache (+248/-0)
modules/aaa/NWGNUauthnzldap (+264/-0)
modules/aaa/NWGNUauthzdbd (+249/-0)
modules/aaa/NWGNUauthzdbm (+248/-0)
modules/aaa/NWGNUauthzgrp (+247/-0)
modules/aaa/NWGNUauthzusr (+247/-0)
modules/aaa/NWGNUmakefile (+270/-0)
modules/aaa/config.m4 (+84/-0)
modules/aaa/mod_access_compat.c (+377/-0)
modules/aaa/mod_access_compat.dep (+59/-0)
modules/aaa/mod_access_compat.dsp (+111/-0)
modules/aaa/mod_access_compat.mak (+353/-0)
modules/aaa/mod_allowmethods.c (+158/-0)
modules/aaa/mod_allowmethods.dep (+56/-0)
modules/aaa/mod_allowmethods.dsp (+111/-0)
modules/aaa/mod_allowmethods.mak (+353/-0)
modules/aaa/mod_auth_basic.c (+512/-0)
modules/aaa/mod_auth_basic.dep (+63/-0)
modules/aaa/mod_auth_basic.dsp (+111/-0)
modules/aaa/mod_auth_basic.mak (+353/-0)
modules/aaa/mod_auth_digest.c (+1976/-0)
modules/aaa/mod_auth_digest.dep (+68/-0)
modules/aaa/mod_auth_digest.dsp (+111/-0)
modules/aaa/mod_auth_digest.mak (+353/-0)
modules/aaa/mod_auth_form.c (+1333/-0)
modules/aaa/mod_auth_form.dep (+66/-0)
modules/aaa/mod_auth_form.dsp (+111/-0)
modules/aaa/mod_auth_form.mak (+353/-0)
modules/aaa/mod_authn_anon.c (+215/-0)
modules/aaa/mod_authn_anon.dep (+58/-0)
modules/aaa/mod_authn_anon.dsp (+111/-0)
modules/aaa/mod_authn_anon.mak (+381/-0)
modules/aaa/mod_authn_core.c (+386/-0)
modules/aaa/mod_authn_core.dep (+58/-0)
modules/aaa/mod_authn_core.dsp (+111/-0)
modules/aaa/mod_authn_core.mak (+381/-0)
modules/aaa/mod_authn_dbd.c (+309/-0)
modules/aaa/mod_authn_dbd.dep (+56/-0)
modules/aaa/mod_authn_dbd.dsp (+115/-0)
modules/aaa/mod_authn_dbd.mak (+409/-0)
modules/aaa/mod_authn_dbm.c (+208/-0)
modules/aaa/mod_authn_dbm.dep (+61/-0)
modules/aaa/mod_authn_dbm.dsp (+111/-0)
modules/aaa/mod_authn_dbm.mak (+381/-0)
modules/aaa/mod_authn_file.c (+194/-0)
modules/aaa/mod_authn_file.dep (+60/-0)
modules/aaa/mod_authn_file.dsp (+111/-0)
modules/aaa/mod_authn_file.mak (+381/-0)
modules/aaa/mod_authn_socache.c (+475/-0)
modules/aaa/mod_authn_socache.dep (+62/-0)
modules/aaa/mod_authn_socache.dsp (+111/-0)
modules/aaa/mod_authn_socache.mak (+353/-0)
modules/aaa/mod_authnz_fcgi.c (+1363/-0)
modules/aaa/mod_authnz_fcgi.dep (+61/-0)
modules/aaa/mod_authnz_fcgi.dsp (+119/-0)
modules/aaa/mod_authnz_fcgi.mak (+353/-0)
modules/aaa/mod_authnz_ldap.c (+1962/-0)
modules/aaa/mod_authnz_ldap.dep (+70/-0)
modules/aaa/mod_authnz_ldap.dsp (+111/-0)
modules/aaa/mod_authnz_ldap.mak (+381/-0)
modules/aaa/mod_authz_core.c (+1164/-0)
modules/aaa/mod_authz_core.dep (+60/-0)
modules/aaa/mod_authz_core.dsp (+111/-0)
modules/aaa/mod_authz_core.mak (+381/-0)
modules/aaa/mod_authz_dbd.c (+409/-0)
modules/aaa/mod_authz_dbd.dep (+61/-0)
modules/aaa/mod_authz_dbd.dsp (+119/-0)
modules/aaa/mod_authz_dbd.h (+44/-0)
modules/aaa/mod_authz_dbd.mak (+409/-0)
modules/aaa/mod_authz_dbm.c (+336/-0)
modules/aaa/mod_authz_dbm.dep (+62/-0)
modules/aaa/mod_authz_dbm.dsp (+111/-0)
modules/aaa/mod_authz_dbm.mak (+381/-0)
modules/aaa/mod_authz_groupfile.c (+331/-0)
modules/aaa/mod_authz_groupfile.dep (+61/-0)
modules/aaa/mod_authz_groupfile.dsp (+111/-0)
modules/aaa/mod_authz_groupfile.mak (+381/-0)
modules/aaa/mod_authz_host.c (+410/-0)
modules/aaa/mod_authz_host.dep (+60/-0)
modules/aaa/mod_authz_host.dsp (+111/-0)
modules/aaa/mod_authz_host.mak (+381/-0)
modules/aaa/mod_authz_owner.c (+189/-0)
modules/aaa/mod_authz_owner.dep (+59/-0)
modules/aaa/mod_authz_owner.dsp (+111/-0)
modules/aaa/mod_authz_owner.h (+27/-0)
modules/aaa/mod_authz_owner.mak (+381/-0)
modules/aaa/mod_authz_user.c (+146/-0)
modules/aaa/mod_authz_user.dep (+58/-0)
modules/aaa/mod_authz_user.dsp (+111/-0)
modules/aaa/mod_authz_user.mak (+381/-0)
modules/arch/netware/libprews.c (+79/-0)
modules/arch/netware/mod_netware.c (+206/-0)
modules/arch/netware/mod_nw_ssl.c (+1285/-0)
modules/arch/unix/Makefile.in (+3/-0)
modules/arch/unix/config5.m4 (+24/-0)
modules/arch/unix/mod_privileges.c (+588/-0)
modules/arch/unix/mod_unixd.c (+426/-0)
modules/arch/unix/mod_unixd.h (+41/-0)
modules/arch/win32/Makefile.in (+3/-0)
modules/arch/win32/config.m4 (+9/-0)
modules/arch/win32/mod_isapi.c (+1727/-0)
modules/arch/win32/mod_isapi.dep (+61/-0)
modules/arch/win32/mod_isapi.dsp (+115/-0)
modules/arch/win32/mod_isapi.h (+271/-0)
modules/arch/win32/mod_isapi.mak (+353/-0)
modules/arch/win32/mod_win32.c (+563/-0)
modules/cache/.indent.pro (+54/-0)
modules/cache/Makefile.in (+3/-0)
modules/cache/NWGNUcach_dsk (+262/-0)
modules/cache/NWGNUcach_socache (+263/-0)
modules/cache/NWGNUmakefile (+250/-0)
modules/cache/NWGNUmod_cach (+265/-0)
modules/cache/NWGNUsocachdbm (+261/-0)
modules/cache/NWGNUsocachmem (+261/-0)
modules/cache/NWGNUsocachshmcb (+261/-0)
modules/cache/cache_common.h (+56/-0)
modules/cache/cache_disk_common.h (+68/-0)
modules/cache/cache_socache_common.h (+57/-0)
modules/cache/cache_storage.c (+791/-0)
modules/cache/cache_storage.h (+76/-0)
modules/cache/cache_util.c (+1344/-0)
modules/cache/cache_util.h (+341/-0)
modules/cache/config.m4 (+142/-0)
modules/cache/mod_cache.c (+2717/-0)
modules/cache/mod_cache.dep (+194/-0)
modules/cache/mod_cache.dsp (+131/-0)
modules/cache/mod_cache.h (+192/-0)
modules/cache/mod_cache.mak (+370/-0)
modules/cache/mod_cache_disk.c (+1584/-0)
modules/cache/mod_cache_disk.dep (+59/-0)
modules/cache/mod_cache_disk.dsp (+115/-0)
modules/cache/mod_cache_disk.h (+91/-0)
modules/cache/mod_cache_disk.mak (+381/-0)
modules/cache/mod_cache_socache.c (+1543/-0)
modules/cache/mod_cache_socache.dep (+67/-0)
modules/cache/mod_cache_socache.dsp (+115/-0)
modules/cache/mod_cache_socache.mak (+381/-0)
modules/cache/mod_file_cache.c (+414/-0)
modules/cache/mod_file_cache.dep (+56/-0)
modules/cache/mod_file_cache.dsp (+111/-0)
modules/cache/mod_file_cache.exp (+1/-0)
modules/cache/mod_file_cache.mak (+353/-0)
modules/cache/mod_socache_dbm.c (+595/-0)
modules/cache/mod_socache_dbm.dep (+60/-0)
modules/cache/mod_socache_dbm.dsp (+111/-0)
modules/cache/mod_socache_dbm.mak (+353/-0)
modules/cache/mod_socache_dc.c (+198/-0)
modules/cache/mod_socache_dc.dep (+55/-0)
modules/cache/mod_socache_dc.dsp (+111/-0)
modules/cache/mod_socache_dc.mak (+353/-0)
modules/cache/mod_socache_memcache.c (+431/-0)
modules/cache/mod_socache_memcache.dep (+59/-0)
modules/cache/mod_socache_memcache.dsp (+111/-0)
modules/cache/mod_socache_memcache.mak (+353/-0)
modules/cache/mod_socache_shmcb.c (+1072/-0)
modules/cache/mod_socache_shmcb.dep (+56/-0)
modules/cache/mod_socache_shmcb.dsp (+111/-0)
modules/cache/mod_socache_shmcb.mak (+353/-0)
modules/cluster/Makefile.in (+3/-0)
modules/cluster/NWGNUmakefile (+246/-0)
modules/cluster/NWGNUmodheartbeat (+257/-0)
modules/cluster/NWGNUmodheartmonitor (+257/-0)
modules/cluster/README.heartbeat (+33/-0)
modules/cluster/README.heartmonitor (+30/-0)
modules/cluster/config5.m4 (+17/-0)
modules/cluster/mod_heartbeat.c (+228/-0)
modules/cluster/mod_heartbeat.dep (+55/-0)
modules/cluster/mod_heartbeat.dsp (+123/-0)
modules/cluster/mod_heartbeat.mak (+380/-0)
modules/cluster/mod_heartmonitor.c (+918/-0)
modules/cluster/mod_heartmonitor.dep (+63/-0)
modules/cluster/mod_heartmonitor.dsp (+123/-0)
modules/cluster/mod_heartmonitor.mak (+380/-0)
modules/config7.m4 (+56/-0)
modules/core/Makefile.in (+3/-0)
modules/core/NWGNUmakefile (+257/-0)
modules/core/config.m4 (+60/-0)
modules/core/mod_macro.c (+950/-0)
modules/core/mod_macro.dep (+45/-0)
modules/core/mod_macro.dsp (+111/-0)
modules/core/mod_macro.mak (+353/-0)
modules/core/mod_so.c (+442/-0)
modules/core/mod_so.h (+38/-0)
modules/core/mod_watchdog.c (+723/-0)
modules/core/mod_watchdog.dep (+59/-0)
modules/core/mod_watchdog.dsp (+115/-0)
modules/core/mod_watchdog.h (+213/-0)
modules/core/mod_watchdog.mak (+353/-0)
modules/core/test/Makefile (+67/-0)
modules/core/test/conf/inc63_1.conf (+5/-0)
modules/core/test/conf/inc63_2.conf (+3/-0)
modules/core/test/conf/test01.conf (+3/-0)
modules/core/test/conf/test02.conf (+3/-0)
modules/core/test/conf/test03.conf (+5/-0)
modules/core/test/conf/test04.conf (+5/-0)
modules/core/test/conf/test05.conf (+5/-0)
modules/core/test/conf/test06.conf (+6/-0)
modules/core/test/conf/test07.conf (+3/-0)
modules/core/test/conf/test08.conf (+3/-0)
modules/core/test/conf/test09.conf (+6/-0)
modules/core/test/conf/test10.conf (+10/-0)
modules/core/test/conf/test11.conf (+15/-0)
modules/core/test/conf/test12.conf (+12/-0)
modules/core/test/conf/test13.conf (+18/-0)
modules/core/test/conf/test14.conf (+23/-0)
modules/core/test/conf/test15.conf (+9/-0)
modules/core/test/conf/test16.conf (+11/-0)
modules/core/test/conf/test17.conf (+10/-0)
modules/core/test/conf/test18.conf (+10/-0)
modules/core/test/conf/test19.conf (+26/-0)
modules/core/test/conf/test20.conf (+11/-0)
modules/core/test/conf/test21.conf (+11/-0)
modules/core/test/conf/test22.conf (+11/-0)
modules/core/test/conf/test23.conf (+15/-0)
modules/core/test/conf/test24.conf (+23/-0)
modules/core/test/conf/test25.conf (+27/-0)
modules/core/test/conf/test26.conf (+19/-0)
modules/core/test/conf/test27.conf (+22/-0)
modules/core/test/conf/test28.conf (+13/-0)
modules/core/test/conf/test29.conf (+10/-0)
modules/core/test/conf/test30.conf (+12/-0)
modules/core/test/conf/test31.conf (+16/-0)
modules/core/test/conf/test32.conf (+7/-0)
modules/core/test/conf/test33.conf (+3/-0)
modules/core/test/conf/test34.conf (+14/-0)
modules/core/test/conf/test35.conf (+10/-0)
modules/core/test/conf/test36.conf (+12/-0)
modules/core/test/conf/test37.conf (+7/-0)
modules/core/test/conf/test38.conf (+10/-0)
modules/core/test/conf/test39.conf (+23/-0)
modules/core/test/conf/test40.conf (+33/-0)
modules/core/test/conf/test41.conf (+20/-0)
modules/core/test/conf/test42.conf (+13/-0)
modules/core/test/conf/test43.conf (+29/-0)
modules/core/test/conf/test44.conf (+19/-0)
modules/core/test/conf/test45.conf (+7/-0)
modules/core/test/conf/test46.conf (+11/-0)
modules/core/test/conf/test47.conf (+15/-0)
modules/core/test/conf/test48.conf (+23/-0)
modules/core/test/conf/test49.conf (+2/-0)
modules/core/test/conf/test50.conf (+5/-0)
modules/core/test/conf/test51.conf (+9/-0)
modules/core/test/conf/test52.conf (+8/-0)
modules/core/test/conf/test53.conf (+2/-0)
modules/core/test/conf/test54.conf (+6/-0)
modules/core/test/conf/test55.conf (+11/-0)
modules/core/test/conf/test56.conf (+18/-0)
modules/core/test/conf/test57.conf (+4/-0)
modules/core/test/conf/test58.conf (+4/-0)
modules/core/test/conf/test59.conf (+4/-0)
modules/core/test/conf/test60.conf (+17/-0)
modules/core/test/conf/test61.conf (+18/-0)
modules/core/test/conf/test62.conf (+25/-0)
modules/core/test/conf/test63.conf (+9/-0)
modules/core/test/conf/test64.conf (+5/-0)
modules/core/test/conf/test65.conf (+11/-0)
modules/core/test/conf/test66.conf (+7/-0)
modules/core/test/conf/test67.conf (+1/-0)
modules/core/test/conf/test68.conf (+5/-0)
modules/core/test/conf/test69.conf (+14/-0)
modules/core/test/ref/test01.out (+3/-0)
modules/core/test/ref/test02.out (+3/-0)
modules/core/test/ref/test03.out (+3/-0)
modules/core/test/ref/test04.out (+3/-0)
modules/core/test/ref/test05.out (+3/-0)
modules/core/test/ref/test06.out (+3/-0)
modules/core/test/ref/test07.out (+3/-0)
modules/core/test/ref/test08.out (+3/-0)
modules/core/test/ref/test09.out (+3/-0)
modules/core/test/ref/test10.out (+3/-0)
modules/core/test/ref/test11.out (+6/-0)
modules/core/test/ref/test12.out (+7/-0)
modules/core/test/ref/test13.out (+8/-0)
modules/core/test/ref/test14.out (+14/-0)
modules/core/test/ref/test15.out (+6/-0)
modules/core/test/ref/test16.out (+5/-0)
modules/core/test/ref/test17.out (+7/-0)
modules/core/test/ref/test18.out (+7/-0)
modules/core/test/ref/test19.out (+9/-0)
modules/core/test/ref/test20.out (+4/-0)
modules/core/test/ref/test21.out (+5/-0)
modules/core/test/ref/test22.out (+6/-0)
modules/core/test/ref/test23.out (+7/-0)
modules/core/test/ref/test24.out (+8/-0)
modules/core/test/ref/test25.out (+9/-0)
modules/core/test/ref/test26.out (+11/-0)
modules/core/test/ref/test27.out (+8/-0)
modules/core/test/ref/test28.out (+6/-0)
modules/core/test/ref/test29.out (+4/-0)
modules/core/test/ref/test30.out (+7/-0)
modules/core/test/ref/test31.out (+23/-0)
modules/core/test/ref/test32.out (+3/-0)
modules/core/test/ref/test33.out (+3/-0)
modules/core/test/ref/test34.out (+13/-0)
modules/core/test/ref/test35.out (+13/-0)
modules/core/test/ref/test36.out (+20/-0)
modules/core/test/ref/test37.out (+3/-0)
modules/core/test/ref/test38.out (+6/-0)
modules/core/test/ref/test39.out (+7/-0)
modules/core/test/ref/test40.out (+18/-0)
modules/core/test/ref/test41.out (+9/-0)
modules/core/test/ref/test42.out (+15/-0)
modules/core/test/ref/test43.out (+8/-0)
modules/core/test/ref/test44.out (+5/-0)
modules/core/test/ref/test45.out (+19/-0)
modules/core/test/ref/test46.out (+9/-0)
modules/core/test/ref/test47.out (+8/-0)
modules/core/test/ref/test48.out (+20/-0)
modules/core/test/ref/test49.out (+3/-0)
modules/core/test/ref/test50.out (+3/-0)
modules/core/test/ref/test51.out (+3/-0)
modules/core/test/ref/test52.out (+6/-0)
modules/core/test/ref/test53.out (+3/-0)
modules/core/test/ref/test54.out (+6/-0)
modules/core/test/ref/test55.out (+8/-0)
modules/core/test/ref/test56.out (+12/-0)
modules/core/test/ref/test57.out (+3/-0)
modules/core/test/ref/test58.out (+3/-0)
modules/core/test/ref/test59.out (+3/-0)
modules/core/test/ref/test60.out (+15/-0)
modules/core/test/ref/test61.out (+9/-0)
modules/core/test/ref/test62.out (+15/-0)
modules/core/test/ref/test63.out (+10/-0)
modules/core/test/ref/test64.out (+7/-0)
modules/core/test/ref/test65.out (+7/-0)
modules/core/test/ref/test66.out (+7/-0)
modules/core/test/ref/test67.out (+5/-0)
modules/core/test/ref/test68.out (+6/-0)
modules/core/test/ref/test69.out (+10/-0)
modules/database/Makefile.in (+3/-0)
modules/database/NWGNUmakefile (+262/-0)
modules/database/config.m4 (+8/-0)
modules/database/mod_dbd.c (+992/-0)
modules/database/mod_dbd.dep (+58/-0)
modules/database/mod_dbd.dsp (+115/-0)
modules/database/mod_dbd.h (+123/-0)
modules/database/mod_dbd.mak (+353/-0)
modules/dav/fs/Makefile.in (+3/-0)
modules/dav/fs/NWGNUmakefile (+269/-0)
modules/dav/fs/config6.m4 (+23/-0)
modules/dav/fs/dbm.c (+771/-0)
modules/dav/fs/lock.c (+1445/-0)
modules/dav/fs/mod_dav_fs.c (+108/-0)
modules/dav/fs/mod_dav_fs.dep (+203/-0)
modules/dav/fs/mod_dav_fs.dsp (+135/-0)
modules/dav/fs/mod_dav_fs.mak (+407/-0)
modules/dav/fs/repos.c (+2254/-0)
modules/dav/fs/repos.h (+84/-0)
modules/dav/lock/Makefile.in (+3/-0)
modules/dav/lock/NWGNUmakefile (+259/-0)
modules/dav/lock/config6.m4 (+17/-0)
modules/dav/lock/locks.c (+1211/-0)
modules/dav/lock/locks.h (+33/-0)
modules/dav/lock/mod_dav_lock.c (+104/-0)
modules/dav/lock/mod_dav_lock.dep (+100/-0)
modules/dav/lock/mod_dav_lock.dsp (+127/-0)
modules/dav/lock/mod_dav_lock.mak (+389/-0)
modules/dav/main/Makefile.in (+3/-0)
modules/dav/main/NWGNUmakefile (+268/-0)
modules/dav/main/config5.m4 (+21/-0)
modules/dav/main/liveprop.c (+140/-0)
modules/dav/main/mod_dav.c (+4946/-0)
modules/dav/main/mod_dav.dep (+354/-0)
modules/dav/main/mod_dav.dsp (+147/-0)
modules/dav/main/mod_dav.h (+2553/-0)
modules/dav/main/mod_dav.mak (+406/-0)
modules/dav/main/props.c (+1125/-0)
modules/dav/main/providers.c (+58/-0)
modules/dav/main/std_liveprop.c (+226/-0)
modules/dav/main/util.c (+2152/-0)
modules/dav/main/util_lock.c (+798/-0)
modules/debugging/Makefile.in (+3/-0)
modules/debugging/NWGNUmakefile (+246/-0)
modules/debugging/NWGNUmodbucketeer (+248/-0)
modules/debugging/NWGNUmoddumpio (+248/-0)
modules/debugging/README (+1/-0)
modules/debugging/config.m4 (+7/-0)
modules/debugging/mod_bucketeer.c (+187/-0)
modules/debugging/mod_bucketeer.dep (+53/-0)
modules/debugging/mod_bucketeer.dsp (+111/-0)
modules/debugging/mod_bucketeer.mak (+353/-0)
modules/debugging/mod_dumpio.c (+250/-0)
modules/debugging/mod_dumpio.dep (+50/-0)
modules/debugging/mod_dumpio.dsp (+111/-0)
modules/debugging/mod_dumpio.mak (+353/-0)
modules/echo/.indent.pro (+54/-0)
modules/echo/Makefile.in (+3/-0)
modules/echo/NWGNUmakefile (+257/-0)
modules/echo/config.m4 (+9/-0)
modules/echo/mod_echo.c (+218/-0)
modules/echo/mod_echo.dep (+56/-0)
modules/echo/mod_echo.dsp (+111/-0)
modules/echo/mod_echo.mak (+353/-0)
modules/examples/Makefile.in (+3/-0)
modules/examples/NWGNUcase_flt (+256/-0)
modules/examples/NWGNUcase_flt_in (+256/-0)
modules/examples/NWGNUexample_hooks (+257/-0)
modules/examples/NWGNUexample_ipc (+257/-0)
modules/examples/NWGNUmakefile (+257/-0)
modules/examples/README (+54/-0)
modules/examples/config.m4 (+9/-0)
modules/examples/mod_case_filter.c (+139/-0)
modules/examples/mod_case_filter.dep (+46/-0)
modules/examples/mod_case_filter.dsp (+111/-0)
modules/examples/mod_case_filter.mak (+353/-0)
modules/examples/mod_case_filter_in.c (+160/-0)
modules/examples/mod_case_filter_in.dep (+46/-0)
modules/examples/mod_case_filter_in.dsp (+111/-0)
modules/examples/mod_case_filter_in.mak (+353/-0)
modules/examples/mod_example_hooks.c (+1534/-0)
modules/examples/mod_example_hooks.dep (+62/-0)
modules/examples/mod_example_hooks.dsp (+111/-0)
modules/examples/mod_example_hooks.mak (+353/-0)
modules/examples/mod_example_ipc.c (+356/-0)
modules/examples/mod_example_ipc.dep (+56/-0)
modules/examples/mod_example_ipc.dsp (+111/-0)
modules/examples/mod_example_ipc.mak (+353/-0)
modules/experimental/.indent.pro (+54/-0)
modules/experimental/Makefile.in (+3/-0)
modules/experimental/NWGNUmakefile (+253/-0)
modules/experimental/config.m4 (+4/-0)
modules/filters/.indent.pro (+54/-0)
modules/filters/Makefile.in (+3/-0)
modules/filters/NWGNUcharsetl (+257/-0)
modules/filters/NWGNUdeflate (+279/-0)
modules/filters/NWGNUextfiltr (+248/-0)
modules/filters/NWGNUmakefile (+273/-0)
modules/filters/NWGNUmod_data (+248/-0)
modules/filters/NWGNUmod_filter (+248/-0)
modules/filters/NWGNUmod_request (+248/-0)
modules/filters/NWGNUmodbuffer (+256/-0)
modules/filters/NWGNUmodsed (+259/-0)
modules/filters/NWGNUproxyhtml (+261/-0)
modules/filters/NWGNUratelimit (+256/-0)
modules/filters/NWGNUreflector (+256/-0)
modules/filters/NWGNUreqtimeout (+256/-0)
modules/filters/NWGNUsubstitute (+256/-0)
modules/filters/NWGNUxml2enc (+258/-0)
modules/filters/config.m4 (+197/-0)
modules/filters/libsed.h (+172/-0)
modules/filters/mod_brotli.c (+592/-0)
modules/filters/mod_brotli.dep (+45/-0)
modules/filters/mod_brotli.dsp (+111/-0)
modules/filters/mod_brotli.mak (+353/-0)
modules/filters/mod_buffer.c (+353/-0)
modules/filters/mod_buffer.dep (+48/-0)
modules/filters/mod_buffer.dsp (+111/-0)
modules/filters/mod_buffer.mak (+353/-0)
modules/filters/mod_charset_lite.c (+1142/-0)
modules/filters/mod_charset_lite.dep (+60/-0)
modules/filters/mod_charset_lite.dsp (+111/-0)
modules/filters/mod_charset_lite.exp (+1/-0)
modules/filters/mod_charset_lite.mak (+353/-0)
modules/filters/mod_data.c (+255/-0)
modules/filters/mod_data.dep (+55/-0)
modules/filters/mod_data.dsp (+111/-0)
modules/filters/mod_data.mak (+353/-0)
modules/filters/mod_deflate.c (+1912/-0)
modules/filters/mod_deflate.dep (+52/-0)
modules/filters/mod_deflate.dsp (+111/-0)
modules/filters/mod_deflate.exp (+1/-0)
modules/filters/mod_deflate.mak (+353/-0)
modules/filters/mod_ext_filter.c (+956/-0)
modules/filters/mod_ext_filter.dep (+58/-0)
modules/filters/mod_ext_filter.dsp (+111/-0)
modules/filters/mod_ext_filter.exp (+1/-0)
modules/filters/mod_ext_filter.mak (+353/-0)
modules/filters/mod_filter.c (+767/-0)
modules/filters/mod_filter.dep (+50/-0)
modules/filters/mod_filter.dsp (+111/-0)
modules/filters/mod_filter.mak (+353/-0)
modules/filters/mod_include.c (+4236/-0)
modules/filters/mod_include.dep (+63/-0)
modules/filters/mod_include.dsp (+115/-0)
modules/filters/mod_include.exp (+1/-0)
modules/filters/mod_include.h (+120/-0)
modules/filters/mod_include.mak (+353/-0)
modules/filters/mod_proxy_html.c (+1329/-0)
modules/filters/mod_proxy_html.dep (+58/-0)
modules/filters/mod_proxy_html.dsp (+123/-0)
modules/filters/mod_proxy_html.mak (+352/-0)
modules/filters/mod_ratelimit.c (+356/-0)
modules/filters/mod_ratelimit.dep (+45/-0)
modules/filters/mod_ratelimit.dsp (+115/-0)
modules/filters/mod_ratelimit.h (+51/-0)
modules/filters/mod_ratelimit.mak (+353/-0)
modules/filters/mod_reflector.c (+226/-0)
modules/filters/mod_reflector.dep (+57/-0)
modules/filters/mod_reflector.dsp (+111/-0)
modules/filters/mod_reflector.mak (+353/-0)
modules/filters/mod_reqtimeout.c (+657/-0)
modules/filters/mod_reqtimeout.dep (+58/-0)
modules/filters/mod_reqtimeout.dsp (+111/-0)
modules/filters/mod_reqtimeout.mak (+353/-0)
modules/filters/mod_request.c (+397/-0)
modules/filters/mod_request.dep (+55/-0)
modules/filters/mod_request.dsp (+115/-0)
modules/filters/mod_request.mak (+353/-0)
modules/filters/mod_sed.c (+537/-0)
modules/filters/mod_sed.dep (+109/-0)
modules/filters/mod_sed.dsp (+135/-0)
modules/filters/mod_sed.mak (+380/-0)
modules/filters/mod_substitute.c (+730/-0)
modules/filters/mod_substitute.dep (+53/-0)
modules/filters/mod_substitute.dsp (+111/-0)
modules/filters/mod_substitute.mak (+353/-0)
modules/filters/mod_xml2enc.c (+631/-0)
modules/filters/mod_xml2enc.dep (+54/-0)
modules/filters/mod_xml2enc.dsp (+123/-0)
modules/filters/mod_xml2enc.h (+55/-0)
modules/filters/mod_xml2enc.mak (+352/-0)
modules/filters/regexp.c (+599/-0)
modules/filters/regexp.h (+112/-0)
modules/filters/sed.h (+61/-0)
modules/filters/sed0.c (+1026/-0)
modules/filters/sed1.c (+1020/-0)
modules/generators/.indent.pro (+54/-0)
modules/generators/Makefile.in (+3/-0)
modules/generators/NWGNUautoindex (+249/-0)
modules/generators/NWGNUinfo (+248/-0)
modules/generators/NWGNUmakefile (+249/-0)
modules/generators/NWGNUmod_asis (+249/-0)
modules/generators/NWGNUmod_cgi (+249/-0)
modules/generators/NWGNUstatus (+248/-0)
modules/generators/config5.m4 (+81/-0)
modules/generators/mod_asis.c (+128/-0)
modules/generators/mod_asis.dep (+56/-0)
modules/generators/mod_asis.dsp (+111/-0)
modules/generators/mod_asis.exp (+1/-0)
modules/generators/mod_asis.mak (+353/-0)
modules/generators/mod_autoindex.c (+2348/-0)
modules/generators/mod_autoindex.dep (+61/-0)
modules/generators/mod_autoindex.dsp (+111/-0)
modules/generators/mod_autoindex.exp (+1/-0)
modules/generators/mod_autoindex.mak (+353/-0)
modules/generators/mod_cgi.c (+1281/-0)
modules/generators/mod_cgi.dep (+64/-0)
modules/generators/mod_cgi.dsp (+115/-0)
modules/generators/mod_cgi.exp (+1/-0)
modules/generators/mod_cgi.h (+67/-0)
modules/generators/mod_cgi.mak (+353/-0)
modules/generators/mod_cgid.c (+1980/-0)
modules/generators/mod_cgid.exp (+1/-0)
modules/generators/mod_info.c (+1011/-0)
modules/generators/mod_info.dep (+66/-0)
modules/generators/mod_info.dsp (+111/-0)
modules/generators/mod_info.exp (+1/-0)
modules/generators/mod_info.mak (+353/-0)
modules/generators/mod_status.c (+1014/-0)
modules/generators/mod_status.dep (+60/-0)
modules/generators/mod_status.dsp (+111/-0)
modules/generators/mod_status.exp (+1/-0)
modules/generators/mod_status.h (+64/-0)
modules/generators/mod_status.mak (+353/-0)
modules/generators/mod_suexec.c (+139/-0)
modules/generators/mod_suexec.h (+33/-0)
modules/http/.indent.pro (+54/-0)
modules/http/Makefile.in (+3/-0)
modules/http/byterange_filter.c (+611/-0)
modules/http/chunk_filter.c (+196/-0)
modules/http/config.m4 (+20/-0)
modules/http/http_core.c (+328/-0)
modules/http/http_etag.c (+220/-0)
modules/http/http_filters.c (+1907/-0)
modules/http/http_protocol.c (+1690/-0)
modules/http/http_request.c (+843/-0)
modules/http/mod_mime.c (+1026/-0)
modules/http/mod_mime.dep (+55/-0)
modules/http/mod_mime.dsp (+111/-0)
modules/http/mod_mime.exp (+1/-0)
modules/http/mod_mime.mak (+353/-0)
modules/http2/.gitignore (+35/-0)
modules/http2/Makefile.in (+20/-0)
modules/http2/NWGNUmakefile (+246/-0)
modules/http2/NWGNUmod_http2 (+395/-0)
modules/http2/NWGNUproxyht2 (+288/-0)
modules/http2/README.h2 (+70/-0)
modules/http2/config2.m4 (+235/-0)
modules/http2/h2.h (+161/-0)
modules/http2/h2_alt_svc.c (+131/-0)
modules/http2/h2_alt_svc.h (+40/-0)
modules/http2/h2_bucket_beam.c (+1283/-0)
modules/http2/h2_bucket_beam.h (+406/-0)
modules/http2/h2_bucket_eos.c (+127/-0)
modules/http2/h2_bucket_eos.h (+32/-0)
modules/http2/h2_config.c (+678/-0)
modules/http2/h2_config.h (+104/-0)
modules/http2/h2_conn.c (+354/-0)
modules/http2/h2_conn.h (+77/-0)
modules/http2/h2_conn_io.c (+389/-0)
modules/http2/h2_conn_io.h (+77/-0)
modules/http2/h2_ctx.c (+121/-0)
modules/http2/h2_ctx.h (+78/-0)
modules/http2/h2_filter.c (+566/-0)
modules/http2/h2_filter.h (+73/-0)
modules/http2/h2_from_h1.c (+863/-0)
modules/http2/h2_from_h1.h (+50/-0)
modules/http2/h2_h2.c (+765/-0)
modules/http2/h2_h2.h (+79/-0)
modules/http2/h2_headers.c (+178/-0)
modules/http2/h2_headers.h (+77/-0)
modules/http2/h2_mplx.c (+1272/-0)
modules/http2/h2_mplx.h (+330/-0)
modules/http2/h2_ngn_shed.c (+392/-0)
modules/http2/h2_ngn_shed.h (+79/-0)
modules/http2/h2_private.h (+28/-0)
modules/http2/h2_proxy_session.c (+1584/-0)
modules/http2/h2_proxy_session.h (+128/-0)
modules/http2/h2_proxy_util.c (+1337/-0)
modules/http2/h2_proxy_util.h (+256/-0)
modules/http2/h2_push.c (+1060/-0)
modules/http2/h2_push.h (+120/-0)
modules/http2/h2_request.c (+338/-0)
modules/http2/h2_request.h (+48/-0)
modules/http2/h2_session.c (+2289/-0)
modules/http2/h2_session.h (+225/-0)
modules/http2/h2_stream.c (+1074/-0)
modules/http2/h2_stream.h (+306/-0)
modules/http2/h2_switch.c (+194/-0)
modules/http2/h2_switch.h (+30/-0)
modules/http2/h2_task.c (+762/-0)
modules/http2/h2_task.h (+127/-0)
modules/http2/h2_util.c (+2011/-0)
modules/http2/h2_util.h (+544/-0)
modules/http2/h2_version.h (+41/-0)
modules/http2/h2_workers.c (+383/-0)
modules/http2/h2_workers.h (+82/-0)
modules/http2/mod_http2.c (+387/-0)
modules/http2/mod_http2.dep (+1433/-0)
modules/http2/mod_http2.dsp (+195/-0)
modules/http2/mod_http2.h (+96/-0)
modules/http2/mod_http2.mak (+542/-0)
modules/http2/mod_proxy_http2.c (+674/-0)
modules/http2/mod_proxy_http2.dep (+208/-0)
modules/http2/mod_proxy_http2.dsp (+119/-0)
modules/http2/mod_proxy_http2.h (+21/-0)
modules/http2/mod_proxy_http2.mak (+427/-0)
modules/ldap/Makefile.in (+3/-0)
modules/ldap/NWGNUmakefile (+264/-0)
modules/ldap/README.ldap (+47/-0)
modules/ldap/config.m4 (+25/-0)
modules/ldap/mod_ldap.dep (+192/-0)
modules/ldap/mod_ldap.dsp (+127/-0)
modules/ldap/mod_ldap.mak (+371/-0)
modules/ldap/util_ldap.c (+3221/-0)
modules/ldap/util_ldap_cache.c (+467/-0)
modules/ldap/util_ldap_cache.h (+206/-0)
modules/ldap/util_ldap_cache_mgr.c (+901/-0)
modules/loggers/.indent.pro (+54/-0)
modules/loggers/Makefile.in (+3/-0)
modules/loggers/NWGNUforensic (+258/-0)
modules/loggers/NWGNUlogdebug (+258/-0)
modules/loggers/NWGNUmakefile (+247/-0)
modules/loggers/NWGNUmodlogio (+258/-0)
modules/loggers/config.m4 (+20/-0)
modules/loggers/mod_log_config.c (+1858/-0)
modules/loggers/mod_log_config.dep (+62/-0)
modules/loggers/mod_log_config.dsp (+111/-0)
modules/loggers/mod_log_config.exp (+1/-0)
modules/loggers/mod_log_config.h (+74/-0)
modules/loggers/mod_log_config.mak (+353/-0)
modules/loggers/mod_log_debug.c (+287/-0)
modules/loggers/mod_log_debug.dep (+54/-0)
modules/loggers/mod_log_debug.dsp (+111/-0)
modules/loggers/mod_log_debug.mak (+325/-0)
modules/loggers/mod_log_forensic.c (+289/-0)
modules/loggers/mod_log_forensic.dep (+53/-0)
modules/loggers/mod_log_forensic.dsp (+111/-0)
modules/loggers/mod_log_forensic.exp (+1/-0)
modules/loggers/mod_log_forensic.mak (+353/-0)
modules/loggers/mod_logio.c (+284/-0)
modules/loggers/mod_logio.dep (+59/-0)
modules/loggers/mod_logio.dsp (+111/-0)
modules/loggers/mod_logio.mak (+353/-0)
modules/lua/Makefile.in (+3/-0)
modules/lua/NWGNUmakefile (+287/-0)
modules/lua/README (+54/-0)
modules/lua/config.m4 (+121/-0)
modules/lua/docs/README (+12/-0)
modules/lua/docs/basic-configuration.txt (+141/-0)
modules/lua/docs/building-from-subversion.txt (+72/-0)
modules/lua/docs/running-developer-tests.txt (+16/-0)
modules/lua/docs/writing-handlers.txt (+49/-0)
modules/lua/lua_apr.c (+104/-0)
modules/lua/lua_apr.h (+36/-0)
modules/lua/lua_config.c (+277/-0)
modules/lua/lua_config.h (+31/-0)
modules/lua/lua_dbd.c (+843/-0)
modules/lua/lua_dbd.h (+66/-0)
modules/lua/lua_passwd.c (+178/-0)
modules/lua/lua_passwd.h (+90/-0)
modules/lua/lua_request.c (+3024/-0)
modules/lua/lua_request.h (+58/-0)
modules/lua/lua_vmprep.c (+551/-0)
modules/lua/lua_vmprep.h (+147/-0)
modules/lua/mod_lua.c (+2174/-0)
modules/lua/mod_lua.dep (+418/-0)
modules/lua/mod_lua.dsp (+163/-0)
modules/lua/mod_lua.h (+177/-0)
modules/lua/mod_lua.mak (+407/-0)
modules/lua/test/helpers.lua (+36/-0)
modules/lua/test/htdocs/config_tests.lua (+37/-0)
modules/lua/test/htdocs/filters.lua (+7/-0)
modules/lua/test/htdocs/find_me.txt (+1/-0)
modules/lua/test/htdocs/headers.lua (+6/-0)
modules/lua/test/htdocs/hooks.lua (+29/-0)
modules/lua/test/htdocs/other.lua (+21/-0)
modules/lua/test/htdocs/simple.lua (+4/-0)
modules/lua/test/htdocs/test.lua (+129/-0)
modules/lua/test/lib/kangaroo.lua (+19/-0)
modules/lua/test/moonunit.lua (+52/-0)
modules/lua/test/test.lua (+126/-0)
modules/lua/test/test_httpd.conf (+31/-0)
modules/mappers/.indent.pro (+54/-0)
modules/mappers/Makefile.in (+3/-0)
modules/mappers/NWGNUactions (+248/-0)
modules/mappers/NWGNUimagemap (+249/-0)
modules/mappers/NWGNUmakefile (+250/-0)
modules/mappers/NWGNUrewrite (+250/-0)
modules/mappers/NWGNUspeling (+248/-0)
modules/mappers/NWGNUuserdir (+249/-0)
modules/mappers/NWGNUvhost (+249/-0)
modules/mappers/config9.m4 (+19/-0)
modules/mappers/mod_actions.c (+230/-0)
modules/mappers/mod_actions.dep (+58/-0)
modules/mappers/mod_actions.dsp (+111/-0)
modules/mappers/mod_actions.exp (+1/-0)
modules/mappers/mod_actions.mak (+353/-0)
modules/mappers/mod_alias.c (+726/-0)
modules/mappers/mod_alias.dep (+51/-0)
modules/mappers/mod_alias.dsp (+111/-0)
modules/mappers/mod_alias.exp (+1/-0)
modules/mappers/mod_alias.mak (+353/-0)
modules/mappers/mod_dir.c (+417/-0)
modules/mappers/mod_dir.dep (+60/-0)
modules/mappers/mod_dir.dsp (+111/-0)
modules/mappers/mod_dir.exp (+1/-0)
modules/mappers/mod_dir.mak (+353/-0)
modules/mappers/mod_imagemap.c (+897/-0)
modules/mappers/mod_imagemap.dep (+60/-0)
modules/mappers/mod_imagemap.dsp (+111/-0)
modules/mappers/mod_imagemap.exp (+1/-0)
modules/mappers/mod_imagemap.mak (+353/-0)
modules/mappers/mod_negotiation.c (+3228/-0)
modules/mappers/mod_negotiation.dep (+58/-0)
modules/mappers/mod_negotiation.dsp (+111/-0)
modules/mappers/mod_negotiation.exp (+1/-0)
modules/mappers/mod_negotiation.mak (+353/-0)
modules/mappers/mod_rewrite.c (+5328/-0)
modules/mappers/mod_rewrite.dep (+65/-0)
modules/mappers/mod_rewrite.dsp (+111/-0)
modules/mappers/mod_rewrite.exp (+1/-0)
modules/mappers/mod_rewrite.h (+42/-0)
modules/mappers/mod_rewrite.mak (+353/-0)
modules/mappers/mod_speling.c (+533/-0)
modules/mappers/mod_speling.dep (+51/-0)
modules/mappers/mod_speling.dsp (+111/-0)
modules/mappers/mod_speling.exp (+1/-0)
modules/mappers/mod_speling.mak (+353/-0)
modules/mappers/mod_userdir.c (+390/-0)
modules/mappers/mod_userdir.dep (+46/-0)
modules/mappers/mod_userdir.dsp (+111/-0)
modules/mappers/mod_userdir.exp (+1/-0)
modules/mappers/mod_userdir.mak (+353/-0)
modules/mappers/mod_vhost_alias.c (+457/-0)
modules/mappers/mod_vhost_alias.dep (+50/-0)
modules/mappers/mod_vhost_alias.dsp (+111/-0)
modules/mappers/mod_vhost_alias.exp (+1/-0)
modules/mappers/mod_vhost_alias.mak (+353/-0)
modules/md/Makefile.in (+20/-0)
modules/md/config2.m4 (+297/-0)
modules/md/md.h (+290/-0)
modules/md/md_acme.c (+529/-0)
modules/md/md_acme.h (+267/-0)
modules/md/md_acme_acct.c (+670/-0)
modules/md/md_acme_acct.h (+49/-0)
modules/md/md_acme_authz.c (+723/-0)
modules/md/md_acme_authz.h (+104/-0)
modules/md/md_acme_drive.c (+1021/-0)
modules/md/md_core.c (+428/-0)
modules/md/md_crypt.c (+1315/-0)
modules/md/md_crypt.h (+135/-0)
modules/md/md_curl.c (+307/-0)
modules/md/md_curl.h (+24/-0)
modules/md/md_http.c (+245/-0)
modules/md/md_http.h (+102/-0)
modules/md/md_json.c (+1034/-0)
modules/md/md_json.h (+122/-0)
modules/md/md_jws.c (+106/-0)
modules/md/md_jws.h (+30/-0)
modules/md/md_log.c (+78/-0)
modules/md/md_log.h (+56/-0)
modules/md/md_reg.c (+996/-0)
modules/md/md_reg.h (+177/-0)
modules/md/md_store.c (+319/-0)
modules/md/md_store.h (+157/-0)
modules/md/md_store_fs.c (+883/-0)
modules/md/md_store_fs.h (+65/-0)
modules/md/md_util.c (+1254/-0)
modules/md/md_util.h (+148/-0)
modules/md/md_version.h (+42/-0)
modules/md/mod_md.c (+1442/-0)
modules/md/mod_md.dep (+5/-0)
modules/md/mod_md.dsp (+180/-0)
modules/md/mod_md.h (+50/-0)
modules/md/mod_md.mak (+520/-0)
modules/md/mod_md_config.c (+950/-0)
modules/md/mod_md_config.h (+102/-0)
modules/md/mod_md_os.c (+89/-0)
modules/md/mod_md_os.h (+37/-0)
modules/md/mod_md_private.h (+24/-0)
modules/metadata/.indent.pro (+54/-0)
modules/metadata/Makefile.in (+3/-0)
modules/metadata/NWGNUcernmeta (+248/-0)
modules/metadata/NWGNUexpires (+248/-0)
modules/metadata/NWGNUheaders (+249/-0)
modules/metadata/NWGNUmakefile (+254/-0)
modules/metadata/NWGNUmimemagi (+248/-0)
modules/metadata/NWGNUmodident (+248/-0)
modules/metadata/NWGNUmodversion (+248/-0)
modules/metadata/NWGNUremoteip (+248/-0)
modules/metadata/NWGNUuniqueid (+257/-0)
modules/metadata/NWGNUusertrk (+248/-0)
modules/metadata/config.m4 (+24/-0)
modules/metadata/mod_cern_meta.c (+371/-0)
modules/metadata/mod_cern_meta.dep (+55/-0)
modules/metadata/mod_cern_meta.dsp (+111/-0)
modules/metadata/mod_cern_meta.exp (+1/-0)
modules/metadata/mod_cern_meta.mak (+353/-0)
modules/metadata/mod_env.c (+190/-0)
modules/metadata/mod_env.dep (+47/-0)
modules/metadata/mod_env.dsp (+111/-0)
modules/metadata/mod_env.exp (+1/-0)
modules/metadata/mod_env.mak (+353/-0)
modules/metadata/mod_expires.c (+571/-0)
modules/metadata/mod_expires.dep (+54/-0)
modules/metadata/mod_expires.dsp (+111/-0)
modules/metadata/mod_expires.exp (+1/-0)
modules/metadata/mod_expires.mak (+353/-0)
modules/metadata/mod_headers.c (+1020/-0)
modules/metadata/mod_headers.dep (+57/-0)
modules/metadata/mod_headers.dsp (+111/-0)
modules/metadata/mod_headers.exp (+1/-0)
modules/metadata/mod_headers.mak (+353/-0)
modules/metadata/mod_ident.c (+344/-0)
modules/metadata/mod_ident.dep (+52/-0)
modules/metadata/mod_ident.dsp (+111/-0)
modules/metadata/mod_ident.exp (+1/-0)
modules/metadata/mod_ident.mak (+353/-0)
modules/metadata/mod_mime_magic.c (+2471/-0)
modules/metadata/mod_mime_magic.dep (+58/-0)
modules/metadata/mod_mime_magic.dsp (+111/-0)
modules/metadata/mod_mime_magic.exp (+1/-0)
modules/metadata/mod_mime_magic.mak (+353/-0)
modules/metadata/mod_remoteip.c (+1218/-0)
modules/metadata/mod_remoteip.dep (+53/-0)
modules/metadata/mod_remoteip.dsp (+111/-0)
modules/metadata/mod_remoteip.mak (+353/-0)
modules/metadata/mod_setenvif.c (+648/-0)
modules/metadata/mod_setenvif.dep (+56/-0)
modules/metadata/mod_setenvif.dsp (+111/-0)
modules/metadata/mod_setenvif.exp (+1/-0)
modules/metadata/mod_setenvif.mak (+353/-0)
modules/metadata/mod_unique_id.c (+316/-0)
modules/metadata/mod_unique_id.dep (+50/-0)
modules/metadata/mod_unique_id.dsp (+111/-0)
modules/metadata/mod_unique_id.exp (+1/-0)
modules/metadata/mod_unique_id.mak (+353/-0)
modules/metadata/mod_usertrack.c (+459/-0)
modules/metadata/mod_usertrack.dep (+51/-0)
modules/metadata/mod_usertrack.dsp (+111/-0)
modules/metadata/mod_usertrack.exp (+1/-0)
modules/metadata/mod_usertrack.mak (+353/-0)
modules/metadata/mod_version.c (+313/-0)
modules/metadata/mod_version.dep (+45/-0)
modules/metadata/mod_version.dsp (+111/-0)
modules/metadata/mod_version.exp (+1/-0)
modules/metadata/mod_version.mak (+353/-0)
modules/proxy/.indent.pro (+58/-0)
modules/proxy/CHANGES (+223/-0)
modules/proxy/Makefile.in (+4/-0)
modules/proxy/NWGNUmakefile (+259/-0)
modules/proxy/NWGNUproxy (+337/-0)
modules/proxy/NWGNUproxyajp (+264/-0)
modules/proxy/NWGNUproxybalancer (+260/-0)
modules/proxy/NWGNUproxycon (+251/-0)
modules/proxy/NWGNUproxyexpress (+256/-0)
modules/proxy/NWGNUproxyfcgi (+261/-0)
modules/proxy/NWGNUproxyftp (+260/-0)
modules/proxy/NWGNUproxyhcheck (+254/-0)
modules/proxy/NWGNUproxyhtp (+260/-0)
modules/proxy/NWGNUproxylbm_busy (+250/-0)
modules/proxy/NWGNUproxylbm_hb (+251/-0)
modules/proxy/NWGNUproxylbm_req (+251/-0)
modules/proxy/NWGNUproxylbm_traf (+251/-0)
modules/proxy/NWGNUproxyscgi (+260/-0)
modules/proxy/NWGNUproxywstunnel (+250/-0)
modules/proxy/ajp.h (+520/-0)
modules/proxy/ajp_header.c (+885/-0)
modules/proxy/ajp_header.h (+195/-0)
modules/proxy/ajp_link.c (+115/-0)
modules/proxy/ajp_msg.c (+641/-0)
modules/proxy/ajp_utils.c (+137/-0)
modules/proxy/balancers/Makefile.in (+3/-0)
modules/proxy/balancers/config2.m4 (+8/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.c (+161/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.c (+201/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.c (+170/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.c (+467/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.dep (+77/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.mak (+408/-0)
modules/proxy/config.m4 (+79/-0)
modules/proxy/libproxy.exp (+1/-0)
modules/proxy/mod_proxy.c (+3080/-0)
modules/proxy/mod_proxy.dep (+153/-0)
modules/proxy/mod_proxy.dsp (+127/-0)
modules/proxy/mod_proxy.h (+1246/-0)
modules/proxy/mod_proxy.mak (+361/-0)
modules/proxy/mod_proxy_ajp.c (+829/-0)
modules/proxy/mod_proxy_ajp.dep (+356/-0)
modules/proxy/mod_proxy_ajp.dsp (+151/-0)
modules/proxy/mod_proxy_ajp.mak (+416/-0)
modules/proxy/mod_proxy_balancer.c (+1936/-0)
modules/proxy/mod_proxy_balancer.dep (+76/-0)
modules/proxy/mod_proxy_balancer.dsp (+123/-0)
modules/proxy/mod_proxy_balancer.mak (+380/-0)
modules/proxy/mod_proxy_connect.c (+486/-0)
modules/proxy/mod_proxy_connect.dep (+73/-0)
modules/proxy/mod_proxy_connect.dsp (+123/-0)
modules/proxy/mod_proxy_connect.mak (+380/-0)
modules/proxy/mod_proxy_express.c (+221/-0)
modules/proxy/mod_proxy_express.dep (+74/-0)
modules/proxy/mod_proxy_express.dsp (+123/-0)
modules/proxy/mod_proxy_express.mak (+380/-0)
modules/proxy/mod_proxy_fcgi.c (+1200/-0)
modules/proxy/mod_proxy_fcgi.dep (+75/-0)
modules/proxy/mod_proxy_fcgi.dsp (+123/-0)
modules/proxy/mod_proxy_fcgi.mak (+380/-0)
modules/proxy/mod_proxy_fdpass.c (+241/-0)
modules/proxy/mod_proxy_fdpass.h (+41/-0)
modules/proxy/mod_proxy_ftp.c (+2125/-0)
modules/proxy/mod_proxy_ftp.dep (+74/-0)
modules/proxy/mod_proxy_ftp.dsp (+123/-0)
modules/proxy/mod_proxy_ftp.mak (+380/-0)
modules/proxy/mod_proxy_hcheck.c (+1225/-0)
modules/proxy/mod_proxy_hcheck.dep (+5/-0)
modules/proxy/mod_proxy_hcheck.dsp (+123/-0)
modules/proxy/mod_proxy_hcheck.mak (+380/-0)
modules/proxy/mod_proxy_http.c (+2043/-0)
modules/proxy/mod_proxy_http.dep (+73/-0)
modules/proxy/mod_proxy_http.dsp (+123/-0)
modules/proxy/mod_proxy_http.mak (+380/-0)
modules/proxy/mod_proxy_scgi.c (+674/-0)
modules/proxy/mod_proxy_scgi.dep (+75/-0)
modules/proxy/mod_proxy_scgi.dsp (+123/-0)
modules/proxy/mod_proxy_scgi.mak (+380/-0)
modules/proxy/mod_proxy_uwsgi.c (+551/-0)
modules/proxy/mod_proxy_uwsgi.dep (+75/-0)
modules/proxy/mod_proxy_uwsgi.dsp (+123/-0)
modules/proxy/mod_proxy_uwsgi.mak (+380/-0)
modules/proxy/mod_proxy_wstunnel.c (+391/-0)
modules/proxy/mod_proxy_wstunnel.dep (+73/-0)
modules/proxy/mod_proxy_wstunnel.dsp (+123/-0)
modules/proxy/mod_proxy_wstunnel.mak (+380/-0)
modules/proxy/proxy_util.c (+3889/-0)
modules/proxy/proxy_util.h (+45/-0)
modules/proxy/scgi.h (+36/-0)
modules/session/Makefile.in (+4/-0)
modules/session/NWGNUmakefile (+257/-0)
modules/session/NWGNUsession (+254/-0)
modules/session/NWGNUsession_cookie (+253/-0)
modules/session/NWGNUsession_crypto (+255/-0)
modules/session/NWGNUsession_dbd (+253/-0)
modules/session/config.m4 (+68/-0)
modules/session/mod_session.c (+671/-0)
modules/session/mod_session.dep (+56/-0)
modules/session/mod_session.dsp (+115/-0)
modules/session/mod_session.h (+186/-0)
modules/session/mod_session.mak (+353/-0)
modules/session/mod_session_cookie.c (+284/-0)
modules/session/mod_session_cookie.dep (+49/-0)
modules/session/mod_session_cookie.dsp (+111/-0)
modules/session/mod_session_cookie.mak (+381/-0)
modules/session/mod_session_crypto.c (+805/-0)
modules/session/mod_session_crypto.dep (+57/-0)
modules/session/mod_session_crypto.dsp (+111/-0)
modules/session/mod_session_crypto.mak (+381/-0)
modules/session/mod_session_dbd.c (+640/-0)
modules/session/mod_session_dbd.dep (+60/-0)
modules/session/mod_session_dbd.dsp (+111/-0)
modules/session/mod_session_dbd.mak (+409/-0)
modules/slotmem/Makefile.in (+3/-0)
modules/slotmem/NWGNUmakefile (+246/-0)
modules/slotmem/NWGNUslotmem_plain (+250/-0)
modules/slotmem/NWGNUslotmem_shm (+250/-0)
modules/slotmem/config.m4 (+10/-0)
modules/slotmem/mod_slotmem_plain.c (+343/-0)
modules/slotmem/mod_slotmem_plain.dep (+51/-0)
modules/slotmem/mod_slotmem_plain.dsp (+111/-0)
modules/slotmem/mod_slotmem_plain.mak (+353/-0)
modules/slotmem/mod_slotmem_shm.c (+880/-0)
modules/slotmem/mod_slotmem_shm.dep (+57/-0)
modules/slotmem/mod_slotmem_shm.dsp (+111/-0)
modules/slotmem/mod_slotmem_shm.mak (+353/-0)
modules/ssl/Makefile.in (+20/-0)
modules/ssl/NWGNUmakefile (+327/-0)
modules/ssl/README (+106/-0)
modules/ssl/README.dsov.fig (+346/-0)
modules/ssl/README.dsov.ps (+1138/-0)
modules/ssl/config.m4 (+57/-0)
modules/ssl/mod_ssl.c (+760/-0)
modules/ssl/mod_ssl.dep (+1086/-0)
modules/ssl/mod_ssl.dsp (+195/-0)
modules/ssl/mod_ssl.h (+91/-0)
modules/ssl/mod_ssl.mak (+500/-0)
modules/ssl/mod_ssl_openssl.h (+73/-0)
modules/ssl/ssl_engine_config.c (+2067/-0)
modules/ssl/ssl_engine_init.c (+2147/-0)
modules/ssl/ssl_engine_io.c (+2217/-0)
modules/ssl/ssl_engine_kernel.c (+2499/-0)
modules/ssl/ssl_engine_log.c (+238/-0)
modules/ssl/ssl_engine_mutex.c (+111/-0)
modules/ssl/ssl_engine_ocsp.c (+304/-0)
modules/ssl/ssl_engine_pphrase.c (+621/-0)
modules/ssl/ssl_engine_rand.c (+177/-0)
modules/ssl/ssl_engine_vars.c (+1252/-0)
modules/ssl/ssl_private.h (+1083/-0)
modules/ssl/ssl_scache.c (+239/-0)
modules/ssl/ssl_util.c (+471/-0)
modules/ssl/ssl_util_ocsp.c (+419/-0)
modules/ssl/ssl_util_ssl.c (+538/-0)
modules/ssl/ssl_util_ssl.h (+80/-0)
modules/ssl/ssl_util_stapling.c (+873/-0)
modules/test/.indent.pro (+54/-0)
modules/test/Makefile.in (+3/-0)
modules/test/NWGNUmakefile (+257/-0)
modules/test/NWGNUoptfnexport (+256/-0)
modules/test/NWGNUoptfnimport (+256/-0)
modules/test/NWGNUopthookexport (+256/-0)
modules/test/NWGNUopthookimport (+256/-0)
modules/test/README (+1/-0)
modules/test/config.m4 (+13/-0)
modules/test/mod_dialup.c (+306/-0)
modules/test/mod_optional_fn_export.c (+48/-0)
modules/test/mod_optional_fn_export.h (+19/-0)
modules/test/mod_optional_fn_import.c (+55/-0)
modules/test/mod_optional_hook_export.c (+44/-0)
modules/test/mod_optional_hook_export.h (+24/-0)
modules/test/mod_optional_hook_import.c (+45/-0)
os/.indent.pro (+54/-0)
os/Makefile.in (+4/-0)
os/bs2000/ebcdic.c (+210/-0)
os/bs2000/ebcdic.h (+33/-0)
os/bs2000/os.c (+136/-0)
os/bs2000/os.h (+40/-0)
os/config.m4 (+26/-0)
os/netware/modules.c (+117/-0)
os/netware/netware_config_layout.h (+31/-0)
os/netware/os.h (+57/-0)
os/netware/pre_nw.h (+70/-0)
os/netware/util_nw.c (+112/-0)
os/os2/Makefile.in (+5/-0)
os/os2/config.m4 (+3/-0)
os/os2/core.mk (+7/-0)
os/os2/core_header.def (+19/-0)
os/os2/os.h (+40/-0)
os/os2/util_os2.c (+39/-0)
os/unix/Makefile.in (+5/-0)
os/unix/config.m4 (+7/-0)
os/unix/os.h (+52/-0)
os/unix/unixd.c (+714/-0)
os/unix/unixd.h (+142/-0)
os/win32/BaseAddr.ref (+134/-0)
os/win32/Makefile.in (+5/-0)
os/win32/ap_regkey.c (+642/-0)
os/win32/modules.c (+56/-0)
os/win32/os.h (+139/-0)
os/win32/util_win32.c (+148/-0)
os/win32/win32_config_layout.h (+31/-0)
server/.indent.pro (+54/-0)
server/Makefile.in (+105/-0)
server/NWGNUmakefile (+261/-0)
server/buildmark.c (+29/-0)
server/config.c (+2728/-0)
server/config.m4 (+19/-0)
server/connection.c (+228/-0)
server/core.c (+5459/-0)
server/core_filters.c (+889/-0)
server/eoc_bucket.c (+55/-0)
server/eor_bucket.c (+102/-0)
server/error_bucket.c (+77/-0)
server/gen_test_char.c (+173/-0)
server/gen_test_char.dep (+7/-0)
server/gen_test_char.dsp (+94/-0)
server/gen_test_char.mak (+234/-0)
server/listen.c (+938/-0)
server/log.c (+1956/-0)
server/main.c (+850/-0)
server/mpm/MPM.NAMING (+14/-0)
server/mpm/Makefile.in (+4/-0)
server/mpm/config.m4 (+128/-0)
server/mpm/config2.m4 (+89/-0)
server/mpm/event/Makefile.in (+1/-0)
server/mpm/event/config.m4 (+15/-0)
server/mpm/event/config3.m4 (+7/-0)
server/mpm/event/event.c (+3874/-0)
server/mpm/event/mpm_default.h (+56/-0)
server/mpm/mpmt_os2/Makefile.in (+1/-0)
server/mpm/mpmt_os2/config.m4 (+10/-0)
server/mpm/mpmt_os2/config5.m4 (+3/-0)
server/mpm/mpmt_os2/mpm_default.h (+57/-0)
server/mpm/mpmt_os2/mpmt_os2.c (+614/-0)
server/mpm/mpmt_os2/mpmt_os2_child.c (+488/-0)
server/mpm/netware/mpm_default.h (+78/-0)
server/mpm/netware/mpm_netware.c (+1363/-0)
server/mpm/prefork/Makefile.in (+1/-0)
server/mpm/prefork/config.m4 (+7/-0)
server/mpm/prefork/config3.m4 (+1/-0)
server/mpm/prefork/mpm_default.h (+51/-0)
server/mpm/prefork/prefork.c (+1513/-0)
server/mpm/winnt/Makefile.in (+1/-0)
server/mpm/winnt/child.c (+1266/-0)
server/mpm/winnt/config.m4 (+10/-0)
server/mpm/winnt/config3.m4 (+2/-0)
server/mpm/winnt/mpm_default.h (+60/-0)
server/mpm/winnt/mpm_winnt.c (+1785/-0)
server/mpm/winnt/mpm_winnt.h (+96/-0)
server/mpm/winnt/nt_eventlog.c (+171/-0)
server/mpm/winnt/service.c (+1241/-0)
server/mpm/worker/Makefile.in (+2/-0)
server/mpm/worker/config.m4 (+11/-0)
server/mpm/worker/config3.m4 (+5/-0)
server/mpm/worker/mpm_default.h (+55/-0)
server/mpm/worker/worker.c (+2378/-0)
server/mpm_common.c (+571/-0)
server/mpm_fdqueue.c (+530/-0)
server/mpm_fdqueue.h (+110/-0)
server/mpm_unix.c (+1107/-0)
server/protocol.c (+2399/-0)
server/provider.c (+197/-0)
server/request.c (+2511/-0)
server/scoreboard.c (+672/-0)
server/util.c (+3309/-0)
server/util_cfgtree.c (+46/-0)
server/util_charset.c (+28/-0)
server/util_cookies.c (+290/-0)
server/util_debug.c (+236/-0)
server/util_ebcdic.c (+117/-0)
server/util_expr_eval.c (+1822/-0)
server/util_expr_parse.c (+2130/-0)
server/util_expr_parse.h (+104/-0)
server/util_expr_parse.y (+217/-0)
server/util_expr_private.h (+141/-0)
server/util_expr_scan.c (+2669/-0)
server/util_expr_scan.l (+400/-0)
server/util_fcgi.c (+290/-0)
server/util_filter.c (+732/-0)
server/util_md5.c (+166/-0)
server/util_mutex.c (+561/-0)
server/util_pcre.c (+343/-0)
server/util_regex.c (+210/-0)
server/util_script.c (+900/-0)
server/util_time.c (+306/-0)
server/util_xml.c (+140/-0)
server/vhost.c (+1267/-0)
srclib/Makefile.in (+5/-0)
support/.indent.pro (+54/-0)
support/Makefile.in (+89/-0)
support/NWGNUab (+330/-0)
support/NWGNUhtcacheclean (+253/-0)
support/NWGNUhtdbm (+252/-0)
support/NWGNUhtdigest (+251/-0)
support/NWGNUhtpasswd (+252/-0)
support/NWGNUhttxt2dbm (+251/-0)
support/NWGNUlogres (+258/-0)
support/NWGNUmakefile (+51/-0)
support/NWGNUrotlogs (+250/-0)
support/README (+65/-0)
support/SHA1/README.sha1 (+34/-0)
support/SHA1/convert-sha1.pl (+36/-0)
support/SHA1/htpasswd-sha1.pl (+22/-0)
support/SHA1/ldif-sha1.example (+19/-0)
support/ab.c (+2623/-0)
support/ab.dep (+37/-0)
support/ab.dsp (+106/-0)
support/ab.mak (+317/-0)
support/abs.dep (+37/-0)
support/abs.dsp (+144/-0)
support/abs.mak (+374/-0)
support/apachectl.in (+106/-0)
support/apxs.in (+791/-0)
support/check_forensic (+51/-0)
support/checkgid.c (+110/-0)
support/config.m4 (+151/-0)
support/dbmmanage.in (+312/-0)
support/envvars-std.in (+28/-0)
support/fcgistarter.c (+220/-0)
support/fcgistarter.dep (+29/-0)
support/fcgistarter.dsp (+106/-0)
support/fcgistarter.mak (+317/-0)
support/htcacheclean.c (+1829/-0)
support/htcacheclean.dep (+37/-0)
support/htcacheclean.dsp (+106/-0)
support/htcacheclean.mak (+317/-0)
support/htdbm.c (+472/-0)
support/htdbm.dep (+58/-0)
support/htdbm.dsp (+110/-0)
support/htdbm.mak (+326/-0)
support/htdigest.c (+303/-0)
support/htdigest.dep (+27/-0)
support/htdigest.dsp (+106/-0)
support/htdigest.mak (+317/-0)
support/htpasswd.c (+524/-0)
support/htpasswd.dep (+57/-0)
support/htpasswd.dsp (+110/-0)
support/htpasswd.mak (+326/-0)
support/httxt2dbm.c (+335/-0)
support/httxt2dbm.dep (+26/-0)
support/httxt2dbm.dsp (+106/-0)
support/httxt2dbm.mak (+317/-0)
support/list_hooks.pl (+101/-0)
support/log_server_status.in (+76/-0)
support/logresolve.c (+329/-0)
support/logresolve.dep (+26/-0)
support/logresolve.dsp (+106/-0)
support/logresolve.mak (+317/-0)
support/logresolve.pl.in (+225/-0)
support/passwd_common.c (+344/-0)
support/passwd_common.h (+128/-0)
support/phf_abuse_log.cgi.in (+38/-0)
support/rotatelogs.c (+753/-0)
support/rotatelogs.dep (+28/-0)
support/rotatelogs.dsp (+106/-0)
support/rotatelogs.mak (+317/-0)
support/split-logfile.in (+69/-0)
support/suexec.c (+652/-0)
support/suexec.h (+109/-0)
support/win32/ApacheMonitor.c (+1671/-0)
support/win32/ApacheMonitor.dep (+18/-0)
support/win32/ApacheMonitor.dsp (+143/-0)
support/win32/ApacheMonitor.h (+78/-0)
support/win32/ApacheMonitor.mak (+309/-0)
support/win32/ApacheMonitor.manifest (+10/-0)
support/win32/ApacheMonitor.rc (+103/-0)
support/win32/wintty.c (+374/-0)
support/win32/wintty.dep (+5/-0)
support/win32/wintty.dsp (+106/-0)
support/win32/wintty.mak (+317/-0)
test/.indent.pro (+54/-0)
test/Makefile.in (+20/-0)
test/README (+3/-0)
test/check_chunked (+58/-0)
test/cls.c (+182/-0)
test/make_sni.sh (+396/-0)
test/tcpdumpscii.txt (+50/-0)
test/test-writev.c (+101/-0)
test/test_find.c (+78/-0)
test/test_limits.c (+200/-0)
test/test_parser.c (+75/-0)
test/test_select.c (+46/-0)
test/time-sem.c (+591/-0)
Reviewer Review Type Date Requested Status
Christian Ehrhardt  (community) Approve
Canonical Server Pending
Review via email: mp+345312@code.launchpad.net

Description of the change

NOTE: please ignore the diff produced by LP and instead use git locally, there is something wrong with its generation.

Standard merge from debian. Dropped some delta that was already applied upstream, but had to add a new delta because of a universe dependency that debian added (brotli).

I took a quick look at debian/patches/086_svn_cross_compiles, which we have been carrying for years. It is committed to apache trunk, but for some reason not yet in the release branches.

DEP8 tests pass.

Did a fresh install of the cosmic package, then php, setup an index.php that calls phpinfo(), then upgraded to this package and reloaded page, still worked.

There was some back and forth with enabling/disabling http2 and openssl 1.0/1.1, but it's finally enabled and I dropped the disable/enable sequence from the logical delta. End result is we still have http2 and openssl 1.1

PPA with test packages: ppa:ahasenack/apache-merge-2.4.33-3

To post a comment you must log in.
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Breakdown of old Delta - ok
Mentioning of dropped changes - ok
On the remaining delta mostly ack, I wonder as well about the cross-compile changes but keeping for now should be ok.

One thing that made me wonder is the systemd diff for #1488962 still carried.
First of all we should try to still carry the LP reference just without the # to not trigger bug updates. This is not too important as "way down in the CL" I could find it.
But we have a native systemd service for a while now, so this is not more needed.
I dropped the file and systemctl daemon-reload
Then I find the conf no more relevant as expected, still everything reported in the old bug is working just fine.
In particular the native service is type=forking and RemainAfterExit defaults to no
That said, please drop that part of the Delta

One more thing - Is the feature that brotli would provide great enough to let us want to open a MIR for it to one day follow Debian on it?

I did my own build and tests and all seemed good to me.
Once you have adapted the Delta I'd ask you to check if test-apache2.py of [1] still works fine.
If that is good as well, then we can go on with the merge.

[1]: git+ssh://git.launchpad.net/qa-regression-testing
Other than these I'm happy with it, so it should be good after cleaning up the above.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Forgot status update - needs fixing for now

review: Needs Fixing
afba5f5... by Andreas Hasenack

    - Correct systemd-sysv-generator behavior by customizing some
      parameters:
      + d/apache2-systemd.conf: add a drop-in file to specify some
        parameters for the systemd unit (type=Forking and
        RemainsAfterExit=no), this allow a correct state synchronisation
        between systemctl status and actual state of apache2 daemon.
      + d/apache2.install: place the apache2-systemd.conf file in the
        correct location.
      [type=Forking already in the base systemd service file, and
       RemainsAfterExit=no is the default value, so no need to
       customize these anymore.]

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Thanks for catching the systemd delta, definitely a drop.

Regarding brotli, I had never heard of it before now. Upstream seems active, and it's a google project: https://github.com/google/brotli/releases. I really can't say anything else about it.

Going to check test-apache2.py now.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Good call on the secteam's qa regression suite. It caught an error, for which I made an MP: https://code.launchpad.net/~ahasenack/qa-regression-testing/+git/qa-regression-testing/+merge/345557

Running the full suite now (it does take a while). Will post back the results.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Ok, tests pass now: https://pastebin.ubuntu.com/p/pxsmyYyKpp/

(apache-2.4.33-wont-start-ssl-compression)ubuntu@cosmic-apache2-merge:~/git/qa-regression-testing/scripts$ time sudo ./test-apache2.py 2>&1 | tee ~/new-test-run
test_basic_rewrite (__main__.BasicTest)
Test basic rewrite functionality ... ok
test_cve_2007_6203 (__main__.BasicTest)
Test CVE-2007-6203 ... ok
test_cve_2007_6420 (__main__.BasicTest)
Test CVE-2007-6420 ... ok
test_cve_2008_2168 (__main__.BasicTest)
(...)
test_htpasswd_sha (__main__.HTPasswdTest)
Test htpasswd to ensure crypt returns sane sha results ... ok

----------------------------------------------------------------------
Ran 37 tests in 432.842s

OK

  GET (no credentials)

real 7m12.959s

Please re-review, thanks

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

For Brotli I found that it is a new compression algorithm better than gzip.
It is not needed right now, but usually google funded internet standards often become "required" over time to stay current. So while I ack to disabling it right now I'd ask you to file a MIR for it to be able to enable it at some point unless the security review unveils massive issues with it.

Thanks for the tests, it didn't find an issue with your merge but with the tests - never the less that is good later on when maintaining this.

The merge is good now asid one nit pick - IMHO it misses one space in the changelog.
This is no deal breaker, so I'll leave it up to you if you want to fix it or not (see inline comment below).
Everything else is good now, so +1

review: Approve
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Christian found an old MIR bug for brotli that was already completed, but the package was never moved to main. I'll drop the dependency removal and if all tests continue to pass, upload with that, so an AA can promote brotli to main.

This is the MIR: https://bugs.launchpad.net/ubuntu/+source/brotli/+bug/1737053

There is a package in cosmic-proposed that has failed an armhf build, and the bug above hints that there is a fix for it. I might get do that as well if needed.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

As discussed on IRC pushed the tag on a5941629 so you can upload later.
If murphy hits and you have to change we can force the tag to a new one.
Hope this unblocks you for today.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Tests were good, so I uploaded.

466ac4c... by Andreas Hasenack

  * Added changes:
    - d/control, d/rules: Don't build libapache2-mod-proxy-uwsgi and
      libapache2-mod-md until we figure out their transitions.
      libapache2-mod-md in particular is problematic because that makes
      apache2-bin pull in libcurl4 which cannot be coinstalled with libcurl3.
      That situation breaks the installation of libapache2-mod-shib2. See
      https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1770242/comments/1
      for details.

17d0c34... by Andreas Hasenack

merge-changelogs

0b664b4... by Andreas Hasenack

reconstruct-changelog

f56d4ee... by Andreas Hasenack

update-maintainer

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/apache2-bin.install b/debian/apache2-bin.install
2index 63c573f..3d1bdf1 100644
3--- a/debian/apache2-bin.install
4+++ b/debian/apache2-bin.install
5@@ -1,2 +1,3 @@
6 /usr/lib/apache2/modules/
7 /usr/sbin/apache2
8+debian/apache2.py usr/share/apport/package-hooks
9diff --git a/debian/apache2-utils.ufw.profile b/debian/apache2-utils.ufw.profile
10new file mode 100644
11index 0000000..974a655
12--- /dev/null
13+++ b/debian/apache2-utils.ufw.profile
14@@ -0,0 +1,14 @@
15+[Apache]
16+title=Web Server
17+description=Apache v2 is the next generation of the omnipresent Apache web server.
18+ports=80/tcp
19+
20+[Apache Secure]
21+title=Web Server (HTTPS)
22+description=Apache v2 is the next generation of the omnipresent Apache web server.
23+ports=443/tcp
24+
25+[Apache Full]
26+title=Web Server (HTTP,HTTPS)
27+description=Apache v2 is the next generation of the omnipresent Apache web server.
28+ports=80,443/tcp
29diff --git a/debian/apache2.dirs b/debian/apache2.dirs
30index 6089013..1aa6d3c 100644
31--- a/debian/apache2.dirs
32+++ b/debian/apache2.dirs
33@@ -10,3 +10,4 @@ var/cache/apache2/mod_cache_disk
34 var/lib/apache2
35 var/log/apache2
36 var/www/html
37+/etc/ufw/applications.d/apache2
38diff --git a/debian/apache2.install b/debian/apache2.install
39index b6ad789..92865fc 100644
40--- a/debian/apache2.install
41+++ b/debian/apache2.install
42@@ -8,3 +8,4 @@ debian/config-dir/*.conf /etc/apache2
43 debian/config-dir/envvars /etc/apache2
44 debian/config-dir/magic /etc/apache2
45 debian/debhelper/apache2-maintscript-helper /usr/share/apache2/
46+debian/apache2-utils.ufw.profile /etc/ufw/applications.d/
47diff --git a/debian/apache2.postrm b/debian/apache2.postrm
48index a68583c..b0e5d7b 100644
49--- a/debian/apache2.postrm
50+++ b/debian/apache2.postrm
51@@ -33,6 +33,7 @@ is_default_index_html () {
52 776221a94e5a174dc2396c0f3f6b6a74
53 c481228d439cbb54bdcedbaec5bbb11a
54 e2620d4a5a0f8d80dd4b16de59af981f
55+ 3526531ccd6c6a1d2340574a305a18f8
56 EOF
57 }
58
59diff --git a/debian/apache2.py b/debian/apache2.py
60new file mode 100644
61index 0000000..a9fb9d8
62--- /dev/null
63+++ b/debian/apache2.py
64@@ -0,0 +1,48 @@
65+#!/usr/bin/python
66+
67+'''apport hook for apache2
68+
69+(c) 2010 Adam Sommer.
70+Author: Adam Sommer <asommer@ubuntu.com>
71+
72+This program is free software; you can redistribute it and/or modify it
73+under the terms of the GNU General Public License as published by the
74+Free Software Foundation; either version 2 of the License, or (at your
75+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
76+the full text of the license.
77+'''
78+
79+from apport.hookutils import *
80+import os
81+
82+SITES_ENABLED_DIR = '/etc/apache2/sites-enabled/'
83+
84+def add_info(report, ui):
85+ if os.path.isdir(SITES_ENABLED_DIR):
86+ response = ui.yesno("The contents of your " + SITES_ENABLED_DIR + " directory "
87+ "may help developers diagnose your bug more "
88+ "quickly. However, it may contain sensitive "
89+ "information. Do you want to include it in your "
90+ "bug report?")
91+
92+ if response == None: # user cancelled
93+ raise StopIteration
94+
95+ elif response == True:
96+ # Attache config files in /etc/apache2/sites-enabled and listing of files in /etc/apache2/conf.d
97+ for conf_file in os.listdir(SITES_ENABLED_DIR):
98+ attach_file_if_exists(report, SITES_ENABLED_DIR + conf_file, conf_file)
99+
100+ try:
101+ report['Apache2ConfdDirListing'] = str(os.listdir('/etc/apache2/conf.d'))
102+ except OSError:
103+ report['Apache2ConfdDirListing'] = str(False)
104+
105+ # Attach default config files if changed.
106+ attach_conffiles(report, 'apache2', conffiles=None)
107+
108+ # Attach the error.log file.
109+ attach_file(report, '/var/log/apache2/error.log', key='error.log')
110+
111+ # Get loaded modules.
112+ report['Apache2Modules'] = root_command_output(['/usr/sbin/apachectl', '-D DUMP_MODULES'])
113diff --git a/debian/changelog b/debian/changelog
114index b5be286..a4fabd9 100644
115--- a/debian/changelog
116+++ b/debian/changelog
117@@ -1,3 +1,68 @@
118+apache2 (2.4.33-3ubuntu1) cosmic; urgency=medium
119+
120+ * Merge with Debian unstable (LP: #1770242). Remaining changes:
121+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
122+ apache2.dirs}: Add ufw profiles.
123+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
124+ - debian/patches/086_svn_cross_compiles: Backport several cross
125+ fixes from upstream
126+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
127+ Debian with Ubuntu on default page.
128+ + d/source/include-binaries: add Ubuntu icon file
129+ - d/t/control, d/t/check-http2: add basic test for http2 support
130+ * Drop:
131+ - SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
132+ + debian/patches/CVE-2017-15710.patch: fix language long names
133+ detection as short name in modules/aaa/mod_authnz_ldap.c.
134+ + CVE-2017-15710
135+ - SECURITY UPDATE: incorrect <FilesMatch> matching
136+ + debian/patches/CVE-2017-15715.patch: allow to configure
137+ global/default options for regexes, like caseless matching or
138+ extended format in include/ap_regex.h, server/core.c,
139+ server/util_pcre.c.
140+ + CVE-2017-15715
141+ - SECURITY UPDATE: mod_session header manipulation
142+ + debian/patches/CVE-2018-1283.patch: strip Session header when
143+ SessionEnv is on in modules/session/mod_session.c.
144+ + CVE-2018-1283
145+ - SECURITY UPDATE: DoS via specially-crafted request
146+ + debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
147+ terminated on any error, not only on buffer full in
148+ server/protocol.c.
149+ + CVE-2018-1301
150+ - SECURITY UPDATE: mod_cache_socache DoS
151+ + debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
152+ to carriage return in modules/cache/mod_cache_socache.c.
153+ + CVE-2018-1303
154+ - SECURITY UPDATE: insecure nonce generation
155+ + debian/patches/CVE-2018-1312.patch: actually use the secret when
156+ generating nonces in modules/aaa/mod_auth_digest.c.
157+ + CVE-2018-1312
158+ - Correct systemd-sysv-generator behavior by customizing some
159+ parameters:
160+ + d/apache2-systemd.conf: add a drop-in file to specify some
161+ parameters for the systemd unit (type=Forking and
162+ RemainsAfterExit=no), this allow a correct state synchronisation
163+ between systemctl status and actual state of apache2 daemon.
164+ + d/apache2.install: place the apache2-systemd.conf file in the
165+ correct location.
166+ [type=Forking already in the base systemd service file, and
167+ RemainsAfterExit=no is the default value, so no need to
168+ customize these anymore.]
169+ - Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP #1752683)
170+ + added debian/patches/util_ldap_cache_lock_fix.patch
171+ [Already applied upstream]
172+ * Added changes:
173+ - d/control, d/rules: Don't build libapache2-mod-proxy-uwsgi and
174+ libapache2-mod-md until we figure out their transitions.
175+ libapache2-mod-md in particular is problematic because that makes
176+ apache2-bin pull in libcurl4 which cannot be coinstalled with libcurl3.
177+ That situation breaks the installation of libapache2-mod-shib2. See
178+ https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1770242/comments/1
179+ for details.
180+
181+ -- Andreas Hasenack <andreas@canonical.com> Thu, 17 May 2018 11:12:08 -0300
182+
183 apache2 (2.4.33-3) unstable; urgency=medium
184
185 * Add Breaks for libapache2-mod-proxy-uwsgi and libapache2-mod-md, too.
186@@ -70,6 +135,91 @@ apache2 (2.4.29-2) unstable; urgency=medium
187
188 -- Ondřej Surý <ondrej@debian.org> Sun, 14 Jan 2018 11:01:58 +0000
189
190+apache2 (2.4.29-1ubuntu4.1) bionic-security; urgency=medium
191+
192+ * SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
193+ - debian/patches/CVE-2017-15710.patch: fix language long names
194+ detection as short name in modules/aaa/mod_authnz_ldap.c.
195+ - CVE-2017-15710
196+ * SECURITY UPDATE: incorrect <FilesMatch> matching
197+ - debian/patches/CVE-2017-15715.patch: allow to configure
198+ global/default options for regexes, like caseless matching or
199+ extended format in include/ap_regex.h, server/core.c,
200+ server/util_pcre.c.
201+ - CVE-2017-15715
202+ * SECURITY UPDATE: mod_session header manipulation
203+ - debian/patches/CVE-2018-1283.patch: strip Session header when
204+ SessionEnv is on in modules/session/mod_session.c.
205+ - CVE-2018-1283
206+ * SECURITY UPDATE: DoS via specially-crafted request
207+ - debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
208+ terminated on any error, not only on buffer full in
209+ server/protocol.c.
210+ - CVE-2018-1301
211+ * SECURITY UPDATE: mod_cache_socache DoS
212+ - debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
213+ to carriage return in modules/cache/mod_cache_socache.c.
214+ - CVE-2018-1303
215+ * SECURITY UPDATE: insecure nonce generation
216+ - debian/patches/CVE-2018-1312.patch: actually use the secret when
217+ generating nonces in modules/aaa/mod_auth_digest.c.
218+ - CVE-2018-1312
219+
220+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 25 Apr 2018 07:38:24 -0400
221+
222+apache2 (2.4.29-1ubuntu4) bionic; urgency=medium
223+
224+ * Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP: #1752683)
225+ - added debian/patches/util_ldap_cache_lock_fix.patch
226+
227+ -- Rafael David Tinoco <rafael.tinoco@canonical.com> Fri, 02 Mar 2018 02:19:31 +0000
228+
229+apache2 (2.4.29-1ubuntu3) bionic; urgency=medium
230+
231+ * Switch back to OpenSSL 1.1.
232+
233+ -- Dimitri John Ledkov <xnox@ubuntu.com> Tue, 06 Feb 2018 11:57:20 +0000
234+
235+apache2 (2.4.29-1ubuntu2) bionic; urgency=medium
236+
237+ * enable http2 (LP: #1687454) by stopping to disable it
238+ - debian/control: no more removed libnghttp2-dev Build-Depends (in universe).
239+ - debian/config-dir/mods-available/http2.load: no more removed.
240+ - debian/rules: no more removed proxy_http2 from configure.
241+ * d/t/control, d/t/check-http2: add basic test for http2 support
242+
243+ -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 05 Dec 2017 17:25:39 +0100
244+
245+apache2 (2.4.29-1ubuntu1) bionic; urgency=medium
246+
247+ * Merge with Debian unstable. Remaining changes:
248+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
249+ apache2.dirs}: Add ufw profiles.
250+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
251+ - debian/patches/086_svn_cross_compiles: Backport several cross
252+ fixes from upstream
253+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
254+ Debian with Ubuntu on default page.
255+ + d/source/include-binaries: add Ubuntu icon file
256+ - Correct systemd-sysv-generator behavior by customizing some
257+ parameters:
258+ + d/apache2-systemd.conf: add a drop-in file to specify some
259+ parameters for the systemd unit (type=Forking and
260+ RemainsAfterExit=no), this allow a correct state synchronisation
261+ between systemctl status and actual state of apache2 daemon.
262+ + d/apache2.install: place the apache2-systemd.conf file in the
263+ correct location.
264+ - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
265+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
266+ + debian/config-dir/mods-available/http2.load: removed.
267+ + debian/rules: removed proxy_http2 from configure.
268+ * Switch back to OpenSSL 1.0 as we don't yet have 1.1:
269+ - debian/control: switch BuildDepends to libssl1.0-dev
270+ - debian/control: remove Breaks on gridsite and libapache2-mod-dacs
271+ - debian/rules: remove openssl virtual package and logic
272+
273+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 10 Nov 2017 10:51:46 -0500
274+
275 apache2 (2.4.29-1) unstable; urgency=medium
276
277 [ Stefan Fritsch ]
278@@ -134,6 +284,47 @@ apache2 (2.4.27-3) experimental; urgency=medium
279
280 -- Stefan Fritsch <sf@debian.org> Sun, 16 Jul 2017 23:11:07 +0200
281
282+apache2 (2.4.27-2ubuntu3) artful; urgency=medium
283+
284+ * SECURITY UPDATE: optionsbleed information leak
285+ - debian/patches/CVE-2017-9798.patch: disallow method registration
286+ at run time in server/core.c.
287+ - CVE-2017-9798
288+
289+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Sep 2017 11:05:48 -0400
290+
291+apache2 (2.4.27-2ubuntu2) artful; urgency=medium
292+
293+ * Undrop (LP 1658469):
294+ - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
295+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
296+ + debian/config-dir/mods-available/http2.load: removed.
297+ + debian/rules: removed proxy_http2 from configure.
298+
299+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 02 Aug 2017 13:04:45 -0400
300+
301+apache2 (2.4.27-2ubuntu1) artful; urgency=medium
302+
303+ * Merge with Debian unstable (LP: #1702582). Remaining changes:
304+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
305+ apache2.dirs}: Add ufw profiles.
306+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
307+ - debian/patches/086_svn_cross_compiles: Backport several cross
308+ fixes from upstream
309+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
310+ Debian with Ubuntu on default page.
311+ + d/source/include-binaries: add Ubuntu icon file
312+ - Correct systemd-sysv-generator behavior by customizing some
313+ parameters:
314+ + d/apache2-systemd.conf: add a drop-in file to specify some
315+ parameters for the systemd unit (type=Forking and
316+ RemainsAfterExit=no), this allow a correct state synchronisation
317+ between systemctl status and actual state of apache2 daemon.
318+ + d/apache2.install: place the apache2-systemd.conf file in the
319+ correct location.
320+
321+ -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 27 Jul 2017 13:38:39 -0700
322+
323 apache2 (2.4.27-2) unstable; urgency=medium
324
325 * Switch back to openssl 1.0 for now. The transition to 1.1 needs more
326@@ -163,6 +354,55 @@ apache2 (2.4.25-4) unstable; urgency=high
327
328 -- Stefan Fritsch <sf@debian.org> Tue, 20 Jun 2017 21:31:51 +0200
329
330+apache2 (2.4.25-3ubuntu3) artful; urgency=medium
331+
332+ * Re-Drop (LP: #1658469):
333+ - Don't build experimental http2 module for LTS:
334+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
335+ + debian/config-dir/mods-available/http2.load: removed.
336+ + debian/rules: removed proxy_http2 from configure.
337+ + debian/apache2.maintscript: remove http2 conffile.
338+
339+ -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Mon, 01 May 2017 09:55:11 -0700
340+
341+apache2 (2.4.25-3ubuntu2) zesty; urgency=medium
342+ * Undrop (LP 1658469):
343+ - Don't build experimental http2 module for LTS:
344+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
345+ + debian/config-dir/mods-available/http2.load: removed.
346+ + debian/rules: removed proxy_http2 from configure.
347+ + debian/apache2.maintscript: remove http2 conffile.
348+
349+ -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 10 Feb 2017 08:53:43 -0800
350+
351+apache2 (2.4.25-3ubuntu1) zesty; urgency=medium
352+
353+ * Merge from Debian unstable (LP: #1663425). Remaining changes:
354+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
355+ apache2.dirs}: Add ufw profiles.
356+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
357+ - debian/patches/086_svn_cross_compiles: Backport several cross
358+ fixes from upstream
359+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
360+ Debian with Ubuntu on default page.
361+ + d/source/include-binaries: add Ubuntu icon file
362+ - Correct systemd-sysv-generator behavior by customizing some
363+ parameters:
364+ + d/apache2-systemd.conf: add a drop-in file to specify some
365+ parameters for the systemd unit (type=Forking and
366+ RemainsAfterExit=no), this allow a correct state synchronisation
367+ between systemctl status and actual state of apache2 daemon.
368+ + d/apache2.install: place the apache2-systemd.conf file in the
369+ correct location.
370+ * Drop (LP: #1658469):
371+ - Don't build experimental http2 module for LTS:
372+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
373+ + debian/config-dir/mods-available/http2.load: removed.
374+ + debian/rules: removed proxy_http2 from configure.
375+ + debian/apache2.maintscript: remove http2 conffile.
376+
377+ -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 09 Feb 2017 15:48:28 -0800
378+
379 apache2 (2.4.25-3) unstable; urgency=medium
380
381 * Fix detection of systemd to fix 'apache2ctl start' on sysv-init.
382@@ -224,6 +464,39 @@ apache2 (2.4.25-1) unstable; urgency=medium
383
384 -- Stefan Fritsch <sf@debian.org> Wed, 21 Dec 2016 23:46:06 +0100
385
386+apache2 (2.4.23-8ubuntu1) zesty; urgency=medium
387+
388+ * Merge from Debian unstable (LP: #). Remaining changes:
389+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
390+ apache2.dirs}: Add ufw profiles.
391+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
392+ - debian/patches/086_svn_cross_compiles: Backport several cross
393+ fixes from upstream
394+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm,
395+ d/source/include-binaries: replace Debian with Ubuntu on default
396+ page.
397+ [ include-binaries change previously undocumented ]
398+ - Don't build experimental http2 module for LTS:
399+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
400+ + debian/config-dir/mods-available/http2.load: removed.
401+ + debian/rules: removed proxy_http2 from configure.
402+ + debian/apache2.maintscript: remove http2 conffile.
403+ [ Previously undocumented ]
404+ - Correct systemd-sysv-generator behavior by customizing some
405+ parameters:
406+ + d/apache2-systemd.conf: add a drop-in file to specify some
407+ parameters for the systemd unit (type=Forking and
408+ RemainsAfterExit=no), this allow a correct state synchronisation
409+ between systemctl status and actual state of apache2 daemon.
410+ + d/apache2.install: place the apache2-systemd.conf file in the
411+ correct location.
412+ * Drop:
413+ - debian/rules: Fix cross-building by passing
414+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
415+ [ Incorrectly indicated as delta, fixed by Debian in 2.4.18-2 ]
416+
417+ -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 09 Dec 2016 11:02:38 +0100
418+
419 apache2 (2.4.23-8) unstable; urgency=medium
420
421 * Move the mod_ssl_openssl.h header and the dependency on libssl-dev to a
422@@ -234,6 +507,33 @@ apache2 (2.4.23-8) unstable; urgency=medium
423
424 -- Stefan Fritsch <sf@debian.org> Sun, 20 Nov 2016 00:33:13 +0100
425
426+apache2 (2.4.23-7ubuntu1) zesty; urgency=medium
427+
428+ * Merge from Debian unstable. Remaining changes:
429+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
430+ apache2.dirs}: Add ufw profiles.
431+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
432+ - debian/rules: Fix cross-building by passing
433+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
434+ - debian/patches/086_svn_cross_compiles: Backport several cross
435+ fixes from upstream
436+ - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
437+ Debian with Ubuntu on default page.
438+ - Don't build experimental http2 module for LTS:
439+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
440+ + debian/config-dir/mods-available/http2.load: removed.
441+ + debian/rules: removed proxy_http2 from configure.
442+ - Correct systemd-sysv-generator behavior by customizing some
443+ parameters:
444+ + d/apache2-systemd.conf: add a drop-in file to specify some
445+ parameters for the systemd unit (type=Forking and
446+ RemainsAfterExit=no), this allow a correct state synchronisation
447+ between systemctl status and actual state of apache2 daemon.
448+ + d/apache2.install: place the apache2-systemd.conf file in the
449+ correct location.
450+
451+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 16 Nov 2016 09:17:24 -0500
452+
453 apache2 (2.4.23-7) unstable; urgency=medium
454
455 * Make apache2-dev depend on openssl 1.0, too. Closes: #844160
456@@ -348,6 +648,55 @@ apache2 (2.4.20-1) unstable; urgency=medium
457
458 -- Stefan Fritsch <sf@debian.org> Sun, 10 Apr 2016 14:03:41 +0200
459
460+apache2 (2.4.18-2ubuntu4) yakkety; urgency=medium
461+
462+ * SECURITY UPDATE: proxy request header vulnerability (httpoxy)
463+ - debian/patches/CVE-2016-5387.patch: don't pass through HTTP_PROXY in
464+ server/util_script.c.
465+ - CVE-2016-5387
466+
467+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Jul 2016 14:32:02 -0400
468+
469+apache2 (2.4.18-2ubuntu3) xenial; urgency=medium
470+
471+ [ Ryan Harper ]
472+ * Drop /etc/apache2/mods-available/http2.load. This was inadvertently
473+ introduced in 2.4.18-2ubuntu1. The intention is to not carry this at
474+ all, since http2 support is intentionally disabled (see LP 1531864).
475+ * d/apache2.maintscript: handle removal of http2.load conffile.
476+
477+ [ Robie Basak ]
478+ * Re-write Ryan's changelog entry.
479+
480+ -- Robie Basak <robie.basak@ubuntu.com> Fri, 15 Apr 2016 18:00:57 +0000
481+
482+apache2 (2.4.18-2ubuntu2) xenial; urgency=medium
483+
484+ * Correct systemd-sysv-generator behavior by customizing some parameters (LP: #1488962)
485+ - d/apache2-systemd.conf: add a drop-in file to specify some parameters for the systemd
486+ unit (type=Forking and RemainsAfterExit=no), this allow a correct state synchronisation
487+ between systemctl status and actual state of apache2 daemon.
488+ - d/apache2.install: place the apache2-systemd.conf file in the correct location.
489+
490+ -- Pierre-André MOREY <pierre-andre.morey@canonical.com> Fri, 08 Apr 2016 11:48:00 +0200
491+
492+apache2 (2.4.18-2ubuntu1) xenial; urgency=medium
493+
494+ * Merge from Debian unstable. Remaining changes:
495+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
496+ apache2.dirs}: Add ufw profiles.
497+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
498+ - debian/rules: Fix cross-building by passing
499+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
500+ - debian/patches/086_svn_cross_compiles: Backport several cross
501+ fixes from upstream
502+ - d/index.html: replace Debian with Ubuntu on default page.
503+ - Don't build experimental http2 module for LTS:
504+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
505+ + debian/config-dir/mods-available/http2.load: removed.
506+
507+ -- Timo Aaltonen <tjaalton@debian.org> Wed, 06 Apr 2016 00:18:31 +0300
508+
509 apache2 (2.4.18-2) unstable; urgency=low
510
511 * htcacheclean:
512@@ -373,6 +722,24 @@ apache2 (2.4.18-2) unstable; urgency=low
513
514 -- Stefan Fritsch <sf@debian.org> Mon, 28 Mar 2016 21:58:54 +0200
515
516+apache2 (2.4.18-1ubuntu1) xenial; urgency=medium
517+
518+ * Merge from Debian unstable. Remaining changes:
519+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
520+ apache2.dirs}: Add ufw profiles.
521+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
522+ - Add dep8 tests.
523+ - debian/rules: Fix cross-building by passing
524+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
525+ - debian/patches/086_svn_cross_compiles: Backport several cross
526+ fixes from upstream
527+ - d/index.html: replace Debian with Ubuntu on default page.
528+ - Don't build experimental http2 module for LTS:
529+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
530+ + debian/config-dir/mods-available/http2.load: removed.
531+
532+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 21 Jan 2016 15:15:22 -0500
533+
534 apache2 (2.4.18-1) unstable; urgency=medium
535
536 * New upstream release:
537@@ -380,12 +747,48 @@ apache2 (2.4.18-1) unstable; urgency=medium
538
539 -- Stefan Fritsch <sf@debian.org> Sat, 19 Dec 2015 09:26:14 +0100
540
541+apache2 (2.4.17-3ubuntu1) xenial; urgency=medium
542+
543+ * Merge from Debian unstable. Remaining changes:
544+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
545+ apache2.dirs}: Add ufw profiles.
546+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
547+ - Add dep8 tests.
548+ - debian/rules: Fix cross-building by passing
549+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
550+ - debian/patches/086_svn_cross_compiles: Backport several cross
551+ fixes from upstream
552+ - d/index.html: replace Debian with Ubuntu on default page.
553+ - Don't build experimental http2 module for LTS:
554+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
555+ + debian/config-dir/mods-available/http2.load: removed.
556+
557+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 03 Dec 2015 10:07:35 -0500
558+
559 apache2 (2.4.17-3) unstable; urgency=medium
560
561 * mpm_prefork: Fix segfault if started with -X. Closes: #805737
562
563 -- Stefan Fritsch <sf@debian.org> Mon, 23 Nov 2015 19:52:09 +0100
564
565+apache2 (2.4.17-2ubuntu1) xenial; urgency=medium
566+
567+ * Merge from Debian unstable. Remaining changes:
568+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
569+ apache2.dirs}: Add ufw profiles.
570+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
571+ - Add dep8 tests.
572+ - debian/rules: Fix cross-building by passing
573+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
574+ - debian/patches/086_svn_cross_compiles: Backport several cross
575+ fixes from upstream
576+ - d/index.html: replace Debian with Ubuntu on default page.
577+ - Don't build experimental http2 module for LTS:
578+ + debian/control: removed libnghttp2-dev Build-Depends (in universe).
579+ + debian/config-dir/mods-available/http2.load: removed.
580+
581+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 20 Nov 2015 09:11:52 -0500
582+
583 apache2 (2.4.17-2) unstable; urgency=medium
584
585 * Revert REDIRECT_URL to pre-2.4.17 behavior for now. The change broke
586@@ -396,6 +799,31 @@ apache2 (2.4.17-2) unstable; urgency=medium
587
588 -- Stefan Fritsch <sf@debian.org> Sat, 31 Oct 2015 23:17:11 +0100
589
590+apache2 (2.4.17-1ubuntu1) xenial; urgency=medium
591+
592+ * Merge from Debian unstable. Remaining changes:
593+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
594+ apache2.dirs}: Add ufw profiles.
595+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
596+ - Add dep8 tests.
597+ - debian/rules: Fix cross-building by passing
598+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
599+ - debian/patches/086_svn_cross_compiles: Backport several cross
600+ fixes from upstream
601+ - d/index.html: replace Debian with Ubuntu on default page.
602+ * Drop patches (applied upstream):
603+ - debian/patches/CVE-2015-3183.patch
604+ - debian/patches/CVE-2015-3185.patch
605+ * Drop changes (adopted in Debian):
606+ - Allow "triggers-awaited" and "triggers-pending" states in addition
607+ to "installed" when determining whether to defer actions or
608+ process deferred actions.
609+ * Don't build experimental http2 module for LTS
610+ - debian/control: removed libnghttp2-dev Build-Depends (in universe).
611+ - debian/config-dir/mods-available/http2.load: removed.
612+
613+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 30 Oct 2015 09:35:46 -0400
614+
615 apache2 (2.4.17-1) unstable; urgency=medium
616
617 [ Stefan Fritsch ]
618@@ -461,6 +889,49 @@ apache2 (2.4.16-1) unstable; urgency=medium
619
620 -- Stefan Fritsch <sf@debian.org> Sun, 02 Aug 2015 00:44:07 +0200
621
622+apache2 (2.4.12-2ubuntu2) wily; urgency=medium
623+
624+ * SECURITY UPDATE: request smuggling via chunked transfer encoding
625+ - debian/patches/CVE-2015-3183.patch: refactor chunk parsing in
626+ modules/http/http_filters.c.
627+ - CVE-2015-3183
628+ * SECURITY UPDATE: access restriction bypass via deprecated API
629+ - debian/patches/CVE-2015-3185.patch: deprecate old API and add new one
630+ in include/http_request.h, server/request.c.
631+ - CVE-2015-3185
632+
633+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 24 Jul 2015 09:56:09 -0400
634+
635+apache2 (2.4.12-2ubuntu1) wily; urgency=medium
636+
637+ * Merge from Debian unstable. Remaining changes:
638+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
639+ apache2.dirs}: Add ufw profiles.
640+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
641+ - Add dep8 tests.
642+ - debian/rules: Fix cross-building by passing
643+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
644+ - debian/patches/086_svn_cross_compiles: Backport several cross
645+ fixes from upstream
646+ - d/index.html: replace Debian with Ubuntu on default page.
647+ - Allow "triggers-awaited" and "triggers-pending" states in addition
648+ to "installed" when determining whether to defer actions or
649+ process deferred actions.
650+ * Drop patches (applied upstream):
651+ - d/p/split-logfile.patch
652+ - d/p/CVE-2015-0228.patch
653+ * Drop changes (superceded in Debian):
654+ - Cherry-pick versioned build-depend on dpkg from Debian for correct
655+ dpkg-maintscript-helper symlink_to_dir support.
656+ * Drop changes (adopted in Debian):
657+ - d/control, d/config-dir/mods-available/ssl.conf,
658+ d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
659+ dialog program ask-for-passphrase.
660+ * Fix cross-building configure line in d/rules, which had bit-rotted in
661+ previous merges.
662+
663+ -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 May 2015 16:34:00 +0000
664+
665 apache2 (2.4.12-2) unstable; urgency=medium
666
667 [ Jean-Michel Nirgal Vourgère ]
668@@ -510,6 +981,28 @@ apache2 (2.4.10-10) unstable; urgency=medium
669
670 -- Stefan Fritsch <sf@debian.org> Sun, 15 Mar 2015 10:47:36 +0100
671
672+apache2 (2.4.10-9ubuntu1) vivid; urgency=medium
673+
674+ * Merge from Debian unstable. Remaining changes:
675+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
676+ apache2.dirs}: Add ufw profiles.
677+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
678+ - d/control, d/config-dir/mods-available/ssl.conf,
679+ - Add dep8 tests.
680+ - debian/rules: Fix cross-building by passing
681+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
682+ - debian/patches/086_svn_cross_compiles: Backport several cross
683+ fixes from upstream
684+ - d/index.html: replace Debian with Ubuntu on default page.
685+ - d/p/split-logfile.patch: fix completely broken split-logfile
686+ command.
687+ - d/p/CVE-2015-0228.patch: fix logic in modules/lua/lua_request.c to fix a
688+ denial of service in mod_lua via websockets PING
689+ * debian/tests/ssl-passphrase: Add password responder for
690+ systemd-ask-passphrase.
691+
692+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2015 12:03:16 +0100
693+
694 apache2 (2.4.10-9) unstable; urgency=medium
695
696 * CVE-2014-8109: mod_lua: Fix handling of the Require line when a
697@@ -524,6 +1017,54 @@ apache2 (2.4.10-9) unstable; urgency=medium
698
699 -- Stefan Fritsch <sf@debian.org> Mon, 22 Dec 2014 20:24:36 +0100
700
701+apache2 (2.4.10-8ubuntu3) vivid; urgency=medium
702+
703+ * SECURITY UPDATE: restriction bypass in mod_lua via multiple Require
704+ directives
705+ - debian/patches/CVE-2014-8109.patch: handle multiple Require
706+ directives with different arguments in modules/lua/mod_lua.c.
707+ - CVE-2014-8109
708+ * SECURITY UPDATE: denial of service in mod_lua via websockets PING
709+ - debian/patches/CVE-2015-0228.patch: fix logic in
710+ modules/lua/lua_request.c.
711+ - CVE-2015-0228
712+
713+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 05 Mar 2015 10:56:34 -0500
714+
715+apache2 (2.4.10-8ubuntu2) vivid; urgency=medium
716+
717+ * Allow "triggers-awaited" and "triggers-pending" states in addition to
718+ "installed" when determining whether to defer actions or process
719+ deferred actions (LP: #1393832).
720+
721+ -- Colin Watson <cjwatson@ubuntu.com> Wed, 26 Nov 2014 11:31:44 +0000
722+
723+apache2 (2.4.10-8ubuntu1) vivid; urgency=medium
724+
725+ * Merge from Debian unstable. Remaining changes:
726+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
727+ apache2.dirs}: Add ufw profiles.
728+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
729+ - d/control, d/config-dir/mods-available/ssl.conf,
730+ d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
731+ dialog program ask-for-passphrase.
732+ - Add dep8 tests.
733+ - debian/rules: Fix cross-building by passing
734+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
735+ - debian/patches/086_svn_cross_compiles: Backport several cross
736+ fixes from upstream
737+ - d/index.html: replace Debian with Ubuntu on default page.
738+ - d/p/split-logfile.patch: fix completely broken split-logfile
739+ command.
740+ * Fixes from Debian included in merge:
741+ - Crash caused by OCSP stapling code; this was erroneously
742+ attributed to Debian in my previous merge, but actually only
743+ appears in 2.4.10-8; with thanks to Stefan Fritsch (LP: #1366174).
744+ * Cherry-pick versioned build-depend on dpkg from Debian for correct
745+ dpkg-maintscript-helper symlink_to_dir support.
746+
747+ -- Robie Basak <robie.basak@ubuntu.com> Fri, 21 Nov 2014 15:15:58 +0000
748+
749 apache2 (2.4.10-8) unstable; urgency=medium
750
751 * Bump dpkg Pre-Depends to version that supports relative symlinks in
752@@ -538,6 +1079,33 @@ apache2 (2.4.10-8) unstable; urgency=medium
753
754 -- Stefan Fritsch <sf@debian.org> Tue, 18 Nov 2014 15:18:18 +0100
755
756+apache2 (2.4.10-7ubuntu1) vivid; urgency=medium
757+
758+ * Merge from Debian unstable. Remaining changes:
759+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
760+ apache2.dirs}: Add ufw profiles.
761+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
762+ - d/control, d/config-dir/mods-available/ssl.conf,
763+ d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
764+ dialog program ask-for-passphrase.
765+ - Add dep8 tests.
766+ - debian/rules: Fix cross-building by passing
767+ DEB_{HOST,BUILD}_GNU_TYPE to configure.
768+ - debian/patches/086_svn_cross_compiles: Backport several cross
769+ fixes from upstream
770+ - d/index.html: replace Debian with Ubuntu on default page.
771+ - d/p/split-logfile.patch: fix completely broken split-logfile command.
772+ * Fixes from Debian included in merge:
773+ - Don't use a2query in preinst, as it may not be available yet
774+ (LP: #1312533).
775+ - Crash caused by OCSP stapling code (LP: #1366174).
776+ - Disable SSLv3 in default config (LP: #1358305).
777+ - If apache2 is not configured yet, defer actions executed via
778+ apache2-maintscript-helper. This fixes installation failures if a
779+ module package is configured first (LP: #1312854).
780+
781+ -- Robie Basak <robie.basak@ubuntu.com> Mon, 17 Nov 2014 18:04:40 +0000
782+
783 apache2 (2.4.10-7) unstable; urgency=medium
784
785 * Handle transitions of doc dirs and symlinks correctly during upgrade.
786@@ -621,6 +1189,25 @@ apache2 (2.4.10-2) unstable; urgency=medium
787
788 -- Stefan Fritsch <sf@debian.org> Sun, 21 Sep 2014 22:58:33 +0200
789
790+apache2 (2.4.10-1ubuntu1) utopic; urgency=medium
791+
792+ * Merge from Debian unstable. Remaining changes:
793+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
794+ apache2.dirs}: Add ufw profiles.
795+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
796+ - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
797+ d/apache2.install: Plymouth aware passphrase dialog program
798+ ask-for-passphrase.
799+ - Add dep8 tests.
800+ - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
801+ configure.
802+ - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
803+ upstream
804+ - d/index.html: replace Debian with Ubuntu on default page.
805+ - d/p/split-logfile.patch: fix completely broken split-logfile command.
806+
807+ -- Robie Basak <robie.basak@ubuntu.com> Thu, 24 Jul 2014 15:13:16 +0000
808+
809 apache2 (2.4.10-1) unstable; urgency=medium
810
811 [ Arno Töll ]
812@@ -668,6 +1255,45 @@ apache2 (2.4.9-2) unstable; urgency=medium
813
814 -- Stefan Fritsch <sf@debian.org> Sun, 08 Jun 2014 10:38:04 +0200
815
816+apache2 (2.4.9-1ubuntu2) utopic; urgency=medium
817+
818+ * Revert 2.4.4-6ubuntu3 and build against lua 5.1 again, since Apache doesn't
819+ yet support building against lua 5.2 (LP: #1323930).
820+
821+ -- Robie Basak <robie.basak@ubuntu.com> Wed, 28 May 2014 08:55:25 +0000
822+
823+apache2 (2.4.9-1ubuntu1) utopic; urgency=medium
824+
825+ * Merge from Debian unstable. Remaining changes:
826+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
827+ apache2.dirs}: Add ufw profiles.
828+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
829+ - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
830+ d/apache2.install, d/tests/ssl-passphrase: Plymouth aware passphrase
831+ dialog program ask-for-passphrase.
832+ - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
833+ configure.
834+ - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
835+ upstream
836+ - Build using lua5.2.
837+ - d/tests/chroot: dep8 test for ChrootDir case.
838+ - d/tests/ssl-passphrase: update for new default path /var/www/html.
839+ - d/tests/duplicate-module-load: check for duplicate module loads.
840+ - d/index.html: replace Debian with Ubuntu on default page (LP: #1288690).
841+ - d/p/split-logfile.patch: fix completely broken split-logfile command
842+ (LP: #1299162). Thanks to Holger Mauermann.
843+ * Drop changes (upstreamed):
844+ - d/p/ignore-quilt-dir: adjust build system so that it does not use
845+ files find inside the .pc directory. This stops a double module load
846+ causing later havoc, including "ChrootDir" directive failure.
847+ - debian/patches/CVE-2013-6438.patch: properly calculate correct length
848+ in modules/dav/main/util.c.
849+ - debian/patches/CVE-2014-0098.patch: properly parse tokens in
850+ modules/loggers/mod_log_config.c.
851+ * d/tests/control: adjust dep8 tests for new "breaks-testbed" facility.
852+
853+ -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 May 2014 19:30:04 +0000
854+
855 apache2 (2.4.9-1) unstable; urgency=medium
856
857 * New upstream version.
858@@ -700,6 +1326,63 @@ apache2 (2.4.9-1) unstable; urgency=medium
859
860 -- Stefan Fritsch <sf@debian.org> Sat, 29 Mar 2014 22:50:32 +0100
861
862+apache2 (2.4.7-1ubuntu4) trusty; urgency=medium
863+
864+ * d/p/split-logfile.patch: fix completely broken split-logfile command
865+ (LP: #1299162). Thanks to Holger Mauermann.
866+
867+ -- Robie Basak <robie.basak@ubuntu.com> Thu, 03 Apr 2014 11:21:22 +0000
868+
869+apache2 (2.4.7-1ubuntu3) trusty; urgency=medium
870+
871+ * SECURITY UPDATE: denial of service via mod_dav incorrect end of string
872+ calculation
873+ - debian/patches/CVE-2013-6438.patch: properly calculate correct length
874+ in modules/dav/main/util.c.
875+ - CVE-2013-6438
876+ * SECURITY UPDATE: denial of service via truncated cookie and
877+ mod_log_config
878+ - debian/patches/CVE-2014-0098.patch: properly parse tokens in
879+ modules/loggers/mod_log_config.c.
880+ - CVE-2014-0098
881+
882+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 20 Mar 2014 08:34:10 -0400
883+
884+apache2 (2.4.7-1ubuntu2) trusty; urgency=medium
885+
886+ * d/index.html: replace Debian with Ubuntu on default page
887+ (LP: #1288690).
888+
889+ -- Robie Basak <robie.basak@ubuntu.com> Wed, 19 Mar 2014 11:04:21 +0000
890+
891+apache2 (2.4.7-1ubuntu1) trusty; urgency=medium
892+
893+ * Merge from Debian unstable. Remaining changes:
894+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
895+ apache2.dirs}: Add ufw profiles.
896+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
897+ - d/control, d/config-dir/mods-available/ssl.conf,
898+ d/ask-for-passphrase, d/apache2.install, d/tests/ssl-passphrase:
899+ Plymouth aware passphrase dialog program ask-for-passphrase.
900+ - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
901+ to configure.
902+ - debian/patches/086_svn_cross_compiles: Backport several cross fixes
903+ from upstream
904+ - Build using lua5.2.
905+ - d/tests/chroot: dep8 test for ChrootDir case.
906+ - d/p/ignore-quilt-dir: adjust build system so that it does not use
907+ files find inside the .pc directory. This stops a double module load
908+ causing later havoc, including "ChrootDir" directive failure.
909+ * Drop changes:
910+ - debian/{control, rules}: Enable PIE hardening: no longer required;
911+ 2.4.7-1 is already hardened.
912+ - d/p/itk-rerun-configure.patch: no longer needed, as ITK support has moved
913+ out of this package.
914+ * d/tests/ssl-passphrase: update for new default path /var/www/html.
915+ * d/tests/duplicate-module-load: check for duplicate module loads.
916+
917+ -- Robie Basak <robie.basak@ubuntu.com> Tue, 14 Jan 2014 17:23:47 +0000
918+
919 apache2 (2.4.7-1) unstable; urgency=low
920
921 New upstream version
922@@ -763,6 +1446,53 @@ apache2 (2.4.6-3) unstable; urgency=low
923
924 -- Stefan Fritsch <sf@debian.org> Mon, 12 Aug 2013 20:15:38 +0200
925
926+apache2 (2.4.6-2ubuntu4) trusty; urgency=low
927+
928+ * d/p/ignore-quilt-dir, d/p/itk-rerun-configure.patch: adjust build system so
929+ that it does not use files find inside the .pc directory. This stops a
930+ double module load causing later havoc, including "ChrootDir" directive
931+ failure (LP: #1251939). Thanks to Stefan Fritsch.
932+ * d/tests/chroot: dep8 test for ChrootDir case.
933+
934+ -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 Nov 2013 16:21:51 +0000
935+
936+apache2 (2.4.6-2ubuntu3) trusty; urgency=low
937+
938+ * debian/apache2.install: Correct path for ufw.
939+ (LP: #1252722)
940+
941+ -- Chuck Short <zulcss@ubuntu.com> Tue, 19 Nov 2013 08:59:54 -0500
942+
943+apache2 (2.4.6-2ubuntu2) saucy; urgency=low
944+
945+ * d/ask-for-passphrase: mark executable so that apache2 can run it. Fixes
946+ passphrase prompting for SSL certificates that are passphrase protected.
947+ * Add dep8 test for SSL passphrase prompting.
948+
949+ -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 Aug 2013 13:08:52 +0000
950+
951+apache2 (2.4.6-2ubuntu1) saucy; urgency=low
952+
953+ * Merge from Debian unstable. Remaining changes:
954+ - debian/{control, rules}: Enable PIE hardening.
955+ - debian/{control, apache2.install, apache2-utils.ufw.profile,
956+ apache2.dirs}: Add ufw profiles.
957+ - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
958+ - debian/control, debian/config-dir/mods-available/ssl.conf,
959+ debian/ask-for-passphrase, debian/apache2.install: Plymouth aware
960+ passphrase dialog program ask-for-passphrase.
961+ - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
962+ to configure.
963+ - debian/patches/086_svn_cross_compiles: Backport several cross fixes
964+ from upstream
965+ * Dropped changes:
966+ - debian/patches/CVE-2013-1896.patch: upstream
967+ * Fixed module dependencies (LP: #1205314)
968+ - debian/config-dir/mods-available/lbmethod_*: properly specify
969+ proxy_balancer, not mod_proxy_balancer.
970+
971+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 26 Jul 2013 08:31:33 -0400
972+
973 apache2 (2.4.6-2) unstable; urgency=low
974
975 [ Stefan Fritsch ]
976@@ -815,6 +1545,56 @@ apache2 (2.4.6-1) unstable; urgency=low
977
978 -- Arno Töll <arno@debian.org> Sun, 21 Jul 2013 18:44:42 +0200
979
980+apache2 (2.4.4-6ubuntu5) saucy; urgency=low
981+
982+ * SECURITY UPDATE: denial of service via MERGE request
983+ - debian/patches/CVE-2013-1896.patch: make sure DAV is enabled for URI
984+ in modules/dav/main/mod_dav.c.
985+ - CVE-2013-1896
986+
987+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 18 Jul 2013 11:20:47 -0400
988+
989+apache2 (2.4.4-6ubuntu4) saucy; urgency=low
990+
991+ * d/apache2-{utils,bin}.install: move apport hook from apache2-utils to
992+ apache2-bin. apache2-utils is only suggested by apache2, so may not
993+ always be installed by bug reporters. However, apache2-bin will always
994+ need to be installed for Apache to be functional, so this is a better
995+ place for the apport hook. apache2-bin already Conflicts/Replaces
996+ apache2.2-common, so this also fixes (LP: #1199318).
997+ * d/apache2.py: adjust apport hook for new location of configuration
998+ files in apache2 >= 2.4: they have moved from apache2.2-common to
999+ apache2.
1000+
1001+ -- Robie Basak <robie.basak@ubuntu.com> Wed, 17 Jul 2013 17:54:22 +0000
1002+
1003+apache2 (2.4.4-6ubuntu3) saucy; urgency=low
1004+
1005+ * Build using lua5.2.
1006+
1007+ -- Matthias Klose <doko@ubuntu.com> Wed, 17 Jul 2013 14:24:42 +0200
1008+
1009+apache2 (2.4.4-6ubuntu2) saucy; urgency=low
1010+
1011+ * debian/rules: Fix FTBFS while installing ufw.
1012+
1013+ -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 10:10:14 -0500
1014+
1015+apache2 (2.4.4-6ubuntu1) saucy; urgency=low
1016+
1017+ * Merge from Debian unstable. Remaining changes:
1018+ - debian/{control, rules}: Enable PIE hardening.
1019+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1020+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1021+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1022+ Plymouth aware passphrase dialog program ask-for-passphrase.
1023+ * Dropped changes:
1024+ - debian/patches/CVE-2012-2687.patch: Dropped no longer needed.
1025+ - debian/patches/CVE-2012-3499_4558.patch: Dropped no longer needed.
1026+ - debian/patches/CVE-2012-4929.patch: Dropped no longer needed.
1027+
1028+ -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 08:34:01 -0500
1029+
1030 apache2 (2.4.4-6) unstable; urgency=low
1031
1032 * Denote exact versions breaking gnome-user-share now that Gnome maintainers
1033@@ -1286,6 +2066,122 @@ apache2 (2.4.1-1) experimental; urgency=low
1034
1035 -- Stefan Fritsch <sf@debian.org> Mon, 19 Mar 2012 10:46:02 +0100
1036
1037+apache2 (2.2.22-6ubuntu5) raring; urgency=low
1038+
1039+ * SECURITY UPDATE: multiple cross-site scripting issues
1040+ - debian/patches/CVE-2012-3499_4558.patch: properly escape html in
1041+ modules/generators/{mod_info.c,mod_status.c},
1042+ modules/ldap/util_ldap_cache_mgr.c, modules/mappers/mod_imagemap.c,
1043+ modules/proxy/{mod_proxy_balancer.c,mod_proxy_ftp.c}.
1044+ - CVE-2012-3499
1045+ - CVE-2012-4558
1046+ * SECURITY UPDATE: symlink attack in apache2ctl script
1047+ - debian/apache2ctl: introduce and use a safer mkdir_chown() function.
1048+ - Thanks to Stefan Fritsch for the fix.
1049+ - CVE-2013-1048
1050+
1051+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 15 Mar 2013 07:59:58 -0400
1052+
1053+apache2 (2.2.22-6ubuntu4) raring; urgency=low
1054+
1055+ * Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to configure.
1056+ * Skip module sanity check between MPMs if cross-building without the
1057+ kernel/binfmt support to run our target binaries on the build system.
1058+ * Backport several cross fixes from upstream as 086_svn_cross_compiles.
1059+
1060+ -- Adam Conrad <adconrad@ubuntu.com> Wed, 05 Dec 2012 02:21:46 -0700
1061+
1062+apache2 (2.2.22-6ubuntu3) raring; urgency=low
1063+
1064+ * SECURITY UPDATE: XSS vulnerability in mod_negotiation
1065+ - debian/patches/CVE-2012-2687.patch: escape filenames in
1066+ modules/mappers/mod_negotiation.c.
1067+ - CVE-2012-2687
1068+ * SECURITY UPDATE: CRIME attack ssl attack (LP: #1068854)
1069+ - debian/patches/CVE-2012-4929.patch: backport SSLCompression on|off
1070+ directive. Defaults to off as enabling compression enables the CRIME
1071+ attack.
1072+ - CVE-2012-4929
1073+
1074+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 08 Nov 2012 17:56:24 -0500
1075+
1076+apache2 (2.2.22-6ubuntu2) quantal; urgency=low
1077+
1078+ * debian/apache2.py
1079+ - Update apport hook for python3 ; thanks to Edward Donovan (LP: #1013171)
1080+ - Check if this directory exists: /etc/apache2/sites-enabled/
1081+
1082+ -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Mon, 16 Jul 2012 10:02:18 +0200
1083+
1084+apache2 (2.2.22-6ubuntu1) quantal; urgency=low
1085+
1086+ * Merge from Debian unstable. Remaining changes:
1087+ - debian/{control, rules}: Enable PIE hardening.
1088+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1089+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1090+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1091+ Plymouth aware passphrase dialog program ask-for-passphrase.
1092+ * Dropped changes:
1093+ - debian/control: Add bzr tag and point it to our tree; this is not
1094+ really required and just increases the delta.
1095+
1096+ -- Robie Basak <robie.basak@ubuntu.com> Fri, 08 Jun 2012 11:37:31 +0100
1097+
1098+apache2 (2.2.22-6) unstable; urgency=low
1099+
1100+ [ Stefan Fritsch ]
1101+ * Fix regression causing apache2 to cache "206 partial content" responses,
1102+ and then serving these partial responses when replying to normal requests.
1103+ Closes: #671204
1104+ * Add section to security.conf that shows how to forbid access to VCS
1105+ directories. Closes: #548213
1106+ * Update ssl default cipher config, add alternative speed optimized config.
1107+ Closes: #649020
1108+ * Add "AddCharset" for .brf files in default mod_mime config.
1109+ Closes: #402567
1110+ * Don't create httpd.conf anymore and don't include it in apache2.conf. If
1111+ it contains local modifications, move it to /etc/apache2/conf.d/httpd.conf
1112+ * Port some of the comments in apache2.conf from the 2.4 package.
1113+ * Compile mod_version statically, drop associated module load file.
1114+ * If apache2 is not running, make "/etc/init.d/apache2 reload" skip the
1115+ configtest.
1116+ * Note in README.Debian that future versions of the package will have the
1117+ include statements changed to include only *.conf.
1118+ * Change compiled-in document root to /var/www, to avoid strange error
1119+ messages.
1120+ * Use "dh --with autotools_dev" instead of patching config.sub/config.guess.
1121+
1122+ [ Arno Töll ]
1123+ * Fix apxs to import LDFLAGS from config_vars.mk. Moreover, make it possible
1124+ to override LDFLAGS at compile time by defining LDLAGS in the environment,
1125+ just like it is possible for CFLAGS. This also means, config_vars.mk now
1126+ exports hardening build flags by default.
1127+ * Update doc-base metadata for the apache2-doc package.
1128+
1129+ -- Stefan Fritsch <sf@debian.org> Tue, 29 May 2012 22:05:48 +0200
1130+
1131+apache2 (2.2.22-5) unstable; urgency=low
1132+
1133+ * Make LoadFile and LoadModule look in the standard search paths if the
1134+ dso file name is given as a pure filename. This helps with the multi-arch
1135+ transition.
1136+
1137+ -- Stefan Fritsch <sf@debian.org> Mon, 30 Apr 2012 23:38:33 +0200
1138+
1139+apache2 (2.2.22-4) unstable; urgency=high
1140+
1141+ * CVE-2012-0216: Remove "Alias /doc /usr/share/doc" from the default virtual
1142+ hosts' config files.
1143+ If scripting modules like mod_php or mod_rivet are enabled on systems
1144+ where either 1) some frontend server forwards connections to an apache2
1145+ backend server on the localhost address, or 2) the machine running
1146+ apache2 is also used for web browsing, this could allow a remote
1147+ attacker to execute example scripts stored under /usr/share/doc.
1148+ Depending on the installed packages, this could lead to issues like cross
1149+ site scripting, code execution, or leakage of sensitive data.
1150+
1151+ -- Stefan Fritsch <sf@debian.org> Sun, 15 Apr 2012 23:41:43 +0200
1152+
1153 apache2 (2.2.22-3) unstable; urgency=low
1154
1155 * Fix "FTBFS: mkdir: cannot create directory `debian/build-tree/arch':
1156@@ -1306,6 +2202,18 @@ apache2 (2.2.22-2) unstable; urgency=low
1157
1158 -- Stefan Fritsch <sf@debian.org> Thu, 15 Mar 2012 00:02:31 +0100
1159
1160+apache2 (2.2.22-1ubuntu1) precise; urgency=low
1161+
1162+ * Merge from Debian testing. Remaining changes:
1163+ - debian/{control, rules}: Enable PIE hardening.
1164+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1165+ - debian/control: Add bzr tag and point it to our tree
1166+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1167+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1168+ Plymouth aware passphrase dialog program ask-for-passphrase.
1169+
1170+ -- Chuck Short <zulcss@ubuntu.com> Sun, 12 Feb 2012 20:06:35 -0500
1171+
1172 apache2 (2.2.22-1) unstable; urgency=low
1173
1174 [ Stefan Fritsch ]
1175@@ -1323,6 +2231,18 @@ apache2 (2.2.22-1) unstable; urgency=low
1176
1177 -- Stefan Fritsch <sf@debian.org> Wed, 01 Feb 2012 21:49:04 +0100
1178
1179+apache2 (2.2.21-5ubuntu1) precise; urgency=low
1180+
1181+ * Merge from Debian testing. Remaining changes:
1182+ - debian/{control, rules}: Enable PIE hardening.
1183+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1184+ - debian/control: Add bzr tag and point it to our tree
1185+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1186+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1187+ Plymouth aware passphrase dialog program ask-for-passphrase.
1188+
1189+ -- Chuck Short <zulcss@ubuntu.com> Mon, 09 Jan 2012 06:26:31 +0000
1190+
1191 apache2 (2.2.21-5) unstable; urgency=low
1192
1193 [ Arno Töll ]
1194@@ -1376,6 +2296,26 @@ apache2 (2.2.21-4) unstable; urgency=low
1195
1196 -- Stefan Fritsch <sf@debian.org> Thu, 29 Dec 2011 12:09:14 +0100
1197
1198+apache2 (2.2.21-3ubuntu2) precise; urgency=low
1199+
1200+ * d/ask-for-passphrase: Flip the logic of this script so that it checks
1201+ first to see if apache is being started from a TTY, and then if not,
1202+ tries plymouth. (LP: #887410)
1203+
1204+ -- Clint Byrum <clint@ubuntu.com> Tue, 06 Dec 2011 16:49:33 -0800
1205+
1206+apache2 (2.2.21-3ubuntu1) precise; urgency=low
1207+
1208+ * Merge from Debian testing. Remaining changes:
1209+ - debian/{control, rules}: Enable PIE hardening.
1210+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1211+ - debian/control: Add bzr tag and point it to our tree
1212+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1213+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1214+ Plymouth aware passphrase dialog program ask-for-passphrase.
1215+
1216+ -- Chuck Short <zulcss@ubuntu.com> Fri, 09 Dec 2011 05:20:43 +0000
1217+
1218 apache2 (2.2.21-3) unstable; urgency=medium
1219
1220 * Fix CVE-2011-4317: Prevent unintended pattern expansion in some
1221@@ -1390,6 +2330,24 @@ apache2 (2.2.21-3) unstable; urgency=medium
1222
1223 -- Stefan Fritsch <sf@debian.org> Sat, 03 Dec 2011 18:54:03 +0100
1224
1225+apache2 (2.2.21-2ubuntu2) precise; urgency=low
1226+
1227+ * No-change rebuild to drop spurious libsfgcc1 dependency on armhf.
1228+
1229+ -- Adam Conrad <adconrad@ubuntu.com> Fri, 02 Dec 2011 17:36:28 -0700
1230+
1231+apache2 (2.2.21-2ubuntu1) precise; urgency=low
1232+
1233+ * Merge from debian unstable. Remaining changes:
1234+ - debian/{control, rules}: Enable PIE hardening.
1235+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1236+ - debian/control: Add bzr tag and point it to our tree
1237+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1238+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1239+ Plymouth aware passphrase dialog program ask-for-passphrase.
1240+
1241+ -- Chuck Short <zulcss@ubuntu.com> Fri, 14 Oct 2011 16:01:29 +0000
1242+
1243 apache2 (2.2.21-2) unstable; urgency=high
1244
1245 * Fix CVE-2011-3368: Prevent unintended pattern expansion in some
1246@@ -1407,6 +2365,19 @@ apache2 (2.2.21-1) unstable; urgency=low
1247
1248 -- Stefan Fritsch <sf@debian.org> Mon, 26 Sep 2011 18:16:11 +0200
1249
1250+apache2 (2.2.20-1ubuntu1) oneiric; urgency=low
1251+
1252+ * Merge from debian unstable to fix CVE-2011-3192 (LP: #837991).
1253+ Remaining changes:
1254+ - debian/{control, rules}: Enable PIE hardening.
1255+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1256+ - debian/control: Add bzr tag and point it to our tree
1257+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1258+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1259+ Plymouth aware passphrase dialog program ask-for-passphrase.
1260+
1261+ -- Steve Beattie <sbeattie@ubuntu.com> Tue, 06 Sep 2011 01:17:15 -0700
1262+
1263 apache2 (2.2.20-1) unstable; urgency=low
1264
1265 * New upstream release.
1266@@ -1429,6 +2400,18 @@ apache2 (2.2.19-2) unstable; urgency=high
1267
1268 -- Stefan Fritsch <sf@debian.org> Mon, 29 Aug 2011 17:08:17 +0200
1269
1270+apache2 (2.2.19-1ubuntu1) oneiric; urgency=low
1271+
1272+ * Merge from debian unstable (LP: #787013). Remaining changes:
1273+ - debian/{control, rules}: Enable PIE hardening.
1274+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1275+ - debian/control: Add bzr tag and point it to our tree
1276+ - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1277+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1278+ Plymouth aware passphrase dialog program ask-for-passphrase.
1279+
1280+ -- Andres Rodriguez <andreserl@ubuntu.com> Mon, 23 May 2011 10:16:09 -0400
1281+
1282 apache2 (2.2.19-1) unstable; urgency=low
1283
1284 * New upstream release.
1285@@ -1446,6 +2429,18 @@ apache2 (2.2.19-1) unstable; urgency=low
1286
1287 -- Stefan Fritsch <sf@debian.org> Sun, 22 May 2011 10:21:21 +0200
1288
1289+apache2 (2.2.17-3ubuntu1) oneiric; urgency=low
1290+
1291+ * Merge from debian unstable. Remaining changes:
1292+ - debian/{control, rules}: Enable PIE hardening.
1293+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1294+ - debian/control: Add bzr tag and point it to our tree
1295+ - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
1296+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1297+ Plymouth aware passphrase dialog program ask-for-passphrase.
1298+
1299+ -- Chuck Short <zulcss@ubuntu.com> Mon, 11 Apr 2011 02:13:30 +0100
1300+
1301 apache2 (2.2.17-3) unstable; urgency=low
1302
1303 * Fix compilation with OpenSSL without SSLv2 support. Closes: #622049
1304@@ -1472,6 +2467,18 @@ apache2 (2.2.17-2) unstable; urgency=high
1305
1306 -- Stefan Fritsch <sf@debian.org> Mon, 21 Mar 2011 23:01:17 +0100
1307
1308+apache2 (2.2.17-1ubuntu1) natty; urgency=low
1309+
1310+ * Merge from debian unstable, remaining changes:
1311+ - debian/{control, rules}: Enable PIE hardening.
1312+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1313+ - debian/control: Add bzr tag and point it to our tree
1314+ - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
1315+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1316+ Plymouth aware passphrase dialog program ask-for-passphrase.
1317+
1318+ -- Chuck Short <zulcss@ubuntu.com> Tue, 22 Feb 2011 13:02:08 -0500
1319+
1320 apache2 (2.2.17-1) unstable; urgency=low
1321
1322 * New upstream version
1323@@ -1480,6 +2487,32 @@ apache2 (2.2.17-1) unstable; urgency=low
1324
1325 -- Stefan Fritsch <sf@debian.org> Tue, 15 Feb 2011 23:30:18 +0100
1326
1327+apache2 (2.2.16-6ubuntu3) natty; urgency=low
1328+
1329+ * debian/rules: Don't use "-fno-strict-aliasing" since it causes
1330+ apache FTBFS on amd64. (LP: #711293)
1331+
1332+ -- Chuck Short <zulcss@ubuntu.com> Tue, 01 Feb 2011 10:19:55 -0500
1333+
1334+apache2 (2.2.16-6ubuntu2) natty; urgency=low
1335+
1336+ * debian/rules: Use "-fno-strict-aliasing" to work around a gcc bug.
1337+ (LP: #697105)
1338+
1339+ -- Chuck Short <zulcss@ubuntu.com> Tue, 25 Jan 2011 11:14:58 -0500
1340+
1341+apache2 (2.2.16-6ubuntu1) natty; urgency=low
1342+
1343+ * Merge from debian unstable. Remaining changes:
1344+ - debian/{control, rules}: Enable PIE hardening.
1345+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1346+ - debian/control: Add bzr tag and point it to our tree
1347+ - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
1348+ - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1349+ Plymouth aware passphrase dialog program ask-for-passphrase.
1350+
1351+ -- Chuck Short <zulcss@ubuntu.com> Sun, 02 Jan 2011 06:05:51 +0000
1352+
1353 apache2 (2.2.16-6) unstable; urgency=low
1354
1355 * Also add $named to the secondary-init-script example.
1356@@ -1495,6 +2528,30 @@ apache2 (2.2.16-5) unstable; urgency=medium
1357
1358 -- Stefan Fritsch <sf@debian.org> Fri, 31 Dec 2010 01:22:19 +0100
1359
1360+apache2 (2.2.16-4ubuntu2) natty; urgency=low
1361+
1362+ [Clint Byrum]
1363+ * Adding plymouth aware passphrase dialog program ask-for-passphrase.
1364+ (LP: #582963)
1365+ + debian/control: apache2.2-common depends on bash for ask-for-passphrase
1366+ + debian/config-dir/mods-available/ssl.conf:
1367+ - SSLPassPhraseDialog now uses exec:/usr/share/apache2/ask-for-passhrase
1368+
1369+ [Chuck Short]
1370+ * Add apport hook. (LP: #609177)
1371+ + debian/apache2.py, debian/apache2.2-common.install
1372+
1373+ -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:43 -0500
1374+
1375+apache2 (2.2.16-4ubuntu1) natty; urgency=low
1376+
1377+ * Merge from debian unstable. Remaining changes:
1378+ - debian/{control, rules}: Enable PIE hardening.
1379+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1380+ - debian/control: Add bzr tag and point it to our tree
1381+
1382+ -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:41 -0500
1383+
1384 apache2 (2.2.16-4) unstable; urgency=medium
1385
1386 * Increase the mod_reqtimeout default timeouts to avoid potential problems
1387@@ -1505,6 +2562,15 @@ apache2 (2.2.16-4) unstable; urgency=medium
1388
1389 -- Stefan Fritsch <sf@debian.org> Sun, 14 Nov 2010 19:05:55 +0100
1390
1391+apache2 (2.2.16-3ubuntu1) natty; urgency=low
1392+
1393+ * Merge from debian unstable. Remaining changes:
1394+ - debian/{control, rules}: Enable PIE hardening.
1395+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1396+ - debian/control: Add bzr tag and point it to our tree.
1397+
1398+ -- Chuck Short <zulcss@ubuntu.com> Tue, 12 Oct 2010 11:54:48 +0100
1399+
1400 apache2 (2.2.16-3) unstable; urgency=high
1401
1402 * CVE-2010-1623: mod_reqtimeout: Fix potential DoS by high memory usage.
1403@@ -1527,6 +2593,30 @@ apache2 (2.2.16-2) unstable; urgency=low
1404
1405 -- Stefan Fritsch <sf@debian.org> Sun, 29 Aug 2010 15:29:21 +0200
1406
1407+apache2 (2.2.16-1ubuntu3) maverick; urgency=low
1408+
1409+ * Revert "stty sane" to unbreak apache starting, this will have to be
1410+ fixed a different way. (LP: #626723)
1411+
1412+ -- Chuck Short <zulcss@ubuntu.com> Wed, 08 Sep 2010 08:33:17 -0400
1413+
1414+apache2 (2.2.16-1ubuntu2) maverick; urgency=low
1415+
1416+ * debian/apache2.2-common.apache2.init: Add stty sane so that users will get a
1417+ password prompt when using apache-ssl. (LP: #582963)
1418+
1419+ -- Chuck Short <zulcss@ubuntu.com> Wed, 25 Aug 2010 09:25:05 -0400
1420+
1421+apache2 (2.2.16-1ubuntu1) maverick; urgency=low
1422+
1423+ * Merge from debian unstable. Remaining changes:
1424+ - debian/{control, rules}: Enable PIE hardening.
1425+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1426+ - debian/control: Add bzr tag and point it to our tree.
1427+ - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
1428+
1429+ -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Jul 2010 20:21:37 +0100
1430+
1431 apache2 (2.2.16-1) unstable; urgency=medium
1432
1433 * Urgency medium for security fix.
1434@@ -1559,6 +2649,24 @@ apache2 (2.2.15-6) unstable; urgency=low
1435
1436 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jul 2010 23:41:08 +0200
1437
1438+apache2 (2.2.15-5ubuntu1) maverick; urgency=low
1439+
1440+ * Merge from debian unstable. Remaining changes:
1441+ - debian/{control, rules}: Enable PIE hardening.
1442+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1443+ - debian/control: Add bzr tag and point it to our tree.
1444+ - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
1445+ + Dropped:
1446+ - debian/patches/206-fix-potential-memory-leaks.dpatch: No longer needed.
1447+ - debian/patches/206-report-max-client-mpm-worker.dpatch: No longer needed.
1448+ - debian/config-dir/apache2.conf: Merged back from debian.
1449+ - mod-reqtimeout functionality: Merge back from debian.
1450+ - debian/patches/204_CVE-2010-0408.dpatch: No longer needed.
1451+ - debian/patches/205_CVE-2010-0434.dpatch: No longer needed.
1452+ - debian/patches/203_fix-ab-segfault.dpatch: No longer needed.
1453+
1454+ -- Chuck Short <zulcss@ubuntu.com> Wed, 05 May 2010 01:28:04 +0100
1455+
1456 apache2 (2.2.15-5) unstable; urgency=low
1457
1458 * Conflict with apache package as we now include apachectl. Closes: #579065
1459@@ -1679,6 +2787,80 @@ apache2 (2.2.14-6) unstable; urgency=low
1460
1461 -- Stefan Fritsch <sf@debian.org> Sun, 07 Feb 2010 17:29:45 +0100
1462
1463+apache2 (2.2.14-5ubuntu8) lucid; urgency=low
1464+
1465+ * debian/patches/210-backport-mod-reqtimeout-ftbfs.dpatch: Add missing mod_reqtime.so
1466+ (LP: #562370)
1467+
1468+ -- Chuck Short <zulcss@ubuntu.com> Tue, 13 Apr 2010 15:09:57 -0400
1469+
1470+apache2 (2.2.14-5ubuntu7) lucid; urgency=low
1471+
1472+ * debian/patches/206-fix-potential-memory-leaks.dpatch: Fix potential memory
1473+ leaks by making sure to not destroy bucket brigades that have been created
1474+ by earlier filters. Backported from 2.2.15.
1475+ * debian/patches/206-report-max-client-mpm-worker.dpatch: Don't report server
1476+ has reached MaxClients until it has. Backported from 2.2.15
1477+ * debian/config-dir/apache2.conf: Make the Files ~ "^\.ht" block in apache2.conf
1478+ more secure by adding Satisfy all. (Debian bug: #572075)
1479+ * debian/rules, debian/patches/209-backport-mod-reqtimeout.dpatch,
1480+ debian/config2-dir/mods-available/reqtimeout.load,
1481+ debian/config2-dir/mods-available/reqtimeout.conf debian/NEWS : Backport the
1482+ mod-reqtimeout module from 2.2.15, this will mitigate apache slowloris
1483+ bug in apache. Enable it by default. (LP: #392759)
1484+
1485+ -- Chuck Short <zulcss@ubuntu.com> Mon, 05 Apr 2010 09:53:35 -0400
1486+
1487+apache2 (2.2.14-5ubuntu6) lucid; urgency=low
1488+
1489+ * debian/apache2.2-common.apache2.init: Fix thinko. (LP: #551681)
1490+
1491+ -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 09:41:11 -0400
1492+
1493+apache2 (2.2.14-5ubuntu5) lucid; urgency=low
1494+
1495+ * Revert 99-fix-mod-dav-permissions.dpatch
1496+
1497+ -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 07:55:46 -0400
1498+
1499+apache2 (2.2.14-5ubuntu4) lucid; urgency=low
1500+
1501+ * debian/patches/99-fix-mod-dav-permissions.dpatch: Fix permisisons when
1502+ downloading files from webdav (LP: #540747)
1503+ * debian/apache2.2-common.apache2.init: Add graceful restart (LP: #456381)
1504+
1505+ -- Chuck Short <zulcss@ubuntu.com> Mon, 29 Mar 2010 13:37:39 -0400
1506+
1507+apache2 (2.2.14-5ubuntu3) lucid; urgency=low
1508+
1509+ * SECURITY UPDATE: denial of service via crafted request in mod_proxy_ajp
1510+ - debian/patches/204_CVE-2010-0408.dpatch: return the right error code
1511+ in modules/proxy/mod_proxy_ajp.c.
1512+ - CVE-2010-0408
1513+ * SECURITY UPDATE: information disclosure via improper handling of
1514+ headers in subrequests
1515+ - debian/patches/205_CVE-2010-0434.dpatch: use a copy of r->headers_in
1516+ in server/protocol.c.
1517+ - CVE-2010-0434
1518+
1519+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 10 Mar 2010 14:48:48 -0500
1520+
1521+apache2 (2.2.14-5ubuntu2) lucid; urgency=low
1522+
1523+ * debian/patches/203_fix-ab-segfault.dpatch: Fix segfaulting ab when using really
1524+ wacky options. (LP: #450501)
1525+
1526+ -- Chuck Short <zulcss@ubuntu.com> Mon, 08 Mar 2010 14:53:17 -0500
1527+
1528+apache2 (2.2.14-5ubuntu1) lucid; urgency=low
1529+
1530+ * Merge from debian testing. Remaining changes: LP: #506862
1531+ - debian/{control, rules}: Enable PIE hardening.
1532+ - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1533+ - debian/control: Add bzr tag and point it to our tree.
1534+
1535+ -- Bhavani Shankar <right2bhavi@gmail.com> Wed, 13 Jan 2010 14:28:41 +0530
1536+
1537 apache2 (2.2.14-5) unstable; urgency=low
1538
1539 * Security: Further mitigation for the TLS renegotation attack
1540@@ -1702,6 +2884,15 @@ apache2 (2.2.14-5) unstable; urgency=low
1541
1542 -- Stefan Fritsch <sf@debian.org> Sat, 02 Jan 2010 22:44:15 +0100
1543
1544+apache2 (2.2.14-4ubuntu1) lucid; urgency=low
1545+
1546+ * Resynchronzie with Debian, remaining changes are:
1547+ - debian/{control, rules}: Enable PIE hardening.
1548+ - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
1549+ - debian/control: Add bzr tag and point it to our tree.
1550+
1551+ -- Chuck Short <zulcss@ubuntu.com> Wed, 23 Dec 2009 14:44:51 -0500
1552+
1553 apache2 (2.2.14-4) unstable; urgency=low
1554
1555 * Disable localized error pages again by default because they break
1556@@ -1752,6 +2943,17 @@ apache2 (2.2.14-2) unstable; urgency=medium
1557
1558 -- Stefan Fritsch <sf@debian.org> Sat, 07 Nov 2009 14:37:37 +0100
1559
1560+apache2 (2.2.14-1ubuntu1) lucid; urgency=low
1561+
1562+ * Merge from debian testing, remaining changes:
1563+ - debian/{control, rules}: Enable PIE hardening.
1564+ - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
1565+ - debian/conrol: Add bzr tag and point it to our tree.
1566+ - Dropped debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
1567+ Already applied upstream.
1568+
1569+ -- Chuck Short <zulcss@ubuntu.com> Fri, 06 Nov 2009 00:29:03 +0000
1570+
1571 apache2 (2.2.14-1) unstable; urgency=low
1572
1573 * New upstream version:
1574@@ -1786,6 +2988,24 @@ apache2 (2.2.13-1) unstable; urgency=low
1575
1576 -- Stefan Fritsch <sf@debian.org> Mon, 31 Aug 2009 20:28:56 +0200
1577
1578+apache2 (2.2.12-1ubuntu2) karmic; urgency=low
1579+
1580+ * debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
1581+ - Fix potential segfaults with the use of the legacy ap_rputs() etc
1582+ interfaces, in cases where an output filter fails. This happens
1583+ frequently after CVE-2009-1891 got fixed. (LP: #409987)
1584+
1585+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 17 Aug 2009 15:38:47 -0400
1586+
1587+apache2 (2.2.12-1ubuntu1) karmic; urgency=low
1588+
1589+ * Merge from debian unstable, remaining changes:
1590+ - debian/{control,rules}: enable PIE hardening.
1591+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1592+ - Dropped debian/patches/203_fix-ssl-timeftm-ignored.dpatch.
1593+
1594+ -- Chuck Short <zulcss@ubuntu.com> Tue, 04 Aug 2009 20:04:24 +0100
1595+
1596 apache2 (2.2.12-1) unstable; urgency=low
1597
1598 * New upstream release:
1599@@ -1833,6 +3053,16 @@ apache2 (2.2.12-1) unstable; urgency=low
1600
1601 -- Stefan Fritsch <sf@debian.org> Tue, 04 Aug 2009 11:02:34 +0200
1602
1603+apache2 (2.2.11-7ubuntu1) karmic; urgency=low
1604+
1605+ * Merge from debian unstable, remaining changes: LP: #398130
1606+ - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
1607+ Fix timefmt is ignored when XBitHack is on. (LP: #258914)
1608+ - debian/{control,rules}: enable PIE hardening.
1609+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1610+
1611+ -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 11 Jul 2009 16:34:32 +0530
1612+
1613 apache2 (2.2.11-7) unstable; urgency=low
1614
1615 * Security fixes:
1616@@ -1847,6 +3077,16 @@ apache2 (2.2.11-7) unstable; urgency=low
1617
1618 -- Stefan Fritsch <sf@debian.org> Fri, 10 Jul 2009 22:42:57 +0200
1619
1620+apache2 (2.2.11-6ubuntu1) karmic; urgency=low
1621+
1622+ * Merge from debian unstable, remaining changes:
1623+ - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
1624+ Fix timefmt is ignored when XBitHack is on. (LP: #258914)
1625+ - debian/{control,rules}: enable PIE hardening.
1626+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1627+
1628+ -- Chuck Short <zulcss@ubuntu.com> Tue, 09 Jun 2009 01:01:23 +0100
1629+
1630 apache2 (2.2.11-6) unstable; urgency=high
1631
1632 * CVE-2009-1195: mod_include allowed to bypass IncludesNoExec for Server
1633@@ -1855,6 +3095,16 @@ apache2 (2.2.11-6) unstable; urgency=high
1634
1635 -- Stefan Fritsch <sf@debian.org> Mon, 08 Jun 2009 19:22:58 +0200
1636
1637+apache2 (2.2.11-5ubuntu1) karmic; urgency=low
1638+
1639+ * Merge from debian unstable, remaining changes:
1640+ - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
1641+ Fix timefmt is ignored when XBitHack is on. (LP: #258914)
1642+ - debian/{control,rules}: enable PIE hardening.
1643+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1644+
1645+ -- Andrew Mitchell <ajmitch@ubuntu.com> Wed, 03 Jun 2009 14:10:54 +1200
1646+
1647 apache2 (2.2.11-5) unstable; urgency=low
1648
1649 * Move all binaries into a new package apache2.2-bin and make
1650@@ -1903,6 +3153,16 @@ apache2 (2.2.11-4) unstable; urgency=low
1651
1652 -- Stefan Fritsch <sf@debian.org> Tue, 19 May 2009 22:55:27 +0200
1653
1654+apache2 (2.2.11-3ubuntu1) karmic; urgency=low
1655+
1656+ * Merge from debian unstable, remaining changes:
1657+ - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
1658+ Fix timefmt is ignored when XBitHack is on. (LP: #258914)
1659+ - debian/{control,rules}: enable PIE hardening.
1660+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1661+
1662+ -- Andrew Mitchell <ajmitch@ubuntu.com> Tue, 12 May 2009 16:15:34 +1200
1663+
1664 apache2 (2.2.11-3) unstable; urgency=low
1665
1666 * Rebuild against apr-util 1.3, to fix undefined symbol errors in mod_ldap
1667@@ -1911,6 +3171,21 @@ apache2 (2.2.11-3) unstable; urgency=low
1668
1669 -- Stefan Fritsch <sf@debian.org> Tue, 31 Mar 2009 21:07:26 +0200
1670
1671+apache2 (2.2.11-2ubuntu2) jaunty; urgency=low
1672+
1673+ * debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
1674+ Fix timefmt is ignored when XBitHack is on. (LP: #258914)
1675+
1676+ -- Chuck Short <zulcss@ubuntu.com> Wed, 01 Apr 2009 11:39:17 -0400
1677+
1678+apache2 (2.2.11-2ubuntu1) jaunty; urgency=low
1679+
1680+ * Merge from debian unstable, remaining changes:
1681+ - debian/{contro,rules}: enable PIE hardening.
1682+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1683+
1684+ -- Chuck Short <zulcss@ubuntu.com> Sat, 17 Jan 2009 00:02:55 +0000
1685+
1686 apache2 (2.2.11-2) unstable; urgency=low
1687
1688 * Report an error instead instead of segfaulting when apr_pollset_create
1689@@ -1920,6 +3195,14 @@ apache2 (2.2.11-2) unstable; urgency=low
1690
1691 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jan 2009 19:01:59 +0100
1692
1693+apache2 (2.2.11-1ubuntu1) jaunty; urgency=low
1694+
1695+ * Merge from debian unstable, remaining changes:
1696+ - debian/{control, rules}: enable PIE hardening.
1697+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1698+
1699+ -- Chuck Short <zulcss@ubuntu.com> Mon, 15 Dec 2008 00:06:50 +0000
1700+
1701 apache2 (2.2.11-1) unstable; urgency=low
1702
1703 [Thom May]
1704@@ -1934,6 +3217,14 @@ apache2 (2.2.11-1) unstable; urgency=low
1705
1706 -- Stefan Fritsch <sf@debian.org> Sun, 14 Dec 2008 09:34:24 +0100
1707
1708+apache2 (2.2.9-11ubuntu1) jaunty; urgency=low
1709+
1710+ * Merge from debian unstable, remaining changes: (LP: #303375)
1711+ - debian/{control, rules}: enable PIE hardening.
1712+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1713+
1714+ -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 29 Nov 2008 14:02:31 +0530
1715+
1716 apache2 (2.2.9-11) unstable; urgency=low
1717
1718 * Regression fix from upstream svn for mod_proxy:
1719@@ -1948,6 +3239,14 @@ apache2 (2.2.9-11) unstable; urgency=low
1720
1721 -- Stefan Fritsch <sf@debian.org> Wed, 26 Nov 2008 23:10:22 +0100
1722
1723+apache2 (2.2.9-10ubuntu1) jaunty; urgency=low
1724+
1725+ * Merge from debian unstable, remaining changes:
1726+ - debian/{control, rules}: enable PIE hardening.
1727+ - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
1728+
1729+ -- Chuck Short <zulcss@ubuntu.com> Wed, 05 Nov 2008 02:23:18 -0400
1730+
1731 apache2 (2.2.9-10) unstable; urgency=low
1732
1733 * Regression fix from upstream svn for mod_proxy_http:
1734@@ -1978,6 +3277,27 @@ apache2 (2.2.9-8) unstable; urgency=low
1735
1736 -- Stefan Fritsch <sf@debian.org> Thu, 11 Sep 2008 09:17:33 +0200
1737
1738+apache2 (2.2.9-7ubuntu3) intrepid; urgency=low
1739+
1740+ * Revert logrotate change since it will break it for everyone.
1741+
1742+ -- Chuck Short <zulcss@ubuntu.com> Fri, 19 Sep 2008 09:32:01 -0400
1743+
1744+apache2 (2.2.9-7ubuntu2) intrepid; urgency=low
1745+
1746+ * debian/logrotate: Restart rather than reload for busy websites.
1747+ (LP: #270899)
1748+
1749+ -- Chuck Short <zulcss@ubuntu.com> Thu, 18 Sep 2008 08:42:22 -0400
1750+
1751+apache2 (2.2.9-7ubuntu1) intrepid; urgency=low
1752+
1753+ * Merge from debian unstable, remaining changes:
1754+ - debian/{control,rules}: enable PIE hardening.
1755+ - debian/{control,rules,apache2.2-common.ufw.profile}: add ufw profiles.
1756+
1757+ -- Kees Cook <kees@ubuntu.com> Thu, 28 Aug 2008 08:10:59 -0700
1758+
1759 apache2 (2.2.9-7) unstable; urgency=low
1760
1761 * Fix XSS in mod_proxy_ftp (CVE-2008-2939).
1762@@ -2020,6 +3340,23 @@ apache2 (2.2.9-4) unstable; urgency=low
1763
1764 -- Stefan Fritsch <sf@debian.org> Sun, 06 Jul 2008 10:38:37 +0200
1765
1766+apache2 (2.2.9-3ubuntu2) intrepid; urgency=low
1767+
1768+ * add ufw integration (see
1769+ https://wiki.ubuntu.com/UbuntuFirewall#Integrating%20UFW%20with%20Packages)
1770+ (LP: #261198)
1771+ - debian/control: suggest ufw for apache2.2-common
1772+ - add apache2.2-common.ufw.profile with 3 profiles and install it to
1773+ /etc/ufw/applications.d/apache2.2-common
1774+
1775+ -- Didier Roche <didrocks@ubuntu-fr.org> Tue, 26 Aug 2008 19:03:42 +0200
1776+
1777+apache2 (2.2.9-3ubuntu1) intrepid; urgency=low
1778+
1779+ * debian/{control,rules}: enable PIE hardening
1780+
1781+ -- Kees Cook <kees@ubuntu.com> Wed, 20 Aug 2008 15:45:00 -0700
1782+
1783 apache2 (2.2.9-3) unstable; urgency=low
1784
1785 [ Stefan Fritsch ]
1786@@ -4100,3 +5437,4 @@ apache2 (2.0.18-1) unstable; urgency=low
1787 * Initial Release.
1788
1789 -- Daniel Stone <daniel@sfarc.net> Wed, 4 Jul 2001 21:29:29 +1000
1790+
1791diff --git a/debian/control b/debian/control
1792index a72cfff..e974321 100644
1793--- a/debian/control
1794+++ b/debian/control
1795@@ -1,7 +1,8 @@
1796 Source: apache2
1797 Section: httpd
1798 Priority: optional
1799-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
1800+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
1801+XSBC-Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
1802 Uploaders: Stefan Fritsch <sf@debian.org>,
1803 Arno Töll <arno@debian.org>,
1804 Ondřej Surý <ondrej@debian.org>
1805@@ -44,15 +45,12 @@ Provides: httpd,
1806 Recommends: ssl-cert
1807 Conflicts: apache2.2-bin,
1808 apache2.2-common
1809-Breaks: libapache2-mod-md (<< 2.4.33),
1810- libapache2-mod-proxy-uwsgi (<< 2.4.33)
1811 Replaces: apache2.2-bin,
1812 apache2.2-common,
1813- libapache2-mod-md (<< 2.4.33),
1814- libapache2-mod-proxy-uwsgi (<< 2.4.33)
1815 Suggests: apache2-doc,
1816 apache2-suexec-pristine | apache2-suexec-custom,
1817- www-browser
1818+ www-browser,
1819+ ufw
1820 Description: Apache HTTP Server
1821 The Apache HTTP Server Project's goal is to build a secure, efficient and
1822 extensible HTTP server as standards-compliant open source software. The
1823@@ -81,10 +79,6 @@ Depends: ${misc:Depends},
1824 Provides: ${apache2:API}
1825 Breaks: gridsite (<< 3.0.0~20170225gitd51b2fd-1~),
1826 libapache2-mod-dacs (<= 1.4.38a-2),
1827- libapache2-mod-md (<< 2.4.33),
1828- libapache2-mod-proxy-uwsgi (<< 2.4.33)
1829-Replaces: libapache2-mod-md (<< 2.4.33),
1830- libapache2-mod-proxy-uwsgi (<< 2.4.33)
1831 Suggests: apache2-doc,
1832 apache2-suexec-pristine | apache2-suexec-custom,
1833 www-browser
1834@@ -209,20 +203,3 @@ Description: Apache debugging symbols
1835 This package includes the debugging symbols. It can be used to debug
1836 crashing server instances and modules. See
1837 /usr/share/doc/apache2/README.backtrace for more information.
1838-
1839-Package: libapache2-mod-md
1840-Architecture: any
1841-Section: oldlibs
1842-Depends: ${misc:Depends}, apache2 (= ${binary:Version})
1843-Description: transitional package
1844- This is a transitional package to apache2 for users of libapache2-mod-md.
1845- It can be safely removed after the installation is complete.
1846-
1847-Package: libapache2-mod-proxy-uwsgi
1848-Architecture: any
1849-Section: oldlibs
1850-Depends: ${misc:Depends}, apache2 (= ${binary:Version})
1851-Description: transitional package
1852- This is a transitional package to apache2 for users of
1853- libapache2-mod-proxy-uwsgi.
1854- It can be safely removed after the installation is complete.
1855diff --git a/debian/icons/ubuntu-logo.png b/debian/icons/ubuntu-logo.png
1856new file mode 100644
1857index 0000000..4db2fa1
1858Binary files /dev/null and b/debian/icons/ubuntu-logo.png differ
1859diff --git a/debian/index.html b/debian/index.html
1860index 766401d..96ed444 100644
1861--- a/debian/index.html
1862+++ b/debian/index.html
1863@@ -1,9 +1,14 @@
1864
1865 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1866 <html xmlns="http://www.w3.org/1999/xhtml">
1867+ <!--
1868+ Modified from the Debian original for Ubuntu
1869+ Last updated: 2016-11-16
1870+ See: https://launchpad.net/bugs/1288690
1871+ -->
1872 <head>
1873 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
1874- <title>Apache2 Debian Default Page: It works</title>
1875+ <title>Apache2 Ubuntu Default Page: It works</title>
1876 <style type="text/css" media="screen">
1877 * {
1878 margin: 0px 0px 0px 0px;
1879@@ -188,9 +193,9 @@
1880 <body>
1881 <div class="main_page">
1882 <div class="page_header floating_element">
1883- <img src="/icons/openlogo-75.png" alt="Debian Logo" class="floating_element"/>
1884+ <img src="/icons/ubuntu-logo.png" alt="Ubuntu Logo" class="floating_element"/>
1885 <span class="floating_element">
1886- Apache2 Debian Default Page
1887+ Apache2 Ubuntu Default Page
1888 </span>
1889 </div>
1890 <!-- <div class="table_of_contents floating_element">
1891@@ -221,7 +226,9 @@
1892 <div class="content_section_text">
1893 <p>
1894 This is the default welcome page used to test the correct
1895- operation of the Apache2 server after installation on Debian systems.
1896+ operation of the Apache2 server after installation on Ubuntu systems.
1897+ It is based on the equivalent page on Debian, from which the Ubuntu Apache
1898+ packaging is derived.
1899 If you can read this page, it means that the Apache HTTP server installed at
1900 this site is working properly. You should <b>replace this file</b> (located at
1901 <tt>/var/www/html/index.html</tt>) before continuing to operate your HTTP server.
1902@@ -242,9 +249,9 @@
1903 </div>
1904 <div class="content_section_text">
1905 <p>
1906- Debian's Apache2 default configuration is different from the
1907+ Ubuntu's Apache2 default configuration is different from the
1908 upstream default configuration, and split into several files optimized for
1909- interaction with Debian tools. The configuration system is
1910+ interaction with Ubuntu tools. The configuration system is
1911 <b>fully documented in
1912 /usr/share/doc/apache2/README.Debian.gz</b>. Refer to this for the full
1913 documentation. Documentation for the web server itself can be
1914@@ -253,7 +260,7 @@
1915
1916 </p>
1917 <p>
1918- The configuration layout for an Apache2 web server installation on Debian systems is as follows:
1919+ The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:
1920 </p>
1921 <pre>
1922 /etc/apache2/
1923@@ -324,7 +331,7 @@
1924
1925 <div class="content_section_text">
1926 <p>
1927- By default, Debian does not allow access through the web browser to
1928+ By default, Ubuntu does not allow access through the web browser to
1929 <em>any</em> file apart of those located in <tt>/var/www</tt>,
1930 <a href="http://httpd.apache.org/docs/2.4/mod/mod_userdir.html" rel="nofollow">public_html</a>
1931 directories (when enabled) and <tt>/usr/share</tt> (for web
1932@@ -333,7 +340,7 @@
1933 document root directory in <tt>/etc/apache2/apache2.conf</tt>.
1934 </p>
1935 <p>
1936- The default Debian document root is <tt>/var/www/html</tt>. You
1937+ The default Ubuntu document root is <tt>/var/www/html</tt>. You
1938 can make your own virtual hosts under /var/www. This is different
1939 to previous releases which provides better security out of the box.
1940 </p>
1941@@ -345,9 +352,9 @@
1942 </div>
1943 <div class="content_section_text">
1944 <p>
1945- Please use the <tt>reportbug</tt> tool to report bugs in the
1946- Apache2 package with Debian. However, check <a
1947- href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=apache2;repeatmerged=0"
1948+ Please use the <tt>ubuntu-bug</tt> tool to report bugs in the
1949+ Apache2 package with Ubuntu. However, check <a
1950+ href="https://bugs.launchpad.net/ubuntu/+source/apache2"
1951 rel="nofollow">existing bug reports</a> before reporting a new bug.
1952 </p>
1953 <p>
1954diff --git a/debian/patches/086_svn_cross_compiles b/debian/patches/086_svn_cross_compiles
1955new file mode 100644
1956index 0000000..b237908
1957--- /dev/null
1958+++ b/debian/patches/086_svn_cross_compiles
1959@@ -0,0 +1,118 @@
1960+Description: Pull upstream fixes for autotools for cross-compiling
1961+Author: Adam Conrad <adconrad@ubuntu.com>
1962+Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328445
1963+Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1327907
1964+Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328390
1965+Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328714
1966+Forwarded: not-needed
1967+
1968+Index: apache2-2.4.29/acinclude.m4
1969+===================================================================
1970+--- apache2-2.4.29.orig/acinclude.m4 2017-11-10 10:56:51.488205250 -0500
1971++++ apache2-2.4.29/acinclude.m4 2017-11-10 10:56:51.484205199 -0500
1972+@@ -55,6 +55,8 @@ AC_DEFUN([APACHE_GEN_CONFIG_VARS],[
1973+ APACHE_SUBST(CPPFLAGS)
1974+ APACHE_SUBST(CFLAGS)
1975+ APACHE_SUBST(CXXFLAGS)
1976++ APACHE_SUBST(CC_FOR_BUILD)
1977++ APACHE_SUBST(CFLAGS_FOR_BUILD)
1978+ APACHE_SUBST(LTFLAGS)
1979+ APACHE_SUBST(LDFLAGS)
1980+ APACHE_SUBST(LT_LDFLAGS)
1981+@@ -697,7 +699,7 @@ int main(void)
1982+ {
1983+ return sizeof(void *) < sizeof(long);
1984+ }], [ap_cv_void_ptr_lt_long=no], [ap_cv_void_ptr_lt_long=yes],
1985+- [ap_cv_void_ptr_lt_long=yes])])
1986++ [ap_cv_void_ptr_lt_long="cross compile - not checked"])])
1987+
1988+ if test "$ap_cv_void_ptr_lt_long" = "yes"; then
1989+ AC_MSG_ERROR([Size of "void *" is less than size of "long"])
1990+Index: apache2-2.4.29/configure
1991+===================================================================
1992+--- apache2-2.4.29.orig/configure 2017-11-10 10:56:51.488205250 -0500
1993++++ apache2-2.4.29/configure 2017-11-10 10:56:51.488205250 -0500
1994+@@ -662,6 +662,8 @@ HTTPD_LDFLAGS
1995+ SH_LDFLAGS
1996+ LT_LDFLAGS
1997+ LTFLAGS
1998++CFLAGS_FOR_BUILD
1999++CC_FOR_BUILD
2000+ CXXFLAGS
2001+ CXX
2002+ other_targets
2003+@@ -6071,6 +6073,12 @@ fi
2004+
2005+
2006+
2007++if test "x${build_alias}" != "x${host_alias}"; then
2008++ if test "x${CC_FOR_BUILD}" = "x"; then
2009++ CC_FOR_BUILD=cc
2010++ fi
2011++fi
2012++
2013+ if test "x${cache_file}" = "x/dev/null"; then
2014+ # Likewise, ensure that CC and CPP are passed through to the pcre
2015+ # configure script iff caching is disabled (the autoconf 2.5x default).
2016+@@ -7698,7 +7706,7 @@ if ${ap_cv_void_ptr_lt_long+:} false; th
2017+ $as_echo_n "(cached) " >&6
2018+ else
2019+ if test "$cross_compiling" = yes; then :
2020+- ap_cv_void_ptr_lt_long=yes
2021++ ap_cv_void_ptr_lt_long="cross compile - not checked"
2022+ else
2023+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2024+ /* end confdefs.h. */
2025+@@ -37522,6 +37530,14 @@ $as_echo "$as_me: " >&6;}
2026+
2027+
2028+
2029++ APACHE_VAR_SUBST="$APACHE_VAR_SUBST CC_FOR_BUILD"
2030++
2031++
2032++
2033++ APACHE_VAR_SUBST="$APACHE_VAR_SUBST CFLAGS_FOR_BUILD"
2034++
2035++
2036++
2037+ APACHE_VAR_SUBST="$APACHE_VAR_SUBST LTFLAGS"
2038+
2039+
2040+Index: apache2-2.4.29/configure.in
2041+===================================================================
2042+--- apache2-2.4.29.orig/configure.in 2017-11-10 10:56:51.488205250 -0500
2043++++ apache2-2.4.29/configure.in 2017-11-10 10:56:51.488205250 -0500
2044+@@ -206,6 +206,14 @@ AC_PROG_CPP
2045+ dnl Try to get c99 support for variadic macros
2046+ ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
2047+
2048++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless
2049++dnl we got already CC_FOR_BUILD from environment.
2050++if test "x${build_alias}" != "x${host_alias}"; then
2051++ if test "x${CC_FOR_BUILD}" = "x"; then
2052++ CC_FOR_BUILD=cc
2053++ fi
2054++fi
2055++
2056+ if test "x${cache_file}" = "x/dev/null"; then
2057+ # Likewise, ensure that CC and CPP are passed through to the pcre
2058+ # configure script iff caching is disabled (the autoconf 2.5x default).
2059+Index: apache2-2.4.29/server/Makefile.in
2060+===================================================================
2061+--- apache2-2.4.29.orig/server/Makefile.in 2017-11-10 10:56:51.488205250 -0500
2062++++ apache2-2.4.29/server/Makefile.in 2017-11-10 10:56:51.488205250 -0500
2063+@@ -24,9 +24,14 @@ TARGETS = delete-exports $(LTLIBRARY_NAM
2064+ include $(top_builddir)/build/rules.mk
2065+ include $(top_srcdir)/build/library.mk
2066+
2067++ifdef CC_FOR_BUILD
2068++gen_test_char: gen_test_char.c
2069++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<
2070++else
2071+ gen_test_char_OBJECTS = gen_test_char.lo
2072+ gen_test_char: $(gen_test_char_OBJECTS)
2073+ $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
2074++endif
2075+
2076+ test_char.h: gen_test_char
2077+ ./gen_test_char > test_char.h
2078diff --git a/debian/patches/series b/debian/patches/series
2079index b4e63de..555d3b8 100644
2080--- a/debian/patches/series
2081+++ b/debian/patches/series
2082@@ -9,3 +9,6 @@ reproducible_builds.diff
2083 #suexec-custom.patch
2084
2085 mod_http2_mem_usage_32bit.diff
2086+
2087+# Patches added by Ubuntu
2088+086_svn_cross_compiles
2089diff --git a/debian/rules b/debian/rules
2090index e2d693c..7ca974b 100755
2091--- a/debian/rules
2092+++ b/debian/rules
2093@@ -113,6 +113,8 @@ configure-stamp: prebuild-checks-stamp support/suexec-custom.c
2094 --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config \
2095 --with-pcre=yes \
2096 --enable-pie \
2097+ --disable-md \
2098+ --disable-proxy-uwsgi \
2099 --enable-mpms-shared=all \
2100 --enable-mods-shared="all brotli cgi ident authnz_fcgi imagemap cern_meta proxy_fdpass proxy_http2 bucketeer case_filter case_filter_in" \
2101 --enable-mods-static="unixd logio watchdog version" \
2102@@ -177,7 +179,7 @@ override_dh_installdocs-indep:
2103 dh_installdocs -i
2104
2105 override_dh_installdocs-arch:
2106- dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg -plibapache2-mod-md -plibapache2-mod-proxy-uwsgi
2107+ dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg
2108 dh_installdocs --link-doc=apache2-dev -papache2-ssl-dev
2109 dh_installdocs -a
2110
2111diff --git a/debian/source/include-binaries b/debian/source/include-binaries
2112index b6a30fe..c9128c9 100644
2113--- a/debian/source/include-binaries
2114+++ b/debian/source/include-binaries
2115@@ -16,6 +16,7 @@ debian/icons/odf6odp-20x22.png
2116 debian/icons/odf6otp-20x22.png
2117 debian/icons/odf6oth-20x22.png
2118 debian/icons/openlogo-75.png
2119+debian/icons/ubuntu-logo.png
2120 debian/upstream/signing-key.pgp
2121 debian/perl-framework/t/htdocs/apache/acceptpathinfo/index.shtml
2122 debian/perl-framework/t/htdocs/apache/acceptpathinfo/info.php
2123diff --git a/debian/tests/check-http2 b/debian/tests/check-http2
2124new file mode 100644
2125index 0000000..6bc9125
2126--- /dev/null
2127+++ b/debian/tests/check-http2
2128@@ -0,0 +1,41 @@
2129+#!/bin/sh
2130+set -uxe
2131+
2132+# http2 is rather new, check that it at least generally works
2133+# Author: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2134+
2135+a2enmod http2
2136+a2enmod ssl
2137+a2ensite default-ssl
2138+# Enable globally
2139+echo "Protocols h2c h2 http/1.1" >> /etc/apache2/apache2.conf
2140+service apache2 restart
2141+
2142+# Use curl here. wget doesn't work on Debian, even with --no-check-certificate
2143+# wget on Debian gives me:
2144+# GnuTLS: A TLS warning alert has been received.
2145+# Unable to establish SSL connection.
2146+# Presumably this is due to the self-signed certificate, but I'm not sure how
2147+# to skip the warning with wget. curl will do for now.
2148+echo "Hello, world!" > /var/www/html/hello.txt
2149+
2150+testapache () {
2151+ cmd="${1}"
2152+ result=$(${cmd})
2153+
2154+ if [ "$result" != "Hello, world!" ]; then
2155+ echo "Unexpected result: ${result}" >&2
2156+ exit 1
2157+ else
2158+ echo OK
2159+ fi
2160+}
2161+
2162+# https shall not affect http
2163+testapache "curl -s -k http://localhost/hello.txt"
2164+# https shall not affect https
2165+testapache "curl -s -k https://localhost/hello.txt"
2166+#plain http2
2167+testapache "nghttp --no-verify-peer https://localhost/hello.txt"
2168+#http2 upgrade
2169+testapache "nghttp -u --no-verify-peer http://localhost/hello.txt"
2170diff --git a/debian/tests/control b/debian/tests/control
2171index fb913b5..230f19e 100644
2172--- a/debian/tests/control
2173+++ b/debian/tests/control
2174@@ -23,6 +23,10 @@ Tests: ssl-passphrase
2175 Restrictions: needs-root allow-stderr breaks-testbed
2176 Depends: apache2, curl, expect, ssl-cert
2177
2178+Tests: check-http2
2179+Restrictions: needs-root allow-stderr breaks-testbed
2180+Depends: apache2, curl, ssl-cert, nghttp2-client
2181+
2182 Tests: chroot
2183 Features: no-build-needed
2184 Restrictions: needs-root allow-stderr breaks-testbed
2185diff --git a/docs/manual/style/latex/atbeginend.sty b/docs/manual/style/latex/atbeginend.sty
2186new file mode 100644
2187index 0000000..79b555d
2188--- /dev/null
2189+++ b/docs/manual/style/latex/atbeginend.sty
2190@@ -0,0 +1,80 @@
2191+% atbeginend.sty
2192+%
2193+% Licensed to the Apache Software Foundation (ASF) under one or more
2194+% contributor license agreements. See the NOTICE file distributed with
2195+% this work for additional information regarding copyright ownership.
2196+% The ASF licenses this file to You under the Apache License, Version 2.0
2197+% (the "License"); you may not use this file except in compliance with
2198+% the License. You may obtain a copy of the License at
2199+%
2200+% http://www.apache.org/licenses/LICENSE-2.0
2201+%
2202+% Unless required by applicable law or agreed to in writing, software
2203+% distributed under the License is distributed on an "AS IS" BASIS,
2204+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2205+% See the License for the specific language governing permissions and
2206+% limitations under the License.
2207+
2208+% defines
2209+% \BeforeBegin{environment}{code-to-execute}
2210+% \BeforeEnd {environment}{code-to-execute}
2211+% \AfterBegin {environment}{code-to-execute}
2212+% \AfterEnd {environment}{code-to-execute}
2213+%
2214+% Save \begin and \end to \BeginEnvironment and \EndEnvironment
2215+\let\BeginEnvironment=\begin
2216+\let\EndEnvironment=\end
2217+
2218+\def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax}
2219+
2220+% Null command needed to for \nothing{something}=.nothing.
2221+\def\NullCom#1{}
2222+
2223+\def\begin#1{%
2224+%
2225+% if defined \BeforeBeg for this environment, execute it
2226+\IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi%
2227+%
2228+%
2229+%
2230+\IfUnDef{AfterBeg#1}% This is done to skip the command for environments
2231+ % which can take arguments, like multicols; YOU MUST NOT
2232+ % USE \AfterBegin{...}{...} for such environments!
2233+ \let\SaveBegEng=\BeginEnvironment%
2234+\else%
2235+ % Start this environment
2236+ \BeginEnvironment{#1}%
2237+ % and execute code after \begin{environment}
2238+ \csname AfterBeg#1\endcsname%
2239+ %
2240+ \let\SaveBegEng=\NullCom%
2241+\fi%
2242+\SaveBegEng{#1}%
2243+}
2244+
2245+
2246+\def\end#1{%
2247+%
2248+% execute code before \end{environment}
2249+\IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi%
2250+%
2251+% close this environment
2252+\EndEnvironment{#1}%
2253+%
2254+% and execute code after \begin{environment}
2255+\IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi%
2256+}
2257+
2258+
2259+%% Now, define commands
2260+% \BeforeBegin{environment}{code-to-execute}
2261+% \BeforeEnd {environment}{code-to-execute}
2262+% \AfterBegin {environment}{code-to-execute}
2263+% \AfterEnd {environment}{code-to-execute}
2264+
2265+\def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname
2266+{#2}}
2267+\def\BeforeEnd #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname
2268+{#2}}
2269+\def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}}
2270+\def\AfterEnd #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}}
2271diff --git a/docs/manual/style/manualpage.dtd b/docs/manual/style/manualpage.dtd
2272new file mode 100644
2273index 0000000..e9c22a0
2274--- /dev/null
2275+++ b/docs/manual/style/manualpage.dtd
2276@@ -0,0 +1,29 @@
2277+<?xml version='1.0' encoding='UTF-8' ?>
2278+
2279+<!--
2280+ Licensed to the Apache Software Foundation (ASF) under one or more
2281+ contributor license agreements. See the NOTICE file distributed with
2282+ this work for additional information regarding copyright ownership.
2283+ The ASF licenses this file to You under the Apache License, Version 2.0
2284+ (the "License"); you may not use this file except in compliance with
2285+ the License. You may obtain a copy of the License at
2286+
2287+ http://www.apache.org/licenses/LICENSE-2.0
2288+
2289+ Unless required by applicable law or agreed to in writing, software
2290+ distributed under the License is distributed on an "AS IS" BASIS,
2291+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2292+ See the License for the specific language governing permissions and
2293+ limitations under the License.
2294+-->
2295+
2296+<!ENTITY % common SYSTEM "common.dtd">
2297+%common;
2298+
2299+<!-- <manualpage> is the root element -->
2300+<!ELEMENT manualpage (parentdocument?, title, summary?,
2301+seealso*, section*)>
2302+
2303+<!ATTLIST manualpage metafile CDATA #REQUIRED
2304+ upgrade CDATA #IMPLIED
2305+>
2306diff --git a/docs/manual/style/modulesynopsis.dtd b/docs/manual/style/modulesynopsis.dtd
2307new file mode 100644
2308index 0000000..aa3d6ee
2309--- /dev/null
2310+++ b/docs/manual/style/modulesynopsis.dtd
2311@@ -0,0 +1,92 @@
2312+<?xml version='1.0' encoding='UTF-8' ?>
2313+
2314+<!--
2315+ Licensed to the Apache Software Foundation (ASF) under one or more
2316+ contributor license agreements. See the NOTICE file distributed with
2317+ this work for additional information regarding copyright ownership.
2318+ The ASF licenses this file to You under the Apache License, Version 2.0
2319+ (the "License"); you may not use this file except in compliance with
2320+ the License. You may obtain a copy of the License at
2321+
2322+ http://www.apache.org/licenses/LICENSE-2.0
2323+
2324+ Unless required by applicable law or agreed to in writing, software
2325+ distributed under the License is distributed on an "AS IS" BASIS,
2326+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2327+ See the License for the specific language governing permissions and
2328+ limitations under the License.
2329+-->
2330+
2331+<!ENTITY % sitemap SYSTEM "sitemap.dtd">
2332+%sitemap;
2333+
2334+<!ELEMENT modulesynopsis (name , description, status, hint?, sourcefile?,
2335+identifier? , compatibility? , summary? , seealso* , section*,
2336+directivesynopsis*)>
2337+
2338+<!ATTLIST modulesynopsis metafile CDATA #REQUIRED
2339+ upgrade CDATA #IMPLIED>
2340+
2341+<!ELEMENT directivesynopsis (name , description? , syntax? , default?
2342+, contextlist? , override? , modulelist?, status?, compatibility? ,
2343+usage?, seealso*)>
2344+
2345+<!ELEMENT name (#PCDATA)>
2346+
2347+<!ELEMENT status (#PCDATA)>
2348+
2349+<!ELEMENT hint %Inline;>
2350+
2351+<!ELEMENT identifier (#PCDATA)>
2352+
2353+<!ELEMENT sourcefile (#PCDATA)>
2354+
2355+<!ELEMENT compatibility %Inline;>
2356+
2357+<!ELEMENT description %Inline;>
2358+
2359+<!--
2360+ idtype is appended to the directive name when generating links to allow
2361+ a directive of type section to share the name with another directive.
2362+ The attribute type could have been (re)used instead but it would have broken
2363+ pre-existing links.
2364+-->
2365+<!ATTLIST directivesynopsis type CDATA #IMPLIED
2366+ idtype CDATA #IMPLIED
2367+ location CDATA #IMPLIED >
2368+
2369+<!ELEMENT syntax %Inline;>
2370+
2371+<!ELEMENT default (#PCDATA | directive | br)*>
2372+
2373+<!ELEMENT contextlist (context+)+>
2374+
2375+<!ELEMENT context (#PCDATA)>
2376+
2377+<!ELEMENT override (#PCDATA)>
2378+
2379+<!ELEMENT usage %Block;>
2380+
2381+<!-- Used in index.xml -->
2382+<!ELEMENT moduleindex (title, summary, seealso*)>
2383+
2384+<!ATTLIST moduleindex metafile CDATA #REQUIRED>
2385+
2386+<!-- Used in directive.xml -->
2387+<!ELEMENT directiveindex (title | summary)+>
2388+
2389+<!ATTLIST directiveindex metafile CDATA #REQUIRED>
2390+
2391+<!-- Used in quickreference.xml -->
2392+<!ELEMENT quickreference (title | summary | legend)+>
2393+<!ATTLIST quickreference metafile CDATA #REQUIRED>
2394+
2395+<!ELEMENT legend (table, table)>
2396+
2397+<!-- Used in overrides.xml -->
2398+<!ELEMENT overrideindex (title | summary | overridesummary)+>
2399+<!ATTLIST overrideindex metafile CDATA #REQUIRED>
2400+
2401+<!ELEMENT overridesummary %Block;>
2402+<!ATTLIST overridesummary class CDATA #IMPLIED
2403+ fallback CDATA #IMPLIED>
2404diff --git a/docs/manual/style/scripts/MINIFY b/docs/manual/style/scripts/MINIFY
2405new file mode 100644
2406index 0000000..2c1efc3
2407--- /dev/null
2408+++ b/docs/manual/style/scripts/MINIFY
2409@@ -0,0 +1,5 @@
2410+#!/bin/sh
2411+
2412+(echo '// see prettify.js for copyright, license and expanded version'; python -mrjsmin <prettify.js) >prettify.min.js
2413+
2414+# needs python and rjsmin installed
2415diff --git a/docs/manual/style/scripts/prettify.js b/docs/manual/style/scripts/prettify.js
2416new file mode 100644
2417index 0000000..2df198d
2418--- /dev/null
2419+++ b/docs/manual/style/scripts/prettify.js
2420@@ -0,0 +1,1622 @@
2421+// Copyright (C) 2006 Google Inc.
2422+//
2423+// Licensed under the Apache License, Version 2.0 (the "License");
2424+// you may not use this file except in compliance with the License.
2425+// You may obtain a copy of the License at
2426+//
2427+// http://www.apache.org/licenses/LICENSE-2.0
2428+//
2429+// Unless required by applicable law or agreed to in writing, software
2430+// distributed under the License is distributed on an "AS IS" BASIS,
2431+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2432+// See the License for the specific language governing permissions and
2433+// limitations under the License.
2434+
2435+
2436+/**
2437+ * @fileoverview
2438+ * some functions for browser-side pretty printing of code contained in html.
2439+ *
2440+ * <p>
2441+ * For a fairly comprehensive set of languages see the
2442+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
2443+ * file that came with this source. At a minimum, the lexer should work on a
2444+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
2445+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
2446+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
2447+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
2448+ * <p>
2449+ * Usage: <ol>
2450+ * <li> include this source file in an html page via
2451+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
2452+ * <li> define style rules. See the example page for examples.
2453+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
2454+ * {@code class=prettyprint.}
2455+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
2456+ * printer needs to do more substantial DOM manipulations to support that, so
2457+ * some css styles may not be preserved.
2458+ * </ol>
2459+ * That's it. I wanted to keep the API as simple as possible, so there's no
2460+ * need to specify which language the code is in, but if you wish, you can add
2461+ * another class to the {@code <pre>} or {@code <code>} element to specify the
2462+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
2463+ * starts with "lang-" followed by a file extension, specifies the file type.
2464+ * See the "lang-*.js" files in this directory for code that implements
2465+ * per-language file handlers.
2466+ * <p>
2467+ * Change log:<br>
2468+ * cbeust, 2006/08/22
2469+ * <blockquote>
2470+ * Java annotations (start with "@") are now captured as literals ("lit")
2471+ * </blockquote>
2472+ * @requires console
2473+ */
2474+
2475+// JSLint declarations
2476+/*global console, document, navigator, setTimeout, window, define */
2477+
2478+/**
2479+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
2480+ * UI events.
2481+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
2482+ */
2483+window['PR_SHOULD_USE_CONTINUATION'] = true;
2484+
2485+/**
2486+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
2487+ * {@code class=prettyprint} and prettify them.
2488+ *
2489+ * @param {Function?} opt_whenDone if specified, called when the last entry
2490+ * has been finished.
2491+ */
2492+var prettyPrintOne;
2493+/**
2494+ * Pretty print a chunk of code.
2495+ *
2496+ * @param {string} sourceCodeHtml code as html
2497+ * @return {string} code as html, but prettier
2498+ */
2499+var prettyPrint;
2500+
2501+
2502+(function () {
2503+ var win = window;
2504+ // Keyword lists for various languages.
2505+ // We use things that coerce to strings to make them compact when minified
2506+ // and to defeat aggressive optimizers that fold large string constants.
2507+ var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
2508+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
2509+ "double,enum,extern,float,goto,int,long,register,short,signed,sizeof,module," +
2510+ "static,struct,switch,typedef,union,unsigned,void,volatile"];
2511+ var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
2512+ "new,operator,private,protected,public,this,throw,true,try,typeof"];
2513+ var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
2514+ "concept,concept_map,const_cast,constexpr,decltype," +
2515+ "dynamic_cast,explicit,export,friend,inline,late_check," +
2516+ "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
2517+ "template,typeid,typename,using,virtual,where,request_req"];
2518+ var JAVA_KEYWORDS = [COMMON_KEYWORDS,
2519+ "abstract,boolean,byte,extends,final,finally,implements,import," +
2520+ "instanceof,null,native,package,strictfp,super,synchronized,throws," +
2521+ "transient"];
2522+ var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
2523+ "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
2524+ "fixed,foreach,from,group,implicit,in,interface,internal,into,is,let," +
2525+ "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
2526+ "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
2527+ "var,virtual,where"];
2528+ var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
2529+ "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
2530+ "throw,true,try,unless,until,when,while,yes";
2531+ var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
2532+ "debugger,eval,export,function,get,null,set,undefined,var,with," +
2533+ "Infinity,NaN"];
2534+ var PERL_KEYWORDS = "caller,delete,die,do,dump,else,elsif,eval,exit,foreach,for," +
2535+ "goto,if,import,last,local,my,next,no,our,print,printf,package,redo,require," +
2536+ "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
2537+ var PHP_KEYWORDS = "abstract,and,array,as,break,case,catch,cfunction,class," +
2538+ "clone,const,continue,declare,default,do,else,elseif,enddeclare,endfor," +
2539+ "endforeach,endif,endswitch,endwhile,extends,final,for,foreach,function," +
2540+ "global,goto,if,implements,interface,instanceof,namespace,new,old_function," +
2541+ "or,private,protected,public,static,switch,throw,try,use,var,while,xor," +
2542+ "die,echo,empty,exit,eval,include,include_once,isset,list,require," +
2543+ "require_once,return,print,unset";
2544+ var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
2545+ "elif,except,exec,finally,from,global,import,in,is,lambda," +
2546+ "nonlocal,not,or,pass,print,raise,try,with,yield," +
2547+ "False,True,None"];
2548+ var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
2549+ "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
2550+ "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
2551+ "BEGIN,END"];
2552+ var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
2553+ "function,in,local,set,then,until,echo"];
2554+ var CONFIG_ENVS = ["User-Agent,HTTP_USER_AGENT,HTTP_REFERER,HTTP_COOKIE,HTTP_FORWARDED,HTTP_HOST,HTTP_PROXY_CONNECTION,HTTP_ACCEPT,REMOTE_ADDR,REMOTE_HOST,REMOTE_PORT,REMOTE_USER,REMOTE_IDENT,REQUEST_METHOD,SCRIPT_FILENAME,PATH_INFO,QUERY_STRING,AUTH_TYPE,DOCUMENT_ROOT,SERVER_ADMIN,SERVER_NAME,SERVER_ADDR,SERVER_PORT,SERVER_PROTOCOL,SERVER_SOFTWARE,TIME_YEAR,TIME_MON,TIME_DAY,TIME_HOUR,TIME_MIN,TIME_SEC,TIME_WDAY,TIME,API_VERSION,THE_REQUEST,REQUEST_URI,REQUEST_FILENAME,IS_SUBREQ,HTTPS,REQUEST_SCHEME"];
2555+ var CONFIG_KEYWORDS = ["<AuthnProviderAlias>,<AuthzProviderAlias>,<Directory>,<DirectoryMatch>,<Else>,<ElseIf>,<Files>,<FilesMatch>,<If>,<IfDefine>,<IfModule>,<IfVersion>,<Limit>,<LimitExcept>,<Location>,<LocationMatch>,<MDomainSet>,<Macro>,<Proxy>,<ProxyMatch>,<RequireAll>,<RequireAny>,<RequireNone>,<VirtualHost>,AcceptFilter,AcceptPathInfo,AccessFileName,Action,AddAlt,AddAltByEncoding,AddAltByType,AddCharset,AddDefaultCharset,AddDescription,AddEncoding,AddHandler,AddIcon,AddIconByEncoding,AddIconByType,AddInputFilter,AddLanguage,AddModuleInfo,AddOutputFilter,AddOutputFilterByType,AddType,Alias,AliasMatch,Allow,AllowCONNECT,AllowEncodedSlashes,AllowMethods,AllowOverride,AllowOverrideList,Anonymous,Anonymous_LogEmail,Anonymous_MustGiveEmail,Anonymous_NoUserID,Anonymous_VerifyEmail,AsyncRequestWorkerFactor,AuthBasicAuthoritative,AuthBasicFake,AuthBasicProvider,AuthBasicUseDigestAlgorithm,AuthDBDUserPWQuery,AuthDBDUserRealmQuery,AuthDBMGroupFile,AuthDBMType,AuthDBMUserFile,AuthDigestAlgorithm,AuthDigestDomain,AuthDigestNonceLifetime,AuthDigestProvider,AuthDigestQop,AuthDigestShmemSize,AuthFormAuthoritative,AuthFormBody,AuthFormDisableNoStore,AuthFormFakeBasicAuth,AuthFormLocation,AuthFormLoginRequiredLocation,AuthFormLoginSuccessLocation,AuthFormLogoutLocation,AuthFormMethod,AuthFormMimetype,AuthFormPassword,AuthFormProvider,AuthFormSitePassphrase,AuthFormSize,AuthFormUsername,AuthGroupFile,AuthLDAPAuthorizePrefix,AuthLDAPBindAuthoritative,AuthLDAPBindDN,AuthLDAPBindPassword,AuthLDAPCharsetConfig,AuthLDAPCompareAsUser,AuthLDAPCompareDNOnServer,AuthLDAPDereferenceAliases,AuthLDAPGroupAttribute,AuthLDAPGroupAttributeIsDN,AuthLDAPInitialBindAsUser,AuthLDAPInitialBindPattern,AuthLDAPMaxSubGroupDepth,AuthLDAPRemoteUserAttribute,AuthLDAPRemoteUserIsDN,AuthLDAPSearchAsUser,AuthLDAPSubGroupAttribute,AuthLDAPSubGroupClass,AuthLDAPUrl,AuthMerging,AuthName,AuthType,AuthUserFile,AuthnCacheContext,AuthnCacheEnable,AuthnCacheProvideFor,AuthnCacheSOCache,AuthnCacheTimeout,AuthnzFcgiCheckAuthnProvider,AuthnzFcgiDefineProvider,AuthzDBDLoginToReferer,AuthzDBDQuery,AuthzDBDRedirectQuery,AuthzDBMType,AuthzSendForbiddenOnFailure,BalancerGrowth,BalancerInherit,BalancerMember,BalancerPersist,BrotliAlterETag,BrotliCompressionMaxInputBlock,BrotliCompressionQuality,BrotliCompressionWindow,BrotliFilterNote,BrowserMatch,BrowserMatchNoCase,BufferSize,BufferedLogs,CGIDScriptTimeout,CGIMapExtension,CGIPassAuth,CGIVar,CacheDefaultExpire,CacheDetailHeader,CacheDirLength,CacheDirLevels,CacheDisable,CacheEnable,CacheFile,CacheHeader,CacheIgnoreCacheControl,CacheIgnoreHeaders,CacheIgnoreNoLastMod,CacheIgnoreQueryString,CacheIgnoreURLSessionIdentifiers,CacheKeyBaseURL,CacheLastModifiedFactor,CacheLock,CacheLockMaxAge,CacheLockPath,CacheMaxExpire,CacheMaxFileSize,CacheMinExpire,CacheMinFileSize,CacheNegotiatedDocs,CacheQuickHandler,CacheReadSize,CacheReadTime,CacheRoot,CacheSocache,CacheSocacheMaxSize,CacheSocacheMaxTime,CacheSocacheMinTime,CacheSocacheReadSize,CacheSocacheReadTime,CacheStaleOnError,CacheStoreExpired,CacheStoreNoStore,CacheStorePrivate,CharsetDefault,CharsetOptions,CharsetSourceEnc,CheckCaseOnly,CheckSpelling,ChrootDir,ContentDigest,CookieDomain,CookieExpires,CookieName,CookieStyle,CookieTracking,CoreDumpDirectory,CustomLog,DBDExptime,DBDInitSQL,DBDKeep,DBDMax,DBDMin,DBDParams,DBDPersist,DBDPrepareSQL,DBDriver,DTracePrivileges,Dav,DavDepthInfinity,DavGenericLockDB,DavLockDB,DavMinTimeout,DefaultIcon,DefaultLanguage,DefaultRuntimeDir,DefaultType,Define,DeflateBufferSize,DeflateCompressionLevel,DeflateFilterNote,DeflateInflateLimitRequestBody,DeflateInflateRatioBurst,DeflateInflateRatioLimit,DeflateMemLevel,DeflateWindowSize,Deny,DirectoryCheckHandler,DirectoryIndex,DirectoryIndexRedirect,DirectorySlash,DocumentRoot,DumpIOInput,DumpIOOutput,EnableExceptionHook,EnableMMAP,EnableSendfile,Error,ErrorDocument,ErrorLog,ErrorLogFormat,Example,ExpiresActive,ExpiresByType,ExpiresDefault,ExtFilterDefine,ExtFilterOptions,ExtendedStatus,FallbackResource,FileETag,FilterChain,FilterDeclare,FilterProtocol,FilterProvider,FilterTrace,ForceLanguagePriority,ForceType,ForensicLog,GlobalLog,GprofDir,GracefulShutdownTimeout,Group,H2CopyFiles,H2Direct,H2EarlyHints,H2MaxSessionStreams,H2MaxWorkerIdleSeconds,H2MaxWorkers,H2MinWorkers,H2ModernTLSOnly,H2Push,H2PushDiarySize,H2PushPriority,H2PushResource,H2SerializeHeaders,H2StreamMaxMemSize,H2TLSCoolDownSecs,H2TLSWarmUpSize,H2Upgrade,H2WindowSize,Header,HeaderName,HeartbeatAddress,HeartbeatListen,HeartbeatMaxServers,HeartbeatStorage,HeartbeatStorage,HostnameLookups,HttpProtocolOptions,ISAPIAppendLogToErrors,ISAPIAppendLogToQuery,ISAPICacheFile,ISAPIFakeAsync,ISAPILogNotSupported,ISAPIReadAheadBuffer,IdentityCheck,IdentityCheckTimeout,ImapBase,ImapDefault,ImapMenu,Include,IncludeOptional,IndexHeadInsert,IndexIgnore,IndexIgnoreReset,IndexOptions,IndexOrderDefault,IndexStyleSheet,InputSed,KeepAlive,KeepAliveTimeout,KeptBodySize,LDAPCacheEntries,LDAPCacheTTL,LDAPConnectionPoolTTL,LDAPConnectionTimeout,LDAPLibraryDebug,LDAPOpCacheEntries,LDAPOpCacheTTL,LDAPReferralHopLimit,LDAPReferrals,LDAPRetries,LDAPRetryDelay,LDAPSharedCacheFile,LDAPSharedCacheSize,LDAPTimeout,LDAPTrustedClientCert,LDAPTrustedGlobalCert,LDAPTrustedMode,LDAPVerifyServerCert,LanguagePriority,LimitInternalRecursion,LimitRequestBody,LimitRequestFieldSize,LimitRequestFields,LimitRequestLine,LimitXMLRequestBody,Listen,ListenBackLog,ListenCoresBucketsRatio,LoadFile,LoadModule,LogFormat,LogIOTrackTTFB,LogLevel,LogMessage,LuaAuthzProvider,LuaCodeCache,LuaHookAccessChecker,LuaHookAuthChecker,LuaHookCheckUserID,LuaHookFixups,LuaHookInsertFilter,LuaHookLog,LuaHookMapToStorage,LuaHookTranslateName,LuaHookTypeChecker,LuaInherit,LuaInputFilter,LuaMapHandler,LuaOutputFilter,LuaPackageCPath,LuaPackagePath,LuaQuickHandler,LuaRoot,LuaScope,MDBaseServer,MDCAChallenges,MDCertificateAgreement,MDCertificateAuthority,MDCertificateProtocol,MDDriveMode,MDHttpProxy,MDMember,MDMembers,MDMustStaple,MDNotifyCmd,MDPortMap,MDPrivateKeys,MDRenewWindow,MDRequireHttps,MDStoreDir,MDomain,MMapFile,MaxConnectionsPerChild,MaxKeepAliveRequests,MaxMemFree,MaxRangeOverlaps,MaxRangeReversals,MaxRanges,MaxRequestWorkers,MaxSpareServers,MaxSpareThreads,MaxThreads,MemcacheConnTTL,MergeTrailers,MetaDir,MetaFiles,MetaSuffix,MimeMagicFile,MinSpareServers,MinSpareThreads,ModMimeUsePathInfo,ModemStandard,MultiviewsMatch,Mutex,NWSSLTrustedCerts,NWSSLUpgradeable,NameVirtualHost,NoProxy,Options,Order,OutputSed,PassEnv,PidFile,PrivilegesMode,Protocol,ProtocolEcho,Protocols,ProtocolsHonorOrder,ProxyAddHeaders,ProxyBadHeader,ProxyBlock,ProxyDomain,ProxyErrorOverride,ProxyExpressDBMFile,ProxyExpressDBMType,ProxyExpressEnable,ProxyFCGIBackendType,ProxyFCGISetEnvIf,ProxyFtpDirCharset,ProxyFtpEscapeWildcards,ProxyFtpListOnWildcard,ProxyHCExpr,ProxyHCTPsize,ProxyHCTemplate,ProxyHTMLBufSize,ProxyHTMLCharsetOut,ProxyHTMLDocType,ProxyHTMLEnable,ProxyHTMLEvents,ProxyHTMLExtended,ProxyHTMLFixups,ProxyHTMLInterp,ProxyHTMLLinks,ProxyHTMLMeta,ProxyHTMLStripComments,ProxyHTMLURLMap,ProxyIOBufferSize,ProxyMaxForwards,ProxyPass,ProxyPassInherit,ProxyPassInterpolateEnv,ProxyPassMatch,ProxyPassReverse,ProxyPassReverseCookieDomain,ProxyPassReverseCookiePath,ProxyPreserveHost,ProxyReceiveBufferSize,ProxyRemote,ProxyRemoteMatch,ProxyRequests,ProxySCGIInternalRedirect,ProxySCGISendfile,ProxySet,ProxySourceAddress,ProxyStatus,ProxyTimeout,ProxyVia,QualifyRedirectURL,RLimitCPU,RLimitMEM,RLimitNPROC,ReadmeName,ReceiveBufferSize,Redirect,RedirectMatch,RedirectPermanent,RedirectTemp,ReflectorHeader,RegisterHttpMethod,RemoteIPHeader,RemoteIPInternalProxy,RemoteIPInternalProxyList,RemoteIPProxiesHeader,RemoteIPTrustedProxy,RemoteIPTrustedProxyList,RemoveCharset,RemoveEncoding,RemoveHandler,RemoveInputFilter,RemoveLanguage,RemoveOutputFilter,RemoveType,RequestHeader,RequestReadTimeout,Require,RewriteBase,RewriteCond,RewriteEngine,RewriteMap,RewriteOptions,RewriteRule,SSIETag,SSIEndTag,SSIErrorMsg,SSILastModified,SSILegacyExprParser,SSIStartTag,SSITimeFormat,SSIUndefinedEcho,SSLCACertificateFile,SSLCACertificatePath,SSLCADNRequestFile,SSLCADNRequestPath,SSLCARevocationCheck,SSLCARevocationFile,SSLCARevocationPath,SSLCertificateChainFile,SSLCertificateFile,SSLCertificateKeyFile,SSLCipherSuite,SSLCompression,SSLCryptoDevice,SSLEngine,SSLFIPS,SSLHonorCipherOrder,SSLInsecureRenegotiation,SSLOCSPDefaultResponder,SSLOCSPEnable,SSLOCSPNoverify,SSLOCSPOverrideResponder,SSLOCSPProxyURL,SSLOCSPResponderCertificateFile,SSLOCSPResponderTimeout,SSLOCSPResponseMaxAge,SSLOCSPResponseTimeSkew,SSLOCSPUseRequestNonce,SSLOpenSSLConfCmd,SSLOptions,SSLPassPhraseDialog,SSLProtocol,SSLProxyCACertificateFile,SSLProxyCACertificatePath,SSLProxyCARevocationCheck,SSLProxyCARevocationFile,SSLProxyCARevocationPath,SSLProxyCheckPeerCN,SSLProxyCheckPeerExpire,SSLProxyCheckPeerName,SSLProxyCipherSuite,SSLProxyEngine,SSLProxyMachineCertificateChainFile,SSLProxyMachineCertificateFile,SSLProxyMachineCertificatePath,SSLProxyProtocol,SSLProxyVerify,SSLProxyVerifyDepth,SSLRandomSeed,SSLRenegBufferSize,SSLRequire,SSLRequireSSL,SSLSRPUnknownUserSeed,SSLSRPVerifierFile,SSLSessionCache,SSLSessionCacheTimeout,SSLSessionTicketKeyFile,SSLSessionTickets,SSLStaplingCache,SSLStaplingErrorCacheTimeout,SSLStaplingFakeTryLater,SSLStaplingForceURL,SSLStaplingResponderTimeout,SSLStaplingResponseMaxAge,SSLStaplingResponseTimeSkew,SSLStaplingReturnResponderErrors,SSLStaplingStandardCacheTimeout,SSLStrictSNIVHostCheck,SSLUseStapling,SSLUserName,SSLVerifyClient,SSLVerifyDepth,Satisfy,ScoreBoardFile,Script,ScriptAlias,ScriptAliasMatch,ScriptInterpreterSource,ScriptLog,ScriptLogBuffer,ScriptLogLength,ScriptSock,SecureListen,SeeRequestTail,SendBufferSize,ServerAdmin,ServerAlias,ServerLimit,ServerName,ServerPath,ServerRoot,ServerSignature,ServerTokens,Session,SessionCookieName,SessionCookieName2,SessionCookieRemove,SessionCryptoCipher,SessionCryptoDriver,SessionCryptoPassphrase,SessionCryptoPassphraseFile,SessionDBDCookieName,SessionDBDCookieName2,SessionDBDCookieRemove,SessionDBDDeleteLabel,SessionDBDInsertLabel,SessionDBDPerUser,SessionDBDSelectLabel,SessionDBDUpdateLabel,SessionEnv,SessionExclude,SessionHeader,SessionInclude,SessionMaxAge,SetEnv,SetEnvIf,SetEnvIfExpr,SetEnvIfNoCase,SetHandler,SetInputFilter,SetOutputFilter,StartServers,StartThreads,Substitute,SubstituteInheritBefore,SubstituteMaxLineLength,Suexec,SuexecUserGroup,ThreadLimit,ThreadStackSize,ThreadsPerChild,TimeOut,TraceEnable,TransferLog,TypesConfig,UnDefine,UndefMacro,UnsetEnv,Use,UseCanonicalName,UseCanonicalPhysicalPort,User,UserDir,VHostCGIMode,VHostCGIPrivs,VHostGroup,VHostPrivs,VHostSecure,VHostUser,VirtualDocumentRoot,VirtualDocumentRootIP,VirtualScriptAlias,VirtualScriptAliasIP,WatchdogInterval,XBitHack,xml2EncAlias,xml2EncDefault,xml2StartParse"]
2556+ var CONFIG_OPTIONS = /^[\\+\\-]?(AuthConfig|IncludesNOEXEC|ExecCGI|FollowSymLinks|MultiViews|Includes|Indexes|SymLinksIfOwnerMatch)\b/i;
2557+ var ALL_KEYWORDS = [
2558+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
2559+ PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS, CONFIG_KEYWORDS, PHP_KEYWORDS];
2560+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float|char|void|const|static|struct)\d*(_t)?\b)|[a-z_]+_rec|cmd_parms\b/;
2561+
2562+ // token style names. correspond to css classes
2563+ /**
2564+ * token style for a string literal
2565+ * @const
2566+ */
2567+ var PR_STRING = 'str';
2568+ /**
2569+ * token style for a keyword
2570+ * @const
2571+ */
2572+ var PR_KEYWORD = 'kwd';
2573+ /**
2574+ * token style for a comment
2575+ * @const
2576+ */
2577+ var PR_COMMENT = 'com';
2578+ /**
2579+ * token style for a type
2580+ * @const
2581+ */
2582+ var PR_TYPE = 'typ';
2583+ /**
2584+ * token style for a literal value. e.g. 1, null, true.
2585+ * @const
2586+ */
2587+ var PR_LITERAL = 'lit';
2588+ /**
2589+ * token style for a punctuation string.
2590+ * @const
2591+ */
2592+ var PR_PUNCTUATION = 'pun';
2593+ /**
2594+ * token style for plain text.
2595+ * @const
2596+ */
2597+ var PR_PLAIN = 'pln';
2598+
2599+ /**
2600+ * token style for an sgml tag.
2601+ * @const
2602+ */
2603+ var PR_TAG = 'tag';
2604+ /**
2605+ * token style for a markup declaration such as a DOCTYPE.
2606+ * @const
2607+ */
2608+ var PR_DECLARATION = 'dec';
2609+ /**
2610+ * token style for embedded source.
2611+ * @const
2612+ */
2613+ var PR_SOURCE = 'src';
2614+ /**
2615+ * token style for an sgml attribute name.
2616+ * @const
2617+ */
2618+ var PR_ATTRIB_NAME = 'atn';
2619+ /**
2620+ * token style for an sgml attribute value.
2621+ * @const
2622+ */
2623+ var PR_ATTRIB_VALUE = 'atv';
2624+
2625+ /**
2626+ * A class that indicates a section of markup that is not code, e.g. to allow
2627+ * embedding of line numbers within code listings.
2628+ * @const
2629+ */
2630+ var PR_NOCODE = 'nocode';
2631+
2632+
2633+
2634+/**
2635+ * A set of tokens that can precede a regular expression literal in
2636+ * javascript
2637+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
2638+ * has the full list, but I've removed ones that might be problematic when
2639+ * seen in languages that don't support regular expression literals.
2640+ *
2641+ * <p>Specifically, I've removed any keywords that can't precede a regexp
2642+ * literal in a syntactically legal javascript program, and I've removed the
2643+ * "in" keyword since it's not a keyword in many languages, and might be used
2644+ * as a count of inches.
2645+ *
2646+ * <p>The link above does not accurately describe EcmaScript rules since
2647+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
2648+ * very well in practice.
2649+ *
2650+ * @private
2651+ * @const
2652+ */
2653+var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
2654+
2655+// CAVEAT: this does not properly handle the case where a regular
2656+// expression immediately follows another since a regular expression may
2657+// have flags for case-sensitivity and the like. Having regexp tokens
2658+// adjacent is not valid in any language I'm aware of, so I'm punting.
2659+// TODO: maybe style special characters inside a regexp as punctuation.
2660+
2661+
2662+ /**
2663+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
2664+ * matches the union of the sets of strings matched by the input RegExp.
2665+ * Since it matches globally, if the input strings have a start-of-input
2666+ * anchor (/^.../), it is ignored for the purposes of unioning.
2667+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
2668+ * @return {RegExp} a global regex.
2669+ */
2670+ function combinePrefixPatterns(regexs) {
2671+ var capturedGroupIndex = 0;
2672+
2673+ var needToFoldCase = false;
2674+ var ignoreCase = false;
2675+ for (var i = 0, n = regexs.length; i < n; ++i) {
2676+ var regex = regexs[i];
2677+ if (regex.ignoreCase) {
2678+ ignoreCase = true;
2679+ } else if (/[a-z]/i.test(regex.source.replace(
2680+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
2681+ needToFoldCase = true;
2682+ ignoreCase = false;
2683+ break;
2684+ }
2685+ }
2686+
2687+ var escapeCharToCodeUnit = {
2688+ 'b': 8,
2689+ 't': 9,
2690+ 'n': 0xa,
2691+ 'v': 0xb,
2692+ 'f': 0xc,
2693+ 'r': 0xd
2694+ };
2695+
2696+ function decodeEscape(charsetPart) {
2697+ var cc0 = charsetPart.charCodeAt(0);
2698+ if (cc0 !== 92 /* \\ */) {
2699+ return cc0;
2700+ }
2701+ var c1 = charsetPart.charAt(1);
2702+ cc0 = escapeCharToCodeUnit[c1];
2703+ if (cc0) {
2704+ return cc0;
2705+ } else if ('0' <= c1 && c1 <= '7') {
2706+ return parseInt(charsetPart.substring(1), 8);
2707+ } else if (c1 === 'u' || c1 === 'x') {
2708+ return parseInt(charsetPart.substring(2), 16);
2709+ } else {
2710+ return charsetPart.charCodeAt(1);
2711+ }
2712+ }
2713+
2714+ function encodeEscape(charCode) {
2715+ if (charCode < 0x20) {
2716+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
2717+ }
2718+ var ch = String.fromCharCode(charCode);
2719+ return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
2720+ ? "\\" + ch : ch;
2721+ }
2722+
2723+ function caseFoldCharset(charSet) {
2724+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
2725+ new RegExp(
2726+ '\\\\u[0-9A-Fa-f]{4}'
2727+ + '|\\\\x[0-9A-Fa-f]{2}'
2728+ + '|\\\\[0-3][0-7]{0,2}'
2729+ + '|\\\\[0-7]{1,2}'
2730+ + '|\\\\[\\s\\S]'
2731+ + '|-'
2732+ + '|[^-\\\\]',
2733+ 'g'));
2734+ var ranges = [];
2735+ var inverse = charsetParts[0] === '^';
2736+
2737+ var out = ['['];
2738+ if (inverse) { out.push('^'); }
2739+
2740+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
2741+ var p = charsetParts[i];
2742+ if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
2743+ out.push(p);
2744+ } else {
2745+ var start = decodeEscape(p);
2746+ var end;
2747+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
2748+ end = decodeEscape(charsetParts[i + 2]);
2749+ i += 2;
2750+ } else {
2751+ end = start;
2752+ }
2753+ ranges.push([start, end]);
2754+ // If the range might intersect letters, then expand it.
2755+ // This case handling is too simplistic.
2756+ // It does not deal with non-latin case folding.
2757+ // It works for latin source code identifiers though.
2758+ if (!(end < 65 || start > 122)) {
2759+ if (!(end < 65 || start > 90)) {
2760+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
2761+ }
2762+ if (!(end < 97 || start > 122)) {
2763+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
2764+ }
2765+ }
2766+ }
2767+ }
2768+
2769+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
2770+ // -> [[1, 12], [14, 14], [16, 17]]
2771+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
2772+ var consolidatedRanges = [];
2773+ var lastRange = [];
2774+ for (var i = 0; i < ranges.length; ++i) {
2775+ var range = ranges[i];
2776+ if (range[0] <= lastRange[1] + 1) {
2777+ lastRange[1] = Math.max(lastRange[1], range[1]);
2778+ } else {
2779+ consolidatedRanges.push(lastRange = range);
2780+ }
2781+ }
2782+
2783+ for (var i = 0; i < consolidatedRanges.length; ++i) {
2784+ var range = consolidatedRanges[i];
2785+ out.push(encodeEscape(range[0]));
2786+ if (range[1] > range[0]) {
2787+ if (range[1] + 1 > range[0]) { out.push('-'); }
2788+ out.push(encodeEscape(range[1]));
2789+ }
2790+ }
2791+ out.push(']');
2792+ return out.join('');
2793+ }
2794+
2795+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
2796+ // Split into character sets, escape sequences, punctuation strings
2797+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
2798+ // include any of the above.
2799+ var parts = regex.source.match(
2800+ new RegExp(
2801+ '(?:'
2802+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
2803+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
2804+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
2805+ + '|\\\\[0-9]+' // a back-reference or octal escape
2806+ + '|\\\\[^ux0-9]' // other escape sequence
2807+ + '|\\(\\?[:!=]' // start of a non-capturing group
2808+ + '|[\\(\\)\\^]' // start/end of a group, or line start
2809+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
2810+ + ')',
2811+ 'g'));
2812+ var n = parts.length;
2813+
2814+ // Maps captured group numbers to the number they will occupy in
2815+ // the output or to -1 if that has not been determined, or to
2816+ // undefined if they need not be capturing in the output.
2817+ var capturedGroups = [];
2818+
2819+ // Walk over and identify back references to build the capturedGroups
2820+ // mapping.
2821+ for (var i = 0, groupIndex = 0; i < n; ++i) {
2822+ var p = parts[i];
2823+ if (p === '(') {
2824+ // groups are 1-indexed, so max group index is count of '('
2825+ ++groupIndex;
2826+ } else if ('\\' === p.charAt(0)) {
2827+ var decimalValue = +p.substring(1);
2828+ if (decimalValue) {
2829+ if (decimalValue <= groupIndex) {
2830+ capturedGroups[decimalValue] = -1;
2831+ } else {
2832+ // Replace with an unambiguous escape sequence so that
2833+ // an octal escape sequence does not turn into a backreference
2834+ // to a capturing group from an earlier regex.
2835+ parts[i] = encodeEscape(decimalValue);
2836+ }
2837+ }
2838+ }
2839+ }
2840+
2841+ // Renumber groups and reduce capturing groups to non-capturing groups
2842+ // where possible.
2843+ for (var i = 1; i < capturedGroups.length; ++i) {
2844+ if (-1 === capturedGroups[i]) {
2845+ capturedGroups[i] = ++capturedGroupIndex;
2846+ }
2847+ }
2848+ for (var i = 0, groupIndex = 0; i < n; ++i) {
2849+ var p = parts[i];
2850+ if (p === '(') {
2851+ ++groupIndex;
2852+ if (!capturedGroups[groupIndex]) {
2853+ parts[i] = '(?:';
2854+ }
2855+ } else if ('\\' === p.charAt(0)) {
2856+ var decimalValue = +p.substring(1);
2857+ if (decimalValue && decimalValue <= groupIndex) {
2858+ parts[i] = '\\' + capturedGroups[decimalValue];
2859+ }
2860+ }
2861+ }
2862+
2863+ // Remove any prefix anchors so that the output will match anywhere.
2864+ // ^^ really does mean an anchored match though.
2865+ for (var i = 0; i < n; ++i) {
2866+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
2867+ }
2868+
2869+ // Expand letters to groups to handle mixing of case-sensitive and
2870+ // case-insensitive patterns if necessary.
2871+ if (regex.ignoreCase && needToFoldCase) {
2872+ for (var i = 0; i < n; ++i) {
2873+ var p = parts[i];
2874+ var ch0 = p.charAt(0);
2875+ if (p.length >= 2 && ch0 === '[') {
2876+ parts[i] = caseFoldCharset(p);
2877+ } else if (ch0 !== '\\') {
2878+ // TODO: handle letters in numeric escapes.
2879+ parts[i] = p.replace(
2880+ /[a-zA-Z]/g,
2881+ function (ch) {
2882+ var cc = ch.charCodeAt(0);
2883+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
2884+ });
2885+ }
2886+ }
2887+ }
2888+
2889+ return parts.join('');
2890+ }
2891+
2892+ var rewritten = [];
2893+ for (var i = 0, n = regexs.length; i < n; ++i) {
2894+ var regex = regexs[i];
2895+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
2896+ rewritten.push(
2897+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
2898+ }
2899+
2900+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
2901+ }
2902+
2903+
2904+ /**
2905+ * Split markup into a string of source code and an array mapping ranges in
2906+ * that string to the text nodes in which they appear.
2907+ *
2908+ * <p>
2909+ * The HTML DOM structure:</p>
2910+ * <pre>
2911+ * (Element "p"
2912+ * (Element "b"
2913+ * (Text "print ")) ; #1
2914+ * (Text "'Hello '") ; #2
2915+ * (Element "br") ; #3
2916+ * (Text " + 'World';")) ; #4
2917+ * </pre>
2918+ * <p>
2919+ * corresponds to the HTML
2920+ * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
2921+ *
2922+ * <p>
2923+ * It will produce the output:</p>
2924+ * <pre>
2925+ * {
2926+ * sourceCode: "print 'Hello '\n + 'World';",
2927+ * // 1 2
2928+ * // 012345678901234 5678901234567
2929+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
2930+ * }
2931+ * </pre>
2932+ * <p>
2933+ * where #1 is a reference to the {@code "print "} text node above, and so
2934+ * on for the other text nodes.
2935+ * </p>
2936+ *
2937+ * <p>
2938+ * The {@code} spans array is an array of pairs. Even elements are the start
2939+ * indices of substrings, and odd elements are the text nodes (or BR elements)
2940+ * that contain the text for those substrings.
2941+ * Substrings continue until the next index or the end of the source.
2942+ * </p>
2943+ *
2944+ * @param {Node} node an HTML DOM subtree containing source-code.
2945+ * @param {boolean} isPreformatted true if white-space in text nodes should
2946+ * be considered significant.
2947+ * @return {Object} source code and the text nodes in which they occur.
2948+ */
2949+ function extractSourceSpans(node, isPreformatted) {
2950+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
2951+
2952+ var chunks = [];
2953+ var length = 0;
2954+ var spans = [];
2955+ var k = 0;
2956+
2957+ function walk(node) {
2958+ switch (node.nodeType) {
2959+ case 1: // Element
2960+ if (nocode.test(node.className)) { return; }
2961+ for (var child = node.firstChild; child; child = child.nextSibling) {
2962+ walk(child);
2963+ }
2964+ var nodeName = node.nodeName.toLowerCase();
2965+ if ('br' === nodeName || 'li' === nodeName) {
2966+ chunks[k] = '\n';
2967+ spans[k << 1] = length++;
2968+ spans[(k++ << 1) | 1] = node;
2969+ }
2970+ break;
2971+ case 3: case 4: // Text
2972+ var text = node.nodeValue;
2973+ if (text.length) {
2974+ if (!isPreformatted) {
2975+ text = text.replace(/[ \t\r\n]+/g, ' ');
2976+ } else {
2977+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
2978+ text = text.replace(/^(\r?\n\s*)+/g, ''); // Remove leading newlines
2979+ text = text.replace(/^\s*/g, ''); // Remove leading spaces due to indented formatting
2980+ text = text.replace(/(\r?\n\s*)+$/g, ''); // Remove ending newlines
2981+
2982+ }
2983+ // TODO: handle tabs here?
2984+ chunks[k] = text;
2985+ spans[k << 1] = length;
2986+ length += text.length;
2987+ spans[(k++ << 1) | 1] = node;
2988+ }
2989+ break;
2990+ }
2991+ }
2992+
2993+ walk(node);
2994+
2995+ return {
2996+ sourceCode: chunks.join('').replace(/\n$/, ''),
2997+ spans: spans
2998+ };
2999+ }
3000+
3001+
3002+ /**
3003+ * Apply the given language handler to sourceCode and add the resulting
3004+ * decorations to out.
3005+ * @param {number} basePos the index of sourceCode within the chunk of source
3006+ * whose decorations are already present on out.
3007+ */
3008+ function appendDecorations(basePos, sourceCode, langHandler, out) {
3009+ if (!sourceCode) { return; }
3010+ var job = {
3011+ sourceCode: sourceCode,
3012+ basePos: basePos
3013+ };
3014+ langHandler(job);
3015+ out.push.apply(out, job.decorations);
3016+ }
3017+
3018+ var notWs = /\S/;
3019+
3020+ /**
3021+ * Given an element, if it contains only one child element and any text nodes
3022+ * it contains contain only space characters, return the sole child element.
3023+ * Otherwise returns undefined.
3024+ * <p>
3025+ * This is meant to return the CODE element in {@code <pre><code ...>} when
3026+ * there is a single child element that contains all the non-space textual
3027+ * content, but not to return anything where there are multiple child elements
3028+ * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
3029+ * is textual content.
3030+ */
3031+ function childContentWrapper(element) {
3032+ var wrapper = undefined;
3033+ for (var c = element.firstChild; c; c = c.nextSibling) {
3034+ var type = c.nodeType;
3035+ wrapper = (type === 1) // Element Node
3036+ ? (wrapper ? element : c)
3037+ : (type === 3) // Text Node
3038+ ? (notWs.test(c.nodeValue) ? element : wrapper)
3039+ : wrapper;
3040+ }
3041+ return wrapper === element ? undefined : wrapper;
3042+ }
3043+
3044+ /** Given triples of [style, pattern, context] returns a lexing function,
3045+ * The lexing function interprets the patterns to find token boundaries and
3046+ * returns a decoration list of the form
3047+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
3048+ * where index_n is an index into the sourceCode, and style_n is a style
3049+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
3050+ * all characters in sourceCode[index_n-1:index_n].
3051+ *
3052+ * The stylePatterns is a list whose elements have the form
3053+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
3054+ *
3055+ * Style is a style constant like PR_PLAIN, or can be a string of the
3056+ * form 'lang-FOO', where FOO is a language extension describing the
3057+ * language of the portion of the token in $1 after pattern executes.
3058+ * E.g., if style is 'lang-lisp', and group 1 contains the text
3059+ * '(hello (world))', then that portion of the token will be passed to the
3060+ * registered lisp handler for formatting.
3061+ * The text before and after group 1 will be restyled using this decorator
3062+ * so decorators should take care that this doesn't result in infinite
3063+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
3064+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
3065+ * '<script>foo()<\/script>', which would cause the current decorator to
3066+ * be called with '<script>' which would not match the same rule since
3067+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
3068+ * the generic tag rule. The handler registered for the 'js' extension would
3069+ * then be called with 'foo()', and finally, the current decorator would
3070+ * be called with '<\/script>' which would not match the original rule and
3071+ * so the generic tag rule would identify it as a tag.
3072+ *
3073+ * Pattern must only match prefixes, and if it matches a prefix, then that
3074+ * match is considered a token with the same style.
3075+ *
3076+ * Context is applied to the last non-whitespace, non-comment token
3077+ * recognized.
3078+ *
3079+ * Shortcut is an optional string of characters, any of which, if the first
3080+ * character, gurantee that this pattern and only this pattern matches.
3081+ *
3082+ * @param {Array} shortcutStylePatterns patterns that always start with
3083+ * a known character. Must have a shortcut string.
3084+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
3085+ * order if the shortcut ones fail. May have shortcuts.
3086+ *
3087+ * @return {function (Object)} a
3088+ * function that takes source code and returns a list of decorations.
3089+ */
3090+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
3091+ var shortcuts = {};
3092+ var tokenizer;
3093+ (function () {
3094+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
3095+ var allRegexs = [];
3096+ var regexKeys = {};
3097+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
3098+ var patternParts = allPatterns[i];
3099+ var shortcutChars = patternParts[3];
3100+ if (shortcutChars) {
3101+ for (var c = shortcutChars.length; --c >= 0;) {
3102+ shortcuts[shortcutChars.charAt(c)] = patternParts;
3103+ }
3104+ }
3105+ var regex = patternParts[1];
3106+ var k = '' + regex;
3107+ if (!regexKeys.hasOwnProperty(k)) {
3108+ allRegexs.push(regex);
3109+ regexKeys[k] = null;
3110+ }
3111+ }
3112+ allRegexs.push(/[\0-\uffff]/);
3113+ tokenizer = combinePrefixPatterns(allRegexs);
3114+ })();
3115+
3116+ var nPatterns = fallthroughStylePatterns.length;
3117+
3118+ /**
3119+ * Lexes job.sourceCode and produces an output array job.decorations of
3120+ * style classes preceded by the position at which they start in
3121+ * job.sourceCode in order.
3122+ *
3123+ * @param {Object} job an object like <pre>{
3124+ * sourceCode: {string} sourceText plain text,
3125+ * basePos: {int} position of job.sourceCode in the larger chunk of
3126+ * sourceCode.
3127+ * }</pre>
3128+ */
3129+ var decorate = function (job) {
3130+ var sourceCode = job.sourceCode, basePos = job.basePos;
3131+ /** Even entries are positions in source in ascending order. Odd enties
3132+ * are style markers (e.g., PR_COMMENT) that run from that position until
3133+ * the end.
3134+ * @type {Array.<number|string>}
3135+ */
3136+ var decorations = [basePos, PR_PLAIN];
3137+ var pos = 0; // index into sourceCode
3138+ var tokens = sourceCode.match(tokenizer) || [];
3139+ var styleCache = {};
3140+
3141+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
3142+ var token = tokens[ti];
3143+ var style = styleCache[token];
3144+ var match = void 0;
3145+
3146+ var isEmbedded;
3147+ if (typeof style === 'string') {
3148+ isEmbedded = false;
3149+ } else {
3150+ var patternParts = shortcuts[token.charAt(0)];
3151+ if (patternParts) {
3152+ match = token.match(patternParts[1]);
3153+ style = patternParts[0];
3154+ } else {
3155+ for (var i = 0; i < nPatterns; ++i) {
3156+ patternParts = fallthroughStylePatterns[i];
3157+ match = token.match(patternParts[1]);
3158+ if (match) {
3159+ style = patternParts[0];
3160+ break;
3161+ }
3162+ }
3163+
3164+ if (!match) { // make sure that we make progress
3165+ style = PR_PLAIN;
3166+ }
3167+ }
3168+
3169+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
3170+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
3171+ isEmbedded = false;
3172+ style = PR_SOURCE;
3173+ }
3174+
3175+ if (!isEmbedded) { styleCache[token] = style; }
3176+ }
3177+
3178+ var tokenStart = pos;
3179+ pos += token.length;
3180+
3181+ if (!isEmbedded) {
3182+ decorations.push(basePos + tokenStart, style);
3183+ } else { // Treat group 1 as an embedded block of source code.
3184+ var embeddedSource = match[1];
3185+ var embeddedSourceStart = token.indexOf(embeddedSource);
3186+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
3187+ if (match[2]) {
3188+ // If embeddedSource can be blank, then it would match at the
3189+ // beginning which would cause us to infinitely recurse on the
3190+ // entire token, so we catch the right context in match[2].
3191+ embeddedSourceEnd = token.length - match[2].length;
3192+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
3193+ }
3194+ var lang = style.substring(5);
3195+ // Decorate the left of the embedded source
3196+ appendDecorations(
3197+ basePos + tokenStart,
3198+ token.substring(0, embeddedSourceStart),
3199+ decorate, decorations);
3200+ // Decorate the embedded source
3201+ appendDecorations(
3202+ basePos + tokenStart + embeddedSourceStart,
3203+ embeddedSource,
3204+ langHandlerForExtension(lang, embeddedSource),
3205+ decorations);
3206+ // Decorate the right of the embedded section
3207+ appendDecorations(
3208+ basePos + tokenStart + embeddedSourceEnd,
3209+ token.substring(embeddedSourceEnd),
3210+ decorate, decorations);
3211+ }
3212+ }
3213+ job.decorations = decorations;
3214+ };
3215+ return decorate;
3216+ }
3217+
3218+ /** returns a function that produces a list of decorations from source text.
3219+ *
3220+ * This code treats ", ', and ` as string delimiters, and \ as a string
3221+ * escape. It does not recognize perl's qq() style strings.
3222+ * It has no special handling for double delimiter escapes as in basic, or
3223+ * the tripled delimiters used in python, but should work on those regardless
3224+ * although in those cases a single string literal may be broken up into
3225+ * multiple adjacent string literals.
3226+ *
3227+ * It recognizes C, C++, and shell style comments.
3228+ *
3229+ * @param {Object} options a set of optional parameters.
3230+ * @return {function (Object)} a function that examines the source code
3231+ * in the input job and builds the decoration list.
3232+ */
3233+ function sourceDecorator(options) {
3234+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
3235+ if (options['tripleQuotedStrings']) {
3236+ // '''multi-line-string''', 'single-line-string', and double-quoted
3237+ shortcutStylePatterns.push(
3238+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
3239+ null, '\'"']);
3240+ } else if (options['multiLineStrings']) {
3241+ // 'multi-line-string', "multi-line-string"
3242+ shortcutStylePatterns.push(
3243+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
3244+ null, '\'"`']);
3245+ } else {
3246+ // 'single-line-string', "single-line-string"
3247+ shortcutStylePatterns.push(
3248+ [PR_STRING,
3249+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
3250+ null, '"\'']);
3251+ }
3252+ if (options['verbatimStrings']) {
3253+ // verbatim-string-literal production from the C# grammar. See issue 93.
3254+ fallthroughStylePatterns.push(
3255+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
3256+ }
3257+ var hc = options['hashComments'];
3258+ if (hc) {
3259+ if (options['cStyleComments']) {
3260+ if (hc > 1) { // multiline hash comments
3261+ shortcutStylePatterns.push(
3262+ [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
3263+ } else {
3264+ // Stop C preprocessor declarations at an unclosed open comment
3265+ shortcutStylePatterns.push(
3266+ [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
3267+ null, '#']);
3268+ }
3269+ // #include <stdio.h>
3270+ fallthroughStylePatterns.push(
3271+ [PR_STRING,
3272+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
3273+ null]);
3274+ } else {
3275+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
3276+ }
3277+ }
3278+ if (options['cStyleComments']) {
3279+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
3280+ fallthroughStylePatterns.push(
3281+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
3282+ }
3283+ if (options['regexLiterals']) {
3284+ /**
3285+ * @const
3286+ */
3287+ var REGEX_LITERAL = (
3288+ // A regular expression literal starts with a slash that is
3289+ // not followed by * or / so that it is not confused with
3290+ // comments.
3291+ '/(?=[^/*])'
3292+ // and then contains any number of raw characters,
3293+ + '(?:[^/\\x5B\\x5C]'
3294+ // escape sequences (\x5C),
3295+ + '|\\x5C[\\s\\S]'
3296+ // or non-nesting character sets (\x5B\x5D);
3297+ + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
3298+ // finally closed by a /.
3299+ + '/');
3300+ fallthroughStylePatterns.push(
3301+ ['lang-regex',
3302+ new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
3303+ ]);
3304+ }
3305+
3306+ var types = options['types'];
3307+ if (types) {
3308+ fallthroughStylePatterns.push([PR_TYPE, types]);
3309+ }
3310+
3311+ if (options['strings']) {
3312+ var strings = ("" + options['strings']).replace(/^ | $/g, '').replace(/-/g, '\\-');
3313+ fallthroughStylePatterns.push(
3314+ [PR_STRING,
3315+ new RegExp('(?:' + strings.replace(/[\s,]+/g, '|') + ')'),
3316+ , null]
3317+ );
3318+ }
3319+
3320+ var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
3321+ if (keywords.length) {
3322+ fallthroughStylePatterns.push(
3323+ [PR_KEYWORD,
3324+ new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
3325+ null]);
3326+ }
3327+
3328+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
3329+ if (options['httpdComments']) {
3330+ fallthroughStylePatterns.push(
3331+ [PR_PLAIN, /^.*\S.*#/i, null]
3332+ );
3333+ }
3334+
3335+ fallthroughStylePatterns.push(
3336+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
3337+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*|\bNULL\b/i, null],
3338+ [PR_LITERAL, CONFIG_OPTIONS, null],
3339+ //[PR_STRING, CONFIG_ENVS, null],
3340+ [PR_TAG, /^\b(AuthzProviderAlias|AuthnProviderAlias|RequireAny|RequireAll|RequireNone|Directory|DirectoryMatch|Location|LocationMatch|VirtualHost|If|Else|ElseIf|Proxy\b|LoadBalancer|Files|FilesMatch|Limit|LimitExcept|IfDefine|IfModule|IfVersion)\b/, null],
3341+ [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_(t|req|module)\b)/, null],
3342+ [PR_TAG, /^apr_[a-z_0-9]+|ap_[a-z_0-9]+/i, null],
3343+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9\-]*/i, null],
3344+ [PR_LITERAL,
3345+ new RegExp(
3346+ '^(?:'
3347+ // A hex number
3348+ + '0x[a-f0-9]+'
3349+ // An IPv6 Address
3350+ + '|[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+'
3351+ // or an octal or decimal number,
3352+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
3353+ // possibly in scientific notation
3354+ + '(?:e[+\\-]?\\d+)?'
3355+ + ')'
3356+ // with an optional modifier like UL for unsigned long
3357+ + '[a-z]*', 'i'),
3358+ null, '0123456789'],
3359+ // Don't treat escaped quotes in bash as starting strings. See issue 144.
3360+ [PR_PLAIN, /^\\[\s\S]?/, null],
3361+ [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
3362+
3363+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
3364+ }
3365+
3366+ var decorateSource = sourceDecorator({
3367+ 'keywords': ALL_KEYWORDS,
3368+ 'hashComments': true,
3369+ 'cStyleComments': true,
3370+ 'multiLineStrings': true,
3371+ 'regexLiterals': true
3372+ });
3373+
3374+ /**
3375+ * Given a DOM subtree, wraps it in a list, and puts each line into its own
3376+ * list item.
3377+ *
3378+ * @param {Node} node modified in place. Its content is pulled into an
3379+ * HTMLOListElement, and each line is moved into a separate list item.
3380+ * This requires cloning elements, so the input might not have unique
3381+ * IDs after numbering.
3382+ * @param {boolean} isPreformatted true iff white-space in text nodes should
3383+ * be treated as significant.
3384+ */
3385+ function numberLines(node, opt_startLineNum, isPreformatted) {
3386+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
3387+ var lineBreak = /\r\n?|\n/;
3388+
3389+ var document = node.ownerDocument;
3390+
3391+ var li = document.createElement('li');
3392+ while (node.firstChild) {
3393+ li.appendChild(node.firstChild);
3394+ }
3395+ // An array of lines. We split below, so this is initialized to one
3396+ // un-split line.
3397+ var listItems = [li];
3398+
3399+ function walk(node) {
3400+ switch (node.nodeType) {
3401+ case 1: // Element
3402+ if (nocode.test(node.className)) { break; }
3403+ if ('br' === node.nodeName) {
3404+ breakAfter(node);
3405+ // Discard the <BR> since it is now flush against a </LI>.
3406+ if (node.parentNode) {
3407+ node.parentNode.removeChild(node);
3408+ }
3409+ } else {
3410+ for (var child = node.firstChild; child; child = child.nextSibling) {
3411+ walk(child);
3412+ }
3413+ }
3414+ break;
3415+ case 3: case 4: // Text
3416+ if (isPreformatted) {
3417+ var text = node.nodeValue;
3418+ var match = text.match(lineBreak);
3419+ if (match) {
3420+ var firstLine = text.substring(0, match.index);
3421+ node.nodeValue = firstLine;
3422+ var tail = text.substring(match.index + match[0].length);
3423+ if (tail) {
3424+ var parent = node.parentNode;
3425+ parent.insertBefore(
3426+ document.createTextNode(tail), node.nextSibling);
3427+ }
3428+ breakAfter(node);
3429+ if (!firstLine) {
3430+ // Don't leave blank text nodes in the DOM.
3431+ node.parentNode.removeChild(node);
3432+ }
3433+ }
3434+ }
3435+ break;
3436+ }
3437+ }
3438+
3439+ // Split a line after the given node.
3440+ function breakAfter(lineEndNode) {
3441+ // If there's nothing to the right, then we can skip ending the line
3442+ // here, and move root-wards since splitting just before an end-tag
3443+ // would require us to create a bunch of empty copies.
3444+ while (!lineEndNode.nextSibling) {
3445+ lineEndNode = lineEndNode.parentNode;
3446+ if (!lineEndNode) { return; }
3447+ }
3448+
3449+ function breakLeftOf(limit, copy) {
3450+ // Clone shallowly if this node needs to be on both sides of the break.
3451+ var rightSide = copy ? limit.cloneNode(false) : limit;
3452+ var parent = limit.parentNode;
3453+ if (parent) {
3454+ // We clone the parent chain.
3455+ // This helps us resurrect important styling elements that cross lines.
3456+ // E.g. in <i>Foo<br>Bar</i>
3457+ // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
3458+ var parentClone = breakLeftOf(parent, 1);
3459+ // Move the clone and everything to the right of the original
3460+ // onto the cloned parent.
3461+ var next = limit.nextSibling;
3462+ parentClone.appendChild(rightSide);
3463+ for (var sibling = next; sibling; sibling = next) {
3464+ next = sibling.nextSibling;
3465+ parentClone.appendChild(sibling);
3466+ }
3467+ }
3468+ return rightSide;
3469+ }
3470+
3471+ var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
3472+
3473+ // Walk the parent chain until we reach an unattached LI.
3474+ for (var parent;
3475+ // Check nodeType since IE invents document fragments.
3476+ (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
3477+ copiedListItem = parent;
3478+ }
3479+ // Put it on the list of lines for later processing.
3480+ listItems.push(copiedListItem);
3481+ }
3482+
3483+ // Split lines while there are lines left to split.
3484+ for (var i = 0; // Number of lines that have been split so far.
3485+ i < listItems.length; // length updated by breakAfter calls.
3486+ ++i) {
3487+ walk(listItems[i]);
3488+ }
3489+
3490+ // Make sure numeric indices show correctly.
3491+ if (opt_startLineNum === (opt_startLineNum|0)) {
3492+ listItems[0].setAttribute('value', opt_startLineNum);
3493+ }
3494+
3495+ var ol = document.createElement('ol');
3496+ ol.className = 'linenums';
3497+ var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
3498+ for (var i = 0, n = listItems.length; i < n; ++i) {
3499+ li = listItems[i];
3500+ // Stick a class on the LIs so that stylesheets can
3501+ // color odd/even rows, or any other row pattern that
3502+ // is co-prime with 10.
3503+ li.className = 'L' + ((i + offset) % 1);
3504+ if (!li.firstChild) {
3505+ li.appendChild(document.createTextNode('\xA0'));
3506+ }
3507+ ol.appendChild(li);
3508+ }
3509+
3510+ node.appendChild(ol);
3511+ }
3512+
3513+ /**
3514+ * Breaks {@code job.sourceCode} around style boundaries in
3515+ * {@code job.decorations} and modifies {@code job.sourceNode} in place.
3516+ * @param {Object} job like <pre>{
3517+ * sourceCode: {string} source as plain text,
3518+ * spans: {Array.<number|Node>} alternating span start indices into source
3519+ * and the text node or element (e.g. {@code <BR>}) corresponding to that
3520+ * span.
3521+ * decorations: {Array.<number|string} an array of style classes preceded
3522+ * by the position at which they start in job.sourceCode in order
3523+ * }</pre>
3524+ * @private
3525+ */
3526+ function recombineTagsAndDecorations(job) {
3527+ var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
3528+ isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
3529+ var newlineRe = /\n/g;
3530+
3531+ var source = job.sourceCode;
3532+ var sourceLength = source.length;
3533+ // Index into source after the last code-unit recombined.
3534+ var sourceIndex = 0;
3535+
3536+ var spans = job.spans;
3537+ var nSpans = spans.length;
3538+ // Index into spans after the last span which ends at or before sourceIndex.
3539+ var spanIndex = 0;
3540+
3541+ var decorations = job.decorations;
3542+ var nDecorations = decorations.length;
3543+ // Index into decorations after the last decoration which ends at or before
3544+ // sourceIndex.
3545+ var decorationIndex = 0;
3546+
3547+ // Remove all zero-length decorations.
3548+ decorations[nDecorations] = sourceLength;
3549+ var decPos, i;
3550+ for (i = decPos = 0; i < nDecorations;) {
3551+ if (decorations[i] !== decorations[i + 2]) {
3552+ decorations[decPos++] = decorations[i++];
3553+ decorations[decPos++] = decorations[i++];
3554+ } else {
3555+ i += 2;
3556+ }
3557+ }
3558+ nDecorations = decPos;
3559+
3560+ // Simplify decorations.
3561+ for (i = decPos = 0; i < nDecorations;) {
3562+ var startPos = decorations[i];
3563+ // Conflate all adjacent decorations that use the same style.
3564+ var startDec = decorations[i + 1];
3565+ var end = i + 2;
3566+ while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
3567+ end += 2;
3568+ }
3569+ decorations[decPos++] = startPos;
3570+ decorations[decPos++] = startDec;
3571+ i = end;
3572+ }
3573+
3574+ nDecorations = decorations.length = decPos;
3575+
3576+ var sourceNode = job.sourceNode;
3577+ var oldDisplay;
3578+ if (sourceNode) {
3579+ oldDisplay = sourceNode.style.display;
3580+ sourceNode.style.display = 'none';
3581+ }
3582+ try {
3583+ var decoration = null;
3584+ var X = 0;
3585+ while (spanIndex < nSpans) {
3586+ X = X + 1;
3587+ if (X > 5000) { break; }
3588+ var spanStart = spans[spanIndex];
3589+ var spanEnd = spans[spanIndex + 2] || sourceLength;
3590+
3591+ var decEnd = decorations[decorationIndex + 2] || sourceLength;
3592+
3593+ var end = Math.min(spanEnd, decEnd);
3594+
3595+ var textNode = spans[spanIndex + 1];
3596+ var styledText;
3597+ if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
3598+ // Don't introduce spans around empty text nodes.
3599+ && (styledText = source.substring(sourceIndex, end))) {
3600+ // This may seem bizarre, and it is. Emitting LF on IE causes the
3601+ // code to display with spaces instead of line breaks.
3602+ // Emitting Windows standard issue linebreaks (CRLF) causes a blank
3603+ // space to appear at the beginning of every line but the first.
3604+ // Emitting an old Mac OS 9 line separator makes everything spiffy.
3605+ if (isIE8OrEarlier) {
3606+ styledText = styledText.replace(newlineRe, '\r');
3607+ }
3608+ textNode.nodeValue = styledText;
3609+ var document = textNode.ownerDocument;
3610+ var span = document.createElement('span');
3611+ span.className = decorations[decorationIndex + 1];
3612+ var parentNode = textNode.parentNode;
3613+ parentNode.replaceChild(span, textNode);
3614+ span.appendChild(textNode);
3615+ if (sourceIndex < spanEnd) { // Split off a text node.
3616+ spans[spanIndex + 1] = textNode
3617+ // TODO: Possibly optimize by using '' if there's no flicker.
3618+ = document.createTextNode(source.substring(end, spanEnd));
3619+ parentNode.insertBefore(textNode, span.nextSibling);
3620+ }
3621+ }
3622+
3623+ sourceIndex = end;
3624+
3625+ if (sourceIndex >= spanEnd) {
3626+ spanIndex += 2;
3627+ }
3628+ if (sourceIndex >= decEnd) {
3629+ decorationIndex += 2;
3630+ }
3631+ }
3632+ } finally {
3633+ if (sourceNode) {
3634+ sourceNode.style.display = oldDisplay;
3635+ }
3636+ }
3637+ }
3638+
3639+
3640+ /** Maps language-specific file extensions to handlers. */
3641+ var langHandlerRegistry = {};
3642+ /** Register a language handler for the given file extensions.
3643+ * @param {function (Object)} handler a function from source code to a list
3644+ * of decorations. Takes a single argument job which describes the
3645+ * state of the computation. The single parameter has the form
3646+ * {@code {
3647+ * sourceCode: {string} as plain text.
3648+ * decorations: {Array.<number|string>} an array of style classes
3649+ * preceded by the position at which they start in
3650+ * job.sourceCode in order.
3651+ * The language handler should assigned this field.
3652+ * basePos: {int} the position of source in the larger source chunk.
3653+ * All positions in the output decorations array are relative
3654+ * to the larger source chunk.
3655+ * } }
3656+ * @param {Array.<string>} fileExtensions
3657+ */
3658+ function registerLangHandler(handler, fileExtensions) {
3659+ for (var i = fileExtensions.length; --i >= 0;) {
3660+ var ext = fileExtensions[i];
3661+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
3662+ langHandlerRegistry[ext] = handler;
3663+ } else if (win['console']) {
3664+ console['warn']('cannot override language handler %s', ext);
3665+ }
3666+ }
3667+ }
3668+ function langHandlerForExtension(extension, source) {
3669+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
3670+ // Treat it as markup if the first non whitespace character is a < and
3671+ // the last non-whitespace character is a >.
3672+ extension = /^\s*</.test(source)
3673+ ? 'default-markup'
3674+ : 'default-code';
3675+ }
3676+ return langHandlerRegistry[extension];
3677+ }
3678+ registerLangHandler(decorateSource, ['default-code']);
3679+ registerLangHandler(
3680+ createSimpleLexer(
3681+ [],
3682+ [
3683+ [PR_PLAIN, /^[^<?]+/],
3684+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
3685+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
3686+ // Unescaped content in an unknown language
3687+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
3688+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
3689+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
3690+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
3691+ // Unescaped content in javascript. (Or possibly vbscript).
3692+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
3693+ // Contains unescaped stylesheet content
3694+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
3695+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
3696+ ]),
3697+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
3698+ registerLangHandler(
3699+ createSimpleLexer(
3700+ [
3701+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
3702+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
3703+ ],
3704+ [
3705+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
3706+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
3707+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
3708+ [PR_PUNCTUATION, /^[=<>\/]+/],
3709+ ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
3710+ ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
3711+ ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
3712+ ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
3713+ ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
3714+ ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
3715+ ]),
3716+ ['in.tag']);
3717+ registerLangHandler(
3718+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
3719+ registerLangHandler(sourceDecorator({
3720+ 'keywords': CPP_KEYWORDS,
3721+ 'hashComments': true,
3722+ 'cStyleComments': true,
3723+ 'types': C_TYPES
3724+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
3725+ registerLangHandler(sourceDecorator({
3726+ 'keywords': PHP_KEYWORDS,
3727+ 'hashComments': false,
3728+ 'cStyleComments': true,
3729+ 'multiLineStrings': true,
3730+ 'regexLiterals': true
3731+// 'types': C_TYPES,
3732+ }), ['php', 'phtml', 'inc']);
3733+ registerLangHandler(sourceDecorator({
3734+ 'keywords': 'null,true,false'
3735+ }), ['json']);
3736+ registerLangHandler(sourceDecorator({
3737+ 'keywords': CSHARP_KEYWORDS,
3738+ 'hashComments': true,
3739+ 'cStyleComments': true,
3740+ 'verbatimStrings': true,
3741+ 'types': C_TYPES
3742+ }), ['cs']);
3743+ registerLangHandler(sourceDecorator({
3744+ 'keywords': JAVA_KEYWORDS,
3745+ 'cStyleComments': true
3746+ }), ['java']);
3747+ registerLangHandler(sourceDecorator({
3748+ 'keywords': SH_KEYWORDS,
3749+ 'hashComments': true,
3750+ 'multiLineStrings': true
3751+ }), ['bsh', 'csh', 'sh']);
3752+ registerLangHandler(sourceDecorator({
3753+ 'keywords': PYTHON_KEYWORDS,
3754+ 'hashComments': true,
3755+ 'multiLineStrings': true,
3756+ 'tripleQuotedStrings': true
3757+ }), ['cv', 'py']);
3758+ registerLangHandler(sourceDecorator({
3759+ 'keywords': PERL_KEYWORDS,
3760+ 'hashComments': true,
3761+ 'multiLineStrings': true,
3762+ 'regexLiterals': true
3763+ }), ['perl', 'pl', 'pm']);
3764+ registerLangHandler(sourceDecorator({
3765+ 'keywords': RUBY_KEYWORDS,
3766+ 'hashComments': true,
3767+ 'multiLineStrings': true,
3768+ 'regexLiterals': true
3769+ }), ['rb']);
3770+ registerLangHandler(sourceDecorator({
3771+ 'keywords': JSCRIPT_KEYWORDS,
3772+ 'cStyleComments': true,
3773+ 'regexLiterals': true
3774+ }), ['js']);
3775+ registerLangHandler(sourceDecorator({
3776+ 'keywords': COFFEE_KEYWORDS,
3777+ 'hashComments': 3, // ### style block comments
3778+ 'cStyleComments': true,
3779+ 'multilineStrings': true,
3780+ 'tripleQuotedStrings': true,
3781+ 'regexLiterals': true
3782+ }), ['coffee']);
3783+ registerLangHandler(
3784+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
3785+ registerLangHandler(sourceDecorator({
3786+ 'keywords': CONFIG_KEYWORDS,
3787+ 'literals': CONFIG_OPTIONS,
3788+ 'strings': CONFIG_ENVS,
3789+ 'hashComments': true,
3790+ 'cStyleComments': false,
3791+ 'multiLineStrings': false,
3792+ 'regexLiterals': false,
3793+ 'httpdComments': true
3794+ }), ['config']);
3795+
3796+ function applyDecorator(job) {
3797+ var opt_langExtension = job.langExtension;
3798+
3799+ try {
3800+ // Extract tags, and convert the source code to plain text.
3801+ var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
3802+ /** Plain text. @type {string} */
3803+ var source = sourceAndSpans.sourceCode;
3804+ job.sourceCode = source;
3805+ job.spans = sourceAndSpans.spans;
3806+ job.basePos = 0;
3807+
3808+ // Apply the appropriate language handler
3809+ langHandlerForExtension(opt_langExtension, source)(job);
3810+
3811+ // Integrate the decorations and tags back into the source code,
3812+ // modifying the sourceNode in place.
3813+ recombineTagsAndDecorations(job);
3814+ } catch (e) {
3815+ if (win['console']) {
3816+ console['log'](e && e['stack'] ? e['stack'] : e);
3817+ }
3818+ }
3819+ }
3820+
3821+ /**
3822+ * @param sourceCodeHtml {string} The HTML to pretty print.
3823+ * @param opt_langExtension {string} The language name to use.
3824+ * Typically, a filename extension like 'cpp' or 'java'.
3825+ * @param opt_numberLines {number|boolean} True to number lines,
3826+ * or the 1-indexed number of the first line in sourceCodeHtml.
3827+ */
3828+ function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
3829+ var container = document.createElement('pre');
3830+ // This could cause images to load and onload listeners to fire.
3831+ // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
3832+ // We assume that the inner HTML is from a trusted source.
3833+ container.innerHTML = sourceCodeHtml;
3834+ if (opt_numberLines) {
3835+ numberLines(container, opt_numberLines, true);
3836+ }
3837+
3838+ var job = {
3839+ langExtension: opt_langExtension,
3840+ numberLines: opt_numberLines,
3841+ sourceNode: container,
3842+ pre: 1
3843+ };
3844+ applyDecorator(job);
3845+ return container.innerHTML;
3846+ }
3847+
3848+ function prettyPrint(opt_whenDone) {
3849+ function byTagName(tn) { return document.getElementsByTagName(tn); }
3850+ // fetch a list of nodes to rewrite
3851+ var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
3852+ var elements = [];
3853+ for (var i = 0; i < codeSegments.length; ++i) {
3854+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
3855+ elements.push(codeSegments[i][j]);
3856+ }
3857+ }
3858+ codeSegments = null;
3859+
3860+ var clock = Date;
3861+ if (!clock['now']) {
3862+ clock = { 'now': function () { return +(new Date); } };
3863+ }
3864+
3865+ // The loop is broken into a series of continuations to make sure that we
3866+ // don't make the browser unresponsive when rewriting a large page.
3867+ var k = 0;
3868+ var prettyPrintingJob;
3869+
3870+ var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
3871+ var prettyPrintRe = /\bprettyprint\b/;
3872+ var prettyPrintedRe = /\bprettyprinted\b/;
3873+ var preformattedTagNameRe = /pre|xmp/i;
3874+ var codeRe = /^code$/i;
3875+ var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
3876+
3877+ function doWork() {
3878+ var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
3879+ clock['now']() + 250 /* ms */ :
3880+ Infinity);
3881+ for (; k < elements.length && clock['now']() < endTime; k++) {
3882+ var cs = elements[k];
3883+ var className = cs.className;
3884+ if (prettyPrintRe.test(className)
3885+ // Don't redo this if we've already done it.
3886+ // This allows recalling pretty print to just prettyprint elements
3887+ // that have been added to the page since last call.
3888+ && !prettyPrintedRe.test(className)) {
3889+
3890+ // make sure this is not nested in an already prettified element
3891+ var nested = false;
3892+ for (var p = cs.parentNode; p; p = p.parentNode) {
3893+ var tn = p.tagName;
3894+ if (preCodeXmpRe.test(tn)
3895+ && p.className && prettyPrintRe.test(p.className)) {
3896+ nested = true;
3897+ break;
3898+ }
3899+ }
3900+ if (!nested) {
3901+ // Mark done. If we fail to prettyprint for whatever reason,
3902+ // we shouldn't try again.
3903+ cs.className += ' prettyprinted';
3904+
3905+ // If the classes includes a language extensions, use it.
3906+ // Language extensions can be specified like
3907+ // <pre class="prettyprint lang-cpp">
3908+ // the language extension "cpp" is used to find a language handler
3909+ // as passed to PR.registerLangHandler.
3910+ // HTML5 recommends that a language be specified using "language-"
3911+ // as the prefix instead. Google Code Prettify supports both.
3912+ // http://dev.w3.org/html5/spec-author-view/the-code-element.html
3913+ var langExtension = className.match(langExtensionRe);
3914+ // Support <pre class="prettyprint"><code class="language-c">
3915+ var wrapper;
3916+ if (!langExtension && (wrapper = childContentWrapper(cs))
3917+ && codeRe.test(wrapper.tagName)) {
3918+ langExtension = wrapper.className.match(langExtensionRe);
3919+ }
3920+
3921+ if (langExtension) { langExtension = langExtension[1]; }
3922+
3923+ var preformatted;
3924+ if (preformattedTagNameRe.test(cs.tagName)) {
3925+ preformatted = 1;
3926+ } else {
3927+ var currentStyle = cs['currentStyle'];
3928+ var whitespace = (
3929+ currentStyle
3930+ ? currentStyle['whiteSpace']
3931+ : (document.defaultView
3932+ && document.defaultView.getComputedStyle)
3933+ ? document.defaultView.getComputedStyle(cs, null)
3934+ .getPropertyValue('white-space')
3935+ : 0);
3936+ preformatted = whitespace
3937+ && 'pre' === whitespace.substring(0, 3);
3938+ }
3939+
3940+ // Look for a class like linenums or linenums:<n> where <n> is the
3941+ // 1-indexed number of the first line.
3942+ var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
3943+ lineNums = lineNums
3944+ ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
3945+ : false;
3946+ if (lineNums) { numberLines(cs, lineNums, preformatted); }
3947+
3948+ // do the pretty printing
3949+ prettyPrintingJob = {
3950+ langExtension: langExtension,
3951+ sourceNode: cs,
3952+ numberLines: lineNums,
3953+ pre: preformatted
3954+ };
3955+ applyDecorator(prettyPrintingJob);
3956+ }
3957+ }
3958+ }
3959+ if (k < elements.length) {
3960+ // finish up in a continuation
3961+ setTimeout(doWork, 250);
3962+ } else if (opt_whenDone) {
3963+ opt_whenDone();
3964+ }
3965+ }
3966+
3967+ doWork();
3968+ }
3969+
3970+ /**
3971+ * Contains functions for creating and registering new language handlers.
3972+ * @type {Object}
3973+ */
3974+ var PR = win['PR'] = {
3975+ 'createSimpleLexer': createSimpleLexer,
3976+ 'registerLangHandler': registerLangHandler,
3977+ 'sourceDecorator': sourceDecorator,
3978+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
3979+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
3980+ 'PR_COMMENT': PR_COMMENT,
3981+ 'PR_DECLARATION': PR_DECLARATION,
3982+ 'PR_KEYWORD': PR_KEYWORD,
3983+ 'PR_LITERAL': PR_LITERAL,
3984+ 'PR_NOCODE': PR_NOCODE,
3985+ 'PR_PLAIN': PR_PLAIN,
3986+ 'PR_PUNCTUATION': PR_PUNCTUATION,
3987+ 'PR_SOURCE': PR_SOURCE,
3988+ 'PR_STRING': PR_STRING,
3989+ 'PR_TAG': PR_TAG,
3990+ 'PR_TYPE': PR_TYPE,
3991+ 'prettyPrintOne': win['prettyPrintOne'] = prettyPrintOne,
3992+ 'prettyPrint': win['prettyPrint'] = prettyPrint
3993+ };
3994+
3995+
3996+/* Register Lua syntaxes */
3997+ PR['registerLangHandler'](
3998+ PR['createSimpleLexer'](
3999+ [
4000+ // Whitespace
4001+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
4002+ // A double or single quoted, possibly multi-line, string.
4003+ [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\'']
4004+ ],
4005+ [
4006+ // A comment is either a line comment that starts with two dashes, or
4007+ // two dashes preceding a long bracketed block.
4008+ [PR['PR_COMMENT'], /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],
4009+ [PR['PR_TYPE'], /^nil|false|true/],
4010+ // A long bracketed block not preceded by -- is a string.
4011+ [PR['PR_STRING'], /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],
4012+ [PR['PR_KEYWORD'], /^(?:and|break|do|else|elseif|end|for|function|if|in|local|not|or|repeat|require|return|then|until|while)\b/, null],
4013+ // A number is a hex integer literal, a decimal real literal, or in
4014+ // scientific notation.
4015+ [PR['PR_LITERAL'],
4016+ /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
4017+ // An identifier
4018+ [PR['PR_PLAIN'], /^[a-z_]\w*/i],
4019+ // A run of punctuation
4020+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]
4021+ ]),
4022+ ['lua']);
4023+
4024+
4025+ // Make PR available via the Asynchronous Module Definition (AMD) API.
4026+ // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
4027+ // The Asynchronous Module Definition (AMD) API specifies a
4028+ // mechanism for defining modules such that the module and its
4029+ // dependencies can be asynchronously loaded.
4030+ // ...
4031+ // To allow a clear indicator that a global define function (as
4032+ // needed for script src browser loading) conforms to the AMD API,
4033+ // any global define function SHOULD have a property called "amd"
4034+ // whose value is an object. This helps avoid conflict with any
4035+ // other existing JavaScript code that could have defined a define()
4036+ // function that does not conform to the AMD API.
4037+ if (typeof define === "function" && define['amd']) {
4038+ define("google-code-prettify", [], function () {
4039+ return PR;
4040+ });
4041+ }
4042+})();
4043diff --git a/docs/manual/style/scripts/prettify.min.js b/docs/manual/style/scripts/prettify.min.js
4044new file mode 100644
4045index 0000000..bd72256
4046--- /dev/null
4047+++ b/docs/manual/style/scripts/prettify.min.js
4048@@ -0,0 +1,124 @@
4049+// see prettify.js for copyright, license and expanded version
4050+window['PR_SHOULD_USE_CONTINUATION']=true;var prettyPrintOne;var prettyPrint;(function(){var win=window;var FLOW_CONTROL_KEYWORDS=["break,continue,do,else,for,if,return,while"];var C_KEYWORDS=[FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default,"+"double,enum,extern,float,goto,int,long,register,short,signed,sizeof,module,"+"static,struct,switch,typedef,union,unsigned,void,volatile"];var COMMON_KEYWORDS=[C_KEYWORDS,"catch,class,delete,false,import,"+"new,operator,private,protected,public,this,throw,true,try,typeof"];var CPP_KEYWORDS=[COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool,"+"concept,concept_map,const_cast,constexpr,decltype,"+"dynamic_cast,explicit,export,friend,inline,late_check,"+"mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,"+"template,typeid,typename,using,virtual,where,request_req"];var JAVA_KEYWORDS=[COMMON_KEYWORDS,"abstract,boolean,byte,extends,final,finally,implements,import,"+"instanceof,null,native,package,strictfp,super,synchronized,throws,"+"transient"];var CSHARP_KEYWORDS=[JAVA_KEYWORDS,"as,base,by,checked,decimal,delegate,descending,dynamic,event,"+"fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,"+"lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,"+"sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,"+"var,virtual,where"];var COFFEE_KEYWORDS="all,and,by,catch,class,else,extends,false,finally,"+"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,"+"throw,true,try,unless,until,when,while,yes";var JSCRIPT_KEYWORDS=[COMMON_KEYWORDS,"debugger,eval,export,function,get,null,set,undefined,var,with,"+"Infinity,NaN"];var PERL_KEYWORDS="caller,delete,die,do,dump,else,elsif,eval,exit,foreach,for,"+"goto,if,import,last,local,my,next,no,our,print,printf,package,redo,require,"+"sub,undef,unless,until,use,wantarray,while,BEGIN,END";var PHP_KEYWORDS="abstract,and,array,as,break,case,catch,cfunction,class,"+"clone,const,continue,declare,default,do,else,elseif,enddeclare,endfor,"+"endforeach,endif,endswitch,endwhile,extends,final,for,foreach,function,"+"global,goto,if,implements,interface,instanceof,namespace,new,old_function,"+"or,private,protected,public,static,switch,throw,try,use,var,while,xor,"+"die,echo,empty,exit,eval,include,include_once,isset,list,require,"+"require_once,return,print,unset";var PYTHON_KEYWORDS=[FLOW_CONTROL_KEYWORDS,"and,as,assert,class,def,del,"+"elif,except,exec,finally,from,global,import,in,is,lambda,"+"nonlocal,not,or,pass,print,raise,try,with,yield,"+"False,True,None"];var RUBY_KEYWORDS=[FLOW_CONTROL_KEYWORDS,"alias,and,begin,case,class,"+"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,"+"rescue,retry,self,super,then,true,undef,unless,until,when,yield,"+"BEGIN,END"];var SH_KEYWORDS=[FLOW_CONTROL_KEYWORDS,"case,done,elif,esac,eval,fi,"+"function,in,local,set,then,until,echo"];var CONFIG_ENVS=["User-Agent,HTTP_USER_AGENT,HTTP_REFERER,HTTP_COOKIE,HTTP_FORWARDED,HTTP_HOST,HTTP_PROXY_CONNECTION,HTTP_ACCEPT,REMOTE_ADDR,REMOTE_HOST,REMOTE_PORT,REMOTE_USER,REMOTE_IDENT,REQUEST_METHOD,SCRIPT_FILENAME,PATH_INFO,QUERY_STRING,AUTH_TYPE,DOCUMENT_ROOT,SERVER_ADMIN,SERVER_NAME,SERVER_ADDR,SERVER_PORT,SERVER_PROTOCOL,SERVER_SOFTWARE,TIME_YEAR,TIME_MON,TIME_DAY,TIME_HOUR,TIME_MIN,TIME_SEC,TIME_WDAY,TIME,API_VERSION,THE_REQUEST,REQUEST_URI,REQUEST_FILENAME,IS_SUBREQ,HTTPS,REQUEST_SCHEME"];var CONFIG_KEYWORDS=["<AuthnProviderAlias>,<AuthzProviderAlias>,<Directory>,<DirectoryMatch>,<Else>,<ElseIf>,<Files>,<FilesMatch>,<If>,<IfDefine>,<IfModule>,<IfVersion>,<Limit>,<LimitExcept>,<Location>,<LocationMatch>,<MDomainSet>,<Macro>,<Proxy>,<ProxyMatch>,<RequireAll>,<RequireAny>,<RequireNone>,<VirtualHost>,AcceptFilter,AcceptPathInfo,AccessFileName,Action,AddAlt,AddAltByEncoding,AddAltByType,AddCharset,AddDefaultCharset,AddDescription,AddEncoding,AddHandler,AddIcon,AddIconByEncoding,AddIconByType,AddInputFilter,AddLanguage,AddModuleInfo,AddOutputFilter,AddOutputFilterByType,AddType,Alias,AliasMatch,Allow,AllowCONNECT,AllowEncodedSlashes,AllowMethods,AllowOverride,AllowOverrideList,Anonymous,Anonymous_LogEmail,Anonymous_MustGiveEmail,Anonymous_NoUserID,Anonymous_VerifyEmail,AsyncRequestWorkerFactor,AuthBasicAuthoritative,AuthBasicFake,AuthBasicProvider,AuthBasicUseDigestAlgorithm,AuthDBDUserPWQuery,AuthDBDUserRealmQuery,AuthDBMGroupFile,AuthDBMType,AuthDBMUserFile,AuthDigestAlgorithm,AuthDigestDomain,AuthDigestNonceLifetime,AuthDigestProvider,AuthDigestQop,AuthDigestShmemSize,AuthFormAuthoritative,AuthFormBody,AuthFormDisableNoStore,AuthFormFakeBasicAuth,AuthFormLocation,AuthFormLoginRequiredLocation,AuthFormLoginSuccessLocation,AuthFormLogoutLocation,AuthFormMethod,AuthFormMimetype,AuthFormPassword,AuthFormProvider,AuthFormSitePassphrase,AuthFormSize,AuthFormUsername,AuthGroupFile,AuthLDAPAuthorizePrefix,AuthLDAPBindAuthoritative,AuthLDAPBindDN,AuthLDAPBindPassword,AuthLDAPCharsetConfig,AuthLDAPCompareAsUser,AuthLDAPCompareDNOnServer,AuthLDAPDereferenceAliases,AuthLDAPGroupAttribute,AuthLDAPGroupAttributeIsDN,AuthLDAPInitialBindAsUser,AuthLDAPInitialBindPattern,AuthLDAPMaxSubGroupDepth,AuthLDAPRemoteUserAttribute,AuthLDAPRemoteUserIsDN,AuthLDAPSearchAsUser,AuthLDAPSubGroupAttribute,AuthLDAPSubGroupClass,AuthLDAPUrl,AuthMerging,AuthName,AuthType,AuthUserFile,AuthnCacheContext,AuthnCacheEnable,AuthnCacheProvideFor,AuthnCacheSOCache,AuthnCacheTimeout,AuthnzFcgiCheckAuthnProvider,AuthnzFcgiDefineProvider,AuthzDBDLoginToReferer,AuthzDBDQuery,AuthzDBDRedirectQuery,AuthzDBMType,AuthzSendForbiddenOnFailure,BalancerGrowth,BalancerInherit,BalancerMember,BalancerPersist,BrotliAlterETag,BrotliCompressionMaxInputBlock,BrotliCompressionQuality,BrotliCompressionWindow,BrotliFilterNote,BrowserMatch,BrowserMatchNoCase,BufferSize,BufferedLogs,CGIDScriptTimeout,CGIMapExtension,CGIPassAuth,CGIVar,CacheDefaultExpire,CacheDetailHeader,CacheDirLength,CacheDirLevels,CacheDisable,CacheEnable,CacheFile,CacheHeader,CacheIgnoreCacheControl,CacheIgnoreHeaders,CacheIgnoreNoLastMod,CacheIgnoreQueryString,CacheIgnoreURLSessionIdentifiers,CacheKeyBaseURL,CacheLastModifiedFactor,CacheLock,CacheLockMaxAge,CacheLockPath,CacheMaxExpire,CacheMaxFileSize,CacheMinExpire,CacheMinFileSize,CacheNegotiatedDocs,CacheQuickHandler,CacheReadSize,CacheReadTime,CacheRoot,CacheSocache,CacheSocacheMaxSize,CacheSocacheMaxTime,CacheSocacheMinTime,CacheSocacheReadSize,CacheSocacheReadTime,CacheStaleOnError,CacheStoreExpired,CacheStoreNoStore,CacheStorePrivate,CharsetDefault,CharsetOptions,CharsetSourceEnc,CheckCaseOnly,CheckSpelling,ChrootDir,ContentDigest,CookieDomain,CookieExpires,CookieName,CookieStyle,CookieTracking,CoreDumpDirectory,CustomLog,DBDExptime,DBDInitSQL,DBDKeep,DBDMax,DBDMin,DBDParams,DBDPersist,DBDPrepareSQL,DBDriver,DTracePrivileges,Dav,DavDepthInfinity,DavGenericLockDB,DavLockDB,DavMinTimeout,DefaultIcon,DefaultLanguage,DefaultRuntimeDir,DefaultType,Define,DeflateBufferSize,DeflateCompressionLevel,DeflateFilterNote,DeflateInflateLimitRequestBody,DeflateInflateRatioBurst,DeflateInflateRatioLimit,DeflateMemLevel,DeflateWindowSize,Deny,DirectoryCheckHandler,DirectoryIndex,DirectoryIndexRedirect,DirectorySlash,DocumentRoot,DumpIOInput,DumpIOOutput,EnableExceptionHook,EnableMMAP,EnableSendfile,Error,ErrorDocument,ErrorLog,ErrorLogFormat,Example,ExpiresActive,ExpiresByType,ExpiresDefault,ExtFilterDefine,ExtFilterOptions,ExtendedStatus,FallbackResource,FileETag,FilterChain,FilterDeclare,FilterProtocol,FilterProvider,FilterTrace,ForceLanguagePriority,ForceType,ForensicLog,GlobalLog,GprofDir,GracefulShutdownTimeout,Group,H2CopyFiles,H2Direct,H2EarlyHints,H2MaxSessionStreams,H2MaxWorkerIdleSeconds,H2MaxWorkers,H2MinWorkers,H2ModernTLSOnly,H2Push,H2PushDiarySize,H2PushPriority,H2PushResource,H2SerializeHeaders,H2StreamMaxMemSize,H2TLSCoolDownSecs,H2TLSWarmUpSize,H2Upgrade,H2WindowSize,Header,HeaderName,HeartbeatAddress,HeartbeatListen,HeartbeatMaxServers,HeartbeatStorage,HeartbeatStorage,HostnameLookups,HttpProtocolOptions,ISAPIAppendLogToErrors,ISAPIAppendLogToQuery,ISAPICacheFile,ISAPIFakeAsync,ISAPILogNotSupported,ISAPIReadAheadBuffer,IdentityCheck,IdentityCheckTimeout,ImapBase,ImapDefault,ImapMenu,Include,IncludeOptional,IndexHeadInsert,IndexIgnore,IndexIgnoreReset,IndexOptions,IndexOrderDefault,IndexStyleSheet,InputSed,KeepAlive,KeepAliveTimeout,KeptBodySize,LDAPCacheEntries,LDAPCacheTTL,LDAPConnectionPoolTTL,LDAPConnectionTimeout,LDAPLibraryDebug,LDAPOpCacheEntries,LDAPOpCacheTTL,LDAPReferralHopLimit,LDAPReferrals,LDAPRetries,LDAPRetryDelay,LDAPSharedCacheFile,LDAPSharedCacheSize,LDAPTimeout,LDAPTrustedClientCert,LDAPTrustedGlobalCert,LDAPTrustedMode,LDAPVerifyServerCert,LanguagePriority,LimitInternalRecursion,LimitRequestBody,LimitRequestFieldSize,LimitRequestFields,LimitRequestLine,LimitXMLRequestBody,Listen,ListenBackLog,ListenCoresBucketsRatio,LoadFile,LoadModule,LogFormat,LogIOTrackTTFB,LogLevel,LogMessage,LuaAuthzProvider,LuaCodeCache,LuaHookAccessChecker,LuaHookAuthChecker,LuaHookCheckUserID,LuaHookFixups,LuaHookInsertFilter,LuaHookLog,LuaHookMapToStorage,LuaHookTranslateName,LuaHookTypeChecker,LuaInherit,LuaInputFilter,LuaMapHandler,LuaOutputFilter,LuaPackageCPath,LuaPackagePath,LuaQuickHandler,LuaRoot,LuaScope,MDBaseServer,MDCAChallenges,MDCertificateAgreement,MDCertificateAuthority,MDCertificateProtocol,MDDriveMode,MDHttpProxy,MDMember,MDMembers,MDMustStaple,MDNotifyCmd,MDPortMap,MDPrivateKeys,MDRenewWindow,MDRequireHttps,MDStoreDir,MDomain,MMapFile,MaxConnectionsPerChild,MaxKeepAliveRequests,MaxMemFree,MaxRangeOverlaps,MaxRangeReversals,MaxRanges,MaxRequestWorkers,MaxSpareServers,MaxSpareThreads,MaxThreads,MemcacheConnTTL,MergeTrailers,MetaDir,MetaFiles,MetaSuffix,MimeMagicFile,MinSpareServers,MinSpareThreads,ModMimeUsePathInfo,ModemStandard,MultiviewsMatch,Mutex,NWSSLTrustedCerts,NWSSLUpgradeable,NameVirtualHost,NoProxy,Options,Order,OutputSed,PassEnv,PidFile,PrivilegesMode,Protocol,ProtocolEcho,Protocols,ProtocolsHonorOrder,ProxyAddHeaders,ProxyBadHeader,ProxyBlock,ProxyDomain,ProxyErrorOverride,ProxyExpressDBMFile,ProxyExpressDBMType,ProxyExpressEnable,ProxyFCGIBackendType,ProxyFCGISetEnvIf,ProxyFtpDirCharset,ProxyFtpEscapeWildcards,ProxyFtpListOnWildcard,ProxyHCExpr,ProxyHCTPsize,ProxyHCTemplate,ProxyHTMLBufSize,ProxyHTMLCharsetOut,ProxyHTMLDocType,ProxyHTMLEnable,ProxyHTMLEvents,ProxyHTMLExtended,ProxyHTMLFixups,ProxyHTMLInterp,ProxyHTMLLinks,ProxyHTMLMeta,ProxyHTMLStripComments,ProxyHTMLURLMap,ProxyIOBufferSize,ProxyMaxForwards,ProxyPass,ProxyPassInherit,ProxyPassInterpolateEnv,ProxyPassMatch,ProxyPassReverse,ProxyPassReverseCookieDomain,ProxyPassReverseCookiePath,ProxyPreserveHost,ProxyReceiveBufferSize,ProxyRemote,ProxyRemoteMatch,ProxyRequests,ProxySCGIInternalRedirect,ProxySCGISendfile,ProxySet,ProxySourceAddress,ProxyStatus,ProxyTimeout,ProxyVia,QualifyRedirectURL,RLimitCPU,RLimitMEM,RLimitNPROC,ReadmeName,ReceiveBufferSize,Redirect,RedirectMatch,RedirectPermanent,RedirectTemp,ReflectorHeader,RegisterHttpMethod,RemoteIPHeader,RemoteIPInternalProxy,RemoteIPInternalProxyList,RemoteIPProxiesHeader,RemoteIPTrustedProxy,RemoteIPTrustedProxyList,RemoveCharset,RemoveEncoding,RemoveHandler,RemoveInputFilter,RemoveLanguage,RemoveOutputFilter,RemoveType,RequestHeader,RequestReadTimeout,Require,RewriteBase,RewriteCond,RewriteEngine,RewriteMap,RewriteOptions,RewriteRule,SSIETag,SSIEndTag,SSIErrorMsg,SSILastModified,SSILegacyExprParser,SSIStartTag,SSITimeFormat,SSIUndefinedEcho,SSLCACertificateFile,SSLCACertificatePath,SSLCADNRequestFile,SSLCADNRequestPath,SSLCARevocationCheck,SSLCARevocationFile,SSLCARevocationPath,SSLCertificateChainFile,SSLCertificateFile,SSLCertificateKeyFile,SSLCipherSuite,SSLCompression,SSLCryptoDevice,SSLEngine,SSLFIPS,SSLHonorCipherOrder,SSLInsecureRenegotiation,SSLOCSPDefaultResponder,SSLOCSPEnable,SSLOCSPNoverify,SSLOCSPOverrideResponder,SSLOCSPProxyURL,SSLOCSPResponderCertificateFile,SSLOCSPResponderTimeout,SSLOCSPResponseMaxAge,SSLOCSPResponseTimeSkew,SSLOCSPUseRequestNonce,SSLOpenSSLConfCmd,SSLOptions,SSLPassPhraseDialog,SSLProtocol,SSLProxyCACertificateFile,SSLProxyCACertificatePath,SSLProxyCARevocationCheck,SSLProxyCARevocationFile,SSLProxyCARevocationPath,SSLProxyCheckPeerCN,SSLProxyCheckPeerExpire,SSLProxyCheckPeerName,SSLProxyCipherSuite,SSLProxyEngine,SSLProxyMachineCertificateChainFile,SSLProxyMachineCertificateFile,SSLProxyMachineCertificatePath,SSLProxyProtocol,SSLProxyVerify,SSLProxyVerifyDepth,SSLRandomSeed,SSLRenegBufferSize,SSLRequire,SSLRequireSSL,SSLSRPUnknownUserSeed,SSLSRPVerifierFile,SSLSessionCache,SSLSessionCacheTimeout,SSLSessionTicketKeyFile,SSLSessionTickets,SSLStaplingCache,SSLStaplingErrorCacheTimeout,SSLStaplingFakeTryLater,SSLStaplingForceURL,SSLStaplingResponderTimeout,SSLStaplingResponseMaxAge,SSLStaplingResponseTimeSkew,SSLStaplingReturnResponderErrors,SSLStaplingStandardCacheTimeout,SSLStrictSNIVHostCheck,SSLUseStapling,SSLUserName,SSLVerifyClient,SSLVerifyDepth,Satisfy,ScoreBoardFile,Script,ScriptAlias,ScriptAliasMatch,ScriptInterpreterSource,ScriptLog,ScriptLogBuffer,ScriptLogLength,ScriptSock,SecureListen,SeeRequestTail,SendBufferSize,ServerAdmin,ServerAlias,ServerLimit,ServerName,ServerPath,ServerRoot,ServerSignature,ServerTokens,Session,SessionCookieName,SessionCookieName2,SessionCookieRemove,SessionCryptoCipher,SessionCryptoDriver,SessionCryptoPassphrase,SessionCryptoPassphraseFile,SessionDBDCookieName,SessionDBDCookieName2,SessionDBDCookieRemove,SessionDBDDeleteLabel,SessionDBDInsertLabel,SessionDBDPerUser,SessionDBDSelectLabel,SessionDBDUpdateLabel,SessionEnv,SessionExclude,SessionHeader,SessionInclude,SessionMaxAge,SetEnv,SetEnvIf,SetEnvIfExpr,SetEnvIfNoCase,SetHandler,SetInputFilter,SetOutputFilter,StartServers,StartThreads,Substitute,SubstituteInheritBefore,SubstituteMaxLineLength,Suexec,SuexecUserGroup,ThreadLimit,ThreadStackSize,ThreadsPerChild,TimeOut,TraceEnable,TransferLog,TypesConfig,UnDefine,UndefMacro,UnsetEnv,Use,UseCanonicalName,UseCanonicalPhysicalPort,User,UserDir,VHostCGIMode,VHostCGIPrivs,VHostGroup,VHostPrivs,VHostSecure,VHostUser,VirtualDocumentRoot,VirtualDocumentRootIP,VirtualScriptAlias,VirtualScriptAliasIP,WatchdogInterval,XBitHack,xml2EncAlias,xml2EncDefault,xml2StartParse"]
4051+var CONFIG_OPTIONS=/^[\\+\\-]?(AuthConfig|IncludesNOEXEC|ExecCGI|FollowSymLinks|MultiViews|Includes|Indexes|SymLinksIfOwnerMatch)\b/i;var ALL_KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS+
4052+PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS,CONFIG_KEYWORDS,PHP_KEYWORDS];var C_TYPES=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float|char|void|const|static|struct)\d*(_t)?\b)|[a-z_]+_rec|cmd_parms\b/;var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_NOCODE='nocode';var REGEXP_PRECEDER_PATTERN='(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';function combinePrefixPatterns(regexs){var capturedGroupIndex=0;var needToFoldCase=false;var ignoreCase=false;for(var i=0,n=regexs.length;i<n;++i){var regex=regexs[i];if(regex.ignoreCase){ignoreCase=true;}else if(/[a-z]/i.test(regex.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,''))){needToFoldCase=true;ignoreCase=false;break;}}
4053+var escapeCharToCodeUnit={'b':8,'t':9,'n':0xa,'v':0xb,'f':0xc,'r':0xd};function decodeEscape(charsetPart){var cc0=charsetPart.charCodeAt(0);if(cc0!==92){return cc0;}
4054+var c1=charsetPart.charAt(1);cc0=escapeCharToCodeUnit[c1];if(cc0){return cc0;}else if('0'<=c1&&c1<='7'){return parseInt(charsetPart.substring(1),8);}else if(c1==='u'||c1==='x'){return parseInt(charsetPart.substring(2),16);}else{return charsetPart.charCodeAt(1);}}
4055+function encodeEscape(charCode){if(charCode<0x20){return(charCode<0x10?'\\x0':'\\x')+charCode.toString(16);}
4056+var ch=String.fromCharCode(charCode);return(ch==='\\'||ch==='-'||ch===']'||ch==='^')?"\\"+ch:ch;}
4057+function caseFoldCharset(charSet){var charsetParts=charSet.substring(1,charSet.length-1).match(new RegExp('\\\\u[0-9A-Fa-f]{4}'
4058++'|\\\\x[0-9A-Fa-f]{2}'
4059++'|\\\\[0-3][0-7]{0,2}'
4060++'|\\\\[0-7]{1,2}'
4061++'|\\\\[\\s\\S]'
4062++'|-'
4063++'|[^-\\\\]','g'));var ranges=[];var inverse=charsetParts[0]==='^';var out=['['];if(inverse){out.push('^');}
4064+for(var i=inverse?1:0,n=charsetParts.length;i<n;++i){var p=charsetParts[i];if(/\\[bdsw]/i.test(p)){out.push(p);}else{var start=decodeEscape(p);var end;if(i+2<n&&'-'===charsetParts[i+1]){end=decodeEscape(charsetParts[i+2]);i+=2;}else{end=start;}
4065+ranges.push([start,end]);if(!(end<65||start>122)){if(!(end<65||start>90)){ranges.push([Math.max(65,start)|32,Math.min(end,90)|32]);}
4066+if(!(end<97||start>122)){ranges.push([Math.max(97,start)&~32,Math.min(end,122)&~32]);}}}}
4067+ranges.sort(function(a,b){return(a[0]-b[0])||(b[1]-a[1]);});var consolidatedRanges=[];var lastRange=[];for(var i=0;i<ranges.length;++i){var range=ranges[i];if(range[0]<=lastRange[1]+1){lastRange[1]=Math.max(lastRange[1],range[1]);}else{consolidatedRanges.push(lastRange=range);}}
4068+for(var i=0;i<consolidatedRanges.length;++i){var range=consolidatedRanges[i];out.push(encodeEscape(range[0]));if(range[1]>range[0]){if(range[1]+1>range[0]){out.push('-');}
4069+out.push(encodeEscape(range[1]));}}
4070+out.push(']');return out.join('');}
4071+function allowAnywhereFoldCaseAndRenumberGroups(regex){var parts=regex.source.match(new RegExp('(?:'
4072++'\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'
4073++'|\\\\u[A-Fa-f0-9]{4}'
4074++'|\\\\x[A-Fa-f0-9]{2}'
4075++'|\\\\[0-9]+'
4076++'|\\\\[^ux0-9]'
4077++'|\\(\\?[:!=]'
4078++'|[\\(\\)\\^]'
4079++'|[^\\x5B\\x5C\\(\\)\\^]+'
4080++')','g'));var n=parts.length;var capturedGroups=[];for(var i=0,groupIndex=0;i<n;++i){var p=parts[i];if(p==='('){++groupIndex;}else if('\\'===p.charAt(0)){var decimalValue=+p.substring(1);if(decimalValue){if(decimalValue<=groupIndex){capturedGroups[decimalValue]=-1;}else{parts[i]=encodeEscape(decimalValue);}}}}
4081+for(var i=1;i<capturedGroups.length;++i){if(-1===capturedGroups[i]){capturedGroups[i]=++capturedGroupIndex;}}
4082+for(var i=0,groupIndex=0;i<n;++i){var p=parts[i];if(p==='('){++groupIndex;if(!capturedGroups[groupIndex]){parts[i]='(?:';}}else if('\\'===p.charAt(0)){var decimalValue=+p.substring(1);if(decimalValue&&decimalValue<=groupIndex){parts[i]='\\'+capturedGroups[decimalValue];}}}
4083+for(var i=0;i<n;++i){if('^'===parts[i]&&'^'!==parts[i+1]){parts[i]='';}}
4084+if(regex.ignoreCase&&needToFoldCase){for(var i=0;i<n;++i){var p=parts[i];var ch0=p.charAt(0);if(p.length>=2&&ch0==='['){parts[i]=caseFoldCharset(p);}else if(ch0!=='\\'){parts[i]=p.replace(/[a-zA-Z]/g,function(ch){var cc=ch.charCodeAt(0);return'['+String.fromCharCode(cc&~32,cc|32)+']';});}}}
4085+return parts.join('');}
4086+var rewritten=[];for(var i=0,n=regexs.length;i<n;++i){var regex=regexs[i];if(regex.global||regex.multiline){throw new Error(''+regex);}
4087+rewritten.push('(?:'+allowAnywhereFoldCaseAndRenumberGroups(regex)+')');}
4088+return new RegExp(rewritten.join('|'),ignoreCase?'gi':'g');}
4089+function extractSourceSpans(node,isPreformatted){var nocode=/(?:^|\s)nocode(?:\s|$)/;var chunks=[];var length=0;var spans=[];var k=0;function walk(node){switch(node.nodeType){case 1:if(nocode.test(node.className)){return;}
4090+for(var child=node.firstChild;child;child=child.nextSibling){walk(child);}
4091+var nodeName=node.nodeName.toLowerCase();if('br'===nodeName||'li'===nodeName){chunks[k]='\n';spans[k<<1]=length++;spans[(k++<<1)|1]=node;}
4092+break;case 3:case 4:var text=node.nodeValue;if(text.length){if(!isPreformatted){text=text.replace(/[ \t\r\n]+/g,' ');}else{text=text.replace(/\r\n?/g,'\n');text=text.replace(/^(\r?\n\s*)+/g,'');text=text.replace(/^\s*/g,'');text=text.replace(/(\r?\n\s*)+$/g,'');}
4093+chunks[k]=text;spans[k<<1]=length;length+=text.length;spans[(k++<<1)|1]=node;}
4094+break;}}
4095+walk(node);return{sourceCode:chunks.join('').replace(/\n$/,''),spans:spans};}
4096+function appendDecorations(basePos,sourceCode,langHandler,out){if(!sourceCode){return;}
4097+var job={sourceCode:sourceCode,basePos:basePos};langHandler(job);out.push.apply(out,job.decorations);}
4098+var notWs=/\S/;function childContentWrapper(element){var wrapper=undefined;for(var c=element.firstChild;c;c=c.nextSibling){var type=c.nodeType;wrapper=(type===1)?(wrapper?element:c):(type===3)?(notWs.test(c.nodeValue)?element:wrapper):wrapper;}
4099+return wrapper===element?undefined:wrapper;}
4100+function createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};var tokenizer;(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);var allRegexs=[];var regexKeys={};for(var i=0,n=allPatterns.length;i<n;++i){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}
4101+var regex=patternParts[1];var k=''+regex;if(!regexKeys.hasOwnProperty(k)){allRegexs.push(regex);regexKeys[k]=null;}}
4102+allRegexs.push(/[\0-\uffff]/);tokenizer=combinePrefixPatterns(allRegexs);})();var nPatterns=fallthroughStylePatterns.length;var decorate=function(job){var sourceCode=job.sourceCode,basePos=job.basePos;var decorations=[basePos,PR_PLAIN];var pos=0;var tokens=sourceCode.match(tokenizer)||[];var styleCache={};for(var ti=0,nTokens=tokens.length;ti<nTokens;++ti){var token=tokens[ti];var style=styleCache[token];var match=void 0;var isEmbedded;if(typeof style==='string'){isEmbedded=false;}else{var patternParts=shortcuts[token.charAt(0)];if(patternParts){match=token.match(patternParts[1]);style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];match=token.match(patternParts[1]);if(match){style=patternParts[0];break;}}
4103+if(!match){style=PR_PLAIN;}}
4104+isEmbedded=style.length>=5&&'lang-'===style.substring(0,5);if(isEmbedded&&!(match&&typeof match[1]==='string')){isEmbedded=false;style=PR_SOURCE;}
4105+if(!isEmbedded){styleCache[token]=style;}}
4106+var tokenStart=pos;pos+=token.length;if(!isEmbedded){decorations.push(basePos+tokenStart,style);}else{var embeddedSource=match[1];var embeddedSourceStart=token.indexOf(embeddedSource);var embeddedSourceEnd=embeddedSourceStart+embeddedSource.length;if(match[2]){embeddedSourceEnd=token.length-match[2].length;embeddedSourceStart=embeddedSourceEnd-embeddedSource.length;}
4107+var lang=style.substring(5);appendDecorations(basePos+tokenStart,token.substring(0,embeddedSourceStart),decorate,decorations);appendDecorations(basePos+tokenStart+embeddedSourceStart,embeddedSource,langHandlerForExtension(lang,embeddedSource),decorations);appendDecorations(basePos+tokenStart+embeddedSourceEnd,token.substring(embeddedSourceEnd),decorate,decorations);}}
4108+job.decorations=decorations;};return decorate;}
4109+function sourceDecorator(options){var shortcutStylePatterns=[],fallthroughStylePatterns=[];if(options['tripleQuotedStrings']){shortcutStylePatterns.push([PR_STRING,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,'\'"']);}else if(options['multiLineStrings']){shortcutStylePatterns.push([PR_STRING,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,'\'"`']);}else{shortcutStylePatterns.push([PR_STRING,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"\'']);}
4110+if(options['verbatimStrings']){fallthroughStylePatterns.push([PR_STRING,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);}
4111+var hc=options['hashComments'];if(hc){if(options['cStyleComments']){if(hc>1){shortcutStylePatterns.push([PR_COMMENT,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,'#']);}else{shortcutStylePatterns.push([PR_COMMENT,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,'#']);}
4112+fallthroughStylePatterns.push([PR_STRING,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null]);}else{shortcutStylePatterns.push([PR_COMMENT,/^#[^\r\n]*/,null,'#']);}}
4113+if(options['cStyleComments']){fallthroughStylePatterns.push([PR_COMMENT,/^\/\/[^\r\n]*/,null]);fallthroughStylePatterns.push([PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]);}
4114+if(options['regexLiterals']){var REGEX_LITERAL=('/(?=[^/*])'
4115++'(?:[^/\\x5B\\x5C]'
4116++'|\\x5C[\\s\\S]'
4117++'|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
4118++'/');fallthroughStylePatterns.push(['lang-regex',new RegExp('^'+REGEXP_PRECEDER_PATTERN+'('+REGEX_LITERAL+')')]);}
4119+var types=options['types'];if(types){fallthroughStylePatterns.push([PR_TYPE,types]);}
4120+if(options['strings']){var strings=(""+options['strings']).replace(/^ | $/g,'').replace(/-/g,'\\-');fallthroughStylePatterns.push([PR_STRING,new RegExp('(?:'+strings.replace(/[\s,]+/g,'|')+')'),,null]);}
4121+var keywords=(""+options['keywords']).replace(/^ | $/g,'');if(keywords.length){fallthroughStylePatterns.push([PR_KEYWORD,new RegExp('^(?:'+keywords.replace(/[\s,]+/g,'|')+')\\b'),null]);}
4122+shortcutStylePatterns.push([PR_PLAIN,/^\s+/,null,' \r\n\t\xA0']);if(options['httpdComments']){fallthroughStylePatterns.push([PR_PLAIN,/^.*\S.*#/i,null]);}
4123+fallthroughStylePatterns.push([PR_LITERAL,/^@[a-z_$][a-z_$@0-9]*|\bNULL\b/i,null],[PR_LITERAL,CONFIG_OPTIONS,null],[PR_TAG,/^\b(AuthzProviderAlias|AuthnProviderAlias|RequireAny|RequireAll|RequireNone|Directory|DirectoryMatch|Location|LocationMatch|VirtualHost|If|Else|ElseIf|Proxy\b|LoadBalancer|Files|FilesMatch|Limit|LimitExcept|IfDefine|IfModule|IfVersion)\b/,null],[PR_TYPE,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_(t|req|module)\b)/,null],[PR_TAG,/^apr_[a-z_0-9]+|ap_[a-z_0-9]+/i,null],[PR_PLAIN,/^[a-z_$][a-z_$@0-9\-]*/i,null],[PR_LITERAL,new RegExp('^(?:'
4124++'0x[a-f0-9]+'
4125++'|[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+'
4126++'|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
4127++'(?:e[+\\-]?\\d+)?'
4128++')'
4129++'[a-z]*','i'),null,'0123456789'],[PR_PLAIN,/^\\[\s\S]?/,null],[PR_PUNCTUATION,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns);}
4130+var decorateSource=sourceDecorator({'keywords':ALL_KEYWORDS,'hashComments':true,'cStyleComments':true,'multiLineStrings':true,'regexLiterals':true});function numberLines(node,opt_startLineNum,isPreformatted){var nocode=/(?:^|\s)nocode(?:\s|$)/;var lineBreak=/\r\n?|\n/;var document=node.ownerDocument;var li=document.createElement('li');while(node.firstChild){li.appendChild(node.firstChild);}
4131+var listItems=[li];function walk(node){switch(node.nodeType){case 1:if(nocode.test(node.className)){break;}
4132+if('br'===node.nodeName){breakAfter(node);if(node.parentNode){node.parentNode.removeChild(node);}}else{for(var child=node.firstChild;child;child=child.nextSibling){walk(child);}}
4133+break;case 3:case 4:if(isPreformatted){var text=node.nodeValue;var match=text.match(lineBreak);if(match){var firstLine=text.substring(0,match.index);node.nodeValue=firstLine;var tail=text.substring(match.index+match[0].length);if(tail){var parent=node.parentNode;parent.insertBefore(document.createTextNode(tail),node.nextSibling);}
4134+breakAfter(node);if(!firstLine){node.parentNode.removeChild(node);}}}
4135+break;}}
4136+function breakAfter(lineEndNode){while(!lineEndNode.nextSibling){lineEndNode=lineEndNode.parentNode;if(!lineEndNode){return;}}
4137+function breakLeftOf(limit,copy){var rightSide=copy?limit.cloneNode(false):limit;var parent=limit.parentNode;if(parent){var parentClone=breakLeftOf(parent,1);var next=limit.nextSibling;parentClone.appendChild(rightSide);for(var sibling=next;sibling;sibling=next){next=sibling.nextSibling;parentClone.appendChild(sibling);}}
4138+return rightSide;}
4139+var copiedListItem=breakLeftOf(lineEndNode.nextSibling,0);for(var parent;(parent=copiedListItem.parentNode)&&parent.nodeType===1;){copiedListItem=parent;}
4140+listItems.push(copiedListItem);}
4141+for(var i=0;i<listItems.length;++i){walk(listItems[i]);}
4142+if(opt_startLineNum===(opt_startLineNum|0)){listItems[0].setAttribute('value',opt_startLineNum);}
4143+var ol=document.createElement('ol');ol.className='linenums';var offset=Math.max(0,((opt_startLineNum-1))|0)||0;for(var i=0,n=listItems.length;i<n;++i){li=listItems[i];li.className='L'+((i+offset)%1);if(!li.firstChild){li.appendChild(document.createTextNode('\xA0'));}
4144+ol.appendChild(li);}
4145+node.appendChild(ol);}
4146+function recombineTagsAndDecorations(job){var isIE8OrEarlier=/\bMSIE\s(\d+)/.exec(navigator.userAgent);isIE8OrEarlier=isIE8OrEarlier&&+isIE8OrEarlier[1]<=8;var newlineRe=/\n/g;var source=job.sourceCode;var sourceLength=source.length;var sourceIndex=0;var spans=job.spans;var nSpans=spans.length;var spanIndex=0;var decorations=job.decorations;var nDecorations=decorations.length;var decorationIndex=0;decorations[nDecorations]=sourceLength;var decPos,i;for(i=decPos=0;i<nDecorations;){if(decorations[i]!==decorations[i+2]){decorations[decPos++]=decorations[i++];decorations[decPos++]=decorations[i++];}else{i+=2;}}
4147+nDecorations=decPos;for(i=decPos=0;i<nDecorations;){var startPos=decorations[i];var startDec=decorations[i+1];var end=i+2;while(end+2<=nDecorations&&decorations[end+1]===startDec){end+=2;}
4148+decorations[decPos++]=startPos;decorations[decPos++]=startDec;i=end;}
4149+nDecorations=decorations.length=decPos;var sourceNode=job.sourceNode;var oldDisplay;if(sourceNode){oldDisplay=sourceNode.style.display;sourceNode.style.display='none';}
4150+try{var decoration=null;var X=0;while(spanIndex<nSpans){X=X+1;if(X>5000){break;}
4151+var spanStart=spans[spanIndex];var spanEnd=spans[spanIndex+2]||sourceLength;var decEnd=decorations[decorationIndex+2]||sourceLength;var end=Math.min(spanEnd,decEnd);var textNode=spans[spanIndex+1];var styledText;if(textNode.nodeType!==1&&(styledText=source.substring(sourceIndex,end))){if(isIE8OrEarlier){styledText=styledText.replace(newlineRe,'\r');}
4152+textNode.nodeValue=styledText;var document=textNode.ownerDocument;var span=document.createElement('span');span.className=decorations[decorationIndex+1];var parentNode=textNode.parentNode;parentNode.replaceChild(span,textNode);span.appendChild(textNode);if(sourceIndex<spanEnd){spans[spanIndex+1]=textNode=document.createTextNode(source.substring(end,spanEnd));parentNode.insertBefore(textNode,span.nextSibling);}}
4153+sourceIndex=end;if(sourceIndex>=spanEnd){spanIndex+=2;}
4154+if(sourceIndex>=decEnd){decorationIndex+=2;}}}finally{if(sourceNode){sourceNode.style.display=oldDisplay;}}}
4155+var langHandlerRegistry={};function registerLangHandler(handler,fileExtensions){for(var i=fileExtensions.length;--i>=0;){var ext=fileExtensions[i];if(!langHandlerRegistry.hasOwnProperty(ext)){langHandlerRegistry[ext]=handler;}else if(win['console']){console['warn']('cannot override language handler %s',ext);}}}
4156+function langHandlerForExtension(extension,source){if(!(extension&&langHandlerRegistry.hasOwnProperty(extension))){extension=/^\s*</.test(source)?'default-markup':'default-code';}
4157+return langHandlerRegistry[extension];}
4158+registerLangHandler(decorateSource,['default-code']);registerLangHandler(createSimpleLexer([],[[PR_PLAIN,/^[^<?]+/],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],['lang-',/^<\?([\s\S]+?)(?:\?>|$)/],['lang-',/^<%([\s\S]+?)(?:%>|$)/],[PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],['lang-',/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],['lang-js',/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],['lang-css',/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],['lang-in.tag',/^(<\/?[a-z][^<>]*>)/i]]),['default-markup','htm','html','mxml','xhtml','xml','xsl']);registerLangHandler(createSimpleLexer([[PR_PLAIN,/^[\s]+/,null,' \t\r\n'],[PR_ATTRIB_VALUE,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,'\"\'']],[[PR_TAG,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[PR_ATTRIB_NAME,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],['lang-uq.val',/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[PR_PUNCTUATION,/^[=<>\/]+/],['lang-js',/^on\w+\s*=\s*\"([^\"]+)\"/i],['lang-js',/^on\w+\s*=\s*\'([^\']+)\'/i],['lang-js',/^on\w+\s*=\s*([^\"\'>\s]+)/i],['lang-css',/^style\s*=\s*\"([^\"]+)\"/i],['lang-css',/^style\s*=\s*\'([^\']+)\'/i],['lang-css',/^style\s*=\s*([^\"\'>\s]+)/i]]),['in.tag']);registerLangHandler(createSimpleLexer([],[[PR_ATTRIB_VALUE,/^[\s\S]+/]]),['uq.val']);registerLangHandler(sourceDecorator({'keywords':CPP_KEYWORDS,'hashComments':true,'cStyleComments':true,'types':C_TYPES}),['c','cc','cpp','cxx','cyc','m']);registerLangHandler(sourceDecorator({'keywords':PHP_KEYWORDS,'hashComments':false,'cStyleComments':true,'multiLineStrings':true,'regexLiterals':true}),['php','phtml','inc']);registerLangHandler(sourceDecorator({'keywords':'null,true,false'}),['json']);registerLangHandler(sourceDecorator({'keywords':CSHARP_KEYWORDS,'hashComments':true,'cStyleComments':true,'verbatimStrings':true,'types':C_TYPES}),['cs']);registerLangHandler(sourceDecorator({'keywords':JAVA_KEYWORDS,'cStyleComments':true}),['java']);registerLangHandler(sourceDecorator({'keywords':SH_KEYWORDS,'hashComments':true,'multiLineStrings':true}),['bsh','csh','sh']);registerLangHandler(sourceDecorator({'keywords':PYTHON_KEYWORDS,'hashComments':true,'multiLineStrings':true,'tripleQuotedStrings':true}),['cv','py']);registerLangHandler(sourceDecorator({'keywords':PERL_KEYWORDS,'hashComments':true,'multiLineStrings':true,'regexLiterals':true}),['perl','pl','pm']);registerLangHandler(sourceDecorator({'keywords':RUBY_KEYWORDS,'hashComments':true,'multiLineStrings':true,'regexLiterals':true}),['rb']);registerLangHandler(sourceDecorator({'keywords':JSCRIPT_KEYWORDS,'cStyleComments':true,'regexLiterals':true}),['js']);registerLangHandler(sourceDecorator({'keywords':COFFEE_KEYWORDS,'hashComments':3,'cStyleComments':true,'multilineStrings':true,'tripleQuotedStrings':true,'regexLiterals':true}),['coffee']);registerLangHandler(createSimpleLexer([],[[PR_STRING,/^[\s\S]+/]]),['regex']);registerLangHandler(sourceDecorator({'keywords':CONFIG_KEYWORDS,'literals':CONFIG_OPTIONS,'strings':CONFIG_ENVS,'hashComments':true,'cStyleComments':false,'multiLineStrings':false,'regexLiterals':false,'httpdComments':true}),['config']);function applyDecorator(job){var opt_langExtension=job.langExtension;try{var sourceAndSpans=extractSourceSpans(job.sourceNode,job.pre);var source=sourceAndSpans.sourceCode;job.sourceCode=source;job.spans=sourceAndSpans.spans;job.basePos=0;langHandlerForExtension(opt_langExtension,source)(job);recombineTagsAndDecorations(job);}catch(e){if(win['console']){console['log'](e&&e['stack']?e['stack']:e);}}}
4159+function prettyPrintOne(sourceCodeHtml,opt_langExtension,opt_numberLines){var container=document.createElement('pre');container.innerHTML=sourceCodeHtml;if(opt_numberLines){numberLines(container,opt_numberLines,true);}
4160+var job={langExtension:opt_langExtension,numberLines:opt_numberLines,sourceNode:container,pre:1};applyDecorator(job);return container.innerHTML;}
4161+function prettyPrint(opt_whenDone){function byTagName(tn){return document.getElementsByTagName(tn);}
4162+var codeSegments=[byTagName('pre'),byTagName('code'),byTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0,n=codeSegments[i].length;j<n;++j){elements.push(codeSegments[i][j]);}}
4163+codeSegments=null;var clock=Date;if(!clock['now']){clock={'now':function(){return+(new Date);}};}
4164+var k=0;var prettyPrintingJob;var langExtensionRe=/\blang(?:uage)?-([\w.]+)(?!\S)/;var prettyPrintRe=/\bprettyprint\b/;var prettyPrintedRe=/\bprettyprinted\b/;var preformattedTagNameRe=/pre|xmp/i;var codeRe=/^code$/i;var preCodeXmpRe=/^(?:pre|code|xmp)$/i;function doWork(){var endTime=(win['PR_SHOULD_USE_CONTINUATION']?clock['now']()+250:Infinity);for(;k<elements.length&&clock['now']()<endTime;k++){var cs=elements[k];var className=cs.className;if(prettyPrintRe.test(className)&&!prettyPrintedRe.test(className)){var nested=false;for(var p=cs.parentNode;p;p=p.parentNode){var tn=p.tagName;if(preCodeXmpRe.test(tn)&&p.className&&prettyPrintRe.test(p.className)){nested=true;break;}}
4165+if(!nested){cs.className+=' prettyprinted';var langExtension=className.match(langExtensionRe);var wrapper;if(!langExtension&&(wrapper=childContentWrapper(cs))&&codeRe.test(wrapper.tagName)){langExtension=wrapper.className.match(langExtensionRe);}
4166+if(langExtension){langExtension=langExtension[1];}
4167+var preformatted;if(preformattedTagNameRe.test(cs.tagName)){preformatted=1;}else{var currentStyle=cs['currentStyle'];var whitespace=(currentStyle?currentStyle['whiteSpace']:(document.defaultView&&document.defaultView.getComputedStyle)?document.defaultView.getComputedStyle(cs,null).getPropertyValue('white-space'):0);preformatted=whitespace&&'pre'===whitespace.substring(0,3);}
4168+var lineNums=cs.className.match(/\blinenums\b(?::(\d+))?/);lineNums=lineNums?lineNums[1]&&lineNums[1].length?+lineNums[1]:true:false;if(lineNums){numberLines(cs,lineNums,preformatted);}
4169+prettyPrintingJob={langExtension:langExtension,sourceNode:cs,numberLines:lineNums,pre:preformatted};applyDecorator(prettyPrintingJob);}}}
4170+if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}
4171+doWork();}
4172+var PR=win['PR']={'createSimpleLexer':createSimpleLexer,'registerLangHandler':registerLangHandler,'sourceDecorator':sourceDecorator,'PR_ATTRIB_NAME':PR_ATTRIB_NAME,'PR_ATTRIB_VALUE':PR_ATTRIB_VALUE,'PR_COMMENT':PR_COMMENT,'PR_DECLARATION':PR_DECLARATION,'PR_KEYWORD':PR_KEYWORD,'PR_LITERAL':PR_LITERAL,'PR_NOCODE':PR_NOCODE,'PR_PLAIN':PR_PLAIN,'PR_PUNCTUATION':PR_PUNCTUATION,'PR_SOURCE':PR_SOURCE,'PR_STRING':PR_STRING,'PR_TAG':PR_TAG,'PR_TYPE':PR_TYPE,'prettyPrintOne':win['prettyPrintOne']=prettyPrintOne,'prettyPrint':win['prettyPrint']=prettyPrint};PR['registerLangHandler'](PR['createSimpleLexer']([[PR['PR_PLAIN'],/^[\t\n\r \xA0]+/,null,'\t\n\r \xA0'],[PR['PR_STRING'],/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,'"\'']],[[PR['PR_COMMENT'],/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR['PR_TYPE'],/^nil|false|true/],[PR['PR_STRING'],/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR['PR_KEYWORD'],/^(?:and|break|do|else|elseif|end|for|function|if|in|local|not|or|repeat|require|return|then|until|while)\b/,null],[PR['PR_LITERAL'],/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR['PR_PLAIN'],/^[a-z_]\w*/i],[PR['PR_PUNCTUATION'],/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),['lua']);if(typeof define==="function"&&define['amd']){define("google-code-prettify",[],function(){return PR;});}})();
4173\ No newline at end of file
4174diff --git a/docs/manual/style/sitemap.dtd b/docs/manual/style/sitemap.dtd
4175new file mode 100644
4176index 0000000..829f326
4177--- /dev/null
4178+++ b/docs/manual/style/sitemap.dtd
4179@@ -0,0 +1,42 @@
4180+<?xml version='1.0' encoding='UTF-8' ?>
4181+
4182+<!--
4183+ Licensed to the Apache Software Foundation (ASF) under one or more
4184+ contributor license agreements. See the NOTICE file distributed with
4185+ this work for additional information regarding copyright ownership.
4186+ The ASF licenses this file to You under the Apache License, Version 2.0
4187+ (the "License"); you may not use this file except in compliance with
4188+ the License. You may obtain a copy of the License at
4189+
4190+ http://www.apache.org/licenses/LICENSE-2.0
4191+
4192+ Unless required by applicable law or agreed to in writing, software
4193+ distributed under the License is distributed on an "AS IS" BASIS,
4194+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4195+ See the License for the specific language governing permissions and
4196+ limitations under the License.
4197+-->
4198+
4199+<!ENTITY % common SYSTEM "common.dtd">
4200+%common;
4201+
4202+<!-- <sitemap> is the root element -->
4203+<!ELEMENT sitemap (title, summary?, seealso*, category*)>
4204+
4205+<!ATTLIST sitemap metafile CDATA #REQUIRED
4206+ upgrade CDATA #IMPLIED
4207+>
4208+
4209+<!-- <indexpage> is another root element -->
4210+<!ELEMENT indexpage (parentdocument, title, category*)>
4211+
4212+<!ATTLIST indexpage metafile CDATA #REQUIRED
4213+ upgrade CDATA #IMPLIED
4214+>
4215+
4216+<!ELEMENT category (title, page*)>
4217+<!ATTLIST category id ID #IMPLIED>
4218+
4219+<!ELEMENT page (#PCDATA)>
4220+<!ATTLIST page href CDATA #IMPLIED
4221+ separate (yes | no) "no" >
4222diff --git a/docs/manual/style/version.ent b/docs/manual/style/version.ent
4223new file mode 100644
4224index 0000000..6e21f89
4225--- /dev/null
4226+++ b/docs/manual/style/version.ent
4227@@ -0,0 +1,24 @@
4228+<?xml version='1.0' encoding='UTF-8' ?>
4229+
4230+<!--
4231+ Licensed to the Apache Software Foundation (ASF) under one or more
4232+ contributor license agreements. See the NOTICE file distributed with
4233+ this work for additional information regarding copyright ownership.
4234+ The ASF licenses this file to You under the Apache License, Version 2.0
4235+ (the "License"); you may not use this file except in compliance with
4236+ the License. You may obtain a copy of the License at
4237+
4238+ http://www.apache.org/licenses/LICENSE-2.0
4239+
4240+ Unless required by applicable law or agreed to in writing, software
4241+ distributed under the License is distributed on an "AS IS" BASIS,
4242+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4243+ See the License for the specific language governing permissions and
4244+ limitations under the License.
4245+-->
4246+
4247+<!ENTITY httpd.major "2">
4248+<!ENTITY httpd.minor "4">
4249+<!ENTITY httpd.patch "33">
4250+
4251+<!ENTITY httpd.docs "2.4">
4252diff --git a/docs/manual/suexec.html b/docs/manual/suexec.html
4253new file mode 100644
4254index 0000000..c4cc65b
4255--- /dev/null
4256+++ b/docs/manual/suexec.html
4257@@ -0,0 +1,21 @@
4258+# GENERATED FROM XML -- DO NOT EDIT
4259+
4260+URI: suexec.html.en
4261+Content-Language: en
4262+Content-type: text/html; charset=ISO-8859-1
4263+
4264+URI: suexec.html.fr
4265+Content-Language: fr
4266+Content-type: text/html; charset=ISO-8859-1
4267+
4268+URI: suexec.html.ja.utf8
4269+Content-Language: ja
4270+Content-type: text/html; charset=UTF-8
4271+
4272+URI: suexec.html.ko.euc-kr
4273+Content-Language: ko
4274+Content-type: text/html; charset=EUC-KR
4275+
4276+URI: suexec.html.tr.utf8
4277+Content-Language: tr
4278+Content-type: text/html; charset=UTF-8
4279diff --git a/docs/manual/suexec.html.en b/docs/manual/suexec.html.en
4280new file mode 100644
4281index 0000000..526e793
4282--- /dev/null
4283+++ b/docs/manual/suexec.html.en
4284@@ -0,0 +1,643 @@
4285+<?xml version="1.0" encoding="ISO-8859-1"?>
4286+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4287+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
4288+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
4289+<!--
4290+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4291+ This file is generated from xml source: DO NOT EDIT
4292+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4293+ -->
4294+<title>suEXEC Support - Apache HTTP Server Version 2.4</title>
4295+<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
4296+<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
4297+<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
4298+<script src="./style/scripts/prettify.min.js" type="text/javascript">
4299+</script>
4300+
4301+<link href="./images/favicon.ico" rel="shortcut icon" /></head>
4302+<body id="manual-page"><div id="page-header">
4303+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
4304+<p class="apache">Apache HTTP Server Version 2.4</p>
4305+<img alt="" src="./images/feather.png" /></div>
4306+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
4307+<div id="path">
4308+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>suEXEC Support</h1>
4309+<div class="toplang">
4310+<p><span>Available Languages: </span><a href="./en/suexec.html" title="English">&nbsp;en&nbsp;</a> |
4311+<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
4312+<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
4313+<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
4314+<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
4315+</div>
4316+
4317+ <p>The <strong>suEXEC</strong> feature provides users of the Apache
4318+ HTTP Server the ability
4319+ to run <strong>CGI</strong> and <strong>SSI</strong> programs
4320+ under user IDs different from the user ID of the calling
4321+ web server. Normally, when a CGI or SSI program executes, it
4322+ runs as the same user who is running the web server.</p>
4323+
4324+ <p>Used properly, this feature can reduce
4325+ considerably the security risks involved with allowing users to
4326+ develop and run private CGI or SSI programs. However, if suEXEC
4327+ is improperly configured, it can cause any number of problems
4328+ and possibly create new holes in your computer's security. If
4329+ you aren't familiar with managing <em>setuid root</em> programs
4330+ and the security issues they present, we highly recommend that
4331+ you not consider using suEXEC.</p>
4332+ </div>
4333+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Before we begin</a></li>
4334+<li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC Security Model</a></li>
4335+<li><img alt="" src="./images/down.gif" /> <a href="#install">Configuring &amp; Installing
4336+ suEXEC</a></li>
4337+<li><img alt="" src="./images/down.gif" /> <a href="#enable">Enabling &amp; Disabling
4338+ suEXEC</a></li>
4339+<li><img alt="" src="./images/down.gif" /> <a href="#usage">Using suEXEC</a></li>
4340+<li><img alt="" src="./images/down.gif" /> <a href="#debug">Debugging suEXEC</a></li>
4341+<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Beware the Jabberwock:
4342+ Warnings &amp; Examples</a></li>
4343+</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
4344+<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4345+<div class="section">
4346+<h2><a name="before" id="before">Before we begin</a></h2>
4347+
4348+ <p>Before jumping head-first into this document,
4349+ you should be aware that certain assumptions are made about you and
4350+ the environment in which you will be using suexec.</p>
4351+
4352+ <p>First, it is assumed that you are using a UNIX
4353+ derivative operating system that is capable of
4354+ <strong>setuid</strong> and <strong>setgid</strong> operations.
4355+ All command examples are given in this regard. Other platforms,
4356+ if they are capable of supporting suEXEC, may differ in their
4357+ configuration.</p>
4358+
4359+ <p>Second, it is assumed you are familiar with
4360+ some basic concepts of your computer's security and its
4361+ administration. This involves an understanding of
4362+ <strong>setuid/setgid</strong> operations and the various
4363+ effects they may have on your system and its level of
4364+ security.</p>
4365+
4366+ <p>Third, it is assumed that you are using an
4367+ <strong>unmodified</strong> version of suEXEC code. All code
4368+ for suEXEC has been carefully scrutinized and tested by the
4369+ developers as well as numerous beta testers. Every precaution
4370+ has been taken to ensure a simple yet solidly safe base of
4371+ code. Altering this code can cause unexpected problems and new
4372+ security risks. It is <strong>highly</strong> recommended you
4373+ not alter the suEXEC code unless you are well versed in the
4374+ particulars of security programming and are willing to share
4375+ your work with the Apache HTTP Server development team for consideration.</p>
4376+
4377+ <p>Fourth, and last, it has been the decision of
4378+ the Apache HTTP Server development team to <strong>NOT</strong> make suEXEC part of
4379+ the default installation of Apache httpd. To this end, suEXEC
4380+ configuration requires of the administrator careful attention
4381+ to details. After due consideration has been given to the
4382+ various settings for suEXEC, the administrator may install
4383+ suEXEC through normal installation methods. The values for
4384+ these settings need to be carefully determined and specified by
4385+ the administrator to properly maintain system security during
4386+ the use of suEXEC functionality. It is through this detailed
4387+ process that we hope to limit suEXEC
4388+ installation only to those who are careful and determined
4389+ enough to use it.</p>
4390+
4391+ <p>Still with us? Yes? Good. Let's move on!</p>
4392+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4393+<div class="section">
4394+<h2><a name="model" id="model">suEXEC Security Model</a></h2>
4395+
4396+ <p>Before we begin configuring and installing
4397+ suEXEC, we will first discuss the security model you are about
4398+ to implement. By doing so, you may better understand what
4399+ exactly is going on inside suEXEC and what precautions are
4400+ taken to ensure your system's security.</p>
4401+
4402+ <p><strong>suEXEC</strong> is based on a setuid
4403+ "wrapper" program that is called by the main Apache HTTP Server.
4404+ This wrapper is called when an HTTP request is made for a CGI
4405+ or SSI program that the administrator has designated to run as
4406+ a userid other than that of the main server. When such a
4407+ request is made, Apache httpd provides the suEXEC wrapper with the
4408+ program's name and the user and group IDs under which the
4409+ program is to execute.</p>
4410+
4411+ <p>The wrapper then employs the following process
4412+ to determine success or failure -- if any one of these
4413+ conditions fail, the program logs the failure and exits with an
4414+ error, otherwise it will continue:</p>
4415+
4416+ <ol>
4417+ <li>
4418+ <strong>Is the user executing this wrapper a valid user of
4419+ this system?</strong>
4420+
4421+ <p class="indent">
4422+ This is to ensure that the user executing the wrapper is
4423+ truly a user of the system.
4424+ </p>
4425+ </li>
4426+
4427+ <li>
4428+ <strong>Was the wrapper called with the proper number of
4429+ arguments?</strong>
4430+
4431+ <p class="indent">
4432+ The wrapper will only execute if it is given the proper
4433+ number of arguments. The proper argument format is known
4434+ to the Apache HTTP Server. If the wrapper is not receiving
4435+ the proper number of arguments, it is either being
4436+ hacked, or there is something wrong with the suEXEC
4437+ portion of your Apache httpd binary.
4438+ </p>
4439+ </li>
4440+
4441+ <li>
4442+ <strong>Is this valid user allowed to run the
4443+ wrapper?</strong>
4444+
4445+ <p class="indent">
4446+ Is this user the user allowed to run this wrapper? Only
4447+ one user (the Apache user) is allowed to execute this
4448+ program.
4449+ </p>
4450+ </li>
4451+
4452+ <li>
4453+ <strong>Does the target CGI or SSI program have an unsafe
4454+ hierarchical reference?</strong>
4455+
4456+ <p class="indent">
4457+ Does the target CGI or SSI program's path contain a leading
4458+ '/' or have a '..' backreference? These are not allowed; the
4459+ target CGI/SSI program must reside within suEXEC's document
4460+ root (see <code>--with-suexec-docroot=<em>DIR</em></code>
4461+ below).
4462+ </p>
4463+ </li>
4464+
4465+ <li>
4466+ <strong>Is the target user name valid?</strong>
4467+
4468+ <p class="indent">
4469+ Does the target user exist?
4470+ </p>
4471+ </li>
4472+
4473+ <li>
4474+ <strong>Is the target group name valid?</strong>
4475+
4476+ <p class="indent">
4477+ Does the target group exist?
4478+ </p>
4479+ </li>
4480+
4481+ <li>
4482+ <strong>Is the target user <em>NOT</em> superuser?</strong>
4483+
4484+
4485+ <p class="indent">
4486+ suEXEC does not allow <code><em>root</em></code>
4487+ to execute CGI/SSI programs.
4488+ </p>
4489+ </li>
4490+
4491+ <li>
4492+ <strong>Is the target userid <em>ABOVE</em> the minimum ID
4493+ number?</strong>
4494+
4495+ <p class="indent">
4496+ The minimum user ID number is specified during
4497+ configuration. This allows you to set the lowest possible
4498+ userid that will be allowed to execute CGI/SSI programs.
4499+ This is useful to block out "system" accounts.
4500+ </p>
4501+ </li>
4502+
4503+ <li>
4504+ <strong>Is the target group <em>NOT</em> the superuser
4505+ group?</strong>
4506+
4507+ <p class="indent">
4508+ Presently, suEXEC does not allow the <code><em>root</em></code>
4509+ group to execute CGI/SSI programs.
4510+ </p>
4511+ </li>
4512+
4513+ <li>
4514+ <strong>Is the target groupid <em>ABOVE</em> the minimum ID
4515+ number?</strong>
4516+
4517+ <p class="indent">
4518+ The minimum group ID number is specified during
4519+ configuration. This allows you to set the lowest possible
4520+ groupid that will be allowed to execute CGI/SSI programs.
4521+ This is useful to block out "system" groups.
4522+ </p>
4523+ </li>
4524+
4525+ <li>
4526+ <strong>Can the wrapper successfully become the target user
4527+ and group?</strong>
4528+
4529+ <p class="indent">
4530+ Here is where the program becomes the target user and
4531+ group via setuid and setgid calls. The group access list
4532+ is also initialized with all of the groups of which the
4533+ user is a member.
4534+ </p>
4535+ </li>
4536+
4537+ <li>
4538+ <strong>Can we change directory to the one in which the target
4539+ CGI/SSI program resides?</strong>
4540+
4541+ <p class="indent">
4542+ If it doesn't exist, it can't very well contain files. If we
4543+ can't change directory to it, it might as well not exist.
4544+ </p>
4545+ </li>
4546+
4547+ <li>
4548+ <strong>Is the directory within the httpd webspace?</strong>
4549+
4550+ <p class="indent">
4551+ If the request is for a regular portion of the server, is
4552+ the requested directory within suEXEC's document root? If
4553+ the request is for a <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>, is the requested directory
4554+ within the directory configured as suEXEC's userdir (see
4555+ <a href="#install">suEXEC's configuration options</a>)?
4556+ </p>
4557+ </li>
4558+
4559+ <li>
4560+ <strong>Is the directory <em>NOT</em> writable by anyone
4561+ else?</strong>
4562+
4563+ <p class="indent">
4564+ We don't want to open up the directory to others; only
4565+ the owner user may be able to alter this directories
4566+ contents.
4567+ </p>
4568+ </li>
4569+
4570+ <li>
4571+ <strong>Does the target CGI/SSI program exist?</strong>
4572+
4573+ <p class="indent">
4574+ If it doesn't exists, it can't very well be executed.
4575+ </p>
4576+ </li>
4577+
4578+ <li>
4579+ <strong>Is the target CGI/SSI program <em>NOT</em> writable
4580+ by anyone else?</strong>
4581+
4582+ <p class="indent">
4583+ We don't want to give anyone other than the owner the
4584+ ability to change the CGI/SSI program.
4585+ </p>
4586+ </li>
4587+
4588+ <li>
4589+ <strong>Is the target CGI/SSI program <em>NOT</em> setuid or
4590+ setgid?</strong>
4591+
4592+ <p class="indent">
4593+ We do not want to execute programs that will then change
4594+ our UID/GID again.
4595+ </p>
4596+ </li>
4597+
4598+ <li>
4599+ <strong>Is the target user/group the same as the program's
4600+ user/group?</strong>
4601+
4602+ <p class="indent">
4603+ Is the user the owner of the file?
4604+ </p>
4605+ </li>
4606+
4607+ <li>
4608+ <strong>Can we successfully clean the process environment
4609+ to ensure safe operations?</strong>
4610+
4611+ <p class="indent">
4612+ suEXEC cleans the process' environment by establishing a
4613+ safe execution PATH (defined during configuration), as
4614+ well as only passing through those variables whose names
4615+ are listed in the safe environment list (also created
4616+ during configuration).
4617+ </p>
4618+ </li>
4619+
4620+ <li>
4621+ <strong>Can we successfully become the target CGI/SSI program
4622+ and execute?</strong>
4623+
4624+ <p class="indent">
4625+ Here is where suEXEC ends and the target CGI/SSI program begins.
4626+ </p>
4627+ </li>
4628+ </ol>
4629+
4630+ <p>This is the standard operation of the
4631+ suEXEC wrapper's security model. It is somewhat stringent and
4632+ can impose new limitations and guidelines for CGI/SSI design,
4633+ but it was developed carefully step-by-step with security in
4634+ mind.</p>
4635+
4636+ <p>For more information as to how this security
4637+ model can limit your possibilities in regards to server
4638+ configuration, as well as what security risks can be avoided
4639+ with a proper suEXEC setup, see the <a href="#jabberwock">"Beware the Jabberwock"</a> section of this
4640+ document.</p>
4641+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4642+<div class="section">
4643+<h2><a name="install" id="install">Configuring &amp; Installing
4644+ suEXEC</a></h2>
4645+
4646+ <p>Here's where we begin the fun.</p>
4647+
4648+ <p><strong>suEXEC configuration
4649+ options</strong><br />
4650+ </p>
4651+
4652+ <dl>
4653+ <dt><code>--enable-suexec</code></dt>
4654+
4655+ <dd>This option enables the suEXEC feature which is never
4656+ installed or activated by default. At least one
4657+ <code>--with-suexec-xxxxx</code> option has to be provided
4658+ together with the <code>--enable-suexec</code> option to let
4659+ APACI accept your request for using the suEXEC feature.</dd>
4660+
4661+ <dt><code>--with-suexec-bin=<em>PATH</em></code></dt>
4662+
4663+ <dd>The path to the <code>suexec</code> binary must be hard-coded
4664+ in the server for security reasons. Use this option to override
4665+ the default path. <em>e.g.</em>
4666+ <code>--with-suexec-bin=/usr/sbin/suexec</code></dd>
4667+
4668+ <dt><code>--with-suexec-caller=<em>UID</em></code></dt>
4669+
4670+ <dd>The <a href="mod/mpm_common.html#user">username</a> under which
4671+ httpd normally runs. This is the only user allowed to
4672+ execute the suEXEC wrapper.</dd>
4673+
4674+ <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt>
4675+
4676+ <dd>Define to be the subdirectory under users' home
4677+ directories where suEXEC access should be allowed. All
4678+ executables under this directory will be executable by suEXEC
4679+ as the user so they should be "safe" programs. If you are
4680+ using a "simple" <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>
4681+ directive (ie. one without a "*" in it) this should be set to the same
4682+ value. suEXEC will not work properly in cases where the <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> directive points to
4683+ a location that is not the same as the user's home directory
4684+ as referenced in the <code>passwd</code> file. Default value is
4685+ "<code>public_html</code>".<br />
4686+ If you have virtual hosts with a different <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> for each,
4687+ you will need to define them to all reside in one parent
4688+ directory; then name that parent directory here. <strong>If
4689+ this is not defined properly, "~userdir" cgi requests will
4690+ not work!</strong></dd>
4691+
4692+ <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt>
4693+
4694+ <dd>Define as the DocumentRoot set for httpd. This will be
4695+ the only hierarchy (aside from <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>s) that can be used for suEXEC behavior. The
4696+ default directory is the <code>--datadir</code> value with the suffix
4697+ "<code>/htdocs</code>", <em>e.g.</em> if you configure with
4698+ "<code>--datadir=/home/apache</code>" the directory
4699+ "<code>/home/apache/htdocs</code>" is used as document root for the
4700+ suEXEC wrapper.</dd>
4701+
4702+ <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>
4703+
4704+ <dd>Define this as the lowest UID allowed to be a target user
4705+ for suEXEC. For most systems, 500 or 100 is common. Default
4706+ value is 100.</dd>
4707+
4708+ <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>
4709+
4710+ <dd>Define this as the lowest GID allowed to be a target
4711+ group for suEXEC. For most systems, 100 is common and
4712+ therefore used as default value.</dd>
4713+
4714+ <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt>
4715+
4716+ <dd>This defines the filename to which all suEXEC
4717+ transactions and errors are logged (useful for auditing and
4718+ debugging purposes). By default the logfile is named
4719+ "<code>suexec_log</code>" and located in your standard logfile
4720+ directory (<code>--logfiledir</code>).</dd>
4721+
4722+ <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt>
4723+
4724+ <dd>Define a safe PATH environment to pass to CGI
4725+ executables. Default value is
4726+ "<code>/usr/local/bin:/usr/bin:/bin</code>".</dd>
4727+ </dl>
4728+
4729+ <h3>Compiling and installing the suEXEC wrapper</h3>
4730+
4731+
4732+ <p>If you have enabled the suEXEC feature with the
4733+ <code>--enable-suexec</code> option the <code>suexec</code> binary
4734+ (together with httpd itself) is automatically built if you execute
4735+ the <code>make</code> command.</p>
4736+
4737+ <p>After all components have been built you can execute the
4738+ command <code>make install</code> to install them. The binary image
4739+ <code>suexec</code> is installed in the directory defined by the
4740+ <code>--sbindir</code> option. The default location is
4741+ "/usr/local/apache2/bin/suexec".</p>
4742+
4743+ <p>Please note that you need <strong><em>root
4744+ privileges</em></strong> for the installation step. In order
4745+ for the wrapper to set the user ID, it must be installed as
4746+ owner <code><em>root</em></code> and must have the setuserid
4747+ execution bit set for file modes.</p>
4748+
4749+
4750+ <h3>Setting paranoid permissions</h3>
4751+
4752+
4753+ <p>Although the suEXEC wrapper will check to ensure that its
4754+ caller is the correct user as specified with the
4755+ <code>--with-suexec-caller</code> <code class="program"><a href="./programs/configure.html">configure</a></code>
4756+ option, there is
4757+ always the possibility that a system or library call suEXEC uses
4758+ before this check may be exploitable on your system. To counter
4759+ this, and because it is best-practise in general, you should use
4760+ filesystem permissions to ensure that only the group httpd
4761+ runs as may execute suEXEC.</p>
4762+
4763+ <p>If for example, your web server is configured to run as:</p>
4764+
4765+ <pre class="prettyprint lang-config">User www
4766+Group webgroup</pre>
4767+
4768+
4769+ <p>and <code class="program"><a href="./programs/suexec.html">suexec</a></code> is installed at
4770+ "/usr/local/apache2/bin/suexec", you should run:</p>
4771+
4772+ <div class="example"><p><code>
4773+ chgrp webgroup /usr/local/apache2/bin/suexec<br />
4774+ chmod 4750 /usr/local/apache2/bin/suexec<br />
4775+ </code></p></div>
4776+
4777+ <p>This will ensure that only the group httpd runs as can even
4778+ execute the suEXEC wrapper.</p>
4779+
4780+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4781+<div class="section">
4782+<h2><a name="enable" id="enable">Enabling &amp; Disabling
4783+ suEXEC</a></h2>
4784+
4785+ <p>Upon startup of httpd, it looks for the file
4786+ <code class="program"><a href="./programs/suexec.html">suexec</a></code> in the directory defined by the
4787+ <code>--sbindir</code> option (default is
4788+ "/usr/local/apache/sbin/suexec"). If httpd finds a properly
4789+ configured suEXEC wrapper, it will print the following message
4790+ to the error log:</p>
4791+
4792+<div class="example"><p><code>
4793+ [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>)
4794+</code></p></div>
4795+
4796+ <p>If you don't see this message at server startup, the server is
4797+ most likely not finding the wrapper program where it expects
4798+ it, or the executable is not installed <em>setuid root</em>.</p>
4799+
4800+ <p>If you want to enable the suEXEC mechanism for the first time
4801+ and an Apache HTTP Server is already running you must kill and
4802+ restart httpd. Restarting it with a simple HUP or USR1 signal
4803+ will not be enough. </p>
4804+ <p>If you want to disable suEXEC you should kill and restart
4805+ httpd after you have removed the <code class="program"><a href="./programs/suexec.html">suexec</a></code> file.</p>
4806+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4807+<div class="section">
4808+<h2><a name="usage" id="usage">Using suEXEC</a></h2>
4809+
4810+ <p>Requests for CGI programs will call the suEXEC wrapper only if
4811+ they are for a virtual host containing a <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive or if
4812+ they are processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>.</p>
4813+
4814+ <p><strong>Virtual Hosts:</strong><br /> One way to use the suEXEC
4815+ wrapper is through the <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive in
4816+ <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> definitions. By
4817+ setting this directive to values different from the main server
4818+ user ID, all requests for CGI resources will be executed as the
4819+ <em>User</em> and <em>Group</em> defined for that <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>. If this
4820+ directive is not specified for a <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> then the main server userid
4821+ is assumed.</p>
4822+
4823+ <p><strong>User directories:</strong><br /> Requests that are
4824+ processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> will call the suEXEC
4825+ wrapper to execute CGI programs under the userid of the requested
4826+ user directory. The only requirement needed for this feature to
4827+ work is for CGI execution to be enabled for the user and that the
4828+ script must meet the scrutiny of the <a href="#model">security
4829+ checks</a> above. See also the
4830+ <code>--with-suexec-userdir</code> <a href="#install">compile
4831+ time option</a>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4832+<div class="section">
4833+<h2><a name="debug" id="debug">Debugging suEXEC</a></h2>
4834+
4835+ <p>The suEXEC wrapper will write log information
4836+ to the file defined with the <code>--with-suexec-logfile</code>
4837+ option as indicated above. If you feel you have configured and
4838+ installed the wrapper properly, have a look at this log and the
4839+ error_log for the server to see where you may have gone astray.</p>
4840+
4841+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4842+<div class="section">
4843+<h2><a name="jabberwock" id="jabberwock">Beware the Jabberwock:
4844+ Warnings &amp; Examples</a></h2>
4845+
4846+ <p><strong>NOTE!</strong> This section may not be
4847+ complete. For the latest revision of this section of the
4848+ documentation, see the <a href="http://httpd.apache.org/docs/2.4/suexec.html">Online
4849+ Documentation</a> version.</p>
4850+
4851+ <p>There are a few points of interest regarding
4852+ the wrapper that can cause limitations on server setup. Please
4853+ review these before submitting any "bugs" regarding suEXEC.</p>
4854+
4855+ <ul>
4856+ <li><strong>suEXEC Points Of Interest</strong></li>
4857+
4858+ <li>
4859+ Hierarchy limitations
4860+
4861+ <p class="indent">
4862+ For security and efficiency reasons, all suEXEC requests
4863+ must remain within either a top-level document root for
4864+ virtual host requests, or one top-level personal document
4865+ root for userdir requests. For example, if you have four
4866+ VirtualHosts configured, you would need to structure all
4867+ of your VHosts' document roots off of one main httpd
4868+ document hierarchy to take advantage of suEXEC for
4869+ VirtualHosts. (Example forthcoming.)
4870+ </p>
4871+ </li>
4872+
4873+ <li>
4874+ suEXEC's PATH environment variable
4875+
4876+ <p class="indent">
4877+ This can be a dangerous thing to change. Make certain
4878+ every path you include in this define is a
4879+ <strong>trusted</strong> directory. You don't want to
4880+ open people up to having someone from across the world
4881+ running a trojan horse on them.
4882+ </p>
4883+ </li>
4884+
4885+ <li>
4886+ Altering the suEXEC code
4887+
4888+ <p class="indent">
4889+ Again, this can cause <strong>Big Trouble</strong> if you
4890+ try this without knowing what you are doing. Stay away
4891+ from it if at all possible.
4892+ </p>
4893+ </li>
4894+ </ul>
4895+
4896+</div></div>
4897+<div class="bottomlang">
4898+<p><span>Available Languages: </span><a href="./en/suexec.html" title="English">&nbsp;en&nbsp;</a> |
4899+<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
4900+<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
4901+<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
4902+<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
4903+</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
4904+<script type="text/javascript"><!--//--><![CDATA[//><!--
4905+var comments_shortname = 'httpd';
4906+var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html';
4907+(function(w, d) {
4908+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
4909+ d.write('<div id="comments_thread"><\/div>');
4910+ var s = d.createElement('script');
4911+ s.type = 'text/javascript';
4912+ s.async = true;
4913+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
4914+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
4915+ }
4916+ else {
4917+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
4918+ }
4919+})(window, document);
4920+//--><!]]></script></div><div id="footer">
4921+<p class="apache">Copyright 2018 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
4922+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
4923+if (typeof(prettyPrint) !== 'undefined') {
4924+ prettyPrint();
4925+}
4926+//--><!]]></script>
4927+</body></html>
4928\ No newline at end of file
4929diff --git a/docs/manual/suexec.html.fr b/docs/manual/suexec.html.fr
4930new file mode 100644
4931index 0000000..97e7a37
4932--- /dev/null
4933+++ b/docs/manual/suexec.html.fr
4934@@ -0,0 +1,689 @@
4935+<?xml version="1.0" encoding="ISO-8859-1"?>
4936+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4937+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4938+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
4939+<!--
4940+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4941+ This file is generated from xml source: DO NOT EDIT
4942+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4943+ -->
4944+<title>Support suEXEC - Serveur Apache HTTP Version 2.4</title>
4945+<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
4946+<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
4947+<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
4948+<script src="./style/scripts/prettify.min.js" type="text/javascript">
4949+</script>
4950+
4951+<link href="./images/favicon.ico" rel="shortcut icon" /></head>
4952+<body id="manual-page"><div id="page-header">
4953+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
4954+<p class="apache">Serveur Apache HTTP Version 2.4</p>
4955+<img alt="" src="./images/feather.png" /></div>
4956+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
4957+<div id="path">
4958+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Support suEXEC</h1>
4959+<div class="toplang">
4960+<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
4961+<a href="./fr/suexec.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
4962+<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
4963+<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
4964+<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
4965+</div>
4966+
4967+ <p>La fonctionnalit� <strong>suEXEC</strong> permet
4968+ l'ex�cution des programmes <strong>CGI</strong> et
4969+ <strong>SSI</strong> sous un utilisateur autre que celui sous
4970+ lequel s'ex�cute le serveur web qui appelle ces programmes.
4971+ Normalement, lorsqu'un programme CGI ou SSI est lanc�, il
4972+ s'ex�cute sous le m�me utilisateur que celui du serveur web qui
4973+ l'appelle.</p>
4974+
4975+ <p>Utilis�e de mani�re appropri�e, cette fonctionnalit� peut
4976+ r�duire consid�rablement les risques de s�curit� encourus
4977+ lorsqu'on autorise les utilisateurs � d�velopper et faire
4978+ s'ex�cuter des programmes CGI ou SSI de leur cru. Cependant, mal
4979+ configur�, suEXEC peut causer de nombreux probl�mes et m�me cr�er
4980+ de nouvelles failles dans la s�curit� de votre ordinateur. Si
4981+ vous n'�tes pas familier avec la gestion des programmes
4982+ <em>setuid root</em> et les risques de s�curit� qu'ils comportent,
4983+ nous vous recommandons vivement de ne pas tenter
4984+ d'utiliser suEXEC.</p>
4985+ </div>
4986+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Avant de commencer</a></li>
4987+<li><img alt="" src="./images/down.gif" /> <a href="#model">Mod�le de s�curit� de suEXEC</a></li>
4988+<li><img alt="" src="./images/down.gif" /> <a href="#install">Configurer et installer suEXEC</a></li>
4989+<li><img alt="" src="./images/down.gif" /> <a href="#enable">Activation et d�sactivation
4990+de suEXEC</a></li>
4991+<li><img alt="" src="./images/down.gif" /> <a href="#usage">Utilisation de suEXEC</a></li>
4992+<li><img alt="" src="./images/down.gif" /> <a href="#debug">D�bogage de suEXEC</a></li>
4993+<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Avis � la population !
4994+ Avertissements et exemples</a></li>
4995+</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
4996+<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
4997+<div class="section">
4998+<h2><a name="before" id="before">Avant de commencer</a></h2>
4999+
5000+ <p>Avant de foncer t�te baiss�e dans la lecture de ce document,
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches