Parses a so-called "extended-domain" (from and by) part of a Received header.
Looks for and extracts the following fields from an extended-domain part:
Name, Hostname and Address.
The Name part is always the portion of the extended-domain part existing on
its own, outside of the parenthesized hostname and address part. This is
true regardless of whether an address is used as the name, as its assumed to
be the string used to identify the server, whatever it may be.
The parenthesized part normally (but not necessarily) following a name must
"look like" a tcp-info section of an extended domain as defined by RFC5321.
The validation is very purposefully very loose to be accommodating to many
erroneous implementations. The only restriction is the host part must
contain two characters, the first being alphanumeric, followed by any number
of more alphanumeric, '.', and '-' characters. The address part must be
within square brackets, '[]'... although an address outside of square
brackets could be matched by the domain matcher if it exists alone within the
parentheses. The address is any number of '.', numbers, ':' and letters a-f.
This allows it to match ipv6 addresses as well. In addition, the address may
start with the string "ipv6", and may be followed by a port number as some
implementations seem to do.
Strings in parentheses not matching the aforementioned 'domain/address'
pattern will be considered comments, and will be returned as a separate
CommentPart.
- see https://tools.ietf.org/html/rfc5321#section-4.4
- see https://github.com/Te-k/pyreceived/blob/master/test.py
- author Zaahid Bateson
- author Mariusz Krzaczkowski
Methods |
Properties |
Methods |
protected isEndToken(string $token) : bool Overridden to return true if the passed token is a closing parenthesis. |
protected processParts(array $parts) : array Creates a single ReceivedDomainPart out of matched parts. If an
|
Methods |
private matchHostPart(string $value, ?string $hostname, ?string $address) : bool Attempts to match a parenthesized expression to find a hostname and an
|
Methods |