rirfinder 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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: []