spfcheck : manage the FAIL if a minus is set in part
git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@6031 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
@@ -217,7 +217,7 @@ class spfcheckTest extends PHPUnit_Framework_TestCase
|
|||||||
"+a" => array (),
|
"+a" => array (),
|
||||||
"+mx" => array (),
|
"+mx" => array (),
|
||||||
"+ip4:178.33.236.5" => array ("178.33.236.5"),
|
"+ip4:178.33.236.5" => array ("178.33.236.5"),
|
||||||
"+ip4:137.74.69.64" => array ("137.74.69.64"),
|
"-ip4:137.74.69.64" => array ("137.74.69.64"),
|
||||||
"+ip4:51.254.45.81" => array ("51.254.45.81"),
|
"+ip4:51.254.45.81" => array ("51.254.45.81"),
|
||||||
"-all" => array (),
|
"-all" => array (),
|
||||||
)));
|
)));
|
||||||
@@ -232,4 +232,32 @@ class spfcheckTest extends PHPUnit_Framework_TestCase
|
|||||||
"unknown" => array (),
|
"unknown" => array (),
|
||||||
"-all" => array ())));
|
"-all" => array ())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_ipCheckToSPF_OK_inA ()
|
||||||
|
{
|
||||||
|
$spfcheck = new spfcheck ();
|
||||||
|
$res = $spfcheck->ipCheckToSPF ("plus.spf.tester.fournier38.fr", "178.33.236.5");
|
||||||
|
$this->assertSame ($res, "PASS");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_ipCheckToSPF_FAIL_inALL ()
|
||||||
|
{
|
||||||
|
$spfcheck = new spfcheck ();
|
||||||
|
$res = $spfcheck->ipCheckToSPF ("plus.spf.tester.fournier38.fr", "1.3.6.5");
|
||||||
|
$this->assertSame ($res, "FAIL");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_ipCheckToSPF_OK_inALL ()
|
||||||
|
{
|
||||||
|
$spfcheck = new spfcheck ();
|
||||||
|
$res = $spfcheck->ipCheckToSPF ("plus.spf.tester.fournier38.fr", "1.3.6.5");
|
||||||
|
$this->assertSame ($res, "FAIL");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_ipCheckToSPF_FAIL_inIP4 ()
|
||||||
|
{
|
||||||
|
$spfcheck = new spfcheck ();
|
||||||
|
$res = $spfcheck->ipCheckToSPF ("plus.spf.tester.fournier38.fr", "137.74.69.64");
|
||||||
|
$this->assertSame ($res, "FAIL");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
27
spfcheck.php
27
spfcheck.php
@@ -113,6 +113,12 @@ class spfcheck
|
|||||||
if ($ipaddresses->ipInNetwork ($ip, $ipToTest, $mask))
|
if ($ipaddresses->ipInNetwork ($ip, $ipToTest, $mask))
|
||||||
{
|
{
|
||||||
$this->matchRule = "$key/$part";
|
$this->matchRule = "$key/$part";
|
||||||
|
if ($part{0} === "-")
|
||||||
|
return "FAIL";
|
||||||
|
if ($part{0} === "~")
|
||||||
|
return "SOFTFAIL";
|
||||||
|
if ($part{0} === "?")
|
||||||
|
return "NEUTRAL";
|
||||||
return "PASS";
|
return "PASS";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,6 +139,9 @@ class spfcheck
|
|||||||
$this->matchRule = "$this->catchAllDomain/$this->catchAll";
|
$this->matchRule = "$this->catchAllDomain/$this->catchAll";
|
||||||
return "NEUTRAL";
|
return "NEUTRAL";
|
||||||
}
|
}
|
||||||
|
throw new \Exception (sprintf (dgettext ("domframework",
|
||||||
|
"SFPCheck : Can not determine the SPF result with params '%s' and '%s'"),
|
||||||
|
$domain, $ip), 403 );
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
@@ -258,6 +267,14 @@ class spfcheck
|
|||||||
if (stripos ($part, "redirect=") === 0)
|
if (stripos ($part, "redirect=") === 0)
|
||||||
// {{{
|
// {{{
|
||||||
{
|
{
|
||||||
|
if ($sign !== "")
|
||||||
|
{
|
||||||
|
$this->errors[$domain][$sign.$part] =
|
||||||
|
sprintf (dgettext ("domframework",
|
||||||
|
"Invalid redirect set for domain '%s' : can not be signed"),
|
||||||
|
$domain);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$ext = substr ($part, 9);
|
$ext = substr ($part, 9);
|
||||||
if (! is_string ($ext) || trim ($ext) === "")
|
if (! is_string ($ext) || trim ($ext) === "")
|
||||||
{
|
{
|
||||||
@@ -273,6 +290,14 @@ class spfcheck
|
|||||||
elseif (stripos ($part, "include:") === 0)
|
elseif (stripos ($part, "include:") === 0)
|
||||||
// {{{
|
// {{{
|
||||||
{
|
{
|
||||||
|
if ($sign !== "")
|
||||||
|
{
|
||||||
|
$this->errors[$domain][$sign.$part] =
|
||||||
|
sprintf (dgettext ("domframework",
|
||||||
|
"Invalid include set for domain '%s' : can not be signed"),
|
||||||
|
$domain);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$ext = substr ($part, 8);
|
$ext = substr ($part, 8);
|
||||||
if (! is_string ($ext) || trim ($ext) === "")
|
if (! is_string ($ext) || trim ($ext) === "")
|
||||||
{
|
{
|
||||||
@@ -450,7 +475,7 @@ class spfcheck
|
|||||||
$domain);
|
$domain);
|
||||||
}
|
}
|
||||||
$localAll = $part;
|
$localAll = $part;
|
||||||
$this->catchAll = $part;
|
$this->catchAll = $sign.$part;
|
||||||
$this->catchAllDomain = $domain;
|
$this->catchAllDomain = $domain;
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
|
|||||||
Reference in New Issue
Block a user