UNPKG

2.4 kBJavaScriptView Raw
1/*
2Language: DNS Zone
3Author: Tim Schumacher <tim@datenknoten.me>
4Category: config
5Website: https://en.wikipedia.org/wiki/Zone_file
6*/
7
8/** @type LanguageFn */
9function dns(hljs) {
10 const KEYWORDS = [
11 "IN",
12 "A",
13 "AAAA",
14 "AFSDB",
15 "APL",
16 "CAA",
17 "CDNSKEY",
18 "CDS",
19 "CERT",
20 "CNAME",
21 "DHCID",
22 "DLV",
23 "DNAME",
24 "DNSKEY",
25 "DS",
26 "HIP",
27 "IPSECKEY",
28 "KEY",
29 "KX",
30 "LOC",
31 "MX",
32 "NAPTR",
33 "NS",
34 "NSEC",
35 "NSEC3",
36 "NSEC3PARAM",
37 "PTR",
38 "RRSIG",
39 "RP",
40 "SIG",
41 "SOA",
42 "SRV",
43 "SSHFP",
44 "TA",
45 "TKEY",
46 "TLSA",
47 "TSIG",
48 "TXT"
49 ];
50 return {
51 name: 'DNS Zone',
52 aliases: [
53 'bind',
54 'zone'
55 ],
56 keywords: KEYWORDS,
57 contains: [
58 hljs.COMMENT(';', '$', { relevance: 0 }),
59 {
60 className: 'meta',
61 begin: /^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/
62 },
63 // IPv6
64 {
65 className: 'number',
66 begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b'
67 },
68 // IPv4
69 {
70 className: 'number',
71 begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b'
72 },
73 hljs.inherit(hljs.NUMBER_MODE, { begin: /\b\d+[dhwm]?/ })
74 ]
75 };
76}
77
78module.exports = dns;