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

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

Description of the change

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

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

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

DEP8 tests pass.

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

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

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

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

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

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

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

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

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

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

Forgot status update - needs fixing for now

review: Needs Fixing
afba5f5... by Andreas Hasenack

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

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

Thanks for catching the systemd delta, definitely a drop.

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

Going to check test-apache2.py now.

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

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

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

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

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

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

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

OK

  GET (no credentials)

real 7m12.959s

Please re-review, thanks

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

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

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

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

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

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

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

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

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

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

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

Tests were good, so I uploaded.

466ac4c... by Andreas Hasenack

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

17d0c34... by Andreas Hasenack

merge-changelogs

0b664b4... by Andreas Hasenack

reconstruct-changelog

f56d4ee... by Andreas Hasenack

update-maintainer

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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 b5be286..a4fabd9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,68 @@
1apache2 (2.4.33-3ubuntu1) cosmic; urgency=medium
2
3 * Merge with Debian unstable (LP: #1770242). 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 * Drop:
14 - SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
15 + debian/patches/CVE-2017-15710.patch: fix language long names
16 detection as short name in modules/aaa/mod_authnz_ldap.c.
17 + CVE-2017-15710
18 - SECURITY UPDATE: incorrect <FilesMatch> matching
19 + debian/patches/CVE-2017-15715.patch: allow to configure
20 global/default options for regexes, like caseless matching or
21 extended format in include/ap_regex.h, server/core.c,
22 server/util_pcre.c.
23 + CVE-2017-15715
24 - SECURITY UPDATE: mod_session header manipulation
25 + debian/patches/CVE-2018-1283.patch: strip Session header when
26 SessionEnv is on in modules/session/mod_session.c.
27 + CVE-2018-1283
28 - SECURITY UPDATE: DoS via specially-crafted request
29 + debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
30 terminated on any error, not only on buffer full in
31 server/protocol.c.
32 + CVE-2018-1301
33 - SECURITY UPDATE: mod_cache_socache DoS
34 + debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
35 to carriage return in modules/cache/mod_cache_socache.c.
36 + CVE-2018-1303
37 - SECURITY UPDATE: insecure nonce generation
38 + debian/patches/CVE-2018-1312.patch: actually use the secret when
39 generating nonces in modules/aaa/mod_auth_digest.c.
40 + CVE-2018-1312
41 - Correct systemd-sysv-generator behavior by customizing some
42 parameters:
43 + d/apache2-systemd.conf: add a drop-in file to specify some
44 parameters for the systemd unit (type=Forking and
45 RemainsAfterExit=no), this allow a correct state synchronisation
46 between systemctl status and actual state of apache2 daemon.
47 + d/apache2.install: place the apache2-systemd.conf file in the
48 correct location.
49 [type=Forking already in the base systemd service file, and
50 RemainsAfterExit=no is the default value, so no need to
51 customize these anymore.]
52 - Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP #1752683)
53 + added debian/patches/util_ldap_cache_lock_fix.patch
54 [Already applied upstream]
55 * Added changes:
56 - d/control, d/rules: Don't build libapache2-mod-proxy-uwsgi and
57 libapache2-mod-md until we figure out their transitions.
58 libapache2-mod-md in particular is problematic because that makes
59 apache2-bin pull in libcurl4 which cannot be coinstalled with libcurl3.
60 That situation breaks the installation of libapache2-mod-shib2. See
61 https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1770242/comments/1
62 for details.
63
64 -- Andreas Hasenack <andreas@canonical.com> Thu, 17 May 2018 11:12:08 -0300
65
1apache2 (2.4.33-3) unstable; urgency=medium66apache2 (2.4.33-3) unstable; urgency=medium
267
3 * Add Breaks for libapache2-mod-proxy-uwsgi and libapache2-mod-md, too.68 * Add Breaks for libapache2-mod-proxy-uwsgi and libapache2-mod-md, too.
@@ -70,6 +135,91 @@ apache2 (2.4.29-2) unstable; urgency=medium
70135
71 -- Ondřej Surý <ondrej@debian.org> Sun, 14 Jan 2018 11:01:58 +0000136 -- Ondřej Surý <ondrej@debian.org> Sun, 14 Jan 2018 11:01:58 +0000
72137
138apache2 (2.4.29-1ubuntu4.1) bionic-security; urgency=medium
139
140 * SECURITY UPDATE: DoS via missing header with AuthLDAPCharsetConfig
141 - debian/patches/CVE-2017-15710.patch: fix language long names
142 detection as short name in modules/aaa/mod_authnz_ldap.c.
143 - CVE-2017-15710
144 * SECURITY UPDATE: incorrect <FilesMatch> matching
145 - debian/patches/CVE-2017-15715.patch: allow to configure
146 global/default options for regexes, like caseless matching or
147 extended format in include/ap_regex.h, server/core.c,
148 server/util_pcre.c.
149 - CVE-2017-15715
150 * SECURITY UPDATE: mod_session header manipulation
151 - debian/patches/CVE-2018-1283.patch: strip Session header when
152 SessionEnv is on in modules/session/mod_session.c.
153 - CVE-2018-1283
154 * SECURITY UPDATE: DoS via specially-crafted request
155 - debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
156 terminated on any error, not only on buffer full in
157 server/protocol.c.
158 - CVE-2018-1301
159 * SECURITY UPDATE: mod_cache_socache DoS
160 - debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
161 to carriage return in modules/cache/mod_cache_socache.c.
162 - CVE-2018-1303
163 * SECURITY UPDATE: insecure nonce generation
164 - debian/patches/CVE-2018-1312.patch: actually use the secret when
165 generating nonces in modules/aaa/mod_auth_digest.c.
166 - CVE-2018-1312
167
168 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 25 Apr 2018 07:38:24 -0400
169
170apache2 (2.4.29-1ubuntu4) bionic; urgency=medium
171
172 * Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP: #1752683)
173 - added debian/patches/util_ldap_cache_lock_fix.patch
174
175 -- Rafael David Tinoco <rafael.tinoco@canonical.com> Fri, 02 Mar 2018 02:19:31 +0000
176
177apache2 (2.4.29-1ubuntu3) bionic; urgency=medium
178
179 * Switch back to OpenSSL 1.1.
180
181 -- Dimitri John Ledkov <xnox@ubuntu.com> Tue, 06 Feb 2018 11:57:20 +0000
182
183apache2 (2.4.29-1ubuntu2) bionic; urgency=medium
184
185 * enable http2 (LP: #1687454) by stopping to disable it
186 - debian/control: no more removed libnghttp2-dev Build-Depends (in universe).
187 - debian/config-dir/mods-available/http2.load: no more removed.
188 - debian/rules: no more removed proxy_http2 from configure.
189 * d/t/control, d/t/check-http2: add basic test for http2 support
190
191 -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 05 Dec 2017 17:25:39 +0100
192
193apache2 (2.4.29-1ubuntu1) bionic; urgency=medium
194
195 * Merge with Debian unstable. Remaining changes:
196 - debian/{control, apache2.install, apache2-utils.ufw.profile,
197 apache2.dirs}: Add ufw profiles.
198 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
199 - debian/patches/086_svn_cross_compiles: Backport several cross
200 fixes from upstream
201 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
202 Debian with Ubuntu on default page.
203 + d/source/include-binaries: add Ubuntu icon file
204 - Correct systemd-sysv-generator behavior by customizing some
205 parameters:
206 + d/apache2-systemd.conf: add a drop-in file to specify some
207 parameters for the systemd unit (type=Forking and
208 RemainsAfterExit=no), this allow a correct state synchronisation
209 between systemctl status and actual state of apache2 daemon.
210 + d/apache2.install: place the apache2-systemd.conf file in the
211 correct location.
212 - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
213 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
214 + debian/config-dir/mods-available/http2.load: removed.
215 + debian/rules: removed proxy_http2 from configure.
216 * Switch back to OpenSSL 1.0 as we don't yet have 1.1:
217 - debian/control: switch BuildDepends to libssl1.0-dev
218 - debian/control: remove Breaks on gridsite and libapache2-mod-dacs
219 - debian/rules: remove openssl virtual package and logic
220
221 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 10 Nov 2017 10:51:46 -0500
222
73apache2 (2.4.29-1) unstable; urgency=medium223apache2 (2.4.29-1) unstable; urgency=medium
74224
75 [ Stefan Fritsch ]225 [ Stefan Fritsch ]
@@ -134,6 +284,47 @@ apache2 (2.4.27-3) experimental; urgency=medium
134284
135 -- Stefan Fritsch <sf@debian.org> Sun, 16 Jul 2017 23:11:07 +0200285 -- Stefan Fritsch <sf@debian.org> Sun, 16 Jul 2017 23:11:07 +0200
136286
287apache2 (2.4.27-2ubuntu3) artful; urgency=medium
288
289 * SECURITY UPDATE: optionsbleed information leak
290 - debian/patches/CVE-2017-9798.patch: disallow method registration
291 at run time in server/core.c.
292 - CVE-2017-9798
293
294 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Sep 2017 11:05:48 -0400
295
296apache2 (2.4.27-2ubuntu2) artful; urgency=medium
297
298 * Undrop (LP 1658469):
299 - Don't build http2 module (nghttp2 still not in main) (LP 1687454)
300 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
301 + debian/config-dir/mods-available/http2.load: removed.
302 + debian/rules: removed proxy_http2 from configure.
303
304 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 02 Aug 2017 13:04:45 -0400
305
306apache2 (2.4.27-2ubuntu1) artful; urgency=medium
307
308 * Merge with Debian unstable (LP: #1702582). Remaining changes:
309 - debian/{control, apache2.install, apache2-utils.ufw.profile,
310 apache2.dirs}: Add ufw profiles.
311 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
312 - debian/patches/086_svn_cross_compiles: Backport several cross
313 fixes from upstream
314 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
315 Debian with Ubuntu on default page.
316 + d/source/include-binaries: add Ubuntu icon file
317 - Correct systemd-sysv-generator behavior by customizing some
318 parameters:
319 + d/apache2-systemd.conf: add a drop-in file to specify some
320 parameters for the systemd unit (type=Forking and
321 RemainsAfterExit=no), this allow a correct state synchronisation
322 between systemctl status and actual state of apache2 daemon.
323 + d/apache2.install: place the apache2-systemd.conf file in the
324 correct location.
325
326 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 27 Jul 2017 13:38:39 -0700
327
137apache2 (2.4.27-2) unstable; urgency=medium328apache2 (2.4.27-2) unstable; urgency=medium
138329
139 * Switch back to openssl 1.0 for now. The transition to 1.1 needs more330 * Switch back to openssl 1.0 for now. The transition to 1.1 needs more
@@ -163,6 +354,55 @@ apache2 (2.4.25-4) unstable; urgency=high
163354
164 -- Stefan Fritsch <sf@debian.org> Tue, 20 Jun 2017 21:31:51 +0200355 -- Stefan Fritsch <sf@debian.org> Tue, 20 Jun 2017 21:31:51 +0200
165356
357apache2 (2.4.25-3ubuntu3) artful; urgency=medium
358
359 * Re-Drop (LP: #1658469):
360 - Don't build experimental http2 module for LTS:
361 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
362 + debian/config-dir/mods-available/http2.load: removed.
363 + debian/rules: removed proxy_http2 from configure.
364 + debian/apache2.maintscript: remove http2 conffile.
365
366 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Mon, 01 May 2017 09:55:11 -0700
367
368apache2 (2.4.25-3ubuntu2) zesty; urgency=medium
369 * Undrop (LP 1658469):
370 - Don't build experimental http2 module for LTS:
371 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
372 + debian/config-dir/mods-available/http2.load: removed.
373 + debian/rules: removed proxy_http2 from configure.
374 + debian/apache2.maintscript: remove http2 conffile.
375
376 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 10 Feb 2017 08:53:43 -0800
377
378apache2 (2.4.25-3ubuntu1) zesty; urgency=medium
379
380 * Merge from Debian unstable (LP: #1663425). Remaining changes:
381 - debian/{control, apache2.install, apache2-utils.ufw.profile,
382 apache2.dirs}: Add ufw profiles.
383 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
384 - debian/patches/086_svn_cross_compiles: Backport several cross
385 fixes from upstream
386 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
387 Debian with Ubuntu on default page.
388 + d/source/include-binaries: add Ubuntu icon file
389 - Correct systemd-sysv-generator behavior by customizing some
390 parameters:
391 + d/apache2-systemd.conf: add a drop-in file to specify some
392 parameters for the systemd unit (type=Forking and
393 RemainsAfterExit=no), this allow a correct state synchronisation
394 between systemctl status and actual state of apache2 daemon.
395 + d/apache2.install: place the apache2-systemd.conf file in the
396 correct location.
397 * Drop (LP: #1658469):
398 - Don't build experimental http2 module for LTS:
399 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
400 + debian/config-dir/mods-available/http2.load: removed.
401 + debian/rules: removed proxy_http2 from configure.
402 + debian/apache2.maintscript: remove http2 conffile.
403
404 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Thu, 09 Feb 2017 15:48:28 -0800
405
166apache2 (2.4.25-3) unstable; urgency=medium406apache2 (2.4.25-3) unstable; urgency=medium
167407
168 * Fix detection of systemd to fix 'apache2ctl start' on sysv-init.408 * Fix detection of systemd to fix 'apache2ctl start' on sysv-init.
@@ -224,6 +464,39 @@ apache2 (2.4.25-1) unstable; urgency=medium
224464
225 -- Stefan Fritsch <sf@debian.org> Wed, 21 Dec 2016 23:46:06 +0100465 -- Stefan Fritsch <sf@debian.org> Wed, 21 Dec 2016 23:46:06 +0100
226466
467apache2 (2.4.23-8ubuntu1) zesty; urgency=medium
468
469 * Merge from Debian unstable (LP: #). Remaining changes:
470 - debian/{control, apache2.install, apache2-utils.ufw.profile,
471 apache2.dirs}: Add ufw profiles.
472 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
473 - debian/patches/086_svn_cross_compiles: Backport several cross
474 fixes from upstream
475 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm,
476 d/source/include-binaries: replace Debian with Ubuntu on default
477 page.
478 [ include-binaries change previously undocumented ]
479 - Don't build experimental http2 module for LTS:
480 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
481 + debian/config-dir/mods-available/http2.load: removed.
482 + debian/rules: removed proxy_http2 from configure.
483 + debian/apache2.maintscript: remove http2 conffile.
484 [ Previously undocumented ]
485 - Correct systemd-sysv-generator behavior by customizing some
486 parameters:
487 + d/apache2-systemd.conf: add a drop-in file to specify some
488 parameters for the systemd unit (type=Forking and
489 RemainsAfterExit=no), this allow a correct state synchronisation
490 between systemctl status and actual state of apache2 daemon.
491 + d/apache2.install: place the apache2-systemd.conf file in the
492 correct location.
493 * Drop:
494 - debian/rules: Fix cross-building by passing
495 DEB_{HOST,BUILD}_GNU_TYPE to configure.
496 [ Incorrectly indicated as delta, fixed by Debian in 2.4.18-2 ]
497
498 -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Fri, 09 Dec 2016 11:02:38 +0100
499
227apache2 (2.4.23-8) unstable; urgency=medium500apache2 (2.4.23-8) unstable; urgency=medium
228501
229 * Move the mod_ssl_openssl.h header and the dependency on libssl-dev to a502 * Move the mod_ssl_openssl.h header and the dependency on libssl-dev to a
@@ -234,6 +507,33 @@ apache2 (2.4.23-8) unstable; urgency=medium
234507
235 -- Stefan Fritsch <sf@debian.org> Sun, 20 Nov 2016 00:33:13 +0100508 -- Stefan Fritsch <sf@debian.org> Sun, 20 Nov 2016 00:33:13 +0100
236509
510apache2 (2.4.23-7ubuntu1) zesty; urgency=medium
511
512 * Merge from Debian unstable. Remaining changes:
513 - debian/{control, apache2.install, apache2-utils.ufw.profile,
514 apache2.dirs}: Add ufw profiles.
515 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
516 - debian/rules: Fix cross-building by passing
517 DEB_{HOST,BUILD}_GNU_TYPE to configure.
518 - debian/patches/086_svn_cross_compiles: Backport several cross
519 fixes from upstream
520 - d/index.html, d/icons/ubuntu-logo.png, d/apache2.postrm: replace
521 Debian with Ubuntu on default page.
522 - Don't build experimental http2 module for LTS:
523 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
524 + debian/config-dir/mods-available/http2.load: removed.
525 + debian/rules: removed proxy_http2 from configure.
526 - Correct systemd-sysv-generator behavior by customizing some
527 parameters:
528 + d/apache2-systemd.conf: add a drop-in file to specify some
529 parameters for the systemd unit (type=Forking and
530 RemainsAfterExit=no), this allow a correct state synchronisation
531 between systemctl status and actual state of apache2 daemon.
532 + d/apache2.install: place the apache2-systemd.conf file in the
533 correct location.
534
535 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 16 Nov 2016 09:17:24 -0500
536
237apache2 (2.4.23-7) unstable; urgency=medium537apache2 (2.4.23-7) unstable; urgency=medium
238538
239 * Make apache2-dev depend on openssl 1.0, too. Closes: #844160539 * Make apache2-dev depend on openssl 1.0, too. Closes: #844160
@@ -348,6 +648,55 @@ apache2 (2.4.20-1) unstable; urgency=medium
348648
349 -- Stefan Fritsch <sf@debian.org> Sun, 10 Apr 2016 14:03:41 +0200649 -- Stefan Fritsch <sf@debian.org> Sun, 10 Apr 2016 14:03:41 +0200
350650
651apache2 (2.4.18-2ubuntu4) yakkety; urgency=medium
652
653 * SECURITY UPDATE: proxy request header vulnerability (httpoxy)
654 - debian/patches/CVE-2016-5387.patch: don't pass through HTTP_PROXY in
655 server/util_script.c.
656 - CVE-2016-5387
657
658 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 18 Jul 2016 14:32:02 -0400
659
660apache2 (2.4.18-2ubuntu3) xenial; urgency=medium
661
662 [ Ryan Harper ]
663 * Drop /etc/apache2/mods-available/http2.load. This was inadvertently
664 introduced in 2.4.18-2ubuntu1. The intention is to not carry this at
665 all, since http2 support is intentionally disabled (see LP 1531864).
666 * d/apache2.maintscript: handle removal of http2.load conffile.
667
668 [ Robie Basak ]
669 * Re-write Ryan's changelog entry.
670
671 -- Robie Basak <robie.basak@ubuntu.com> Fri, 15 Apr 2016 18:00:57 +0000
672
673apache2 (2.4.18-2ubuntu2) xenial; urgency=medium
674
675 * Correct systemd-sysv-generator behavior by customizing some parameters (LP: #1488962)
676 - d/apache2-systemd.conf: add a drop-in file to specify some parameters for the systemd
677 unit (type=Forking and RemainsAfterExit=no), this allow a correct state synchronisation
678 between systemctl status and actual state of apache2 daemon.
679 - d/apache2.install: place the apache2-systemd.conf file in the correct location.
680
681 -- Pierre-André MOREY <pierre-andre.morey@canonical.com> Fri, 08 Apr 2016 11:48:00 +0200
682
683apache2 (2.4.18-2ubuntu1) xenial; urgency=medium
684
685 * Merge from Debian unstable. Remaining changes:
686 - debian/{control, apache2.install, apache2-utils.ufw.profile,
687 apache2.dirs}: Add ufw profiles.
688 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
689 - debian/rules: Fix cross-building by passing
690 DEB_{HOST,BUILD}_GNU_TYPE to configure.
691 - debian/patches/086_svn_cross_compiles: Backport several cross
692 fixes from upstream
693 - d/index.html: replace Debian with Ubuntu on default page.
694 - Don't build experimental http2 module for LTS:
695 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
696 + debian/config-dir/mods-available/http2.load: removed.
697
698 -- Timo Aaltonen <tjaalton@debian.org> Wed, 06 Apr 2016 00:18:31 +0300
699
351apache2 (2.4.18-2) unstable; urgency=low700apache2 (2.4.18-2) unstable; urgency=low
352701
353 * htcacheclean:702 * htcacheclean:
@@ -373,6 +722,24 @@ apache2 (2.4.18-2) unstable; urgency=low
373722
374 -- Stefan Fritsch <sf@debian.org> Mon, 28 Mar 2016 21:58:54 +0200723 -- Stefan Fritsch <sf@debian.org> Mon, 28 Mar 2016 21:58:54 +0200
375724
725apache2 (2.4.18-1ubuntu1) xenial; urgency=medium
726
727 * Merge from Debian unstable. Remaining changes:
728 - debian/{control, apache2.install, apache2-utils.ufw.profile,
729 apache2.dirs}: Add ufw profiles.
730 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
731 - Add dep8 tests.
732 - debian/rules: Fix cross-building by passing
733 DEB_{HOST,BUILD}_GNU_TYPE to configure.
734 - debian/patches/086_svn_cross_compiles: Backport several cross
735 fixes from upstream
736 - d/index.html: replace Debian with Ubuntu on default page.
737 - Don't build experimental http2 module for LTS:
738 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
739 + debian/config-dir/mods-available/http2.load: removed.
740
741 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 21 Jan 2016 15:15:22 -0500
742
376apache2 (2.4.18-1) unstable; urgency=medium743apache2 (2.4.18-1) unstable; urgency=medium
377744
378 * New upstream release:745 * New upstream release:
@@ -380,12 +747,48 @@ apache2 (2.4.18-1) unstable; urgency=medium
380747
381 -- Stefan Fritsch <sf@debian.org> Sat, 19 Dec 2015 09:26:14 +0100748 -- Stefan Fritsch <sf@debian.org> Sat, 19 Dec 2015 09:26:14 +0100
382749
750apache2 (2.4.17-3ubuntu1) xenial; urgency=medium
751
752 * Merge from Debian unstable. Remaining changes:
753 - debian/{control, apache2.install, apache2-utils.ufw.profile,
754 apache2.dirs}: Add ufw profiles.
755 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
756 - Add dep8 tests.
757 - debian/rules: Fix cross-building by passing
758 DEB_{HOST,BUILD}_GNU_TYPE to configure.
759 - debian/patches/086_svn_cross_compiles: Backport several cross
760 fixes from upstream
761 - d/index.html: replace Debian with Ubuntu on default page.
762 - Don't build experimental http2 module for LTS:
763 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
764 + debian/config-dir/mods-available/http2.load: removed.
765
766 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 03 Dec 2015 10:07:35 -0500
767
383apache2 (2.4.17-3) unstable; urgency=medium768apache2 (2.4.17-3) unstable; urgency=medium
384769
385 * mpm_prefork: Fix segfault if started with -X. Closes: #805737770 * mpm_prefork: Fix segfault if started with -X. Closes: #805737
386771
387 -- Stefan Fritsch <sf@debian.org> Mon, 23 Nov 2015 19:52:09 +0100772 -- Stefan Fritsch <sf@debian.org> Mon, 23 Nov 2015 19:52:09 +0100
388773
774apache2 (2.4.17-2ubuntu1) xenial; urgency=medium
775
776 * Merge from Debian unstable. Remaining changes:
777 - debian/{control, apache2.install, apache2-utils.ufw.profile,
778 apache2.dirs}: Add ufw profiles.
779 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
780 - Add dep8 tests.
781 - debian/rules: Fix cross-building by passing
782 DEB_{HOST,BUILD}_GNU_TYPE to configure.
783 - debian/patches/086_svn_cross_compiles: Backport several cross
784 fixes from upstream
785 - d/index.html: replace Debian with Ubuntu on default page.
786 - Don't build experimental http2 module for LTS:
787 + debian/control: removed libnghttp2-dev Build-Depends (in universe).
788 + debian/config-dir/mods-available/http2.load: removed.
789
790 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 20 Nov 2015 09:11:52 -0500
791
389apache2 (2.4.17-2) unstable; urgency=medium792apache2 (2.4.17-2) unstable; urgency=medium
390793
391 * Revert REDIRECT_URL to pre-2.4.17 behavior for now. The change broke794 * Revert REDIRECT_URL to pre-2.4.17 behavior for now. The change broke
@@ -396,6 +799,31 @@ apache2 (2.4.17-2) unstable; urgency=medium
396799
397 -- Stefan Fritsch <sf@debian.org> Sat, 31 Oct 2015 23:17:11 +0100800 -- Stefan Fritsch <sf@debian.org> Sat, 31 Oct 2015 23:17:11 +0100
398801
802apache2 (2.4.17-1ubuntu1) xenial; urgency=medium
803
804 * Merge from Debian unstable. Remaining changes:
805 - debian/{control, apache2.install, apache2-utils.ufw.profile,
806 apache2.dirs}: Add ufw profiles.
807 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
808 - Add dep8 tests.
809 - debian/rules: Fix cross-building by passing
810 DEB_{HOST,BUILD}_GNU_TYPE to configure.
811 - debian/patches/086_svn_cross_compiles: Backport several cross
812 fixes from upstream
813 - d/index.html: replace Debian with Ubuntu on default page.
814 * Drop patches (applied upstream):
815 - debian/patches/CVE-2015-3183.patch
816 - debian/patches/CVE-2015-3185.patch
817 * Drop changes (adopted in Debian):
818 - Allow "triggers-awaited" and "triggers-pending" states in addition
819 to "installed" when determining whether to defer actions or
820 process deferred actions.
821 * Don't build experimental http2 module for LTS
822 - debian/control: removed libnghttp2-dev Build-Depends (in universe).
823 - debian/config-dir/mods-available/http2.load: removed.
824
825 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 30 Oct 2015 09:35:46 -0400
826
399apache2 (2.4.17-1) unstable; urgency=medium827apache2 (2.4.17-1) unstable; urgency=medium
400828
401 [ Stefan Fritsch ]829 [ Stefan Fritsch ]
@@ -461,6 +889,49 @@ apache2 (2.4.16-1) unstable; urgency=medium
461889
462 -- Stefan Fritsch <sf@debian.org> Sun, 02 Aug 2015 00:44:07 +0200890 -- Stefan Fritsch <sf@debian.org> Sun, 02 Aug 2015 00:44:07 +0200
463891
892apache2 (2.4.12-2ubuntu2) wily; urgency=medium
893
894 * SECURITY UPDATE: request smuggling via chunked transfer encoding
895 - debian/patches/CVE-2015-3183.patch: refactor chunk parsing in
896 modules/http/http_filters.c.
897 - CVE-2015-3183
898 * SECURITY UPDATE: access restriction bypass via deprecated API
899 - debian/patches/CVE-2015-3185.patch: deprecate old API and add new one
900 in include/http_request.h, server/request.c.
901 - CVE-2015-3185
902
903 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 24 Jul 2015 09:56:09 -0400
904
905apache2 (2.4.12-2ubuntu1) wily; urgency=medium
906
907 * Merge from Debian unstable. Remaining changes:
908 - debian/{control, apache2.install, apache2-utils.ufw.profile,
909 apache2.dirs}: Add ufw profiles.
910 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
911 - Add dep8 tests.
912 - debian/rules: Fix cross-building by passing
913 DEB_{HOST,BUILD}_GNU_TYPE to configure.
914 - debian/patches/086_svn_cross_compiles: Backport several cross
915 fixes from upstream
916 - d/index.html: replace Debian with Ubuntu on default page.
917 - Allow "triggers-awaited" and "triggers-pending" states in addition
918 to "installed" when determining whether to defer actions or
919 process deferred actions.
920 * Drop patches (applied upstream):
921 - d/p/split-logfile.patch
922 - d/p/CVE-2015-0228.patch
923 * Drop changes (superceded in Debian):
924 - Cherry-pick versioned build-depend on dpkg from Debian for correct
925 dpkg-maintscript-helper symlink_to_dir support.
926 * Drop changes (adopted in Debian):
927 - d/control, d/config-dir/mods-available/ssl.conf,
928 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
929 dialog program ask-for-passphrase.
930 * Fix cross-building configure line in d/rules, which had bit-rotted in
931 previous merges.
932
933 -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 May 2015 16:34:00 +0000
934
464apache2 (2.4.12-2) unstable; urgency=medium935apache2 (2.4.12-2) unstable; urgency=medium
465936
466 [ Jean-Michel Nirgal Vourgère ]937 [ Jean-Michel Nirgal Vourgère ]
@@ -510,6 +981,28 @@ apache2 (2.4.10-10) unstable; urgency=medium
510981
511 -- Stefan Fritsch <sf@debian.org> Sun, 15 Mar 2015 10:47:36 +0100982 -- Stefan Fritsch <sf@debian.org> Sun, 15 Mar 2015 10:47:36 +0100
512983
984apache2 (2.4.10-9ubuntu1) vivid; urgency=medium
985
986 * Merge from Debian unstable. Remaining changes:
987 - debian/{control, apache2.install, apache2-utils.ufw.profile,
988 apache2.dirs}: Add ufw profiles.
989 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
990 - d/control, d/config-dir/mods-available/ssl.conf,
991 - Add dep8 tests.
992 - debian/rules: Fix cross-building by passing
993 DEB_{HOST,BUILD}_GNU_TYPE to configure.
994 - debian/patches/086_svn_cross_compiles: Backport several cross
995 fixes from upstream
996 - d/index.html: replace Debian with Ubuntu on default page.
997 - d/p/split-logfile.patch: fix completely broken split-logfile
998 command.
999 - d/p/CVE-2015-0228.patch: fix logic in modules/lua/lua_request.c to fix a
1000 denial of service in mod_lua via websockets PING
1001 * debian/tests/ssl-passphrase: Add password responder for
1002 systemd-ask-passphrase.
1003
1004 -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2015 12:03:16 +0100
1005
513apache2 (2.4.10-9) unstable; urgency=medium1006apache2 (2.4.10-9) unstable; urgency=medium
5141007
515 * CVE-2014-8109: mod_lua: Fix handling of the Require line when a1008 * CVE-2014-8109: mod_lua: Fix handling of the Require line when a
@@ -524,6 +1017,54 @@ apache2 (2.4.10-9) unstable; urgency=medium
5241017
525 -- Stefan Fritsch <sf@debian.org> Mon, 22 Dec 2014 20:24:36 +01001018 -- Stefan Fritsch <sf@debian.org> Mon, 22 Dec 2014 20:24:36 +0100
5261019
1020apache2 (2.4.10-8ubuntu3) vivid; urgency=medium
1021
1022 * SECURITY UPDATE: restriction bypass in mod_lua via multiple Require
1023 directives
1024 - debian/patches/CVE-2014-8109.patch: handle multiple Require
1025 directives with different arguments in modules/lua/mod_lua.c.
1026 - CVE-2014-8109
1027 * SECURITY UPDATE: denial of service in mod_lua via websockets PING
1028 - debian/patches/CVE-2015-0228.patch: fix logic in
1029 modules/lua/lua_request.c.
1030 - CVE-2015-0228
1031
1032 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 05 Mar 2015 10:56:34 -0500
1033
1034apache2 (2.4.10-8ubuntu2) vivid; urgency=medium
1035
1036 * Allow "triggers-awaited" and "triggers-pending" states in addition to
1037 "installed" when determining whether to defer actions or process
1038 deferred actions (LP: #1393832).
1039
1040 -- Colin Watson <cjwatson@ubuntu.com> Wed, 26 Nov 2014 11:31:44 +0000
1041
1042apache2 (2.4.10-8ubuntu1) vivid; urgency=medium
1043
1044 * Merge from Debian unstable. Remaining changes:
1045 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1046 apache2.dirs}: Add ufw profiles.
1047 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1048 - d/control, d/config-dir/mods-available/ssl.conf,
1049 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
1050 dialog program ask-for-passphrase.
1051 - Add dep8 tests.
1052 - debian/rules: Fix cross-building by passing
1053 DEB_{HOST,BUILD}_GNU_TYPE to configure.
1054 - debian/patches/086_svn_cross_compiles: Backport several cross
1055 fixes from upstream
1056 - d/index.html: replace Debian with Ubuntu on default page.
1057 - d/p/split-logfile.patch: fix completely broken split-logfile
1058 command.
1059 * Fixes from Debian included in merge:
1060 - Crash caused by OCSP stapling code; this was erroneously
1061 attributed to Debian in my previous merge, but actually only
1062 appears in 2.4.10-8; with thanks to Stefan Fritsch (LP: #1366174).
1063 * Cherry-pick versioned build-depend on dpkg from Debian for correct
1064 dpkg-maintscript-helper symlink_to_dir support.
1065
1066 -- Robie Basak <robie.basak@ubuntu.com> Fri, 21 Nov 2014 15:15:58 +0000
1067
527apache2 (2.4.10-8) unstable; urgency=medium1068apache2 (2.4.10-8) unstable; urgency=medium
5281069
529 * Bump dpkg Pre-Depends to version that supports relative symlinks in1070 * Bump dpkg Pre-Depends to version that supports relative symlinks in
@@ -538,6 +1079,33 @@ apache2 (2.4.10-8) unstable; urgency=medium
5381079
539 -- Stefan Fritsch <sf@debian.org> Tue, 18 Nov 2014 15:18:18 +01001080 -- Stefan Fritsch <sf@debian.org> Tue, 18 Nov 2014 15:18:18 +0100
5401081
1082apache2 (2.4.10-7ubuntu1) vivid; urgency=medium
1083
1084 * Merge from Debian unstable. Remaining changes:
1085 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1086 apache2.dirs}: Add ufw profiles.
1087 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1088 - d/control, d/config-dir/mods-available/ssl.conf,
1089 d/ask-for-passphrase, d/apache2.install: Plymouth aware passphrase
1090 dialog program ask-for-passphrase.
1091 - Add dep8 tests.
1092 - debian/rules: Fix cross-building by passing
1093 DEB_{HOST,BUILD}_GNU_TYPE to configure.
1094 - debian/patches/086_svn_cross_compiles: Backport several cross
1095 fixes from upstream
1096 - d/index.html: replace Debian with Ubuntu on default page.
1097 - d/p/split-logfile.patch: fix completely broken split-logfile command.
1098 * Fixes from Debian included in merge:
1099 - Don't use a2query in preinst, as it may not be available yet
1100 (LP: #1312533).
1101 - Crash caused by OCSP stapling code (LP: #1366174).
1102 - Disable SSLv3 in default config (LP: #1358305).
1103 - If apache2 is not configured yet, defer actions executed via
1104 apache2-maintscript-helper. This fixes installation failures if a
1105 module package is configured first (LP: #1312854).
1106
1107 -- Robie Basak <robie.basak@ubuntu.com> Mon, 17 Nov 2014 18:04:40 +0000
1108
541apache2 (2.4.10-7) unstable; urgency=medium1109apache2 (2.4.10-7) unstable; urgency=medium
5421110
543 * Handle transitions of doc dirs and symlinks correctly during upgrade.1111 * Handle transitions of doc dirs and symlinks correctly during upgrade.
@@ -621,6 +1189,25 @@ apache2 (2.4.10-2) unstable; urgency=medium
6211189
622 -- Stefan Fritsch <sf@debian.org> Sun, 21 Sep 2014 22:58:33 +02001190 -- Stefan Fritsch <sf@debian.org> Sun, 21 Sep 2014 22:58:33 +0200
6231191
1192apache2 (2.4.10-1ubuntu1) utopic; urgency=medium
1193
1194 * Merge from Debian unstable. Remaining changes:
1195 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1196 apache2.dirs}: Add ufw profiles.
1197 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1198 - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
1199 d/apache2.install: Plymouth aware passphrase dialog program
1200 ask-for-passphrase.
1201 - Add dep8 tests.
1202 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
1203 configure.
1204 - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
1205 upstream
1206 - d/index.html: replace Debian with Ubuntu on default page.
1207 - d/p/split-logfile.patch: fix completely broken split-logfile command.
1208
1209 -- Robie Basak <robie.basak@ubuntu.com> Thu, 24 Jul 2014 15:13:16 +0000
1210
624apache2 (2.4.10-1) unstable; urgency=medium1211apache2 (2.4.10-1) unstable; urgency=medium
6251212
626 [ Arno Töll ]1213 [ Arno Töll ]
@@ -668,6 +1255,45 @@ apache2 (2.4.9-2) unstable; urgency=medium
6681255
669 -- Stefan Fritsch <sf@debian.org> Sun, 08 Jun 2014 10:38:04 +02001256 -- Stefan Fritsch <sf@debian.org> Sun, 08 Jun 2014 10:38:04 +0200
6701257
1258apache2 (2.4.9-1ubuntu2) utopic; urgency=medium
1259
1260 * Revert 2.4.4-6ubuntu3 and build against lua 5.1 again, since Apache doesn't
1261 yet support building against lua 5.2 (LP: #1323930).
1262
1263 -- Robie Basak <robie.basak@ubuntu.com> Wed, 28 May 2014 08:55:25 +0000
1264
1265apache2 (2.4.9-1ubuntu1) utopic; urgency=medium
1266
1267 * Merge from Debian unstable. Remaining changes:
1268 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1269 apache2.dirs}: Add ufw profiles.
1270 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1271 - d/control, d/config-dir/mods-available/ssl.conf, d/ask-for-passphrase,
1272 d/apache2.install, d/tests/ssl-passphrase: Plymouth aware passphrase
1273 dialog program ask-for-passphrase.
1274 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to
1275 configure.
1276 - debian/patches/086_svn_cross_compiles: Backport several cross fixes from
1277 upstream
1278 - Build using lua5.2.
1279 - d/tests/chroot: dep8 test for ChrootDir case.
1280 - d/tests/ssl-passphrase: update for new default path /var/www/html.
1281 - d/tests/duplicate-module-load: check for duplicate module loads.
1282 - d/index.html: replace Debian with Ubuntu on default page (LP: #1288690).
1283 - d/p/split-logfile.patch: fix completely broken split-logfile command
1284 (LP: #1299162). Thanks to Holger Mauermann.
1285 * Drop changes (upstreamed):
1286 - d/p/ignore-quilt-dir: adjust build system so that it does not use
1287 files find inside the .pc directory. This stops a double module load
1288 causing later havoc, including "ChrootDir" directive failure.
1289 - debian/patches/CVE-2013-6438.patch: properly calculate correct length
1290 in modules/dav/main/util.c.
1291 - debian/patches/CVE-2014-0098.patch: properly parse tokens in
1292 modules/loggers/mod_log_config.c.
1293 * d/tests/control: adjust dep8 tests for new "breaks-testbed" facility.
1294
1295 -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 May 2014 19:30:04 +0000
1296
671apache2 (2.4.9-1) unstable; urgency=medium1297apache2 (2.4.9-1) unstable; urgency=medium
6721298
673 * New upstream version.1299 * New upstream version.
@@ -700,6 +1326,63 @@ apache2 (2.4.9-1) unstable; urgency=medium
7001326
701 -- Stefan Fritsch <sf@debian.org> Sat, 29 Mar 2014 22:50:32 +01001327 -- Stefan Fritsch <sf@debian.org> Sat, 29 Mar 2014 22:50:32 +0100
7021328
1329apache2 (2.4.7-1ubuntu4) trusty; urgency=medium
1330
1331 * d/p/split-logfile.patch: fix completely broken split-logfile command
1332 (LP: #1299162). Thanks to Holger Mauermann.
1333
1334 -- Robie Basak <robie.basak@ubuntu.com> Thu, 03 Apr 2014 11:21:22 +0000
1335
1336apache2 (2.4.7-1ubuntu3) trusty; urgency=medium
1337
1338 * SECURITY UPDATE: denial of service via mod_dav incorrect end of string
1339 calculation
1340 - debian/patches/CVE-2013-6438.patch: properly calculate correct length
1341 in modules/dav/main/util.c.
1342 - CVE-2013-6438
1343 * SECURITY UPDATE: denial of service via truncated cookie and
1344 mod_log_config
1345 - debian/patches/CVE-2014-0098.patch: properly parse tokens in
1346 modules/loggers/mod_log_config.c.
1347 - CVE-2014-0098
1348
1349 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 20 Mar 2014 08:34:10 -0400
1350
1351apache2 (2.4.7-1ubuntu2) trusty; urgency=medium
1352
1353 * d/index.html: replace Debian with Ubuntu on default page
1354 (LP: #1288690).
1355
1356 -- Robie Basak <robie.basak@ubuntu.com> Wed, 19 Mar 2014 11:04:21 +0000
1357
1358apache2 (2.4.7-1ubuntu1) trusty; urgency=medium
1359
1360 * Merge from Debian unstable. Remaining changes:
1361 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1362 apache2.dirs}: Add ufw profiles.
1363 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1364 - d/control, d/config-dir/mods-available/ssl.conf,
1365 d/ask-for-passphrase, d/apache2.install, d/tests/ssl-passphrase:
1366 Plymouth aware passphrase dialog program ask-for-passphrase.
1367 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
1368 to configure.
1369 - debian/patches/086_svn_cross_compiles: Backport several cross fixes
1370 from upstream
1371 - Build using lua5.2.
1372 - d/tests/chroot: dep8 test for ChrootDir case.
1373 - d/p/ignore-quilt-dir: adjust build system so that it does not use
1374 files find inside the .pc directory. This stops a double module load
1375 causing later havoc, including "ChrootDir" directive failure.
1376 * Drop changes:
1377 - debian/{control, rules}: Enable PIE hardening: no longer required;
1378 2.4.7-1 is already hardened.
1379 - d/p/itk-rerun-configure.patch: no longer needed, as ITK support has moved
1380 out of this package.
1381 * d/tests/ssl-passphrase: update for new default path /var/www/html.
1382 * d/tests/duplicate-module-load: check for duplicate module loads.
1383
1384 -- Robie Basak <robie.basak@ubuntu.com> Tue, 14 Jan 2014 17:23:47 +0000
1385
703apache2 (2.4.7-1) unstable; urgency=low1386apache2 (2.4.7-1) unstable; urgency=low
7041387
705 New upstream version1388 New upstream version
@@ -763,6 +1446,53 @@ apache2 (2.4.6-3) unstable; urgency=low
7631446
764 -- Stefan Fritsch <sf@debian.org> Mon, 12 Aug 2013 20:15:38 +02001447 -- Stefan Fritsch <sf@debian.org> Mon, 12 Aug 2013 20:15:38 +0200
7651448
1449apache2 (2.4.6-2ubuntu4) trusty; urgency=low
1450
1451 * d/p/ignore-quilt-dir, d/p/itk-rerun-configure.patch: adjust build system so
1452 that it does not use files find inside the .pc directory. This stops a
1453 double module load causing later havoc, including "ChrootDir" directive
1454 failure (LP: #1251939). Thanks to Stefan Fritsch.
1455 * d/tests/chroot: dep8 test for ChrootDir case.
1456
1457 -- Robie Basak <robie.basak@ubuntu.com> Thu, 28 Nov 2013 16:21:51 +0000
1458
1459apache2 (2.4.6-2ubuntu3) trusty; urgency=low
1460
1461 * debian/apache2.install: Correct path for ufw.
1462 (LP: #1252722)
1463
1464 -- Chuck Short <zulcss@ubuntu.com> Tue, 19 Nov 2013 08:59:54 -0500
1465
1466apache2 (2.4.6-2ubuntu2) saucy; urgency=low
1467
1468 * d/ask-for-passphrase: mark executable so that apache2 can run it. Fixes
1469 passphrase prompting for SSL certificates that are passphrase protected.
1470 * Add dep8 test for SSL passphrase prompting.
1471
1472 -- Robie Basak <robie.basak@ubuntu.com> Fri, 09 Aug 2013 13:08:52 +0000
1473
1474apache2 (2.4.6-2ubuntu1) saucy; urgency=low
1475
1476 * Merge from Debian unstable. Remaining changes:
1477 - debian/{control, rules}: Enable PIE hardening.
1478 - debian/{control, apache2.install, apache2-utils.ufw.profile,
1479 apache2.dirs}: Add ufw profiles.
1480 - debian/apache2.py, debian/apache2-bin.install: Add apport hook.
1481 - debian/control, debian/config-dir/mods-available/ssl.conf,
1482 debian/ask-for-passphrase, debian/apache2.install: Plymouth aware
1483 passphrase dialog program ask-for-passphrase.
1484 - debian/rules: Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE
1485 to configure.
1486 - debian/patches/086_svn_cross_compiles: Backport several cross fixes
1487 from upstream
1488 * Dropped changes:
1489 - debian/patches/CVE-2013-1896.patch: upstream
1490 * Fixed module dependencies (LP: #1205314)
1491 - debian/config-dir/mods-available/lbmethod_*: properly specify
1492 proxy_balancer, not mod_proxy_balancer.
1493
1494 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 26 Jul 2013 08:31:33 -0400
1495
766apache2 (2.4.6-2) unstable; urgency=low1496apache2 (2.4.6-2) unstable; urgency=low
7671497
768 [ Stefan Fritsch ]1498 [ Stefan Fritsch ]
@@ -815,6 +1545,56 @@ apache2 (2.4.6-1) unstable; urgency=low
8151545
816 -- Arno Töll <arno@debian.org> Sun, 21 Jul 2013 18:44:42 +02001546 -- Arno Töll <arno@debian.org> Sun, 21 Jul 2013 18:44:42 +0200
8171547
1548apache2 (2.4.4-6ubuntu5) saucy; urgency=low
1549
1550 * SECURITY UPDATE: denial of service via MERGE request
1551 - debian/patches/CVE-2013-1896.patch: make sure DAV is enabled for URI
1552 in modules/dav/main/mod_dav.c.
1553 - CVE-2013-1896
1554
1555 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 18 Jul 2013 11:20:47 -0400
1556
1557apache2 (2.4.4-6ubuntu4) saucy; urgency=low
1558
1559 * d/apache2-{utils,bin}.install: move apport hook from apache2-utils to
1560 apache2-bin. apache2-utils is only suggested by apache2, so may not
1561 always be installed by bug reporters. However, apache2-bin will always
1562 need to be installed for Apache to be functional, so this is a better
1563 place for the apport hook. apache2-bin already Conflicts/Replaces
1564 apache2.2-common, so this also fixes (LP: #1199318).
1565 * d/apache2.py: adjust apport hook for new location of configuration
1566 files in apache2 >= 2.4: they have moved from apache2.2-common to
1567 apache2.
1568
1569 -- Robie Basak <robie.basak@ubuntu.com> Wed, 17 Jul 2013 17:54:22 +0000
1570
1571apache2 (2.4.4-6ubuntu3) saucy; urgency=low
1572
1573 * Build using lua5.2.
1574
1575 -- Matthias Klose <doko@ubuntu.com> Wed, 17 Jul 2013 14:24:42 +0200
1576
1577apache2 (2.4.4-6ubuntu2) saucy; urgency=low
1578
1579 * debian/rules: Fix FTBFS while installing ufw.
1580
1581 -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 10:10:14 -0500
1582
1583apache2 (2.4.4-6ubuntu1) saucy; urgency=low
1584
1585 * Merge from Debian unstable. Remaining changes:
1586 - debian/{control, rules}: Enable PIE hardening.
1587 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
1588 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
1589 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
1590 Plymouth aware passphrase dialog program ask-for-passphrase.
1591 * Dropped changes:
1592 - debian/patches/CVE-2012-2687.patch: Dropped no longer needed.
1593 - debian/patches/CVE-2012-3499_4558.patch: Dropped no longer needed.
1594 - debian/patches/CVE-2012-4929.patch: Dropped no longer needed.
1595
1596 -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Jul 2013 08:34:01 -0500
1597
818apache2 (2.4.4-6) unstable; urgency=low1598apache2 (2.4.4-6) unstable; urgency=low
8191599
820 * Denote exact versions breaking gnome-user-share now that Gnome maintainers1600 * Denote exact versions breaking gnome-user-share now that Gnome maintainers
@@ -1286,6 +2066,122 @@ apache2 (2.4.1-1) experimental; urgency=low
12862066
1287 -- Stefan Fritsch <sf@debian.org> Mon, 19 Mar 2012 10:46:02 +01002067 -- Stefan Fritsch <sf@debian.org> Mon, 19 Mar 2012 10:46:02 +0100
12882068
2069apache2 (2.2.22-6ubuntu5) raring; urgency=low
2070
2071 * SECURITY UPDATE: multiple cross-site scripting issues
2072 - debian/patches/CVE-2012-3499_4558.patch: properly escape html in
2073 modules/generators/{mod_info.c,mod_status.c},
2074 modules/ldap/util_ldap_cache_mgr.c, modules/mappers/mod_imagemap.c,
2075 modules/proxy/{mod_proxy_balancer.c,mod_proxy_ftp.c}.
2076 - CVE-2012-3499
2077 - CVE-2012-4558
2078 * SECURITY UPDATE: symlink attack in apache2ctl script
2079 - debian/apache2ctl: introduce and use a safer mkdir_chown() function.
2080 - Thanks to Stefan Fritsch for the fix.
2081 - CVE-2013-1048
2082
2083 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 15 Mar 2013 07:59:58 -0400
2084
2085apache2 (2.2.22-6ubuntu4) raring; urgency=low
2086
2087 * Fix cross-building by passing DEB_{HOST,BUILD}_GNU_TYPE to configure.
2088 * Skip module sanity check between MPMs if cross-building without the
2089 kernel/binfmt support to run our target binaries on the build system.
2090 * Backport several cross fixes from upstream as 086_svn_cross_compiles.
2091
2092 -- Adam Conrad <adconrad@ubuntu.com> Wed, 05 Dec 2012 02:21:46 -0700
2093
2094apache2 (2.2.22-6ubuntu3) raring; urgency=low
2095
2096 * SECURITY UPDATE: XSS vulnerability in mod_negotiation
2097 - debian/patches/CVE-2012-2687.patch: escape filenames in
2098 modules/mappers/mod_negotiation.c.
2099 - CVE-2012-2687
2100 * SECURITY UPDATE: CRIME attack ssl attack (LP: #1068854)
2101 - debian/patches/CVE-2012-4929.patch: backport SSLCompression on|off
2102 directive. Defaults to off as enabling compression enables the CRIME
2103 attack.
2104 - CVE-2012-4929
2105
2106 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 08 Nov 2012 17:56:24 -0500
2107
2108apache2 (2.2.22-6ubuntu2) quantal; urgency=low
2109
2110 * debian/apache2.py
2111 - Update apport hook for python3 ; thanks to Edward Donovan (LP: #1013171)
2112 - Check if this directory exists: /etc/apache2/sites-enabled/
2113
2114 -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Mon, 16 Jul 2012 10:02:18 +0200
2115
2116apache2 (2.2.22-6ubuntu1) quantal; urgency=low
2117
2118 * Merge from Debian unstable. Remaining changes:
2119 - debian/{control, rules}: Enable PIE hardening.
2120 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2121 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2122 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2123 Plymouth aware passphrase dialog program ask-for-passphrase.
2124 * Dropped changes:
2125 - debian/control: Add bzr tag and point it to our tree; this is not
2126 really required and just increases the delta.
2127
2128 -- Robie Basak <robie.basak@ubuntu.com> Fri, 08 Jun 2012 11:37:31 +0100
2129
2130apache2 (2.2.22-6) unstable; urgency=low
2131
2132 [ Stefan Fritsch ]
2133 * Fix regression causing apache2 to cache "206 partial content" responses,
2134 and then serving these partial responses when replying to normal requests.
2135 Closes: #671204
2136 * Add section to security.conf that shows how to forbid access to VCS
2137 directories. Closes: #548213
2138 * Update ssl default cipher config, add alternative speed optimized config.
2139 Closes: #649020
2140 * Add "AddCharset" for .brf files in default mod_mime config.
2141 Closes: #402567
2142 * Don't create httpd.conf anymore and don't include it in apache2.conf. If
2143 it contains local modifications, move it to /etc/apache2/conf.d/httpd.conf
2144 * Port some of the comments in apache2.conf from the 2.4 package.
2145 * Compile mod_version statically, drop associated module load file.
2146 * If apache2 is not running, make "/etc/init.d/apache2 reload" skip the
2147 configtest.
2148 * Note in README.Debian that future versions of the package will have the
2149 include statements changed to include only *.conf.
2150 * Change compiled-in document root to /var/www, to avoid strange error
2151 messages.
2152 * Use "dh --with autotools_dev" instead of patching config.sub/config.guess.
2153
2154 [ Arno Töll ]
2155 * Fix apxs to import LDFLAGS from config_vars.mk. Moreover, make it possible
2156 to override LDFLAGS at compile time by defining LDLAGS in the environment,
2157 just like it is possible for CFLAGS. This also means, config_vars.mk now
2158 exports hardening build flags by default.
2159 * Update doc-base metadata for the apache2-doc package.
2160
2161 -- Stefan Fritsch <sf@debian.org> Tue, 29 May 2012 22:05:48 +0200
2162
2163apache2 (2.2.22-5) unstable; urgency=low
2164
2165 * Make LoadFile and LoadModule look in the standard search paths if the
2166 dso file name is given as a pure filename. This helps with the multi-arch
2167 transition.
2168
2169 -- Stefan Fritsch <sf@debian.org> Mon, 30 Apr 2012 23:38:33 +0200
2170
2171apache2 (2.2.22-4) unstable; urgency=high
2172
2173 * CVE-2012-0216: Remove "Alias /doc /usr/share/doc" from the default virtual
2174 hosts' config files.
2175 If scripting modules like mod_php or mod_rivet are enabled on systems
2176 where either 1) some frontend server forwards connections to an apache2
2177 backend server on the localhost address, or 2) the machine running
2178 apache2 is also used for web browsing, this could allow a remote
2179 attacker to execute example scripts stored under /usr/share/doc.
2180 Depending on the installed packages, this could lead to issues like cross
2181 site scripting, code execution, or leakage of sensitive data.
2182
2183 -- Stefan Fritsch <sf@debian.org> Sun, 15 Apr 2012 23:41:43 +0200
2184
1289apache2 (2.2.22-3) unstable; urgency=low2185apache2 (2.2.22-3) unstable; urgency=low
12902186
1291 * Fix "FTBFS: mkdir: cannot create directory `debian/build-tree/arch':2187 * Fix "FTBFS: mkdir: cannot create directory `debian/build-tree/arch':
@@ -1306,6 +2202,18 @@ apache2 (2.2.22-2) unstable; urgency=low
13062202
1307 -- Stefan Fritsch <sf@debian.org> Thu, 15 Mar 2012 00:02:31 +01002203 -- Stefan Fritsch <sf@debian.org> Thu, 15 Mar 2012 00:02:31 +0100
13082204
2205apache2 (2.2.22-1ubuntu1) precise; urgency=low
2206
2207 * Merge from Debian testing. Remaining changes:
2208 - debian/{control, rules}: Enable PIE hardening.
2209 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2210 - debian/control: Add bzr tag and point it to our tree
2211 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2212 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2213 Plymouth aware passphrase dialog program ask-for-passphrase.
2214
2215 -- Chuck Short <zulcss@ubuntu.com> Sun, 12 Feb 2012 20:06:35 -0500
2216
1309apache2 (2.2.22-1) unstable; urgency=low2217apache2 (2.2.22-1) unstable; urgency=low
13102218
1311 [ Stefan Fritsch ]2219 [ Stefan Fritsch ]
@@ -1323,6 +2231,18 @@ apache2 (2.2.22-1) unstable; urgency=low
13232231
1324 -- Stefan Fritsch <sf@debian.org> Wed, 01 Feb 2012 21:49:04 +0100 2232 -- Stefan Fritsch <sf@debian.org> Wed, 01 Feb 2012 21:49:04 +0100
13252233
2234apache2 (2.2.21-5ubuntu1) precise; urgency=low
2235
2236 * Merge from Debian testing. Remaining changes:
2237 - debian/{control, rules}: Enable PIE hardening.
2238 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2239 - debian/control: Add bzr tag and point it to our tree
2240 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2241 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2242 Plymouth aware passphrase dialog program ask-for-passphrase.
2243
2244 -- Chuck Short <zulcss@ubuntu.com> Mon, 09 Jan 2012 06:26:31 +0000
2245
1326apache2 (2.2.21-5) unstable; urgency=low2246apache2 (2.2.21-5) unstable; urgency=low
13272247
1328 [ Arno Töll ]2248 [ Arno Töll ]
@@ -1376,6 +2296,26 @@ apache2 (2.2.21-4) unstable; urgency=low
13762296
1377 -- Stefan Fritsch <sf@debian.org> Thu, 29 Dec 2011 12:09:14 +01002297 -- Stefan Fritsch <sf@debian.org> Thu, 29 Dec 2011 12:09:14 +0100
13782298
2299apache2 (2.2.21-3ubuntu2) precise; urgency=low
2300
2301 * d/ask-for-passphrase: Flip the logic of this script so that it checks
2302 first to see if apache is being started from a TTY, and then if not,
2303 tries plymouth. (LP: #887410)
2304
2305 -- Clint Byrum <clint@ubuntu.com> Tue, 06 Dec 2011 16:49:33 -0800
2306
2307apache2 (2.2.21-3ubuntu1) precise; urgency=low
2308
2309 * Merge from Debian testing. Remaining changes:
2310 - debian/{control, rules}: Enable PIE hardening.
2311 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2312 - debian/control: Add bzr tag and point it to our tree
2313 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2314 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2315 Plymouth aware passphrase dialog program ask-for-passphrase.
2316
2317 -- Chuck Short <zulcss@ubuntu.com> Fri, 09 Dec 2011 05:20:43 +0000
2318
1379apache2 (2.2.21-3) unstable; urgency=medium2319apache2 (2.2.21-3) unstable; urgency=medium
13802320
1381 * Fix CVE-2011-4317: Prevent unintended pattern expansion in some2321 * Fix CVE-2011-4317: Prevent unintended pattern expansion in some
@@ -1390,6 +2330,24 @@ apache2 (2.2.21-3) unstable; urgency=medium
13902330
1391 -- Stefan Fritsch <sf@debian.org> Sat, 03 Dec 2011 18:54:03 +01002331 -- Stefan Fritsch <sf@debian.org> Sat, 03 Dec 2011 18:54:03 +0100
13922332
2333apache2 (2.2.21-2ubuntu2) precise; urgency=low
2334
2335 * No-change rebuild to drop spurious libsfgcc1 dependency on armhf.
2336
2337 -- Adam Conrad <adconrad@ubuntu.com> Fri, 02 Dec 2011 17:36:28 -0700
2338
2339apache2 (2.2.21-2ubuntu1) precise; urgency=low
2340
2341 * Merge from debian unstable. Remaining changes:
2342 - debian/{control, rules}: Enable PIE hardening.
2343 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2344 - debian/control: Add bzr tag and point it to our tree
2345 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2346 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2347 Plymouth aware passphrase dialog program ask-for-passphrase.
2348
2349 -- Chuck Short <zulcss@ubuntu.com> Fri, 14 Oct 2011 16:01:29 +0000
2350
1393apache2 (2.2.21-2) unstable; urgency=high2351apache2 (2.2.21-2) unstable; urgency=high
13942352
1395 * Fix CVE-2011-3368: Prevent unintended pattern expansion in some2353 * Fix CVE-2011-3368: Prevent unintended pattern expansion in some
@@ -1407,6 +2365,19 @@ apache2 (2.2.21-1) unstable; urgency=low
14072365
1408 -- Stefan Fritsch <sf@debian.org> Mon, 26 Sep 2011 18:16:11 +02002366 -- Stefan Fritsch <sf@debian.org> Mon, 26 Sep 2011 18:16:11 +0200
14092367
2368apache2 (2.2.20-1ubuntu1) oneiric; urgency=low
2369
2370 * Merge from debian unstable to fix CVE-2011-3192 (LP: #837991).
2371 Remaining changes:
2372 - debian/{control, rules}: Enable PIE hardening.
2373 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2374 - debian/control: Add bzr tag and point it to our tree
2375 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2376 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2377 Plymouth aware passphrase dialog program ask-for-passphrase.
2378
2379 -- Steve Beattie <sbeattie@ubuntu.com> Tue, 06 Sep 2011 01:17:15 -0700
2380
1410apache2 (2.2.20-1) unstable; urgency=low2381apache2 (2.2.20-1) unstable; urgency=low
14112382
1412 * New upstream release.2383 * New upstream release.
@@ -1429,6 +2400,18 @@ apache2 (2.2.19-2) unstable; urgency=high
14292400
1430 -- Stefan Fritsch <sf@debian.org> Mon, 29 Aug 2011 17:08:17 +02002401 -- Stefan Fritsch <sf@debian.org> Mon, 29 Aug 2011 17:08:17 +0200
14312402
2403apache2 (2.2.19-1ubuntu1) oneiric; urgency=low
2404
2405 * Merge from debian unstable (LP: #787013). Remaining changes:
2406 - debian/{control, rules}: Enable PIE hardening.
2407 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2408 - debian/control: Add bzr tag and point it to our tree
2409 - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
2410 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2411 Plymouth aware passphrase dialog program ask-for-passphrase.
2412
2413 -- Andres Rodriguez <andreserl@ubuntu.com> Mon, 23 May 2011 10:16:09 -0400
2414
1432apache2 (2.2.19-1) unstable; urgency=low2415apache2 (2.2.19-1) unstable; urgency=low
14332416
1434 * New upstream release.2417 * New upstream release.
@@ -1446,6 +2429,18 @@ apache2 (2.2.19-1) unstable; urgency=low
14462429
1447 -- Stefan Fritsch <sf@debian.org> Sun, 22 May 2011 10:21:21 +02002430 -- Stefan Fritsch <sf@debian.org> Sun, 22 May 2011 10:21:21 +0200
14482431
2432apache2 (2.2.17-3ubuntu1) oneiric; urgency=low
2433
2434 * Merge from debian unstable. Remaining changes:
2435 - debian/{control, rules}: Enable PIE hardening.
2436 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2437 - debian/control: Add bzr tag and point it to our tree
2438 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2439 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2440 Plymouth aware passphrase dialog program ask-for-passphrase.
2441
2442 -- Chuck Short <zulcss@ubuntu.com> Mon, 11 Apr 2011 02:13:30 +0100
2443
1449apache2 (2.2.17-3) unstable; urgency=low2444apache2 (2.2.17-3) unstable; urgency=low
14502445
1451 * Fix compilation with OpenSSL without SSLv2 support. Closes: #6220492446 * Fix compilation with OpenSSL without SSLv2 support. Closes: #622049
@@ -1472,6 +2467,18 @@ apache2 (2.2.17-2) unstable; urgency=high
14722467
1473 -- Stefan Fritsch <sf@debian.org> Mon, 21 Mar 2011 23:01:17 +01002468 -- Stefan Fritsch <sf@debian.org> Mon, 21 Mar 2011 23:01:17 +0100
14742469
2470apache2 (2.2.17-1ubuntu1) natty; urgency=low
2471
2472 * Merge from debian unstable, remaining changes:
2473 - debian/{control, rules}: Enable PIE hardening.
2474 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2475 - debian/control: Add bzr tag and point it to our tree
2476 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2477 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2478 Plymouth aware passphrase dialog program ask-for-passphrase.
2479
2480 -- Chuck Short <zulcss@ubuntu.com> Tue, 22 Feb 2011 13:02:08 -0500
2481
1475apache2 (2.2.17-1) unstable; urgency=low2482apache2 (2.2.17-1) unstable; urgency=low
14762483
1477 * New upstream version2484 * New upstream version
@@ -1480,6 +2487,32 @@ apache2 (2.2.17-1) unstable; urgency=low
14802487
1481 -- Stefan Fritsch <sf@debian.org> Tue, 15 Feb 2011 23:30:18 +01002488 -- Stefan Fritsch <sf@debian.org> Tue, 15 Feb 2011 23:30:18 +0100
14822489
2490apache2 (2.2.16-6ubuntu3) natty; urgency=low
2491
2492 * debian/rules: Don't use "-fno-strict-aliasing" since it causes
2493 apache FTBFS on amd64. (LP: #711293)
2494
2495 -- Chuck Short <zulcss@ubuntu.com> Tue, 01 Feb 2011 10:19:55 -0500
2496
2497apache2 (2.2.16-6ubuntu2) natty; urgency=low
2498
2499 * debian/rules: Use "-fno-strict-aliasing" to work around a gcc bug.
2500 (LP: #697105)
2501
2502 -- Chuck Short <zulcss@ubuntu.com> Tue, 25 Jan 2011 11:14:58 -0500
2503
2504apache2 (2.2.16-6ubuntu1) natty; urgency=low
2505
2506 * Merge from debian unstable. Remaining changes:
2507 - debian/{control, rules}: Enable PIE hardening.
2508 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2509 - debian/control: Add bzr tag and point it to our tree
2510 - debain/apache2.py, debian/apache2.2-common.isntall: Add apport hook.
2511 - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
2512 Plymouth aware passphrase dialog program ask-for-passphrase.
2513
2514 -- Chuck Short <zulcss@ubuntu.com> Sun, 02 Jan 2011 06:05:51 +0000
2515
1483apache2 (2.2.16-6) unstable; urgency=low2516apache2 (2.2.16-6) unstable; urgency=low
14842517
1485 * Also add $named to the secondary-init-script example.2518 * Also add $named to the secondary-init-script example.
@@ -1495,6 +2528,30 @@ apache2 (2.2.16-5) unstable; urgency=medium
14952528
1496 -- Stefan Fritsch <sf@debian.org> Fri, 31 Dec 2010 01:22:19 +01002529 -- Stefan Fritsch <sf@debian.org> Fri, 31 Dec 2010 01:22:19 +0100
14972530
2531apache2 (2.2.16-4ubuntu2) natty; urgency=low
2532
2533 [Clint Byrum]
2534 * Adding plymouth aware passphrase dialog program ask-for-passphrase.
2535 (LP: #582963)
2536 + debian/control: apache2.2-common depends on bash for ask-for-passphrase
2537 + debian/config-dir/mods-available/ssl.conf:
2538 - SSLPassPhraseDialog now uses exec:/usr/share/apache2/ask-for-passhrase
2539
2540 [Chuck Short]
2541 * Add apport hook. (LP: #609177)
2542 + debian/apache2.py, debian/apache2.2-common.install
2543
2544 -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:43 -0500
2545
2546apache2 (2.2.16-4ubuntu1) natty; urgency=low
2547
2548 * Merge from debian unstable. Remaining changes:
2549 - debian/{control, rules}: Enable PIE hardening.
2550 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2551 - debian/control: Add bzr tag and point it to our tree
2552
2553 -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Nov 2010 09:43:41 -0500
2554
1498apache2 (2.2.16-4) unstable; urgency=medium2555apache2 (2.2.16-4) unstable; urgency=medium
14992556
1500 * Increase the mod_reqtimeout default timeouts to avoid potential problems2557 * Increase the mod_reqtimeout default timeouts to avoid potential problems
@@ -1505,6 +2562,15 @@ apache2 (2.2.16-4) unstable; urgency=medium
15052562
1506 -- Stefan Fritsch <sf@debian.org> Sun, 14 Nov 2010 19:05:55 +01002563 -- Stefan Fritsch <sf@debian.org> Sun, 14 Nov 2010 19:05:55 +0100
15072564
2565apache2 (2.2.16-3ubuntu1) natty; urgency=low
2566
2567 * Merge from debian unstable. Remaining changes:
2568 - debian/{control, rules}: Enable PIE hardening.
2569 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2570 - debian/control: Add bzr tag and point it to our tree.
2571
2572 -- Chuck Short <zulcss@ubuntu.com> Tue, 12 Oct 2010 11:54:48 +0100
2573
1508apache2 (2.2.16-3) unstable; urgency=high2574apache2 (2.2.16-3) unstable; urgency=high
15092575
1510 * CVE-2010-1623: mod_reqtimeout: Fix potential DoS by high memory usage.2576 * CVE-2010-1623: mod_reqtimeout: Fix potential DoS by high memory usage.
@@ -1527,6 +2593,30 @@ apache2 (2.2.16-2) unstable; urgency=low
15272593
1528 -- Stefan Fritsch <sf@debian.org> Sun, 29 Aug 2010 15:29:21 +02002594 -- Stefan Fritsch <sf@debian.org> Sun, 29 Aug 2010 15:29:21 +0200
15292595
2596apache2 (2.2.16-1ubuntu3) maverick; urgency=low
2597
2598 * Revert "stty sane" to unbreak apache starting, this will have to be
2599 fixed a different way. (LP: #626723)
2600
2601 -- Chuck Short <zulcss@ubuntu.com> Wed, 08 Sep 2010 08:33:17 -0400
2602
2603apache2 (2.2.16-1ubuntu2) maverick; urgency=low
2604
2605 * debian/apache2.2-common.apache2.init: Add stty sane so that users will get a
2606 password prompt when using apache-ssl. (LP: #582963)
2607
2608 -- Chuck Short <zulcss@ubuntu.com> Wed, 25 Aug 2010 09:25:05 -0400
2609
2610apache2 (2.2.16-1ubuntu1) maverick; urgency=low
2611
2612 * Merge from debian unstable. Remaining changes:
2613 - debian/{control, rules}: Enable PIE hardening.
2614 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2615 - debian/control: Add bzr tag and point it to our tree.
2616 - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
2617
2618 -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Jul 2010 20:21:37 +0100
2619
1530apache2 (2.2.16-1) unstable; urgency=medium2620apache2 (2.2.16-1) unstable; urgency=medium
15312621
1532 * Urgency medium for security fix.2622 * Urgency medium for security fix.
@@ -1559,6 +2649,24 @@ apache2 (2.2.15-6) unstable; urgency=low
15592649
1560 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jul 2010 23:41:08 +02002650 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jul 2010 23:41:08 +0200
15612651
2652apache2 (2.2.15-5ubuntu1) maverick; urgency=low
2653
2654 * Merge from debian unstable. Remaining changes:
2655 - debian/{control, rules}: Enable PIE hardening.
2656 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2657 - debian/control: Add bzr tag and point it to our tree.
2658 - debian/apache2-2.common.apache2.init: Add graceful restart (LP: #456381)
2659 + Dropped:
2660 - debian/patches/206-fix-potential-memory-leaks.dpatch: No longer needed.
2661 - debian/patches/206-report-max-client-mpm-worker.dpatch: No longer needed.
2662 - debian/config-dir/apache2.conf: Merged back from debian.
2663 - mod-reqtimeout functionality: Merge back from debian.
2664 - debian/patches/204_CVE-2010-0408.dpatch: No longer needed.
2665 - debian/patches/205_CVE-2010-0434.dpatch: No longer needed.
2666 - debian/patches/203_fix-ab-segfault.dpatch: No longer needed.
2667
2668 -- Chuck Short <zulcss@ubuntu.com> Wed, 05 May 2010 01:28:04 +0100
2669
1562apache2 (2.2.15-5) unstable; urgency=low2670apache2 (2.2.15-5) unstable; urgency=low
15632671
1564 * Conflict with apache package as we now include apachectl. Closes: #5790652672 * Conflict with apache package as we now include apachectl. Closes: #579065
@@ -1679,6 +2787,80 @@ apache2 (2.2.14-6) unstable; urgency=low
16792787
1680 -- Stefan Fritsch <sf@debian.org> Sun, 07 Feb 2010 17:29:45 +01002788 -- Stefan Fritsch <sf@debian.org> Sun, 07 Feb 2010 17:29:45 +0100
16812789
2790apache2 (2.2.14-5ubuntu8) lucid; urgency=low
2791
2792 * debian/patches/210-backport-mod-reqtimeout-ftbfs.dpatch: Add missing mod_reqtime.so
2793 (LP: #562370)
2794
2795 -- Chuck Short <zulcss@ubuntu.com> Tue, 13 Apr 2010 15:09:57 -0400
2796
2797apache2 (2.2.14-5ubuntu7) lucid; urgency=low
2798
2799 * debian/patches/206-fix-potential-memory-leaks.dpatch: Fix potential memory
2800 leaks by making sure to not destroy bucket brigades that have been created
2801 by earlier filters. Backported from 2.2.15.
2802 * debian/patches/206-report-max-client-mpm-worker.dpatch: Don't report server
2803 has reached MaxClients until it has. Backported from 2.2.15
2804 * debian/config-dir/apache2.conf: Make the Files ~ "^\.ht" block in apache2.conf
2805 more secure by adding Satisfy all. (Debian bug: #572075)
2806 * debian/rules, debian/patches/209-backport-mod-reqtimeout.dpatch,
2807 debian/config2-dir/mods-available/reqtimeout.load,
2808 debian/config2-dir/mods-available/reqtimeout.conf debian/NEWS : Backport the
2809 mod-reqtimeout module from 2.2.15, this will mitigate apache slowloris
2810 bug in apache. Enable it by default. (LP: #392759)
2811
2812 -- Chuck Short <zulcss@ubuntu.com> Mon, 05 Apr 2010 09:53:35 -0400
2813
2814apache2 (2.2.14-5ubuntu6) lucid; urgency=low
2815
2816 * debian/apache2.2-common.apache2.init: Fix thinko. (LP: #551681)
2817
2818 -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 09:41:11 -0400
2819
2820apache2 (2.2.14-5ubuntu5) lucid; urgency=low
2821
2822 * Revert 99-fix-mod-dav-permissions.dpatch
2823
2824 -- Chuck Short <zulcss@ubuntu.com> Tue, 30 Mar 2010 07:55:46 -0400
2825
2826apache2 (2.2.14-5ubuntu4) lucid; urgency=low
2827
2828 * debian/patches/99-fix-mod-dav-permissions.dpatch: Fix permisisons when
2829 downloading files from webdav (LP: #540747)
2830 * debian/apache2.2-common.apache2.init: Add graceful restart (LP: #456381)
2831
2832 -- Chuck Short <zulcss@ubuntu.com> Mon, 29 Mar 2010 13:37:39 -0400
2833
2834apache2 (2.2.14-5ubuntu3) lucid; urgency=low
2835
2836 * SECURITY UPDATE: denial of service via crafted request in mod_proxy_ajp
2837 - debian/patches/204_CVE-2010-0408.dpatch: return the right error code
2838 in modules/proxy/mod_proxy_ajp.c.
2839 - CVE-2010-0408
2840 * SECURITY UPDATE: information disclosure via improper handling of
2841 headers in subrequests
2842 - debian/patches/205_CVE-2010-0434.dpatch: use a copy of r->headers_in
2843 in server/protocol.c.
2844 - CVE-2010-0434
2845
2846 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 10 Mar 2010 14:48:48 -0500
2847
2848apache2 (2.2.14-5ubuntu2) lucid; urgency=low
2849
2850 * debian/patches/203_fix-ab-segfault.dpatch: Fix segfaulting ab when using really
2851 wacky options. (LP: #450501)
2852
2853 -- Chuck Short <zulcss@ubuntu.com> Mon, 08 Mar 2010 14:53:17 -0500
2854
2855apache2 (2.2.14-5ubuntu1) lucid; urgency=low
2856
2857 * Merge from debian testing. Remaining changes: LP: #506862
2858 - debian/{control, rules}: Enable PIE hardening.
2859 - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
2860 - debian/control: Add bzr tag and point it to our tree.
2861
2862 -- Bhavani Shankar <right2bhavi@gmail.com> Wed, 13 Jan 2010 14:28:41 +0530
2863
1682apache2 (2.2.14-5) unstable; urgency=low2864apache2 (2.2.14-5) unstable; urgency=low
16832865
1684 * Security: Further mitigation for the TLS renegotation attack2866 * Security: Further mitigation for the TLS renegotation attack
@@ -1702,6 +2884,15 @@ apache2 (2.2.14-5) unstable; urgency=low
17022884
1703 -- Stefan Fritsch <sf@debian.org> Sat, 02 Jan 2010 22:44:15 +01002885 -- Stefan Fritsch <sf@debian.org> Sat, 02 Jan 2010 22:44:15 +0100
17042886
2887apache2 (2.2.14-4ubuntu1) lucid; urgency=low
2888
2889 * Resynchronzie with Debian, remaining changes are:
2890 - debian/{control, rules}: Enable PIE hardening.
2891 - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
2892 - debian/control: Add bzr tag and point it to our tree.
2893
2894 -- Chuck Short <zulcss@ubuntu.com> Wed, 23 Dec 2009 14:44:51 -0500
2895
1705apache2 (2.2.14-4) unstable; urgency=low2896apache2 (2.2.14-4) unstable; urgency=low
17062897
1707 * Disable localized error pages again by default because they break2898 * Disable localized error pages again by default because they break
@@ -1752,6 +2943,17 @@ apache2 (2.2.14-2) unstable; urgency=medium
17522943
1753 -- Stefan Fritsch <sf@debian.org> Sat, 07 Nov 2009 14:37:37 +01002944 -- Stefan Fritsch <sf@debian.org> Sat, 07 Nov 2009 14:37:37 +0100
17542945
2946apache2 (2.2.14-1ubuntu1) lucid; urgency=low
2947
2948 * Merge from debian testing, remaining changes:
2949 - debian/{control, rules}: Enable PIE hardening.
2950 - debian/{control, rules, pache2.2-common.ufw.profile}: Add ufw profiles.
2951 - debian/conrol: Add bzr tag and point it to our tree.
2952 - Dropped debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
2953 Already applied upstream.
2954
2955 -- Chuck Short <zulcss@ubuntu.com> Fri, 06 Nov 2009 00:29:03 +0000
2956
1755apache2 (2.2.14-1) unstable; urgency=low2957apache2 (2.2.14-1) unstable; urgency=low
17562958
1757 * New upstream version:2959 * New upstream version:
@@ -1786,6 +2988,24 @@ apache2 (2.2.13-1) unstable; urgency=low
17862988
1787 -- Stefan Fritsch <sf@debian.org> Mon, 31 Aug 2009 20:28:56 +02002989 -- Stefan Fritsch <sf@debian.org> Mon, 31 Aug 2009 20:28:56 +0200
17882990
2991apache2 (2.2.12-1ubuntu2) karmic; urgency=low
2992
2993 * debian/patches/203_fix_legacy_ap_rputs_segfaults.dpatch:
2994 - Fix potential segfaults with the use of the legacy ap_rputs() etc
2995 interfaces, in cases where an output filter fails. This happens
2996 frequently after CVE-2009-1891 got fixed. (LP: #409987)
2997
2998 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 17 Aug 2009 15:38:47 -0400
2999
3000apache2 (2.2.12-1ubuntu1) karmic; urgency=low
3001
3002 * Merge from debian unstable, remaining changes:
3003 - debian/{control,rules}: enable PIE hardening.
3004 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3005 - Dropped debian/patches/203_fix-ssl-timeftm-ignored.dpatch.
3006
3007 -- Chuck Short <zulcss@ubuntu.com> Tue, 04 Aug 2009 20:04:24 +0100
3008
1789apache2 (2.2.12-1) unstable; urgency=low3009apache2 (2.2.12-1) unstable; urgency=low
17903010
1791 * New upstream release:3011 * New upstream release:
@@ -1833,6 +3053,16 @@ apache2 (2.2.12-1) unstable; urgency=low
18333053
1834 -- Stefan Fritsch <sf@debian.org> Tue, 04 Aug 2009 11:02:34 +02003054 -- Stefan Fritsch <sf@debian.org> Tue, 04 Aug 2009 11:02:34 +0200
18353055
3056apache2 (2.2.11-7ubuntu1) karmic; urgency=low
3057
3058 * Merge from debian unstable, remaining changes: LP: #398130
3059 - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
3060 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3061 - debian/{control,rules}: enable PIE hardening.
3062 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3063
3064 -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 11 Jul 2009 16:34:32 +0530
3065
1836apache2 (2.2.11-7) unstable; urgency=low3066apache2 (2.2.11-7) unstable; urgency=low
18373067
1838 * Security fixes:3068 * Security fixes:
@@ -1847,6 +3077,16 @@ apache2 (2.2.11-7) unstable; urgency=low
18473077
1848 -- Stefan Fritsch <sf@debian.org> Fri, 10 Jul 2009 22:42:57 +02003078 -- Stefan Fritsch <sf@debian.org> Fri, 10 Jul 2009 22:42:57 +0200
18493079
3080apache2 (2.2.11-6ubuntu1) karmic; urgency=low
3081
3082 * Merge from debian unstable, remaining changes:
3083 - debian/patches/203_fix-ssl-timeftm-ignored.dpatch:
3084 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3085 - debian/{control,rules}: enable PIE hardening.
3086 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3087
3088 -- Chuck Short <zulcss@ubuntu.com> Tue, 09 Jun 2009 01:01:23 +0100
3089
1850apache2 (2.2.11-6) unstable; urgency=high3090apache2 (2.2.11-6) unstable; urgency=high
18513091
1852 * CVE-2009-1195: mod_include allowed to bypass IncludesNoExec for Server3092 * CVE-2009-1195: mod_include allowed to bypass IncludesNoExec for Server
@@ -1855,6 +3095,16 @@ apache2 (2.2.11-6) unstable; urgency=high
18553095
1856 -- Stefan Fritsch <sf@debian.org> Mon, 08 Jun 2009 19:22:58 +02003096 -- Stefan Fritsch <sf@debian.org> Mon, 08 Jun 2009 19:22:58 +0200
18573097
3098apache2 (2.2.11-5ubuntu1) karmic; urgency=low
3099
3100 * Merge from debian unstable, remaining changes:
3101 - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3102 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3103 - debian/{control,rules}: enable PIE hardening.
3104 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3105
3106 -- Andrew Mitchell <ajmitch@ubuntu.com> Wed, 03 Jun 2009 14:10:54 +1200
3107
1858apache2 (2.2.11-5) unstable; urgency=low3108apache2 (2.2.11-5) unstable; urgency=low
18593109
1860 * Move all binaries into a new package apache2.2-bin and make3110 * Move all binaries into a new package apache2.2-bin and make
@@ -1903,6 +3153,16 @@ apache2 (2.2.11-4) unstable; urgency=low
19033153
1904 -- Stefan Fritsch <sf@debian.org> Tue, 19 May 2009 22:55:27 +02003154 -- Stefan Fritsch <sf@debian.org> Tue, 19 May 2009 22:55:27 +0200
19053155
3156apache2 (2.2.11-3ubuntu1) karmic; urgency=low
3157
3158 * Merge from debian unstable, remaining changes:
3159 - debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3160 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3161 - debian/{control,rules}: enable PIE hardening.
3162 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3163
3164 -- Andrew Mitchell <ajmitch@ubuntu.com> Tue, 12 May 2009 16:15:34 +1200
3165
1906apache2 (2.2.11-3) unstable; urgency=low3166apache2 (2.2.11-3) unstable; urgency=low
19073167
1908 * Rebuild against apr-util 1.3, to fix undefined symbol errors in mod_ldap3168 * Rebuild against apr-util 1.3, to fix undefined symbol errors in mod_ldap
@@ -1911,6 +3171,21 @@ apache2 (2.2.11-3) unstable; urgency=low
19113171
1912 -- Stefan Fritsch <sf@debian.org> Tue, 31 Mar 2009 21:07:26 +02003172 -- Stefan Fritsch <sf@debian.org> Tue, 31 Mar 2009 21:07:26 +0200
19133173
3174apache2 (2.2.11-2ubuntu2) jaunty; urgency=low
3175
3176 * debian/patches/203_fix-ssi-timeftm-ignored.dpatch:
3177 Fix timefmt is ignored when XBitHack is on. (LP: #258914)
3178
3179 -- Chuck Short <zulcss@ubuntu.com> Wed, 01 Apr 2009 11:39:17 -0400
3180
3181apache2 (2.2.11-2ubuntu1) jaunty; urgency=low
3182
3183 * Merge from debian unstable, remaining changes:
3184 - debian/{contro,rules}: enable PIE hardening.
3185 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3186
3187 -- Chuck Short <zulcss@ubuntu.com> Sat, 17 Jan 2009 00:02:55 +0000
3188
1914apache2 (2.2.11-2) unstable; urgency=low3189apache2 (2.2.11-2) unstable; urgency=low
19153190
1916 * Report an error instead instead of segfaulting when apr_pollset_create3191 * Report an error instead instead of segfaulting when apr_pollset_create
@@ -1920,6 +3195,14 @@ apache2 (2.2.11-2) unstable; urgency=low
19203195
1921 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jan 2009 19:01:59 +01003196 -- Stefan Fritsch <sf@debian.org> Fri, 16 Jan 2009 19:01:59 +0100
19223197
3198apache2 (2.2.11-1ubuntu1) jaunty; urgency=low
3199
3200 * Merge from debian unstable, remaining changes:
3201 - debian/{control, rules}: enable PIE hardening.
3202 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3203
3204 -- Chuck Short <zulcss@ubuntu.com> Mon, 15 Dec 2008 00:06:50 +0000
3205
1923apache2 (2.2.11-1) unstable; urgency=low3206apache2 (2.2.11-1) unstable; urgency=low
19243207
1925 [Thom May]3208 [Thom May]
@@ -1934,6 +3217,14 @@ apache2 (2.2.11-1) unstable; urgency=low
19343217
1935 -- Stefan Fritsch <sf@debian.org> Sun, 14 Dec 2008 09:34:24 +01003218 -- Stefan Fritsch <sf@debian.org> Sun, 14 Dec 2008 09:34:24 +0100
19363219
3220apache2 (2.2.9-11ubuntu1) jaunty; urgency=low
3221
3222 * Merge from debian unstable, remaining changes: (LP: #303375)
3223 - debian/{control, rules}: enable PIE hardening.
3224 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3225
3226 -- Bhavani Shankar <right2bhavi@gmail.com> Sat, 29 Nov 2008 14:02:31 +0530
3227
1937apache2 (2.2.9-11) unstable; urgency=low3228apache2 (2.2.9-11) unstable; urgency=low
19383229
1939 * Regression fix from upstream svn for mod_proxy:3230 * Regression fix from upstream svn for mod_proxy:
@@ -1948,6 +3239,14 @@ apache2 (2.2.9-11) unstable; urgency=low
19483239
1949 -- Stefan Fritsch <sf@debian.org> Wed, 26 Nov 2008 23:10:22 +01003240 -- Stefan Fritsch <sf@debian.org> Wed, 26 Nov 2008 23:10:22 +0100
19503241
3242apache2 (2.2.9-10ubuntu1) jaunty; urgency=low
3243
3244 * Merge from debian unstable, remaining changes:
3245 - debian/{control, rules}: enable PIE hardening.
3246 - debian/{control, rules, apache2.2-common.ufw.profile}: add ufw profiles.
3247
3248 -- Chuck Short <zulcss@ubuntu.com> Wed, 05 Nov 2008 02:23:18 -0400
3249
1951apache2 (2.2.9-10) unstable; urgency=low3250apache2 (2.2.9-10) unstable; urgency=low
19523251
1953 * Regression fix from upstream svn for mod_proxy_http:3252 * Regression fix from upstream svn for mod_proxy_http:
@@ -1978,6 +3277,27 @@ apache2 (2.2.9-8) unstable; urgency=low
19783277
1979 -- Stefan Fritsch <sf@debian.org> Thu, 11 Sep 2008 09:17:33 +02003278 -- Stefan Fritsch <sf@debian.org> Thu, 11 Sep 2008 09:17:33 +0200
19803279
3280apache2 (2.2.9-7ubuntu3) intrepid; urgency=low
3281
3282 * Revert logrotate change since it will break it for everyone.
3283
3284 -- Chuck Short <zulcss@ubuntu.com> Fri, 19 Sep 2008 09:32:01 -0400
3285
3286apache2 (2.2.9-7ubuntu2) intrepid; urgency=low
3287
3288 * debian/logrotate: Restart rather than reload for busy websites.
3289 (LP: #270899)
3290
3291 -- Chuck Short <zulcss@ubuntu.com> Thu, 18 Sep 2008 08:42:22 -0400
3292
3293apache2 (2.2.9-7ubuntu1) intrepid; urgency=low
3294
3295 * Merge from debian unstable, remaining changes:
3296 - debian/{control,rules}: enable PIE hardening.
3297 - debian/{control,rules,apache2.2-common.ufw.profile}: add ufw profiles.
3298
3299 -- Kees Cook <kees@ubuntu.com> Thu, 28 Aug 2008 08:10:59 -0700
3300
1981apache2 (2.2.9-7) unstable; urgency=low3301apache2 (2.2.9-7) unstable; urgency=low
19823302
1983 * Fix XSS in mod_proxy_ftp (CVE-2008-2939).3303 * Fix XSS in mod_proxy_ftp (CVE-2008-2939).
@@ -2020,6 +3340,23 @@ apache2 (2.2.9-4) unstable; urgency=low
20203340
2021 -- Stefan Fritsch <sf@debian.org> Sun, 06 Jul 2008 10:38:37 +02003341 -- Stefan Fritsch <sf@debian.org> Sun, 06 Jul 2008 10:38:37 +0200
20223342
3343apache2 (2.2.9-3ubuntu2) intrepid; urgency=low
3344
3345 * add ufw integration (see
3346 https://wiki.ubuntu.com/UbuntuFirewall#Integrating%20UFW%20with%20Packages)
3347 (LP: #261198)
3348 - debian/control: suggest ufw for apache2.2-common
3349 - add apache2.2-common.ufw.profile with 3 profiles and install it to
3350 /etc/ufw/applications.d/apache2.2-common
3351
3352 -- Didier Roche <didrocks@ubuntu-fr.org> Tue, 26 Aug 2008 19:03:42 +0200
3353
3354apache2 (2.2.9-3ubuntu1) intrepid; urgency=low
3355
3356 * debian/{control,rules}: enable PIE hardening
3357
3358 -- Kees Cook <kees@ubuntu.com> Wed, 20 Aug 2008 15:45:00 -0700
3359
2023apache2 (2.2.9-3) unstable; urgency=low3360apache2 (2.2.9-3) unstable; urgency=low
20243361
2025 [ Stefan Fritsch ]3362 [ Stefan Fritsch ]
@@ -4100,3 +5437,4 @@ apache2 (2.0.18-1) unstable; urgency=low
4100 * Initial Release.5437 * Initial Release.
41015438
4102 -- Daniel Stone <daniel@sfarc.net> Wed, 4 Jul 2001 21:29:29 +10005439 -- Daniel Stone <daniel@sfarc.net> Wed, 4 Jul 2001 21:29:29 +1000
5440
diff --git a/debian/control b/debian/control
index a72cfff..e974321 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>
@@ -44,15 +45,12 @@ Provides: httpd,
44Recommends: ssl-cert45Recommends: ssl-cert
45Conflicts: apache2.2-bin,46Conflicts: apache2.2-bin,
46 apache2.2-common47 apache2.2-common
47Breaks: libapache2-mod-md (<< 2.4.33),
48 libapache2-mod-proxy-uwsgi (<< 2.4.33)
49Replaces: apache2.2-bin,48Replaces: apache2.2-bin,
50 apache2.2-common,49 apache2.2-common,
51 libapache2-mod-md (<< 2.4.33),
52 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,6 @@ 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)
86Replaces: libapache2-mod-md (<< 2.4.33),
87 libapache2-mod-proxy-uwsgi (<< 2.4.33)
88Suggests: apache2-doc,82Suggests: apache2-doc,
89 apache2-suexec-pristine | apache2-suexec-custom,83 apache2-suexec-pristine | apache2-suexec-custom,
90 www-browser84 www-browser
@@ -209,20 +203,3 @@ Description: Apache debugging symbols
209 This package includes the debugging symbols. It can be used to debug203 This package includes the debugging symbols. It can be used to debug
210 crashing server instances and modules. See204 crashing server instances and modules. See
211 /usr/share/doc/apache2/README.backtrace for more information.205 /usr/share/doc/apache2/README.backtrace for more information.
212
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-uwsgi
222Architecture: any
223Section: oldlibs
224Depends: ${misc:Depends}, apache2 (= ${binary:Version})
225Description: transitional package
226 This is a transitional package to apache2 for users of
227 libapache2-mod-proxy-uwsgi.
228 It can be safely removed after the installation is complete.
diff --git a/debian/icons/ubuntu-logo.png b/debian/icons/ubuntu-logo.png
229new file mode 100644206new file mode 100644
index 0000000..4db2fa1
230Binary files /dev/null and b/debian/icons/ubuntu-logo.png differ207Binary 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 b4e63de..555d3b8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,3 +9,6 @@ reproducible_builds.diff
9#suexec-custom.patch9#suexec-custom.patch
1010
11mod_http2_mem_usage_32bit.diff11mod_http2_mem_usage_32bit.diff
12
13# Patches added by Ubuntu
14086_svn_cross_compiles
diff --git a/debian/rules b/debian/rules
index e2d693c..7ca974b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -113,6 +113,8 @@ 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 \
117 --disable-proxy-uwsgi \
116 --enable-mpms-shared=all \118 --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" \119 --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" \120 --enable-mods-static="unixd logio watchdog version" \
@@ -177,7 +179,7 @@ override_dh_installdocs-indep:
177 dh_installdocs -i179 dh_installdocs -i
178180
179override_dh_installdocs-arch:181override_dh_installdocs-arch:
180 dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg -plibapache2-mod-md -plibapache2-mod-proxy-uwsgi182 dh_installdocs --link-doc=apache2 -papache2 -papache2-dbg
181 dh_installdocs --link-doc=apache2-dev -papache2-ssl-dev183 dh_installdocs --link-doc=apache2-dev -papache2-ssl-dev
182 dh_installdocs -a184 dh_installdocs -a
183185
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..6e21f89
--- /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 "33">
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 -->
10<title>Support suEXEC - Serveur Apache HTTP 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">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
20<p class="apache">Serveur Apache HTTP 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/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Support suEXEC</h1>
25<div class="toplang">
26<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27<a href="./fr/suexec.html" 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>La fonctionnalit� <strong>suEXEC</strong> permet
34 l'ex�cution des programmes <strong>CGI</strong> et
35 <strong>SSI</strong> sous un utilisateur autre que celui sous
36 lequel s'ex�cute le serveur web qui appelle ces programmes.
37 Normalement, lorsqu'un programme CGI ou SSI est lanc�, il
38 s'ex�cute sous le m�me utilisateur que celui du serveur web qui
39 l'appelle.</p>
40
41 <p>Utilis�e de mani�re appropri�e, cette fonctionnalit� peut
42 r�duire consid�rablement les risques de s�curit� encourus
43 lorsqu'on autorise les utilisateurs � d�velopper et faire
44 s'ex�cuter des programmes CGI ou SSI de leur cru. Cependant, mal
45 configur�, suEXEC peut causer de nombreux probl�mes et m�me cr�er
46 de nouvelles failles dans la s�curit� de votre ordinateur. Si
47 vous n'�tes pas familier avec la gestion des programmes
48 <em>setuid root</em> et les risques de s�curit� qu'ils comportent,
49 nous vous recommandons vivement de ne pas tenter
50 d'utiliser suEXEC.</p>
51 </div>
52<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Avant de commencer</a></li>
53<li><img alt="" src="./images/down.gif" /> <a href="#model">Mod�le de s�curit� de suEXEC</a></li>
54<li><img alt="" src="./images/down.gif" /> <a href="#install">Configurer et installer suEXEC</a></li>
55<li><img alt="" src="./images/down.gif" /> <a href="#enable">Activation et d�sactivation
56de suEXEC</a></li>
57<li><img alt="" src="./images/down.gif" /> <a href="#usage">Utilisation de suEXEC</a></li>
58<li><img alt="" src="./images/down.gif" /> <a href="#debug">D�bogage de suEXEC</a></li>
59<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Avis � la population !
60 Avertissements et exemples</a></li>
61</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
62<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
63<div class="section">
64<h2><a name="before" id="before">Avant de commencer</a></h2>
65
66 <p>Avant de foncer t�te baiss�e dans la lecture de ce document,
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches