globetrotter 0.0.6 → 0.0.10

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: b888a19dab6e39a83cc3c9dfd9314712c02ae8bf
4
- data.tar.gz: bbf71fe7a2b929f648fef841779212f45f6f48f2
3
+ metadata.gz: 72d27cd241554a27d2a1293837f8fa80343d54f7
4
+ data.tar.gz: 0e1d8d1c57e0eadfa8d2548040ecb4ca2e87e9ac
5
5
  SHA512:
6
- metadata.gz: 37c74d82d195af4ff99ce60a595e1762168e40c26779d6f139792ed0e8f058279ec0815c28a55b6ae66e949d843589e3e0e2226ec0b3da6a223f339663d4a5d6
7
- data.tar.gz: b4d66382e11f283a85722f7b81fe472a9e12873f0d85a9c6cd3232cecb84af62d1231dcfb00d38bc13e042cdd7827987d8ce6bcb120721fb255f0697d1c1482b
6
+ metadata.gz: 16f0ef1273875bedb0fc7f696be7af7bd60844be7c6c780426a6a97c66f9fb97801fdceb926970970df52e77a84c185783e9c5511cb5e2889ccdebc9bb9dd8d0
7
+ data.tar.gz: e5878877935ef59cd2728a07d1f130811afde79b12e634474d433005f1e2a9218a8542f809e3a0ed01f461c921d2d9bdebf1f970d03477226029c0639e733a05
data/README.md CHANGED
@@ -4,11 +4,16 @@ globetrotter retrieves a list of DNS servers around the world from the [Public D
4
4
 
5
5
  ## Installation
6
6
 
7
- `gem install globetrotter`
7
+ $ gem install globetrotter
8
8
 
9
9
  ## Usage
10
10
  Query 100 DNS servers for googleapis.com, making 10 requests in parallel at a time:
11
- `globetrotter -q googleapis.com -c 100 -p 10`
11
+
12
+ $ globetrotter -q googleapis.com -c 100 -p 10
13
+
14
+ Write results for google.com to /tmp/google.txt - file will be created if it doens't exist
15
+
16
+ $ globetrotter -q google.com -f /tmp/google.txt
12
17
 
13
18
  See `globetrotter -h` for all parameters
14
19
 
data/bin/globetrotter CHANGED
@@ -4,7 +4,6 @@ $:.unshift File.join(File.dirname(__FILE__), %w{.. lib})
4
4
  require 'globetrotter'
5
5
  require 'optparse'
6
6
  require 'ostruct'
7
- require 'dnsruby'
8
7
 
9
8
  class GlobetrotterOptions
10
9
  def self.parse(args)
@@ -14,6 +13,7 @@ class GlobetrotterOptions
14
13
  options.ns_max_age_minutes = 60
15
14
  options.timeout_seconds = 2
16
15
  options.ns_query_concurrency = 10
16
+ options.file = false
17
17
 
18
18
  opt_parser = OptionParser.new do |opts|
19
19
  opts.banner = 'Usage: globetrotter [options] example.org'
@@ -32,6 +32,9 @@ class GlobetrotterOptions
32
32
  opts.on('-a 60', Integer, 'Use name servers checked less than A minutes ago') do |o|
33
33
  options.ns_max_age_minutes = o
34
34
  end
35
+ opts.on('-f /path/to/file', String, 'Read/write data to this file') do |o|
36
+ options.file = o
37
+ end
35
38
  opts.on_tail('-h', '--help', 'Display CLI help (this output)') do |o|
36
39
  puts opts.help
37
40
  exit
data/globetrotter.gemspec CHANGED
@@ -22,6 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'rake'
23
23
 
24
24
  spec.add_runtime_dependency 'rubydns', '~> 0.8'
25
- spec.add_runtime_dependency 'dnsruby', '~> 1.54'
26
25
  spec.add_runtime_dependency 'wrest', '~> 1.5'
27
26
  end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ require 'ipaddr'
3
+ require 'set'
4
+
5
+ class GlobetrotterFile
6
+ def initialize(file)
7
+ @set = Set.new
8
+ @file = open(file)
9
+ parse
10
+ end
11
+
12
+ attr_accessor :set
13
+
14
+ def open(file)
15
+ begin
16
+ file = File.open(file, File::RDONLY|File::CREAT)
17
+ rescue StandardError => e
18
+ abort e.to_s
19
+ end
20
+ file
21
+ end # open
22
+
23
+ def parse
24
+ self.open if @file.nil?
25
+ line_number = 0
26
+ # parse line for IP
27
+ @file.each_line do |line|
28
+ line_number += 1
29
+ begin
30
+ ip = IPAddr.new(line.chomp)
31
+ @set.add(ip)
32
+ rescue StandardError => e
33
+ abort "#{e} on line #{line_number}: '#{line}'"
34
+ end
35
+ end
36
+ @file.close unless @file.nil?
37
+ self
38
+ end # parse
39
+
40
+ def write
41
+ begin
42
+ File.open(@file, 'w') do |f|
43
+ f.puts(@set.to_a.sort.join("\n"))
44
+ end
45
+ rescue StandardError => e
46
+ abort e.to_s
47
+ end
48
+ end # write
49
+
50
+ def to_s
51
+ @file.path
52
+ end
53
+
54
+ end
@@ -1,3 +1,3 @@
1
1
  class Globetrotter
2
- VERSION = "0.0.6"
2
+ VERSION = '0.0.10'
3
3
  end
data/lib/globetrotter.rb CHANGED
@@ -1,5 +1,6 @@
1
- require_relative './globetrotter/version'
2
- require_relative './globetrotter/nameserver'
1
+ require 'globetrotter/version'
2
+ require 'globetrotter/nameserver'
3
+ require 'globetrotter/file'
3
4
  require 'wrest'
4
5
  require 'rubydns'
5
6
  require 'time'
@@ -15,6 +16,7 @@ class Globetrotter
15
16
  @query = options.domain
16
17
  @concurrency = options.ns_query_concurrency
17
18
  @ns_ips = fetch_ns_ips
19
+ @file = GlobetrotterFile.new(options.file) if options.file
18
20
  end
19
21
 
20
22
  def run
@@ -30,6 +32,7 @@ class Globetrotter
30
32
 
31
33
  EM.run do
32
34
  result_ips = Set.new
35
+ result_ips.merge(@file.set) if @file
33
36
  ok = 0
34
37
  nok = 0
35
38
  EM::Iterator.new(@ns_ips, @concurrency).each(
@@ -55,8 +58,14 @@ class Globetrotter
55
58
  end,
56
59
  proc do
57
60
  EM.stop
58
- result_ips.each { |ip| puts ip }
61
+ if @file
62
+ @file.set = result_ips
63
+ @file.write
64
+ else
65
+ result_ips.each { |ip| puts ip }
66
+ end
59
67
  $stderr.puts "#{ok} succeeded, #{nok} failed (#{ok + nok} total)"
68
+ $stderr.puts "Results written to #{@file}" if @file
60
69
  end
61
70
  )
62
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globetrotter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Lopez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-19 00:00:00.000000000 Z
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.8'
55
- - !ruby/object:Gem::Dependency
56
- name: dnsruby
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.54'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.54'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: wrest
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -96,6 +82,7 @@ files:
96
82
  - bin/globetrotter
97
83
  - globetrotter.gemspec
98
84
  - lib/globetrotter.rb
85
+ - lib/globetrotter/file.rb
99
86
  - lib/globetrotter/nameserver.rb
100
87
  - lib/globetrotter/version.rb
101
88
  homepage: https://github.com/amplify-education/globetrotter