dronebl.rb 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b176362e9cf954dd9e4bbdd7895c08e726d6732
4
- data.tar.gz: 21a9406ef25ae5abb81b2de5f41563f1ce8a1862
3
+ metadata.gz: 45bc94d05aa14f311e9506834de8bdbe13578842
4
+ data.tar.gz: fcbe4cead5705d0e89b7d1b8882a386f7dc629d1
5
5
  SHA512:
6
- metadata.gz: f9b667e129e0f8548e1342420034f174e336002e9a3bc45b68fed428412b6b27e983d45854eeda3f73e73227a87f24004c3a50322f31474bba2fad91475bd981
7
- data.tar.gz: 71a0f48745fc83f232b2ecd481cafedf8f6d5d54aaab3319868027d6799b8308ac74afb736c59418d8c8028e6cdda23af2dd096ecdbe882d4907af124147529f
6
+ metadata.gz: b8bf384847ec9f3cb386be428eb50e1a6eadabee121badf655fb8e034dd0c877e4d896754d4158f973d9c459bc03d60e60dd0023f1f4d3b6b3be8204a4b650aa
7
+ data.tar.gz: 5e96f22bf7cd87d7acce9d0f48dfd39078a9a9fb415689f8a96c62989d8e3e7bd731f595000208cc22497c3d20a645e6784e15100751c75b083ae22de47b4cef
@@ -6,7 +6,7 @@ require 'resolv'
6
6
  require 'optparse'
7
7
  class Options
8
8
  attr_reader :read_from_stdin, :key_str, :key_file, :type, :comment, :dry_run,
9
- :use_key_file, :no_check, :max_ips_per_chunk
9
+ :use_key_file, :no_check, :max_ips_per_chunk, :show_raw_xml
10
10
  attr_accessor :ips
11
11
  def initialize
12
12
  @key_file = File.expand_path "~/.droneblkey"
@@ -45,6 +45,9 @@ class Options
45
45
  opts.on('-u', '--use-key-file', 'Use the default key file located at ~/.droneblkey') do
46
46
  @use_key_file = true
47
47
  end
48
+ opts.on('-r', '--show-raw-xml', 'Print the raw response received from the DroneBL server') do
49
+ @show_raw_xml = true
50
+ end
48
51
  opts.on('-d', '--dry-run', 'Prints the query to be run to STDOUT instead of sending it as a query to the DroneBL RPC service.') do
49
52
  @dry_run = true
50
53
  end
@@ -101,7 +104,7 @@ if opts.dry_run
101
104
  valid.each_slice(opts.max_ips_per_chunk) { |submit| puts DroneBL::gen_add_query(submit, opts.type, opts.comment) }
102
105
  puts "#{valid.count} IPs will be added as type #{opts.type}#{" with comment '#{opts.comment if opts.comment}'"}."
103
106
  else
104
- valid.each_slice(opts.max_ips_per_chunk) { |submit| DroneBL::add(submit, opts.type, opts.comment) }
107
+ valid.each_slice(opts.max_ips_per_chunk) { |submit| DroneBL::add(submit, opts.type, opts.comment, show_raw=opts.show_raw_xml) }
105
108
  puts "#{valid.count} IPs added as type #{opts.type}#{" with comment '#{opts.comment}'" if opts.comment}"
106
109
  end
107
110
  unless invalid.empty?
@@ -6,11 +6,12 @@ require 'resolv'
6
6
  require 'optparse'
7
7
  class Options
8
8
  attr_reader :read_from_stdin, :key_str, :key_file, :get_archived, :long_types,
9
- :dry_run, :time_format, :use_key_file
9
+ :dry_run, :time_format, :use_key_file, :show_raw_xml
10
10
  attr_accessor :ips
11
11
  def initialize
12
12
  @key_file = File.expand_path "~/.droneblkey"
13
13
  @ips = []
14
+ @show_raw_xml = false
14
15
  @opt_parser = OptionParser.new do |opts|
15
16
  opts.banner = "Usage: #{$0} [options]"
16
17
  opts.separator ""
@@ -40,6 +41,9 @@ class Options
40
41
  opts.on('-L', '--long-types', 'Print type definitions instead of numeric types for record matches.') do
41
42
  @long_types = true
42
43
  end
44
+ opts.on('-r', '--show-raw-xml', 'Print the raw response received from the DroneBL server') do
45
+ @show_raw_xml = true
46
+ end
43
47
  opts.on('-d', '--dry-run', 'Prints the query to be run to STDOUT instead of sending it as a query to the DroneBL RPC service.') do
44
48
  @dry_run = true
45
49
  end
@@ -114,7 +118,7 @@ if @dry_run
114
118
  puts DroneBL::gen_lookup_query query, opts.get_archived
115
119
  puts "#{query.count} IPs will be looked up."
116
120
  else
117
- response = DroneBL::lookup(query, opts.get_archived)
121
+ response = DroneBL::lookup(query, opts.get_archived, show_raw=opts.show_raw_xml)
118
122
  print_table response, opts.long_types
119
123
  puts "#{query.count} IPs looked up. #{response.map { |r| r['ip'] }.uniq.length} unique IPs found in response."
120
124
  end
@@ -26,10 +26,11 @@ module DroneBL
26
26
  "255"=>"Uncategorized threat class"}
27
27
  class << self
28
28
  attr_accessor :key
29
- def parse_response xml
29
+ def parse_response xml, show_raw=false
30
30
  # This giant mess of hax is needed because the DroneBL response to queries
31
31
  # is encased in CDATA for whatever reason.
32
32
  begin
33
+ puts xml if show_raw
33
34
  resp = Nokogiri.parse(xml).at("response")
34
35
  if resp['type'].downcase == 'error'
35
36
  abort "call failed: '#{resp.css('message').text}' data: '#{resp.css('data').text}'"
@@ -58,14 +59,14 @@ EOF
58
59
  </request>"
59
60
  end
60
61
 
61
- def lookup ips, archived=false
62
+ def lookup ips, archived=false, show_raw=false
62
63
  query = gen_lookup_query ips, archived
63
- parse_response post('/RPC2', {:body => query }).body
64
+ parse_response post('/RPC2', {:body => query }).bodya, show_raw=show_raw
64
65
  end
65
66
 
66
- def add ips, type, comment=''
67
+ def add ips, type, comment='', show_raw=false
67
68
  query = gen_add_query ips, type, comment
68
- parse_response post('/RPC2', {:body => query }).body
69
+ parse_response post('/RPC2', {:body => query }).body, show_raw=show_raw
69
70
  end
70
71
 
71
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dronebl.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rylee Fowler