lita-whois 0.1.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -3
- data/.travis.yml +4 -4
- data/Gemfile +1 -1
- data/README.md +7 -0
- data/Rakefile +2 -2
- data/lib/lita-whois.rb +6 -2
- data/lib/lita/handlers/whois.rb +13 -54
- data/lita-whois.gemspec +19 -20
- data/locales/en.yml +10 -0
- data/spec/lita/handlers/whois_spec.rb +8 -12
- data/spec/spec_helper.rb +21 -0
- data/templates/full.erb +1 -0
- data/templates/full.hipchat.erb +1 -0
- data/templates/full.slack.erb +1 -0
- data/templates/simple.erb +1 -0
- data/templates/simple.hipchat.erb +1 -0
- data/templates/simple.slack.erb +1 -0
- metadata +22 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7bf04dbb4e6f3a789a35cf9501d0bec4558ec36
|
4
|
+
data.tar.gz: 38e834e951924536d2e8ccdb9561a331c4771672
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c1b30e1a92c99972da9a4f1d1de4a01e8c6eb56839476dc4537d3300fa34815e9f5c157a82bfa5bfe20bd613753424724dc8d182213c6832e6c90f415c3e558
|
7
|
+
data.tar.gz: 493592639e7116fa50bf92d993ac412df07fefc7b25130f216db39651ae6d0ff16313726250949dd0be13046e4e1177deae675ce30592e02b0d515e2e4bc125e
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# lita-whois
|
2
2
|
|
3
|
+
[![Build Status](https://img.shields.io/travis/glebtv/lita-whois/master.svg)](https://travis-ci.org/glebtv/lita-whois)
|
4
|
+
[![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://tldrlegal.com/license/mit-license)
|
5
|
+
[![RubyGems](http://img.shields.io/gem/v/lita-whois.svg)](https://rubygems.org/gems/lita-whois)
|
6
|
+
[![Coveralls Coverage](https://img.shields.io/coveralls/glebtv/lita-whois/master.svg)](https://coveralls.io/r/glebtv/lita-whois)
|
7
|
+
[![Code Climate](https://img.shields.io/codeclimate/github/glebtv/lita-whois.svg)](https://codeclimate.com/github/glebtv/lita-whois)
|
8
|
+
[![Gemnasium](https://img.shields.io/gemnasium/glebtv/lita-whois.svg)](https://gemnasium.com/glebtv/lita-whois)
|
9
|
+
|
3
10
|
WHOIS handler for searching domain, TLD, IPv4, and IPv6 WHOIS records.
|
4
11
|
|
5
12
|
## Installation
|
data/Rakefile
CHANGED
data/lib/lita-whois.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
require 'lita'
|
2
2
|
|
3
3
|
Lita.load_locales Dir[File.expand_path(
|
4
|
-
|
4
|
+
File.join('..', '..', 'locales', '*.yml'), __FILE__
|
5
5
|
)]
|
6
6
|
|
7
7
|
require 'lita/handlers/whois'
|
8
8
|
|
9
|
-
require 'ipaddress'
|
10
9
|
require 'whois'
|
10
|
+
|
11
|
+
Lita::Handlers::Whois.template_root File.expand_path(
|
12
|
+
File.join('..', '..', 'templates'),
|
13
|
+
__FILE__
|
14
|
+
)
|
data/lib/lita/handlers/whois.rb
CHANGED
@@ -2,69 +2,28 @@ module Lita
|
|
2
2
|
module Handlers
|
3
3
|
class Whois < Handler
|
4
4
|
route(
|
5
|
-
/^whois\s(
|
6
|
-
:
|
5
|
+
/^whois\s(?<input>.*)$/,
|
6
|
+
:whois,
|
7
7
|
help: {
|
8
|
-
'
|
8
|
+
t('help.syntax.domain') => t('help.desc.domain'),
|
9
|
+
t('help.syntax.tld') => t('help.desc.tld'),
|
10
|
+
t('help.syntax.ip') => t('help.desc.ip')
|
9
11
|
}
|
10
12
|
)
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
help: {
|
16
|
-
'whois .io' => 'Get the WHOIS info for a TLD'
|
17
|
-
}
|
18
|
-
)
|
19
|
-
|
20
|
-
route(
|
21
|
-
/^whois\s(.+)$/,
|
22
|
-
:whois_ip,
|
23
|
-
help: {
|
24
|
-
'whois 8.8.8.8' => 'Get the WHOIS info for an IPv4 or IPv6 address'
|
25
|
-
}
|
26
|
-
)
|
27
|
-
|
28
|
-
def whois_domain(response)
|
29
|
-
response.reply(lookup("#{response.matches[0][0]}." \
|
30
|
-
"#{response.matches[0][1]}"))
|
31
|
-
end
|
32
|
-
|
33
|
-
def whois_tld(response)
|
34
|
-
response.reply(lookup(".#{response.matches[0][0]}"))
|
35
|
-
end
|
36
|
-
|
37
|
-
def whois_ip(response)
|
38
|
-
if IPAddress.valid? response.matches[0][0]
|
39
|
-
response.reply(reverse_lookup(response.matches[0][0]))
|
40
|
-
end
|
14
|
+
def whois(response)
|
15
|
+
input = response.match_data['input']
|
16
|
+
response.reply(lookup(input))
|
41
17
|
end
|
42
18
|
|
43
19
|
private
|
44
20
|
|
45
|
-
def lookup(
|
21
|
+
def lookup(record)
|
46
22
|
client = ::Whois::Client.new
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
return "Cannot find a WHOIS server for #{domain}"
|
52
|
-
end
|
53
|
-
|
54
|
-
record.to_s
|
55
|
-
end
|
56
|
-
|
57
|
-
def reverse_lookup(ip)
|
58
|
-
client = ::Whois::Client.new
|
59
|
-
record = nil
|
60
|
-
begin
|
61
|
-
record = client.lookup(ip)
|
62
|
-
rescue ::Whois::AllocationUnknown, ::Whois::ServerNotFound,
|
63
|
-
::Whois::NoInterfaceError
|
64
|
-
return "Cannot find a WHOIS server for #{ip}"
|
65
|
-
end
|
66
|
-
|
67
|
-
record.to_s
|
23
|
+
render_template('full', output: client.lookup(record).to_s)
|
24
|
+
rescue => e
|
25
|
+
log.warn e
|
26
|
+
render_template('simple', output: t('error', record: record))
|
68
27
|
end
|
69
28
|
end
|
70
29
|
|
data/lita-whois.gemspec
CHANGED
@@ -1,27 +1,26 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
4
|
-
spec.authors = [
|
5
|
-
spec.email = [
|
6
|
-
spec.description =
|
7
|
-
spec.summary =
|
8
|
-
spec.homepage =
|
9
|
-
spec.license =
|
10
|
-
spec.metadata = {
|
2
|
+
spec.name = 'lita-whois'
|
3
|
+
spec.version = '1.1.0'
|
4
|
+
spec.authors = ['glebtv', 'Eric Sigler']
|
5
|
+
spec.email = ['glebtv@gmail.com', 'me@esigler.com']
|
6
|
+
spec.description = 'WHOIS handler for lita chat bot'
|
7
|
+
spec.summary = spec.description
|
8
|
+
spec.homepage = 'https://github.com/glebtv/lita-whois'
|
9
|
+
spec.license = 'MIT'
|
10
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
11
11
|
|
12
|
-
spec.files = `git ls-files`.split(
|
12
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
13
13
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
-
spec.require_paths = [
|
15
|
+
spec.require_paths = ['lib']
|
16
16
|
|
17
|
-
spec.add_runtime_dependency
|
18
|
-
spec.add_runtime_dependency
|
19
|
-
spec.add_runtime_dependency "ipaddress"
|
17
|
+
spec.add_runtime_dependency 'lita', '~> 4.2'
|
18
|
+
spec.add_runtime_dependency 'whois'
|
20
19
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'coveralls'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'rubocop'
|
25
|
+
spec.add_development_dependency 'simplecov'
|
27
26
|
end
|
data/locales/en.yml
CHANGED
@@ -2,3 +2,13 @@ en:
|
|
2
2
|
lita:
|
3
3
|
handlers:
|
4
4
|
whois:
|
5
|
+
help:
|
6
|
+
syntax:
|
7
|
+
domain: whois example.com
|
8
|
+
tld: whois .io
|
9
|
+
ip: whois 8.8.8.8
|
10
|
+
desc:
|
11
|
+
domain: Get the WHOIS info for a domain
|
12
|
+
tld: Get the WHOIS info for a TLD
|
13
|
+
ip: Get the WHOIS info for an IPv4 or IPv6 address
|
14
|
+
error: "Error looking up WHOIS data for %{record}"
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Lita::Handlers::Whois, lita_handler: true do
|
4
|
-
it {
|
5
|
-
it {
|
6
|
-
it {
|
7
|
-
it {
|
4
|
+
it { is_expected.to route_command('whois example.com').to(:whois) }
|
5
|
+
it { is_expected.to route_command('whois .io').to(:whois) }
|
6
|
+
it { is_expected.to route_command('whois 8.8.8.8').to(:whois) }
|
7
|
+
it { is_expected.to route_command('whois 2001:418:141e:196::fc4').to(:whois) }
|
8
8
|
|
9
|
-
describe '#
|
9
|
+
describe '#whois' do
|
10
10
|
let(:domain_good) do
|
11
11
|
client = double
|
12
12
|
expect(client).to receive(:lookup) { 'Generic response example.com' }
|
@@ -40,11 +40,9 @@ describe Lita::Handlers::Whois, lita_handler: true do
|
|
40
40
|
it 'shows an error when the domain does not have a WHOIS' do
|
41
41
|
expect(Whois::Client).to receive(:new) { domain_err }
|
42
42
|
send_command('whois asdf.sdf')
|
43
|
-
expect(replies.last).to eq('
|
43
|
+
expect(replies.last).to eq('Error looking up WHOIS data for asdf.sdf')
|
44
44
|
end
|
45
|
-
end
|
46
45
|
|
47
|
-
describe '#whois_tld' do
|
48
46
|
let(:tld_good) do
|
49
47
|
client = double
|
50
48
|
expect(client).to receive(:lookup) { 'Generic TLD response .io' }
|
@@ -68,9 +66,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
|
|
68
66
|
send_command('whois .wtf')
|
69
67
|
expect(replies.last).to eq('Invalid TLD response .wtf')
|
70
68
|
end
|
71
|
-
end
|
72
69
|
|
73
|
-
describe '#whois_ipv4' do
|
74
70
|
let(:ipv4_good) do
|
75
71
|
client = double
|
76
72
|
expect(client).to receive(:lookup) { 'Generic IPv4 response 8.8.8.8' }
|
@@ -104,7 +100,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
|
|
104
100
|
it 'shows an error when the IP is invalid' do
|
105
101
|
expect(Whois::Client).to receive(:new) { ipv4_err }
|
106
102
|
send_command('whois 0.0.0.0')
|
107
|
-
expect(replies.last).to eq('
|
103
|
+
expect(replies.last).to eq('Error looking up WHOIS data for 0.0.0.0')
|
108
104
|
end
|
109
105
|
|
110
106
|
it 'shows results for the IPv6 address' do
|
@@ -116,7 +112,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
|
|
116
112
|
it 'shows an error when the IP is invalid' do
|
117
113
|
expect(Whois::Client).to receive(:new) { ipv6_err }
|
118
114
|
send_command('whois ::')
|
119
|
-
expect(replies.last).to eq('
|
115
|
+
expect(replies.last).to eq('Error looking up WHOIS data for ::')
|
120
116
|
end
|
121
117
|
end
|
122
118
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,3 +8,24 @@ SimpleCov.start { add_filter '/spec/' }
|
|
8
8
|
|
9
9
|
require 'lita-whois'
|
10
10
|
require 'lita/rspec'
|
11
|
+
|
12
|
+
Lita.version_3_compatibility_mode = false
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.expect_with :rspec do |expectations|
|
16
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
17
|
+
end
|
18
|
+
|
19
|
+
config.mock_with :rspec do |mocks|
|
20
|
+
mocks.verify_partial_doubles = true
|
21
|
+
end
|
22
|
+
|
23
|
+
config.filter_run :focus
|
24
|
+
config.run_all_when_everything_filtered = true
|
25
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
26
|
+
config.order = :random
|
27
|
+
config.color = true
|
28
|
+
config.profile_examples = 5
|
29
|
+
|
30
|
+
Kernel.srand config.seed
|
31
|
+
end
|
data/templates/full.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<%= @output %>
|
@@ -0,0 +1 @@
|
|
1
|
+
/quote <%= @output %>
|
@@ -0,0 +1 @@
|
|
1
|
+
```<%= @output %>```
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= @output %>
|
@@ -0,0 +1 @@
|
|
1
|
+
/code <%= @output %>
|
@@ -0,0 +1 @@
|
|
1
|
+
`<%= @output %>`
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-whois
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebtv
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: lita
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '4.2'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '4.2'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: whois
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,13 +40,13 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
|
-
type: :
|
49
|
+
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
@@ -54,21 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '1.3'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '1.3'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: rake
|
57
|
+
name: coveralls
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
60
|
- - ">="
|
@@ -82,21 +68,21 @@ dependencies:
|
|
82
68
|
- !ruby/object:Gem::Version
|
83
69
|
version: '0'
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
71
|
+
name: rake
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
74
|
- - ">="
|
89
75
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
76
|
+
version: '0'
|
91
77
|
type: :development
|
92
78
|
prerelease: false
|
93
79
|
version_requirements: !ruby/object:Gem::Requirement
|
94
80
|
requirements:
|
95
81
|
- - ">="
|
96
82
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
83
|
+
version: '0'
|
98
84
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
85
|
+
name: rspec
|
100
86
|
requirement: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
88
|
- - ">="
|
@@ -110,7 +96,7 @@ dependencies:
|
|
110
96
|
- !ruby/object:Gem::Version
|
111
97
|
version: '0'
|
112
98
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
99
|
+
name: rubocop
|
114
100
|
requirement: !ruby/object:Gem::Requirement
|
115
101
|
requirements:
|
116
102
|
- - ">="
|
@@ -124,7 +110,7 @@ dependencies:
|
|
124
110
|
- !ruby/object:Gem::Version
|
125
111
|
version: '0'
|
126
112
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
113
|
+
name: simplecov
|
128
114
|
requirement: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
116
|
- - ">="
|
@@ -159,6 +145,12 @@ files:
|
|
159
145
|
- locales/en.yml
|
160
146
|
- spec/lita/handlers/whois_spec.rb
|
161
147
|
- spec/spec_helper.rb
|
148
|
+
- templates/full.erb
|
149
|
+
- templates/full.hipchat.erb
|
150
|
+
- templates/full.slack.erb
|
151
|
+
- templates/simple.erb
|
152
|
+
- templates/simple.hipchat.erb
|
153
|
+
- templates/simple.slack.erb
|
162
154
|
homepage: https://github.com/glebtv/lita-whois
|
163
155
|
licenses:
|
164
156
|
- MIT
|
@@ -180,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
172
|
version: '0'
|
181
173
|
requirements: []
|
182
174
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.
|
175
|
+
rubygems_version: 2.4.5.1
|
184
176
|
signing_key:
|
185
177
|
specification_version: 4
|
186
178
|
summary: WHOIS handler for lita chat bot
|