Module: OpenDNS::DNSDB::Label

Included in:
OpenDNS::DNSDB
Defined in:
lib/opendns-dnsdb/dnsdb/label.rb

Constant Summary collapse

CACHE_KEY =
'Umbrella/OpenDNS'

Instance Method Summary collapse

Instance Method Details

#benign_names(names) ⇒ Object



90
91
92
93
94
95
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 90

def benign_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label == :benign }.keys
  Response::Distinct.new(names)
end

#distinct_labels(labels) ⇒ Object



9
10
11
12
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 9

def distinct_labels(labels)
  return [ labels ] unless labels.kind_of?(Hash)
  Response::Distinct.new(labels.values.flatten.uniq)
end

#distinct_labels_by_name(names) ⇒ Object



34
35
36
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 34

def distinct_labels_by_name(names)
  distinct_labels(labels_by_name(names))
end

#include_benign?(names) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 46

def include_benign?(names)
  distinct_labels_by_name(names).include?(:benign)
end

#include_suspicious?(names) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 38

def include_suspicious?(names)
  distinct_labels_by_name(names).include?(:suspicious)
end

#include_unknown?(names) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 54

def include_unknown?(names)
  distinct_labels_by_name(names).include?(:unknown)
end

#is_benign?(name) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 50

def is_benign?(name)
  include_benign?(name)
end

#is_suspicious?(name) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 42

def is_suspicious?(name)
  include_suspicious?(name)
end

#is_unknown?(name) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 58

def is_unknown?(name)
  include_unknown?(name)
end

#labels_by_name(names) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 14

def labels_by_name(names)
  names_is_array = names.kind_of?(Enumerable)
  names = [ names ] unless names_is_array
  multi = query_multi
  names_json = MultiJson.dump(names)
  cacheid = SipHash::digest(CACHE_KEY, names_json).to_s(16)
  url = "/infected/names/#{cacheid}.json"
  query = query_handler(url, :get, { body: names_json })
  multi.queue(query)
  multi.run
  responses = MultiJson.load(query.response.body)
  responses = responses['scores']
  responses.each_pair do |name, label|
    responses[name] = [:suspicious, :unknown, :benign][label + 1]
  end
  responses = Response::HashByName[responses]
  responses = responses.values.first unless names_is_array
  responses
end

#not_benign_names(names) ⇒ Object



97
98
99
100
101
102
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 97

def not_benign_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label != :benign }.keys
  Response::Distinct.new(names)
end

#not_suspicious_names(names) ⇒ Object



69
70
71
72
73
74
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 69

def not_suspicious_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label != :suspicious }.keys
  Response::Distinct.new(names)
end

#not_unknown_names(names) ⇒ Object



83
84
85
86
87
88
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 83

def not_unknown_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label != :unknown }.keys
  Response::Distinct.new(names)
end

#suspicious_names(names) ⇒ Object



62
63
64
65
66
67
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 62

def suspicious_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label == :suspicious }.keys
  Response::Distinct.new(names)
end

#unknown_names(names) ⇒ Object



76
77
78
79
80
81
# File 'lib/opendns-dnsdb/dnsdb/label.rb', line 76

def unknown_names(names)
  labels = labels_by_name(names)
  labels = [ labels ] unless labels.kind_of?(Enumerable)
  names = labels.select { |name, label| label == :unknown }.keys        
  Response::Distinct.new(names)
end