rirfinder 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/rirfinder.rb +4 -0
- data/lib/rirfinder/rir.rb +54 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -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
|
data/lib/rirfinder.rb
ADDED
@@ -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: []
|