Merge ~ahasenack/ubuntu/+source/apache2:cosmic-merge-apache-2.4.34-1 into ubuntu/+source/apache2:debian/sid

Proposed by Andreas Hasenack
Status: Merged
Approved by: Robie Basak
Approved revision: f8172108ee63c9c1806453fe22352f81156c5808
Merge reported by: Andreas Hasenack
Merged at revision: f8172108ee63c9c1806453fe22352f81156c5808
Proposed branch: ~ahasenack/ubuntu/+source/apache2:cosmic-merge-apache-2.4.34-1
Merge into: ubuntu/+source/apache2:debian/sid
Diff against target: 443421 lines (+434287/-33)
1422 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 (+1375/-0)
debian/control (+7/-19)
debian/index.html (+19/-12)
debian/patches/086_svn_cross_compiles (+118/-0)
debian/patches/series (+3/-0)
debian/rules (+2/-1)
debian/source/include-binaries (+1/-0)
debian/tests/check-http2 (+41/-0)
debian/tests/control (+4/-0)
dev/null (+0/-1)
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 (+319/-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 (+557/-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 (+1416/-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 (+1023/-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 (+1175/-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 (+433/-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 (+2720/-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 (+255/-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 (+4237/-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 (+1334/-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 (+341/-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 (+763/-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 (+657/-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 (+862/-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 (+166/-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 (+702/-0)
modules/http2/h2_config.h (+106/-0)
modules/http2/h2_conn.c (+361/-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 (+568/-0)
modules/http2/h2_filter.h (+73/-0)
modules/http2/h2_from_h1.c (+867/-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 (+179/-0)
modules/http2/h2_headers.h (+79/-0)
modules/http2/h2_mplx.c (+1278/-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 (+1335/-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 (+339/-0)
modules/http2/h2_request.h (+48/-0)
modules/http2/h2_session.c (+2292/-0)
modules/http2/h2_session.h (+225/-0)
modules/http2/h2_stream.c (+1078/-0)
modules/http2/h2_stream.h (+309/-0)
modules/http2/h2_switch.c (+194/-0)
modules/http2/h2_switch.h (+30/-0)
modules/http2/h2_task.c (+769/-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 (+393/-0)
modules/http2/mod_http2.dep (+1433/-0)
modules/http2/mod_http2.dsp (+195/-0)
modules/http2/mod_http2.h (+101/-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 (+1323/-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 (+1037/-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 (+1460/-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 (+189/-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 (+1249/-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 (+98/-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 (+143/-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 (+113/-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 (+3089/-0)
modules/proxy/mod_proxy.dep (+153/-0)
modules/proxy/mod_proxy.dsp (+127/-0)
modules/proxy/mod_proxy.h (+1269/-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 (+1941/-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 (+1224/-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 (+2070/-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 (+4031/-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 (+789/-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 (+2111/-0)
modules/ssl/ssl_engine_init.c (+2152/-0)
modules/ssl/ssl_engine_io.c (+2217/-0)
modules/ssl/ssl_engine_kernel.c (+2500/-0)
modules/ssl/ssl_engine_log.c (+238/-0)
modules/ssl/ssl_engine_mutex.c (+111/-0)
modules/ssl/ssl_engine_ocsp.c (+311/-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 (+1093/-0)
modules/ssl/ssl_scache.c (+239/-0)
modules/ssl/ssl_util.c (+465/-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 (+733/-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 (+2738/-0)
server/config.m4 (+19/-0)
server/connection.c (+221/-0)
server/core.c (+5470/-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 (+1957/-0)
server/main.c (+851/-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 (+3876/-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 (+2456/-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 (+781/-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 (+685/-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
Robie Basak Approve
Canonical Server Pending
Review via email: mp+352331@code.launchpad.net

Description of the change

Please use local git for the review, as the LP diff is incorrect. It's correct until it reaches docs/manual, where it breaks. Probably because of the empty-dir-in-git problem.

Merge from debian's 2.4.34-1. The tricky part here was to recover the rich history from the previous uploads to ubuntu: 2.4.33-3ubuntu1, 3ubuntu2 and 3ubuntu3, as the upload tag didn't match what was expected due to the empty directories in the apache2 orig tarball.

I think I recovered that just fine, and wrote up what I did in my tips & tricks doc at https://docs.google.com/document/d/1uS-Ci89VWnl_M7DqqOuj5yM6_hx13EwNI86a0n25qVw/edit#bookmark=id.w6zg30wxw10h

Besides that, of note in this merge is that you can see in the 3ubuntu2 and 3ubuntu3 uploads that I first dropped both mod_md and mod_uwsgi_proxy, and later restored uwsgi, so I squashed all that together which resulted in just the removal of mod_md.

This upload is also fixing #1782806, which I will link to the MP and close manually later.

I can make the google doc public, or better yet, update our wiki.

PPA with test packages: ppa:ahasenack/apache2-merge-2.4.34-1

To post a comment you must log in.
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

I'm still going to run the lp:qa-regression-testing apache test script.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :
Download full text (3.3 KiB)

qa-regression-testing tests are fine:
(master)ubuntu@cosmic-apache-merge:~/qa-regression-testing/scripts$ sudo ./test-apache2.py 2>&1 | tee ~/test-apache2.log
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 CVE-2008-2168 ... ok
test_cve_2008_2939 (__main__.BasicTest)
Test CVE-2008-2939 ... ok
test_cve_2009_1890 (__main__.BasicTest)
Test CVE-2009-1890 ... ok
test_cve_2011_0419 (__main__.BasicTest)
Test CVE-2011-0419 ... ok
test_cve_2011_3192 (__main__.BasicTest)
Test CVE-2011-3192 ... ok
test_cve_2011_3192_gzip (__main__.BasicTest)
Test CVE-2011-3192 (gzip) ... ok
test_cve_2011_3192_regression_1 (__main__.BasicTest)
Test CVE-2011-3192 regression 1 ... ok
test_cve_2011_3192_regression_2 (__main__.BasicTest)
Test CVE-2011-3192 regression 2 ... ok
test_cve_2011_3192_request_range (__main__.BasicTest)
Test CVE-2011-3192 (Request-Range) ... ok
test_cve_2011_3368 (__main__.BasicTest)
Test CVE-2011-3368 ... ok
test_cve_2011_3368_proto_09 (__main__.BasicTest)
Test CVE-2011-3368 w/http protocol 0.9 ... ok
test_cve_2011_4317 (__main__.BasicTest)
Test CVE-2011-4317 ... ok
test_cve_2012_4929_default (__main__.BasicTest)
Test CVE-2012-4929 (compression default setting) ... ok
test_cve_2012_4929_off (__main__.BasicTest)
Test CVE-2012-4929 (compression off) ... ok
test_cve_2012_4929_on (__main__.BasicTest)
Test CVE-2012-4929 (compression on) ... ok
test_daemons (__main__.BasicTest)
Test daemon ... ok
test_http (__main__.BasicTest)
Test http ... ok
test_lp1626883 (__main__.BasicTest)
Test lp1626883 ... ok
test_mod_cgid (__main__.BasicTest)
Test mod_cgid ... ok
test_mod_dav (__main__.BasicTest)
Test mod_dav ... ok
test_mod_dav_svn (__main__.BasicTest)
Test mod_dav_svn ... ok
test_mod_deflate_input (__main__.BasicTest)
Test mod_deflate input compression ... ok
test_mod_status (__main__.BasicTest)
Test mod_status ... ok
test_php (__main__.BasicTest)
Test php ... ok
test_proxy_ftp (__main__.BasicTest)
Test ftp proxy ... ok
test_ssl (__main__.BasicTest)
Test https ... ok
test_ssl_tls_md5 (__main__.BasicTest)
Test whether https allows MD5 ... ok
test_ssl_tls_v1 (__main__.BasicTest)
Test connecting with TLS v1.0 ... ok
test_ssl_tls_v1_1 (__main__.BasicTest)
Test connecting with TLS v1.1 ... ok
test_ssl_tls_v1_2 (__main__.BasicTest)
Test connecting with TLS v1.2 ... ok
test_status (__main__.BasicTest)
Test status (apache2ctl) ... ok
test_htpasswd_des (__main__.HTPasswdTest)
Test htpasswd to ensure crypt returns sane des results ... ok
test_htpasswd_md5 (__main__.HTPasswdTest)
Test htpasswd to ensure crypt returns sane md5 results ... ok
test_htpasswd_sha (__main__.HTPasswdTest)
Test htpasswd to ensure crypt returns sane sha results ... ok

----------------------------------------------------------------------
Ran 37 tests in 430.533s

OK

(master)ubuntu@cosmic-apache-merge:~/qa-regression-testing/scripts$ apt-cache policy apache2
apache2:
  Installed: 2.4.34-1ubuntu1~ppa1
  Candidate: 2.4.34-1ubuntu1~ppa1
  Version table:
 *** 2.4.34-1ubuntu1~ppa1 500
        50...

Read more...

Revision history for this message
Robie Basak (racb) wrote :

Tags are structurally correct, except for an expected mismatch against old/ubuntu to both deconstruct and logical which I assume is an empty directory change artifact.

Logical verified transferred exactly, no changes. Changelog entry accurately describes changes. All of the delta seems appropriate to keep. md disablement still seems relevant as libxmltooling7 still requires libcurl3. I'm OK with this given that md is still listed as experimental upstream.

lgtm

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

DEP8 tests are also good:
(...)
autopkgtest [11:27:56]: test chroot: - - - - - - - - - - results - - - - - - - - - -
chroot PASS
autopkgtest [11:27:56]: @@@@@@@@@@@@@@@@@@@@ summary
run-test-suite PASS
duplicate-module-load PASS
htcacheclean PASS
default-mods PASS
ssl-passphrase PASS
check-http2 PASS
chroot PASS

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

Thanks for the review, Robie. Could you please set the MP to "approved" and push the upload tag? I can then dput the package and follow it through migration.

Revision history for this message
Robie Basak (racb) wrote :

On Mon, Aug 06, 2018 at 02:30:05PM -0000, Andreas Hasenack wrote:
> Thanks for the review, Robie. Could you please set the MP to "approved" and push the upload tag?

Sorry, I keep forgetting about this. Now done.

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

apache2 migrated, marking MP as merged and closing linked bug.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/debian/apache2-bin.install b/debian/apache2-bin.install
index 63c573f..3d1bdf1 100644
--- a/debian/apache2-bin.install
+++ b/debian/apache2-bin.install
@@ -1,2 +1,3 @@
1/usr/lib/apache2/modules/1/usr/lib/apache2/modules/
2/usr/sbin/apache22/usr/sbin/apache2
3debian/apache2.py usr/share/apport/package-hooks
diff --git a/debian/apache2-utils.ufw.profile b/debian/apache2-utils.ufw.profile
3new file mode 1006444new file mode 100644
index 0000000..974a655
--- /dev/null
+++ b/debian/apache2-utils.ufw.profile
@@ -0,0 +1,14 @@
1[Apache]
2title=Web Server
3description=Apache v2 is the next generation of the omnipresent Apache web server.
4ports=80/tcp
5
6[Apache Secure]
7title=Web Server (HTTPS)
8description=Apache v2 is the next generation of the omnipresent Apache web server.
9ports=443/tcp
10
11[Apache Full]
12title=Web Server (HTTP,HTTPS)
13description=Apache v2 is the next generation of the omnipresent Apache web server.
14ports=80,443/tcp
diff --git a/debian/apache2.dirs b/debian/apache2.dirs
index 6089013..1aa6d3c 100644
--- a/debian/apache2.dirs
+++ b/debian/apache2.dirs
@@ -10,3 +10,4 @@ var/cache/apache2/mod_cache_disk
10var/lib/apache210var/lib/apache2
11var/log/apache211var/log/apache2
12var/www/html12var/www/html
13/etc/ufw/applications.d/apache2
diff --git a/debian/apache2.install b/debian/apache2.install
index b6ad789..92865fc 100644
--- a/debian/apache2.install
+++ b/debian/apache2.install
@@ -8,3 +8,4 @@ debian/config-dir/*.conf /etc/apache2
8debian/config-dir/envvars /etc/apache28debian/config-dir/envvars /etc/apache2
9debian/config-dir/magic /etc/apache29debian/config-dir/magic /etc/apache2
10debian/debhelper/apache2-maintscript-helper /usr/share/apache2/10debian/debhelper/apache2-maintscript-helper /usr/share/apache2/
11debian/apache2-utils.ufw.profile /etc/ufw/applications.d/
diff --git a/debian/apache2.postrm b/debian/apache2.postrm
index a68583c..b0e5d7b 100644
--- a/debian/apache2.postrm
+++ b/debian/apache2.postrm
@@ -33,6 +33,7 @@ is_default_index_html () {
33 776221a94e5a174dc2396c0f3f6b6a7433 776221a94e5a174dc2396c0f3f6b6a74
34 c481228d439cbb54bdcedbaec5bbb11a34 c481228d439cbb54bdcedbaec5bbb11a
35 e2620d4a5a0f8d80dd4b16de59af981f35 e2620d4a5a0f8d80dd4b16de59af981f
36 3526531ccd6c6a1d2340574a305a18f8
36 EOF37 EOF
37}38}
3839
diff --git a/debian/apache2.py b/debian/apache2.py
39new file mode 10064440new file mode 100644
index 0000000..a9fb9d8
--- /dev/null
+++ b/debian/apache2.py
@@ -0,0 +1,48 @@
1#!/usr/bin/python
2
3'''apport hook for apache2
4
5(c) 2010 Adam Sommer.
6Author: Adam Sommer <asommer@ubuntu.com>
7
8This program is free software; you can redistribute it and/or modify it
9under the terms of the GNU General Public License as published by the
10Free Software Foundation; either version 2 of the License, or (at your
11option) any later version. See http://www.gnu.org/copyleft/gpl.html for
12the full text of the license.
13'''
14
15from apport.hookutils import *
16import os
17
18SITES_ENABLED_DIR = '/etc/apache2/sites-enabled/'
19
20def add_info(report, ui):
21 if os.path.isdir(SITES_ENABLED_DIR):
22 response = ui.yesno("The contents of your " + SITES_ENABLED_DIR + " directory "
23 "may help developers diagnose your bug more "
24 "quickly. However, it may contain sensitive "
25 "information. Do you want to include it in your "
26 "bug report?")
27
28 if response == None: # user cancelled
29 raise StopIteration
30
31 elif response == True:
32 # Attache config files in /etc/apache2/sites-enabled and listing of files in /etc/apache2/conf.d
33 for conf_file in os.listdir(SITES_ENABLED_DIR):
34 attach_file_if_exists(report, SITES_ENABLED_DIR + conf_file, conf_file)
35
36 try:
37 report['Apache2ConfdDirListing'] = str(os.listdir('/etc/apache2/conf.d'))
38 except OSError:
39 report['Apache2ConfdDirListing'] = str(False)
40
41 # Attach default config files if changed.
42 attach_conffiles(report, 'apache2', conffiles=None)
43
44 # Attach the error.log file.
45 attach_file(report, '/var/log/apache2/error.log', key='error.log')
46
47 # Get loaded modules.
48 report['Apache2Modules'] = root_command_output(['/usr/sbin/apachectl', '-D DUMP_MODULES'])
diff --git a/debian/changelog b/debian/changelog
index 42e2f4f..5a42a14 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,24 @@
1apache2 (2.4.34-1ubuntu1) cosmic; urgency=medium
2
3 * Merge with Debian unstable. Remaining changes:
4 - debian/{control, apache2.install, apache2-utils.ufw.profile,
5 apache2.dirs}: Add ufw profiles.
6 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
7 - debian/patches/086_svn_cross_compiles: Backport several cross
8 fixes from upstream
9 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
10 Debian with Ubuntu on default page.
11 + d/source/include-binaries: add Ubuntu icon file
12 - d/t/control, d/t/check-http2: add basic test for http2 support
13 - d/control, d/rules, d/config-dir/mods-available/md.load: don't build
14 libapache2-mod-md, as that makes apache2-bin pull in libcurl4 which
15 cannot be coinstalled with libcurl3. That situation breaks the
16 installation of libapache2-mod-shib2. See
17 https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1770242/comments/1
18 for details.
19
20 -- Andreas Hasenack <andreas@canonical.com> Fri, 03 Aug 2018 17:09:27 -0300
21
1apache2 (2.4.34-1) unstable; urgency=medium22apache2 (2.4.34-1) unstable; urgency=medium
223
3 [ Ondřej Surý ]24 [ Ondřej Surý ]
@@ -16,6 +37,87 @@ apache2 (2.4.34-1) unstable; urgency=medium
1637
17 -- Stefan Fritsch <sf@debian.org> Fri, 27 Jul 2018 21:37:37 +020038 -- Stefan Fritsch <sf@debian.org> Fri, 27 Jul 2018 21:37:37 +0200
1839
40apache2 (2.4.33-3ubuntu3) cosmic; urgency=medium
41
42 * d/control, d/rules, d/config-dir/mods-available/proxy_uwsgi.load:
43 re-enable proxy_uwsgi, as the uwsgi source no longer builds this module.
44
45 -- Andreas Hasenack <andreas@canonical.com> Thu, 28 Jun 2018 10:07:06 -0300
46
47apache2 (2.4.33-3ubuntu2) cosmic; urgency=medium
48
49 * d/control, d/rules: Don't build libapache2-mod-proxy-uwsgi and
50 libapache2-mod-md until we figure out their transitions. libapache2-mod-md
51 in particular is problematic because that makes apache2-bin pull in
52 libcurl4 which cannot be coinstalled with libcurl3. That situation breaks
53 the installation of libapache2-mod-shib2. See
54 https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1770242/comments/1
55 for details.
56 - Don't ship md.load and remove build-requires that were added because of
57 mod-md (see
58 https://salsa.debian.org/apache-team/apache2/commit/b9d37f2a96da2fd69bf)
59 - Remove proxy_uwsgi.load as we are not building it for now (see
60 https://salsa.debian.org/apache-team/apache2/commit/4e3168562d75ce398b9)
61
62 -- Andreas Hasenack <andreas@canonical.com> Thu, 17 May 2018 14:46:19 +0000
63
64apache2 (2.4.33-3ubuntu1) cosmic; urgency=medium
65
66 * Merge with Debian unstable (LP: #1770242). Remaining changes:
67 - debian/{control, apache2.install, apache2-utils.ufw.profile,
68 apache2.dirs}: Add ufw profiles.
69 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
70 - debian/patches/086_svn_cross_compiles: Backport several cross
71 fixes from upstream
72 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
73 Debian with Ubuntu on default page.
74 + d/source/include-binaries: add Ubuntu icon file
75 - d/t/control, d/t/check-http2: add basic test for http2 support
76 * Drop:
77 - SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
78 + debian/patches/CVE-2017-15710.patch: fix language long names
79 detection as short name in modules/aaa/mod_authnz_ldap.c.
80 + CVE-2017-15710
81 - SECURITY UPDATE: incorrect <FilesMatch> matching
82 + debian/patches/CVE-2017-15715.patch: allow to configure
83 global/default options for regexes, like caseless matching or
84 extended format in include/ap_regex.h, server/core.c,
85 server/util_pcre.c.
86 + CVE-2017-15715
87 - SECURITY UPDATE: mod_session header manipulation
88 + debian/patches/CVE-2018-1283.patch: strip Session header when
89 SessionEnv is on in modules/session/mod_session.c.
90 + CVE-2018-1283
91 - SECURITY UPDATE: DoS via specially-crafted request
92 + debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
93 terminated on any error, not only on buffer full in
94 server/protocol.c.
95 + CVE-2018-1301
96 - SECURITY UPDATE: mod_cache_socache DoS
97 + debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
98 to carriage return in modules/cache/mod_cache_socache.c.
99 + CVE-2018-1303
100 - SECURITY UPDATE: insecure nonce generation
101 + debian/patches/CVE-2018-1312.patch: actually use the secret when
102 generating nonces in modules/aaa/mod_auth_digest.c.
103 + CVE-2018-1312
104 - Correct systemd-sysv-generator behavior by customizing some
105 parameters:
106 + d/apache2-systemd.conf: add a drop-in file to specify some
107 parameters for the systemd unit (type=Forking and
108 RemainsAfterExit=no), this allow a correct state synchronisation
109 between systemctl status and actual state of apache2 daemon.
110 + d/apache2.install: place the apache2-systemd.conf file in the
111 correct location.
112 [type=Forking already in the base systemd service file, and
113 RemainsAfterExit=no is the default value, so no need to
114 customize these anymore.]
115 - Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP #1752683)
116 + added debian/patches/util_ldap_cache_lock_fix.patch
117 [Already applied upstream]
118
119 -- Andreas Hasenack <andreas@canonical.com> Tue, 15 May 2018 11:03:34 -0300
120
19apache2 (2.4.33-3) unstable; urgency=medium121apache2 (2.4.33-3) unstable; urgency=medium
20122
21 * Add Breaks for libapache2-mod-proxy-uwsgi and libapache2-mod-md, too.123 * Add Breaks for libapache2-mod-proxy-uwsgi and libapache2-mod-md, too.
@@ -88,6 +190,91 @@ apache2 (2.4.29-2) unstable; urgency=medium
88190
89 -- Ondřej Surý <ondrej@debian.org> Sun, 14 Jan 2018 11:01:58 +0000191 -- Ondřej Surý <ondrej@debian.org> Sun, 14 Jan 2018 11:01:58 +0000
90192
193apache2 (2.4.29-1ubuntu4.1) bionic-security; urgency=medium
194
195 * SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
196 - debian/patches/CVE-2017-15710.patch: fix language long names
197 detection as short name in modules/aaa/mod_authnz_ldap.c.
198 - CVE-2017-15710
199 * SECURITY UPDATE: incorrect <FilesMatch> matching
200 - debian/patches/CVE-2017-15715.patch: allow to configure
201 global/default options for regexes, like caseless matching or
202 extended format in include/ap_regex.h, server/core.c,
203 server/util_pcre.c.
204 - CVE-2017-15715
205 * SECURITY UPDATE: mod_session header manipulation
206 - debian/patches/CVE-2018-1283.patch: strip Session header when
207 SessionEnv is on in modules/session/mod_session.c.
208 - CVE-2018-1283
209 * SECURITY UPDATE: DoS via specially-crafted request
210 - debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
211 terminated on any error, not only on buffer full in
212 server/protocol.c.
213 - CVE-2018-1301
214 * SECURITY UPDATE: mod_cache_socache DoS
215 - debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
216 to carriage return in modules/cache/mod_cache_socache.c.
217 - CVE-2018-1303
218 * SECURITY UPDATE: insecure nonce generation
219 - debian/patches/CVE-2018-1312.patch: actually use the secret when
220 generating nonces in modules/aaa/mod_auth_digest.c.
221 - CVE-2018-1312
222
223 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 25 Apr 2018 07:38:24 -0400
224
225apache2 (2.4.29-1ubuntu4) bionic; urgency=medium
226
227 * Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP: #1752683)
228 - added debian/patches/util_ldap_cache_lock_fix.patch
229
230 -- Rafael David Tinoco <rafael.tinoco@canonical.com> Fri, 02 Mar 2018 02:19:31 +0000
231
232apache2 (2.4.29-1ubuntu3) bionic; urgency=medium
233
234 * Switch back to OpenSSL 1.1.
235
236 -- Dimitri John Ledkov <xnox@ubuntu.com> Tue, 06 Feb 2018 11:57:20 +0000
237
238apache2 (2.4.29-1ubuntu2) bionic; urgency=medium
239
240 * enable http2 (LP: #1687454) by stopping to disable it
241 - debian/control: no more removed libnghttp2-dev Build-Depends (in universe).
242 - debian/config-dir/mods-available/http2.load: no more removed.
243 - debian/rules: no more removed proxy_http2 from configure.
244 * d/t/control, d/t/check-http2: add basic test for http2 support
245
246 -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 05 Dec 2017 17:25:39 +0100
247
248apache2 (2.4.29-1ubuntu1) bionic; urgency=medium
249
250 * Merge with Debian unstable. Remaining changes:
251 - debian/{control, apache2.install, apache2-utils.ufw.profile,
252 apache2.dirs}: Add ufw profiles.
253 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
254 - debian/patches/086_svn_cross_compiles: Backport several cross
255 fixes from upstream
256 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
257 Debian with Ubuntu on default page.
258 + d/source/include-binaries: add Ubuntu icon file
259 - Correct systemd-sysv-generator behavior by customizing some
260 parameters:
261 + d/apache2-systemd.conf: add a drop-in file to specify some
262 parameters for the systemd unit (type=Forking and
263 RemainsAfterExit=no), this allow a correct state synchronisation
264 between systemctl status and actual state of apache2 daemon.
265 + d/apache2.install: place the apache2-systemd.conf file in the
266 correct location.
267 - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
268 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
269 + debian/config-dir/mods-available/http2.load: removed.
270 + debian/rules: removed proxy_http2 from configure.
271 * Switch back to OpenSSL 1.0 as we don't yet have 1.1:
272 - debian/control: switch BuildDepends to libssl1.0-dev
273 - debian/control: remove Breaks on gridsite and libapache2-mod-dacs
274 - debian/rules: remove openssl virtual package and logic
275
276 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 10 Nov 2017 10:51:46 -0500
277
91apache2 (2.4.29-1) unstable; urgency=medium278apache2 (2.4.29-1) unstable; urgency=medium
92279
93 [ Stefan Fritsch ]280 [ Stefan Fritsch ]
@@ -152,6 +339,47 @@ apache2 (2.4.27-3) experimental; urgency=medium
152339
153 -- Stefan Fritsch <sf@debian.org> Sun, 16 Jul 2017 23:11:07 +0200340 -- Stefan Fritsch <sf@debian.org> Sun, 16 Jul 2017 23:11:07 +0200
154341
342apache2 (2.4.27-2ubuntu3) artful; urgency=medium
343
344 * SECURITY UPDATE: optionsbleed information leak
345 - debian/patches/CVE-2017-9798.patch: disallow method registration
346 at run time in server/core.c.
347 - CVE-2017-9798
348
349 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Sep 2017 11:05:48 -0400
350
351apache2 (2.4.27-2ubuntu2) artful; urgency=medium
352
353 * Undrop (LP 1658469):
354 - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
355 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
356 + debian/config-dir/mods-available/http2.load: removed.
357 + debian/rules: removed proxy_http2 from configure.
358
359 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 02 Aug 2017 13:04:45 -0400
360
361apache2 (2.4.27-2ubuntu1) artful; urgency=medium
362
363 * Merge with Debian unstable (LP: #1702582). Remaining changes:
364 - debian/{control, apache2.install, apache2-utils.ufw.profile,
365 apache2.dirs}: Add ufw profiles.
366 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
367 - debian/patches/086_svn_cross_compiles: Backport several cross
368 fixes from upstream
369 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
370 Debian with Ubuntu on default page.
371 + d/source/include-binaries: add Ubuntu icon file
372 - Correct systemd-sysv-generator behavior by customizing some
373 parameters:
374 + d/apache2-systemd.conf: add a drop-in file to specify some
375 parameters for the systemd unit (type=Forking and
376 RemainsAfterExit=no), this allow a correct state synchronisation
377 between systemctl status and actual state of apache2 daemon.
378 + d/apache2.install: place the apache2-systemd.conf file in the
379 correct location.
380
381 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 27 Jul 2017 13:38:39 -0700
382
155apache2 (2.4.27-2) unstable; urgency=medium383apache2 (2.4.27-2) unstable; urgency=medium
156384
157 * Switch back to openssl 1.0 for now. The transition to 1.1 needs more385 * Switch back to openssl 1.0 for now. The transition to 1.1 needs more
@@ -181,6 +409,55 @@ apache2 (2.4.25-4) unstable; urgency=high
181409
182 -- Stefan Fritsch <sf@debian.org> Tue, 20 Jun 2017 21:31:51 +0200410 -- Stefan Fritsch <sf@debian.org> Tue, 20 Jun 2017 21:31:51 +0200
183411
412apache2 (2.4.25-3ubuntu3) artful; urgency=medium
413
414 * Re-Drop (LP: #1658469):
415 - Don't build experimental http2 module for LTS:
416 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
417 + debian/config-dir/mods-available/http2.load: removed.
418 + debian/rules: removed proxy_http2 from configure.
419 + debian/apache2.maintscript: remove http2 conffile.
420
421 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Mon, 01 May 2017 09:55:11 -0700
422
423apache2 (2.4.25-3ubuntu2) zesty; urgency=medium
424 * Undrop (LP 1658469):
425 - Don't build experimental http2 module for LTS:
426 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
427 + debian/config-dir/mods-available/http2.load: removed.
428 + debian/rules: removed proxy_http2 from configure.
429 + debian/apache2.maintscript: remove http2 conffile.
430
431 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 10 Feb 2017 08:53:43 -0800
432
433apache2 (2.4.25-3ubuntu1) zesty; urgency=medium
434
435 * Merge from Debian unstable (LP: #1663425). Remaining changes:
436 - debian/{control, apache2.install, apache2-utils.ufw.profile,
437 apache2.dirs}: Add ufw profiles.
438 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
439 - debian/patches/086_svn_cross_compiles: Backport several cross
440 fixes from upstream
441 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
442 Debian with Ubuntu on default page.
443 + d/source/include-binaries: add Ubuntu icon file
444 - Correct systemd-sysv-generator behavior by customizing some
445 parameters:
446 + d/apache2-systemd.conf: add a drop-in file to specify some
447 parameters for the systemd unit (type=Forking and
448 RemainsAfterExit=no), this allow a correct state synchronisation
449 between systemctl status and actual state of apache2 daemon.
450 + d/apache2.install: place the apache2-systemd.conf file in the
451 correct location.
452 * Drop (LP: #1658469):
453 - Don't build experimental http2 module for LTS:
454 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
455 + debian/config-dir/mods-available/http2.load: removed.
456 + debian/rules: removed proxy_http2 from configure.
457 + debian/apache2.maintscript: remove http2 conffile.
458
459 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 09 Feb 2017 15:48:28 -0800
460
184apache2 (2.4.25-3) unstable; urgency=medium461apache2 (2.4.25-3) unstable; urgency=medium
185462
186 * Fix detection of systemd to fix 'apache2ctl start' on sysv-init.463 * Fix detection of systemd to fix 'apache2ctl start' on sysv-init.
@@ -242,6 +519,39 @@ apache2 (2.4.25-1) unstable; urgency=medium
242519
243 -- Stefan Fritsch <sf@debian.org> Wed, 21 Dec 2016 23:46:06 +0100520 -- Stefan Fritsch <sf@debian.org> Wed, 21 Dec 2016 23:46:06 +0100
244521
522apache2 (2.4.23-8ubuntu1) zesty; urgency=medium
523
524 * Merge from Debian unstable (LP: #). Remaining changes:
525 - debian/{control, apache2.install, apache2-utils.ufw.profile,
526 apache2.dirs}: Add ufw profiles.
527 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
528 - debian/patches/086_svn_cross_compiles: Backport several cross
529 fixes from upstream
530 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm,
531 d/source/include-binaries: replace Debian with Ubuntu on default
532 page.
533 [ include-binaries change previously undocumented ]
534 - Don't build experimental http2 module for LTS:
535 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
536 + debian/config-dir/mods-available/http2.load: removed.
537 + debian/rules: removed proxy_http2 from configure.
538 + debian/apache2.maintscript: remove http2 conffile.
539 [ Previously undocumented ]
540 - Correct systemd-sysv-generator behavior by customizing some
541 parameters:
542 + d/apache2-systemd.conf: add a drop-in file to specify some
543 parameters for the systemd unit (type=Forking and
544 RemainsAfterExit=no), this allow a correct state synchronisation
545 between systemctl status and actual state of apache2 daemon.
546 + d/apache2.install: place the apache2-systemd.conf file in the
547 correct location.
548 * Drop:
549 - debian/rules: Fix cross-building by passing
550 DEB_{HOST,BUILD}_GNU_TYPE to configure.
551 [ Incorrectly indicated as delta, fixed by Debian in 2.4.18-2 ]
552
553 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 09 Dec 2016 11:02:38 +0100
554
245apache2 (2.4.23-8) unstable; urgency=medium555apache2 (2.4.23-8) unstable; urgency=medium
246556
247 * Move the mod_ssl_openssl.h header and the dependency on libssl-dev to a557 * Move the mod_ssl_openssl.h header and the dependency on libssl-dev to a
@@ -252,6 +562,33 @@ apache2 (2.4.23-8) unstable; urgency=medium
252562
253 -- Stefan Fritsch <sf@debian.org> Sun, 20 Nov 2016 00:33:13 +0100563 -- Stefan Fritsch <sf@debian.org> Sun, 20 Nov 2016 00:33:13 +0100
254564
565apache2 (2.4.23-7ubuntu1) zesty; 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 - debian/rules: Fix cross-building by passing
572 DEB_{HOST,BUILD}_GNU_TYPE to configure.
573 - debian/patches/086_svn_cross_compiles: Backport several cross
574 fixes from upstream
575 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
576 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 + debian/rules: removed proxy_http2 from configure.
581 - Correct systemd-sysv-generator behavior by customizing some
582 parameters:
583 + d/apache2-systemd.conf: add a drop-in file to specify some
584 parameters for the systemd unit (type=Forking and
585 RemainsAfterExit=no), this allow a correct state synchronisation
586 between systemctl status and actual state of apache2 daemon.
587 + d/apache2.install: place the apache2-systemd.conf file in the
588 correct location.
589
590 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 16 Nov 2016 09:17:24 -0500
591
255apache2 (2.4.23-7) unstable; urgency=medium592apache2 (2.4.23-7) unstable; urgency=medium
256593
257 * Make apache2-dev depend on openssl 1.0, too. Closes: #844160594 * Make apache2-dev depend on openssl 1.0, too. Closes: #844160
@@ -366,6 +703,55 @@ apache2 (2.4.20-1) unstable; urgency=medium
366703
367 -- Stefan Fritsch <sf@debian.org> Sun, 10 Apr 2016 14:03:41 +0200704 -- Stefan Fritsch <sf@debian.org> Sun, 10 Apr 2016 14:03:41 +0200
368705
706apache2 (2.4.18-2ubuntu4) yakkety; urgency=medium
707
708 * SECURITY UPDATE: proxy request header vulnerability (httpoxy)
709 - debian/patches/CVE-2016-5387.patch: don't pass through HTTP_PROXY in
710 server/util_script.c.
711 - CVE-2016-5387
712
713 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Jul 2016 14:32:02 -0400
714
715apache2 (2.4.18-2ubuntu3) xenial; urgency=medium
716
717 [ Ryan Harper ]
718 * Drop /etc/apache2/mods-available/http2.load. This was inadvertently
719 introduced in 2.4.18-2ubuntu1. The intention is to not carry this at
720 all, since http2 support is intentionally disabled (see LP 1531864).
721 * d/apache2.maintscript: handle removal of http2.load conffile.
722
723 [ Robie Basak ]
724 * Re-write Ryan's changelog entry.
725
726 -- Robie Basak <robie.basak@ubuntu.com> Fri, 15 Apr 2016 18:00:57 +0000
727
728apache2 (2.4.18-2ubuntu2) xenial; urgency=medium
729
730 * Correct systemd-sysv-generator behavior by customizing some parameters (LP: #1488962)
731 - d/apache2-systemd.conf: add a drop-in file to specify some parameters for the systemd
732 unit (type=Forking and RemainsAfterExit=no), this allow a correct state synchronisation
733 between systemctl status and actual state of apache2 daemon.
734 - d/apache2.install: place the apache2-systemd.conf file in the correct location.
735
736 -- Pierre-André MOREY <pierre-andre.morey@canonical.com> Fri, 08 Apr 2016 11:48:00 +0200
737
738apache2 (2.4.18-2ubuntu1) xenial; urgency=medium
739
740 * Merge from Debian unstable. Remaining changes:
741 - debian/{control, apache2.install, apache2-utils.ufw.profile,
742 apache2.dirs}: Add ufw profiles.
743 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
744 - debian/rules: Fix cross-building by passing
745 DEB_{HOST,BUILD}_GNU_TYPE to configure.
746 - debian/patches/086_svn_cross_compiles: Backport several cross
747 fixes from upstream
748 - d/index.html: replace Debian with Ubuntu on default page.
749 - Don't build experimental http2 module for LTS:
750 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
751 + debian/config-dir/mods-available/http2.load: removed.
752
753 -- Timo Aaltonen <tjaalton@debian.org> Wed, 06 Apr 2016 00:18:31 +0300
754
369apache2 (2.4.18-2) unstable; urgency=low755apache2 (2.4.18-2) unstable; urgency=low
370756
371 * htcacheclean:757 * htcacheclean:
@@ -391,6 +777,24 @@ apache2 (2.4.18-2) unstable; urgency=low
391777
392 -- Stefan Fritsch <sf@debian.org> Mon, 28 Mar 2016 21:58:54 +0200778 -- Stefan Fritsch <sf@debian.org> Mon, 28 Mar 2016 21:58:54 +0200
393779
780apache2 (2.4.18-1ubuntu1) xenial; urgency=medium
781
782 * Merge from Debian unstable. Remaining changes:
783 - debian/{control, apache2.install, apache2-utils.ufw.profile,
784 apache2.dirs}: Add ufw profiles.
785 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
786 - Add dep8 tests.
787 - debian/rules: Fix cross-building by passing
788 DEB_{HOST,BUILD}_GNU_TYPE to configure.
789 - debian/patches/086_svn_cross_compiles: Backport several cross
790 fixes from upstream
791 - d/index.html: replace Debian with Ubuntu on default page.
792 - Don't build experimental http2 module for LTS:
793 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
794 + debian/config-dir/mods-available/http2.load: removed.
795
796 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 21 Jan 2016 15:15:22 -0500
797
394apache2 (2.4.18-1) unstable; urgency=medium798apache2 (2.4.18-1) unstable; urgency=medium
395799
396 * New upstream release:800 * New upstream release:
@@ -398,12 +802,48 @@ apache2 (2.4.18-1) unstable; urgency=medium
398802
399 -- Stefan Fritsch <sf@debian.org> Sat, 19 Dec 2015 09:26:14 +0100803 -- Stefan Fritsch <sf@debian.org> Sat, 19 Dec 2015 09:26:14 +0100
400804
805apache2 (2.4.17-3ubuntu1) xenial; urgency=medium
806
807 * Merge from Debian unstable. Remaining changes:
808 - debian/{control, apache2.install, apache2-utils.ufw.profile,
809 apache2.dirs}: Add ufw profiles.
810 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
811 - Add dep8 tests.
812 - debian/rules: Fix cross-building by passing
813 DEB_{HOST,BUILD}_GNU_TYPE to configure.
814 - debian/patches/086_svn_cross_compiles: Backport several cross
815 fixes from upstream
816 - d/index.html: replace Debian with Ubuntu on default page.
817 - Don't build experimental http2 module for LTS:
818 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
819 + debian/config-dir/mods-available/http2.load: removed.
820
821 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 03 Dec 2015 10:07:35 -0500
822
401apache2 (2.4.17-3) unstable; urgency=medium823apache2 (2.4.17-3) unstable; urgency=medium
402824
403 * mpm_prefork: Fix segfault if started with -X. Closes: #805737825 * mpm_prefork: Fix segfault if started with -X. Closes: #805737
404826
405 -- Stefan Fritsch <sf@debian.org> Mon, 23 Nov 2015 19:52:09 +0100827 -- Stefan Fritsch <sf@debian.org> Mon, 23 Nov 2015 19:52:09 +0100
406828
829apache2 (2.4.17-2ubuntu1) xenial; urgency=medium
830
831 * Merge from Debian unstable. Remaining changes:
832 - debian/{control, apache2.install, apache2-utils.ufw.profile,
833 apache2.dirs}: Add ufw profiles.
834 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
835 - Add dep8 tests.
836 - debian/rules: Fix cross-building by passing
837 DEB_{HOST,BUILD}_GNU_TYPE to configure.
838 - debian/patches/086_svn_cross_compiles: Backport several cross
839 fixes from upstream
840 - d/index.html: replace Debian with Ubuntu on default page.
841 - Don't build experimental http2 module for LTS:
842 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
843 + debian/config-dir/mods-available/http2.load: removed.
844
845 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 20 Nov 2015 09:11:52 -0500
846
407apache2 (2.4.17-2) unstable; urgency=medium847apache2 (2.4.17-2) unstable; urgency=medium
408848
409 * Revert REDIRECT_URL to pre-2.4.17 behavior for now. The change broke849 * Revert REDIRECT_URL to pre-2.4.17 behavior for now. The change broke
@@ -414,6 +854,31 @@ apache2 (2.4.17-2) unstable; urgency=medium
414854
415 -- Stefan Fritsch <sf@debian.org> Sat, 31 Oct 2015 23:17:11 +0100855 -- Stefan Fritsch <sf@debian.org> Sat, 31 Oct 2015 23:17:11 +0100
416856
857apache2 (2.4.17-1ubuntu1) xenial; urgency=medium
858
859 * Merge from Debian unstable. Remaining changes:
860 - debian/{control, apache2.install, apache2-utils.ufw.profile,
861 apache2.dirs}: Add ufw profiles.
862 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
863 - Add dep8 tests.
864 - debian/rules: Fix cross-building by passing
865 DEB_{HOST,BUILD}_GNU_TYPE to configure.
866 - debian/patches/086_svn_cross_compiles: Backport several cross
867 fixes from upstream
868 - d/index.html: replace Debian with Ubuntu on default page.
869 * Drop patches (applied upstream):
870 - debian/patches/CVE-2015-3183.patch
871 - debian/patches/CVE-2015-3185.patch
872 * Drop changes (adopted in Debian):
873 - Allow "triggers-awaited" and "triggers-pending" states in addition
874 to "installed" when determining whether to defer actions or
875 process deferred actions.
876 * Don't build experimental http2 module for LTS
877 - debian/control: removed libnghttp2-dev Build-Depends (in universe).
878 - debian/config-dir/mods-available/http2.load: removed.
879
880 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 30 Oct 2015 09:35:46 -0400
881
417apache2 (2.4.17-1) unstable; urgency=medium882apache2 (2.4.17-1) unstable; urgency=medium
418883
419 [ Stefan Fritsch ]884 [ Stefan Fritsch ]
@@ -479,6 +944,49 @@ apache2 (2.4.16-1) unstable; urgency=medium
479944
480 -- Stefan Fritsch <sf@debian.org> Sun, 02 Aug 2015 00:44:07 +0200945 -- Stefan Fritsch <sf@debian.org> Sun, 02 Aug 2015 00:44:07 +0200
481946
947apache2 (2.4.12-2ubuntu2) wily; urgency=medium
948
949 * SECURITY UPDATE: request smuggling via chunked transfer encoding
950 - debian/patches/CVE-2015-3183.patch: refactor chunk parsing in
951 modules/http/http_filters.c.
952 - CVE-2015-3183
953 * SECURITY UPDATE: access restriction bypass via deprecated API
954 - debian/patches/CVE-2015-3185.patch: deprecate old API and add new one
955 in include/http_request.h, server/request.c.
956 - CVE-2015-3185
957
958 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 24 Jul 2015 09:56:09 -0400
959
960apache2 (2.4.12-2ubuntu1) wily; urgency=medium
961
962 * Merge from Debian unstable. Remaining changes:
963 - debian/{control, apache2.install, apache2-utils.ufw.profile,
964 apache2.dirs}: Add ufw profiles.
965 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
966 - Add dep8 tests.
967 - debian/rules: Fix cross-building by passing
968 DEB_{HOST,BUILD}_GNU_TYPE to configure.
969 - debian/patches/086_svn_cross_compiles: Backport several cross
970 fixes from upstream
971 - d/index.html: replace Debian with Ubuntu on default page.
972 - Allow "triggers-awaited" and "triggers-pending" states in addition
973 to "installed" when determining whether to defer actions or
974 process deferred actions.
975 * Drop patches (applied upstream):
976 - d/p/split-logfile.patch
977 - d/p/CVE-2015-0228.patch
978 * Drop changes (superceded in Debian):
979 - Cherry-pick versioned build-depend on dpkg from Debian for correct
980 dpkg-maintscript-helper symlink_to_dir support.
981 * Drop changes (adopted in Debian):
982 - d/control, d/config-dir/mods-available/ssl.conf,
983 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
984 dialog program ask-for-passphrase.
985 * Fix cross-building configure line in d/rules, which had bit-rotted in
986 previous merges.
987
988 -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 May 2015 16:34:00 +0000
989
482apache2 (2.4.12-2) unstable; urgency=medium990apache2 (2.4.12-2) unstable; urgency=medium
483991
484 [ Jean-Michel Nirgal Vourgère ]992 [ Jean-Michel Nirgal Vourgère ]
@@ -528,6 +1036,28 @@ apache2 (2.4.10-10) unstable; urgency=medium
5281036
529 -- Stefan Fritsch <sf@debian.org> Sun, 15 Mar 2015 10:47:36 +01001037 -- Stefan Fritsch <sf@debian.org> Sun, 15 Mar 2015 10:47:36 +0100
5301038
1039apache2 (2.4.10-9ubuntu1) vivid; urgency=medium
1040
1041 * Merge from Debian unstable. Remaining changes:
1042 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1043 apache2.dirs}: Add ufw profiles.
1044 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1045 - d/control, d/config-dir/mods-available/ssl.conf,
1046 - Add dep8 tests.
1047 - debian/rules: Fix cross-building by passing
1048 DEB_{HOST,BUILD}_GNU_TYPE to configure.
1049 - debian/patches/086_svn_cross_compiles: Backport several cross
1050 fixes from upstream
1051 - d/index.html: replace Debian with Ubuntu on default page.
1052 - d/p/split-logfile.patch: fix completely broken split-logfile
1053 command.
1054 - d/p/CVE-2015-0228.patch: fix logic in modules/lua/lua_request.c to fix a
1055 denial of service in mod_lua via websockets PING
1056 * debian/tests/ssl-passphrase: Add password responder for
1057 systemd-ask-passphrase.
1058
1059 -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2015 12:03:16 +0100
1060
531apache2 (2.4.10-9) unstable; urgency=medium1061apache2 (2.4.10-9) unstable; urgency=medium
5321062
533 * CVE-2014-8109: mod_lua: Fix handling of the Require line when a1063 * CVE-2014-8109: mod_lua: Fix handling of the Require line when a
@@ -542,6 +1072,54 @@ apache2 (2.4.10-9) unstable; urgency=medium
5421072
543 -- Stefan Fritsch <sf@debian.org> Mon, 22 Dec 2014 20:24:36 +01001073 -- Stefan Fritsch <sf@debian.org> Mon, 22 Dec 2014 20:24:36 +0100
5441074
1075apache2 (2.4.10-8ubuntu3) vivid; urgency=medium
1076
1077 * SECURITY UPDATE: restriction bypass in mod_lua via multiple Require
1078 directives
1079 - debian/patches/CVE-2014-8109.patch: handle multiple Require
1080 directives with different arguments in modules/lua/mod_lua.c.
1081 - CVE-2014-8109
1082 * SECURITY UPDATE: denial of service in mod_lua via websockets PING
1083 - debian/patches/CVE-2015-0228.patch: fix logic in
1084 modules/lua/lua_request.c.
1085 - CVE-2015-0228
1086
1087 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 05 Mar 2015 10:56:34 -0500
1088
1089apache2 (2.4.10-8ubuntu2) vivid; urgency=medium
1090
1091 * Allow "triggers-awaited" and "triggers-pending" states in addition to
1092 "installed" when determining whether to defer actions or process
1093 deferred actions (LP: #1393832).
1094
1095 -- Colin Watson <cjwatson@ubuntu.com> Wed, 26 Nov 2014 11:31:44 +0000
1096
1097apache2 (2.4.10-8ubuntu1) vivid; urgency=medium
1098
1099 * Merge from Debian unstable. Remaining changes:
1100 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1101 apache2.dirs}: Add ufw profiles.
1102 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1103 - d/control, d/config-dir/mods-available/ssl.conf,
1104 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
1105 dialog program ask-for-passphrase.
1106 - Add dep8 tests.
1107 - debian/rules: Fix cross-building by passing
1108 DEB_{HOST,BUILD}_GNU_TYPE to configure.
1109 - debian/patches/086_svn_cross_compiles: Backport several cross
1110 fixes from upstream
1111 - d/index.html: replace Debian with Ubuntu on default page.
1112 - d/p/split-logfile.patch: fix completely broken split-logfile
1113 command.
1114 * Fixes from Debian included in merge:
1115 - Crash caused by OCSP stapling code; this was erroneously
1116 attributed to Debian in my previous merge, but actually only
1117 appears in 2.4.10-8; with thanks to Stefan Fritsch (LP: #1366174).
1118 * Cherry-pick versioned build-depend on dpkg from Debian for correct
1119 dpkg-maintscript-helper symlink_to_dir support.
1120
1121 -- Robie Basak <robie.basak@ubuntu.com> Fri, 21 Nov 2014 15:15:58 +0000
1122
545apache2 (2.4.10-8) unstable; urgency=medium1123apache2 (2.4.10-8) unstable; urgency=medium
5461124
547 * Bump dpkg Pre-Depends to version that supports relative symlinks in1125 * Bump dpkg Pre-Depends to version that supports relative symlinks in
@@ -556,6 +1134,33 @@ apache2 (2.4.10-8) unstable; urgency=medium
5561134
557 -- Stefan Fritsch <sf@debian.org> Tue, 18 Nov 2014 15:18:18 +01001135 -- Stefan Fritsch <sf@debian.org> Tue, 18 Nov 2014 15:18:18 +0100
5581136
1137apache2 (2.4.10-7ubuntu1) vivid; urgency=medium
1138
1139 * Merge from Debian unstable. Remaining changes:
1140 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1141 apache2.dirs}: Add ufw profiles.
1142 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1143 - d/control, d/config-dir/mods-available/ssl.conf,
1144 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
1145 dialog program ask-for-passphrase.
1146 - Add dep8 tests.
1147 - debian/rules: Fix cross-building by passing
1148 DEB_{HOST,BUILD}_GNU_TYPE to configure.
1149 - debian/patches/086_svn_cross_compiles: Backport several cross
1150 fixes from upstream
1151 - d/index.html: replace Debian with Ubuntu on default page.
1152 - d/p/split-logfile.patch: fix completely broken split-logfile command.
1153 * Fixes from Debian included in merge:
1154 - Don't use a2query in preinst, as it may not be available yet
1155 (LP: #1312533).
1156 - Crash caused by OCSP stapling code (LP: #1366174).
1157 - Disable SSLv3 in default config (LP: #1358305).
1158 - If apache2 is not configured yet, defer actions executed via
1159 apache2-maintscript-helper. This fixes installation failures if a
1160 module package is configured first (LP: #1312854).
1161
1162 -- Robie Basak <robie.basak@ubuntu.com> Mon, 17 Nov 2014 18:04:40 +0000
1163
559apache2 (2.4.10-7) unstable; urgency=medium1164apache2 (2.4.10-7) unstable; urgency=medium
5601165
561 * Handle transitions of doc dirs and symlinks correctly during upgrade.1166 * Handle transitions of doc dirs and symlinks correctly during upgrade.
@@ -639,6 +1244,25 @@ apache2 (2.4.10-2) unstable; urgency=medium
6391244
640 -- Stefan Fritsch <sf@debian.org> Sun, 21 Sep 2014 22:58:33 +02001245 -- Stefan Fritsch <sf@debian.org> Sun, 21 Sep 2014 22:58:33 +0200
6411246
1247apache2 (2.4.10-1ubuntu1) utopic; urgency=medium
1248
1249 * Merge from Debian unstable. Remaining changes:
1250 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1251 apache2.dirs}: Add ufw profiles.
1252 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1253 - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
1254 d/apache2.install: Plymouth aware passphrase dialog program
1255 ask-for-passphrase.
1256 - Add dep8 tests.
1257 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
1258 configure.
1259 - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
1260 upstream
1261 - d/index.html: replace Debian with Ubuntu on default page.
1262 - d/p/split-logfile.patch: fix completely broken split-logfile command.
1263
1264 -- Robie Basak <robie.basak@ubuntu.com> Thu, 24 Jul 2014 15:13:16 +0000
1265
642apache2 (2.4.10-1) unstable; urgency=medium1266apache2 (2.4.10-1) unstable; urgency=medium
6431267
644 [ Arno Töll ]1268 [ Arno Töll ]
@@ -686,6 +1310,45 @@ apache2 (2.4.9-2) unstable; urgency=medium
6861310
687 -- Stefan Fritsch <sf@debian.org> Sun, 08 Jun 2014 10:38:04 +02001311 -- Stefan Fritsch <sf@debian.org> Sun, 08 Jun 2014 10:38:04 +0200
6881312
1313apache2 (2.4.9-1ubuntu2) utopic; urgency=medium
1314
1315 * Revert 2.4.4-6ubuntu3 and build against lua 5.1 again, since Apache doesn't
1316 yet support building against lua 5.2 (LP: #1323930).
1317
1318 -- Robie Basak <robie.basak@ubuntu.com> Wed, 28 May 2014 08:55:25 +0000
1319
1320apache2 (2.4.9-1ubuntu1) utopic; urgency=medium
1321
1322 * Merge from Debian unstable. Remaining changes:
1323 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1324 apache2.dirs}: Add ufw profiles.
1325 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1326 - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
1327 d/apache2.install, d/tests/ssl-passphrase: Plymouth aware passphrase
1328 dialog program ask-for-passphrase.
1329 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
1330 configure.
1331 - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
1332 upstream
1333 - Build using lua5.2.
1334 - d/tests/chroot: dep8 test for ChrootDir case.
1335 - d/tests/ssl-passphrase: update for new default path /var/www/html.
1336 - d/tests/duplicate-module-load: check for duplicate module loads.
1337 - d/index.html: replace Debian with Ubuntu on default page (LP: #1288690).
1338 - d/p/split-logfile.patch: fix completely broken split-logfile command
1339 (LP: #1299162). Thanks to Holger Mauermann.
1340 * Drop changes (upstreamed):
1341 - d/p/ignore-quilt-dir: adjust build system so that it does not use
1342 files find inside the .pc directory. This stops a double module load
1343 causing later havoc, including "ChrootDir" directive failure.
1344 - debian/patches/CVE-2013-6438.patch: properly calculate correct length
1345 in modules/dav/main/util.c.
1346 - debian/patches/CVE-2014-0098.patch: properly parse tokens in
1347 modules/loggers/mod_log_config.c.
1348 * d/tests/control: adjust dep8 tests for new "breaks-testbed" facility.
1349
1350 -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 May 2014 19:30:04 +0000
1351
689apache2 (2.4.9-1) unstable; urgency=medium1352apache2 (2.4.9-1) unstable; urgency=medium
6901353
691 * New upstream version.1354 * New upstream version.
@@ -718,6 +1381,63 @@ apache2 (2.4.9-1) unstable; urgency=medium
7181381
719 -- Stefan Fritsch <sf@debian.org> Sat, 29 Mar 2014 22:50:32 +01001382 -- Stefan Fritsch <sf@debian.org> Sat, 29 Mar 2014 22:50:32 +0100
7201383
1384apache2 (2.4.7-1ubuntu4) trusty; urgency=medium
1385
1386 * d/p/split-logfile.patch: fix completely broken split-logfile command
1387 (LP: #1299162). Thanks to Holger Mauermann.
1388
1389 -- Robie Basak <robie.basak@ubuntu.com> Thu, 03 Apr 2014 11:21:22 +0000
1390
1391apache2 (2.4.7-1ubuntu3) trusty; urgency=medium
1392
1393 * SECURITY UPDATE: denial of service via mod_dav incorrect end of string
1394 calculation
1395 - debian/patches/CVE-2013-6438.patch: properly calculate correct length
1396 in modules/dav/main/util.c.
1397 - CVE-2013-6438
1398 * SECURITY UPDATE: denial of service via truncated cookie and
1399 mod_log_config
1400 - debian/patches/CVE-2014-0098.patch: properly parse tokens in
1401 modules/loggers/mod_log_config.c.
1402 - CVE-2014-0098
1403
1404 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 20 Mar 2014 08:34:10 -0400
1405
1406apache2 (2.4.7-1ubuntu2) trusty; urgency=medium
1407
1408 * d/index.html: replace Debian with Ubuntu on default page
1409 (LP: #1288690).
1410
1411 -- Robie Basak <robie.basak@ubuntu.com> Wed, 19 Mar 2014 11:04:21 +0000
1412
1413apache2 (2.4.7-1ubuntu1) trusty; urgency=medium
1414
1415 * Merge from Debian unstable. Remaining changes:
1416 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1417 apache2.dirs}: Add ufw profiles.
1418 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1419 - d/control, d/config-dir/mods-available/ssl.conf,
1420 d/ask-for-passphrase, d/apache2.install, d/tests/ssl-passphrase:
1421 Plymouth aware passphrase dialog program ask-for-passphrase.
1422 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
1423 to configure.
1424 - debian/patches/086_svn_cross_compiles: Backport several cross fixes
1425 from upstream
1426 - Build using lua5.2.
1427 - d/tests/chroot: dep8 test for ChrootDir case.
1428 - d/p/ignore-quilt-dir: adjust build system so that it does not use
1429 files find inside the .pc directory. This stops a double module load
1430 causing later havoc, including "ChrootDir" directive failure.
1431 * Drop changes:
1432 - debian/{control, rules}: Enable PIE hardening: no longer required;
1433 2.4.7-1 is already hardened.
1434 - d/p/itk-rerun-configure.patch: no longer needed, as ITK support has moved
1435 out of this package.
1436 * d/tests/ssl-passphrase: update for new default path /var/www/html.
1437 * d/tests/duplicate-module-load: check for duplicate module loads.
1438
1439 -- Robie Basak <robie.basak@ubuntu.com> Tue, 14 Jan 2014 17:23:47 +0000
1440
721apache2 (2.4.7-1) unstable; urgency=low1441apache2 (2.4.7-1) unstable; urgency=low
7221442
723 New upstream version1443 New upstream version
@@ -781,6 +1501,53 @@ apache2 (2.4.6-3) unstable; urgency=low
7811501
782 -- Stefan Fritsch <sf@debian.org> Mon, 12 Aug 2013 20:15:38 +02001502 -- Stefan Fritsch <sf@debian.org> Mon, 12 Aug 2013 20:15:38 +0200
7831503
1504apache2 (2.4.6-2ubuntu4) trusty; urgency=low
1505
1506 * d/p/ignore-quilt-dir, d/p/itk-rerun-configure.patch: adjust build system so
1507 that it does not use files find inside the .pc directory. This stops a
1508 double module load causing later havoc, including "ChrootDir" directive
1509 failure (LP: #1251939). Thanks to Stefan Fritsch.
1510 * d/tests/chroot: dep8 test for ChrootDir case.
1511
1512 -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 Nov 2013 16:21:51 +0000
1513
1514apache2 (2.4.6-2ubuntu3) trusty; urgency=low
1515
1516 * debian/apache2.install: Correct path for ufw.
1517 (LP: #1252722)
1518
1519 -- Chuck Short <zulcss@ubuntu.com> Tue, 19 Nov 2013 08:59:54 -0500
1520
1521apache2 (2.4.6-2ubuntu2) saucy; urgency=low
1522
1523 * d/ask-for-passphrase: mark executable so that apache2 can run it. Fixes
1524 passphrase prompting for SSL certificates that are passphrase protected.
1525 * Add dep8 test for SSL passphrase prompting.
1526
1527 -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 Aug 2013 13:08:52 +0000
1528
1529apache2 (2.4.6-2ubuntu1) saucy; urgency=low
1530
1531 * Merge from Debian unstable. Remaining changes:
1532 - debian/{control, rules}: Enable PIE hardening.
1533 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1534 apache2.dirs}: Add ufw profiles.
1535 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1536 - debian/control, debian/config-dir/mods-available/ssl.conf,
1537 debian/ask-for-passphrase, debian/apache2.install: Plymouth aware
1538 passphrase dialog program ask-for-passphrase.
1539 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
1540 to configure.
1541 - debian/patches/086_svn_cross_compiles: Backport several cross fixes
1542 from upstream
1543 * Dropped changes:
1544 - debian/patches/CVE-2013-1896.patch: upstream
1545 * Fixed module dependencies (LP: #1205314)
1546 - debian/config-dir/mods-available/lbmethod_*: properly specify
1547 proxy_balancer, not mod_proxy_balancer.
1548
1549 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 26 Jul 2013 08:31:33 -0400
1550
784apache2 (2.4.6-2) unstable; urgency=low1551apache2 (2.4.6-2) unstable; urgency=low
7851552
786 [ Stefan Fritsch ]1553 [ Stefan Fritsch ]
@@ -833,6 +1600,56 @@ apache2 (2.4.6-1) unstable; urgency=low
8331600
834 -- Arno Töll <arno@debian.org> Sun, 21 Jul 2013 18:44:42 +02001601 -- Arno Töll <arno@debian.org> Sun, 21 Jul 2013 18:44:42 +0200
8351602
1603apache2 (2.4.4-6ubuntu5) saucy; urgency=low
1604
1605 * SECURITY UPDATE: denial of service via MERGE request
1606 - debian/patches/CVE-2013-1896.patch: make sure DAV is enabled for URI
1607 in modules/dav/main/mod_dav.c.
1608 - CVE-2013-1896
1609
1610 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 18 Jul 2013 11:20:47 -0400
1611
1612apache2 (2.4.4-6ubuntu4) saucy; urgency=low
1613
1614 * d/apache2-{utils,bin}.install: move apport hook from apache2-utils to
1615 apache2-bin. apache2-utils is only suggested by apache2, so may not
1616 always be installed by bug reporters. However, apache2-bin will always
1617 need to be installed for Apache to be functional, so this is a better
1618 place for the apport hook. apache2-bin already Conflicts/Replaces
1619 apache2.2-common, so this also fixes (LP: #1199318).
1620 * d/apache2.py: adjust apport hook for new location of configuration
1621 files in apache2 >= 2.4: they have moved from apache2.2-common to
1622 apache2.
1623
1624 -- Robie Basak <robie.basak@ubuntu.com> Wed, 17 Jul 2013 17:54:22 +0000
1625
1626apache2 (2.4.4-6ubuntu3) saucy; urgency=low
1627
1628 * Build using lua5.2.
1629
1630 -- Matthias Klose <doko@ubuntu.com> Wed, 17 Jul 2013 14:24:42 +0200
1631
1632apache2 (2.4.4-6ubuntu2) saucy; urgency=low
1633
1634 * debian/rules: Fix FTBFS while installing ufw.
1635
1636 -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 10:10:14 -0500
1637
1638apache2 (2.4.4-6ubuntu1) saucy; urgency=low
1639
1640 * Merge from Debian unstable. Remaining changes:
1641 - debian/{control, rules}: Enable PIE hardening.
1642 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1643 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1644 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1645 Plymouth aware passphrase dialog program ask-for-passphrase.
1646 * Dropped changes:
1647 - debian/patches/CVE-2012-2687.patch: Dropped no longer needed.
1648 - debian/patches/CVE-2012-3499_4558.patch: Dropped no longer needed.
1649 - debian/patches/CVE-2012-4929.patch: Dropped no longer needed.
1650
1651 -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 08:34:01 -0500
1652
836apache2 (2.4.4-6) unstable; urgency=low1653apache2 (2.4.4-6) unstable; urgency=low
8371654
838 * Denote exact versions breaking gnome-user-share now that Gnome maintainers1655 * Denote exact versions breaking gnome-user-share now that Gnome maintainers
@@ -1304,6 +2121,122 @@ apache2 (2.4.1-1) experimental; urgency=low
13042121
1305 -- Stefan Fritsch <sf@debian.org> Mon, 19 Mar 2012 10:46:02 +01002122 -- Stefan Fritsch <sf@debian.org> Mon, 19 Mar 2012 10:46:02 +0100
13062123
2124apache2 (2.2.22-6ubuntu5) raring; urgency=low
2125
2126 * SECURITY UPDATE: multiple cross-site scripting issues
2127 - debian/patches/CVE-2012-3499_4558.patch: properly escape html in
2128 modules/generators/{mod_info.c,mod_status.c},
2129 modules/ldap/util_ldap_cache_mgr.c, modules/mappers/mod_imagemap.c,
2130 modules/proxy/{mod_proxy_balancer.c,mod_proxy_ftp.c}.
2131 - CVE-2012-3499
2132 - CVE-2012-4558
2133 * SECURITY UPDATE: symlink attack in apache2ctl script
2134 - debian/apache2ctl: introduce and use a safer mkdir_chown() function.
2135 - Thanks to Stefan Fritsch for the fix.
2136 - CVE-2013-1048
2137
2138 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 15 Mar 2013 07:59:58 -0400
2139
2140apache2 (2.2.22-6ubuntu4) raring; urgency=low
2141
2142 * Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to configure.
2143 * Skip module sanity check between MPMs if cross-building without the
2144 kernel/binfmt support to run our target binaries on the build system.
2145 * Backport several cross fixes from upstream as 086_svn_cross_compiles.
2146
2147 -- Adam Conrad <adconrad@ubuntu.com> Wed, 05 Dec 2012 02:21:46 -0700
2148
2149apache2 (2.2.22-6ubuntu3) raring; urgency=low
2150
2151 * SECURITY UPDATE: XSS vulnerability in mod_negotiation
2152 - debian/patches/CVE-2012-2687.patch: escape filenames in
2153 modules/mappers/mod_negotiation.c.
2154 - CVE-2012-2687
2155 * SECURITY UPDATE: CRIME attack ssl attack (LP: #1068854)
2156 - debian/patches/CVE-2012-4929.patch: backport SSLCompression on|off
2157 directive. Defaults to off as enabling compression enables the CRIME
2158 attack.
2159 - CVE-2012-4929
2160
2161 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 08 Nov 2012 17:56:24 -0500
2162
2163apache2 (2.2.22-6ubuntu2) quantal; urgency=low
2164
2165 * debian/apache2.py
2166 - Update apport hook for python3 ; thanks to Edward Donovan (LP: #1013171)
2167 - Check if this directory exists: /etc/apache2/sites-enabled/
2168
2169 -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Mon, 16 Jul 2012 10:02:18 +0200
2170
2171apache2 (2.2.22-6ubuntu1) quantal; urgency=low
2172
2173 * Merge from Debian unstable. Remaining changes:
2174 - debian/{control, rules}: Enable PIE hardening.
2175 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2176 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2177 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2178 Plymouth aware passphrase dialog program ask-for-passphrase.
2179 * Dropped changes:
2180 - debian/control: Add bzr tag and point it to our tree; this is not
2181 really required and just increases the delta.
2182
2183 -- Robie Basak <robie.basak@ubuntu.com> Fri, 08 Jun 2012 11:37:31 +0100
2184
2185apache2 (2.2.22-6) unstable; urgency=low
2186
2187 [ Stefan Fritsch ]
2188 * Fix regression causing apache2 to cache "206 partial content" responses,
2189 and then serving these partial responses when replying to normal requests.
2190 Closes: #671204
2191 * Add section to security.conf that shows how to forbid access to VCS
2192 directories. Closes: #548213
2193 * Update ssl default cipher config, add alternative speed optimized config.
2194 Closes: #649020
2195 * Add "AddCharset" for .brf files in default mod_mime config.
2196 Closes: #402567
2197 * Don't create httpd.conf anymore and don't include it in apache2.conf. If
2198 it contains local modifications, move it to /etc/apache2/conf.d/httpd.conf
2199 * Port some of the comments in apache2.conf from the 2.4 package.
2200 * Compile mod_version statically, drop associated module load file.
2201 * If apache2 is not running, make "/etc/init.d/apache2 reload" skip the
2202 configtest.
2203 * Note in README.Debian that future versions of the package will have the
2204 include statements changed to include only *.conf.
2205 * Change compiled-in document root to /var/www, to avoid strange error
2206 messages.
2207 * Use "dh --with autotools_dev" instead of patching config.sub/config.guess.
2208
2209 [ Arno Töll ]
2210 * Fix apxs to import LDFLAGS from config_vars.mk. Moreover, make it possible
2211 to override LDFLAGS at compile time by defining LDLAGS in the environment,
2212 just like it is possible for CFLAGS. This also means, config_vars.mk now
2213 exports hardening build flags by default.
2214 * Update doc-base metadata for the apache2-doc package.
2215
2216 -- Stefan Fritsch <sf@debian.org> Tue, 29 May 2012 22:05:48 +0200
2217
2218apache2 (2.2.22-5) unstable; urgency=low
2219
2220 * Make LoadFile and LoadModule look in the standard search paths if the
2221 dso file name is given as a pure filename. This helps with the multi-arch
2222 transition.
2223
2224 -- Stefan Fritsch <sf@debian.org> Mon, 30 Apr 2012 23:38:33 +0200
2225
2226apache2 (2.2.22-4) unstable; urgency=high
2227
2228 * CVE-2012-0216: Remove "Alias /doc /usr/share/doc" from the default virtual
2229 hosts' config files.
2230 If scripting modules like mod_php or mod_rivet are enabled on systems
2231 where either 1) some frontend server forwards connections to an apache2
2232 backend server on the localhost address, or 2) the machine running
2233 apache2 is also used for web browsing, this could allow a remote
2234 attacker to execute example scripts stored under /usr/share/doc.
2235 Depending on the installed packages, this could lead to issues like cross
2236 site scripting, code execution, or leakage of sensitive data.
2237
2238 -- Stefan Fritsch <sf@debian.org> Sun, 15 Apr 2012 23:41:43 +0200
2239
1307apache2 (2.2.22-3) unstable; urgency=low2240apache2 (2.2.22-3) unstable; urgency=low
13082241
1309 * Fix "FTBFS: mkdir: cannot create directory `debian/build-tree/arch':2242 * Fix "FTBFS: mkdir: cannot create directory `debian/build-tree/arch':
@@ -1324,6 +2257,18 @@ apache2 (2.2.22-2) unstable; urgency=low
13242257
1325 -- Stefan Fritsch <sf@debian.org> Thu, 15 Mar 2012 00:02:31 +01002258 -- Stefan Fritsch <sf@debian.org> Thu, 15 Mar 2012 00:02:31 +0100
13262259
2260apache2 (2.2.22-1ubuntu1) precise; urgency=low
2261
2262 * Merge from Debian testing. Remaining changes:
2263 - debian/{control, rules}: Enable PIE hardening.
2264 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2265 - debian/control: Add bzr tag and point it to our tree
2266 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2267 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2268 Plymouth aware passphrase dialog program ask-for-passphrase.
2269
2270 -- Chuck Short <zulcss@ubuntu.com> Sun, 12 Feb 2012 20:06:35 -0500
2271
1327apache2 (2.2.22-1) unstable; urgency=low2272apache2 (2.2.22-1) unstable; urgency=low
13282273
1329 [ Stefan Fritsch ]2274 [ Stefan Fritsch ]
@@ -1341,6 +2286,18 @@ apache2 (2.2.22-1) unstable; urgency=low
13412286
1342 -- Stefan Fritsch <sf@debian.org> Wed, 01 Feb 2012 21:49:04 +0100 2287 -- Stefan Fritsch <sf@debian.org> Wed, 01 Feb 2012 21:49:04 +0100
13432288
2289apache2 (2.2.21-5ubuntu1) precise; urgency=low
2290
2291 * Merge from Debian testing. Remaining changes:
2292 - debian/{control, rules}: Enable PIE hardening.
2293 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2294 - debian/control: Add bzr tag and point it to our tree
2295 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2296 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2297 Plymouth aware passphrase dialog program ask-for-passphrase.
2298
2299 -- Chuck Short <zulcss@ubuntu.com> Mon, 09 Jan 2012 06:26:31 +0000
2300
1344apache2 (2.2.21-5) unstable; urgency=low2301apache2 (2.2.21-5) unstable; urgency=low
13452302
1346 [ Arno Töll ]2303 [ Arno Töll ]
@@ -1394,6 +2351,26 @@ apache2 (2.2.21-4) unstable; urgency=low
13942351
1395 -- Stefan Fritsch <sf@debian.org> Thu, 29 Dec 2011 12:09:14 +01002352 -- Stefan Fritsch <sf@debian.org> Thu, 29 Dec 2011 12:09:14 +0100
13962353
2354apache2 (2.2.21-3ubuntu2) precise; urgency=low
2355
2356 * d/ask-for-passphrase: Flip the logic of this script so that it checks
2357 first to see if apache is being started from a TTY, and then if not,
2358 tries plymouth. (LP: #887410)
2359
2360 -- Clint Byrum <clint@ubuntu.com> Tue, 06 Dec 2011 16:49:33 -0800
2361
2362apache2 (2.2.21-3ubuntu1) precise; urgency=low
2363
2364 * Merge from Debian testing. Remaining changes:
2365 - debian/{control, rules}: Enable PIE hardening.
2366 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2367 - debian/control: Add bzr tag and point it to our tree
2368 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2369 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2370 Plymouth aware passphrase dialog program ask-for-passphrase.
2371
2372 -- Chuck Short <zulcss@ubuntu.com> Fri, 09 Dec 2011 05:20:43 +0000
2373
1397apache2 (2.2.21-3) unstable; urgency=medium2374apache2 (2.2.21-3) unstable; urgency=medium
13982375
1399 * Fix CVE-2011-4317: Prevent unintended pattern expansion in some2376 * Fix CVE-2011-4317: Prevent unintended pattern expansion in some
@@ -1408,6 +2385,24 @@ apache2 (2.2.21-3) unstable; urgency=medium
14082385
1409 -- Stefan Fritsch <sf@debian.org> Sat, 03 Dec 2011 18:54:03 +01002386 -- Stefan Fritsch <sf@debian.org> Sat, 03 Dec 2011 18:54:03 +0100
14102387
2388apache2 (2.2.21-2ubuntu2) precise; urgency=low
2389
2390 * No-change rebuild to drop spurious libsfgcc1 dependency on armhf.
2391
2392 -- Adam Conrad <adconrad@ubuntu.com> Fri, 02 Dec 2011 17:36:28 -0700
2393
2394apache2 (2.2.21-2ubuntu1) precise; urgency=low
2395
2396 * Merge from debian unstable. Remaining changes:
2397 - debian/{control, rules}: Enable PIE hardening.
2398 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2399 - debian/control: Add bzr tag and point it to our tree
2400 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2401 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2402 Plymouth aware passphrase dialog program ask-for-passphrase.
2403
2404 -- Chuck Short <zulcss@ubuntu.com> Fri, 14 Oct 2011 16:01:29 +0000
2405
1411apache2 (2.2.21-2) unstable; urgency=high2406apache2 (2.2.21-2) unstable; urgency=high
14122407
1413 * Fix CVE-2011-3368: Prevent unintended pattern expansion in some2408 * Fix CVE-2011-3368: Prevent unintended pattern expansion in some
@@ -1425,6 +2420,19 @@ apache2 (2.2.21-1) unstable; urgency=low
14252420
1426 -- Stefan Fritsch <sf@debian.org> Mon, 26 Sep 2011 18:16:11 +02002421 -- Stefan Fritsch <sf@debian.org> Mon, 26 Sep 2011 18:16:11 +0200
14272422
2423apache2 (2.2.20-1ubuntu1) oneiric; urgency=low
2424
2425 * Merge from debian unstable to fix CVE-2011-3192 (LP: #837991).
2426 Remaining changes:
2427 - debian/{control, rules}: Enable PIE hardening.
2428 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2429 - debian/control: Add bzr tag and point it to our tree
2430 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2431 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2432 Plymouth aware passphrase dialog program ask-for-passphrase.
2433
2434 -- Steve Beattie <sbeattie@ubuntu.com> Tue, 06 Sep 2011 01:17:15 -0700
2435
1428apache2 (2.2.20-1) unstable; urgency=low2436apache2 (2.2.20-1) unstable; urgency=low
14292437
1430 * New upstream release.2438 * New upstream release.
@@ -1447,6 +2455,18 @@ apache2 (2.2.19-2) unstable; urgency=high
14472455
1448 -- Stefan Fritsch <sf@debian.org> Mon, 29 Aug 2011 17:08:17 +02002456 -- Stefan Fritsch <sf@debian.org> Mon, 29 Aug 2011 17:08:17 +0200
14492457
2458apache2 (2.2.19-1ubuntu1) oneiric; urgency=low
2459
2460 * Merge from debian unstable (LP: #787013). Remaining changes:
2461 - debian/{control, rules}: Enable PIE hardening.
2462 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2463 - debian/control: Add bzr tag and point it to our tree
2464 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2465 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2466 Plymouth aware passphrase dialog program ask-for-passphrase.
2467
2468 -- Andres Rodriguez <andreserl@ubuntu.com> Mon, 23 May 2011 10:16:09 -0400
2469
1450apache2 (2.2.19-1) unstable; urgency=low2470apache2 (2.2.19-1) unstable; urgency=low
14512471
1452 * New upstream release.2472 * New upstream release.
@@ -1464,6 +2484,18 @@ apache2 (2.2.19-1) unstable; urgency=low
14642484
1465 -- Stefan Fritsch <sf@debian.org> Sun, 22 May 2011 10:21:21 +02002485 -- Stefan Fritsch <sf@debian.org> Sun, 22 May 2011 10:21:21 +0200
14662486
2487apache2 (2.2.17-3ubuntu1) oneiric; urgency=low
2488
2489 * Merge from debian unstable. Remaining changes:
2490 - debian/{control, rules}: Enable PIE hardening.
2491 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2492 - debian/control: Add bzr tag and point it to our tree
2493 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2494 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2495 Plymouth aware passphrase dialog program ask-for-passphrase.
2496
2497 -- Chuck Short <zulcss@ubuntu.com> Mon, 11 Apr 2011 02:13:30 +0100
2498
1467apache2 (2.2.17-3) unstable; urgency=low2499apache2 (2.2.17-3) unstable; urgency=low
14682500
1469 * Fix compilation with OpenSSL without SSLv2 support. Closes: #6220492501 * Fix compilation with OpenSSL without SSLv2 support. Closes: #622049
@@ -1490,6 +2522,18 @@ apache2 (2.2.17-2) unstable; urgency=high
14902522
1491 -- Stefan Fritsch <sf@debian.org> Mon, 21 Mar 2011 23:01:17 +01002523 -- Stefan Fritsch <sf@debian.org> Mon, 21 Mar 2011 23:01:17 +0100
14922524
2525apache2 (2.2.17-1ubuntu1) natty; urgency=low
2526
2527 * Merge from debian unstable, remaining changes:
2528 - debian/{control, rules}: Enable PIE hardening.
2529 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2530 - debian/control: Add bzr tag and point it to our tree
2531 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2532 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2533 Plymouth aware passphrase dialog program ask-for-passphrase.
2534
2535 -- Chuck Short <zulcss@ubuntu.com> Tue, 22 Feb 2011 13:02:08 -0500
2536
1493apache2 (2.2.17-1) unstable; urgency=low2537apache2 (2.2.17-1) unstable; urgency=low
14942538
1495 * New upstream version2539 * New upstream version
@@ -1498,6 +2542,32 @@ apache2 (2.2.17-1) unstable; urgency=low
14982542
1499 -- Stefan Fritsch <sf@debian.org> Tue, 15 Feb 2011 23:30:18 +01002543 -- Stefan Fritsch <sf@debian.org> Tue, 15 Feb 2011 23:30:18 +0100
15002544
2545apache2 (2.2.16-6ubuntu3) natty; urgency=low
2546
2547 * debian/rules: Don't use "-fno-strict-aliasing" since it causes
2548 apache FTBFS on amd64. (LP: #711293)
2549
2550 -- Chuck Short <zulcss@ubuntu.com> Tue, 01 Feb 2011 10:19:55 -0500
2551
2552apache2 (2.2.16-6ubuntu2) natty; urgency=low
2553
2554 * debian/rules: Use "-fno-strict-aliasing" to work around a gcc bug.
2555 (LP: #697105)
2556
2557 -- Chuck Short <zulcss@ubuntu.com> Tue, 25 Jan 2011 11:14:58 -0500
2558
2559apache2 (2.2.16-6ubuntu1) natty; urgency=low
2560
2561 * Merge from debian unstable. Remaining changes:
2562 - debian/{control, rules}: Enable PIE hardening.
2563 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2564 - debian/control: Add bzr tag and point it to our tree
2565 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2566 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2567 Plymouth aware passphrase dialog program ask-for-passphrase.
2568
2569 -- Chuck Short <zulcss@ubuntu.com> Sun, 02 Jan 2011 06:05:51 +0000
2570
1501apache2 (2.2.16-6) unstable; urgency=low2571apache2 (2.2.16-6) unstable; urgency=low
15022572
1503 * Also add $named to the secondary-init-script example.2573 * Also add $named to the secondary-init-script example.
@@ -1513,6 +2583,30 @@ apache2 (2.2.16-5) unstable; urgency=medium
15132583
1514 -- Stefan Fritsch <sf@debian.org> Fri, 31 Dec 2010 01:22:19 +01002584 -- Stefan Fritsch <sf@debian.org> Fri, 31 Dec 2010 01:22:19 +0100
15152585
2586apache2 (2.2.16-4ubuntu2) natty; urgency=low
2587
2588 [Clint Byrum]
2589 * Adding plymouth aware passphrase dialog program ask-for-passphrase.
2590 (LP: #582963)
2591 + debian/control: apache2.2-common depends on bash for ask-for-passphrase
2592 + debian/config-dir/mods-available/ssl.conf:
2593 - SSLPassPhraseDialog now uses exec:/usr/share/apache2/ask-for-passhrase
2594
2595 [Chuck Short]
2596 * Add apport hook. (LP: #609177)
2597 + debian/apache2.py, debian/apache2.2-common.install
2598
2599 -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:43 -0500
2600
2601apache2 (2.2.16-4ubuntu1) natty; urgency=low
2602
2603 * Merge from debian unstable. Remaining changes:
2604 - debian/{control, rules}: Enable PIE hardening.
2605 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2606 - debian/control: Add bzr tag and point it to our tree
2607
2608 -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:41 -0500
2609
1516apache2 (2.2.16-4) unstable; urgency=medium2610apache2 (2.2.16-4) unstable; urgency=medium
15172611
1518 * Increase the mod_reqtimeout default timeouts to avoid potential problems2612 * Increase the mod_reqtimeout default timeouts to avoid potential problems
@@ -1523,6 +2617,15 @@ apache2 (2.2.16-4) unstable; urgency=medium
15232617
1524 -- Stefan Fritsch <sf@debian.org> Sun, 14 Nov 2010 19:05:55 +01002618 -- Stefan Fritsch <sf@debian.org> Sun, 14 Nov 2010 19:05:55 +0100
15252619
2620apache2 (2.2.16-3ubuntu1) natty; urgency=low
2621
2622 * Merge from debian unstable. Remaining changes:
2623 - debian/{control, rules}: Enable PIE hardening.
2624 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2625 - debian/control: Add bzr tag and point it to our tree.
2626
2627 -- Chuck Short <zulcss@ubuntu.com> Tue, 12 Oct 2010 11:54:48 +0100
2628
1526apache2 (2.2.16-3) unstable; urgency=high2629apache2 (2.2.16-3) unstable; urgency=high
15272630
1528 * CVE-2010-1623: mod_reqtimeout: Fix potential DoS by high memory usage.2631 * CVE-2010-1623: mod_reqtimeout: Fix potential DoS by high memory usage.
@@ -1545,6 +2648,30 @@ apache2 (2.2.16-2) unstable; urgency=low
15452648
1546 -- Stefan Fritsch <sf@debian.org> Sun, 29 Aug 2010 15:29:21 +02002649 -- Stefan Fritsch <sf@debian.org> Sun, 29 Aug 2010 15:29:21 +0200
15472650
2651apache2 (2.2.16-1ubuntu3) maverick; urgency=low
2652
2653 * Revert "stty sane" to unbreak apache starting, this will have to be
2654 fixed a different way. (LP: #626723)
2655
2656 -- Chuck Short <zulcss@ubuntu.com> Wed, 08 Sep 2010 08:33:17 -0400
2657
2658apache2 (2.2.16-1ubuntu2) maverick; urgency=low
2659
2660 * debian/apache2.2-common.apache2.init: Add stty sane so that users will get a
2661 password prompt when using apache-ssl. (LP: #582963)
2662
2663 -- Chuck Short <zulcss@ubuntu.com> Wed, 25 Aug 2010 09:25:05 -0400
2664
2665apache2 (2.2.16-1ubuntu1) maverick; urgency=low
2666
2667 * Merge from debian unstable. Remaining changes:
2668 - debian/{control, rules}: Enable PIE hardening.
2669 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2670 - debian/control: Add bzr tag and point it to our tree.
2671 - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
2672
2673 -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Jul 2010 20:21:37 +0100
2674
1548apache2 (2.2.16-1) unstable; urgency=medium2675apache2 (2.2.16-1) unstable; urgency=medium
15492676
1550 * Urgency medium for security fix.2677 * Urgency medium for security fix.
@@ -1577,6 +2704,24 @@ apache2 (2.2.15-6) unstable; urgency=low
15772704
1578 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jul 2010 23:41:08 +02002705 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jul 2010 23:41:08 +0200
15792706
2707apache2 (2.2.15-5ubuntu1) maverick; urgency=low
2708
2709 * Merge from debian unstable. Remaining changes:
2710 - debian/{control, rules}: Enable PIE hardening.
2711 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2712 - debian/control: Add bzr tag and point it to our tree.
2713 - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
2714 + Dropped:
2715 - debian/patches/206-fix-potential-memory-leaks.dpatch: No longer needed.
2716 - debian/patches/206-report-max-client-mpm-worker.dpatch: No longer needed.
2717 - debian/config-dir/apache2.conf: Merged back from debian.
2718 - mod-reqtimeout functionality: Merge back from debian.
2719 - debian/patches/204_CVE-2010-0408.dpatch: No longer needed.
2720 - debian/patches/205_CVE-2010-0434.dpatch: No longer needed.
2721 - debian/patches/203_fix-ab-segfault.dpatch: No longer needed.
2722
2723 -- Chuck Short <zulcss@ubuntu.com> Wed, 05 May 2010 01:28:04 +0100
2724
1580apache2 (2.2.15-5) unstable; urgency=low2725apache2 (2.2.15-5) unstable; urgency=low
15812726
1582 * Conflict with apache package as we now include apachectl. Closes: #5790652727 * Conflict with apache package as we now include apachectl. Closes: #579065
@@ -1697,6 +2842,80 @@ apache2 (2.2.14-6) unstable; urgency=low
16972842
1698 -- Stefan Fritsch <sf@debian.org> Sun, 07 Feb 2010 17:29:45 +01002843 -- Stefan Fritsch <sf@debian.org> Sun, 07 Feb 2010 17:29:45 +0100
16992844
2845apache2 (2.2.14-5ubuntu8) lucid; urgency=low
2846
2847 * debian/patches/210-backport-mod-reqtimeout-ftbfs.dpatch: Add missing mod_reqtime.so
2848 (LP: #562370)
2849
2850 -- Chuck Short <zulcss@ubuntu.com> Tue, 13 Apr 2010 15:09:57 -0400
2851
2852apache2 (2.2.14-5ubuntu7) lucid; urgency=low
2853
2854 * debian/patches/206-fix-potential-memory-leaks.dpatch: Fix potential memory
2855 leaks by making sure to not destroy bucket brigades that have been created
2856 by earlier filters. Backported from 2.2.15.
2857 * debian/patches/206-report-max-client-mpm-worker.dpatch: Don't report server
2858 has reached MaxClients until it has. Backported from 2.2.15
2859 * debian/config-dir/apache2.conf: Make the Files ~ "^\.ht" block in apache2.conf
2860 more secure by adding Satisfy all. (Debian bug: #572075)
2861 * debian/rules, debian/patches/209-backport-mod-reqtimeout.dpatch,
2862 debian/config2-dir/mods-available/reqtimeout.load,
2863 debian/config2-dir/mods-available/reqtimeout.conf debian/NEWS : Backport the
2864 mod-reqtimeout module from 2.2.15, this will mitigate apache slowloris
2865 bug in apache. Enable it by default. (LP: #392759)
2866
2867 -- Chuck Short <zulcss@ubuntu.com> Mon, 05 Apr 2010 09:53:35 -0400
2868
2869apache2 (2.2.14-5ubuntu6) lucid; urgency=low
2870
2871 * debian/apache2.2-common.apache2.init: Fix thinko. (LP: #551681)
2872
2873 -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 09:41:11 -0400
2874
2875apache2 (2.2.14-5ubuntu5) lucid; urgency=low
2876
2877 * Revert 99-fix-mod-dav-permissions.dpatch
2878
2879 -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 07:55:46 -0400
2880
2881apache2 (2.2.14-5ubuntu4) lucid; urgency=low
2882
2883 * debian/patches/99-fix-mod-dav-permissions.dpatch: Fix permisisons when
2884 downloading files from webdav (LP: #540747)
2885 * debian/apache2.2-common.apache2.init: Add graceful restart (LP: #456381)
2886
2887 -- Chuck Short <zulcss@ubuntu.com> Mon, 29 Mar 2010 13:37:39 -0400
2888
2889apache2 (2.2.14-5ubuntu3) lucid; urgency=low
2890
2891 * SECURITY UPDATE: denial of service via crafted request in mod_proxy_ajp
2892 - debian/patches/204_CVE-2010-0408.dpatch: return the right error code
2893 in modules/proxy/mod_proxy_ajp.c.
2894 - CVE-2010-0408
2895 * SECURITY UPDATE: information disclosure via improper handling of
2896 headers in subrequests
2897 - debian/patches/205_CVE-2010-0434.dpatch: use a copy of r->headers_in
2898 in server/protocol.c.
2899 - CVE-2010-0434
2900
2901 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 10 Mar 2010 14:48:48 -0500
2902
2903apache2 (2.2.14-5ubuntu2) lucid; urgency=low
2904
2905 * debian/patches/203_fix-ab-segfault.dpatch: Fix segfaulting ab when using really
2906 wacky options. (LP: #450501)
2907
2908 -- Chuck Short <zulcss@ubuntu.com> Mon, 08 Mar 2010 14:53:17 -0500
2909
2910apache2 (2.2.14-5ubuntu1) lucid; urgency=low
2911
2912 * Merge from debian testing. Remaining changes: LP: #506862
2913 - debian/{control, rules}: Enable PIE hardening.
2914 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2915 - debian/control: Add bzr tag and point it to our tree.
2916
2917 -- Bhavani Shankar <right2bhavi@gmail.com> Wed, 13 Jan 2010 14:28:41 +0530
2918
1700apache2 (2.2.14-5) unstable; urgency=low2919apache2 (2.2.14-5) unstable; urgency=low
17012920
1702 * Security: Further mitigation for the TLS renegotation attack2921 * Security: Further mitigation for the TLS renegotation attack
@@ -1720,6 +2939,15 @@ apache2 (2.2.14-5) unstable; urgency=low
17202939
1721 -- Stefan Fritsch <sf@debian.org> Sat, 02 Jan 2010 22:44:15 +01002940 -- Stefan Fritsch <sf@debian.org> Sat, 02 Jan 2010 22:44:15 +0100
17222941
2942apache2 (2.2.14-4ubuntu1) lucid; urgency=low
2943
2944 * Resynchronzie with Debian, remaining changes are:
2945 - debian/{control, rules}: Enable PIE hardening.
2946 - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
2947 - debian/control: Add bzr tag and point it to our tree.
2948
2949 -- Chuck Short <zulcss@ubuntu.com> Wed, 23 Dec 2009 14:44:51 -0500
2950
1723apache2 (2.2.14-4) unstable; urgency=low2951apache2 (2.2.14-4) unstable; urgency=low
17242952
1725 * Disable localized error pages again by default because they break2953 * Disable localized error pages again by default because they break
@@ -1770,6 +2998,17 @@ apache2 (2.2.14-2) unstable; urgency=medium
17702998
1771 -- Stefan Fritsch <sf@debian.org> Sat, 07 Nov 2009 14:37:37 +01002999 -- Stefan Fritsch <sf@debian.org> Sat, 07 Nov 2009 14:37:37 +0100
17723000
3001apache2 (2.2.14-1ubuntu1) lucid; urgency=low
3002
3003 * Merge from debian testing, remaining changes:
3004 - debian/{control, rules}: Enable PIE hardening.
3005 - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
3006 - debian/conrol: Add bzr tag and point it to our tree.
3007 - Dropped debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
3008 Already applied upstream.
3009
3010 -- Chuck Short <zulcss@ubuntu.com> Fri, 06 Nov 2009 00:29:03 +0000
3011
1773apache2 (2.2.14-1) unstable; urgency=low3012apache2 (2.2.14-1) unstable; urgency=low
17743013
1775 * New upstream version:3014 * New upstream version:
@@ -1804,6 +3043,24 @@ apache2 (2.2.13-1) unstable; urgency=low
18043043
1805 -- Stefan Fritsch <sf@debian.org> Mon, 31 Aug 2009 20:28:56 +02003044 -- Stefan Fritsch <sf@debian.org> Mon, 31 Aug 2009 20:28:56 +0200
18063045
3046apache2 (2.2.12-1ubuntu2) karmic; urgency=low
3047
3048 * debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
3049 - Fix potential segfaults with the use of the legacy ap_rputs() etc
3050 interfaces, in cases where an output filter fails. This happens
3051 frequently after CVE-2009-1891 got fixed. (LP: #409987)
3052
3053 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 17 Aug 2009 15:38:47 -0400
3054
3055apache2 (2.2.12-1ubuntu1) karmic; urgency=low
3056
3057 * Merge from debian unstable, remaining changes:
3058 - debian/{control,rules}: enable PIE hardening.
3059 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3060 - Dropped debian/patches/203_fix-ssl-timeftm-ignored.dpatch.
3061
3062 -- Chuck Short <zulcss@ubuntu.com> Tue, 04 Aug 2009 20:04:24 +0100
3063
1807apache2 (2.2.12-1) unstable; urgency=low3064apache2 (2.2.12-1) unstable; urgency=low
18083065
1809 * New upstream release:3066 * New upstream release:
@@ -1851,6 +3108,16 @@ apache2 (2.2.12-1) unstable; urgency=low
18513108
1852 -- Stefan Fritsch <sf@debian.org> Tue, 04 Aug 2009 11:02:34 +02003109 -- Stefan Fritsch <sf@debian.org> Tue, 04 Aug 2009 11:02:34 +0200
18533110
3111apache2 (2.2.11-7ubuntu1) karmic; urgency=low
3112
3113 * Merge from debian unstable, remaining changes: LP: #398130
3114 - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
3115 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3116 - debian/{control,rules}: enable PIE hardening.
3117 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3118
3119 -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 11 Jul 2009 16:34:32 +0530
3120
1854apache2 (2.2.11-7) unstable; urgency=low3121apache2 (2.2.11-7) unstable; urgency=low
18553122
1856 * Security fixes:3123 * Security fixes:
@@ -1865,6 +3132,16 @@ apache2 (2.2.11-7) unstable; urgency=low
18653132
1866 -- Stefan Fritsch <sf@debian.org> Fri, 10 Jul 2009 22:42:57 +02003133 -- Stefan Fritsch <sf@debian.org> Fri, 10 Jul 2009 22:42:57 +0200
18673134
3135apache2 (2.2.11-6ubuntu1) karmic; urgency=low
3136
3137 * Merge from debian unstable, remaining changes:
3138 - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
3139 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3140 - debian/{control,rules}: enable PIE hardening.
3141 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3142
3143 -- Chuck Short <zulcss@ubuntu.com> Tue, 09 Jun 2009 01:01:23 +0100
3144
1868apache2 (2.2.11-6) unstable; urgency=high3145apache2 (2.2.11-6) unstable; urgency=high
18693146
1870 * CVE-2009-1195: mod_include allowed to bypass IncludesNoExec for Server3147 * CVE-2009-1195: mod_include allowed to bypass IncludesNoExec for Server
@@ -1873,6 +3150,16 @@ apache2 (2.2.11-6) unstable; urgency=high
18733150
1874 -- Stefan Fritsch <sf@debian.org> Mon, 08 Jun 2009 19:22:58 +02003151 -- Stefan Fritsch <sf@debian.org> Mon, 08 Jun 2009 19:22:58 +0200
18753152
3153apache2 (2.2.11-5ubuntu1) karmic; urgency=low
3154
3155 * Merge from debian unstable, remaining changes:
3156 - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3157 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3158 - debian/{control,rules}: enable PIE hardening.
3159 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3160
3161 -- Andrew Mitchell <ajmitch@ubuntu.com> Wed, 03 Jun 2009 14:10:54 +1200
3162
1876apache2 (2.2.11-5) unstable; urgency=low3163apache2 (2.2.11-5) unstable; urgency=low
18773164
1878 * Move all binaries into a new package apache2.2-bin and make3165 * Move all binaries into a new package apache2.2-bin and make
@@ -1921,6 +3208,16 @@ apache2 (2.2.11-4) unstable; urgency=low
19213208
1922 -- Stefan Fritsch <sf@debian.org> Tue, 19 May 2009 22:55:27 +02003209 -- Stefan Fritsch <sf@debian.org> Tue, 19 May 2009 22:55:27 +0200
19233210
3211apache2 (2.2.11-3ubuntu1) karmic; urgency=low
3212
3213 * Merge from debian unstable, remaining changes:
3214 - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3215 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3216 - debian/{control,rules}: enable PIE hardening.
3217 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3218
3219 -- Andrew Mitchell <ajmitch@ubuntu.com> Tue, 12 May 2009 16:15:34 +1200
3220
1924apache2 (2.2.11-3) unstable; urgency=low3221apache2 (2.2.11-3) unstable; urgency=low
19253222
1926 * Rebuild against apr-util 1.3, to fix undefined symbol errors in mod_ldap3223 * Rebuild against apr-util 1.3, to fix undefined symbol errors in mod_ldap
@@ -1929,6 +3226,21 @@ apache2 (2.2.11-3) unstable; urgency=low
19293226
1930 -- Stefan Fritsch <sf@debian.org> Tue, 31 Mar 2009 21:07:26 +02003227 -- Stefan Fritsch <sf@debian.org> Tue, 31 Mar 2009 21:07:26 +0200
19313228
3229apache2 (2.2.11-2ubuntu2) jaunty; urgency=low
3230
3231 * debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3232 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3233
3234 -- Chuck Short <zulcss@ubuntu.com> Wed, 01 Apr 2009 11:39:17 -0400
3235
3236apache2 (2.2.11-2ubuntu1) jaunty; urgency=low
3237
3238 * Merge from debian unstable, remaining changes:
3239 - debian/{contro,rules}: enable PIE hardening.
3240 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3241
3242 -- Chuck Short <zulcss@ubuntu.com> Sat, 17 Jan 2009 00:02:55 +0000
3243
1932apache2 (2.2.11-2) unstable; urgency=low3244apache2 (2.2.11-2) unstable; urgency=low
19333245
1934 * Report an error instead instead of segfaulting when apr_pollset_create3246 * Report an error instead instead of segfaulting when apr_pollset_create
@@ -1938,6 +3250,14 @@ apache2 (2.2.11-2) unstable; urgency=low
19383250
1939 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jan 2009 19:01:59 +01003251 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jan 2009 19:01:59 +0100
19403252
3253apache2 (2.2.11-1ubuntu1) jaunty; urgency=low
3254
3255 * Merge from debian unstable, remaining changes:
3256 - debian/{control, rules}: enable PIE hardening.
3257 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3258
3259 -- Chuck Short <zulcss@ubuntu.com> Mon, 15 Dec 2008 00:06:50 +0000
3260
1941apache2 (2.2.11-1) unstable; urgency=low3261apache2 (2.2.11-1) unstable; urgency=low
19423262
1943 [Thom May]3263 [Thom May]
@@ -1952,6 +3272,14 @@ apache2 (2.2.11-1) unstable; urgency=low
19523272
1953 -- Stefan Fritsch <sf@debian.org> Sun, 14 Dec 2008 09:34:24 +01003273 -- Stefan Fritsch <sf@debian.org> Sun, 14 Dec 2008 09:34:24 +0100
19543274
3275apache2 (2.2.9-11ubuntu1) jaunty; urgency=low
3276
3277 * Merge from debian unstable, remaining changes: (LP: #303375)
3278 - debian/{control, rules}: enable PIE hardening.
3279 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3280
3281 -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 29 Nov 2008 14:02:31 +0530
3282
1955apache2 (2.2.9-11) unstable; urgency=low3283apache2 (2.2.9-11) unstable; urgency=low
19563284
1957 * Regression fix from upstream svn for mod_proxy:3285 * Regression fix from upstream svn for mod_proxy:
@@ -1966,6 +3294,14 @@ apache2 (2.2.9-11) unstable; urgency=low
19663294
1967 -- Stefan Fritsch <sf@debian.org> Wed, 26 Nov 2008 23:10:22 +01003295 -- Stefan Fritsch <sf@debian.org> Wed, 26 Nov 2008 23:10:22 +0100
19683296
3297apache2 (2.2.9-10ubuntu1) jaunty; urgency=low
3298
3299 * Merge from debian unstable, remaining changes:
3300 - debian/{control, rules}: enable PIE hardening.
3301 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3302
3303 -- Chuck Short <zulcss@ubuntu.com> Wed, 05 Nov 2008 02:23:18 -0400
3304
1969apache2 (2.2.9-10) unstable; urgency=low3305apache2 (2.2.9-10) unstable; urgency=low
19703306
1971 * Regression fix from upstream svn for mod_proxy_http:3307 * Regression fix from upstream svn for mod_proxy_http:
@@ -1996,6 +3332,27 @@ apache2 (2.2.9-8) unstable; urgency=low
19963332
1997 -- Stefan Fritsch <sf@debian.org> Thu, 11 Sep 2008 09:17:33 +02003333 -- Stefan Fritsch <sf@debian.org> Thu, 11 Sep 2008 09:17:33 +0200
19983334
3335apache2 (2.2.9-7ubuntu3) intrepid; urgency=low
3336
3337 * Revert logrotate change since it will break it for everyone.
3338
3339 -- Chuck Short <zulcss@ubuntu.com> Fri, 19 Sep 2008 09:32:01 -0400
3340
3341apache2 (2.2.9-7ubuntu2) intrepid; urgency=low
3342
3343 * debian/logrotate: Restart rather than reload for busy websites.
3344 (LP: #270899)
3345
3346 -- Chuck Short <zulcss@ubuntu.com> Thu, 18 Sep 2008 08:42:22 -0400
3347
3348apache2 (2.2.9-7ubuntu1) intrepid; urgency=low
3349
3350 * Merge from debian unstable, remaining changes:
3351 - debian/{control,rules}: enable PIE hardening.
3352 - debian/{control,rules,apache2.2-common.ufw.profile}: add ufw profiles.
3353
3354 -- Kees Cook <kees@ubuntu.com> Thu, 28 Aug 2008 08:10:59 -0700
3355
1999apache2 (2.2.9-7) unstable; urgency=low3356apache2 (2.2.9-7) unstable; urgency=low
20003357
2001 * Fix XSS in mod_proxy_ftp (CVE-2008-2939).3358 * Fix XSS in mod_proxy_ftp (CVE-2008-2939).
@@ -2038,6 +3395,23 @@ apache2 (2.2.9-4) unstable; urgency=low
20383395
2039 -- Stefan Fritsch <sf@debian.org> Sun, 06 Jul 2008 10:38:37 +02003396 -- Stefan Fritsch <sf@debian.org> Sun, 06 Jul 2008 10:38:37 +0200
20403397
3398apache2 (2.2.9-3ubuntu2) intrepid; urgency=low
3399
3400 * add ufw integration (see
3401 https://wiki.ubuntu.com/UbuntuFirewall#Integrating%20UFW%20with%20Packages)
3402 (LP: #261198)
3403 - debian/control: suggest ufw for apache2.2-common
3404 - add apache2.2-common.ufw.profile with 3 profiles and install it to
3405 /etc/ufw/applications.d/apache2.2-common
3406
3407 -- Didier Roche <didrocks@ubuntu-fr.org> Tue, 26 Aug 2008 19:03:42 +0200
3408
3409apache2 (2.2.9-3ubuntu1) intrepid; urgency=low
3410
3411 * debian/{control,rules}: enable PIE hardening
3412
3413 -- Kees Cook <kees@ubuntu.com> Wed, 20 Aug 2008 15:45:00 -0700
3414
2041apache2 (2.2.9-3) unstable; urgency=low3415apache2 (2.2.9-3) unstable; urgency=low
20423416
2043 [ Stefan Fritsch ]3417 [ Stefan Fritsch ]
@@ -4118,3 +5492,4 @@ apache2 (2.0.18-1) unstable; urgency=low
4118 * Initial Release.5492 * Initial Release.
41195493
4120 -- Daniel Stone <daniel@sfarc.net> Wed, 4 Jul 2001 21:29:29 +10005494 -- Daniel Stone <daniel@sfarc.net> Wed, 4 Jul 2001 21:29:29 +1000
5495
diff --git a/debian/config-dir/mods-available/md.load b/debian/config-dir/mods-available/md.load
4121deleted file mode 1006445496deleted file mode 100644
index 812a6a6..0000000
--- a/debian/config-dir/mods-available/md.load
+++ /dev/null
@@ -1 +0,0 @@
1LoadModule md_module /usr/lib/apache2/modules/mod_md.so
diff --git a/debian/control b/debian/control
index a72cfff..05adf99 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,8 @@
1Source: apache21Source: apache2
2Section: httpd2Section: httpd
3Priority: optional3Priority: optional
4Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5XSBC-Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
5Uploaders: Stefan Fritsch <sf@debian.org>,6Uploaders: Stefan Fritsch <sf@debian.org>,
6 Arno Töll <arno@debian.org>,7 Arno Töll <arno@debian.org>,
7 Ondřej Surý <ondrej@debian.org>8 Ondřej Surý <ondrej@debian.org>
@@ -18,9 +19,7 @@ Build-Depends: debhelper (>= 9.20160709~),
18 libxml2-dev,19 libxml2-dev,
19 lsb-release,20 lsb-release,
20 perl,21 perl,
21 zlib1g-dev,22 zlib1g-dev
22 libcurl4-openssl-dev | libcurl4-dev,
23 libjansson-dev
24Build-Conflicts: autoconf2.1323Build-Conflicts: autoconf2.13
25Standards-Version: 4.1.224Standards-Version: 4.1.2
26Vcs-Browser: https://salsa.debian.org/apache-team/apache225Vcs-Browser: https://salsa.debian.org/apache-team/apache2
@@ -44,15 +43,14 @@ Provides: httpd,
44Recommends: ssl-cert43Recommends: ssl-cert
45Conflicts: apache2.2-bin,44Conflicts: apache2.2-bin,
46 apache2.2-common45 apache2.2-common
47Breaks: libapache2-mod-md (<< 2.4.33),46Breaks: libapache2-mod-proxy-uwsgi (<< 2.4.33)
48 libapache2-mod-proxy-uwsgi (<< 2.4.33)
49Replaces: apache2.2-bin,47Replaces: apache2.2-bin,
50 apache2.2-common,48 apache2.2-common,
51 libapache2-mod-md (<< 2.4.33),
52 libapache2-mod-proxy-uwsgi (<< 2.4.33)49 libapache2-mod-proxy-uwsgi (<< 2.4.33)
53Suggests: apache2-doc,50Suggests: apache2-doc,
54 apache2-suexec-pristine | apache2-suexec-custom,51 apache2-suexec-pristine | apache2-suexec-custom,
55 www-browser52 www-browser,
53 ufw
56Description: Apache HTTP Server54Description: Apache HTTP Server
57 The Apache HTTP Server Project's goal is to build a secure, efficient and55 The Apache HTTP Server Project's goal is to build a secure, efficient and
58 extensible HTTP server as standards-compliant open source software. The56 extensible HTTP server as standards-compliant open source software. The
@@ -81,10 +79,8 @@ Depends: ${misc:Depends},
81Provides: ${apache2:API}79Provides: ${apache2:API}
82Breaks: gridsite (<< 3.0.0~20170225gitd51b2fd-1~),80Breaks: gridsite (<< 3.0.0~20170225gitd51b2fd-1~),
83 libapache2-mod-dacs (<= 1.4.38a-2),81 libapache2-mod-dacs (<= 1.4.38a-2),
84 libapache2-mod-md (<< 2.4.33),
85 libapache2-mod-proxy-uwsgi (<< 2.4.33)82 libapache2-mod-proxy-uwsgi (<< 2.4.33)
86Replaces: libapache2-mod-md (<< 2.4.33),83Replaces: libapache2-mod-proxy-uwsgi (<< 2.4.33)
87 libapache2-mod-proxy-uwsgi (<< 2.4.33)
88Suggests: apache2-doc,84Suggests: apache2-doc,
89 apache2-suexec-pristine | apache2-suexec-custom,85 apache2-suexec-pristine | apache2-suexec-custom,
90 www-browser86 www-browser
@@ -210,14 +206,6 @@ Description: Apache debugging symbols
210 crashing server instances and modules. See206 crashing server instances and modules. See
211 /usr/share/doc/apache2/README.backtrace for more information.207 /usr/share/doc/apache2/README.backtrace for more information.
212208
213Package: libapache2-mod-md
214Architecture: any
215Section: oldlibs
216Depends: ${misc:Depends}, apache2 (= ${binary:Version})
217Description: transitional package
218 This is a transitional package to apache2 for users of libapache2-mod-md.
219 It can be safely removed after the installation is complete.
220
221Package: libapache2-mod-proxy-uwsgi209Package: libapache2-mod-proxy-uwsgi
222Architecture: any210Architecture: any
223Section: oldlibs211Section: oldlibs
diff --git a/debian/icons/ubuntu-logo.png b/debian/icons/ubuntu-logo.png
224new file mode 100644212new file mode 100644
index 0000000..4db2fa1
225Binary files /dev/null and b/debian/icons/ubuntu-logo.png differ213Binary files /dev/null and b/debian/icons/ubuntu-logo.png differ
diff --git a/debian/index.html b/debian/index.html
index 766401d..96ed444 100644
--- a/debian/index.html
+++ b/debian/index.html
@@ -1,9 +1,14 @@
11
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">3<html xmlns="http://www.w3.org/1999/xhtml">
4 <!--
5 Modified from the Debian original for Ubuntu
6 Last updated: 2016-11-16
7 See: https://launchpad.net/bugs/1288690
8 -->
4 <head>9 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <title>Apache2 Debian Default Page: It works</title>11 <title>Apache2 Ubuntu Default Page: It works</title>
7 <style type="text/css" media="screen">12 <style type="text/css" media="screen">
8 * {13 * {
9 margin: 0px 0px 0px 0px;14 margin: 0px 0px 0px 0px;
@@ -188,9 +193,9 @@
188 <body>193 <body>
189 <div class="main_page">194 <div class="main_page">
190 <div class="page_header floating_element">195 <div class="page_header floating_element">
191 <img src="/icons/openlogo-75.png" alt="Debian Logo" class="floating_element"/>196 <img src="/icons/ubuntu-logo.png" alt="Ubuntu Logo" class="floating_element"/>
192 <span class="floating_element">197 <span class="floating_element">
193 Apache2 Debian Default Page198 Apache2 Ubuntu Default Page
194 </span>199 </span>
195 </div>200 </div>
196<!-- <div class="table_of_contents floating_element">201<!-- <div class="table_of_contents floating_element">
@@ -221,7 +226,9 @@
221 <div class="content_section_text">226 <div class="content_section_text">
222 <p>227 <p>
223 This is the default welcome page used to test the correct 228 This is the default welcome page used to test the correct
224 operation of the Apache2 server after installation on Debian systems.229 operation of the Apache2 server after installation on Ubuntu systems.
230 It is based on the equivalent page on Debian, from which the Ubuntu Apache
231 packaging is derived.
225 If you can read this page, it means that the Apache HTTP server installed at232 If you can read this page, it means that the Apache HTTP server installed at
226 this site is working properly. You should <b>replace this file</b> (located at233 this site is working properly. You should <b>replace this file</b> (located at
227 <tt>/var/www/html/index.html</tt>) before continuing to operate your HTTP server.234 <tt>/var/www/html/index.html</tt>) before continuing to operate your HTTP server.
@@ -242,9 +249,9 @@
242 </div>249 </div>
243 <div class="content_section_text">250 <div class="content_section_text">
244 <p>251 <p>
245 Debian's Apache2 default configuration is different from the252 Ubuntu's Apache2 default configuration is different from the
246 upstream default configuration, and split into several files optimized for253 upstream default configuration, and split into several files optimized for
247 interaction with Debian tools. The configuration system is254 interaction with Ubuntu tools. The configuration system is
248 <b>fully documented in255 <b>fully documented in
249 /usr/share/doc/apache2/README.Debian.gz</b>. Refer to this for the full256 /usr/share/doc/apache2/README.Debian.gz</b>. Refer to this for the full
250 documentation. Documentation for the web server itself can be257 documentation. Documentation for the web server itself can be
@@ -253,7 +260,7 @@
253260
254 </p>261 </p>
255 <p>262 <p>
256 The configuration layout for an Apache2 web server installation on Debian systems is as follows:263 The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:
257 </p>264 </p>
258 <pre>265 <pre>
259/etc/apache2/266/etc/apache2/
@@ -324,7 +331,7 @@
324331
325 <div class="content_section_text">332 <div class="content_section_text">
326 <p>333 <p>
327 By default, Debian does not allow access through the web browser to334 By default, Ubuntu does not allow access through the web browser to
328 <em>any</em> file apart of those located in <tt>/var/www</tt>,335 <em>any</em> file apart of those located in <tt>/var/www</tt>,
329 <a href="http://httpd.apache.org/docs/2.4/mod/mod_userdir.html" rel="nofollow">public_html</a>336 <a href="http://httpd.apache.org/docs/2.4/mod/mod_userdir.html" rel="nofollow">public_html</a>
330 directories (when enabled) and <tt>/usr/share</tt> (for web337 directories (when enabled) and <tt>/usr/share</tt> (for web
@@ -333,7 +340,7 @@
333 document root directory in <tt>/etc/apache2/apache2.conf</tt>.340 document root directory in <tt>/etc/apache2/apache2.conf</tt>.
334 </p>341 </p>
335 <p>342 <p>
336 The default Debian document root is <tt>/var/www/html</tt>. You343 The default Ubuntu document root is <tt>/var/www/html</tt>. You
337 can make your own virtual hosts under /var/www. This is different344 can make your own virtual hosts under /var/www. This is different
338 to previous releases which provides better security out of the box.345 to previous releases which provides better security out of the box.
339 </p>346 </p>
@@ -345,9 +352,9 @@
345 </div>352 </div>
346 <div class="content_section_text">353 <div class="content_section_text">
347 <p>354 <p>
348 Please use the <tt>reportbug</tt> tool to report bugs in the355 Please use the <tt>ubuntu-bug</tt> tool to report bugs in the
349 Apache2 package with Debian. However, check <a356 Apache2 package with Ubuntu. However, check <a
350 href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=apache2;repeatmerged=0"357 href="https://bugs.launchpad.net/ubuntu/+source/apache2"
351 rel="nofollow">existing bug reports</a> before reporting a new bug.358 rel="nofollow">existing bug reports</a> before reporting a new bug.
352 </p>359 </p>
353 <p>360 <p>
diff --git a/debian/patches/086_svn_cross_compiles b/debian/patches/086_svn_cross_compiles
354new file mode 100644361new file mode 100644
index 0000000..b237908
--- /dev/null
+++ b/debian/patches/086_svn_cross_compiles
@@ -0,0 +1,118 @@
1Description: Pull upstream fixes for autotools for cross-compiling
2Author: Adam Conrad <adconrad@ubuntu.com>
3Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328445
4Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1327907
5Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328390
6Origin: upstream, http://svn.eu.apache.org/viewvc?view=revision&revision=1328714
7Forwarded: not-needed
8
9Index: apache2-2.4.29/acinclude.m4
10===================================================================
11--- apache2-2.4.29.orig/acinclude.m4 2017-11-10 10:56:51.488205250 -0500
12+++ apache2-2.4.29/acinclude.m4 2017-11-10 10:56:51.484205199 -0500
13@@ -55,6 +55,8 @@ AC_DEFUN([APACHE_GEN_CONFIG_VARS],[
14 APACHE_SUBST(CPPFLAGS)
15 APACHE_SUBST(CFLAGS)
16 APACHE_SUBST(CXXFLAGS)
17+ APACHE_SUBST(CC_FOR_BUILD)
18+ APACHE_SUBST(CFLAGS_FOR_BUILD)
19 APACHE_SUBST(LTFLAGS)
20 APACHE_SUBST(LDFLAGS)
21 APACHE_SUBST(LT_LDFLAGS)
22@@ -697,7 +699,7 @@ int main(void)
23 {
24 return sizeof(void *) < sizeof(long);
25 }], [ap_cv_void_ptr_lt_long=no], [ap_cv_void_ptr_lt_long=yes],
26- [ap_cv_void_ptr_lt_long=yes])])
27+ [ap_cv_void_ptr_lt_long="cross compile - not checked"])])
28
29 if test "$ap_cv_void_ptr_lt_long" = "yes"; then
30 AC_MSG_ERROR([Size of "void *" is less than size of "long"])
31Index: apache2-2.4.29/configure
32===================================================================
33--- apache2-2.4.29.orig/configure 2017-11-10 10:56:51.488205250 -0500
34+++ apache2-2.4.29/configure 2017-11-10 10:56:51.488205250 -0500
35@@ -662,6 +662,8 @@ HTTPD_LDFLAGS
36 SH_LDFLAGS
37 LT_LDFLAGS
38 LTFLAGS
39+CFLAGS_FOR_BUILD
40+CC_FOR_BUILD
41 CXXFLAGS
42 CXX
43 other_targets
44@@ -6071,6 +6073,12 @@ fi
45
46
47
48+if test "x${build_alias}" != "x${host_alias}"; then
49+ if test "x${CC_FOR_BUILD}" = "x"; then
50+ CC_FOR_BUILD=cc
51+ fi
52+fi
53+
54 if test "x${cache_file}" = "x/dev/null"; then
55 # Likewise, ensure that CC and CPP are passed through to the pcre
56 # configure script iff caching is disabled (the autoconf 2.5x default).
57@@ -7698,7 +7706,7 @@ if ${ap_cv_void_ptr_lt_long+:} false; th
58 $as_echo_n "(cached) " >&6
59 else
60 if test "$cross_compiling" = yes; then :
61- ap_cv_void_ptr_lt_long=yes
62+ ap_cv_void_ptr_lt_long="cross compile - not checked"
63 else
64 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
65 /* end confdefs.h. */
66@@ -37522,6 +37530,14 @@ $as_echo "$as_me: " >&6;}
67
68
69
70+ APACHE_VAR_SUBST="$APACHE_VAR_SUBST CC_FOR_BUILD"
71+
72+
73+
74+ APACHE_VAR_SUBST="$APACHE_VAR_SUBST CFLAGS_FOR_BUILD"
75+
76+
77+
78 APACHE_VAR_SUBST="$APACHE_VAR_SUBST LTFLAGS"
79
80
81Index: apache2-2.4.29/configure.in
82===================================================================
83--- apache2-2.4.29.orig/configure.in 2017-11-10 10:56:51.488205250 -0500
84+++ apache2-2.4.29/configure.in 2017-11-10 10:56:51.488205250 -0500
85@@ -206,6 +206,14 @@ AC_PROG_CPP
86 dnl Try to get c99 support for variadic macros
87 ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
88
89+dnl In case of cross compilation we set CC_FOR_BUILD to cc unless
90+dnl we got already CC_FOR_BUILD from environment.
91+if test "x${build_alias}" != "x${host_alias}"; then
92+ if test "x${CC_FOR_BUILD}" = "x"; then
93+ CC_FOR_BUILD=cc
94+ fi
95+fi
96+
97 if test "x${cache_file}" = "x/dev/null"; then
98 # Likewise, ensure that CC and CPP are passed through to the pcre
99 # configure script iff caching is disabled (the autoconf 2.5x default).
100Index: apache2-2.4.29/server/Makefile.in
101===================================================================
102--- apache2-2.4.29.orig/server/Makefile.in 2017-11-10 10:56:51.488205250 -0500
103+++ apache2-2.4.29/server/Makefile.in 2017-11-10 10:56:51.488205250 -0500
104@@ -24,9 +24,14 @@ TARGETS = delete-exports $(LTLIBRARY_NAM
105 include $(top_builddir)/build/rules.mk
106 include $(top_srcdir)/build/library.mk
107
108+ifdef CC_FOR_BUILD
109+gen_test_char: gen_test_char.c
110+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<
111+else
112 gen_test_char_OBJECTS = gen_test_char.lo
113 gen_test_char: $(gen_test_char_OBJECTS)
114 $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
115+endif
116
117 test_char.h: gen_test_char
118 ./gen_test_char > test_char.h
diff --git a/debian/patches/series b/debian/patches/series
index 145853d..6e33289 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,3 +9,6 @@ reproducible_builds.diff
9#suexec-custom.patch9#suexec-custom.patch
1010
11remove_mod_lbmethod_load_order_dependency.diff11remove_mod_lbmethod_load_order_dependency.diff
12
13# Patches added by Ubuntu
14086_svn_cross_compiles
diff --git a/debian/rules b/debian/rules
index e2d693c..5654762 100755
--- a/debian/rules
+++ b/debian/rules
@@ -113,6 +113,7 @@ configure-stamp: prebuild-checks-stamp support/suexec-custom.c
113 --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config \113 --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config \
114 --with-pcre=yes \114 --with-pcre=yes \
115 --enable-pie \115 --enable-pie \
116 --disable-md \
116 --enable-mpms-shared=all \117 --enable-mpms-shared=all \
117 --enable-mods-shared="all brotli cgi ident authnz_fcgi imagemap cern_meta proxy_fdpass proxy_http2 bucketeer case_filter case_filter_in" \118 --enable-mods-shared="all brotli cgi ident authnz_fcgi imagemap cern_meta proxy_fdpass proxy_http2 bucketeer case_filter case_filter_in" \
118 --enable-mods-static="unixd logio watchdog version" \119 --enable-mods-static="unixd logio watchdog version" \
@@ -177,7 +178,7 @@ override_dh_installdocs-indep:
177 dh_installdocs -i178 dh_installdocs -i
178179
179override_dh_installdocs-arch:180override_dh_installdocs-arch:
180 dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg -plibapache2-mod-md -plibapache2-mod-proxy-uwsgi181 dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg -plibapache2-mod-proxy-uwsgi
181 dh_installdocs --link-doc=apache2-dev -papache2-ssl-dev182 dh_installdocs --link-doc=apache2-dev -papache2-ssl-dev
182 dh_installdocs -a183 dh_installdocs -a
183184
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
index b6a30fe..c9128c9 100644
--- a/debian/source/include-binaries
+++ b/debian/source/include-binaries
@@ -16,6 +16,7 @@ debian/icons/odf6odp-20x22.png
16debian/icons/odf6otp-20x22.png16debian/icons/odf6otp-20x22.png
17debian/icons/odf6oth-20x22.png17debian/icons/odf6oth-20x22.png
18debian/icons/openlogo-75.png18debian/icons/openlogo-75.png
19debian/icons/ubuntu-logo.png
19debian/upstream/signing-key.pgp20debian/upstream/signing-key.pgp
20debian/perl-framework/t/htdocs/apache/acceptpathinfo/index.shtml21debian/perl-framework/t/htdocs/apache/acceptpathinfo/index.shtml
21debian/perl-framework/t/htdocs/apache/acceptpathinfo/info.php22debian/perl-framework/t/htdocs/apache/acceptpathinfo/info.php
diff --git a/debian/tests/check-http2 b/debian/tests/check-http2
22new file mode 10064423new file mode 100644
index 0000000..6bc9125
--- /dev/null
+++ b/debian/tests/check-http2
@@ -0,0 +1,41 @@
1#!/bin/sh
2set -uxe
3
4# http2 is rather new, check that it at least generally works
5# Author: Christian Ehrhardt <christian.ehrhardt@canonical.com>
6
7a2enmod http2
8a2enmod ssl
9a2ensite default-ssl
10# Enable globally
11echo "Protocols h2c h2 http/1.1" >> /etc/apache2/apache2.conf
12service apache2 restart
13
14# Use curl here. wget doesn't work on Debian, even with --no-check-certificate
15# wget on Debian gives me:
16# GnuTLS: A TLS warning alert has been received.
17# Unable to establish SSL connection.
18# Presumably this is due to the self-signed certificate, but I'm not sure how
19# to skip the warning with wget. curl will do for now.
20echo "Hello, world!" > /var/www/html/hello.txt
21
22testapache () {
23 cmd="${1}"
24 result=$(${cmd})
25
26 if [ "$result" != "Hello, world!" ]; then
27 echo "Unexpected result: ${result}" >&2
28 exit 1
29 else
30 echo OK
31 fi
32}
33
34# https shall not affect http
35testapache "curl -s -k http://localhost/hello.txt"
36# https shall not affect https
37testapache "curl -s -k https://localhost/hello.txt"
38#plain http2
39testapache "nghttp --no-verify-peer https://localhost/hello.txt"
40#http2 upgrade
41testapache "nghttp -u --no-verify-peer http://localhost/hello.txt"
diff --git a/debian/tests/control b/debian/tests/control
index fb913b5..230f19e 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -23,6 +23,10 @@ Tests: ssl-passphrase
23Restrictions: needs-root allow-stderr breaks-testbed23Restrictions: needs-root allow-stderr breaks-testbed
24Depends: apache2, curl, expect, ssl-cert24Depends: apache2, curl, expect, ssl-cert
2525
26Tests: check-http2
27Restrictions: needs-root allow-stderr breaks-testbed
28Depends: apache2, curl, ssl-cert, nghttp2-client
29
26Tests: chroot30Tests: chroot
27Features: no-build-needed31Features: no-build-needed
28Restrictions: needs-root allow-stderr breaks-testbed32Restrictions: needs-root allow-stderr breaks-testbed
diff --git a/docs/manual/style/latex/atbeginend.sty b/docs/manual/style/latex/atbeginend.sty
29new file mode 10064433new file mode 100644
index 0000000..79b555d
--- /dev/null
+++ b/docs/manual/style/latex/atbeginend.sty
@@ -0,0 +1,80 @@
1% atbeginend.sty
2%
3% Licensed to the Apache Software Foundation (ASF) under one or more
4% contributor license agreements. See the NOTICE file distributed with
5% this work for additional information regarding copyright ownership.
6% The ASF licenses this file to You under the Apache License, Version 2.0
7% (the "License"); you may not use this file except in compliance with
8% the License. You may obtain a copy of the License at
9%
10% http://www.apache.org/licenses/LICENSE-2.0
11%
12% Unless required by applicable law or agreed to in writing, software
13% distributed under the License is distributed on an "AS IS" BASIS,
14% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15% See the License for the specific language governing permissions and
16% limitations under the License.
17
18% defines
19% \BeforeBegin{environment}{code-to-execute}
20% \BeforeEnd {environment}{code-to-execute}
21% \AfterBegin {environment}{code-to-execute}
22% \AfterEnd {environment}{code-to-execute}
23%
24% Save \begin and \end to \BeginEnvironment and \EndEnvironment
25\let\BeginEnvironment=\begin
26\let\EndEnvironment=\end
27
28\def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax}
29
30% Null command needed to for \nothing{something}=.nothing.
31\def\NullCom#1{}
32
33\def\begin#1{%
34%
35% if defined \BeforeBeg for this environment, execute it
36\IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi%
37%
38%
39%
40\IfUnDef{AfterBeg#1}% This is done to skip the command for environments
41 % which can take arguments, like multicols; YOU MUST NOT
42 % USE \AfterBegin{...}{...} for such environments!
43 \let\SaveBegEng=\BeginEnvironment%
44\else%
45 % Start this environment
46 \BeginEnvironment{#1}%
47 % and execute code after \begin{environment}
48 \csname AfterBeg#1\endcsname%
49 %
50 \let\SaveBegEng=\NullCom%
51\fi%
52\SaveBegEng{#1}%
53}
54
55
56\def\end#1{%
57%
58% execute code before \end{environment}
59\IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi%
60%
61% close this environment
62\EndEnvironment{#1}%
63%
64% and execute code after \begin{environment}
65\IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi%
66}
67
68
69%% Now, define commands
70% \BeforeBegin{environment}{code-to-execute}
71% \BeforeEnd {environment}{code-to-execute}
72% \AfterBegin {environment}{code-to-execute}
73% \AfterEnd {environment}{code-to-execute}
74
75\def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname
76{#2}}
77\def\BeforeEnd #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname
78{#2}}
79\def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}}
80\def\AfterEnd #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}}
diff --git a/docs/manual/style/manualpage.dtd b/docs/manual/style/manualpage.dtd
0new file mode 10064481new file mode 100644
index 0000000..e9c22a0
--- /dev/null
+++ b/docs/manual/style/manualpage.dtd
@@ -0,0 +1,29 @@
1<?xml version='1.0' encoding='UTF-8' ?>
2
3<!--
4 Licensed to the Apache Software Foundation (ASF) under one or more
5 contributor license agreements. See the NOTICE file distributed with
6 this work for additional information regarding copyright ownership.
7 The ASF licenses this file to You under the Apache License, Version 2.0
8 (the "License"); you may not use this file except in compliance with
9 the License. You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
19
20<!ENTITY % common SYSTEM "common.dtd">
21%common;
22
23<!-- <manualpage> is the root element -->
24<!ELEMENT manualpage (parentdocument?, title, summary?,
25seealso*, section*)>
26
27<!ATTLIST manualpage metafile CDATA #REQUIRED
28 upgrade CDATA #IMPLIED
29>
diff --git a/docs/manual/style/modulesynopsis.dtd b/docs/manual/style/modulesynopsis.dtd
0new file mode 10064430new file mode 100644
index 0000000..aa3d6ee
--- /dev/null
+++ b/docs/manual/style/modulesynopsis.dtd
@@ -0,0 +1,92 @@
1<?xml version='1.0' encoding='UTF-8' ?>
2
3<!--
4 Licensed to the Apache Software Foundation (ASF) under one or more
5 contributor license agreements. See the NOTICE file distributed with
6 this work for additional information regarding copyright ownership.
7 The ASF licenses this file to You under the Apache License, Version 2.0
8 (the "License"); you may not use this file except in compliance with
9 the License. You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
19
20<!ENTITY % sitemap SYSTEM "sitemap.dtd">
21%sitemap;
22
23<!ELEMENT modulesynopsis (name , description, status, hint?, sourcefile?,
24identifier? , compatibility? , summary? , seealso* , section*,
25directivesynopsis*)>
26
27<!ATTLIST modulesynopsis metafile CDATA #REQUIRED
28 upgrade CDATA #IMPLIED>
29
30<!ELEMENT directivesynopsis (name , description? , syntax? , default?
31, contextlist? , override? , modulelist?, status?, compatibility? ,
32usage?, seealso*)>
33
34<!ELEMENT name (#PCDATA)>
35
36<!ELEMENT status (#PCDATA)>
37
38<!ELEMENT hint %Inline;>
39
40<!ELEMENT identifier (#PCDATA)>
41
42<!ELEMENT sourcefile (#PCDATA)>
43
44<!ELEMENT compatibility %Inline;>
45
46<!ELEMENT description %Inline;>
47
48<!--
49 idtype is appended to the directive name when generating links to allow
50 a directive of type section to share the name with another directive.
51 The attribute type could have been (re)used instead but it would have broken
52 pre-existing links.
53-->
54<!ATTLIST directivesynopsis type CDATA #IMPLIED
55 idtype CDATA #IMPLIED
56 location CDATA #IMPLIED >
57
58<!ELEMENT syntax %Inline;>
59
60<!ELEMENT default (#PCDATA | directive | br)*>
61
62<!ELEMENT contextlist (context+)+>
63
64<!ELEMENT context (#PCDATA)>
65
66<!ELEMENT override (#PCDATA)>
67
68<!ELEMENT usage %Block;>
69
70<!-- Used in index.xml -->
71<!ELEMENT moduleindex (title, summary, seealso*)>
72
73<!ATTLIST moduleindex metafile CDATA #REQUIRED>
74
75<!-- Used in directive.xml -->
76<!ELEMENT directiveindex (title | summary)+>
77
78<!ATTLIST directiveindex metafile CDATA #REQUIRED>
79
80<!-- Used in quickreference.xml -->
81<!ELEMENT quickreference (title | summary | legend)+>
82<!ATTLIST quickreference metafile CDATA #REQUIRED>
83
84<!ELEMENT legend (table, table)>
85
86<!-- Used in overrides.xml -->
87<!ELEMENT overrideindex (title | summary | overridesummary)+>
88<!ATTLIST overrideindex metafile CDATA #REQUIRED>
89
90<!ELEMENT overridesummary %Block;>
91<!ATTLIST overridesummary class CDATA #IMPLIED
92 fallback CDATA #IMPLIED>
diff --git a/docs/manual/style/scripts/MINIFY b/docs/manual/style/scripts/MINIFY
0new file mode 10064493new file mode 100644
index 0000000..2c1efc3
--- /dev/null
+++ b/docs/manual/style/scripts/MINIFY
@@ -0,0 +1,5 @@
1#!/bin/sh
2
3(echo '// see prettify.js for copyright, license and expanded version'; python -mrjsmin <prettify.js) >prettify.min.js
4
5# needs python and rjsmin installed
diff --git a/docs/manual/style/scripts/prettify.js b/docs/manual/style/scripts/prettify.js
0new file mode 1006446new file mode 100644
index 0000000..2df198d
--- /dev/null
+++ b/docs/manual/style/scripts/prettify.js
@@ -0,0 +1,1622 @@
1// Copyright (C) 2006 Google Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15
16/**
17 * @fileoverview
18 * some functions for browser-side pretty printing of code contained in html.
19 *
20 * <p>
21 * For a fairly comprehensive set of languages see the
22 * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
23 * file that came with this source. At a minimum, the lexer should work on a
24 * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
25 * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
26 * and a subset of Perl, but, because of commenting conventions, doesn't work on
27 * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
28 * <p>
29 * Usage: <ol>
30 * <li> include this source file in an html page via
31 * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
32 * <li> define style rules. See the example page for examples.
33 * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
34 * {@code class=prettyprint.}
35 * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
36 * printer needs to do more substantial DOM manipulations to support that, so
37 * some css styles may not be preserved.
38 * </ol>
39 * That's it. I wanted to keep the API as simple as possible, so there's no
40 * need to specify which language the code is in, but if you wish, you can add
41 * another class to the {@code <pre>} or {@code <code>} element to specify the
42 * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
43 * starts with "lang-" followed by a file extension, specifies the file type.
44 * See the "lang-*.js" files in this directory for code that implements
45 * per-language file handlers.
46 * <p>
47 * Change log:<br>
48 * cbeust, 2006/08/22
49 * <blockquote>
50 * Java annotations (start with "@") are now captured as literals ("lit")
51 * </blockquote>
52 * @requires console
53 */
54
55// JSLint declarations
56/*global console, document, navigator, setTimeout, window, define */
57
58/**
59 * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
60 * UI events.
61 * If set to {@code false}, {@code prettyPrint()} is synchronous.
62 */
63window['PR_SHOULD_USE_CONTINUATION'] = true;
64
65/**
66 * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
67 * {@code class=prettyprint} and prettify them.
68 *
69 * @param {Function?} opt_whenDone if specified, called when the last entry
70 * has been finished.
71 */
72var prettyPrintOne;
73/**
74 * Pretty print a chunk of code.
75 *
76 * @param {string} sourceCodeHtml code as html
77 * @return {string} code as html, but prettier
78 */
79var prettyPrint;
80
81
82(function () {
83 var win = window;
84 // Keyword lists for various languages.
85 // We use things that coerce to strings to make them compact when minified
86 // and to defeat aggressive optimizers that fold large string constants.
87 var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
88 var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
89 "double,enum,extern,float,goto,int,long,register,short,signed,sizeof,module," +
90 "static,struct,switch,typedef,union,unsigned,void,volatile"];
91 var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
92 "new,operator,private,protected,public,this,throw,true,try,typeof"];
93 var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
94 "concept,concept_map,const_cast,constexpr,decltype," +
95 "dynamic_cast,explicit,export,friend,inline,late_check," +
96 "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
97 "template,typeid,typename,using,virtual,where,request_req"];
98 var JAVA_KEYWORDS = [COMMON_KEYWORDS,
99 "abstract,boolean,byte,extends,final,finally,implements,import," +
100 "instanceof,null,native,package,strictfp,super,synchronized,throws," +
101 "transient"];
102 var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
103 "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
104 "fixed,foreach,from,group,implicit,in,interface,internal,into,is,let," +
105 "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
106 "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
107 "var,virtual,where"];
108 var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
109 "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
110 "throw,true,try,unless,until,when,while,yes";
111 var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
112 "debugger,eval,export,function,get,null,set,undefined,var,with," +
113 "Infinity,NaN"];
114 var PERL_KEYWORDS = "caller,delete,die,do,dump,else,elsif,eval,exit,foreach,for," +
115 "goto,if,import,last,local,my,next,no,our,print,printf,package,redo,require," +
116 "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
117 var PHP_KEYWORDS = "abstract,and,array,as,break,case,catch,cfunction,class," +
118 "clone,const,continue,declare,default,do,else,elseif,enddeclare,endfor," +
119 "endforeach,endif,endswitch,endwhile,extends,final,for,foreach,function," +
120 "global,goto,if,implements,interface,instanceof,namespace,new,old_function," +
121 "or,private,protected,public,static,switch,throw,try,use,var,while,xor," +
122 "die,echo,empty,exit,eval,include,include_once,isset,list,require," +
123 "require_once,return,print,unset";
124 var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
125 "elif,except,exec,finally,from,global,import,in,is,lambda," +
126 "nonlocal,not,or,pass,print,raise,try,with,yield," +
127 "False,True,None"];
128 var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
129 "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
130 "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
131 "BEGIN,END"];
132 var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
133 "function,in,local,set,then,until,echo"];
134 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"];
135 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"]
136 var CONFIG_OPTIONS = /^[\\+\\-]?(AuthConfig|IncludesNOEXEC|ExecCGI|FollowSymLinks|MultiViews|Includes|Indexes|SymLinksIfOwnerMatch)\b/i;
137 var ALL_KEYWORDS = [
138 CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
139 PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS, CONFIG_KEYWORDS, PHP_KEYWORDS];
140 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/;
141
142 // token style names. correspond to css classes
143 /**
144 * token style for a string literal
145 * @const
146 */
147 var PR_STRING = 'str';
148 /**
149 * token style for a keyword
150 * @const
151 */
152 var PR_KEYWORD = 'kwd';
153 /**
154 * token style for a comment
155 * @const
156 */
157 var PR_COMMENT = 'com';
158 /**
159 * token style for a type
160 * @const
161 */
162 var PR_TYPE = 'typ';
163 /**
164 * token style for a literal value. e.g. 1, null, true.
165 * @const
166 */
167 var PR_LITERAL = 'lit';
168 /**
169 * token style for a punctuation string.
170 * @const
171 */
172 var PR_PUNCTUATION = 'pun';
173 /**
174 * token style for plain text.
175 * @const
176 */
177 var PR_PLAIN = 'pln';
178
179 /**
180 * token style for an sgml tag.
181 * @const
182 */
183 var PR_TAG = 'tag';
184 /**
185 * token style for a markup declaration such as a DOCTYPE.
186 * @const
187 */
188 var PR_DECLARATION = 'dec';
189 /**
190 * token style for embedded source.
191 * @const
192 */
193 var PR_SOURCE = 'src';
194 /**
195 * token style for an sgml attribute name.
196 * @const
197 */
198 var PR_ATTRIB_NAME = 'atn';
199 /**
200 * token style for an sgml attribute value.
201 * @const
202 */
203 var PR_ATTRIB_VALUE = 'atv';
204
205 /**
206 * A class that indicates a section of markup that is not code, e.g. to allow
207 * embedding of line numbers within code listings.
208 * @const
209 */
210 var PR_NOCODE = 'nocode';
211
212
213
214/**
215 * A set of tokens that can precede a regular expression literal in
216 * javascript
217 * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
218 * has the full list, but I've removed ones that might be problematic when
219 * seen in languages that don't support regular expression literals.
220 *
221 * <p>Specifically, I've removed any keywords that can't precede a regexp
222 * literal in a syntactically legal javascript program, and I've removed the
223 * "in" keyword since it's not a keyword in many languages, and might be used
224 * as a count of inches.
225 *
226 * <p>The link above does not accurately describe EcmaScript rules since
227 * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
228 * very well in practice.
229 *
230 * @private
231 * @const
232 */
233var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
234
235// CAVEAT: this does not properly handle the case where a regular
236// expression immediately follows another since a regular expression may
237// have flags for case-sensitivity and the like. Having regexp tokens
238// adjacent is not valid in any language I'm aware of, so I'm punting.
239// TODO: maybe style special characters inside a regexp as punctuation.
240
241
242 /**
243 * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
244 * matches the union of the sets of strings matched by the input RegExp.
245 * Since it matches globally, if the input strings have a start-of-input
246 * anchor (/^.../), it is ignored for the purposes of unioning.
247 * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
248 * @return {RegExp} a global regex.
249 */
250 function combinePrefixPatterns(regexs) {
251 var capturedGroupIndex = 0;
252
253 var needToFoldCase = false;
254 var ignoreCase = false;
255 for (var i = 0, n = regexs.length; i < n; ++i) {
256 var regex = regexs[i];
257 if (regex.ignoreCase) {
258 ignoreCase = true;
259 } else if (/[a-z]/i.test(regex.source.replace(
260 /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
261 needToFoldCase = true;
262 ignoreCase = false;
263 break;
264 }
265 }
266
267 var escapeCharToCodeUnit = {
268 'b': 8,
269 't': 9,
270 'n': 0xa,
271 'v': 0xb,
272 'f': 0xc,
273 'r': 0xd
274 };
275
276 function decodeEscape(charsetPart) {
277 var cc0 = charsetPart.charCodeAt(0);
278 if (cc0 !== 92 /* \\ */) {
279 return cc0;
280 }
281 var c1 = charsetPart.charAt(1);
282 cc0 = escapeCharToCodeUnit[c1];
283 if (cc0) {
284 return cc0;
285 } else if ('0' <= c1 && c1 <= '7') {
286 return parseInt(charsetPart.substring(1), 8);
287 } else if (c1 === 'u' || c1 === 'x') {
288 return parseInt(charsetPart.substring(2), 16);
289 } else {
290 return charsetPart.charCodeAt(1);
291 }
292 }
293
294 function encodeEscape(charCode) {
295 if (charCode < 0x20) {
296 return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
297 }
298 var ch = String.fromCharCode(charCode);
299 return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
300 ? "\\" + ch : ch;
301 }
302
303 function caseFoldCharset(charSet) {
304 var charsetParts = charSet.substring(1, charSet.length - 1).match(
305 new RegExp(
306 '\\\\u[0-9A-Fa-f]{4}'
307 + '|\\\\x[0-9A-Fa-f]{2}'
308 + '|\\\\[0-3][0-7]{0,2}'
309 + '|\\\\[0-7]{1,2}'
310 + '|\\\\[\\s\\S]'
311 + '|-'
312 + '|[^-\\\\]',
313 'g'));
314 var ranges = [];
315 var inverse = charsetParts[0] === '^';
316
317 var out = ['['];
318 if (inverse) { out.push('^'); }
319
320 for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
321 var p = charsetParts[i];
322 if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
323 out.push(p);
324 } else {
325 var start = decodeEscape(p);
326 var end;
327 if (i + 2 < n && '-' === charsetParts[i + 1]) {
328 end = decodeEscape(charsetParts[i + 2]);
329 i += 2;
330 } else {
331 end = start;
332 }
333 ranges.push([start, end]);
334 // If the range might intersect letters, then expand it.
335 // This case handling is too simplistic.
336 // It does not deal with non-latin case folding.
337 // It works for latin source code identifiers though.
338 if (!(end < 65 || start > 122)) {
339 if (!(end < 65 || start > 90)) {
340 ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
341 }
342 if (!(end < 97 || start > 122)) {
343 ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
344 }
345 }
346 }
347 }
348
349 // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
350 // -> [[1, 12], [14, 14], [16, 17]]
351 ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
352 var consolidatedRanges = [];
353 var lastRange = [];
354 for (var i = 0; i < ranges.length; ++i) {
355 var range = ranges[i];
356 if (range[0] <= lastRange[1] + 1) {
357 lastRange[1] = Math.max(lastRange[1], range[1]);
358 } else {
359 consolidatedRanges.push(lastRange = range);
360 }
361 }
362
363 for (var i = 0; i < consolidatedRanges.length; ++i) {
364 var range = consolidatedRanges[i];
365 out.push(encodeEscape(range[0]));
366 if (range[1] > range[0]) {
367 if (range[1] + 1 > range[0]) { out.push('-'); }
368 out.push(encodeEscape(range[1]));
369 }
370 }
371 out.push(']');
372 return out.join('');
373 }
374
375 function allowAnywhereFoldCaseAndRenumberGroups(regex) {
376 // Split into character sets, escape sequences, punctuation strings
377 // like ('(', '(?:', ')', '^'), and runs of characters that do not
378 // include any of the above.
379 var parts = regex.source.match(
380 new RegExp(
381 '(?:'
382 + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
383 + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
384 + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
385 + '|\\\\[0-9]+' // a back-reference or octal escape
386 + '|\\\\[^ux0-9]' // other escape sequence
387 + '|\\(\\?[:!=]' // start of a non-capturing group
388 + '|[\\(\\)\\^]' // start/end of a group, or line start
389 + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
390 + ')',
391 'g'));
392 var n = parts.length;
393
394 // Maps captured group numbers to the number they will occupy in
395 // the output or to -1 if that has not been determined, or to
396 // undefined if they need not be capturing in the output.
397 var capturedGroups = [];
398
399 // Walk over and identify back references to build the capturedGroups
400 // mapping.
401 for (var i = 0, groupIndex = 0; i < n; ++i) {
402 var p = parts[i];
403 if (p === '(') {
404 // groups are 1-indexed, so max group index is count of '('
405 ++groupIndex;
406 } else if ('\\' === p.charAt(0)) {
407 var decimalValue = +p.substring(1);
408 if (decimalValue) {
409 if (decimalValue <= groupIndex) {
410 capturedGroups[decimalValue] = -1;
411 } else {
412 // Replace with an unambiguous escape sequence so that
413 // an octal escape sequence does not turn into a backreference
414 // to a capturing group from an earlier regex.
415 parts[i] = encodeEscape(decimalValue);
416 }
417 }
418 }
419 }
420
421 // Renumber groups and reduce capturing groups to non-capturing groups
422 // where possible.
423 for (var i = 1; i < capturedGroups.length; ++i) {
424 if (-1 === capturedGroups[i]) {
425 capturedGroups[i] = ++capturedGroupIndex;
426 }
427 }
428 for (var i = 0, groupIndex = 0; i < n; ++i) {
429 var p = parts[i];
430 if (p === '(') {
431 ++groupIndex;
432 if (!capturedGroups[groupIndex]) {
433 parts[i] = '(?:';
434 }
435 } else if ('\\' === p.charAt(0)) {
436 var decimalValue = +p.substring(1);
437 if (decimalValue && decimalValue <= groupIndex) {
438 parts[i] = '\\' + capturedGroups[decimalValue];
439 }
440 }
441 }
442
443 // Remove any prefix anchors so that the output will match anywhere.
444 // ^^ really does mean an anchored match though.
445 for (var i = 0; i < n; ++i) {
446 if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
447 }
448
449 // Expand letters to groups to handle mixing of case-sensitive and
450 // case-insensitive patterns if necessary.
451 if (regex.ignoreCase && needToFoldCase) {
452 for (var i = 0; i < n; ++i) {
453 var p = parts[i];
454 var ch0 = p.charAt(0);
455 if (p.length >= 2 && ch0 === '[') {
456 parts[i] = caseFoldCharset(p);
457 } else if (ch0 !== '\\') {
458 // TODO: handle letters in numeric escapes.
459 parts[i] = p.replace(
460 /[a-zA-Z]/g,
461 function (ch) {
462 var cc = ch.charCodeAt(0);
463 return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
464 });
465 }
466 }
467 }
468
469 return parts.join('');
470 }
471
472 var rewritten = [];
473 for (var i = 0, n = regexs.length; i < n; ++i) {
474 var regex = regexs[i];
475 if (regex.global || regex.multiline) { throw new Error('' + regex); }
476 rewritten.push(
477 '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
478 }
479
480 return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
481 }
482
483
484 /**
485 * Split markup into a string of source code and an array mapping ranges in
486 * that string to the text nodes in which they appear.
487 *
488 * <p>
489 * The HTML DOM structure:</p>
490 * <pre>
491 * (Element "p"
492 * (Element "b"
493 * (Text "print ")) ; #1
494 * (Text "'Hello '") ; #2
495 * (Element "br") ; #3
496 * (Text " + 'World';")) ; #4
497 * </pre>
498 * <p>
499 * corresponds to the HTML
500 * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
501 *
502 * <p>
503 * It will produce the output:</p>
504 * <pre>
505 * {
506 * sourceCode: "print 'Hello '\n + 'World';",
507 * // 1 2
508 * // 012345678901234 5678901234567
509 * spans: [0, #1, 6, #2, 14, #3, 15, #4]
510 * }
511 * </pre>
512 * <p>
513 * where #1 is a reference to the {@code "print "} text node above, and so
514 * on for the other text nodes.
515 * </p>
516 *
517 * <p>
518 * The {@code} spans array is an array of pairs. Even elements are the start
519 * indices of substrings, and odd elements are the text nodes (or BR elements)
520 * that contain the text for those substrings.
521 * Substrings continue until the next index or the end of the source.
522 * </p>
523 *
524 * @param {Node} node an HTML DOM subtree containing source-code.
525 * @param {boolean} isPreformatted true if white-space in text nodes should
526 * be considered significant.
527 * @return {Object} source code and the text nodes in which they occur.
528 */
529 function extractSourceSpans(node, isPreformatted) {
530 var nocode = /(?:^|\s)nocode(?:\s|$)/;
531
532 var chunks = [];
533 var length = 0;
534 var spans = [];
535 var k = 0;
536
537 function walk(node) {
538 switch (node.nodeType) {
539 case 1: // Element
540 if (nocode.test(node.className)) { return; }
541 for (var child = node.firstChild; child; child = child.nextSibling) {
542 walk(child);
543 }
544 var nodeName = node.nodeName.toLowerCase();
545 if ('br' === nodeName || 'li' === nodeName) {
546 chunks[k] = '\n';
547 spans[k << 1] = length++;
548 spans[(k++ << 1) | 1] = node;
549 }
550 break;
551 case 3: case 4: // Text
552 var text = node.nodeValue;
553 if (text.length) {
554 if (!isPreformatted) {
555 text = text.replace(/[ \t\r\n]+/g, ' ');
556 } else {
557 text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
558 text = text.replace(/^(\r?\n\s*)+/g, ''); // Remove leading newlines
559 text = text.replace(/^\s*/g, ''); // Remove leading spaces due to indented formatting
560 text = text.replace(/(\r?\n\s*)+$/g, ''); // Remove ending newlines
561
562 }
563 // TODO: handle tabs here?
564 chunks[k] = text;
565 spans[k << 1] = length;
566 length += text.length;
567 spans[(k++ << 1) | 1] = node;
568 }
569 break;
570 }
571 }
572
573 walk(node);
574
575 return {
576 sourceCode: chunks.join('').replace(/\n$/, ''),
577 spans: spans
578 };
579 }
580
581
582 /**
583 * Apply the given language handler to sourceCode and add the resulting
584 * decorations to out.
585 * @param {number} basePos the index of sourceCode within the chunk of source
586 * whose decorations are already present on out.
587 */
588 function appendDecorations(basePos, sourceCode, langHandler, out) {
589 if (!sourceCode) { return; }
590 var job = {
591 sourceCode: sourceCode,
592 basePos: basePos
593 };
594 langHandler(job);
595 out.push.apply(out, job.decorations);
596 }
597
598 var notWs = /\S/;
599
600 /**
601 * Given an element, if it contains only one child element and any text nodes
602 * it contains contain only space characters, return the sole child element.
603 * Otherwise returns undefined.
604 * <p>
605 * This is meant to return the CODE element in {@code <pre><code ...>} when
606 * there is a single child element that contains all the non-space textual
607 * content, but not to return anything where there are multiple child elements
608 * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
609 * is textual content.
610 */
611 function childContentWrapper(element) {
612 var wrapper = undefined;
613 for (var c = element.firstChild; c; c = c.nextSibling) {
614 var type = c.nodeType;
615 wrapper = (type === 1) // Element Node
616 ? (wrapper ? element : c)
617 : (type === 3) // Text Node
618 ? (notWs.test(c.nodeValue) ? element : wrapper)
619 : wrapper;
620 }
621 return wrapper === element ? undefined : wrapper;
622 }
623
624 /** Given triples of [style, pattern, context] returns a lexing function,
625 * The lexing function interprets the patterns to find token boundaries and
626 * returns a decoration list of the form
627 * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
628 * where index_n is an index into the sourceCode, and style_n is a style
629 * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
630 * all characters in sourceCode[index_n-1:index_n].
631 *
632 * The stylePatterns is a list whose elements have the form
633 * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
634 *
635 * Style is a style constant like PR_PLAIN, or can be a string of the
636 * form 'lang-FOO', where FOO is a language extension describing the
637 * language of the portion of the token in $1 after pattern executes.
638 * E.g., if style is 'lang-lisp', and group 1 contains the text
639 * '(hello (world))', then that portion of the token will be passed to the
640 * registered lisp handler for formatting.
641 * The text before and after group 1 will be restyled using this decorator
642 * so decorators should take care that this doesn't result in infinite
643 * recursion. For example, the HTML lexer rule for SCRIPT elements looks
644 * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
645 * '<script>foo()<\/script>', which would cause the current decorator to
646 * be called with '<script>' which would not match the same rule since
647 * group 1 must not be empty, so it would be instead styled as PR_TAG by
648 * the generic tag rule. The handler registered for the 'js' extension would
649 * then be called with 'foo()', and finally, the current decorator would
650 * be called with '<\/script>' which would not match the original rule and
651 * so the generic tag rule would identify it as a tag.
652 *
653 * Pattern must only match prefixes, and if it matches a prefix, then that
654 * match is considered a token with the same style.
655 *
656 * Context is applied to the last non-whitespace, non-comment token
657 * recognized.
658 *
659 * Shortcut is an optional string of characters, any of which, if the first
660 * character, gurantee that this pattern and only this pattern matches.
661 *
662 * @param {Array} shortcutStylePatterns patterns that always start with
663 * a known character. Must have a shortcut string.
664 * @param {Array} fallthroughStylePatterns patterns that will be tried in
665 * order if the shortcut ones fail. May have shortcuts.
666 *
667 * @return {function (Object)} a
668 * function that takes source code and returns a list of decorations.
669 */
670 function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
671 var shortcuts = {};
672 var tokenizer;
673 (function () {
674 var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
675 var allRegexs = [];
676 var regexKeys = {};
677 for (var i = 0, n = allPatterns.length; i < n; ++i) {
678 var patternParts = allPatterns[i];
679 var shortcutChars = patternParts[3];
680 if (shortcutChars) {
681 for (var c = shortcutChars.length; --c >= 0;) {
682 shortcuts[shortcutChars.charAt(c)] = patternParts;
683 }
684 }
685 var regex = patternParts[1];
686 var k = '' + regex;
687 if (!regexKeys.hasOwnProperty(k)) {
688 allRegexs.push(regex);
689 regexKeys[k] = null;
690 }
691 }
692 allRegexs.push(/[\0-\uffff]/);
693 tokenizer = combinePrefixPatterns(allRegexs);
694 })();
695
696 var nPatterns = fallthroughStylePatterns.length;
697
698 /**
699 * Lexes job.sourceCode and produces an output array job.decorations of
700 * style classes preceded by the position at which they start in
701 * job.sourceCode in order.
702 *
703 * @param {Object} job an object like <pre>{
704 * sourceCode: {string} sourceText plain text,
705 * basePos: {int} position of job.sourceCode in the larger chunk of
706 * sourceCode.
707 * }</pre>
708 */
709 var decorate = function (job) {
710 var sourceCode = job.sourceCode, basePos = job.basePos;
711 /** Even entries are positions in source in ascending order. Odd enties
712 * are style markers (e.g., PR_COMMENT) that run from that position until
713 * the end.
714 * @type {Array.<number|string>}
715 */
716 var decorations = [basePos, PR_PLAIN];
717 var pos = 0; // index into sourceCode
718 var tokens = sourceCode.match(tokenizer) || [];
719 var styleCache = {};
720
721 for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
722 var token = tokens[ti];
723 var style = styleCache[token];
724 var match = void 0;
725
726 var isEmbedded;
727 if (typeof style === 'string') {
728 isEmbedded = false;
729 } else {
730 var patternParts = shortcuts[token.charAt(0)];
731 if (patternParts) {
732 match = token.match(patternParts[1]);
733 style = patternParts[0];
734 } else {
735 for (var i = 0; i < nPatterns; ++i) {
736 patternParts = fallthroughStylePatterns[i];
737 match = token.match(patternParts[1]);
738 if (match) {
739 style = patternParts[0];
740 break;
741 }
742 }
743
744 if (!match) { // make sure that we make progress
745 style = PR_PLAIN;
746 }
747 }
748
749 isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
750 if (isEmbedded && !(match && typeof match[1] === 'string')) {
751 isEmbedded = false;
752 style = PR_SOURCE;
753 }
754
755 if (!isEmbedded) { styleCache[token] = style; }
756 }
757
758 var tokenStart = pos;
759 pos += token.length;
760
761 if (!isEmbedded) {
762 decorations.push(basePos + tokenStart, style);
763 } else { // Treat group 1 as an embedded block of source code.
764 var embeddedSource = match[1];
765 var embeddedSourceStart = token.indexOf(embeddedSource);
766 var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
767 if (match[2]) {
768 // If embeddedSource can be blank, then it would match at the
769 // beginning which would cause us to infinitely recurse on the
770 // entire token, so we catch the right context in match[2].
771 embeddedSourceEnd = token.length - match[2].length;
772 embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
773 }
774 var lang = style.substring(5);
775 // Decorate the left of the embedded source
776 appendDecorations(
777 basePos + tokenStart,
778 token.substring(0, embeddedSourceStart),
779 decorate, decorations);
780 // Decorate the embedded source
781 appendDecorations(
782 basePos + tokenStart + embeddedSourceStart,
783 embeddedSource,
784 langHandlerForExtension(lang, embeddedSource),
785 decorations);
786 // Decorate the right of the embedded section
787 appendDecorations(
788 basePos + tokenStart + embeddedSourceEnd,
789 token.substring(embeddedSourceEnd),
790 decorate, decorations);
791 }
792 }
793 job.decorations = decorations;
794 };
795 return decorate;
796 }
797
798 /** returns a function that produces a list of decorations from source text.
799 *
800 * This code treats ", ', and ` as string delimiters, and \ as a string
801 * escape. It does not recognize perl's qq() style strings.
802 * It has no special handling for double delimiter escapes as in basic, or
803 * the tripled delimiters used in python, but should work on those regardless
804 * although in those cases a single string literal may be broken up into
805 * multiple adjacent string literals.
806 *
807 * It recognizes C, C++, and shell style comments.
808 *
809 * @param {Object} options a set of optional parameters.
810 * @return {function (Object)} a function that examines the source code
811 * in the input job and builds the decoration list.
812 */
813 function sourceDecorator(options) {
814 var shortcutStylePatterns = [], fallthroughStylePatterns = [];
815 if (options['tripleQuotedStrings']) {
816 // '''multi-line-string''', 'single-line-string', and double-quoted
817 shortcutStylePatterns.push(
818 [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
819 null, '\'"']);
820 } else if (options['multiLineStrings']) {
821 // 'multi-line-string', "multi-line-string"
822 shortcutStylePatterns.push(
823 [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
824 null, '\'"`']);
825 } else {
826 // 'single-line-string', "single-line-string"
827 shortcutStylePatterns.push(
828 [PR_STRING,
829 /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
830 null, '"\'']);
831 }
832 if (options['verbatimStrings']) {
833 // verbatim-string-literal production from the C# grammar. See issue 93.
834 fallthroughStylePatterns.push(
835 [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
836 }
837 var hc = options['hashComments'];
838 if (hc) {
839 if (options['cStyleComments']) {
840 if (hc > 1) { // multiline hash comments
841 shortcutStylePatterns.push(
842 [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
843 } else {
844 // Stop C preprocessor declarations at an unclosed open comment
845 shortcutStylePatterns.push(
846 [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
847 null, '#']);
848 }
849 // #include <stdio.h>
850 fallthroughStylePatterns.push(
851 [PR_STRING,
852 /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
853 null]);
854 } else {
855 shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
856 }
857 }
858 if (options['cStyleComments']) {
859 fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
860 fallthroughStylePatterns.push(
861 [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
862 }
863 if (options['regexLiterals']) {
864 /**
865 * @const
866 */
867 var REGEX_LITERAL = (
868 // A regular expression literal starts with a slash that is
869 // not followed by * or / so that it is not confused with
870 // comments.
871 '/(?=[^/*])'
872 // and then contains any number of raw characters,
873 + '(?:[^/\\x5B\\x5C]'
874 // escape sequences (\x5C),
875 + '|\\x5C[\\s\\S]'
876 // or non-nesting character sets (\x5B\x5D);
877 + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
878 // finally closed by a /.
879 + '/');
880 fallthroughStylePatterns.push(
881 ['lang-regex',
882 new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
883 ]);
884 }
885
886 var types = options['types'];
887 if (types) {
888 fallthroughStylePatterns.push([PR_TYPE, types]);
889 }
890
891 if (options['strings']) {
892 var strings = ("" + options['strings']).replace(/^ | $/g, '').replace(/-/g, '\\-');
893 fallthroughStylePatterns.push(
894 [PR_STRING,
895 new RegExp('(?:' + strings.replace(/[\s,]+/g, '|') + ')'),
896 , null]
897 );
898 }
899
900 var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
901 if (keywords.length) {
902 fallthroughStylePatterns.push(
903 [PR_KEYWORD,
904 new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
905 null]);
906 }
907
908 shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
909 if (options['httpdComments']) {
910 fallthroughStylePatterns.push(
911 [PR_PLAIN, /^.*\S.*#/i, null]
912 );
913 }
914
915 fallthroughStylePatterns.push(
916 // TODO(mikesamuel): recognize non-latin letters and numerals in idents
917 [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*|\bNULL\b/i, null],
918 [PR_LITERAL, CONFIG_OPTIONS, null],
919 //[PR_STRING, CONFIG_ENVS, null],
920 [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],
921 [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_(t|req|module)\b)/, null],
922 [PR_TAG, /^apr_[a-z_0-9]+|ap_[a-z_0-9]+/i, null],
923 [PR_PLAIN, /^[a-z_$][a-z_$@0-9\-]*/i, null],
924 [PR_LITERAL,
925 new RegExp(
926 '^(?:'
927 // A hex number
928 + '0x[a-f0-9]+'
929 // An IPv6 Address
930 + '|[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+'
931 // or an octal or decimal number,
932 + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
933 // possibly in scientific notation
934 + '(?:e[+\\-]?\\d+)?'
935 + ')'
936 // with an optional modifier like UL for unsigned long
937 + '[a-z]*', 'i'),
938 null, '0123456789'],
939 // Don't treat escaped quotes in bash as starting strings. See issue 144.
940 [PR_PLAIN, /^\\[\s\S]?/, null],
941 [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
942
943 return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
944 }
945
946 var decorateSource = sourceDecorator({
947 'keywords': ALL_KEYWORDS,
948 'hashComments': true,
949 'cStyleComments': true,
950 'multiLineStrings': true,
951 'regexLiterals': true
952 });
953
954 /**
955 * Given a DOM subtree, wraps it in a list, and puts each line into its own
956 * list item.
957 *
958 * @param {Node} node modified in place. Its content is pulled into an
959 * HTMLOListElement, and each line is moved into a separate list item.
960 * This requires cloning elements, so the input might not have unique
961 * IDs after numbering.
962 * @param {boolean} isPreformatted true iff white-space in text nodes should
963 * be treated as significant.
964 */
965 function numberLines(node, opt_startLineNum, isPreformatted) {
966 var nocode = /(?:^|\s)nocode(?:\s|$)/;
967 var lineBreak = /\r\n?|\n/;
968
969 var document = node.ownerDocument;
970
971 var li = document.createElement('li');
972 while (node.firstChild) {
973 li.appendChild(node.firstChild);
974 }
975 // An array of lines. We split below, so this is initialized to one
976 // un-split line.
977 var listItems = [li];
978
979 function walk(node) {
980 switch (node.nodeType) {
981 case 1: // Element
982 if (nocode.test(node.className)) { break; }
983 if ('br' === node.nodeName) {
984 breakAfter(node);
985 // Discard the <BR> since it is now flush against a </LI>.
986 if (node.parentNode) {
987 node.parentNode.removeChild(node);
988 }
989 } else {
990 for (var child = node.firstChild; child; child = child.nextSibling) {
991 walk(child);
992 }
993 }
994 break;
995 case 3: case 4: // Text
996 if (isPreformatted) {
997 var text = node.nodeValue;
998 var match = text.match(lineBreak);
999 if (match) {
1000 var firstLine = text.substring(0, match.index);
1001 node.nodeValue = firstLine;
1002 var tail = text.substring(match.index + match[0].length);
1003 if (tail) {
1004 var parent = node.parentNode;
1005 parent.insertBefore(
1006 document.createTextNode(tail), node.nextSibling);
1007 }
1008 breakAfter(node);
1009 if (!firstLine) {
1010 // Don't leave blank text nodes in the DOM.
1011 node.parentNode.removeChild(node);
1012 }
1013 }
1014 }
1015 break;
1016 }
1017 }
1018
1019 // Split a line after the given node.
1020 function breakAfter(lineEndNode) {
1021 // If there's nothing to the right, then we can skip ending the line
1022 // here, and move root-wards since splitting just before an end-tag
1023 // would require us to create a bunch of empty copies.
1024 while (!lineEndNode.nextSibling) {
1025 lineEndNode = lineEndNode.parentNode;
1026 if (!lineEndNode) { return; }
1027 }
1028
1029 function breakLeftOf(limit, copy) {
1030 // Clone shallowly if this node needs to be on both sides of the break.
1031 var rightSide = copy ? limit.cloneNode(false) : limit;
1032 var parent = limit.parentNode;
1033 if (parent) {
1034 // We clone the parent chain.
1035 // This helps us resurrect important styling elements that cross lines.
1036 // E.g. in <i>Foo<br>Bar</i>
1037 // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
1038 var parentClone = breakLeftOf(parent, 1);
1039 // Move the clone and everything to the right of the original
1040 // onto the cloned parent.
1041 var next = limit.nextSibling;
1042 parentClone.appendChild(rightSide);
1043 for (var sibling = next; sibling; sibling = next) {
1044 next = sibling.nextSibling;
1045 parentClone.appendChild(sibling);
1046 }
1047 }
1048 return rightSide;
1049 }
1050
1051 var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
1052
1053 // Walk the parent chain until we reach an unattached LI.
1054 for (var parent;
1055 // Check nodeType since IE invents document fragments.
1056 (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
1057 copiedListItem = parent;
1058 }
1059 // Put it on the list of lines for later processing.
1060 listItems.push(copiedListItem);
1061 }
1062
1063 // Split lines while there are lines left to split.
1064 for (var i = 0; // Number of lines that have been split so far.
1065 i < listItems.length; // length updated by breakAfter calls.
1066 ++i) {
1067 walk(listItems[i]);
1068 }
1069
1070 // Make sure numeric indices show correctly.
1071 if (opt_startLineNum === (opt_startLineNum|0)) {
1072 listItems[0].setAttribute('value', opt_startLineNum);
1073 }
1074
1075 var ol = document.createElement('ol');
1076 ol.className = 'linenums';
1077 var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
1078 for (var i = 0, n = listItems.length; i < n; ++i) {
1079 li = listItems[i];
1080 // Stick a class on the LIs so that stylesheets can
1081 // color odd/even rows, or any other row pattern that
1082 // is co-prime with 10.
1083 li.className = 'L' + ((i + offset) % 1);
1084 if (!li.firstChild) {
1085 li.appendChild(document.createTextNode('\xA0'));
1086 }
1087 ol.appendChild(li);
1088 }
1089
1090 node.appendChild(ol);
1091 }
1092
1093 /**
1094 * Breaks {@code job.sourceCode} around style boundaries in
1095 * {@code job.decorations} and modifies {@code job.sourceNode} in place.
1096 * @param {Object} job like <pre>{
1097 * sourceCode: {string} source as plain text,
1098 * spans: {Array.<number|Node>} alternating span start indices into source
1099 * and the text node or element (e.g. {@code <BR>}) corresponding to that
1100 * span.
1101 * decorations: {Array.<number|string} an array of style classes preceded
1102 * by the position at which they start in job.sourceCode in order
1103 * }</pre>
1104 * @private
1105 */
1106 function recombineTagsAndDecorations(job) {
1107 var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
1108 isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
1109 var newlineRe = /\n/g;
1110
1111 var source = job.sourceCode;
1112 var sourceLength = source.length;
1113 // Index into source after the last code-unit recombined.
1114 var sourceIndex = 0;
1115
1116 var spans = job.spans;
1117 var nSpans = spans.length;
1118 // Index into spans after the last span which ends at or before sourceIndex.
1119 var spanIndex = 0;
1120
1121 var decorations = job.decorations;
1122 var nDecorations = decorations.length;
1123 // Index into decorations after the last decoration which ends at or before
1124 // sourceIndex.
1125 var decorationIndex = 0;
1126
1127 // Remove all zero-length decorations.
1128 decorations[nDecorations] = sourceLength;
1129 var decPos, i;
1130 for (i = decPos = 0; i < nDecorations;) {
1131 if (decorations[i] !== decorations[i + 2]) {
1132 decorations[decPos++] = decorations[i++];
1133 decorations[decPos++] = decorations[i++];
1134 } else {
1135 i += 2;
1136 }
1137 }
1138 nDecorations = decPos;
1139
1140 // Simplify decorations.
1141 for (i = decPos = 0; i < nDecorations;) {
1142 var startPos = decorations[i];
1143 // Conflate all adjacent decorations that use the same style.
1144 var startDec = decorations[i + 1];
1145 var end = i + 2;
1146 while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
1147 end += 2;
1148 }
1149 decorations[decPos++] = startPos;
1150 decorations[decPos++] = startDec;
1151 i = end;
1152 }
1153
1154 nDecorations = decorations.length = decPos;
1155
1156 var sourceNode = job.sourceNode;
1157 var oldDisplay;
1158 if (sourceNode) {
1159 oldDisplay = sourceNode.style.display;
1160 sourceNode.style.display = 'none';
1161 }
1162 try {
1163 var decoration = null;
1164 var X = 0;
1165 while (spanIndex < nSpans) {
1166 X = X + 1;
1167 if (X > 5000) { break; }
1168 var spanStart = spans[spanIndex];
1169 var spanEnd = spans[spanIndex + 2] || sourceLength;
1170
1171 var decEnd = decorations[decorationIndex + 2] || sourceLength;
1172
1173 var end = Math.min(spanEnd, decEnd);
1174
1175 var textNode = spans[spanIndex + 1];
1176 var styledText;
1177 if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
1178 // Don't introduce spans around empty text nodes.
1179 && (styledText = source.substring(sourceIndex, end))) {
1180 // This may seem bizarre, and it is. Emitting LF on IE causes the
1181 // code to display with spaces instead of line breaks.
1182 // Emitting Windows standard issue linebreaks (CRLF) causes a blank
1183 // space to appear at the beginning of every line but the first.
1184 // Emitting an old Mac OS 9 line separator makes everything spiffy.
1185 if (isIE8OrEarlier) {
1186 styledText = styledText.replace(newlineRe, '\r');
1187 }
1188 textNode.nodeValue = styledText;
1189 var document = textNode.ownerDocument;
1190 var span = document.createElement('span');
1191 span.className = decorations[decorationIndex + 1];
1192 var parentNode = textNode.parentNode;
1193 parentNode.replaceChild(span, textNode);
1194 span.appendChild(textNode);
1195 if (sourceIndex < spanEnd) { // Split off a text node.
1196 spans[spanIndex + 1] = textNode
1197 // TODO: Possibly optimize by using '' if there's no flicker.
1198 = document.createTextNode(source.substring(end, spanEnd));
1199 parentNode.insertBefore(textNode, span.nextSibling);
1200 }
1201 }
1202
1203 sourceIndex = end;
1204
1205 if (sourceIndex >= spanEnd) {
1206 spanIndex += 2;
1207 }
1208 if (sourceIndex >= decEnd) {
1209 decorationIndex += 2;
1210 }
1211 }
1212 } finally {
1213 if (sourceNode) {
1214 sourceNode.style.display = oldDisplay;
1215 }
1216 }
1217 }
1218
1219
1220 /** Maps language-specific file extensions to handlers. */
1221 var langHandlerRegistry = {};
1222 /** Register a language handler for the given file extensions.
1223 * @param {function (Object)} handler a function from source code to a list
1224 * of decorations. Takes a single argument job which describes the
1225 * state of the computation. The single parameter has the form
1226 * {@code {
1227 * sourceCode: {string} as plain text.
1228 * decorations: {Array.<number|string>} an array of style classes
1229 * preceded by the position at which they start in
1230 * job.sourceCode in order.
1231 * The language handler should assigned this field.
1232 * basePos: {int} the position of source in the larger source chunk.
1233 * All positions in the output decorations array are relative
1234 * to the larger source chunk.
1235 * } }
1236 * @param {Array.<string>} fileExtensions
1237 */
1238 function registerLangHandler(handler, fileExtensions) {
1239 for (var i = fileExtensions.length; --i >= 0;) {
1240 var ext = fileExtensions[i];
1241 if (!langHandlerRegistry.hasOwnProperty(ext)) {
1242 langHandlerRegistry[ext] = handler;
1243 } else if (win['console']) {
1244 console['warn']('cannot override language handler %s', ext);
1245 }
1246 }
1247 }
1248 function langHandlerForExtension(extension, source) {
1249 if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
1250 // Treat it as markup if the first non whitespace character is a < and
1251 // the last non-whitespace character is a >.
1252 extension = /^\s*</.test(source)
1253 ? 'default-markup'
1254 : 'default-code';
1255 }
1256 return langHandlerRegistry[extension];
1257 }
1258 registerLangHandler(decorateSource, ['default-code']);
1259 registerLangHandler(
1260 createSimpleLexer(
1261 [],
1262 [
1263 [PR_PLAIN, /^[^<?]+/],
1264 [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
1265 [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
1266 // Unescaped content in an unknown language
1267 ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
1268 ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
1269 [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
1270 ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
1271 // Unescaped content in javascript. (Or possibly vbscript).
1272 ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
1273 // Contains unescaped stylesheet content
1274 ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
1275 ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
1276 ]),
1277 ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
1278 registerLangHandler(
1279 createSimpleLexer(
1280 [
1281 [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
1282 [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
1283 ],
1284 [
1285 [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
1286 [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
1287 ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
1288 [PR_PUNCTUATION, /^[=<>\/]+/],
1289 ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
1290 ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
1291 ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
1292 ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
1293 ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
1294 ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
1295 ]),
1296 ['in.tag']);
1297 registerLangHandler(
1298 createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
1299 registerLangHandler(sourceDecorator({
1300 'keywords': CPP_KEYWORDS,
1301 'hashComments': true,
1302 'cStyleComments': true,
1303 'types': C_TYPES
1304 }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
1305 registerLangHandler(sourceDecorator({
1306 'keywords': PHP_KEYWORDS,
1307 'hashComments': false,
1308 'cStyleComments': true,
1309 'multiLineStrings': true,
1310 'regexLiterals': true
1311// 'types': C_TYPES,
1312 }), ['php', 'phtml', 'inc']);
1313 registerLangHandler(sourceDecorator({
1314 'keywords': 'null,true,false'
1315 }), ['json']);
1316 registerLangHandler(sourceDecorator({
1317 'keywords': CSHARP_KEYWORDS,
1318 'hashComments': true,
1319 'cStyleComments': true,
1320 'verbatimStrings': true,
1321 'types': C_TYPES
1322 }), ['cs']);
1323 registerLangHandler(sourceDecorator({
1324 'keywords': JAVA_KEYWORDS,
1325 'cStyleComments': true
1326 }), ['java']);
1327 registerLangHandler(sourceDecorator({
1328 'keywords': SH_KEYWORDS,
1329 'hashComments': true,
1330 'multiLineStrings': true
1331 }), ['bsh', 'csh', 'sh']);
1332 registerLangHandler(sourceDecorator({
1333 'keywords': PYTHON_KEYWORDS,
1334 'hashComments': true,
1335 'multiLineStrings': true,
1336 'tripleQuotedStrings': true
1337 }), ['cv', 'py']);
1338 registerLangHandler(sourceDecorator({
1339 'keywords': PERL_KEYWORDS,
1340 'hashComments': true,
1341 'multiLineStrings': true,
1342 'regexLiterals': true
1343 }), ['perl', 'pl', 'pm']);
1344 registerLangHandler(sourceDecorator({
1345 'keywords': RUBY_KEYWORDS,
1346 'hashComments': true,
1347 'multiLineStrings': true,
1348 'regexLiterals': true
1349 }), ['rb']);
1350 registerLangHandler(sourceDecorator({
1351 'keywords': JSCRIPT_KEYWORDS,
1352 'cStyleComments': true,
1353 'regexLiterals': true
1354 }), ['js']);
1355 registerLangHandler(sourceDecorator({
1356 'keywords': COFFEE_KEYWORDS,
1357 'hashComments': 3, // ### style block comments
1358 'cStyleComments': true,
1359 'multilineStrings': true,
1360 'tripleQuotedStrings': true,
1361 'regexLiterals': true
1362 }), ['coffee']);
1363 registerLangHandler(
1364 createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
1365 registerLangHandler(sourceDecorator({
1366 'keywords': CONFIG_KEYWORDS,
1367 'literals': CONFIG_OPTIONS,
1368 'strings': CONFIG_ENVS,
1369 'hashComments': true,
1370 'cStyleComments': false,
1371 'multiLineStrings': false,
1372 'regexLiterals': false,
1373 'httpdComments': true
1374 }), ['config']);
1375
1376 function applyDecorator(job) {
1377 var opt_langExtension = job.langExtension;
1378
1379 try {
1380 // Extract tags, and convert the source code to plain text.
1381 var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
1382 /** Plain text. @type {string} */
1383 var source = sourceAndSpans.sourceCode;
1384 job.sourceCode = source;
1385 job.spans = sourceAndSpans.spans;
1386 job.basePos = 0;
1387
1388 // Apply the appropriate language handler
1389 langHandlerForExtension(opt_langExtension, source)(job);
1390
1391 // Integrate the decorations and tags back into the source code,
1392 // modifying the sourceNode in place.
1393 recombineTagsAndDecorations(job);
1394 } catch (e) {
1395 if (win['console']) {
1396 console['log'](e && e['stack'] ? e['stack'] : e);
1397 }
1398 }
1399 }
1400
1401 /**
1402 * @param sourceCodeHtml {string} The HTML to pretty print.
1403 * @param opt_langExtension {string} The language name to use.
1404 * Typically, a filename extension like 'cpp' or 'java'.
1405 * @param opt_numberLines {number|boolean} True to number lines,
1406 * or the 1-indexed number of the first line in sourceCodeHtml.
1407 */
1408 function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
1409 var container = document.createElement('pre');
1410 // This could cause images to load and onload listeners to fire.
1411 // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
1412 // We assume that the inner HTML is from a trusted source.
1413 container.innerHTML = sourceCodeHtml;
1414 if (opt_numberLines) {
1415 numberLines(container, opt_numberLines, true);
1416 }
1417
1418 var job = {
1419 langExtension: opt_langExtension,
1420 numberLines: opt_numberLines,
1421 sourceNode: container,
1422 pre: 1
1423 };
1424 applyDecorator(job);
1425 return container.innerHTML;
1426 }
1427
1428 function prettyPrint(opt_whenDone) {
1429 function byTagName(tn) { return document.getElementsByTagName(tn); }
1430 // fetch a list of nodes to rewrite
1431 var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
1432 var elements = [];
1433 for (var i = 0; i < codeSegments.length; ++i) {
1434 for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
1435 elements.push(codeSegments[i][j]);
1436 }
1437 }
1438 codeSegments = null;
1439
1440 var clock = Date;
1441 if (!clock['now']) {
1442 clock = { 'now': function () { return +(new Date); } };
1443 }
1444
1445 // The loop is broken into a series of continuations to make sure that we
1446 // don't make the browser unresponsive when rewriting a large page.
1447 var k = 0;
1448 var prettyPrintingJob;
1449
1450 var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
1451 var prettyPrintRe = /\bprettyprint\b/;
1452 var prettyPrintedRe = /\bprettyprinted\b/;
1453 var preformattedTagNameRe = /pre|xmp/i;
1454 var codeRe = /^code$/i;
1455 var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
1456
1457 function doWork() {
1458 var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
1459 clock['now']() + 250 /* ms */ :
1460 Infinity);
1461 for (; k < elements.length && clock['now']() < endTime; k++) {
1462 var cs = elements[k];
1463 var className = cs.className;
1464 if (prettyPrintRe.test(className)
1465 // Don't redo this if we've already done it.
1466 // This allows recalling pretty print to just prettyprint elements
1467 // that have been added to the page since last call.
1468 && !prettyPrintedRe.test(className)) {
1469
1470 // make sure this is not nested in an already prettified element
1471 var nested = false;
1472 for (var p = cs.parentNode; p; p = p.parentNode) {
1473 var tn = p.tagName;
1474 if (preCodeXmpRe.test(tn)
1475 && p.className && prettyPrintRe.test(p.className)) {
1476 nested = true;
1477 break;
1478 }
1479 }
1480 if (!nested) {
1481 // Mark done. If we fail to prettyprint for whatever reason,
1482 // we shouldn't try again.
1483 cs.className += ' prettyprinted';
1484
1485 // If the classes includes a language extensions, use it.
1486 // Language extensions can be specified like
1487 // <pre class="prettyprint lang-cpp">
1488 // the language extension "cpp" is used to find a language handler
1489 // as passed to PR.registerLangHandler.
1490 // HTML5 recommends that a language be specified using "language-"
1491 // as the prefix instead. Google Code Prettify supports both.
1492 // http://dev.w3.org/html5/spec-author-view/the-code-element.html
1493 var langExtension = className.match(langExtensionRe);
1494 // Support <pre class="prettyprint"><code class="language-c">
1495 var wrapper;
1496 if (!langExtension && (wrapper = childContentWrapper(cs))
1497 && codeRe.test(wrapper.tagName)) {
1498 langExtension = wrapper.className.match(langExtensionRe);
1499 }
1500
1501 if (langExtension) { langExtension = langExtension[1]; }
1502
1503 var preformatted;
1504 if (preformattedTagNameRe.test(cs.tagName)) {
1505 preformatted = 1;
1506 } else {
1507 var currentStyle = cs['currentStyle'];
1508 var whitespace = (
1509 currentStyle
1510 ? currentStyle['whiteSpace']
1511 : (document.defaultView
1512 && document.defaultView.getComputedStyle)
1513 ? document.defaultView.getComputedStyle(cs, null)
1514 .getPropertyValue('white-space')
1515 : 0);
1516 preformatted = whitespace
1517 && 'pre' === whitespace.substring(0, 3);
1518 }
1519
1520 // Look for a class like linenums or linenums:<n> where <n> is the
1521 // 1-indexed number of the first line.
1522 var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
1523 lineNums = lineNums
1524 ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
1525 : false;
1526 if (lineNums) { numberLines(cs, lineNums, preformatted); }
1527
1528 // do the pretty printing
1529 prettyPrintingJob = {
1530 langExtension: langExtension,
1531 sourceNode: cs,
1532 numberLines: lineNums,
1533 pre: preformatted
1534 };
1535 applyDecorator(prettyPrintingJob);
1536 }
1537 }
1538 }
1539 if (k < elements.length) {
1540 // finish up in a continuation
1541 setTimeout(doWork, 250);
1542 } else if (opt_whenDone) {
1543 opt_whenDone();
1544 }
1545 }
1546
1547 doWork();
1548 }
1549
1550 /**
1551 * Contains functions for creating and registering new language handlers.
1552 * @type {Object}
1553 */
1554 var PR = win['PR'] = {
1555 'createSimpleLexer': createSimpleLexer,
1556 'registerLangHandler': registerLangHandler,
1557 'sourceDecorator': sourceDecorator,
1558 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
1559 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
1560 'PR_COMMENT': PR_COMMENT,
1561 'PR_DECLARATION': PR_DECLARATION,
1562 'PR_KEYWORD': PR_KEYWORD,
1563 'PR_LITERAL': PR_LITERAL,
1564 'PR_NOCODE': PR_NOCODE,
1565 'PR_PLAIN': PR_PLAIN,
1566 'PR_PUNCTUATION': PR_PUNCTUATION,
1567 'PR_SOURCE': PR_SOURCE,
1568 'PR_STRING': PR_STRING,
1569 'PR_TAG': PR_TAG,
1570 'PR_TYPE': PR_TYPE,
1571 'prettyPrintOne': win['prettyPrintOne'] = prettyPrintOne,
1572 'prettyPrint': win['prettyPrint'] = prettyPrint
1573 };
1574
1575
1576/* Register Lua syntaxes */
1577 PR['registerLangHandler'](
1578 PR['createSimpleLexer'](
1579 [
1580 // Whitespace
1581 [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
1582 // A double or single quoted, possibly multi-line, string.
1583 [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\'']
1584 ],
1585 [
1586 // A comment is either a line comment that starts with two dashes, or
1587 // two dashes preceding a long bracketed block.
1588 [PR['PR_COMMENT'], /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],
1589 [PR['PR_TYPE'], /^nil|false|true/],
1590 // A long bracketed block not preceded by -- is a string.
1591 [PR['PR_STRING'], /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],
1592 [PR['PR_KEYWORD'], /^(?:and|break|do|else|elseif|end|for|function|if|in|local|not|or|repeat|require|return|then|until|while)\b/, null],
1593 // A number is a hex integer literal, a decimal real literal, or in
1594 // scientific notation.
1595 [PR['PR_LITERAL'],
1596 /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
1597 // An identifier
1598 [PR['PR_PLAIN'], /^[a-z_]\w*/i],
1599 // A run of punctuation
1600 [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]
1601 ]),
1602 ['lua']);
1603
1604
1605 // Make PR available via the Asynchronous Module Definition (AMD) API.
1606 // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
1607 // The Asynchronous Module Definition (AMD) API specifies a
1608 // mechanism for defining modules such that the module and its
1609 // dependencies can be asynchronously loaded.
1610 // ...
1611 // To allow a clear indicator that a global define function (as
1612 // needed for script src browser loading) conforms to the AMD API,
1613 // any global define function SHOULD have a property called "amd"
1614 // whose value is an object. This helps avoid conflict with any
1615 // other existing JavaScript code that could have defined a define()
1616 // function that does not conform to the AMD API.
1617 if (typeof define === "function" && define['amd']) {
1618 define("google-code-prettify", [], function () {
1619 return PR;
1620 });
1621 }
1622})();
diff --git a/docs/manual/style/scripts/prettify.min.js b/docs/manual/style/scripts/prettify.min.js
0new file mode 1006441623new file mode 100644
index 0000000..bd72256
--- /dev/null
+++ b/docs/manual/style/scripts/prettify.min.js
@@ -0,0 +1,124 @@
1// see prettify.js for copyright, license and expanded version
2window['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"]
3var CONFIG_OPTIONS=/^[\\+\\-]?(AuthConfig|IncludesNOEXEC|ExecCGI|FollowSymLinks|MultiViews|Includes|Indexes|SymLinksIfOwnerMatch)\b/i;var ALL_KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS+
4PYTHON_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;}}
5var 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;}
6var 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);}}
7function encodeEscape(charCode){if(charCode<0x20){return(charCode<0x10?'\\x0':'\\x')+charCode.toString(16);}
8var ch=String.fromCharCode(charCode);return(ch==='\\'||ch==='-'||ch===']'||ch==='^')?"\\"+ch:ch;}
9function caseFoldCharset(charSet){var charsetParts=charSet.substring(1,charSet.length-1).match(new RegExp('\\\\u[0-9A-Fa-f]{4}'
10+'|\\\\x[0-9A-Fa-f]{2}'
11+'|\\\\[0-3][0-7]{0,2}'
12+'|\\\\[0-7]{1,2}'
13+'|\\\\[\\s\\S]'
14+'|-'
15+'|[^-\\\\]','g'));var ranges=[];var inverse=charsetParts[0]==='^';var out=['['];if(inverse){out.push('^');}
16for(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;}
17ranges.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]);}
18if(!(end<97||start>122)){ranges.push([Math.max(97,start)&~32,Math.min(end,122)&~32]);}}}}
19ranges.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);}}
20for(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('-');}
21out.push(encodeEscape(range[1]));}}
22out.push(']');return out.join('');}
23function allowAnywhereFoldCaseAndRenumberGroups(regex){var parts=regex.source.match(new RegExp('(?:'
24+'\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'
25+'|\\\\u[A-Fa-f0-9]{4}'
26+'|\\\\x[A-Fa-f0-9]{2}'
27+'|\\\\[0-9]+'
28+'|\\\\[^ux0-9]'
29+'|\\(\\?[:!=]'
30+'|[\\(\\)\\^]'
31+'|[^\\x5B\\x5C\\(\\)\\^]+'
32+')','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);}}}}
33for(var i=1;i<capturedGroups.length;++i){if(-1===capturedGroups[i]){capturedGroups[i]=++capturedGroupIndex;}}
34for(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];}}}
35for(var i=0;i<n;++i){if('^'===parts[i]&&'^'!==parts[i+1]){parts[i]='';}}
36if(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)+']';});}}}
37return parts.join('');}
38var rewritten=[];for(var i=0,n=regexs.length;i<n;++i){var regex=regexs[i];if(regex.global||regex.multiline){throw new Error(''+regex);}
39rewritten.push('(?:'+allowAnywhereFoldCaseAndRenumberGroups(regex)+')');}
40return new RegExp(rewritten.join('|'),ignoreCase?'gi':'g');}
41function 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;}
42for(var child=node.firstChild;child;child=child.nextSibling){walk(child);}
43var nodeName=node.nodeName.toLowerCase();if('br'===nodeName||'li'===nodeName){chunks[k]='\n';spans[k<<1]=length++;spans[(k++<<1)|1]=node;}
44break;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,'');}
45chunks[k]=text;spans[k<<1]=length;length+=text.length;spans[(k++<<1)|1]=node;}
46break;}}
47walk(node);return{sourceCode:chunks.join('').replace(/\n$/,''),spans:spans};}
48function appendDecorations(basePos,sourceCode,langHandler,out){if(!sourceCode){return;}
49var job={sourceCode:sourceCode,basePos:basePos};langHandler(job);out.push.apply(out,job.decorations);}
50var 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;}
51return wrapper===element?undefined:wrapper;}
52function 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;}}
53var regex=patternParts[1];var k=''+regex;if(!regexKeys.hasOwnProperty(k)){allRegexs.push(regex);regexKeys[k]=null;}}
54allRegexs.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;}}
55if(!match){style=PR_PLAIN;}}
56isEmbedded=style.length>=5&&'lang-'===style.substring(0,5);if(isEmbedded&&!(match&&typeof match[1]==='string')){isEmbedded=false;style=PR_SOURCE;}
57if(!isEmbedded){styleCache[token]=style;}}
58var 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;}
59var 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);}}
60job.decorations=decorations;};return decorate;}
61function 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,'"\'']);}
62if(options['verbatimStrings']){fallthroughStylePatterns.push([PR_STRING,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);}
63var 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,'#']);}
64fallthroughStylePatterns.push([PR_STRING,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null]);}else{shortcutStylePatterns.push([PR_COMMENT,/^#[^\r\n]*/,null,'#']);}}
65if(options['cStyleComments']){fallthroughStylePatterns.push([PR_COMMENT,/^\/\/[^\r\n]*/,null]);fallthroughStylePatterns.push([PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]);}
66if(options['regexLiterals']){var REGEX_LITERAL=('/(?=[^/*])'
67+'(?:[^/\\x5B\\x5C]'
68+'|\\x5C[\\s\\S]'
69+'|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
70+'/');fallthroughStylePatterns.push(['lang-regex',new RegExp('^'+REGEXP_PRECEDER_PATTERN+'('+REGEX_LITERAL+')')]);}
71var types=options['types'];if(types){fallthroughStylePatterns.push([PR_TYPE,types]);}
72if(options['strings']){var strings=(""+options['strings']).replace(/^ | $/g,'').replace(/-/g,'\\-');fallthroughStylePatterns.push([PR_STRING,new RegExp('(?:'+strings.replace(/[\s,]+/g,'|')+')'),,null]);}
73var keywords=(""+options['keywords']).replace(/^ | $/g,'');if(keywords.length){fallthroughStylePatterns.push([PR_KEYWORD,new RegExp('^(?:'+keywords.replace(/[\s,]+/g,'|')+')\\b'),null]);}
74shortcutStylePatterns.push([PR_PLAIN,/^\s+/,null,' \r\n\t\xA0']);if(options['httpdComments']){fallthroughStylePatterns.push([PR_PLAIN,/^.*\S.*#/i,null]);}
75fallthroughStylePatterns.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('^(?:'
76+'0x[a-f0-9]+'
77+'|[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+:[a-f0-9:]+'
78+'|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
79+'(?:e[+\\-]?\\d+)?'
80+')'
81+'[a-z]*','i'),null,'0123456789'],[PR_PLAIN,/^\\[\s\S]?/,null],[PR_PUNCTUATION,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns);}
82var 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);}
83var listItems=[li];function walk(node){switch(node.nodeType){case 1:if(nocode.test(node.className)){break;}
84if('br'===node.nodeName){breakAfter(node);if(node.parentNode){node.parentNode.removeChild(node);}}else{for(var child=node.firstChild;child;child=child.nextSibling){walk(child);}}
85break;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);}
86breakAfter(node);if(!firstLine){node.parentNode.removeChild(node);}}}
87break;}}
88function breakAfter(lineEndNode){while(!lineEndNode.nextSibling){lineEndNode=lineEndNode.parentNode;if(!lineEndNode){return;}}
89function 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);}}
90return rightSide;}
91var copiedListItem=breakLeftOf(lineEndNode.nextSibling,0);for(var parent;(parent=copiedListItem.parentNode)&&parent.nodeType===1;){copiedListItem=parent;}
92listItems.push(copiedListItem);}
93for(var i=0;i<listItems.length;++i){walk(listItems[i]);}
94if(opt_startLineNum===(opt_startLineNum|0)){listItems[0].setAttribute('value',opt_startLineNum);}
95var 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'));}
96ol.appendChild(li);}
97node.appendChild(ol);}
98function 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;}}
99nDecorations=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;}
100decorations[decPos++]=startPos;decorations[decPos++]=startDec;i=end;}
101nDecorations=decorations.length=decPos;var sourceNode=job.sourceNode;var oldDisplay;if(sourceNode){oldDisplay=sourceNode.style.display;sourceNode.style.display='none';}
102try{var decoration=null;var X=0;while(spanIndex<nSpans){X=X+1;if(X>5000){break;}
103var 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');}
104textNode.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);}}
105sourceIndex=end;if(sourceIndex>=spanEnd){spanIndex+=2;}
106if(sourceIndex>=decEnd){decorationIndex+=2;}}}finally{if(sourceNode){sourceNode.style.display=oldDisplay;}}}
107var 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);}}}
108function langHandlerForExtension(extension,source){if(!(extension&&langHandlerRegistry.hasOwnProperty(extension))){extension=/^\s*</.test(source)?'default-markup':'default-code';}
109return langHandlerRegistry[extension];}
110registerLangHandler(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);}}}
111function prettyPrintOne(sourceCodeHtml,opt_langExtension,opt_numberLines){var container=document.createElement('pre');container.innerHTML=sourceCodeHtml;if(opt_numberLines){numberLines(container,opt_numberLines,true);}
112var job={langExtension:opt_langExtension,numberLines:opt_numberLines,sourceNode:container,pre:1};applyDecorator(job);return container.innerHTML;}
113function prettyPrint(opt_whenDone){function byTagName(tn){return document.getElementsByTagName(tn);}
114var 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]);}}
115codeSegments=null;var clock=Date;if(!clock['now']){clock={'now':function(){return+(new Date);}};}
116var 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;}}
117if(!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);}
118if(langExtension){langExtension=langExtension[1];}
119var 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);}
120var lineNums=cs.className.match(/\blinenums\b(?::(\d+))?/);lineNums=lineNums?lineNums[1]&&lineNums[1].length?+lineNums[1]:true:false;if(lineNums){numberLines(cs,lineNums,preformatted);}
121prettyPrintingJob={langExtension:langExtension,sourceNode:cs,numberLines:lineNums,pre:preformatted};applyDecorator(prettyPrintingJob);}}}
122if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}
123doWork();}
124var 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;});}})();
0\ No newline at end of file125\ No newline at end of file
diff --git a/docs/manual/style/sitemap.dtd b/docs/manual/style/sitemap.dtd
1new file mode 100644126new file mode 100644
index 0000000..829f326
--- /dev/null
+++ b/docs/manual/style/sitemap.dtd
@@ -0,0 +1,42 @@
1<?xml version='1.0' encoding='UTF-8' ?>
2
3<!--
4 Licensed to the Apache Software Foundation (ASF) under one or more
5 contributor license agreements. See the NOTICE file distributed with
6 this work for additional information regarding copyright ownership.
7 The ASF licenses this file to You under the Apache License, Version 2.0
8 (the "License"); you may not use this file except in compliance with
9 the License. You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
19
20<!ENTITY % common SYSTEM "common.dtd">
21%common;
22
23<!-- <sitemap> is the root element -->
24<!ELEMENT sitemap (title, summary?, seealso*, category*)>
25
26<!ATTLIST sitemap metafile CDATA #REQUIRED
27 upgrade CDATA #IMPLIED
28>
29
30<!-- <indexpage> is another root element -->
31<!ELEMENT indexpage (parentdocument, title, category*)>
32
33<!ATTLIST indexpage metafile CDATA #REQUIRED
34 upgrade CDATA #IMPLIED
35>
36
37<!ELEMENT category (title, page*)>
38<!ATTLIST category id ID #IMPLIED>
39
40<!ELEMENT page (#PCDATA)>
41<!ATTLIST page href CDATA #IMPLIED
42 separate (yes | no) "no" >
diff --git a/docs/manual/style/version.ent b/docs/manual/style/version.ent
0new file mode 10064443new file mode 100644
index 0000000..786d470
--- /dev/null
+++ b/docs/manual/style/version.ent
@@ -0,0 +1,24 @@
1<?xml version='1.0' encoding='UTF-8' ?>
2
3<!--
4 Licensed to the Apache Software Foundation (ASF) under one or more
5 contributor license agreements. See the NOTICE file distributed with
6 this work for additional information regarding copyright ownership.
7 The ASF licenses this file to You under the Apache License, Version 2.0
8 (the "License"); you may not use this file except in compliance with
9 the License. You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
19
20<!ENTITY httpd.major "2">
21<!ENTITY httpd.minor "4">
22<!ENTITY httpd.patch "34">
23
24<!ENTITY httpd.docs "2.4">
diff --git a/docs/manual/suexec.html b/docs/manual/suexec.html
0new file mode 10064425new file mode 100644
index 0000000..c4cc65b
--- /dev/null
+++ b/docs/manual/suexec.html
@@ -0,0 +1,21 @@
1# GENERATED FROM XML -- DO NOT EDIT
2
3URI: suexec.html.en
4Content-Language: en
5Content-type: text/html; charset=ISO-8859-1
6
7URI: suexec.html.fr
8Content-Language: fr
9Content-type: text/html; charset=ISO-8859-1
10
11URI: suexec.html.ja.utf8
12Content-Language: ja
13Content-type: text/html; charset=UTF-8
14
15URI: suexec.html.ko.euc-kr
16Content-Language: ko
17Content-type: text/html; charset=EUC-KR
18
19URI: suexec.html.tr.utf8
20Content-Language: tr
21Content-type: text/html; charset=UTF-8
diff --git a/docs/manual/suexec.html.en b/docs/manual/suexec.html.en
0new file mode 10064422new file mode 100644
index 0000000..526e793
--- /dev/null
+++ b/docs/manual/suexec.html.en
@@ -0,0 +1,643 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
4<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5<!--
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9 -->
10<title>suEXEC Support - Apache HTTP Server Version 2.4</title>
11<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13<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" />
14<script src="./style/scripts/prettify.min.js" type="text/javascript">
15</script>
16
17<link href="./images/favicon.ico" rel="shortcut icon" /></head>
18<body id="manual-page"><div id="page-header">
19<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>
20<p class="apache">Apache HTTP Server Version 2.4</p>
21<img alt="" src="./images/feather.png" /></div>
22<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
23<div id="path">
24<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>
25<div class="toplang">
26<p><span>Available Languages: </span><a href="./en/suexec.html" title="English">&nbsp;en&nbsp;</a> |
27<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
28<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
29<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
30<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
31</div>
32
33 <p>The <strong>suEXEC</strong> feature provides users of the Apache
34 HTTP Server the ability
35 to run <strong>CGI</strong> and <strong>SSI</strong> programs
36 under user IDs different from the user ID of the calling
37 web server. Normally, when a CGI or SSI program executes, it
38 runs as the same user who is running the web server.</p>
39
40 <p>Used properly, this feature can reduce
41 considerably the security risks involved with allowing users to
42 develop and run private CGI or SSI programs. However, if suEXEC
43 is improperly configured, it can cause any number of problems
44 and possibly create new holes in your computer's security. If
45 you aren't familiar with managing <em>setuid root</em> programs
46 and the security issues they present, we highly recommend that
47 you not consider using suEXEC.</p>
48 </div>
49<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>
50<li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC Security Model</a></li>
51<li><img alt="" src="./images/down.gif" /> <a href="#install">Configuring &amp; Installing
52 suEXEC</a></li>
53<li><img alt="" src="./images/down.gif" /> <a href="#enable">Enabling &amp; Disabling
54 suEXEC</a></li>
55<li><img alt="" src="./images/down.gif" /> <a href="#usage">Using suEXEC</a></li>
56<li><img alt="" src="./images/down.gif" /> <a href="#debug">Debugging suEXEC</a></li>
57<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Beware the Jabberwock:
58 Warnings &amp; Examples</a></li>
59</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
60<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
61<div class="section">
62<h2><a name="before" id="before">Before we begin</a></h2>
63
64 <p>Before jumping head-first into this document,
65 you should be aware that certain assumptions are made about you and
66 the environment in which you will be using suexec.</p>
67
68 <p>First, it is assumed that you are using a UNIX
69 derivative operating system that is capable of
70 <strong>setuid</strong> and <strong>setgid</strong> operations.
71 All command examples are given in this regard. Other platforms,
72 if they are capable of supporting suEXEC, may differ in their
73 configuration.</p>
74
75 <p>Second, it is assumed you are familiar with
76 some basic concepts of your computer's security and its
77 administration. This involves an understanding of
78 <strong>setuid/setgid</strong> operations and the various
79 effects they may have on your system and its level of
80 security.</p>
81
82 <p>Third, it is assumed that you are using an
83 <strong>unmodified</strong> version of suEXEC code. All code
84 for suEXEC has been carefully scrutinized and tested by the
85 developers as well as numerous beta testers. Every precaution
86 has been taken to ensure a simple yet solidly safe base of
87 code. Altering this code can cause unexpected problems and new
88 security risks. It is <strong>highly</strong> recommended you
89 not alter the suEXEC code unless you are well versed in the
90 particulars of security programming and are willing to share
91 your work with the Apache HTTP Server development team for consideration.</p>
92
93 <p>Fourth, and last, it has been the decision of
94 the Apache HTTP Server development team to <strong>NOT</strong> make suEXEC part of
95 the default installation of Apache httpd. To this end, suEXEC
96 configuration requires of the administrator careful attention
97 to details. After due consideration has been given to the
98 various settings for suEXEC, the administrator may install
99 suEXEC through normal installation methods. The values for
100 these settings need to be carefully determined and specified by
101 the administrator to properly maintain system security during
102 the use of suEXEC functionality. It is through this detailed
103 process that we hope to limit suEXEC
104 installation only to those who are careful and determined
105 enough to use it.</p>
106
107 <p>Still with us? Yes? Good. Let's move on!</p>
108</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
109<div class="section">
110<h2><a name="model" id="model">suEXEC Security Model</a></h2>
111
112 <p>Before we begin configuring and installing
113 suEXEC, we will first discuss the security model you are about
114 to implement. By doing so, you may better understand what
115 exactly is going on inside suEXEC and what precautions are
116 taken to ensure your system's security.</p>
117
118 <p><strong>suEXEC</strong> is based on a setuid
119 "wrapper" program that is called by the main Apache HTTP Server.
120 This wrapper is called when an HTTP request is made for a CGI
121 or SSI program that the administrator has designated to run as
122 a userid other than that of the main server. When such a
123 request is made, Apache httpd provides the suEXEC wrapper with the
124 program's name and the user and group IDs under which the
125 program is to execute.</p>
126
127 <p>The wrapper then employs the following process
128 to determine success or failure -- if any one of these
129 conditions fail, the program logs the failure and exits with an
130 error, otherwise it will continue:</p>
131
132 <ol>
133 <li>
134 <strong>Is the user executing this wrapper a valid user of
135 this system?</strong>
136
137 <p class="indent">
138 This is to ensure that the user executing the wrapper is
139 truly a user of the system.
140 </p>
141 </li>
142
143 <li>
144 <strong>Was the wrapper called with the proper number of
145 arguments?</strong>
146
147 <p class="indent">
148 The wrapper will only execute if it is given the proper
149 number of arguments. The proper argument format is known
150 to the Apache HTTP Server. If the wrapper is not receiving
151 the proper number of arguments, it is either being
152 hacked, or there is something wrong with the suEXEC
153 portion of your Apache httpd binary.
154 </p>
155 </li>
156
157 <li>
158 <strong>Is this valid user allowed to run the
159 wrapper?</strong>
160
161 <p class="indent">
162 Is this user the user allowed to run this wrapper? Only
163 one user (the Apache user) is allowed to execute this
164 program.
165 </p>
166 </li>
167
168 <li>
169 <strong>Does the target CGI or SSI program have an unsafe
170 hierarchical reference?</strong>
171
172 <p class="indent">
173 Does the target CGI or SSI program's path contain a leading
174 '/' or have a '..' backreference? These are not allowed; the
175 target CGI/SSI program must reside within suEXEC's document
176 root (see <code>--with-suexec-docroot=<em>DIR</em></code>
177 below).
178 </p>
179 </li>
180
181 <li>
182 <strong>Is the target user name valid?</strong>
183
184 <p class="indent">
185 Does the target user exist?
186 </p>
187 </li>
188
189 <li>
190 <strong>Is the target group name valid?</strong>
191
192 <p class="indent">
193 Does the target group exist?
194 </p>
195 </li>
196
197 <li>
198 <strong>Is the target user <em>NOT</em> superuser?</strong>
199
200
201 <p class="indent">
202 suEXEC does not allow <code><em>root</em></code>
203 to execute CGI/SSI programs.
204 </p>
205 </li>
206
207 <li>
208 <strong>Is the target userid <em>ABOVE</em> the minimum ID
209 number?</strong>
210
211 <p class="indent">
212 The minimum user ID number is specified during
213 configuration. This allows you to set the lowest possible
214 userid that will be allowed to execute CGI/SSI programs.
215 This is useful to block out "system" accounts.
216 </p>
217 </li>
218
219 <li>
220 <strong>Is the target group <em>NOT</em> the superuser
221 group?</strong>
222
223 <p class="indent">
224 Presently, suEXEC does not allow the <code><em>root</em></code>
225 group to execute CGI/SSI programs.
226 </p>
227 </li>
228
229 <li>
230 <strong>Is the target groupid <em>ABOVE</em> the minimum ID
231 number?</strong>
232
233 <p class="indent">
234 The minimum group ID number is specified during
235 configuration. This allows you to set the lowest possible
236 groupid that will be allowed to execute CGI/SSI programs.
237 This is useful to block out "system" groups.
238 </p>
239 </li>
240
241 <li>
242 <strong>Can the wrapper successfully become the target user
243 and group?</strong>
244
245 <p class="indent">
246 Here is where the program becomes the target user and
247 group via setuid and setgid calls. The group access list
248 is also initialized with all of the groups of which the
249 user is a member.
250 </p>
251 </li>
252
253 <li>
254 <strong>Can we change directory to the one in which the target
255 CGI/SSI program resides?</strong>
256
257 <p class="indent">
258 If it doesn't exist, it can't very well contain files. If we
259 can't change directory to it, it might as well not exist.
260 </p>
261 </li>
262
263 <li>
264 <strong>Is the directory within the httpd webspace?</strong>
265
266 <p class="indent">
267 If the request is for a regular portion of the server, is
268 the requested directory within suEXEC's document root? If
269 the request is for a <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>, is the requested directory
270 within the directory configured as suEXEC's userdir (see
271 <a href="#install">suEXEC's configuration options</a>)?
272 </p>
273 </li>
274
275 <li>
276 <strong>Is the directory <em>NOT</em> writable by anyone
277 else?</strong>
278
279 <p class="indent">
280 We don't want to open up the directory to others; only
281 the owner user may be able to alter this directories
282 contents.
283 </p>
284 </li>
285
286 <li>
287 <strong>Does the target CGI/SSI program exist?</strong>
288
289 <p class="indent">
290 If it doesn't exists, it can't very well be executed.
291 </p>
292 </li>
293
294 <li>
295 <strong>Is the target CGI/SSI program <em>NOT</em> writable
296 by anyone else?</strong>
297
298 <p class="indent">
299 We don't want to give anyone other than the owner the
300 ability to change the CGI/SSI program.
301 </p>
302 </li>
303
304 <li>
305 <strong>Is the target CGI/SSI program <em>NOT</em> setuid or
306 setgid?</strong>
307
308 <p class="indent">
309 We do not want to execute programs that will then change
310 our UID/GID again.
311 </p>
312 </li>
313
314 <li>
315 <strong>Is the target user/group the same as the program's
316 user/group?</strong>
317
318 <p class="indent">
319 Is the user the owner of the file?
320 </p>
321 </li>
322
323 <li>
324 <strong>Can we successfully clean the process environment
325 to ensure safe operations?</strong>
326
327 <p class="indent">
328 suEXEC cleans the process' environment by establishing a
329 safe execution PATH (defined during configuration), as
330 well as only passing through those variables whose names
331 are listed in the safe environment list (also created
332 during configuration).
333 </p>
334 </li>
335
336 <li>
337 <strong>Can we successfully become the target CGI/SSI program
338 and execute?</strong>
339
340 <p class="indent">
341 Here is where suEXEC ends and the target CGI/SSI program begins.
342 </p>
343 </li>
344 </ol>
345
346 <p>This is the standard operation of the
347 suEXEC wrapper's security model. It is somewhat stringent and
348 can impose new limitations and guidelines for CGI/SSI design,
349 but it was developed carefully step-by-step with security in
350 mind.</p>
351
352 <p>For more information as to how this security
353 model can limit your possibilities in regards to server
354 configuration, as well as what security risks can be avoided
355 with a proper suEXEC setup, see the <a href="#jabberwock">"Beware the Jabberwock"</a> section of this
356 document.</p>
357</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
358<div class="section">
359<h2><a name="install" id="install">Configuring &amp; Installing
360 suEXEC</a></h2>
361
362 <p>Here's where we begin the fun.</p>
363
364 <p><strong>suEXEC configuration
365 options</strong><br />
366 </p>
367
368 <dl>
369 <dt><code>--enable-suexec</code></dt>
370
371 <dd>This option enables the suEXEC feature which is never
372 installed or activated by default. At least one
373 <code>--with-suexec-xxxxx</code> option has to be provided
374 together with the <code>--enable-suexec</code> option to let
375 APACI accept your request for using the suEXEC feature.</dd>
376
377 <dt><code>--with-suexec-bin=<em>PATH</em></code></dt>
378
379 <dd>The path to the <code>suexec</code> binary must be hard-coded
380 in the server for security reasons. Use this option to override
381 the default path. <em>e.g.</em>
382 <code>--with-suexec-bin=/usr/sbin/suexec</code></dd>
383
384 <dt><code>--with-suexec-caller=<em>UID</em></code></dt>
385
386 <dd>The <a href="mod/mpm_common.html#user">username</a> under which
387 httpd normally runs. This is the only user allowed to
388 execute the suEXEC wrapper.</dd>
389
390 <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt>
391
392 <dd>Define to be the subdirectory under users' home
393 directories where suEXEC access should be allowed. All
394 executables under this directory will be executable by suEXEC
395 as the user so they should be "safe" programs. If you are
396 using a "simple" <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>
397 directive (ie. one without a "*" in it) this should be set to the same
398 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
399 a location that is not the same as the user's home directory
400 as referenced in the <code>passwd</code> file. Default value is
401 "<code>public_html</code>".<br />
402 If you have virtual hosts with a different <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> for each,
403 you will need to define them to all reside in one parent
404 directory; then name that parent directory here. <strong>If
405 this is not defined properly, "~userdir" cgi requests will
406 not work!</strong></dd>
407
408 <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt>
409
410 <dd>Define as the DocumentRoot set for httpd. This will be
411 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
412 default directory is the <code>--datadir</code> value with the suffix
413 "<code>/htdocs</code>", <em>e.g.</em> if you configure with
414 "<code>--datadir=/home/apache</code>" the directory
415 "<code>/home/apache/htdocs</code>" is used as document root for the
416 suEXEC wrapper.</dd>
417
418 <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>
419
420 <dd>Define this as the lowest UID allowed to be a target user
421 for suEXEC. For most systems, 500 or 100 is common. Default
422 value is 100.</dd>
423
424 <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>
425
426 <dd>Define this as the lowest GID allowed to be a target
427 group for suEXEC. For most systems, 100 is common and
428 therefore used as default value.</dd>
429
430 <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt>
431
432 <dd>This defines the filename to which all suEXEC
433 transactions and errors are logged (useful for auditing and
434 debugging purposes). By default the logfile is named
435 "<code>suexec_log</code>" and located in your standard logfile
436 directory (<code>--logfiledir</code>).</dd>
437
438 <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt>
439
440 <dd>Define a safe PATH environment to pass to CGI
441 executables. Default value is
442 "<code>/usr/local/bin:/usr/bin:/bin</code>".</dd>
443 </dl>
444
445 <h3>Compiling and installing the suEXEC wrapper</h3>
446
447
448 <p>If you have enabled the suEXEC feature with the
449 <code>--enable-suexec</code> option the <code>suexec</code> binary
450 (together with httpd itself) is automatically built if you execute
451 the <code>make</code> command.</p>
452
453 <p>After all components have been built you can execute the
454 command <code>make install</code> to install them. The binary image
455 <code>suexec</code> is installed in the directory defined by the
456 <code>--sbindir</code> option. The default location is
457 "/usr/local/apache2/bin/suexec".</p>
458
459 <p>Please note that you need <strong><em>root
460 privileges</em></strong> for the installation step. In order
461 for the wrapper to set the user ID, it must be installed as
462 owner <code><em>root</em></code> and must have the setuserid
463 execution bit set for file modes.</p>
464
465
466 <h3>Setting paranoid permissions</h3>
467
468
469 <p>Although the suEXEC wrapper will check to ensure that its
470 caller is the correct user as specified with the
471 <code>--with-suexec-caller</code> <code class="program"><a href="./programs/configure.html">configure</a></code>
472 option, there is
473 always the possibility that a system or library call suEXEC uses
474 before this check may be exploitable on your system. To counter
475 this, and because it is best-practise in general, you should use
476 filesystem permissions to ensure that only the group httpd
477 runs as may execute suEXEC.</p>
478
479 <p>If for example, your web server is configured to run as:</p>
480
481 <pre class="prettyprint lang-config">User www
482Group webgroup</pre>
483
484
485 <p>and <code class="program"><a href="./programs/suexec.html">suexec</a></code> is installed at
486 "/usr/local/apache2/bin/suexec", you should run:</p>
487
488 <div class="example"><p><code>
489 chgrp webgroup /usr/local/apache2/bin/suexec<br />
490 chmod 4750 /usr/local/apache2/bin/suexec<br />
491 </code></p></div>
492
493 <p>This will ensure that only the group httpd runs as can even
494 execute the suEXEC wrapper.</p>
495
496</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
497<div class="section">
498<h2><a name="enable" id="enable">Enabling &amp; Disabling
499 suEXEC</a></h2>
500
501 <p>Upon startup of httpd, it looks for the file
502 <code class="program"><a href="./programs/suexec.html">suexec</a></code> in the directory defined by the
503 <code>--sbindir</code> option (default is
504 "/usr/local/apache/sbin/suexec"). If httpd finds a properly
505 configured suEXEC wrapper, it will print the following message
506 to the error log:</p>
507
508<div class="example"><p><code>
509 [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>)
510</code></p></div>
511
512 <p>If you don't see this message at server startup, the server is
513 most likely not finding the wrapper program where it expects
514 it, or the executable is not installed <em>setuid root</em>.</p>
515
516 <p>If you want to enable the suEXEC mechanism for the first time
517 and an Apache HTTP Server is already running you must kill and
518 restart httpd. Restarting it with a simple HUP or USR1 signal
519 will not be enough. </p>
520 <p>If you want to disable suEXEC you should kill and restart
521 httpd after you have removed the <code class="program"><a href="./programs/suexec.html">suexec</a></code> file.</p>
522</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
523<div class="section">
524<h2><a name="usage" id="usage">Using suEXEC</a></h2>
525
526 <p>Requests for CGI programs will call the suEXEC wrapper only if
527 they are for a virtual host containing a <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive or if
528 they are processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>.</p>
529
530 <p><strong>Virtual Hosts:</strong><br /> One way to use the suEXEC
531 wrapper is through the <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive in
532 <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> definitions. By
533 setting this directive to values different from the main server
534 user ID, all requests for CGI resources will be executed as the
535 <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
536 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
537 is assumed.</p>
538
539 <p><strong>User directories:</strong><br /> Requests that are
540 processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> will call the suEXEC
541 wrapper to execute CGI programs under the userid of the requested
542 user directory. The only requirement needed for this feature to
543 work is for CGI execution to be enabled for the user and that the
544 script must meet the scrutiny of the <a href="#model">security
545 checks</a> above. See also the
546 <code>--with-suexec-userdir</code> <a href="#install">compile
547 time option</a>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
548<div class="section">
549<h2><a name="debug" id="debug">Debugging suEXEC</a></h2>
550
551 <p>The suEXEC wrapper will write log information
552 to the file defined with the <code>--with-suexec-logfile</code>
553 option as indicated above. If you feel you have configured and
554 installed the wrapper properly, have a look at this log and the
555 error_log for the server to see where you may have gone astray.</p>
556
557</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
558<div class="section">
559<h2><a name="jabberwock" id="jabberwock">Beware the Jabberwock:
560 Warnings &amp; Examples</a></h2>
561
562 <p><strong>NOTE!</strong> This section may not be
563 complete. For the latest revision of this section of the
564 documentation, see the <a href="http://httpd.apache.org/docs/2.4/suexec.html">Online
565 Documentation</a> version.</p>
566
567 <p>There are a few points of interest regarding
568 the wrapper that can cause limitations on server setup. Please
569 review these before submitting any "bugs" regarding suEXEC.</p>
570
571 <ul>
572 <li><strong>suEXEC Points Of Interest</strong></li>
573
574 <li>
575 Hierarchy limitations
576
577 <p class="indent">
578 For security and efficiency reasons, all suEXEC requests
579 must remain within either a top-level document root for
580 virtual host requests, or one top-level personal document
581 root for userdir requests. For example, if you have four
582 VirtualHosts configured, you would need to structure all
583 of your VHosts' document roots off of one main httpd
584 document hierarchy to take advantage of suEXEC for
585 VirtualHosts. (Example forthcoming.)
586 </p>
587 </li>
588
589 <li>
590 suEXEC's PATH environment variable
591
592 <p class="indent">
593 This can be a dangerous thing to change. Make certain
594 every path you include in this define is a
595 <strong>trusted</strong> directory. You don't want to
596 open people up to having someone from across the world
597 running a trojan horse on them.
598 </p>
599 </li>
600
601 <li>
602 Altering the suEXEC code
603
604 <p class="indent">
605 Again, this can cause <strong>Big Trouble</strong> if you
606 try this without knowing what you are doing. Stay away
607 from it if at all possible.
608 </p>
609 </li>
610 </ul>
611
612</div></div>
613<div class="bottomlang">
614<p><span>Available Languages: </span><a href="./en/suexec.html" title="English">&nbsp;en&nbsp;</a> |
615<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
616<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
617<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
618<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
619</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>
620<script type="text/javascript"><!--//--><![CDATA[//><!--
621var comments_shortname = 'httpd';
622var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html';
623(function(w, d) {
624 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
625 d.write('<div id="comments_thread"><\/div>');
626 var s = d.createElement('script');
627 s.type = 'text/javascript';
628 s.async = true;
629 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
630 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
631 }
632 else {
633 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
634 }
635})(window, document);
636//--><!]]></script></div><div id="footer">
637<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>
638<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[//><!--
639if (typeof(prettyPrint) !== 'undefined') {
640 prettyPrint();
641}
642//--><!]]></script>
643</body></html>
0\ No newline at end of file644\ No newline at end of file
diff --git a/docs/manual/suexec.html.fr b/docs/manual/suexec.html.fr
1new file mode 100644645new file mode 100644
index 0000000..97e7a37
--- /dev/null
+++ b/docs/manual/suexec.html.fr
@@ -0,0 +1,689 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5<!--
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9 -->
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches