2using System.Collections.Generic;
39 internal string s =
null;
42 internal int dnsLookupsLeft = 10;
43 internal readonly
string sender;
44 internal string domain;
45 internal readonly
string helloDomain;
46 internal readonly
string hostDomain;
47 internal readonly IPAddress ip;
61 public Term(
string Sender,
string Domain, IPAddress
Ip,
string HelloDomain,
67 this.helloDomain = HelloDomain;
68 this.hostDomain = HostDomain;
75 public void Reset(
string String)
77 this.s = String?.Trim() ??
string.Empty;
78 this.len = this.s.Length;
82 internal void SkipWhiteSpace()
84 while (this.pos < this.len && this.s[this.pos] <=
' ')
88 internal char PeekNextChar()
90 if (this.pos >= this.len)
93 return this.s[this.pos];
96 internal char NextChar()
98 if (this.pos >= this.len)
99 throw new Exception(
"SPF syntax error.");
101 return this.s[this.pos++];
104 internal int NextInteger()
106 int Start = this.pos;
108 while (
char.IsDigit(this.PeekNextChar()))
111 return int.Parse(this.s.Substring(Start,
this.pos - Start));
114 internal string NextLabel()
116 int Start = this.pos;
119 if (
char.IsLetter(ch = this.PeekNextChar()))
123 while (
char.IsLetter(ch = this.PeekNextChar()) ||
char.IsDigit(ch) ||
124 ch ==
'-' || ch ==
'_' || ch ==
'.')
130 return this.s.Substring(Start, this.pos - Start);
Abstract base class for IP-based SPF mechanisms.
void Reset(string String)
Resets the string representation of the term.
Term(string Sender, string Domain, IPAddress Ip, string HelloDomain, string HostDomain)
SPF Term
SpfQualifier
SPF Mechanism qualifier