1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
| /*
| Language: Apache config
| Author: Ruslan Keba <rukeba@gmail.com>
| Contributors: Ivan Sagalaev <maniac@softwaremaniacs.org>
| Website: https://httpd.apache.org
| Description: language definition for Apache configuration files (httpd.conf & .htaccess)
| Category: common, config
| Audit: 2020
| */
|
| /** @type LanguageFn */
| function apache(hljs) {
| const NUMBER_REF = {
| className: 'number',
| begin: /[$%]\d+/
| };
| const NUMBER = {
| className: 'number',
| begin: /\d+/
| };
| const IP_ADDRESS = {
| className: "number",
| begin: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/
| };
| const PORT_NUMBER = {
| className: "number",
| begin: /:\d{1,5}/
| };
| return {
| name: 'Apache config',
| aliases: [ 'apacheconf' ],
| case_insensitive: true,
| contains: [
| hljs.HASH_COMMENT_MODE,
| {
| className: 'section',
| begin: /<\/?/,
| end: />/,
| contains: [
| IP_ADDRESS,
| PORT_NUMBER,
| // low relevance prevents us from claming XML/HTML where this rule would
| // match strings inside of XML tags
| hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 })
| ]
| },
| {
| className: 'attribute',
| begin: /\w+/,
| relevance: 0,
| // keywords aren’t needed for highlighting per se, they only boost relevance
| // for a very generally defined mode (starts with a word, ends with line-end
| keywords: {
| nomarkup:
| 'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +
| 'sethandler errordocument loadmodule options header listen serverroot ' +
| 'servername'
| },
| starts: {
| end: /$/,
| relevance: 0,
| keywords: { literal: 'on off all deny allow' },
| contains: [
| {
| className: 'meta',
| begin: /\s\[/,
| end: /\]$/
| },
| {
| className: 'variable',
| begin: /[\$%]\{/,
| end: /\}/,
| contains: [
| 'self',
| NUMBER_REF
| ]
| },
| IP_ADDRESS,
| NUMBER,
| hljs.QUOTE_STRING_MODE
| ]
| }
| }
| ],
| illegal: /\S/
| };
| }
|
| module.exports = apache;
|
|