passivedns-client 2.1.3 → 2.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f083bf7b1b864c041ef74ccd6efca87f3a21fb8
4
- data.tar.gz: e6f27a043d5d736a86c73258bc3116d686224524
3
+ metadata.gz: 58add2933d802aa99d5d5869b7c77c27b3afc66c
4
+ data.tar.gz: 79241aee015fcc1efc1b86e2d12245b29986f83b
5
5
  SHA512:
6
- metadata.gz: c229a32a9e7acedef70b22fef23d3864cbe03a797c3530674a9b4078ab0144f44225ea2dd8ed56357f91ee857a7635953f48d7f2f0357c6e502465b525e71ccd
7
- data.tar.gz: 75bfba2c966b5315a6d6897771706decf2da68991057ee93b67b7ddb0bac471ca3e5c6895c60cd2438c75e8cbd6d077eefde6fc91e8eb01d95aa94f281a3e92e
6
+ metadata.gz: 2c2d5bff3b1ea9f5f21bc91f8352ce63d8172c74a4d22cf7e52952097ac5d7b528ea493b65a8487c48c0c6845992d2bbd9880c08b7c9f8232bc371af27aed1c1
7
+ data.tar.gz: 1848f7cac439362ba083693c5b382b7e89301634923e0d342c5c9eb7272b476e138cb1a4d75d78e147cb0d432646cd1492a60417e090a7374c36b7eae8d33ba2
@@ -28,7 +28,12 @@ module PassiveDNS # :nodoc:
28
28
  # pdns array of passivedns provider names, e.g., ["dnsdb","virustotal"]
29
29
  # configfile filename of the passivedns-client configuration (this should probably be abstracted)
30
30
  def initialize(pdns=$passivedns_providers, configfile="#{ENV['HOME']}/.passivedns-client")
31
- cp = ConfigParser.new(configfile)
31
+ cp = {}
32
+ if File.exist?(configfile)
33
+ cp = ConfigParser.new(configfile)
34
+ else
35
+ $stderr.puts "Could not find config file at #{configfile}. Using a blank configuration."
36
+ end
32
37
  # this creates a map of all the PassiveDNS provider names and their classes
33
38
  class_map = {}
34
39
  PassiveDNS::Provider.constants.each do |const|
@@ -3,6 +3,7 @@
3
3
  require 'net/http'
4
4
  require 'net/https'
5
5
  require 'openssl'
6
+ require 'pp'
6
7
 
7
8
  module PassiveDNS #:nodoc: don't document this
8
9
  # The Provider module contains all the Passive DNS provider client code
@@ -27,22 +28,33 @@ module PassiveDNS #:nodoc: don't document this
27
28
  # === Options
28
29
  # * :debug Sets the debug flag for the module
29
30
  # * "APIKEY" REQUIRED: The API key associated with PassiveTotal
30
- # * "URL" Alternate url for testing. Defaults to "https://www.passivetotal.org/api/passive"
31
+ # * "URL" Alternate url for testing. Defaults to "https://www.passivetotal.org/api/v1/passive"
31
32
  #
32
33
  # === Example Instantiation
33
34
  #
34
35
  # options = {
35
36
  # :debug => true,
36
37
  # "APIKEY" => "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
37
- # "URL" => "https://www.passivetotal.org/api/passive"
38
+ # "URL" => "https://www.passivetotal.org/api/v1/passive"
38
39
  # }
40
+
41
+ # or
42
+ #
43
+ # options = {
44
+ # :debug => true,
45
+ # "APIKEY" => "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
46
+ # "API_VERSION" => "current"
47
+ # }
48
+ #
49
+ # then
39
50
  #
40
51
  # PassiveDNS::Provider::PassiveTotal.new(options)
41
52
  #
42
53
  def initialize(options={})
43
54
  @debug = options[:debug] || false
44
55
  @apikey = options["APIKEY"] || raise("#{self.class.name} requires an APIKEY")
45
- @url = options["URL"] || "https://www.passivetotal.org/api/passive"
56
+ @version = options["API_VERSION"] || "v1"
57
+ @url = options["URL"] || "https://www.passivetotal.org/api/#{@version}/passive"
46
58
  end
47
59
 
48
60
  # Takes a label (either a domain or an IP address) and returns
@@ -50,16 +62,16 @@ module PassiveDNS #:nodoc: don't document this
50
62
  def lookup(label, limit=nil)
51
63
  $stderr.puts "DEBUG: #{self.class.name}.lookup(#{label})" if @debug
52
64
  Timeout::timeout(240) {
53
- url = @url
65
+ url = @url+"?api_key=#{@apikey}&query=#{label}"
54
66
  $stderr.puts "DEBUG: #{self.class.name} url = #{url}" if @debug
55
67
  url = URI.parse url
56
68
  http = Net::HTTP.new(url.host, url.port)
57
69
  http.use_ssl = (url.scheme == 'https')
58
70
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
59
71
  http.verify_depth = 5
60
- request = Net::HTTP::Post.new(url.request_uri)
72
+ request = Net::HTTP::Get.new(url.request_uri)
61
73
  request.add_field("User-Agent", "Ruby/#{RUBY_VERSION} passivedns-client rubygem v#{PassiveDNS::Client::VERSION}")
62
- request.set_form_data({"apikey" => @apikey, "value" => label})
74
+ #request.set_form_data({"api_key" => @apikey, "query" => label})
63
75
  t1 = Time.now
64
76
  response = http.request(request)
65
77
  t2 = Time.now
@@ -79,13 +91,14 @@ module PassiveDNS #:nodoc: don't document this
79
91
  # parses the response of passivetotals's JSON reply to generate an array of PDNSResult
80
92
  def parse_json(page,query,response_time=0)
81
93
  res = []
94
+ puts page
82
95
  data = JSON.parse(page)
96
+ query = data['raw_query']
83
97
  if data['results']
84
- query = data['results']['value']
85
- data['results']['resolutions'].each do |row|
98
+ data['results']['records'].each do |row|
86
99
  first_seen = (row['firstSeen'] == "None") ? nil : Time.parse(row['firstSeen']+" +0000")
87
100
  last_seen = (row['lastSeen'] == "None") ? nil : Time.parse(row['lastSeen']+" +0000")
88
- value = row['value']
101
+ value = row['resolve']
89
102
  source = row['source'].join(",")
90
103
  res << PDNSResult.new(self.class.name+"/"+source,response_time,
91
104
  query, value, "A", 0, first_seen, last_seen)
@@ -2,6 +2,6 @@ module PassiveDNS # :nodoc:
2
2
  # coodinates the lookups accross all configured PassiveDNS providers
3
3
  class Client
4
4
  # version of PassiveDNS::Client
5
- VERSION = "2.1.3"
5
+ VERSION = "2.1.4"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passivedns-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - chrislee35
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-18 00:00:00.000000000 Z
11
+ date: 2015-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json