nicinfo 1.2.2 → 1.3.0.pre.alpha1

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: 7142844fdfbe7ded73fa9c5e0f9dfe35593a8397
4
- data.tar.gz: 7d3fa18e2f119dca33f398795aa71b51af677bd2
3
+ metadata.gz: f574db872855ffbfa72d6a22daaf59fdc1aec3b5
4
+ data.tar.gz: 414c3b45e8a4fe46e6afc31fc3d02c591a27c485
5
5
  SHA512:
6
- metadata.gz: 1f31cbb2a7e2735c84471b90469bd32a39d224e3155ebc7f1b22c9874dc494952d727bb88f639d5cad0a817ae0a269cbb549e168409a21a0c7bf7d1c320a51cd
7
- data.tar.gz: 0c393f07d54cc79b292ecf97a8604242afe013e8e68bd7718ad3e4c894768e031328f2b3383ec7a6e21fa66c50abf9730a6ec35052e7f5e3a2eaea7586d3b559
6
+ metadata.gz: 2eedd1a0b3a0226000664e4c9268874ac1886d7d940668f79826348cfbc285609be465c280a727f332297514ef5138eac095c91ed376881d406713962f8fa438
7
+ data.tar.gz: 93bd001ca3321104020bb7a0d1c48324c571cc97e81fc130d114958865eac35e378461b69c9e5e582070100686f9c99c89c74b02a64fada2c48a532bd22f100f
@@ -14,6 +14,7 @@
14
14
 
15
15
 
16
16
  require 'fileutils'
17
+ require 'time'
17
18
  require 'nicinfo/nicinfo_logger'
18
19
  require 'yaml'
19
20
  require 'ostruct'
@@ -119,6 +120,47 @@ module NicInfo
119
120
  FileUtils::cp_r( src_dir, @rdap_bootstrap_dir )
120
121
  end
121
122
 
123
+ def set_bsfiles_last_update_time t = Time.now
124
+ f = File.open(bsfiles_last_update_filename, "w" )
125
+ f.write t.strftime( "%Y-%m-%d %H:%M:%S")
126
+ f.close
127
+ end
128
+
129
+ def get_bsfiles_last_update_time
130
+ retval = nil
131
+ fname = bsfiles_last_update_filename
132
+ if File.exists?( fname )
133
+ f = File.open( fname, "r" )
134
+ data = f.read
135
+ f.close
136
+ retval = Time.parse( data )
137
+ end
138
+ return retval
139
+ end
140
+
141
+ def bsfiles_last_update_filename
142
+ File.join(@rdap_bootstrap_dir, NicInfo::BSFILE_LAST_CHECK_FILENAME)
143
+ end
144
+
145
+ def check_bsfiles_age?
146
+ retval = false
147
+ if @config[ NicInfo::BOOTSTRAP ][ NicInfo::CHECK_BSFILES_AGE ]
148
+ t = get_bsfiles_last_update_time
149
+ if t != nil
150
+ configed_age = @config[ NicInfo::BOOTSTRAP ][ NicInfo::BSFILES_AGE ]
151
+ age = t + configed_age
152
+ retval = true if age < Time.now
153
+ else
154
+ retval = true
155
+ end
156
+ end
157
+ return retval
158
+ end
159
+
160
+ def update_bsfiles? aged
161
+ return aged && @config[ NicInfo::BOOTSTRAP ][ NicInfo::UPDATE_BSFILES ]
162
+ end
163
+
122
164
  def save name, data
123
165
  data_file = File.open( File.join( @app_data, name ), "w" )
124
166
  data_file.write data
@@ -275,6 +317,20 @@ bootstrap:
275
317
 
276
318
  ns_root_url: https://rdap.arin.net/registry
277
319
 
320
+ # Check for updates of the IANA RDAP bootstrap files
321
+ # If true, check for IANA bootstrap files once they have aged past bsfiles_age
322
+ # Values are true or false
323
+ check_bsfiles_age: true
324
+
325
+ # The age at which IANA RDAP bootstrap files are to be checked if check_bsfiles is true
326
+ # This value is in seconds
327
+ bsfiles_age: 604800
328
+
329
+ # If the age of the IANA RDAP bootstrap files are considered old according to bsfiles_age
330
+ # and check_bsfiles is true, then this value will cause a fetch of new files if true.
331
+ # Values are true or false
332
+ update_bsfiles: true
333
+
278
334
  search:
279
335
 
280
336
  # Substring matching
@@ -288,7 +344,7 @@ security:
288
344
 
289
345
  config:
290
346
  # This should not be altered.
291
- version: 3
347
+ version: 4
292
348
 
293
349
  YAML_CONFIG
294
350
 
@@ -18,10 +18,10 @@
18
18
 
19
19
  module NicInfo
20
20
 
21
- VERSION = "1.2.2"
21
+ VERSION = "1.3.0-alpha1"
22
22
  VERSION_LABEL = "NicInfo v." + VERSION
