Browse Source

tidy function + IPv4 inaddr-arpa helper

boB Rudis 5 months ago
parent
commit
5ccf78d7ed
No known key found for this signature in database
9 changed files with 269 additions and 14 deletions
  1. 1
    1
      DESCRIPTION
  2. 3
    0
      NAMESPACE
  3. 52
    1
      R/doh-query.R
  4. 24
    0
      R/to-inaddr-arpa.R
  5. 34
    3
      README.Rmd
  6. 108
    9
      README.md
  7. 17
    0
      man/tidy.Rd
  8. 16
    0
      man/tidy.gdns_doh_response.Rd
  9. 14
    0
      man/to_inaddr_arpa.Rd

+ 1
- 1
DESCRIPTION View File

@@ -1,7 +1,7 @@
1 1
 Package: clandnstine
2 2
 Type: Package
3 3
 Title: Perform Secure-by-default 'DNS' Queries
4
-Version: 0.2.0
4
+Version: 0.2.1
5 5
 Date: 2019-05-26
6 6
 Authors@R: c(
7 7
     person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"), 

+ 3
- 0
NAMESPACE View File

@@ -2,6 +2,7 @@
2 2
 
3 3
 S3method(print,gctx)
4 4
 S3method(print,gdns_response)
5
+S3method(tidy,gdns_doh_response)
5 6
 export("%>%")
6 7
 export(doh_post)
7 8
 export(doh_servers)
@@ -26,6 +27,8 @@ export(gdns_set_tls_ca_path)
26 27
 export(gdns_set_transports)
27 28
 export(gdns_update_resolvers)
28 29
 export(is_gctx)
30
+export(tidy)
31
+export(to_inaddr_arpa)
29 32
 import(R6)
30 33
 import(httr)
31 34
 importFrom(Rcpp,sourceCpp)

+ 52
- 1
R/doh-query.R View File

@@ -38,10 +38,61 @@ doh_post <- function(name, type = "A", server_path = "https://dns.quad9.net/dns-
38 38
 
39 39
   if (length(res)) {
40 40
     out <- jsonlite::fromJSON(res)
41
-    # class(out) <- c("gdns_response", "list")
41
+    class(out) <- c("gdns_doh_response", "list")
42 42
     out
43 43
   } else {
44 44
     NULL
45 45
   }
46 46
 
47 47
 }
48
+
49
+#' Tidy generic
50
+#'
51
+#' @keywords internal
52
+#' @export
53
+#' @param x an object
54
+#' @param ... unused
55
+tidy <- function (x, ...) {
56
+  UseMethod("tidy")
57
+}
58
+
59
+#' Tidy a DoH POST response
60
+#'
61
+#' @param x a DoH POST response
62
+#' @param ... unused
63
+#' @export
64
+tidy.gdns_doh_response <- function(x, ...) {
65
+
66
+  rawdat <- x$answer[, c("rdata")]
67
+
68
+  nr <- colnames(rawdat)
69
+  if ("txt_strings" %in% nr) {
70
+    vapply(rawdat[["txt_strings"]], function(.x) {
71
+      .x
72
+    }, FUN.VALUE = character(1)) -> rawdat[["txt_strings"]]
73
+  }
74
+
75
+  lapply(rawdat[["rdata_raw"]], function(.x) {
76
+
77
+    if (x$question$qtype %in% c(2, 5, 12)) {
78
+      charToRaw(.x)
79
+    } else {
80
+      as.raw(.x)
81
+    }
82
+
83
+  }) -> rawdat[["rdata_raw"]]
84
+
85
+  cbind.data.frame(
86
+    x$answer[, c("name", "class", "type", "ttl")],
87
+    rawdat,
88
+    stringsAsFactors = FALSE
89
+  ) -> out
90
+
91
+  class(out) <- c("tbl_df", "tbl", "data.frame")
92
+
93
+  out
94
+
95
+}
96
+
97
+
98
+

+ 24
- 0
R/to-inaddr-arpa.R View File

@@ -0,0 +1,24 @@
1
+ipv4_regex <-
2
+  "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
3
+
4
+#' Convert a vector of IPv4 addresses to in-addr.arpa format
5
+#'
6
+#' @md
7
+#' @param ipv4 vector of ipv4 addresses
8
+#' @export
9
+to_inaddr_arpa <- function(ipv4) {
10
+
11
+  ifelse(
12
+    test = grepl(ipv4_regex, ipv4),
13
+    yes =  paste0(
14
+      c(
15
+        rev(unlist(strsplit(ipv4, ".", 4), use.names = FALSE)),
16
+        "in-addr.arpa."
17
+      ),
18
+      sep = "",
19
+      collapse = "."
20
+    ),
21
+    no = ipv4
22
+  )
23
+
24
+}

+ 34
- 3
README.Rmd View File

@@ -85,13 +85,19 @@ It's stupid slow, consumes more CPU and bandwidth but forces adversaries to work
85 85
 
86 86
 The following functions are implemented:
87 87
 
88
+### Utility
89
+
90
+- `to_inaddr_arpa`:	Convert a vector of IPv4 addresses to in-addr.arpa format
91
+
88 92
 ### DNS over HTTPS
89 93
 
90
-- `doh_post`: Make a DoH Request (POST/wireformat)
91
-- `doh_servers`: Built-in list of DoH servers.
94
+- `doh_post`:	Make a DoH Request (POST/wireformat)
95
+- `doh_servers`:	Built-in list of DoH servers.
96
+- `tidy.gdns_doh_response`:	Tidy a DoH POST response
92 97
 
93 98
 ### DNS over TLS
94 99
 
100
+- `gdns_query`:  Arbitrary DNS queries
95 101
 - `gdns_context`:  Create a gdns DNS over TLS context and populate it with a resolver for use in resolution functions
96 102
 - `gdns_get_address`:  Resolve a host to an addrss
97 103
 - `gdns_get_resolution_type`:	Get the current resolution type setting
@@ -100,7 +106,6 @@ The following functions are implemented:
100 106
 - `gdns_get_tls_ca_path`:	Retreive the value with which the context's upstream recursive servers and suffixes were initialized
101 107
 - `gdns_get_transports`:	Retreive what transports are used for DNS lookups.
102 108
 - `gdns_lib_version`:  Return gdns library version
103
-- `gdns_query`:  Arbitrary DNS queries
104 109
 - `gdns_set_hosts`:  Initialized the context's local names namespace with values from the given hosts file.
105 110
 - `gdns_set_resolution_type`:	Specify whether DNS queries are performed with recursive lookups or as a stub resolver
106 111
 - `gdns_set_round_robin_upstreams`:  Set/unset context to round robin queries over the available upstreams when resolving with the stub resolution type.
@@ -170,6 +175,32 @@ Yep. Advertising even in DNS `TXT` records (see item number 8).
170 175
 str(doh_post("rud.is")$answer)
171 176
 ```
172 177
 
178
+```{r doh2}
179
+a <- doh_post("apple.com", "A")
180
+tidy(a)
181
+
182
+aaaa <- doh_post("rud.is", "AAAA")
183
+tidy(aaaa)
184
+
185
+mx <- doh_post("rud.is", "MX")
186
+tidy(mx)
187
+
188
+txt <- doh_post("lenovo.com", "TXT")
189
+tidy(txt)
190
+
191
+cname <- doh_post("dataassurance.pwc.com", "CNAME")
192
+tidy(cname)
193
+
194
+ns <- doh_post("rud.is", "NS")
195
+tidy(ns)
196
+
197
+soa <- doh_post("rud.is", "SOA")
198
+tidy(soa)
199
+
200
+ptr <- doh_post(to_inaddr_arpa("104.244.13.104"), "PTR")
201
+tidy(ptr)
202
+```
203
+
173 204
 ## clandnstine Metrics
174 205
 
175 206
 ```{r cloc, echo=FALSE}

+ 108
- 9
README.md View File

@@ -109,13 +109,20 @@ to work pretty hard to try to figure out what you’re looking for.
109 109
 
110 110
 The following functions are implemented:
111 111
 
112
+### Utility
113
+
114
+  - `to_inaddr_arpa`: Convert a vector of IPv4 addresses to in-addr.arpa
115
+    format
116
+
112 117
 ### DNS over HTTPS
113 118
 
114 119
   - `doh_post`: Make a DoH Request (POST/wireformat)
115 120
   - `doh_servers`: Built-in list of DoH servers.
121
+  - `tidy.gdns_doh_response`: Tidy a DoH POST response
116 122
 
117 123
 ### DNS over TLS
118 124
 
125
+  - `gdns_query`: Arbitrary DNS queries
119 126
   - `gdns_context`: Create a gdns DNS over TLS context and populate it
120 127
     with a resolver for use in resolution functions
121 128
   - `gdns_get_address`: Resolve a host to an addrss
@@ -129,7 +136,6 @@ The following functions are implemented:
129 136
   - `gdns_get_transports`: Retreive what transports are used for DNS
130 137
     lookups.
131 138
   - `gdns_lib_version`: Return gdns library version
132
-  - `gdns_query`: Arbitrary DNS queries
133 139
   - `gdns_set_hosts`: Initialized the context’s local names namespace
134 140
     with values from the given hosts file.
135 141
   - `gdns_set_resolution_type`: Specify whether DNS queries are
@@ -196,9 +202,9 @@ gdns_lib_version()
196 202
 ## [1] "2602:ff16:3::4dfb:9ac5" "172.93.49.183"
197 203
 
198 204
 (gdns_get_address(x, "yahoo.com"))
199
-##  [1] "2001:4998:58:1836::10" "2001:4998:58:1836::11" "2001:4998:c:1023::4"   "2001:4998:c:1023::5"  
200
-##  [5] "2001:4998:44:41d::3"   "2001:4998:44:41d::4"   "72.30.35.9"            "72.30.35.10"          
201
-##  [9] "98.137.246.7"          "98.137.246.8"          "98.138.219.231"        "98.138.219.232"
205
+##  [1] "2001:4998:44:41d::4"   "2001:4998:58:1836::10" "2001:4998:58:1836::11" "2001:4998:c:1023::4"  
206
+##  [5] "2001:4998:c:1023::5"   "2001:4998:44:41d::3"   "98.138.219.231"        "98.138.219.232"       
207
+##  [9] "72.30.35.9"            "72.30.35.10"           "98.137.246.7"          "98.137.246.8"
202 208
 
203 209
 (gdns_get_address(x, "yahoo.commmm"))
204 210
 ## character(0)
@@ -211,7 +217,7 @@ str(leno <- gdns_query(x, "lenovo.com", "txt"), 1)
211 217
 ## List of 5
212 218
 ##  $ answer_type   : int 800
213 219
 ##  $ canonical_name: chr "lenovo.com."
214
-##  $ replies_full  : int [1, 1:762] 34 114 129 128 0 1 0 10 0 0 ...
220
+##  $ replies_full  : int [1, 1:762] 81 128 129 128 0 1 0 10 0 0 ...
215 221
 ##  $ replies_tree  :'data.frame':  1 obs. of  7 variables:
216 222
 ##  $ status        : int 900
217 223
 ##  - attr(*, "class")= chr [1:2] "gdns_response" "list"
@@ -242,17 +248,110 @@ str(doh_post("rud.is")$answer)
242 248
 ##   ..$ ipv4_address: chr "172.93.49.183"
243 249
 ##   ..$ rdata_raw   :List of 1
244 250
 ##   .. ..$ : int  172 93 49 183
245
-##  $ ttl  : int 3600
251
+##  $ ttl  : int 685
246 252
 ##  $ type : int 1
247 253
 ```
248 254
 
255
+``` r
256
+a <- doh_post("apple.com", "A")
257
+tidy(a)
258
+##         name class type ttl  ipv4_address      rdata_raw
259
+## 1 apple.com.     1    1 738 17.142.160.59 11, 8e, a0, 3b
260
+## 2 apple.com.     1    1 738  17.178.96.59 11, b2, 60, 3b
261
+## 3 apple.com.     1    1 738 17.172.224.47 11, ac, e0, 2f
262
+
263
+aaaa <- doh_post("rud.is", "AAAA")
264
+tidy(aaaa)
265
+##      name class type   ttl           ipv6_address                                                      rdata_raw
266
+## 1 rud.is.     1   28 43200 2602:ff16:3::4dfb:9ac5 26, 02, ff, 16, 00, 03, 00, 00, 00, 00, 00, 00, 4d, fb, 9a, c5
267
+
268
+mx <- doh_post("rud.is", "MX")
269
+tidy(mx)
270
+##      name class type   ttl                 exchange preference
271
+## 1 rud.is.     1   15 43200 alt2.aspmx.l.google.com.         30
272
+## 2 rud.is.     1   15 43200      aspmx.l.google.com.         10
273
+## 3 rud.is.     1   15 43200   aspmx2.googlemail.com.         40
274
+## 4 rud.is.     1   15 43200 alt1.aspmx.l.google.com.         20
275
+##                                                                                                    rdata_raw
276
+## 1 00, 1e, 04, 61, 6c, 74, 32, 05, 61, 73, 70, 6d, 78, 01, 6c, 06, 67, 6f, 6f, 67, 6c, 65, 03, 63, 6f, 6d, 00
277
+## 2                     00, 0a, 05, 61, 73, 70, 6d, 78, 01, 6c, 06, 67, 6f, 6f, 67, 6c, 65, 03, 63, 6f, 6d, 00
278
+## 3         00, 28, 06, 61, 73, 70, 6d, 78, 32, 0a, 67, 6f, 6f, 67, 6c, 65, 6d, 61, 69, 6c, 03, 63, 6f, 6d, 00
279
+## 4 00, 14, 04, 61, 6c, 74, 31, 05, 61, 73, 70, 6d, 78, 01, 6c, 06, 67, 6f, 6f, 67, 6c, 65, 03, 63, 6f, 6d, 00
280
+
281
+txt <- doh_post("lenovo.com", "TXT")
282
+tidy(txt)
283
+##           name class type  ttl
284
+## 1  lenovo.com.     1   16 4990
285
+## 2  lenovo.com.     1   16 4990
286
+## 3  lenovo.com.     1   16 4990
287
+## 4  lenovo.com.     1   16 4990
288
+## 5  lenovo.com.     1   16 4990
289
+## 6  lenovo.com.     1   16 4990
290
+## 7  lenovo.com.     1   16 4990
291
+## 8  lenovo.com.     1   16 4990
292
+## 9  lenovo.com.     1   16 4990
293
+## 10 lenovo.com.     1   16 4990
294
+##                                                                                                                                                                                                                                                                                                                                                             rdata_raw
295
+## 1                                                                                  44, 67, 6f, 6f, 67, 6c, 65, 2d, 73, 69, 74, 65, 2d, 76, 65, 72, 69, 66, 69, 63, 61, 74, 69, 6f, 6e, 3d, 73, 48, 49, 6c, 53, 6c, 6a, 30, 55, 36, 55, 6e, 43, 44, 6b, 66, 48, 70, 31, 41, 6f, 6c, 57, 67, 56, 45, 76, 44, 6a, 57, 76, 63, 30, 54, 52, 34, 4b, 61, 79, 73, 44, 32, 63
296
+## 2                                                                                  44, 67, 6f, 6f, 67, 6c, 65, 2d, 73, 69, 74, 65, 2d, 76, 65, 72, 69, 66, 69, 63, 61, 74, 69, 6f, 6e, 3d, 56, 78, 57, 5f, 65, 36, 72, 5f, 4b, 61, 37, 41, 35, 31, 38, 71, 66, 58, 32, 4d, 6d, 49, 4d, 48, 47, 6e, 6b, 70, 47, 62, 6e, 41, 43, 73, 6a, 53, 78, 4b, 46, 43, 42, 77, 30
297
+## 3                                                                              45, 76, 3d, 73, 70, 66, 31, 20, 69, 6e, 63, 6c, 75, 64, 65, 3a, 73, 70, 66, 2e, 6d, 65, 73, 73, 61, 67, 65, 6c, 61, 62, 73, 2e, 63, 6f, 6d, 20, 69, 6e, 63, 6c, 75, 64, 65, 3a, 5f, 6e, 65, 74, 62, 6c, 6f, 63, 6b, 73, 2e, 65, 6c, 6f, 71, 75, 61, 2e, 63, 6f, 6d, 20, 7e, 61, 6c, 6c
298
+## 4  58, 69, 48, 7a, 51, 4a, 76, 73, 4b, 6e, 79, 47, 50, 32, 4e, 6d, 32, 71, 42, 67, 4c, 33, 66, 79, 42, 4a, 30, 43, 43, 39, 7a, 34, 47, 6b, 59, 2f, 66, 6c, 66, 6b, 34, 45, 7a, 4c, 50, 38, 6c, 50, 78, 57, 48, 44, 44, 50, 4b, 71, 5a, 57, 6d, 31, 54, 6b, 65, 46, 35, 6b, 45, 49, 4c, 2b, 4e, 6f, 74, 59, 4f, 46, 31, 77, 6f, 37, 4a, 74, 55, 44, 58, 58, 77, 3d, 3d
299
+## 5                                                                                                                                                                                                                                  20, 71, 68, 37, 68, 64, 6d, 71, 6d, 34, 6c, 7a, 73, 38, 35, 70, 37, 30, 34, 64, 36, 77, 73, 79, 62, 67, 72, 70, 73, 6c, 79, 30, 6a
300
+## 6                                                                                                                                                                                                                                  20, 65, 63, 65, 34, 32, 64, 37, 37, 34, 33, 63, 38, 34, 64, 36, 38, 38, 39, 61, 62, 64, 61, 37, 30, 31, 31, 66, 65, 36, 66, 35, 33
301
+## 7                                              4d, 56, 69, 73, 69, 74, 20, 77, 77, 77, 2e, 6c, 65, 6e, 6f, 76, 6f, 2e, 63, 6f, 6d, 2f, 74, 68, 69, 6e, 6b, 20, 66, 6f, 72, 20, 69, 6e, 66, 6f, 72, 6d, 61, 74, 69, 6f, 6e, 20, 61, 62, 6f, 75, 74, 20, 4c, 65, 6e, 6f, 76, 6f, 20, 70, 72, 6f, 64, 75, 63, 74, 73, 20, 61, 6e, 64, 20, 73, 65, 72, 76, 69, 63, 65, 73
302
+## 8                                                                                  44, 67, 6f, 6f, 67, 6c, 65, 2d, 73, 69, 74, 65, 2d, 76, 65, 72, 69, 66, 69, 63, 61, 74, 69, 6f, 6e, 3d, 6e, 47, 67, 75, 6b, 63, 70, 36, 30, 72, 43, 2d, 67, 46, 78, 4d, 4f, 4a, 77, 31, 4e, 48, 48, 30, 42, 34, 56, 6e, 53, 63, 68, 52, 72, 6c, 66, 57, 56, 2d, 48, 65, 5f, 74, 45
303
+## 9                                                                                                                      3b, 66, 61, 63, 65, 62, 6f, 6f, 6b, 2d, 64, 6f, 6d, 61, 69, 6e, 2d, 76, 65, 72, 69, 66, 69, 63, 61, 74, 69, 6f, 6e, 3d, 31, 72, 32, 61, 6d, 37, 63, 32, 62, 68, 7a, 72, 78, 70, 71, 79, 74, 30, 6d, 64, 61, 30, 64, 6a, 6f, 71, 75, 71, 73, 69
304
+## 10                                                                                                                                                                                                                                 20, 61, 38, 32, 63, 37, 34, 62, 33, 37, 61, 61, 38, 34, 65, 37, 63, 38, 35, 38, 30, 66, 30, 65, 33, 32, 66, 34, 64, 37, 39, 35, 64
305
+##                                                                                 txt_strings
306
+## 1                      google-site-verification=sHIlSlj0U6UnCDkfHp1AolWgVEvDjWvc0TR4KaysD2c
307
+## 2                      google-site-verification=VxW_e6r_Ka7A518qfX2MmIMHGnkpGbnACsjSxKFCBw0
308
+## 3                     v=spf1 include:spf.messagelabs.com include:_netblocks.eloqua.com ~all
309
+## 4  iHzQJvsKnyGP2Nm2qBgL3fyBJ0CC9z4GkY/flfk4EzLP8lPxWHDDPKqZWm1TkeF5kEIL+NotYOF1wo7JtUDXXw==
310
+## 5                                                          qh7hdmqm4lzs85p704d6wsybgrpsly0j
311
+## 6                                                          ece42d7743c84d6889abda7011fe6f53
312
+## 7             Visit www.lenovo.com/think for information about Lenovo products and services
313
+## 8                      google-site-verification=nGgukcp60rC-gFxMOJw1NHH0B4VnSchRrlfWV-He_tE
314
+## 9                               facebook-domain-verification=1r2am7c2bhzrxpqyt0mda0djoquqsi
315
+## 10                                                         a82c74b37aa84e7c8580f0e32f4d795d
316
+
317
+cname <- doh_post("dataassurance.pwc.com", "CNAME")
318
+tidy(cname)
319
+##                     name class type  ttl                   cname
320
+## 1 dataassurance.pwc.com.     1    5 1346 f6759d2.x.incapdns.net.
321
+##                                                                                    rdata_raw
322
+## 1 66, 36, 37, 35, 39, 64, 32, 2e, 78, 2e, 69, 6e, 63, 61, 70, 64, 6e, 73, 2e, 6e, 65, 74, 2e
323
+
324
+ns <- doh_post("rud.is", "NS")
325
+tidy(ns)
326
+##      name class type   ttl          nsdname                                                      rdata_raw
327
+## 1 rud.is.     1    2 43200  dns.mwebdns.eu.     64, 6e, 73, 2e, 6d, 77, 65, 62, 64, 6e, 73, 2e, 65, 75, 2e
328
+## 2 rud.is.     1    2 43200  dns.mwebdns.de.     64, 6e, 73, 2e, 6d, 77, 65, 62, 64, 6e, 73, 2e, 64, 65, 2e
329
+## 3 rud.is.     1    2 43200 dns.mwebdns.net. 64, 6e, 73, 2e, 6d, 77, 65, 62, 64, 6e, 73, 2e, 6e, 65, 74, 2e
330
+
331
+soa <- doh_post("rud.is", "SOA")
332
+tidy(soa)
333
+##      name class type   ttl expire minimum           mname
334
+## 1 rud.is.     1    6 43200 604800   86400 dns.mwebdns.de.
335
+##                                                                                                                                                                                                                                                rdata_raw
336
+## 1 03, 64, 6e, 73, 07, 6d, 77, 65, 62, 64, 6e, 73, 02, 64, 65, 00, 0a, 68, 6f, 73, 74, 6d, 61, 73, 74, 65, 72, 0a, 6d, 61, 6e, 64, 6f, 72, 61, 77, 65, 62, 02, 64, 65, 00, 77, ce, 5b, f3, 00, 00, 2a, 30, 00, 00, 0e, 10, 00, 09, 3a, 80, 00, 01, 51, 80
337
+##   refresh retry                     rname     serial
338
+## 1   10800  3600 hostmaster.mandoraweb.de. 2010012659
339
+
340
+ptr <- doh_post(to_inaddr_arpa("104.244.13.104"), "PTR")
341
+tidy(ptr)
342
+##                           name class type   ttl                      ptrdname
343
+## 1 104.13.244.104.in-addr.arpa.     1   12 43200 archive.farsightsecurity.com.
344
+##                                                                                                            rdata_raw
345
+## 1 61, 72, 63, 68, 69, 76, 65, 2e, 66, 61, 72, 73, 69, 67, 68, 74, 73, 65, 63, 75, 72, 69, 74, 79, 2e, 63, 6f, 6d, 2e
346
+```
347
+
249 348
 ## clandnstine Metrics
250 349
 
251 350
 | Lang | \# Files |  (%) | LoC |  (%) | Blank lines |  (%) | \# Lines |  (%) |
252 351
 | :--- | -------: | ---: | --: | ---: | ----------: | ---: | -------: | ---: |
253
-| C++  |        4 | 0.17 | 681 | 0.51 |         220 | 0.49 |      163 | 0.26 |
254
-| R    |       19 | 0.79 | 635 | 0.47 |         170 | 0.38 |      355 | 0.57 |
255
-| Rmd  |        1 | 0.04 |  21 | 0.02 |          56 | 0.13 |      105 | 0.17 |
352
+| R    |       20 | 0.80 | 686 | 0.49 |         188 | 0.40 |      370 | 0.58 |
353
+| C++  |        4 | 0.16 | 681 | 0.49 |         220 | 0.46 |      163 | 0.25 |
354
+| Rmd  |        1 | 0.04 |  37 | 0.03 |          66 | 0.14 |      110 | 0.17 |
256 355
 
257 356
 ## Code of Conduct
258 357
 

+ 17
- 0
man/tidy.Rd View File

@@ -0,0 +1,17 @@
1
+% Generated by roxygen2: do not edit by hand
2
+% Please edit documentation in R/doh-query.R
3
+\name{tidy}
4
+\alias{tidy}
5
+\title{Tidy generic}
6
+\usage{
7
+tidy(x, ...)
8
+}
9
+\arguments{
10
+\item{x}{an object}
11
+
12
+\item{...}{unused}
13
+}
14
+\description{
15
+Tidy generic
16
+}
17
+\keyword{internal}

+ 16
- 0
man/tidy.gdns_doh_response.Rd View File

@@ -0,0 +1,16 @@
1
+% Generated by roxygen2: do not edit by hand
2
+% Please edit documentation in R/doh-query.R
3
+\name{tidy.gdns_doh_response}
4
+\alias{tidy.gdns_doh_response}
5
+\title{Tidy a DoH POST response}
6
+\usage{
7
+\method{tidy}{gdns_doh_response}(x, ...)
8
+}
9
+\arguments{
10
+\item{x}{a DoH POST response}
11
+
12
+\item{...}{unused}
13
+}
14
+\description{
15
+Tidy a DoH POST response
16
+}

+ 14
- 0
man/to_inaddr_arpa.Rd View File

@@ -0,0 +1,14 @@
1
+% Generated by roxygen2: do not edit by hand
2
+% Please edit documentation in R/to-inaddr-arpa.R
3
+\name{to_inaddr_arpa}
4
+\alias{to_inaddr_arpa}
5
+\title{Convert a vector of IPv4 addresses to in-addr.arpa format}
6
+\usage{
7
+to_inaddr_arpa(ipv4)
8
+}
9
+\arguments{
10
+\item{ipv4}{vector of ipv4 addresses}
11
+}
12
+\description{
13
+Convert a vector of IPv4 addresses to in-addr.arpa format
14
+}

Loading…
Cancel
Save