-
Notifications
You must be signed in to change notification settings - Fork 96
/
Copy pathDMARC1.php
91 lines (81 loc) · 2.4 KB
/
DMARC1.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
namespace Spatie\Dns\TXTRecords;
class DMARC1 extends V {
public string $p;
public array $rua;
public array $ruf;
public string $sp;
public int $pct;
public string $fo;
function __construct(string $value)
{
$this->type = 'DMARC';
$this->version = 1;
$this->p = $this->cast('p',$value);
$this->rua = $this->cast('rua',$value);
$this->ruf = $this->cast('ruf',$value);
$this->sp = $this->cast('sp',$value);
$this->pct = $this->cast('pct',$value);
$this->fo = $this->cast('fo',$value);
}
function castP(string $value): string
{
preg_match('/p=(none|quarantine|reject)/', $value, $matches);
if(count($matches) < 2){
return "";
}
return str_replace(";", "",$this->prepareText($matches[1]));
}
function castRua(string $value): array
{
preg_match("/rua=([^;]*)(?:;|$)/i", $value, $matches);
if (isset($matches[1])) {
$emails = preg_split("/\s*,/", $matches[1]);
foreach ($emails as $key => $email) {
$emails[$key] = $this->prepareText($email);
}
}
else {
return "";
}
return $emails;
}
function castRuf(string $value): array
{
preg_match("/ruf=([^;]*)(?:;|$)/i", $value, $matches);
if (isset($matches[1])) {
$emails = preg_split("/\s*,/", $matches[1]);
foreach ($emails as $key => $email) {
$emails[$key] = $this->prepareText($email);
}
}
else {
return "";
}
return $emails;
}
function castSp(string $value): string
{
preg_match('/sp=(none|quarantine|reject)/', $value, $matches);
if(count($matches) < 2){
return "";
}
return str_replace(";", "",$this->prepareText($matches[1]));
}
function castPct(string $value): int
{
preg_match('/pct=([0-9]{1-3}+)/', $value, $matches);
if(count($matches) < 2){
return 100;
}
return str_replace(";", "",$this->prepareInt($matches[1]));
}
function castFo(string $value): string
{
preg_match('/fo=([a-zA-Z0-9:]+)/', $value, $matches);
if(count($matches) < 2){
return "";
}
return str_replace(";", "",$this->prepareText($matches[1]));
}
}