23
23
  COPYRIGHT = "Copyright (c) 2011-2017 American Registry for Internet Numbers (ARIN)"
24
- CONFIG_VERSION = 3
24
+ CONFIG_VERSION = 4
25
25
 
26
26
  # regular expressions
27
27
  NET_HANDLE_REGEX = /^NET-.*/i
@@ -75,6 +75,9 @@ module NicInfo
75
75
  IP_ROOT_URL = "ip_root_url"
76
76
  AS_ROOT_URL = "as_root_url"
77
77
  DOMAIN_ROOT_URL = "domain_root_url"
78
+ CHECK_BSFILES_AGE = "check_bsfiles_age"
79
+ BSFILES_AGE = "bsfiles_age"
80
+ UPDATE_BSFILES = "update_bsfiles"
78
81
  SEARCH = "search"
79
82
  SUBSTRING = "substring"
80
83
  CONFIG = "config"
@@ -104,4 +107,6 @@ module NicInfo
104
107
  255 => "reserved"
105
108
  }
106
109
 
110
+ BSFILE_LAST_CHECK_FILENAME = "_last_check_time.txt"
111
+
107
112
  end
@@ -390,10 +390,16 @@ module NicInfo
390
390
  end
391
391
 
392
392
  if @config.options.get_iana_files
393
- get_file_via_http( "http://data.iana.org/rdap/asn.json", File.join( @config.rdap_bootstrap_dir, "asn.json" ), 0 )
394
- get_file_via_http( "http://data.iana.org/rdap/ipv4.json", File.join( @config.rdap_bootstrap_dir, "ipv4.json" ), 0 )
395
- get_file_via_http( "http://data.iana.org/rdap/ipv6.json", File.join( @config.rdap_bootstrap_dir, "ipv6.json" ), 0 )
396
- get_file_via_http( "http://data.iana.org/rdap/dns.json", File.join( @config.rdap_bootstrap_dir, "dns.json" ), 0 )
393
+ get_iana_files
394
+ else
395
+ check_bsfiles_age = @config.check_bsfiles_age?
396
+ update_bsfiles = @config.update_bsfiles?( check_bsfiles_age )
397
+ if update_bsfiles
398
+ @config.logger.mesg( "IANA RDAP bootstrap files are old and need to be updated." )
399
+ get_iana_files
400
+ elsif check_bsfiles_age
401
+ @config.logger.mesg( "IANA RDAP bootstrap files are old. Update them with --iana option" )
402
+ end
397
403
  end
398
404
 
399
405
  if @config.options.demo
@@ -500,14 +506,21 @@ module NicInfo
500
506
  end
501
507
  else
502
508
  json_data = do_rdap_query
503
- display_rdap_query( json_data, true ) if json_data
509
+ display_rdap_query( json_data, true )
504
510
  end
505
511
 
506
512
 
507
513
  end
508
514
 
515
+ def get_iana_files
516
+ get_file_via_http("http://data.iana.org/rdap/asn.json", File.join(@config.rdap_bootstrap_dir, "asn.json"), 0)
517
+ get_file_via_http("http://data.iana.org/rdap/ipv4.json", File.join(@config.rdap_bootstrap_dir, "ipv4.json"), 0)
518
+ get_file_via_http("http://data.iana.org/rdap/ipv6.json", File.join(@config.rdap_bootstrap_dir, "ipv6.json"), 0)
519
+ get_file_via_http("http://data.iana.org/rdap/dns.json", File.join(@config.rdap_bootstrap_dir, "dns.json"), 0)
520
+ @config.set_bsfiles_last_update_time
521
+ end
522
+
509
523
  def do_rdap_query
510
- retval = nil
511
524
  if @config.config[ NicInfo::BOOTSTRAP ][ NicInfo::BOOTSTRAP_URL ] == nil && !@config.options.url
512
525
  bootstrap = Bootstrap.new( @config )
513
526
  qtype = @config.options.query_type
@@ -565,7 +578,7 @@ module NicInfo
565
578
  end
566
579
  inspect_rdap_compliance json_data
567
580
  cache_self_references json_data
568
- retval = json_data
581
+ json_data
569
582
  rescue JSON::ParserError => a
570
583
  @config.logger.mesg( "Server returned invalid JSON!" )
571
584
  rescue SocketError => a
@@ -604,7 +617,6 @@ module NicInfo
604
617
  end
605
618
  @config.logger.trace("Server response code was " + e.response.code)
606
619
  end
607
- return retval
608
620
  end
609
621
 
610
622
  def display_rdap_query json_data, show_help = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nicinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0.pre.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Newton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2017-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: netaddr
@@ -100,12 +100,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ">="
103
+ - - ">"
104
104
  - !ruby/object:Gem::Version
105
- version: '0'
105
+ version: 1.3.1
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 2.6.14
108
+ rubygems_version: 2.6.11
109
109
  signing_key:
110
110
  specification_version: 4
111
111
  summary: RDAP Client