techzolab / toolsspfcheck
Checks an IP address against a domain's SPF record
Requires
- php: >=5.4
- purplepixie/phpdns: ^2.0
- symfony/http-foundation: 2.8.* || ^3.0 || ^4.0 || ^5.0
Requires (Dev)
- phpunit/phpunit: 4.8.* || 7.*
- satooshi/php-coveralls: ~1.0
- symfony/phpunit-bridge: ^4.2 || 5.*
- symfony/yaml: ~2.1
README
Simple library to check an IP address against a domain's SPF record
Installation
This library is available through Composer.
Run composer require techzolab/toolsspfcheck
or add this to your composer.json:
{ "require": { "techzolab/toolsspfcheck": "^1" } }
Usage
Create a new instance of ToolsSPFCheck. The constructor requires a DNSRecordGetterInterface to be passed. Currently, you have two options:
DNSRecordGetter
which uses PHP's DNS functions to get dataDNSRecordGetterDirect
which uses the PHP DNS Direct Query Module to get data.
<?php use Nzldev\ToolsSPFCheck\ToolsSPFCheck; use Nzldev\ToolsSPFCheck\DNSRecordGetter; require('vendor/autoload.php'); $checker = new ToolsSPFCheck(new DNSRecordGetter()); // Uses php's dns_get_record method for lookup. var_dump($checker->isIPAllowed('127.0.0.1', 'test.com')); // or $checker = new ToolsSPFCheck(new DNSRecordGetterDirect("8.8.8.8")); // Uses phpdns, allowing you to set the nameserver you wish to use for the dns queries. var_dump($checker->isIPAllowed('127.0.0.1', 'test.com'));
Return value is one of ToolsSPFCheck::RESULT_PASS
, ToolsSPFCheck::RESULT_FAIL
, ToolsSPFCheck::RESULT_SOFTFAIL
, ToolsSPFCheck::RESULT_NEUTRAL
, ToolsSPFCheck::RESULT_NONE
, ToolsSPFCheck::RESULT_PERMERROR
, ToolsSPFCheck::RESULT_TEMPERROR
Missing features
A few features are still missing from this library at the moment. Here's a partial list of those features:
- Section 7 of RFC7208 on macros
You are very welcome to submit a pull request adding even part of those features.