nslookupot 0.0.10 → 0.0.12

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
  SHA256:
3
- metadata.gz: 327221d555480cece10786485fe2dcdda611e1808b95a4cc4e350a666ac20fa9
4
- data.tar.gz: 4132dc893b13642955b4cd830d73e98fadf4779ee03fd909abbf17ab83db3dc2
3
+ metadata.gz: 2c9de045df30e3e73273f0da9950c06e2e716ced7dee7fbbf55589c8c57067ee
4
+ data.tar.gz: ce164bc5a05df2681fd6afda4848262e4bcad328818a81941b53a4f777c6bc4f
5
5
  SHA512:
6
- metadata.gz: 1bea793a0d39ffd71be4335e6fe67ae87531720ed95761134b016c87b09271de5f0231f181827fc4e3503b208b06154f84f3a700b01ac91492aa2047526588cb
7
- data.tar.gz: c902c61d252da40c0467a32a2457ed7976617e78a7de0ac1c47ef76f493c6ae8fdb3cfa87fafad3259c5e302a2475d751385b2a4ed2e28f79a931314e3e946b3
6
+ metadata.gz: 9d836124c778fb60d8107d92ca53676af6e1a701881808894215ea435a7d3d33ad6138f260255c1b9bb202b25bef2588c97ed352e70a6f3739343d7ce098e7cd
7
+ data.tar.gz: acf065bdad8c0dfa20f7d6bb5a6a1efb6f040434baed88578f98fba07afeca222c5be540062f5650d7ba2349b3fdf054bb77435d1c636d270e4bf8f427b6512e
data/README.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  nslookupot is CLI that is `nslookup` over TLS (version 1.3 or 1.2).
8
8
 
9
+ - https://datatracker.ietf.org/doc/html/rfc7858
10
+
9
11
 
10
12
  ## Installation
11
13
 
@@ -26,17 +28,19 @@ Usage: nslookupot [options] name
26
28
  -h, --hostname VALUE the name server hostname (default cloudflare-dns.com)
27
29
  -n, --no-check-sni no check SNI (default false)
28
30
  -t, --type VALUE the type of the information query (default A)
31
+ --types print the list of query types
29
32
  ```
30
33
 
31
34
  You can run it the following:
32
35
 
33
36
  ```sh-session
34
37
  $ nslookupot example.com
38
+ Server: 1.1.1.1
35
39
  Address: 1.1.1.1#853
36
- --
40
+
37
41
  Name: example.com
38
42
  Address: 93.184.216.34
39
- Ttl: 2860
43
+ Ttl: 83289
40
44
 
41
45
  ```
42
46
 
@@ -44,11 +48,12 @@ If you need to resolve other than A type, you can run it the following:
44
48
 
45
49
  ```sh-session
46
50
  $ nslookupot --type=cname www.youtube.com
51
+ Server: 1.1.1.1
47
52
  Address: 1.1.1.1#853
48
- --
53
+
49
54
  Name: www.youtube.com
50
55
  Name: youtube-ui.l.google.com
51
- Ttl: 1358
56
+ Ttl: 86400
52
57
 
53
58
  ```
54
59
 
@@ -56,11 +61,12 @@ If you need to query to `8.8.8.8`, you can run it the following:
56
61
 
57
62
  ```sh-session
58
63
  $ nslookupot --server=8.8.8.8 --port=853 --hostname=dns.google www.google.com
64
+ Server: 8.8.8.8
59
65
  Address: 8.8.8.8#853
60
- --
66
+
61
67
  Name: www.google.com
62
- Address: 172.217.24.132
63
- Ttl: 223
68
+ Address: 142.250.196.132
69
+ Ttl: 175
64
70
 
65
71
  ```
66
72
 
@@ -68,14 +74,22 @@ If you need to query to `9.9.9.9`, you can run it the following:
68
74
 
69
75
  ```sh-session
70
76
  $ nslookupot --server=9.9.9.9 --port=853 --hostname=quad9.net www.quad9.net
77
+ Server: 9.9.9.9
71
78
  Address: 9.9.9.9#853
72
- --
79
+
73
80
  Name: www.quad9.net
74
81
  Address: 216.21.3.77
75
- Ttl: 1200
82
+ Ttl: 100
76
83
 
