58 lines
939 B
JavaScript
58 lines
939 B
JavaScript
import { ConstantField } from "../fields/ConstantField.js";
|
|
import { DomainField } from "../fields/DomainField.js";
|
|
import { DnsTool } from "./DnsTool.js";
|
|
|
|
export class SpfTool extends DnsTool {
|
|
static allowWhitespaceAroundSeparator = false;
|
|
|
|
static fields = [
|
|
new ConstantField("v", "spf1")
|
|
.required()
|
|
.pos(0),
|
|
|
|
new DomainField("include", ":")
|
|
.multiple()
|
|
.pos(1),
|
|
|
|
new DomainField("a", ":")
|
|
.multiple()
|
|
.pos(1),
|
|
|
|
new DomainField("mx", ":")
|
|
.multiple()
|
|
.pos(2),
|
|
|
|
new DomainField("ptr", ":")
|
|
.multiple()
|
|
.pos(2),
|
|
|
|
new DomainField("ipv4", ":")
|
|
.multiple()
|
|
.pos(2),
|
|
|
|
new DomainField("ipv6", ":")
|
|
.multiple()
|
|
.pos(2),
|
|
|
|
new DomainField("exists", ":")
|
|
.multiple()
|
|
.pos(2),
|
|
|
|
new DomainField("redirect", "=")
|
|
.pos(3),
|
|
|
|
new DomainField("exp", "=")
|
|
.pos(3),
|
|
|
|
// TODO all
|
|
];
|
|
|
|
constructor(text) {
|
|
super(text);
|
|
}
|
|
|
|
tokenize() {
|
|
return this.text.split(/\s+/);
|
|
}
|
|
}
|