-
Notifications
You must be signed in to change notification settings - Fork 50
Open
Description
Certain (non-domain) queries combined with an incompatible output option (--whois) should return a non-zero exit code and a warning or error message. Presently, queries for an ASN or IP address combined with the --whois output option emit nothing but still return a zero exit code, which can be confusing when there is also no warning or error emitted. The same (non-domain) queries function correctly with --text output, but my hope is that the user experience can be further improved when attempting output options that are incompatible, specifically where the user is informed via a warning or error message in combination with a non-zero exit code.
Examples
~/go/bin/rdap --cache-dir='' --whois AS1
% ~/go/bin/rdap --cache-dir='' --whois AS1
% echo $?
0
Verbose OpenRDAP whois output with an ASN query input
% ~/go/bin/rdap --verbose --cache-dir='' --whois AS1 # OpenRDAP v0.9.1 # # rdap: Configuring query... # rdap: Using in-memory cache # rdap: Bootstrap URL is default 'https://data.iana.org/rdap/' # rdap: Bootstrap cache TTL set to 3600 seconds # rdap: Timeout is 30 seconds # # client: Running... # client: Request type : autnum # client: Request query : 1 # client: Request URL : TBD, bootstrap required # bootstrap: Looking up... # bootstrap: Question type : asn # bootstrap: Question query: 1 # bootstrap: Cache state: asn.json: not cached # bootstrap: Downloading asn.json # bootstrap: Looked up '1' # bootstrap: Matching entry 'AS1-AS1876' # bootstrap: Service URL #1: 'https://rdap.arin.net/registry/' # bootstrap: Service URL #2: 'http://rdap.arin.net/registry/' # client: RDAP URL #0 is https://rdap.arin.net/registry/autnum/1 # client: RDAP URL #1 is http://rdap.arin.net/registry/autnum/1 # client: GET https://rdap.arin.net/registry/autnum/1 # client: status-code=200, content-type=application/rdap+json, length=9971 bytes, duration=214.325667ms # client: Successfully decoded response # # rdap: Finished in 340.433833ms
% echo $? 0
~/go/bin/rdap --cache-dir='' --whois 1.1.1.1
% ~/go/bin/rdap --cache-dir='' --whois 1.1.1.1
% echo $?
0
Verbose OpenRDAP whois output with an IPv4 query input
% ~/go/bin/rdap --verbose --cache-dir='' --whois 1.1.1.1 # OpenRDAP v0.9.1 # # rdap: Configuring query... # rdap: Using in-memory cache # rdap: Bootstrap URL is default 'https://data.iana.org/rdap/' # rdap: Bootstrap cache TTL set to 3600 seconds # rdap: Timeout is 30 seconds # # client: Running... # client: Request type : ip # client: Request query : 1.1.1.1 # client: Request URL : TBD, bootstrap required # bootstrap: Looking up... # bootstrap: Question type : ipv4 # bootstrap: Question query: 1.1.1.1 # bootstrap: Cache state: ipv4.json: not cached # bootstrap: Downloading ipv4.json # bootstrap: Looked up '1.1.1.1/32' # bootstrap: Matching entry '1.0.0.0/8' # bootstrap: Service URL #1: 'https://rdap.apnic.net/' # client: RDAP URL #0 is https://rdap.apnic.net/ip/1.1.1.1 # client: GET https://rdap.apnic.net/ip/1.1.1.1 # client: status-code=200, content-type=application/rdap+json, length=3854 bytes, duration=419.6ms # client: Successfully decoded response # # rdap: Finished in 614.786583ms
% echo $? 0
~/go/bin/rdap --cache-dir='' --whois 2606:4700:4700::1111
% ~/go/bin/rdap --cache-dir='' --whois 2606:4700:4700::1111
% echo $?
0
Verbose OpenRDAP whois output with an IPv6 query input
% ~/go/bin/rdap --verbose --cache-dir='' --whois 2606:4700:4700::1111 # OpenRDAP v0.9.1 # # rdap: Configuring query... # rdap: Using in-memory cache # rdap: Bootstrap URL is default 'https://data.iana.org/rdap/' # rdap: Bootstrap cache TTL set to 3600 seconds # rdap: Timeout is 30 seconds # # client: Running... # client: Request type : ip # client: Request query : 2606:4700:4700::1111 # client: Request URL : TBD, bootstrap required # bootstrap: Looking up... # bootstrap: Question type : ipv6 # bootstrap: Question query: 2606:4700:4700::1111 # bootstrap: Cache state: ipv6.json: not cached # bootstrap: Downloading ipv6.json # bootstrap: Looked up '2606:4700:4700::1111/128' # bootstrap: Matching entry '2600::/12' # bootstrap: Service URL #1: 'https://rdap.arin.net/registry/' # bootstrap: Service URL #2: 'http://rdap.arin.net/registry/' # client: RDAP URL #0 is https://rdap.arin.net/registry/ip/2606:4700:4700::1111 # client: RDAP URL #1 is http://rdap.arin.net/registry/ip/2606:4700:4700::1111 # client: GET https://rdap.arin.net/registry/ip/2606:4700:4700::1111 # client: status-code=200, content-type=application/rdap+json, length=12130 bytes, duration=307.6895ms # client: Successfully decoded response # # rdap: Finished in 386.910542ms
% echo $? 0
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels