diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 0000000..9160059 --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1 @@ +service_name: travis-ci diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index ddf8b8d..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Test -on: [push, pull_request] -jobs: - test: - name: Test PHP ${{ matrix.php-version }} - runs-on: ubuntu-latest - strategy: - matrix: - php-version: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - - name: PHP Version - run: php --version - - name: Composer Version - run: composer --version - - name: Install Dependencies - run: COMPOSER_MEMORY_LIMIT=-1 composer install - - name: Run Tests - run: vendor/bin/phpunit --coverage-clover ./coverage.xml - - name: Upload Coverage - if: ${{ matrix.php-version == '7.4' }} - uses: codecov/codecov-action@v1 - with: - file: ./coverage.xml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a2144a3..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -composer.lock -composer.phar -.phpunit.result.cache -/vendor/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8bfb40e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,26 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - hhvm + - hhvm-nightly + +matrix: + allow_failures: + - php: hhvm-nightly + +install: + - composer install + +before_script: + - mkdir -p build/logs + - cd tests + +script: + - phpunit --colors --coverage-clover /home/travis/build/joshtronic/php-projecthoneypot/build/logs/clover.xml . + +after_success: + - php ../vendor/bin/coveralls --config ../.coveralls.yml -v diff --git a/FUNDING.yml b/FUNDING.yml deleted file mode 100644 index 9396c28..0000000 --- a/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: joshtronic diff --git a/README.md b/README.md index be38912..d575478 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,23 @@ [![Build Status](http://img.shields.io/travis/joshtronic/php-projecthoneypot.svg?style=flat)][travis] [![Coverage Status](http://img.shields.io/coveralls/joshtronic/php-projecthoneypot.svg?style=flat)][coveralls] [![Downloads](http://img.shields.io/packagist/dm/joshtronic/php-projecthoneypot.svg?style=flat)][packagist] +[![Gittip](http://img.shields.io/gittip/joshtronic.svg?style=flat)][gittip] PHP Wrapper for Project Honey Pot. Compatible with PHP 5.3+ and HHVM. ## Installation -The preferred installation method is via `composer`. From the root of your -project simply run: +The preferred installation method is via `composer`. First add the following +to your `composer.json` -```shell -composer require "joshtronic/php-projecthoneypot:dev-master" +```json +"require": { + "joshtronic/php-projecthoneypot": "dev-master" +} ``` +Then run `composer update` + ## Usage ### Getting Started diff --git a/composer.json b/composer.json index ed5854c..e7d9e51 100644 --- a/composer.json +++ b/composer.json @@ -8,19 +8,16 @@ "license": "MIT", "authors": [{ "name": "Josh Sherman", - "email": "hello@joshtronic.com", + "email": "josh@gravityblvd.com", "homepage": "http://joshtronic.com" }], - "require": { + "require-dev": { "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^9.0" + "satooshi/php-coveralls": "dev-master" }, "autoload": { "psr-4": {"joshtronic\\": "src/"} - }, - "autoload-dev": { - "psr-4": {"joshtronic\\Tests\\": "tests/"} } } diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 82cbb00..0000000 --- a/phpunit.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - tests - - - - - ./src - - - diff --git a/src/ProjectHoneyPot.php b/src/ProjectHoneyPot.php index a82b243..23cfb1b 100644 --- a/src/ProjectHoneyPot.php +++ b/src/ProjectHoneyPot.php @@ -8,8 +8,8 @@ * Licensed under The MIT License. * Redistribution of these files must retain the above copyright notice. * - * @author Josh Sherman - * @copyright Copyright 2012-2015, Josh Sherman + * @author Josh Sherman + * @copyright Copyright 2012-2014, Josh Sherman * @license http://www.opensource.org/licenses/mit-license.html * @link https://github.com/joshtronic/php-projecthoneypot * @link http://www.projecthoneypot.org/httpbl_configure.php @@ -37,9 +37,12 @@ class ProjectHoneyPot */ public function __construct($api_key) { - if (preg_match('/^[a-z]{12}$/', $api_key)) { + if (preg_match('/^[a-z]{12}$/', $api_key)) + { $this->api_key = $api_key; - } else { + } + else + { throw new \Exception('You must specify a valid API key.'); } } @@ -56,7 +59,8 @@ class ProjectHoneyPot public function query($ip_address) { // Validates the IP format - if (filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) { + if (filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) + { // Flips the script, err, IP address $octets = explode('.', $ip_address); krsort($octets); @@ -66,10 +70,12 @@ class ProjectHoneyPot $results = $this->dns_get_record($reversed_ip); // Processes the results - if (isset($results[0]['ip'])) { + if (isset($results[0]['ip'])) + { $results = explode('.', $results[0]['ip']); - if ($results[0] == 127) { + if ($results[0] == 127) + { $results = array( 'last_activity' => $results[1], 'threat_score' => $results[2], @@ -77,31 +83,40 @@ class ProjectHoneyPot ); // Creates an array of categories - switch ($results['categories']) { + switch ($results['categories']) + { case 0: $categories = array('Search Engine'); break; + case 1: $categories = array('Suspicious'); break; + case 2: $categories = array('Harvester'); break; + case 3: $categories = array('Suspicious', 'Harvester'); break; + case 4: $categories = array('Comment Spammer'); break; + case 5: $categories = array('Suspicious', 'Comment Spammer'); break; + case 6: $categories = array('Harvester', 'Comment Spammer'); break; + case 7: $categories = array('Suspicious', 'Harvester', 'Comment Spammer'); break; + default: $categories = array('Reserved for Future Use'); break; @@ -112,7 +127,9 @@ class ProjectHoneyPot return $results; } } - } else { + } + else + { return array('error' => 'Invalid IP address.'); } @@ -122,7 +139,7 @@ class ProjectHoneyPot /** * DNS Get Record * - * Wrapper method for dns_get_record() to allow for easy mocking of the + * Wrapper method for dns_get_record() to allow fo easy mocking of the * results in our tests. Takes an already reversed IP address and does a * DNS lookup for A records against the http:BL API. * diff --git a/tests/ProjectHoneyPotTest.php b/tests/ProjectHoneyPotTest.php index 9c5e103..38128db 100644 --- a/tests/ProjectHoneyPotTest.php +++ b/tests/ProjectHoneyPotTest.php @@ -1,22 +1,21 @@ assertSame('You must specify a valid API key.', $e->getMessage()); - } + new joshtronic\ProjectHoneyPot('foo'); } public function testInvalidIP() { - $object = new ProjectHoneyPot('foobarfoobar'); + $object = new joshtronic\ProjectHoneyPot('foobarfoobar'); $this->assertEquals( array('error' => 'Invalid IP address.'), @@ -26,10 +25,11 @@ class ProjectHoneyPotTest extends TestCase public function testMissingResults() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -40,10 +40,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory0() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -56,10 +57,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory1() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -72,10 +74,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory2() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -88,10 +91,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory3() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -107,10 +111,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory4() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -126,10 +131,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory5() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -145,10 +151,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory6() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -164,10 +171,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategory7() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -183,10 +191,11 @@ class ProjectHoneyPotTest extends TestCase public function testCategoryDefault() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -202,10 +211,11 @@ class ProjectHoneyPotTest extends TestCase public function testWithout127() { - $mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot') - ->setConstructorArgs(array('foobarfoobar')) - ->setMethods(array('dns_get_record')) - ->getMock(); + $mock = $this->getMock( + 'joshtronic\ProjectHoneyPot', + array('dns_get_record'), + array('foobarfoobar') + ); $mock->expects($this->once()) ->method('dns_get_record') @@ -217,11 +227,9 @@ class ProjectHoneyPotTest extends TestCase // Doesn't serve much purpose aside from helping achieve 100% coverage public function testDnsGetRecord() { - $object = new ProjectHoneyPot('foobarfoobar'); + $object = new joshtronic\ProjectHoneyPot('foobarfoobar'); - $result = $object->dns_get_record('1.2.3.4'); - - $this->assertEquals(array(), $result); + $object->dns_get_record('1.2.3.4'); } }