Compare commits

..

6 Commits

10 changed files with 62 additions and 54 deletions

View File

@ -1,4 +1,5 @@
Copyright (c) 2010 Charles Max Wood chuck@teachmetocode.com
Copyright (c) 2013 Guillaume DOTT guillaume+github@dott.fr
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

5
Rakefile Normal file
View File

@ -0,0 +1,5 @@
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
task :default => :spec

View File

@ -1,6 +1,7 @@
require 'net/dns'
require "project_honeypot/url"
require "project_honeypot/base"
require "project_honeypot/rack"
require "project_honeypot/rack/header"
require "project_honeypot/rack/forbidden"

View File

@ -0,0 +1,10 @@
module ProjectHoneypot
class Rack
def initialize(app, options={})
@app = app
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
ProjectHoneypot.api_key = options[:api_key]
end
end
end

View File

@ -1,12 +1,6 @@
module ProjectHoneypot::Rack
class Forbidden
def initialize(app, options={})
@app = app
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
ProjectHoneypot.api_key = options[:api_key]
end
module ProjectHoneypot
class Rack
class Forbidden < Rack
def call(env)
request = ::Rack::Request.new(env)
url = ProjectHoneypot.lookup(request.ip)
@ -18,4 +12,5 @@ module ProjectHoneypot::Rack
end
end
end
end
end

View File

@ -1,12 +1,6 @@
module ProjectHoneypot::Rack
class Header
def initialize(app, options={})
@app = app
raise ArgumentError, 'Must specify an API key' unless options[:api_key]
ProjectHoneypot.api_key = options[:api_key]
end
module ProjectHoneypot
class Rack
class Header < Rack
def call(env)
request = ::Rack::Request.new(env)
url = ProjectHoneypot.lookup(request.ip)
@ -16,4 +10,5 @@ module ProjectHoneypot::Rack
@app.call(request.env)
end
end
end
end

View File

@ -1,3 +1,3 @@
module ProjectHoneypot
VERSION = "0.3.0"
VERSION = "0.3.1"
end

View File

@ -10,7 +10,7 @@ Gem::Specification.new do |s|
s.email = ["chuck@teachmetocode.com", "guillaume+github@dott.fr"]
s.summary = %q{Project-Honeypot provides a programatic interface to the Project Honeypot services.}
s.description = %q{Project-Honeypot provides a programatic interface to the Project Honeypot services. It can be used to identify spammers, bogus commenters, and harvesters. You will need a FREE api key from http://projecthoneypot.org}
s.homepage = ""
s.homepage = "https://github.com/gdott9/project_honeypot"
s.files = `git ls-files`.split($/)
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }

View File

@ -9,9 +9,10 @@ describe ProjectHoneypot::Base do
it "returns a Url object" do
url = base.lookup("127.10.10.5")
url.should be_a ProjectHoneypot::Url
url.last_activity.should == 1
url.score.should == 63
expect(url).to be_a(ProjectHoneypot::Url)
expect(url.last_activity).to eq(1)
expect(url.score).to eq(63)
end
it "looks up non-ip addresses" do

View File

@ -5,37 +5,37 @@ describe ProjectHoneypot::Url do
let(:url) { ProjectHoneypot::Url.new("127.0.0.1", "127.1.63.3") }
it "is safe" do
url.should_not be_safe
expect(url.safe?).to be false
url.safe?(score: 63).should be_false
url.safe?(score: 64).should be_true
expect(url.safe?(score: 63)).to be false
expect(url.safe?(score: 64)).to be true
url.safe?(last_activity: 1).should be_false
url.safe?(last_activity: 2).should be_true
expect(url.safe?(last_activity: 1)).to be false
expect(url.safe?(last_activity: 2)).to be true
url.safe?(last_activity: 2, score: 64).should be_true
url.safe?(last_activity: 1, score: 64).should be_false
url.safe?(last_activity: 2, score: 63).should be_false
expect(url.safe?(last_activity: 2, score: 64)).to be true
expect(url.safe?(last_activity: 1, score: 64)).to be false
expect(url.safe?(last_activity: 2, score: 63)).to be false
url.safe?(offenses: [:comment_spammer]).should be_true
url.safe?(offenses: [:suspicious, :comment_spammer]).should be_false
expect(url.safe?(offenses: [:comment_spammer])).to be true
expect(url.safe?(offenses: [:suspicious, :comment_spammer])).to be false
end
it "has the correct latest activity" do
url.last_activity.should == 1
expect(url.last_activity).to eq(1)
end
it "has the correct score" do
url.score.should == 63
expect(url.score).to eq(63)
end
it "has the correct offenses" do
url.offenses.should include(:suspicious)
url.offenses.should include(:harvester)
url.offenses.should_not include(:comment_spammer)
url.should be_suspicious
url.should be_harvester
url.should_not be_comment_spammer
expect(url.offenses).to include(:suspicious)
expect(url.offenses).to include(:harvester)
expect(url.offenses).to_not include(:comment_spammer)
expect(url).to be_suspicious
expect(url).to be_harvester
expect(url).to_not be_comment_spammer
end
end