mirror of https://github.com/jkjoy/sunpeiwen.git
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
/*
|
|
Language: DNS Zone
|
|
Author: Tim Schumacher <tim@datenknoten.me>
|
|
Category: config
|
|
Website: https://en.wikipedia.org/wiki/Zone_file
|
|
*/
|
|
|
|
/** @type LanguageFn */
|
|
function dns(hljs) {
|
|
const KEYWORDS = [
|
|
"IN",
|
|
"A",
|
|
"AAAA",
|
|
"AFSDB",
|
|
"APL",
|
|
"CAA",
|
|
"CDNSKEY",
|
|
"CDS",
|
|
"CERT",
|
|
"CNAME",
|
|
"DHCID",
|
|
"DLV",
|
|
"DNAME",
|
|
"DNSKEY",
|
|
"DS",
|
|
"HIP",
|
|
"IPSECKEY",
|
|
"KEY",
|
|
"KX",
|
|
"LOC",
|
|
"MX",
|
|
"NAPTR",
|
|
"NS",
|
|
"NSEC",
|
|
"NSEC3",
|
|
"NSEC3PARAM",
|
|
"PTR",
|
|
"RRSIG",
|
|
"RP",
|
|
"SIG",
|
|
"SOA",
|
|
"SRV",
|
|
"SSHFP",
|
|
"TA",
|
|
"TKEY",
|
|
"TLSA",
|
|
"TSIG",
|
|
"TXT"
|
|
];
|
|
return {
|
|
name: 'DNS Zone',
|
|
aliases: [
|
|
'bind',
|
|
'zone'
|
|
],
|
|
keywords: KEYWORDS,
|
|
contains: [
|
|
hljs.COMMENT(';', '$', { relevance: 0 }),
|
|
{
|
|
className: 'meta',
|
|
begin: /^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/
|
|
},
|
|
// IPv6
|
|
{
|
|
className: 'number',
|
|
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'
|
|
},
|
|
// IPv4
|
|
{
|
|
className: 'number',
|
|
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'
|
|
},
|
|
hljs.inherit(hljs.NUMBER_MODE, { begin: /\b\d+[dhwm]?/ })
|
|
]
|
|
};
|
|
}
|
|
|
|
module.exports = dns;
|