77
84
  ```
78
85
 
86
+ Supported query types are:
87
+
88
+ ```sh-session
89
+ $ nslookupot --types
90
+ ** A, AAAA, CAA, CNAME, HINFO, HTTPS, LOC, MINFO, MX, NS, PTR, SOA, SRV, SVCB, TXT, WKS
91
+ ```
92
+
79
93
 
80
94
  ## License
81
95
 
@@ -3,6 +3,7 @@
3
3
  require 'optparse'
4
4
 
5
5
  module Nslookupot
6
+ # rubocop: disable Metrics/ClassLength
6
7
  class CLI
7
8
  # rubocop: disable Metrics/AbcSize
8
9
  # rubocop: disable Metrics/MethodLength
@@ -17,6 +18,7 @@ module Nslookupot
17
18
  check_sni: true
18
19
  }
19
20
  type = 'A'
21
+ print_types = false
20
22
 
21
23
  op.on(
22
24
  '-s',
@@ -58,15 +60,28 @@ module Nslookupot
58
60
  type = v
59
61
  end
60
62
 
63
+ op.on(
64
+ '',
65
+ '--types',
66
+ 'print the list of query types'
67
+ ) do |v|
68
+ print_types = v
69
+ end
70
+
61
71
  op.banner += ' name'
62
72
  begin
63
73
  args = op.parse(argv)
64
- rescue OptionParser::InvalidOption => e
74
+ rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
65
75
  warn op.to_s
66
76
  warn "** #{e.message}"
67
77
  exit 1
68
78
  end
69
79
 
80
+ if print_types
81
+ warn "** #{types.sort.join(', ')}"
82
+ exit 1
83
+ end
84
+
70
85
  begin
71
86
  type = s2typeclass(type)
72
87
  rescue NameError
@@ -92,6 +107,15 @@ module Nslookupot
92
107
  rr
93
108
  end
94
109
 
110
+ def types
111
+ Resolv::DNS::Resource::IN.constants.filter do |const|
112
+ c = Resolv::DNS::Resource::IN.const_get(const)
113
+ c < Resolv::DNS::Resource
114
+ rescue ArgumentError
115
+ false
116
+ end
117
+ end
118
+
95
119
  # rubocop: disable Metrics/AbcSize
96
120
  def run
97
121
  opts, name, type = parse_options
@@ -116,7 +140,8 @@ module Nslookupot
116
140
  result.each do |rr|
117
141
  puts 'Name:'.ljust(16) + name
118
142
  rr.instance_variables.each do |var|
119
- k = "#{var[1..].capitalize}:".ljust(16)
143
+ k = var.to_s.delete('@').split('_').map(&:capitalize).join
144
+ k = "#{k}:".ljust(16)
120
145
  v = rr.instance_variable_get(var).to_s
121
146
  puts k + v
122
147
  end
@@ -125,4 +150,5 @@ module Nslookupot
125
150
  end
126
151
  # rubocop: enable Metrics/AbcSize
127
152
  end
153
+ # rubocop: enable Metrics/ClassLength
128
154
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nslookupot
4
- VERSION = '0.0.10'
4
+ VERSION = '0.0.12'
5
5
  end
data/spec/cli_spec.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'spec_helper'
4
4
 
5
+ # rubocop: disable Metrics/BlockLength
5
6
  RSpec.describe Nslookupot::CLI do
6
7
  context 'Resource Record (RR) TYPEs' do
7
8
  let(:cli) do
@@ -21,6 +22,8 @@ RSpec.describe Nslookupot::CLI do
21
22
  expect(cli.s2typeclass('TXT')).to eq Resolv::DNS::Resource::IN::TXT
22
23
  expect(cli.s2typeclass('WKS')).to eq Resolv::DNS::Resource::IN::WKS
23
24
  expect(cli.s2typeclass('CAA')).to eq Resolv::DNS::Resource::IN::CAA
25
+ expect(cli.s2typeclass('SVCB')).to eq Resolv::DNS::Resource::IN::SVCB
26
+ expect(cli.s2typeclass('HTTPS')).to eq Resolv::DNS::Resource::IN::HTTPS
24
27
  end
25
28
 
26
29
  it 'could raise NameError' do
@@ -30,3 +33,4 @@ RSpec.describe Nslookupot::CLI do
30
33
  end
31
34
  end
32
35
  end
36
+ # rubocop: enable Metrics/BlockLength.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nslookupot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekuwayama
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-06 00:00:00.000000000 Z
11
+ date: 2023-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
- rubygems_version: 3.2.22
113
+ rubygems_version: 3.4.6
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: nslookup over TLS