rirfinder 0.0.3

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rirfinder.rb +4 -0
  3. data/lib/rirfinder/rir.rb +54 -0
  4. metadata +46 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 07cc7c6e263e3caba594f9816ce1c963900cd6ad
4
+ data.tar.gz: b7076b7af178bbbe411c68d4fadbb705ae5416c9
5
+ SHA512:
6
+ metadata.gz: 6b8a32938272a4df5ba85b9d8a86e6fbcb00471d707b1d940fb5c470e7784eaedc68e24fd547c0c0688afff07c1c93eeabbd0f7310de8c5e6e5685125a1859e0
7
+ data.tar.gz: 81ec563d479d6e1690d8a0c99ef089cb41e90f5c905c67357de17076277d8436310b7ae4ec94de0504e2f412482b8f241a9ae4d73e2c284f06ad47aab4bc43c5
@@ -0,0 +1,4 @@
1
+ class RIRFinder
2
+ end
3
+
4
+ require 'rirfinder/rir'
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'httparty'
4
+
5
+ class RIRFinder::RIR
6
+ def initialize db, rir, tmp = '/tmp/rir'
7
+ @rir_index = [:afrinic, :apnic, :arin, :lacnic, :ripe]
8
+ @db = db
9
+ @rir = if rir == :all
10
+ @rir_index
11
+ else
12
+ rir.class == Array ? rir : Array.new.push(rir)
13
+ end
14
+ @tmp = tmp and Dir.mkdir tmp rescue nil
15
+ end
16
+
17
+ def build_db
18
+ _fetch @rir
19
+ _parse
20
+ # TODO
21
+ end
22
+
23
+ def _fetch rir_list
24
+ rir_list.each do |rir|
25
+ fp = open @tmp + "/#{rir}", 'w'
26
+ fp.write HTTParty.get("http://ftp.#{rir}.net/pub/stats/#{rir}/delegated-#{rir}-extended-latest")
27
+ fp.close
28
+ end
29
+ end
30
+
31
+ def _parse
32
+ reports = Hash.new
33
+ ignore_initial_lines = 4
34
+ Dir.chdir @tmp
35
+ (Dir.entries(@tmp) - ['.', '..']).each do |report|
36
+ fp = open report
37
+ reports[report] = fp.read.lines.select{|line| line[0] != '#'}[ignore_initial_lines..-1]
38
+ .map{|line| line.split '|'}
39
+ fp.close
40
+ end
41
+ reports
42
+ end
43
+
44
+ class << self
45
+ def generate args = {db: 'rir.db', rir: :all, fetch: false}
46
+ if args[:fetch]
47
+ self.new(args[:db], args[:rir]).build_db
48
+ else
49
+ self.new(args[:db], args[:rir])._parse
50
+ end
51
+ end
52
+ end
53
+ end
54
+
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rirfinder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Tahmid Shakil
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: RIRFinder is a Regional Internet Registry (RIR) traversal module. It
14
+ is aimed to provide country based fast network search feature.
15
+ email: at.shakil.92@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/rirfinder.rb
21
+ - lib/rirfinder/rir.rb
22
+ homepage: https://github.com/atshakil/rirfinder
23
+ licenses:
24
+ - CC-BY-SA-4.0
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.5.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: A RIR traversal module
46
+ test_files: []