1" Vim syntax file
2" Language: Apache configuration (httpd.conf, srm.conf, access.conf, .htaccess)
3" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
4" License: This file can be redistribued and/or modified under the same terms
5"		as Vim itself.
6" Last Change: 2020 Oct 07
7" Notes: Last synced with apache-2.2.3, version 1.x is no longer supported
8" TODO: see particular FIXME's scattered through the file
9"		make it really linewise?
10"		+ add `display' where appropriate
11
12" quit when a syntax file was already loaded
13if exists("b:current_syntax")
14	finish
15endif
16
17syn case ignore
18
19" Base constructs
20syn match apacheComment "^\s*#.*$" contains=apacheFixme
21syn match apacheUserID "#-\?\d\+\>"
22syn case match
23syn keyword apacheFixme FIXME TODO XXX NOT
24syn case ignore
25syn match apacheAnything "\s[^>]*" contained
26syn match apacheError "\w\+" contained
27syn region apacheString start=+"+ end=+"+ skip=+\\\\\|\\\"+ oneline
28
29" Following is to prevent escaped quotes from being parsed as strings.
30syn match apacheSkipQuote +\\"+
31
32" Core and mpm
33syn keyword apacheDeclaration AccessFileName AddDefaultCharset AllowOverride AuthName AuthType ContentDigest DefaultType DocumentRoot ErrorDocument ErrorLog HostNameLookups IdentityCheck Include KeepAlive KeepAliveTimeout LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens TimeOut UseCanonicalName
34syn keyword apacheDeclaration AcceptPathInfo CGIMapExtension EnableMMAP FileETag ForceType LimitXMLRequestBody SetHandler SetInputFilter SetOutputFilter
35syn keyword apacheDeclaration AcceptFilter AllowEncodedSlashes EnableSendfile LimitInternalRecursion TraceEnable
36syn keyword apacheOption INode MTime Size
37syn keyword apacheOption Any All On Off Double EMail DNS Min Minimal OS Prod ProductOnly Full
38syn keyword apacheOption emerg alert crit error warn notice info debug
39syn keyword apacheOption registry script inetd standalone
40syn match apacheOptionOption "[+-]\?\<\(ExecCGI\|FollowSymLinks\|Includes\|IncludesNoExec\|Indexes\|MultiViews\|SymLinksIfOwnerMatch\)\>"
41syn keyword apacheOption user group
42syn match apacheOption "\<valid-user\>"
43syn case match
44syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK contained
45" Added as suggested by Mikko Koivunalho
46syn keyword apacheMethodOption BASELINE-CONTROL CHECKIN CHECKOUT LABEL MERGE MKACTIVITY MKWORKSPACE REPORT UNCHECKOUT UPDATE VERSION-CONTROL contained
47syn case ignore
48syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything
49syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError
50syn keyword apacheLimitSectionKeyword Limit LimitExcept contained
51syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue
52syn keyword apacheAuthTypeValue Basic Digest
53syn match apacheAllowOverride "AllowOverride\s.*$" contains=apacheAllowOverrideValue,apacheComment
54syn keyword apacheAllowOverrideValue AuthConfig FileInfo Indexes Limit Options contained
55syn keyword apacheDeclaration CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MaxSpareThreadsPerChild MinSpareThreads NumServers PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild User
56syn keyword apacheDeclaration MaxThreads ThreadStackSize
57syn keyword apacheDeclaration Win32DisableAcceptEx
58syn keyword apacheDeclaration AssignUserId ChildPerUserId
59syn keyword apacheDeclaration AcceptMutex MaxSpareServers MinSpareServers
60syn keyword apacheOption flock fcntl sysvsem pthread
61
62" Modules
63syn keyword apacheDeclaration Action Script
64syn keyword apacheDeclaration Alias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent ScriptAlias ScriptAliasMatch
65syn keyword apacheOption permanent temp seeother gone
66syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile
67syn keyword apacheDeclaration AuthBasicAuthoritative AuthBasicProvider
68syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize
69syn keyword apacheOption none auth auth-int MD5 MD5-sess
70syn match apacheSection "<\/\=\(<AuthnProviderAlias\)[^>]*>" contains=apacheAnything
71syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail
72syn keyword apacheDeclaration AuthDBDUserPWQuery AuthDBDUserRealmQuery
73syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMAuthoritative
74syn keyword apacheDeclaration AuthDBM TypeAuthDBMUserFile
75syn keyword apacheOption default SDBM GDBM NDBM DB
76syn keyword apacheDeclaration AuthDefaultAuthoritative
77syn keyword apacheDeclaration AuthUserFile
78syn keyword apacheDeclaration AuthLDAPBindON AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPStartTLS
79syn keyword apacheDeclaration AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative
80syn keyword apacheOption always never searching finding
81syn keyword apacheOption ldap-user ldap-group ldap-dn ldap-attribute ldap-filter
82syn keyword apacheDeclaration AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType
83syn keyword apacheDeclaration AuthzDefaultAuthoritative
84syn keyword apacheDeclaration AuthGroupFile AuthzGroupFileAuthoritative
85syn match apacheAllowDeny "Allow\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
86syn match apacheAllowDeny "Deny\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
87syn keyword apacheAllowDenyValue All None contained
88syn match apacheOrder "^\s*Order\s.*$" contains=apacheOrderValue,apacheComment
89syn keyword apacheOrderValue Deny Allow contained
90syn keyword apacheDeclaration  AuthzOwnerAuthoritative
91syn keyword apacheDeclaration  AuthzUserAuthoritative
92syn keyword apacheDeclaration AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault ReadmeName
93syn keyword apacheDeclaration IndexStyleSheet
94syn keyword apacheOption DescriptionWidth FancyIndexing FoldersFirst IconHeight IconsAreLinks IconWidth NameWidth ScanHTMLTitles SuppressColumnSorting SuppressDescription SuppressHTMLPreamble SuppressLastModified SuppressSize TrackModified
95syn keyword apacheOption Ascending Descending Name Date Size Description
96syn keyword apacheOption HTMLTable SuppressIcon SuppressRules VersionSort XHTML
97syn keyword apacheOption IgnoreClient IgnoreCase ShowForbidden SuppresRules
98syn keyword apacheDeclaration CacheForceCompletion CacheMaxStreamingBuffer
99syn keyword apacheDeclaration CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate
100syn keyword apacheDeclaration MetaFiles MetaDir MetaSuffix
101syn keyword apacheDeclaration ScriptLog ScriptLogLength ScriptLogBuffer
102syn keyword apacheDeclaration ScriptStock
103syn keyword apacheDeclaration CharsetDefault CharsetOptions CharsetSourceEnc
104syn keyword apacheOption DebugLevel ImplicitAdd NoImplicitAdd
105syn keyword apacheDeclaration Dav DavDepthInfinity DavMinTimeout
106syn keyword apacheDeclaration DavLockDB
107syn keyword apacheDeclaration DavGenericLockDB
108syn keyword apacheDeclaration DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver
109syn keyword apacheDeclaration DeflateCompressionLevel DeflateBufferSize DeflateFilterNote DeflateMemLevel DeflateWindowSize
110syn keyword apacheDeclaration DirectoryIndex DirectorySlash
111syn keyword apacheDeclaration CacheExpiryCheck CacheGcClean CacheGcDaily CacheGcInterval CacheGcMemUsage CacheGcUnused CacheSize CacheTimeMargin
112syn keyword apacheDeclaration CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot
113syn keyword apacheDeclaration DumpIOInput DumpIOOutput
114syn keyword apacheDeclaration ProtocolEcho
115syn keyword apacheDeclaration PassEnv SetEnv UnsetEnv
116syn keyword apacheDeclaration Example
117syn keyword apacheDeclaration ExpiresActive ExpiresByType ExpiresDefault
118syn keyword apacheDeclaration ExtFilterDefine ExtFilterOptions
119syn keyword apacheOption PreservesContentLength DebugLevel LogStderr NoLogStderr
120syn match apacheOption "\<\(cmd\|mode\|intype\|outtype\|ftype\|disableenv\|enableenv\)\ze="
121syn keyword apacheDeclaration CacheFile MMapFile
122syn keyword apacheDeclaration FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace
123syn keyword apacheDeclaration Header
124syn keyword apacheDeclaration RequestHeader
125syn keyword apacheOption set unset append add
126syn keyword apacheDeclaration IdentityCheck IdentityCheckTimeout
127syn keyword apacheDeclaration ImapMenu ImapDefault ImapBase
128syn keyword apacheOption none formatted semiformatted unformatted
129syn keyword apacheOption nocontent referer error map
130syn keyword apacheDeclaration SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack
131syn keyword apacheOption on off full
132syn keyword apacheDeclaration AddModuleInfo
133syn keyword apacheDeclaration ISAPIReadAheadBuffer ISAPILogNotSupported ISAPIAppendLogToErrors ISAPIAppendLogToQuery
134syn keyword apacheDeclaration ISAPICacheFile ISAIPFakeAsync
135syn keyword apacheDeclaration LDAPCertDBPath
136syn keyword apacheDeclaration LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert
137syn keyword apacheOption CA_DER CA_BASE64 CA_CERT7_DB CA_SECMOD CERT_DER CERT_BASE64 CERT_KEY3_DB CERT_NICKNAME CERT_PFX KEY_DER KEY_BASE64 KEY_PFX
138syn keyword apacheDeclaration BufferedLogs CookieLog CustomLog LogFormat TransferLog
139syn keyword apacheDeclaration ForensicLog
140syn keyword apacheDeclaration MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize
141syn keyword apacheDeclaration AddCharset AddEncoding AddHandler AddLanguage AddType DefaultLanguage RemoveEncoding RemoveHandler RemoveType TypesConfig
142syn keyword apacheDeclaration AddInputFilter AddOutputFilter ModMimeUsePathInfo MultiviewsMatch RemoveInputFilter RemoveOutputFilter RemoveCharset
143syn keyword apacheOption NegotiatedOnly Filters Handlers
144syn keyword apacheDeclaration MimeMagicFile
145syn keyword apacheDeclaration MMapFile
146syn keyword apacheDeclaration CacheNegotiatedDocs LanguagePriority ForceLanguagePriority
147syn keyword apacheDeclaration NWSSLTrustedCerts NWSSLUpgradeable SecureListen
148syn keyword apacheDeclaration PerlModule PerlRequire PerlTaintCheck PerlWarn
149syn keyword apacheDeclaration PerlSetVar PerlSetEnv PerlPassEnv PerlSetupEnv
150syn keyword apacheDeclaration PerlInitHandler PerlPostReadRequestHandler PerlHeaderParserHandler
151syn keyword apacheDeclaration PerlTransHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler
152syn keyword apacheDeclaration PerlTypeHandler PerlFixupHandler PerlHandler PerlLogHandler
153syn keyword apacheDeclaration PerlCleanupHandler PerlChildInitHandler PerlChildExitHandler
154syn keyword apacheDeclaration PerlRestartHandler PerlDispatchHandler
155syn keyword apacheDeclaration PerlFreshRestart PerlSendHeader
156syn keyword apacheDeclaration php_value php_flag php_admin_value php_admin_flag
157syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)[^>]*>" contains=apacheAnything
158syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPass ProxyPassMatch ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia
159syn keyword apacheDeclaration RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule
160syn keyword apacheOption inherit
161syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase
162syn keyword apacheDeclaration LoadFile LoadModule
163syn keyword apacheDeclaration CheckSpelling CheckCaseOnly
164syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth
165syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>"
166syn keyword apacheOption builtin sem
167syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):"
168syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\|kRSA\|kHDr\|kDHd\|kEDH\|aNULL\|aRSA\|aDSS\|aRH\|eNULL\|DES\|3DES\|RC2\|RC4\|IDEA\|MD5\|SHA1\|SHA\|EXP\|EXPORT40\|EXPORT56\|LOW\|MEDIUM\|HIGH\|RSA\|DH\|EDH\|ADH\|DSS\|NULL\)\>"
169syn keyword apacheOption optional optional_no_ca
170syn keyword apacheDeclaration ExtendedStatus
171syn keyword apacheDeclaration SuexecUserGroup
172syn keyword apacheDeclaration UserDir
173syn keyword apacheDeclaration CookieDomain CookieExpires CookieName CookieStyle CookieTracking
174syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965
175syn match apacheSection "<\/\=\(<IfVersion\)[^>]*>" contains=apacheAnything
176syn keyword apacheDeclaration VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP
177
178" Define the default highlighting
179
180hi def link apacheAllowOverride apacheDeclaration
181hi def link apacheAllowOverrideValue apacheOption
182hi def link apacheAuthType apacheDeclaration
183hi def link apacheAuthTypeValue apacheOption
184hi def link apacheOptionOption apacheOption
185hi def link apacheDeclaration Function
186hi def link apacheAnything apacheOption
187hi def link apacheOption Number
188hi def link apacheComment Comment
189hi def link apacheFixme Todo
190hi def link apacheLimitSectionKeyword apacheLimitSection
191hi def link apacheLimitSection apacheSection
192hi def link apacheSection Label
193hi def link apacheMethodOption Type
194hi def link apacheAllowDeny Include
195hi def link apacheAllowDenyValue Identifier
196hi def link apacheOrder Special
197hi def link apacheOrderValue String
198hi def link apacheString String
199hi def link apacheError Error
200hi def link apacheUserID Number
201
202
203let b:current_syntax = "apache"
204