From 3c5c7155c27e66df7664838671a673513f7f0eb5 Mon Sep 17 00:00:00 2001 From: kristuff Date: Sun, 17 Jan 2021 19:09:15 +0100 Subject: [PATCH 01/11] v0.9.9 **Added** - better exception handling with new class `SilentApiHandler`: to not raise any exception during API request but instead return an `ApiResponse` with errors - version constant - `ApiReponse` has new `errors()` and `hasError()` methods --- README.md | 2 +- lib/ApiBase.php | 2 +- lib/ApiHandler.php | 11 +- lib/ApiResponse.php | 36 ++++++- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- lib/SilentApiHandler.php | 164 +++++++++++++++++++++++++++++ 7 files changed, 210 insertions(+), 9 deletions(-) create mode 100644 lib/SilentApiHandler.php diff --git a/README.md b/README.md index f300358..23ee560 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": ">=0.9.8-stable" + "kristuff/abuseipdb": ">=0.9.9-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 0a4edd2..e35a348 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.8 + * @version 0.9.9 * @copyright 2020-2021 Kristuff */ diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index b8eadd2..549c985 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.8 + * @version 0.9.9 * @copyright 2020-2021 Kristuff */ @@ -32,6 +32,11 @@ class ApiHandler extends ApiBase */ use CurlTrait; + /** + * @var string $version + */ + const VERSION = 'v0.9.9'; + /** * The ips to remove from report messages * Generally you will add to this list yours ipv4 and ipv6, hostname, domain names @@ -214,8 +219,8 @@ class ApiHandler extends ApiBase public function check(string $ip, int $maxAgeInDays = 30, bool $verbose = false): ApiResponse { // max age must be less or equal to 365 - if ($maxAgeInDays > 365 || $maxAgeInDays < 1){ - throw new \InvalidArgumentException('maxAgeInDays must be between 1 and 365 (' . $maxAgeInDays . ' was given)'); + if ( $maxAgeInDays > 365 || $maxAgeInDays < 1 ){ + throw new \InvalidArgumentException('maxAgeInDays must be between 1 and 365.'); } // ip must be set diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 1b9a232..1231c00 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.8 + * @version 0.9.9 * @copyright 2020-2021 Kristuff */ @@ -33,6 +33,13 @@ class ApiResponse */ protected $curlResponse; + /** + * + * @access protected + * @var object + */ + protected $decodedResponse; + /** * Constructor * @@ -43,6 +50,7 @@ class ApiResponse public function __construct(?string $plaintext = null) { $this->curlResponse = $plaintext; + $this->decodedResponse = json_decode($plaintext, false); } /** @@ -66,7 +74,7 @@ class ApiResponse */ public function getObject(): ?object { - return json_decode($this->curlResponse, false); + return $this->decodedResponse; } /** @@ -80,4 +88,28 @@ class ApiResponse { return $this->curlResponse; } + + /** + * Get whether the response contains error(s) + * + * @access public + * + * @return bool + */ + public function hasError(): bool + { + return count($this->errors()) > 0; + } + + /** + * Get an array of errors (object) contained is response + * + * @access public + * + * @return array + */ + public function errors(): array + { + return ($this->decodedResponse && $this->decodedResponse->errors) ? $this->decodedResponse->errors : []; + } } \ No newline at end of file diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index 53758d6..bf73b1e 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.8 + * @version 0.9.9 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index 7290792..bdf6ead 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.8 + * @version 0.9.9 * @copyright 2020-2021 Kristuff */ diff --git a/lib/SilentApiHandler.php b/lib/SilentApiHandler.php new file mode 100644 index 0000000..dd45bc2 --- /dev/null +++ b/lib/SilentApiHandler.php @@ -0,0 +1,164 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @version 0.9.9 + * @copyright 2020-2021 Kristuff + */ + +namespace Kristuff\AbuseIPDB; + +/** + * Class SilentApiHandler + * + * Overwrite ApiHandler with Exception handling + * Instead of Exception, all method return an ApiResponse that may + * contains errors from the AbuseIPDB API, or internal errors + */ +class SilentApiHandler extends ApiHandler +{ + /** + * Get an internal error message in an ApiResponse object + * + * @access public + * @param string $message The error message + * + * @return ApiResponse + */ + public function getErrorResponse(string $message): ApiResponse + { + $response = [ + "errors" => [ + [ + "title" => "Internal Error", + "detail" => $message + ] + ] + ]; + + return new ApiResponse(json_encode($response)); + } + + /** + * Performs a 'report' api request, with Exception handling + * + * @access public + * @param string $ip The ip to report + * @param string $categories The report category(es) + * @param string $message The report message + * + * @return ApiResponse + */ + public function report(string $ip, string $categories, string $message): ApiResponse + { + try { + return parent::report($ip,$categories,$message); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } + + /** + * Performs a 'bulk-report' api request, with Exception handling + * + * @access public + * @param string $filePath The CSV file path. Could be an absolute or relative path. + * + * @return ApiResponse + */ + public function bulkReport(string $filePath): ApiResponse + { + try { + return parent::bulkReport($filePath); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } + + /** + * Perform a 'clear-address' api request, with Exception handling + * + * @access public + * @param string $ip The IP to clear reports + * + * @return ApiResponse + */ + public function clearAddress(string $ip): ApiResponse + { + try { + return parent::clearAddress($ip); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } + + /** + * Perform a 'check' api request, with Exception handling + * + * @access public + * @param string $ip The ip to check + * @param int $maxAgeInDays Max age in days. Default is 30. + * @param bool $verbose True to get the full response (last reports and countryName). Default is false + * + * @return ApiResponse + */ + public function check(string $ip, int $maxAgeInDays = 30, bool $verbose = false): ApiResponse + { + try { + return parent::check($ip, $maxAgeInDays, $verbose); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } + + /** + * Perform a 'check-block' api request, with Exception handling + * + * @access public + * @param string $network The network to check + * @param int $maxAgeInDays The Max age in days, must + * + * @return ApiResponse + */ + public function checkBlock(string $network, int $maxAgeInDays = 30): ApiResponse + { + try { + return parent::checkBlock($network, $maxAgeInDays); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } + + /** + * Perform a 'blacklist' api request, with Exception handling + * + * @access public + * @param int $limit The blacklist limit. Default is 10000 (the api default limit) + * @param bool $plainText True to get the response in plaintext list. Default is false + * @param int $confidenceMinimum The abuse confidence score minimum (subscribers feature). Default is 100. + * The confidence minimum must be between 25 and 100. + * This parameter is subscriber feature (not honored otherwise). + * + * @return ApiResponse + */ + public function blacklist(int $limit = 10000, bool $plainText = false, int $confidenceMinimum = 100): ApiResponse + { + try { + return parent::blacklist($limit, $plainText, $confidenceMinimum); + } catch (\Exception $e) { + return $this->getErrorResponse($e->getMessage()); + } + } +} \ No newline at end of file From 77c2857eb87d2fbf895a2a03fece60c81b368efd Mon Sep 17 00:00:00 2001 From: kristuff Date: Fri, 29 Jan 2021 20:30:12 +0100 Subject: [PATCH 02/11] v0.9.10 **Changed** - report categories methods related now static - `SilentApiHandler` class renamed `QuietApiHandler` **break change** - new static method `ApiResponse::createErrorResponse` --- README.md | 2 +- composer.json | 1 + lib/ApiBase.php | 33 ++++++++------ lib/ApiHandler.php | 8 ++-- lib/ApiResponse.php | 27 +++++++++++- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- ...lentApiHandler.php => QuietApiHandler.php} | 44 +++++-------------- 8 files changed, 63 insertions(+), 56 deletions(-) rename lib/{SilentApiHandler.php => QuietApiHandler.php} (77%) diff --git a/README.md b/README.md index 23ee560..1763b8a 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": ">=0.9.9-stable" + "kristuff/abuseipdb": ">=0.9.10-stable" }, ``` diff --git a/composer.json b/composer.json index 61b0af6..860a576 100644 --- a/composer.json +++ b/composer.json @@ -2,6 +2,7 @@ "name": "kristuff/abuseipdb", "description": "A PHP wrapper for AbuseIPDB API v2", "type": "library", + "keywords": ["abuseIPDB", "API"], "license": "MIT", "authors": [ { diff --git a/lib/ApiBase.php b/lib/ApiBase.php index e35a348..c0d029e 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -47,9 +47,10 @@ abstract class ApiBase * shorname, id (string), long name * last paramter is false when the category cant' be used alone * + * @static * @var array */ - protected $aipdbApiCategories = [ + protected static $aipdbApiCategories = [ // Altering DNS records resulting in improper redirection. ['dns-c' , '1', 'DNS Compromise', true], @@ -134,25 +135,27 @@ abstract class ApiBase * Get the list of report categories * * @access public + * @static * * @return array */ - public function getCategories() + public static function getCategories(): array { - return $this->aipdbApiCategories; + return self::$aipdbApiCategories; } /** * Get the category id corresponding to given name * * @access public - * @param string $categoryName The report categoriy name + * @static + * @param string $categoryName The report category name * * @return string|bool The category id in string format if found, otherwise false */ - public function getCategoryIdbyName(string $categoryName) + public static function getCategoryIdbyName(string $categoryName) { - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[0] === $categoryName) { return $cat; } @@ -166,13 +169,14 @@ abstract class ApiBase * Get the category name corresponding to given id * * @access public + * @static * @param string $categoryId The report category id * * @return string|bool The category name if found, otherwise false */ - public function getCategoryNameById(string $categoryId) + public static function getCategoryNameById(string $categoryId) { - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[1] === $categoryId) { return $cat; } @@ -186,15 +190,16 @@ abstract class ApiBase * Get the index of category corresponding to given value * * @access protected + * @static * @param string $value The report category id or name * @param string $index The index in value array * * @return int|bool The category index if found, otherwise false */ - protected function getCategoryIndex(string $value, int $index) + protected static function getCategoryIndex(string $value, int $index) { $i = 0; - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[$index] === $value) { return $i; } @@ -229,7 +234,7 @@ abstract class ApiBase foreach ($cats as $cat) { // get index on our array of categories - $catIndex = is_numeric($cat) ? $this->getCategoryIndex($cat, 1) : $this->getCategoryIndex($cat, 0); + $catIndex = is_numeric($cat) ? self::getCategoryIndex($cat, 1) : self::getCategoryIndex($cat, 0); // check if found if ($catIndex === false ){ @@ -237,13 +242,13 @@ abstract class ApiBase } // get Id - $catId = $this->aipdbApiCategories[$catIndex][1]; + $catId = self::$aipdbApiCategories[$catIndex][1]; // need another ? if ($needAnother !== false){ // is a standalone cat ? - if ($this->aipdbApiCategories[$catIndex][3] === false) { + if (self::$aipdbApiCategories[$catIndex][3] === false) { $needAnother = true; } else { diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 549c985..7f93857 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -33,9 +33,9 @@ class ApiHandler extends ApiBase use CurlTrait; /** - * @var string $version + * @var string */ - const VERSION = 'v0.9.9'; + const VERSION = 'v0.9.10'; /** * The ips to remove from report messages @@ -314,7 +314,7 @@ class ApiHandler extends ApiBase * @param bool $plainText True to get the response in plaintext list. Default is false * @param int $confidenceMinimum The abuse confidence score minimum (subscribers feature). Default is 100. * The confidence minimum must be between 25 and 100. - * This parameter is subscriber feature (not honored otherwise). + * This parameter is a subscriber feature (not honored otherwise). * * @return ApiResponse * @throws \RuntimeException diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 1231c00..8fa3e3c 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -50,7 +50,7 @@ class ApiResponse public function __construct(?string $plaintext = null) { $this->curlResponse = $plaintext; - $this->decodedResponse = json_decode($plaintext, false); + $this->decodedResponse = !empty($plaintext) ? json_decode($plaintext, false) : null; } /** @@ -112,4 +112,27 @@ class ApiResponse { return ($this->decodedResponse && $this->decodedResponse->errors) ? $this->decodedResponse->errors : []; } + + /** + * Get an internal error message in an ApiResponse object + * + * @access public + * @static + * @param string $message The error message + * + * @return ApiResponse + */ + public static function createErrorResponse(string $message): ApiResponse + { + $response = [ + "errors" => [ + [ + "title" => "Internal Error", + "detail" => $message + ] + ] + ]; + + return new ApiResponse(json_encode($response)); + } } \ No newline at end of file diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index bf73b1e..ba44556 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index bdf6ead..fd5b75c 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ diff --git a/lib/SilentApiHandler.php b/lib/QuietApiHandler.php similarity index 77% rename from lib/SilentApiHandler.php rename to lib/QuietApiHandler.php index dd45bc2..0bea1ee 100644 --- a/lib/SilentApiHandler.php +++ b/lib/QuietApiHandler.php @@ -14,43 +14,21 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ namespace Kristuff\AbuseIPDB; /** - * Class SilentApiHandler + * Class QuietApiHandler * * Overwrite ApiHandler with Exception handling - * Instead of Exception, all method return an ApiResponse that may + * Instead of Exception, all methods return an ApiResponse that may * contains errors from the AbuseIPDB API, or internal errors */ -class SilentApiHandler extends ApiHandler +class QuietApiHandler extends ApiHandler { - /** - * Get an internal error message in an ApiResponse object - * - * @access public - * @param string $message The error message - * - * @return ApiResponse - */ - public function getErrorResponse(string $message): ApiResponse - { - $response = [ - "errors" => [ - [ - "title" => "Internal Error", - "detail" => $message - ] - ] - ]; - - return new ApiResponse(json_encode($response)); - } - /** * Performs a 'report' api request, with Exception handling * @@ -66,7 +44,7 @@ class SilentApiHandler extends ApiHandler try { return parent::report($ip,$categories,$message); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -83,7 +61,7 @@ class SilentApiHandler extends ApiHandler try { return parent::bulkReport($filePath); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -100,7 +78,7 @@ class SilentApiHandler extends ApiHandler try { return parent::clearAddress($ip); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -119,7 +97,7 @@ class SilentApiHandler extends ApiHandler try { return parent::check($ip, $maxAgeInDays, $verbose); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -137,7 +115,7 @@ class SilentApiHandler extends ApiHandler try { return parent::checkBlock($network, $maxAgeInDays); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -149,7 +127,7 @@ class SilentApiHandler extends ApiHandler * @param bool $plainText True to get the response in plaintext list. Default is false * @param int $confidenceMinimum The abuse confidence score minimum (subscribers feature). Default is 100. * The confidence minimum must be between 25 and 100. - * This parameter is subscriber feature (not honored otherwise). + * This parameter is a subscriber feature (not honored otherwise). * * @return ApiResponse */ @@ -158,7 +136,7 @@ class SilentApiHandler extends ApiHandler try { return parent::blacklist($limit, $plainText, $confidenceMinimum); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } } \ No newline at end of file From adff27d86db674b2ccdcfc0a2f42b38b2084bef6 Mon Sep 17 00:00:00 2001 From: kristuff Date: Tue, 23 Feb 2021 20:31:53 +0100 Subject: [PATCH 03/11] v0.9.11 **Fixed** - getCategoryIdByName and getCategoryNameById now return string (instead array) - IoT Targeted report category now named iot (instead of oit) --- README.md | 2 +- lib/ApiBase.php | 10 +++++----- lib/ApiHandler.php | 4 ++-- lib/ApiResponse.php | 2 +- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- lib/QuietApiHandler.php | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 1763b8a..b9df5c3 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": ">=0.9.10-stable" + "kristuff/abuseipdb": ">=0.9.11-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index c0d029e..2be1bd9 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ @@ -128,7 +128,7 @@ abstract class ApiBase // Abuse was targeted at an "Internet of Things" type device. Include // information about what type of device was targeted in the comments. - ['oit' , '23', 'IoT Targeted', true], + ['iot' , '23', 'IoT Targeted', true], ]; /** @@ -153,11 +153,11 @@ abstract class ApiBase * * @return string|bool The category id in string format if found, otherwise false */ - public static function getCategoryIdbyName(string $categoryName) + public static function getCategoryIdByName(string $categoryName) { foreach (self::$aipdbApiCategories as $cat){ if ($cat[0] === $categoryName) { - return $cat; + return $cat[1]; } } @@ -178,7 +178,7 @@ abstract class ApiBase { foreach (self::$aipdbApiCategories as $cat){ if ($cat[1] === $categoryId) { - return $cat; + return $cat[0]; } } diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 7f93857..2bf2d43 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ @@ -35,7 +35,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.10'; + const VERSION = 'v0.9.11'; /** * The ips to remove from report messages diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 8fa3e3c..099e705 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index ba44556..18ce4f1 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index fd5b75c..27becac 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index 0bea1ee..96211d7 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.10 + * @version 0.9.11 * @copyright 2020-2021 Kristuff */ From 37b0a2eaa99daf065957b0f2f57da5c32b824e56 Mon Sep 17 00:00:00 2001 From: kristuff Date: Sun, 4 Jul 2021 13:09:24 +0200 Subject: [PATCH 04/11] v0.9.12 **Fixed** - Incorrect return type in `ApiResponse::getObject()` method (bug introduced in v0.9.8 with PHP strict types) - cleaning, typos --- .gitignore | 2 -- README.md | 5 ++--- composer.json | 4 +++- lib/ApiBase.php | 10 +++++----- lib/ApiHandler.php | 8 ++++---- lib/ApiResponse.php | 10 +++++----- lib/CurlTrait.php | 6 +++--- lib/InvalidPermissionException.php | 6 +++--- lib/QuietApiHandler.php | 6 +++--- 9 files changed, 28 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 25d109d..208a599 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -_* -.old* vendor/* \ No newline at end of file diff --git a/README.md b/README.md index b9df5c3..bcb3ae3 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": ">=0.9.11-stable" + "kristuff/abuseipdb": "^0.9.12-stable" }, ``` @@ -41,8 +41,7 @@ More infos - [Project website](https://kristuff.fr/projects/abuseipdb) - [Api documentation](https://kristuff.fr/projects/abuseipdb/doc) -- [Config/Install guide](https://kristuff.fr/projects/abuseipdb/technical#configuration) -- [CLI version](https://kristuff.fr/projects/abuseipdbcli) +- CLI version: [github](https://github.com/kristuff/abuseipdb-cli) | [website](https://kristuff.fr/projects/abuseipdbcli) License diff --git a/composer.json b/composer.json index 860a576..d473e9d 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,9 @@ "authors": [ { "name": "Kristuff", - "homepage": "https://github.com/kristuff" + "homepage": "https://github.com/kristuff", + "email": "kristuff@kristuff.fr", + "role": "Developer" } ], "require": { diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 2be1bd9..366d606 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ @@ -44,8 +44,8 @@ abstract class ApiBase /** * AbuseIPDB API v2 categories - * shorname, id (string), long name - * last paramter is false when the category cant' be used alone + * shortname, id (string), long name + * last parameter is false when the category can't be used alone * * @static * @var array diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 2bf2d43..6b800bd 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ @@ -35,7 +35,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.11'; + const VERSION = 'v0.9.12'; /** * The ips to remove from report messages diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 099e705..0a7b50a 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ @@ -70,9 +70,9 @@ class ApiResponse * * @access public * - * @return object|null + * @return \stdClass|null */ - public function getObject(): ?object + public function getObject(): ?\stdClass { return $this->decodedResponse; } diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index 18ce4f1..683c5e5 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index 27becac..9183df9 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index 96211d7..8995c33 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -7,14 +7,14 @@ * / ___ \| |_) | |_| \__ \ __/| || __/| |_| | |_) | * /_/ \_\_.__/ \__,_|___/\___|___|_| |____/|____/ * - * This file is part of Kristuff\AbsuseIPDB. + * This file is part of Kristuff\AbuseIPDB. * - * (c) Kristuff + * (c) Kristuff * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.11 + * @version 0.9.12 * @copyright 2020-2021 Kristuff */ From c4b5c655981577f5fe106b53812791dd6ea840b6 Mon Sep 17 00:00:00 2001 From: kristuff Date: Sat, 18 Sep 2021 21:41:42 +0200 Subject: [PATCH 05/11] Fix #3 Check *properly* if property exists to prevent PHP notice. --- lib/ApiResponse.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 0a7b50a..d1393b6 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -110,7 +110,7 @@ class ApiResponse */ public function errors(): array { - return ($this->decodedResponse && $this->decodedResponse->errors) ? $this->decodedResponse->errors : []; + return ($this->decodedResponse && property_exists($this->decodedResponse, 'errors')) ? $this->decodedResponse->errors : []; } /** From 3ab67950a1e7ee1e9b23f9afc45a1f553a79b3c8 Mon Sep 17 00:00:00 2001 From: kristuff Date: Sat, 18 Sep 2021 21:42:24 +0200 Subject: [PATCH 06/11] v0.9.13 --- README.md | 2 +- lib/ApiBase.php | 2 +- lib/ApiHandler.php | 4 ++-- lib/ApiResponse.php | 2 +- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- lib/QuietApiHandler.php | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bcb3ae3..a924182 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": "^0.9.12-stable" + "kristuff/abuseipdb": "^0.9.13-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 366d606..30f5002 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 6b800bd..69255ef 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ @@ -35,7 +35,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.12'; + const VERSION = 'v0.9.13'; /** * The ips to remove from report messages diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index d1393b6..c5e7210 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index 683c5e5..3effad8 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index 9183df9..57e4a14 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index 8995c33..d06d835 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.12 + * @version 0.9.13 * @copyright 2020-2021 Kristuff */ From d1d9cf9ad0fcac083e4c24aa009850e43e83cf24 Mon Sep 17 00:00:00 2001 From: kristuff Date: Mon, 6 Dec 2021 21:40:39 +0100 Subject: [PATCH 07/11] v0.9.14 **Changes** - **New**: the `ApiHandler` (and `QuietApiHandler`) constructor takes now a **timeout** in third parameter. The timeout is expressed in **milliseconds** . The timeout will apply to all API request methods (will raise exception if reached out). Default is **0** (no timeout). - Formatting --- README.md | 2 +- lib/ApiBase.php | 13 +++--- lib/ApiHandler.php | 65 ++++++++++++++++++++++-------- lib/ApiResponse.php | 13 +++--- lib/CurlTrait.php | 13 +++--- lib/InvalidPermissionException.php | 13 +++--- lib/QuietApiHandler.php | 13 +++--- 7 files changed, 80 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index a924182..451e100 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": "^0.9.13-stable" + "kristuff/abuseipdb": "^0.9.14-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 30f5002..238237a 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 69255ef..b878010 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ @@ -35,7 +34,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.13'; + const VERSION = 'v0.9.14'; /** * The ips to remove from report messages @@ -46,18 +45,31 @@ class ApiHandler extends ApiBase */ protected $selfIps = []; + /** + * The maximum number of milliseconds to allow cURL functions to execute. If libcurl is + * built to use the standard system name resolver, that portion of the connect will still + * use full-second resolution for timeouts with a minimum timeout allowed of one second. + * + * @access protected + * @var int + */ + protected $timeout = 0; + /** * Constructor * * @access public * @param string $apiKey The AbuseIPDB api key * @param array $myIps The Ips/domain name you don't want to display in report messages + * @param int $timeout The maximum number of milliseconds to allow internal cURL functions + * to execute. Default is 0, no timeout * */ - public function __construct(string $apiKey, array $myIps = []) + public function __construct(string $apiKey, array $myIps = [], int $timeout = 0) { $this->aipdbApiKey = $apiKey; $this->selfIps = $myIps; + $this->timeout = $timeout; } /** @@ -72,6 +84,7 @@ class ApiHandler extends ApiBase return array( 'apiKey' => $this->aipdbApiKey, 'selfIps' => $this->selfIps, + 'timeout' => $this->timeout, ); } @@ -160,6 +173,7 @@ class ApiHandler extends ApiBase * @return ApiResponse * @throws \RuntimeException * @throws \InvalidArgumentException + * @throws InvalidPermissionException */ public function bulkReport(string $filePath): ApiResponse { @@ -356,9 +370,10 @@ class ApiHandler extends ApiBase */ protected function apiRequest(string $path, array $data, string $method = 'GET', string $csvFilePath = ''): ApiResponse { - // set api url - $url = $this->aipdbApiEndpoint . $path; - + $curlErrorNumber = -1; // will be used later to check curl execution + $curlErrorMessage = ''; + $url = $this->aipdbApiEndpoint . $path; // api url + // set the wanted format, JSON (required to prevent having full html page on error) // and the AbuseIPDB API Key as a header $headers = [ @@ -386,17 +401,35 @@ class ApiHandler extends ApiBase $url .= '?' . http_build_query($data); } - // set the url to call + // set url and options $this->setCurlOption($ch, CURLOPT_URL, $url); $this->setCurlOption($ch, CURLOPT_RETURNTRANSFER, 1); $this->setCurlOption($ch, CURLOPT_HTTPHEADER, $headers); - + + /** + * set timeout + * + * @see https://curl.se/libcurl/c/CURLOPT_TIMEOUT_MS.html + * @see https://curl.se/libcurl/c/CURLOPT_CONNECTTIMEOUT_MS.html + * If libcurl is built to use the standard system name resolver, that portion of the transfer + * will still use full-second resolution for timeouts with a minimum timeout allowed of one second. + * In unix-like systems, this might cause signals to be used unless CURLOPT_NOSIGNAL is set. + */ + $this->setCurlOption($ch, CURLOPT_NOSIGNAL, 1); + $this->setCurlOption($ch, CURLOPT_TIMEOUT_MS, $this->timeout); + // execute curl call $result = curl_exec($ch); - + $curlErrorNumber = curl_errno($ch); + $curlErrorMessage = curl_error($ch); + // close connection curl_close($ch); - + + if ($curlErrorNumber !== 0){ + throw new \RuntimeException($curlErrorMessage); + } + return new ApiResponse($result !== false ? $result : ''); } diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index c5e7210..d4abd1b 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index 3effad8..cbacf0f 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index 57e4a14..14e34aa 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index d06d835..2c69d81 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -1,12 +1,11 @@ @@ -14,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.13 + * @version 0.9.14 * @copyright 2020-2021 Kristuff */ From dc30007818db41e37c587225e74ae87bf3e1bf1b Mon Sep 17 00:00:00 2001 From: kristuff Date: Wed, 8 Dec 2021 20:42:33 +0100 Subject: [PATCH 08/11] v0.9.15 **Changes** - **New** `ApiHandler::setTimeout(int $timeout)` method allows to change default timeout before any API request. Timeout is expressed in milliseconds. Overwrites the value passed in constructor, useful when performing multiple queries with same handler but different timeout. --- README.md | 5 +++-- lib/ApiBase.php | 2 +- lib/ApiHandler.php | 19 +++++++++++++++++-- lib/ApiResponse.php | 2 +- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- lib/QuietApiHandler.php | 2 +- 7 files changed, 25 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 451e100..411be3d 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,8 @@ Features - Single IP report request **✓** - Bulk report request (send `csv` file) **✓** - Clear IP address request (remove your own reports) **✓** -- Auto cleaning report comments from sensitive data (email, custom ip/domain names list) **✓** +- Auto cleaning report comments from sensitive data (email, custom ip/domain names list) **✓** +- Define timeout for cURL internal requests **✓** Requirements ------------ @@ -32,7 +33,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": "^0.9.14-stable" + "kristuff/abuseipdb": "^0.9.15-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 238237a..78c83eb 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index b878010..a6326c2 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ @@ -34,7 +34,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.14'; + const VERSION = 'v0.9.15'; /** * The ips to remove from report messages @@ -72,6 +72,21 @@ class ApiHandler extends ApiBase $this->timeout = $timeout; } + /** + * Sets the cURL timeout (apply then to any API request). Overwrites the value passed in + * constructor, useful when performing multiple queries with same handler but different timeout. + * + * @access public + * @param int $timeout The maximum number of milliseconds to allow internal cURL functions + * to execute. + * + * @return void + */ + public function setTimeout(int $timeout): void + { + $this->timeout = $timeout; + } + /** * Get the current configuration in a indexed array * diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index d4abd1b..8b184f0 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index cbacf0f..abce7bd 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index 14e34aa..f0b6acb 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index 2c69d81..650df31 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.14 + * @version 0.9.15 * @copyright 2020-2021 Kristuff */ From 5639f1813a7be889c9028f722e9fe252bac34df1 Mon Sep 17 00:00:00 2001 From: kristuff Date: Wed, 26 Jan 2022 22:24:24 +0100 Subject: [PATCH 09/11] v1.0 --- LICENSE | 2 +- README.md | 4 ++-- lib/ApiBase.php | 4 ++-- lib/ApiHandler.php | 6 +++--- lib/ApiResponse.php | 4 ++-- lib/CurlTrait.php | 4 ++-- lib/InvalidPermissionException.php | 4 ++-- lib/QuietApiHandler.php | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/LICENSE b/LICENSE index 007d465..933b544 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020-2021 kristuff +Copyright (c) 2020-2022 kristuff Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 411be3d..0a12038 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": "^0.9.15-stable" + "kristuff/abuseipdb": "^1.0-stable" }, ``` @@ -50,7 +50,7 @@ License The MIT License (MIT) -Copyright (c) 2020-2021 Kristuff +Copyright (c) 2020-2022 Kristuff Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/ApiBase.php b/lib/ApiBase.php index 78c83eb..e48440b 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index a6326c2..9549260 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; @@ -34,7 +34,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v0.9.15'; + const VERSION = 'v1.0'; /** * The ips to remove from report messages diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 8b184f0..92f866a 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index abce7bd..ee71cf0 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index f0b6acb..dcc6157 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index 650df31..a272d58 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -13,8 +13,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.15 - * @copyright 2020-2021 Kristuff + * @version 1.0 + * @copyright 2020-2022 Kristuff */ namespace Kristuff\AbuseIPDB; From af62240932bc54461702f96146a1e5feb77493f0 Mon Sep 17 00:00:00 2001 From: kristuff Date: Thu, 6 Oct 2022 00:14:00 +0200 Subject: [PATCH 10/11] Update email pattern in `cleanMessage()` method Update email pattern to handle local addresses without TLD and to allow using the caracter `@` in custom message. Close #4 --- lib/ApiHandler.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 9549260..a096706 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -469,8 +469,8 @@ class ApiHandler extends ApiBase } // If we're reporting spam, further munge any email addresses in the report - $emailPattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/"; - $message = preg_replace($emailPattern, "*", $message); + $emailPattern = "/\b[A-Z0-9!#$%&'*`\/?^{|}~=+_.-]+@[A-Z0-9.-]+\b/i"; + $message = preg_replace($emailPattern, "*", $message); // Make sure message is less 1024 chars return substr($message, 0, 1024); From d7b635875a27efe72967ae031dcc8f79b8aa42d5 Mon Sep 17 00:00:00 2001 From: kristuff Date: Thu, 6 Oct 2022 00:16:16 +0200 Subject: [PATCH 11/11] v1.1 - Fixed: Update email pattern in `cleanMessage()` method to handle local addresses without TLD and to allow using the caracter `@` in custom message. Close #4 --- README.md | 2 +- lib/ApiBase.php | 2 +- lib/ApiHandler.php | 4 ++-- lib/ApiResponse.php | 2 +- lib/CurlTrait.php | 2 +- lib/InvalidPermissionException.php | 2 +- lib/QuietApiHandler.php | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0a12038..d7946f1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": "^1.0-stable" + "kristuff/abuseipdb": "^1.1-stable" }, ``` diff --git a/lib/ApiBase.php b/lib/ApiBase.php index e48440b..9adf14c 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */ diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index a096706..2cee02c 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */ @@ -34,7 +34,7 @@ class ApiHandler extends ApiBase /** * @var string */ - const VERSION = 'v1.0'; + const VERSION = 'v1.1'; /** * The ips to remove from report messages diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 92f866a..3e451f0 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */ diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index ee71cf0..667fdda 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index dcc6157..8ec9bc1 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */ diff --git a/lib/QuietApiHandler.php b/lib/QuietApiHandler.php index a272d58..632b140 100644 --- a/lib/QuietApiHandler.php +++ b/lib/QuietApiHandler.php @@ -13,7 +13,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 1.0 + * @version 1.1 * @copyright 2020-2022 Kristuff */