ham 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/ham/base.rb +58 -0
- data/lib/ham/hosts.rb +27 -0
- data/lib/ham/version.rb +6 -0
- metadata +95 -0
data/lib/ham/base.rb
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Ham
|
|
2
|
+
class Base
|
|
3
|
+
|
|
4
|
+
# Returns an empty array of default hosts
|
|
5
|
+
def hosts
|
|
6
|
+
[]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Returns a block that yields user defined-hosts
|
|
10
|
+
def each_host(&blk)
|
|
11
|
+
Ham::Hosts.parse(hosts, &blk)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Returns an empty hash of default headers
|
|
15
|
+
def headers
|
|
16
|
+
{}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Returns an empty hash of default parameters
|
|
20
|
+
def params
|
|
21
|
+
{}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Raises a NotImplementedError. You should inherit this class and implement
|
|
25
|
+
# your own #scan method.
|
|
26
|
+
def scan
|
|
27
|
+
raise NotImplementedError, 'Please override #scan with your own method'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Make a HTTP POST request to your host.
|
|
31
|
+
#
|
|
32
|
+
# Returns a HTTParty object
|
|
33
|
+
def post(uri, options = {})
|
|
34
|
+
HTTParty.post(uri, options.merge(headers: headers, body: params))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Make a HTTP GET request to your host.
|
|
38
|
+
#
|
|
39
|
+
# Returns a HTTParty object
|
|
40
|
+
def get(uri, options = {})
|
|
41
|
+
HTTParty.get(uri, options.merge(headers: headers, body: params))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Iterates over each host, applying the re-defined +scan+ method to it.
|
|
45
|
+
#
|
|
46
|
+
# Returns nil
|
|
47
|
+
def self.scan!
|
|
48
|
+
scanner = new
|
|
49
|
+
threads = []
|
|
50
|
+
scanner.each_host do |host|
|
|
51
|
+
threads << Thread.new(host) do |host|
|
|
52
|
+
scanner.send(:scan, host)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
threads.join
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/ham/hosts.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Ham
|
|
2
|
+
class Hosts
|
|
3
|
+
def initialize(hosts)
|
|
4
|
+
@hosts = hosts
|
|
5
|
+
if hosts.is_a?(String)
|
|
6
|
+
if hosts.include? '/'
|
|
7
|
+
@klass = Ham::Hosts::Network
|
|
8
|
+
else
|
|
9
|
+
@klass = Ham::Hosts::Single
|
|
10
|
+
end
|
|
11
|
+
elsif hosts.is_a?(Array)
|
|
12
|
+
@klass = Ham::Hosts::Multiple
|
|
13
|
+
else
|
|
14
|
+
raise ArgumentError, "Invalid host format: #{hosts.inspect}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def each_host(&blk)
|
|
19
|
+
klass = @klass.new(@hosts)
|
|
20
|
+
klass.each_host(&blk)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.parse(hosts, &blk)
|
|
24
|
+
new(hosts).each_host(&blk)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/ham/version.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ham
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- James Rose
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-07-28 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: httparty
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: rake
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: minitest
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
description: Ham ham ham ham!
|
|
63
|
+
email: james@jbpr.net
|
|
64
|
+
executables: []
|
|
65
|
+
extensions: []
|
|
66
|
+
extra_rdoc_files: []
|
|
67
|
+
files:
|
|
68
|
+
- lib/ham/base.rb
|
|
69
|
+
- lib/ham/hosts.rb
|
|
70
|
+
- lib/ham/version.rb
|
|
71
|
+
homepage:
|
|
72
|
+
licenses: []
|
|
73
|
+
post_install_message: Thanks for scanning with Ham :)
|
|
74
|
+
rdoc_options: []
|
|
75
|
+
require_paths:
|
|
76
|
+
- lib
|
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
|
+
none: false
|
|
79
|
+
requirements:
|
|
80
|
+
- - ! '>='
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
|
+
none: false
|
|
85
|
+
requirements:
|
|
86
|
+
- - ! '>='
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
requirements: []
|
|
90
|
+
rubyforge_project:
|
|
91
|
+
rubygems_version: 1.8.24
|
|
92
|
+
signing_key:
|
|
93
|
+
specification_version: 3
|
|
94
|
+
summary: Ham
|
|
95
|
+
test_files: []
|