Directives Apache 2.4.39
Pour compiler le baliseur ApacheConf, l'appli a besoin de savoir quels mots coloriser.
Après avoir activé le module Apache mod_status et accédé à la page http://localhost/server-info,
puis copié/collé les infos dans un fichier Apache2.4.39-directives.conf,
ce présent script PHP parse le fichier pour n'afficher que les commentaires et les directives, sans texte;
il est sous forme d'info-bulle du lien HTTP qui pemettent de rechercher le mot.
<?php
$nb = 0;
$fp = @fopen("directivesApache2.4.39.conf", "r");
if ($fp) {
while (($s = fgets($fp, 4096)) !== false) {
if($s[0]=='#') echo '<span class="com">'.$s.'</span>';
else if($s[0]=="\r") echo $s;
else {
$nb++;
$t = explode(' - ',$s);
$di = htmlspecialchars($t[0]);
echo '<span class="mot"><a href="https://www.google.com/search?q='.$di.'" title="'.$t[1].'" target="_blank">'.$di.'</a></span>'."\n";
}
}
if (!feof($fp)) {
echo "Erreur: fgets() a échoué\n";
}
fclose($fp);
}
?>et ça donne ceci (avec présentation sur 5 colonnes en CSS) :
#Server Version: Apache/2.4.39 (Win64) PHP/7.3.4
#Apache Lounge VC15 Server built: Mar 28 2019 11:59:33
#Server Built With:
# -D APR_HAS_SENDFILE
# -D APR_HAS_MMAP
# -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
# -D APR_HAS_OTHER_CHILD
# -D AP_HAVE_RELIABLE_PIPED_LOGS
# -D HTTPD_ROOT="/apache"
# -D SUEXEC_BIN="/apache/bin/suexec"
# -D DEFAULT_PIDLOG="logs/httpd.pid"
# -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
# -D DEFAULT_ERRORLOG="logs/error.log"
# -D AP_TYPES_CONFIG_FILE="conf/mime.types"
# -D SERVER_CONFIG_FILE="conf/httpd.conf"
#Module Name: core.c
<Directory>
<Location>
<VirtualHost>
<Files>
<Limit>
<LimitExcept>
<IfModule>
<IfDefine>
<IfFile>
<IfDirective>
<IfSection>
<DirectoryMatch>
<LocationMatch>
<FilesMatch>
AddDefaultCharset
AcceptPathInfo
Define
UnDefine
Error
<If>
<ElseIf>
<Else>
AccessFileName
DocumentRoot
ErrorDocument
AllowOverride
AllowOverrideList
Options
DefaultType
FileETag
EnableMMAP
EnableSendfile
Protocol
AcceptFilter
Port
HostnameLookups
ServerAdmin
ServerName
ServerSignature
ServerRoot
DefaultRuntimeDir
ErrorLog
ErrorLogFormat
ServerAlias
ServerPath
Timeout
ContentDigest
UseCanonicalName
UseCanonicalPhysicalPort
Include
IncludeOptional
LogLevel
NameVirtualHost
ServerTokens
LimitRequestLine
LimitRequestFieldsize
LimitRequestFields
LimitRequestBody
LimitXMLRequestBody
Mutex
MaxRanges
MaxRangeOverlaps
MaxRangeReversals
RLimitCPU
RLimitMEM
RLimitNPROC
RegexDefaultOptions
LimitInternalRecursion
CGIPassAuth
CGIVar
QualifyRedirectURL
ForceType
SetHandler
SetOutputFilter
SetInputFilter
AllowEncodedSlashes
ScoreBoardFile
ExtendedStatus
SeeRequestTail
PidFile
MaxRequestsPerChild
MaxConnectionsPerChild
CoreDumpDirectory
MaxMemFree
ThreadStackSize
TraceEnable
MergeTrailers
Protocols
ProtocolsHonorOrder
HttpProtocolOptions
RegisterHttpMethod
MergeSlashes
#Module Name: http_core.c
KeepAliveTimeout
MaxKeepAliveRequests
KeepAlive
#Module Name: mod_actions.c
Action
Script
#Module Name: mod_alias.c
Alias
ScriptAlias
Redirect
AliasMatch
ScriptAliasMatch
RedirectMatch
RedirectTemp
RedirectPermanent
#Module Name: mod_allowmethods.c
AllowMethods
#Module Name: mod_auth_basic.c
AuthBasicProvider
AuthBasicAuthoritative
AuthBasicFake
AuthBasicUseDigestAlgorithm
#Module Name: mod_authn_core.c
AuthType
AuthName
<AuthnProviderAlias>
#Module Name: mod_authn_file.c
AuthUserFile
#Module Name: mod_authz_core.c
<AuthzProviderAlias>
Require
<RequireAll>
<RequireAny>
<RequireNone>
AuthMerging
AuthzSendForbiddenOnFailure
#Module Name: mod_authz_groupfile.c
AuthGroupFile
#Module Name: mod_autoindex.c
AddIcon
AddIconByType
AddIconByEncoding
AddAlt
AddAltByType
AddAltByEncoding
IndexOptions
IndexOrderDefault
IndexIgnore
IndexIgnoreReset
AddDescription
HeaderName
ReadmeName
FancyIndexing
DefaultIcon
IndexStyleSheet
IndexHeadInsert
#Module Name: mod_cgi.c
ScriptLog
ScriptLogLength
ScriptLogBuffer
#Module Name: mod_dir.c
FallbackResource
DirectoryIndex
DirectorySlash
DirectoryCheckHandler
DirectoryIndexRedirect
#Module Name: mod_env.c
PassEnv
SetEnv
UnsetEnv
#Module Name: mod_include.c
XBitHack
SSIErrorMsg
SSITimeFormat
SSIStartTag
SSIEndTag
SSIUndefinedEcho
SSILegacyExprParser
SSILastModified
SSIEtag
#Module Name: mod_info.c
AddModuleInfo
#Module Name: mod_isapi.c
ISAPIReadAheadBuffer
ISAPILogNotSupported
ISAPIAppendLogToErrors
ISAPIAppendLogToQuery
ISAPIFakeAsync
ISAPICacheFile
#Module Name: mod_log_config.c
CustomLog
GlobalLog
TransferLog
LogFormat
BufferedLogs
#Module Name: mod_mime.c
AddCharset
AddEncoding
AddHandler
AddInputFilter
AddLanguage
AddOutputFilter
AddType
DefaultLanguage
MultiviewsMatch
RemoveCharset
RemoveEncoding
RemoveHandler
RemoveInputFilter
RemoveLanguage
RemoveOutputFilter
RemoveType
TypesConfig
ModMimeUsePathInfo
#Module Name: mod_negotiation.c
CacheNegotiatedDocs
LanguagePriority
ForceLanguagePriority
#Module Name: mod_php7.c
php_value
php_flag
php_admin_value
php_admin_flag
PHPINIDir
#Module Name: mod_rewrite.c
RewriteEngine
RewriteOptions
RewriteBase
RewriteCond
RewriteRule
RewriteMap
#Module Name: mod_setenvif.c
SetEnvIf
SetEnvIfNoCase
SetEnvIfExpr
BrowserMatch
BrowserMatchNoCase
#Module Name: mod_so.c
LoadModule
LoadFile
#Module Name: mod_win32.c
ScriptInterpreterSource
#Module Name: mpm_winnt.c
ListenBacklog
ListenCoresBucketsRatio
Listen
SendBufferSize
ReceiveBufferSize
ThreadsPerChild
ThreadLimit
à ce stade récupérer cette liste de mots, la passer dans le baliseur,
elle permet de voir quels mots ne sont pas colorisés, donc à ajouter.
Ces mots vont devenir un tableau C (ApacheConf.c) employés par l'exe baliseur ApacheConf.cgi.
Le baliseur effectivement montre qu'il ne connait pas toutes les directives d'Apache 2.4.39 :
#Server Version: Apache/2.4.39 (Win64) PHP/7.3.4
#Apache Lounge VC15 Server built: Mar 28 2019 11:59:33
#Server Built With:
# -D APR_HAS_SENDFILE
# -D APR_HAS_MMAP
# -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
# -D APR_HAS_OTHER_CHILD
# -D AP_HAVE_RELIABLE_PIPED_LOGS
# -D HTTPD_ROOT="/apache"
# -D SUEXEC_BIN="/apache/bin/suexec"
# -D DEFAULT_PIDLOG="logs/httpd.pid"
# -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
# -D DEFAULT_ERRORLOG="logs/error.log"
# -D AP_TYPES_CONFIG_FILE="conf/mime.types"
# -D SERVER_CONFIG_FILE="conf/httpd.conf"
#Module Name: core.c
<Directory>
<Location>
<VirtualHost>
<Files>
<Limit>
<LimitExcept>
<IfModule>
<IfDefine>
<IfFile>
<IfDirective>
<IfSection>
<DirectoryMatch>
<LocationMatch>
<FilesMatch>
AddDefaultCharset
AcceptPathInfo
Define
UnDefine
Error
<If>
<ElseIf>
<Else>
AccessFileName
DocumentRoot
ErrorDocument
AllowOverride
AllowOverrideList
Options
DefaultType
FileETag
EnableMMAP
EnableSendfile
Protocol
AcceptFilter
Port
HostnameLookups
ServerAdmin
ServerName
ServerSignature
ServerRoot
DefaultRuntimeDir
ErrorLog
ErrorLogFormat
ServerAlias
ServerPath
Timeout
ContentDigest
UseCanonicalName
UseCanonicalPhysicalPort
Include
IncludeOptional
LogLevel
NameVirtualHost
ServerTokens
LimitRequestLine
LimitRequestFieldsize
LimitRequestFields
LimitRequestBody
LimitXMLRequestBody
Mutex
MaxRanges
MaxRangeOverlaps
MaxRangeReversals
RLimitCPU
RLimitMEM
RLimitNPROC
RegexDefaultOptions
LimitInternalRecursion
CGIPassAuth
CGIVar
QualifyRedirectURL
ForceType
SetHandler
SetOutputFilter
SetInputFilter
AllowEncodedSlashes
ScoreBoardFile
ExtendedStatus
SeeRequestTail
PidFile
MaxRequestsPerChild
MaxConnectionsPerChild
CoreDumpDirectory
MaxMemFree
ThreadStackSize
TraceEnable
MergeTrailers
Protocols
ProtocolsHonorOrder
HttpProtocolOptions
RegisterHttpMethod
MergeSlashes
#Module Name: http_core.c
KeepAliveTimeout
MaxKeepAliveRequests
KeepAlive
#Module Name: mod_actions.c
Action
Script
#Module Name: mod_alias.c
Alias
ScriptAlias
Redirect
AliasMatch
ScriptAliasMatch
RedirectMatch
RedirectTemp
RedirectPermanent
#Module Name: mod_allowmethods.c
AllowMethods
#Module Name: mod_auth_basic.c
AuthBasicProvider
AuthBasicAuthoritative
AuthBasicFake
AuthBasicUseDigestAlgorithm
#Module Name: mod_authn_core.c
AuthType
AuthName
<AuthnProviderAlias>
#Module Name: mod_authn_file.c
AuthUserFile
#Module Name: mod_authz_core.c
<AuthzProviderAlias>
Require
<RequireAll>
<RequireAny>
<RequireNone>
AuthMerging
AuthzSendForbiddenOnFailure
#Module Name: mod_authz_groupfile.c
AuthGroupFile
#Module Name: mod_autoindex.c
AddIcon
AddIconByType
AddIconByEncoding
AddAlt
AddAltByType
AddAltByEncoding
IndexOptions
IndexOrderDefault
IndexIgnore
IndexIgnoreReset
AddDescription
HeaderName
ReadmeName
FancyIndexing
DefaultIcon
IndexStyleSheet
IndexHeadInsert
#Module Name: mod_cgi.c
ScriptLog
ScriptLogLength
ScriptLogBuffer
#Module Name: mod_dir.c
FallbackResource
DirectoryIndex
DirectorySlash
DirectoryCheckHandler
DirectoryIndexRedirect
#Module Name: mod_env.c
PassEnv
SetEnv
UnsetEnv
#Module Name: mod_include.c
XBitHack
SSIErrorMsg
SSITimeFormat
SSIStartTag
SSIEndTag
SSIUndefinedEcho
SSILegacyExprParser
SSILastModified
SSIEtag
#Module Name: mod_info.c
AddModuleInfo
#Module Name: mod_isapi.c
ISAPIReadAheadBuffer
ISAPILogNotSupported
ISAPIAppendLogToErrors
ISAPIAppendLogToQuery
ISAPIFakeAsync
ISAPICacheFile
#Module Name: mod_log_config.c
CustomLog
GlobalLog
TransferLog
LogFormat
BufferedLogs
#Module Name: mod_mime.c
AddCharset
AddEncoding
AddHandler
AddInputFilter
AddLanguage
AddOutputFilter
AddType
DefaultLanguage
MultiviewsMatch
RemoveCharset
RemoveEncoding
RemoveHandler
RemoveInputFilter
RemoveLanguage
RemoveOutputFilter
RemoveType
TypesConfig
ModMimeUsePathInfo
#Module Name: mod_negotiation.c
CacheNegotiatedDocs
LanguagePriority
ForceLanguagePriority
#Module Name: mod_php7.c
php_value
php_flag
php_admin_value
php_admin_flag
PHPINIDir
#Module Name: mod_rewrite.c
RewriteEngine
RewriteOptions
RewriteBase
RewriteCond
RewriteRule
RewriteMap
#Module Name: mod_setenvif.c
SetEnvIf
SetEnvIfNoCase
SetEnvIfExpr
BrowserMatch
BrowserMatchNoCase
#Module Name: mod_so.c
LoadModule
LoadFile
#Module Name: mod_win32.c
ScriptInterpreterSource
#Module Name: mpm_winnt.c
ListenBacklog
ListenCoresBucketsRatio
Listen
SendBufferSize
ReceiveBufferSize
ThreadsPerChild
285 lignes, 4616 octets. Balisé en 0.65 ms Vitesse : 7084 octets/ms
Le baliseur comptait 116 mots ça va passer à 200 pfeww...
Maintenant il faudrait parser le HTML pour isoler les mots à ajouter.
Ou mieux:générer le tableau C complet ici. Tel quel, avec les noms de modules c'est super!
La source PHP qui génère le code C à partir des mots de /server-info:
<?php
$fp = @fopen("directivesApache2.4.39.conf", "r");
if ($fp) {
$cpt = 0;
echo '<span class="prepro">#define NBM '.$nb.'</span>'."\n".
'<span class="type">static const char</span> *Mots[NBM]={';
$numparligne = 0;
while (($s = fgets($fp, 4096)) !== false) {
if($s[0]=='#') {
echo "\n".'<span class="com">//'.str_replace('#Module Name: ','',$s).'</span>'."\t";
$numparligne = 0;
}
else if($s[0]=="\r") echo $s;
else {
$t = explode(' - ',$s);
$suppr = array('<','>');
$di = htmlspecialchars(strtolower(str_replace($suppr,'',$t[0])));
$virgule = (++$cpt < $nb) ? ',':'';
//echo $cpt; // décommenter pour numéroter les lignes afin de vérifier NBM et le dernier
echo '<span class="str">"'.$di."\"$virgule</span>";
if($numparligne++ == 6) {$numparligne=0; echo "\n\t";}
}
}
if (!feof($fp)) {
echo "Erreur: fgets() a échoué\n";
}
fclose($fp);
echo "\n};";
}
?>
#define NBM 218
static const char *Mots[NBM]={
//#Server Version: Apache/2.4.39 (Win64) PHP/7.3.4
//#Apache Lounge VC15 Server built: Mar 28 2019 11:59:33
//#Server Built With:
//# -D APR_HAS_SENDFILE
//# -D APR_HAS_MMAP
//# -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
//# -D APR_HAS_OTHER_CHILD
//# -D AP_HAVE_RELIABLE_PIPED_LOGS
//# -D HTTPD_ROOT="/apache"
//# -D SUEXEC_BIN="/apache/bin/suexec"
//# -D DEFAULT_PIDLOG="logs/httpd.pid"
//# -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
//# -D DEFAULT_ERRORLOG="logs/error.log"
//# -D AP_TYPES_CONFIG_FILE="conf/mime.types"
//# -D SERVER_CONFIG_FILE="conf/httpd.conf"
//core.c
"directory","location","virtualhost","files","limit","limitexcept","ifmodule",
"ifdefine","iffile","ifdirective","ifsection","directorymatch","locationmatch","filesmatch",
"adddefaultcharset","acceptpathinfo","define","undefine","error","if","elseif",
"else","accessfilename","documentroot","errordocument","allowoverride","allowoverridelist","options",
"defaulttype","fileetag","enablemmap","enablesendfile","protocol","acceptfilter","port",
"hostnamelookups","serveradmin","servername","serversignature","serverroot","defaultruntimedir","errorlog",
"errorlogformat","serveralias","serverpath","timeout","contentdigest","usecanonicalname","usecanonicalphysicalport",
"include","includeoptional","loglevel","namevirtualhost","servertokens","limitrequestline","limitrequestfieldsize",
"limitrequestfields","limitrequestbody","limitxmlrequestbody","mutex","maxranges","maxrangeoverlaps","maxrangereversals",
"rlimitcpu","rlimitmem","rlimitnproc","regexdefaultoptions","limitinternalrecursion","cgipassauth","cgivar",
"qualifyredirecturl","forcetype","sethandler","setoutputfilter","setinputfilter","allowencodedslashes","scoreboardfile",
"extendedstatus","seerequesttail","pidfile","maxrequestsperchild","maxconnectionsperchild","coredumpdirectory","maxmemfree",
"threadstacksize","traceenable","mergetrailers","protocols","protocolshonororder","httpprotocoloptions","registerhttpmethod",
"mergeslashes",
//http_core.c
"keepalivetimeout","maxkeepaliverequests","keepalive",
//mod_actions.c
"action","script",
//mod_alias.c
"alias","scriptalias","redirect","aliasmatch","scriptaliasmatch","redirectmatch","redirecttemp",
"redirectpermanent",
//mod_allowmethods.c
"allowmethods",
//mod_auth_basic.c
"authbasicprovider","authbasicauthoritative","authbasicfake","authbasicusedigestalgorithm",
//mod_authn_core.c
"authtype","authname","authnprovideralias",
//mod_authn_file.c
"authuserfile",
//mod_authz_core.c
"authzprovideralias","require","requireall","requireany","requirenone","authmerging","authzsendforbiddenonfailure",
//mod_authz_groupfile.c
"authgroupfile",
//mod_autoindex.c
"addicon","addiconbytype","addiconbyencoding","addalt","addaltbytype","addaltbyencoding","indexoptions",
"indexorderdefault","indexignore","indexignorereset","adddescription","headername","readmename","fancyindexing",
"defaulticon","indexstylesheet","indexheadinsert",
//mod_cgi.c
"scriptlog","scriptloglength","scriptlogbuffer",
//mod_dir.c
"fallbackresource","directoryindex","directoryslash","directorycheckhandler","directoryindexredirect",
//mod_env.c
"passenv","setenv","unsetenv",
//mod_include.c
"xbithack","ssierrormsg","ssitimeformat","ssistarttag","ssiendtag","ssiundefinedecho","ssilegacyexprparser",
"ssilastmodified","ssietag",
//mod_info.c
"addmoduleinfo",
//mod_isapi.c
"isapireadaheadbuffer","isapilognotsupported","isapiappendlogtoerrors","isapiappendlogtoquery","isapifakeasync","isapicachefile",
//mod_log_config.c
"customlog","globallog","transferlog","logformat","bufferedlogs",
//mod_mime.c
"addcharset","addencoding","addhandler","addinputfilter","addlanguage","addoutputfilter","addtype",
"defaultlanguage","multiviewsmatch","removecharset","removeencoding","removehandler","removeinputfilter","removelanguage",
"removeoutputfilter","removetype","typesconfig","modmimeusepathinfo",
//mod_negotiation.c
"cachenegotiateddocs","languagepriority","forcelanguagepriority",
//mod_php7.c
"php_value","php_flag","php_admin_value","php_admin_flag","phpinidir",
//mod_rewrite.c
"rewriteengine","rewriteoptions","rewritebase","rewritecond","rewriterule","rewritemap",
//mod_setenvif.c
"setenvif","setenvifnocase","setenvifexpr","browsermatch","browsermatchnocase",
//mod_so.c
"loadmodule","loadfile",
//mod_win32.c
"scriptinterpretersource",
//mpm_winnt.c
"listenbacklog","listencoresbucketsratio","listen","sendbuffersize","receivebuffersize","threadsperchild","threadlimit"
};
Voila le baliseur peut être recompilé.
Cette liste de directives est utile pour mieux connaître Apache et savoir
à quel module appartient une directive, donc quel module charger pour
modifier les htaccess sans provoquer d'erreur Apache.