Compare commits
7 commits
Author | SHA1 | Date | |
---|---|---|---|
5221ca9df6 | |||
0644b94303 | |||
|
d96fdc3120 | ||
|
da6dd242a0 | ||
340711b331 | |||
|
1bff7911fe | ||
|
fee505f7dd |
10 changed files with 136 additions and 132 deletions
|
@ -1 +0,0 @@
|
|||
service_name: travis-ci
|
29
.github/workflows/test.yml
vendored
Normal file
29
.github/workflows/test.yml
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
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
|
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
composer.lock
|
||||
composer.phar
|
||||
.phpunit.result.cache
|
||||
/vendor/
|
26
.travis.yml
26
.travis.yml
|
@ -1,26 +0,0 @@
|
|||
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
|
1
FUNDING.yml
Normal file
1
FUNDING.yml
Normal file
|
@ -0,0 +1 @@
|
|||
github: joshtronic
|
13
README.md
13
README.md
|
@ -3,23 +3,18 @@
|
|||
[][travis]
|
||||
[][coveralls]
|
||||
[][packagist]
|
||||
[][gittip]
|
||||
|
||||
PHP Wrapper for Project Honey Pot. Compatible with PHP 5.3+ and HHVM.
|
||||
|
||||
## Installation
|
||||
|
||||
The preferred installation method is via `composer`. First add the following
|
||||
to your `composer.json`
|
||||
The preferred installation method is via `composer`. From the root of your
|
||||
project simply run:
|
||||
|
||||
```json
|
||||
"require": {
|
||||
"joshtronic/php-projecthoneypot": "dev-master"
|
||||
}
|
||||
```shell
|
||||
composer require "joshtronic/php-projecthoneypot:dev-master"
|
||||
```
|
||||
|
||||
Then run `composer update`
|
||||
|
||||
## Usage
|
||||
|
||||
### Getting Started
|
||||
|
|
|
@ -8,16 +8,19 @@
|
|||
"license": "MIT",
|
||||
"authors": [{
|
||||
"name": "Josh Sherman",
|
||||
"email": "josh@gravityblvd.com",
|
||||
"email": "hello@joshtronic.com",
|
||||
"homepage": "http://joshtronic.com"
|
||||
}],
|
||||
"require-dev": {
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"satooshi/php-coveralls": "dev-master"
|
||||
"phpunit/phpunit": "^4.8.36 || ^9.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {"joshtronic\\": "src/"}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {"joshtronic\\Tests\\": "tests/"}
|
||||
}
|
||||
}
|
||||
|
|
24
phpunit.xml
Normal file
24
phpunit.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit
|
||||
colors="true"
|
||||
bootstrap="./vendor/autoload.php"
|
||||
convertErrorsToExceptions="true"
|
||||
convertNoticesToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
failOnRisky="true"
|
||||
stopOnError="true"
|
||||
stopOnFailure="true"
|
||||
stopOnIncomplete="true"
|
||||
verbose="true"
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="Project Honeypot">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<filter>
|
||||
<whitelist addUncoveredFilesFromWhitelist="true">
|
||||
<directory>./src</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
|
@ -8,8 +8,8 @@
|
|||
* Licensed under The MIT License.
|
||||
* Redistribution of these files must retain the above copyright notice.
|
||||
*
|
||||
* @author Josh Sherman <josh@gravityblvd.com>
|
||||
* @copyright Copyright 2012-2014, Josh Sherman
|
||||
* @author Josh Sherman <hello@joshtronic.com>
|
||||
* @copyright Copyright 2012-2015, 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,12 +37,9 @@ 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.');
|
||||
}
|
||||
}
|
||||
|
@ -59,8 +56,7 @@ 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);
|
||||
|
@ -70,12 +66,10 @@ 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],
|
||||
|
@ -83,40 +77,31 @@ 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;
|
||||
|
@ -127,9 +112,7 @@ class ProjectHoneyPot
|
|||
return $results;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return array('error' => 'Invalid IP address.');
|
||||
}
|
||||
|
||||
|
@ -139,7 +122,7 @@ class ProjectHoneyPot
|
|||
/**
|
||||
* DNS Get Record
|
||||
*
|
||||
* Wrapper method for dns_get_record() to allow fo easy mocking of the
|
||||
* Wrapper method for dns_get_record() to allow for 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.
|
||||
*
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
<?php
|
||||
namespace joshtronic\Tests;
|
||||
use joshtronic\ProjectHoneyPot;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
require_once '../src/ProjectHoneyPot.php';
|
||||
|
||||
class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
||||
class ProjectHoneyPotTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage You must specify a valid API key.
|
||||
*/
|
||||
public function testInvalidKey()
|
||||
{
|
||||
new joshtronic\ProjectHoneyPot('foo');
|
||||
try {
|
||||
new ProjectHoneyPot('foo');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame('You must specify a valid API key.', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testInvalidIP()
|
||||
{
|
||||
$object = new joshtronic\ProjectHoneyPot('foobarfoobar');
|
||||
$object = new ProjectHoneyPot('foobarfoobar');
|
||||
|
||||
$this->assertEquals(
|
||||
array('error' => 'Invalid IP address.'),
|
||||
|
@ -25,11 +26,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testMissingResults()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -40,11 +40,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory0()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -57,11 +56,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory1()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -74,11 +72,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory2()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -91,11 +88,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory3()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -111,11 +107,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory4()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -131,11 +126,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory5()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -151,11 +145,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory6()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -171,11 +164,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategory7()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -191,11 +183,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testCategoryDefault()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -211,11 +202,10 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
|
||||
public function testWithout127()
|
||||
{
|
||||
$mock = $this->getMock(
|
||||
'joshtronic\ProjectHoneyPot',
|
||||
array('dns_get_record'),
|
||||
array('foobarfoobar')
|
||||
);
|
||||
$mock = $this->getMockBuilder('joshtronic\\ProjectHoneyPot')
|
||||
->setConstructorArgs(array('foobarfoobar'))
|
||||
->setMethods(array('dns_get_record'))
|
||||
->getMock();
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('dns_get_record')
|
||||
|
@ -227,9 +217,11 @@ class ProjectHoneyPotTest extends PHPUnit_Framework_TestCase
|
|||
// Doesn't serve much purpose aside from helping achieve 100% coverage
|
||||
public function testDnsGetRecord()
|
||||
{
|
||||
$object = new joshtronic\ProjectHoneyPot('foobarfoobar');
|
||||
$object = new ProjectHoneyPot('foobarfoobar');
|
||||
|
||||
$object->dns_get_record('1.2.3.4');
|
||||
$result = $object->dns_get_record('1.2.3.4');
|
||||
|
||||
$this->assertEquals(array(), $result);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue