diff --git a/.travis.yml b/.travis.yml index c9ec8f4..fbc3ebf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,14 @@ -language: r -warnings_are_errors: true -sudo: required +language: R + +sudo: false + +cache: packages + +os: + - linux + - osx + +r: + - oldrel + - release + - devel diff --git a/DESCRIPTION b/DESCRIPTION index 213c67f..57c6cf1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: gdns Title: Tools to Work with Google DNS Over HTTPS API -Version: 0.2.0.9000 -Authors@R: c(person("Bob", "Rudis", email = "bob@rudis.net", role = c("aut", "cre"))) -Maintainer: Bob Rudis +Version: 0.2.0 +Authors@R: c(person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"))) +Maintainer: Bob Rudis Description: To address the problem of insecurity of UDP-based DNS requests, Google Public DNS offers DNS resolution over an encrypted HTTPS connection. DNS-over-HTTPS greatly enhances privacy and security diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..338232e --- /dev/null +++ b/NEWS.md @@ -0,0 +1,4 @@ +# gdns 0.2.0 + +* CRAN release +* Added a `NEWS.md` file to track changes to the package. diff --git a/R/gdns.r b/R/gdns.r index 374e91d..3503181 100644 --- a/R/gdns.r +++ b/R/gdns.r @@ -29,6 +29,7 @@ S_GET <- purrr::safely(GET) #' @param type RR type can be represented as a number in [1, 65535] or canonical #' string (A, aaaa, etc). More information on RR types can be #' found \href{http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4}{here}. +#' You can use \code{255} for an \code{ANY} query. #' @param edns_client_subnet The edns0-client-subnet option. Format is an IP #' address with a subnet mask. Examples: \code{1.2.3.4/24}, #' \code{2001:700:300::/48}.\cr @@ -43,6 +44,7 @@ S_GET <- purrr::safely(GET) #' @export #' @examples #' query("rud.is") +#' query("example.com", "255") # ANY query #' query("microsoft.com", "MX") #' query("google-public-dns-a.google.com", "TXT") #' query("apple.com") diff --git a/README.Rmd b/README.Rmd index d76dcac..5f78642 100644 --- a/README.Rmd +++ b/README.Rmd @@ -36,11 +36,6 @@ The following functions are implemented: - `spf_ptrs`: SPF field extraction functions - `split_spf`: Split out all SPF records in a domain's TXT record -### News - -- Version 0.2.0.9000 SPF stuff -- Version 0.1.0.9000 released - ### Installation ```{r eval=FALSE} @@ -59,20 +54,10 @@ library(gdns) # current verison packageVersion("gdns") -``` - -### Test Results - -```{r} -library(gdns) -library(testthat) - -date() - -test_dir("tests/") - query("rud.is") +query("example.com", "255") # "ANY" query + query("microsoft.com", "MX") query("google-public-dns-a.google.com", "TXT") @@ -83,7 +68,17 @@ query("17.142.160.59", "PTR") hosts <- c("rud.is", "dds.ec", "r-project.org", "rstudio.com", "apple.com") gdns::bulk_query(hosts) +``` + +### Test Results + +```{r} +library(gdns) +library(testthat) +date() + +test_dir("tests/") ``` ### Code of Conduct diff --git a/README.md b/README.md index 7141246..dd0e547 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,6 @@ The following functions are implemented: - `spf_ptrs`: SPF field extraction functions - `split_spf`: Split out all SPF records in a domain's TXT record -### News - -- Version 0.2.0.9000 SPF stuff -- Version 0.1.0.9000 released - ### Installation ``` r @@ -44,20 +39,6 @@ library(gdns) # current verison packageVersion("gdns") #> [1] '0.2.0.9000' -``` - -### Test Results - -``` r -library(gdns) -library(testthat) - -date() -#> [1] "Sun Apr 10 14:51:46 2016" - -test_dir("tests/") -#> testthat results ======================================================================================================== -#> OK: 2 SKIPPED: 0 FAILED: 0 query("rud.is") #> $Status @@ -93,7 +74,81 @@ query("rud.is") #> [1] "0.0.0.0/0" #> #> $Comment -#> [1] "Response from dns.mwebdns.net.(84.246.121.10)" +#> [1] "Response from dns.mwebdns.net.(84.246.124.75)" + +query("example.com", "255") # "ANY" query +#> $Status +#> [1] 0 +#> +#> $TC +#> [1] FALSE +#> +#> $RD +#> [1] TRUE +#> +#> $RA +#> [1] TRUE +#> +#> $AD +#> [1] TRUE +#> +#> $CD +#> [1] FALSE +#> +#> $Question +#> name type +#> 1 example.com. 255 +#> +#> $Answer +#> name type TTL +#> 1 example.com. 6 3599 +#> 2 example.com. 46 21599 +#> 3 example.com. 46 21599 +#> 4 example.com. 46 3599 +#> 5 example.com. 46 59 +#> 6 example.com. 46 21599 +#> 7 example.com. 46 3599 +#> 8 example.com. 46 3599 +#> 9 example.com. 46 3599 +#> 10 example.com. 47 3599 +#> 11 example.com. 2 21599 +#> 12 example.com. 2 21599 +#> 13 example.com. 28 21599 +#> 14 example.com. 1 21599 +#> 15 example.com. 16 59 +#> 16 example.com. 16 59 +#> 17 example.com. 48 3599 +#> 18 example.com. 48 3599 +#> 19 example.com. 48 3599 +#> data +#> 1 sns.dns.icann.org. noc.dns.icann.org. 2015082662 7200 3600 1209600 3600 +#> 2 a 8 2 86400 1476095331 1474297785 1704 example.com. OnhJa3/aHkvePBvBME3nlZrkU/rdenyaquFgSYI/wKPq2/ZJVZGhv0TVBMJ5l6GZujqnyBfq9cvvb88//koi17oNjR5JEv2cv4rLT5pud3VhQdVrHD7fU8BV/YnCpP3ikXJMgjf6sAhgL7FZKLtpv7cFXnqznfRCTZ3HKkpBtAB0ZZw= +#> 3 ns 8 2 86400 1476218628 1474362585 1704 example.com. dxPw4KtqLRMR/P1MB7umTClO/Tgf5X2ukJApKd133OMPhsy7c2N3QIxW4TLxZnCezUewDE1D86HBnGi1kGw4pN4W83lI37L6pTjIkDUtrc1acISOwg9Q9JM74On9/qKTGpTi7aSGVA5t4biLKqPm00a1Yu/VNPOxeLQPyYNjUYspNZ8= +#> 4 soa 8 2 3600 1476508736 1474722585 1704 example.com. rHojLwiWn5xVU8noy1se7gRjiNI6GJdDcxwO1GU1qUs3Un4y7LyENjrK8qOv2z6EhblBOhPnrgnNMzEPPH3w+5azpU6xAH+jJHO4tExj4Pc3zzQ1sfFx1k8xWPfJjiWnUtUsk19y8vVqHvLXltvVItXlCClzljA0XyNUi1fvYjHbQxI= +#> 5 txt 8 2 60 1476051975 1474218584 1704 example.com. FBZiE56Ux4VY5AMVtgitLIBWi+UteNSFh4BWwJksVRRt/7OoH7iD6h4UDqP8rNbk9qvXmRo4Ce2vROCbNkdTy/IDEoKo+Urfm69TuI2UTbl/nnQ2UtfMIEC83yywYRWdra5BPkt67SQhHSc4N7QHblABFbm2jPuu2+uOqaRCpfeoWYo= +#> 6 aaaa 8 2 86400 1475967038 1474146584 1704 example.com. ZQgPaEBxSxHCPhOES76xksqOVYSRtNIieIwTwIo4Oceq0NGzjOyI+8wrgs79QHqs4e5SRe67hVX2rSaJ9Q167+TuQz57ZtyqeOZ+x+cgULyT1Q+8N0ZJlHpZS4i2VfR1xT+quG+0m9wtye8wA3Hl2mWPyTjtsH7mjoS7/U/ZQMJwi44= +#> 7 nsec 8 2 3600 1475694918 1473887384 1704 example.com. XTCfotH8+cSDgNrFnCNWt4lx64yTnVzwOMZsFgynNSGS5LzY0VfRl7UvTH2WDVzdsIHgKpPBOUwv/DvjNhAMzUgHFlaK/A+U1aFa16/YQkqkIqqfnCA4EgBdhIK4FM3dSIVcpaj3PhGFKvMG4RBvoMAWLRXE3gKf3306CJzX1sfKdsA= +#> 8 dnskey 8 2 3600 1476561735 1474722585 31406 example.com. Oup7snCR/5iUmTuGyHfCfFCisTeqaJ8RHD6aE9wZQR2CCkKZHXO9dzfUL1gA6T35p4T0XeM+TMlv1uZhX157RnanPwyZluancmm5cNz5ub0vG7G/O4DxnSoLmATYoBJ7Ub9Ul4iWFUE7nvyJ23X2MhX6XTiplXYPnztiem6rJLV84JiemoKtvapWchRhFi4w4Y+BdjHfY7IRERjQYNhVuaus5+EeppIoot9srsj2suXePGC7dE0R8z9K/BTYvQi76kBlJzzF9fNNy5JvyZPEUpXATuRD7KfxBsWHaFajOnYOb1eDAL/C0H3hhjVBov2Pexp7YDIsJzIa2g8850LruQ== +#> 9 dnskey 8 2 3600 1476561735 1474722585 45620 example.com. f+aO6V+QKA4XgTC0Vqow59jBP/NlX6f7EEbaoXts0lp7Vaj/DBrhnS/sT4BbJb3VK1MvuPmNre5t0eyOeNCjbjrwIM2uf41GFuBI0AFxQx7o2PIdf1vrXsDnUGsZrMkYMv4gr802S7MXsvMdMN5cM0AA5Zol888sLP1yrHIcfNxG8hoUn3dS0L6nd/OxkL70+NjHBTjBQLqkLsK92ryJ0CWrzcJElszBRqfQfYGV/sJ84Ko4tjnBqRuki/rmTW5KQYdE7NI+MvERtGnep7RHb02Luk7BFPPD3uh353EYSAOVHrMH4fte6mJGcj3vxErfSWakRUXQpovLNcqYZNxoGQ== +#> 10 www.example.com. A NS SOA TXT AAAA RRSIG NSEC DNSKEY +#> 11 a.iana-servers.net. +#> 12 b.iana-servers.net. +#> 13 2606:2800:220:1:248:1893:25c8:1946 +#> 14 93.184.216.34 +#> 15 "v=spf1 -all" +#> 16 "$Id: example.com 4415 2015-08-24 20:12:23Z davids $" +#> 17 256 3 8 AwEAAa3d68DfyIs03nGYpi3a9YX+f/wln3g6dhWWzjUUqp6CGXuaOdEHfS8zI/5JdGKi8Xoc4YmjPGfiCJIkCiQnMKn/QFygpZs41ANLdPp2jJlJhFA6IHE/xxTCxJfNhsdEAOGlMORN9Zu1XLUBo/IuCDUvUzZPgalivd/m9L+Jr4kxbg3v +#> 18 257 3 8 AwEAAZ0aqu1rJ6orJynrRfNpPmayJZoAx9Ic2/Rl9VQWLMHyjxxem3VUSoNUIFXERQbj0A9Ogp0zDM9YIccKLRd6LmWiDCt7UJQxVdD+heb5Ec4qlqGmyX9MDabkvX2NvMwsUecbYBq8oXeTT9LRmCUt9KUt/WOi6DKECxoG/bWTykrXyBR8elD+SQY43OAVjlWrVltHxgp4/rhBCvRbmdflunaPIgu27eE2U4myDSLT8a4A0rB5uHG4PkOa9dIRs9y00M2mWf4lyPee7vi5few2dbayHXmieGcaAHrx76NGAABeY393xjlmDNcUkF1gpNWUla4fWZbbaYQzA93mLdrng+M= +#> 19 257 3 8 AwEAAbOFAxl+Lkt0UMglZizKEC1AxUu8zlj65KYatR5wBWMrh18TYzK/ig6Y1t5YTWCO68bynorpNu9fqNFALX7bVl9/gybA0v0EhF+dgXmoUfRX7ksMGgBvtfa2/Y9a3klXNLqkTszIQ4PEMVCjtryl19Be9/PkFeC9ITjgMRQsQhmB39eyMYnal+f3bUxKk4fq7cuEU0dbRpue4H/N6jPucXWOwiMAkTJhghqgy+o9FfIp+tR/emKao94/wpVXDcPf5B18j7xz2SvTTxiuqCzCMtsxnikZHcoh1j4g+Y1B8zIMIvrEM+pZGhh/Yuf4RwCBgaYCi9hpiMWVvS4WBzx0/lU= +#> +#> $Additional +#> list() +#> +#> $edns_client_subnet +#> [1] "0.0.0.0/0" +#> +#> $Comment +#> [1] "Response from 199.43.135.53" query("microsoft.com", "MX") #> $Status @@ -120,7 +175,7 @@ query("microsoft.com", "MX") #> #> $Answer #> name type TTL data -#> 1 microsoft.com. 15 2054 10 microsoft-com.mail.protection.outlook.com. +#> 1 microsoft.com. 15 1509 10 microsoft-com.mail.protection.outlook.com. #> #> $Additional #> list() @@ -162,7 +217,7 @@ query("google-public-dns-a.google.com", "TXT") #> [1] "0.0.0.0/0" #> #> $Comment -#> [1] "Response from 216.239.38.10" +#> [1] "Response from 216.239.36.10" query("apple.com") #> $Status @@ -189,9 +244,9 @@ query("apple.com") #> #> $Answer #> name type TTL data -#> 1 apple.com. 1 1119 17.172.224.47 -#> 2 apple.com. 1 1119 17.178.96.59 -#> 3 apple.com. 1 1119 17.142.160.59 +#> 1 apple.com. 1 3413 17.172.224.47 +#> 2 apple.com. 1 3413 17.178.96.59 +#> 3 apple.com. 1 3413 17.142.160.59 #> #> $Additional #> list() @@ -224,45 +279,45 @@ query("17.142.160.59", "PTR") #> #> $Answer #> name type TTL data -#> 1 59.160.142.17.in-addr.arpa. 12 1134 alchemysynth.com. -#> 2 59.160.142.17.in-addr.arpa. 12 1134 openni.org. -#> 3 59.160.142.17.in-addr.arpa. 12 1134 swell.am. -#> 4 59.160.142.17.in-addr.arpa. 12 1134 appleweb.net. -#> 5 59.160.142.17.in-addr.arpa. 12 1134 apple.com. -#> 6 59.160.142.17.in-addr.arpa. 12 1134 pv-apple-com.apple.com. -#> 7 59.160.142.17.in-addr.arpa. 12 1134 apple.by. -#> 8 59.160.142.17.in-addr.arpa. 12 1134 airtunes.info. -#> 9 59.160.142.17.in-addr.arpa. 12 1134 applecentre.info. -#> 10 59.160.142.17.in-addr.arpa. 12 1134 applecomputerinc.info. -#> 11 59.160.142.17.in-addr.arpa. 12 1134 appleexpo.info. -#> 12 59.160.142.17.in-addr.arpa. 12 1134 applemasters.info. -#> 13 59.160.142.17.in-addr.arpa. 12 1134 applepay.info. -#> 14 59.160.142.17.in-addr.arpa. 12 1134 applepaymerchantsupplies.info. -#> 15 59.160.142.17.in-addr.arpa. 12 1134 applepaysupplies.info. -#> 16 59.160.142.17.in-addr.arpa. 12 1134 applescript.info. -#> 17 59.160.142.17.in-addr.arpa. 12 1134 appleshare.info. -#> 18 59.160.142.17.in-addr.arpa. 12 1134 macosx.info. -#> 19 59.160.142.17.in-addr.arpa. 12 1134 powerbook.info. -#> 20 59.160.142.17.in-addr.arpa. 12 1134 powermac.info. -#> 21 59.160.142.17.in-addr.arpa. 12 1134 quicktimelive.info. -#> 22 59.160.142.17.in-addr.arpa. 12 1134 quicktimetv.info. -#> 23 59.160.142.17.in-addr.arpa. 12 1134 sherlock.info. -#> 24 59.160.142.17.in-addr.arpa. 12 1134 shopdifferent.info. -#> 25 59.160.142.17.in-addr.arpa. 12 1134 skyvines.info. -#> 26 59.160.142.17.in-addr.arpa. 12 1134 ubnw.info. -#> 27 59.160.142.17.in-addr.arpa. 12 1134 webobjects.info. -#> 28 59.160.142.17.in-addr.arpa. 12 1134 yessql.info. -#> 29 59.160.142.17.in-addr.arpa. 12 1134 ripmixburn.com. -#> 30 59.160.142.17.in-addr.arpa. 12 1134 apples-msk.ru. -#> 31 59.160.142.17.in-addr.arpa. 12 1134 icloud.se. -#> 32 59.160.142.17.in-addr.arpa. 12 1134 icloud.es. -#> 33 59.160.142.17.in-addr.arpa. 12 1134 icloud.om. -#> 34 59.160.142.17.in-addr.arpa. 12 1134 icloudo.com. -#> 35 59.160.142.17.in-addr.arpa. 12 1134 icloud.ch. -#> 36 59.160.142.17.in-addr.arpa. 12 1134 icloud.fr. -#> 37 59.160.142.17.in-addr.arpa. 12 1134 icloude.com. -#> 38 59.160.142.17.in-addr.arpa. 12 1134 camelspaceeffect.com. -#> 39 59.160.142.17.in-addr.arpa. 12 1134 camelphat.com. +#> 1 59.160.142.17.in-addr.arpa. 12 3025 apples-msk.ru. +#> 2 59.160.142.17.in-addr.arpa. 12 3025 icloud.se. +#> 3 59.160.142.17.in-addr.arpa. 12 3025 icloud.es. +#> 4 59.160.142.17.in-addr.arpa. 12 3025 icloud.om. +#> 5 59.160.142.17.in-addr.arpa. 12 3025 icloudo.com. +#> 6 59.160.142.17.in-addr.arpa. 12 3025 icloud.ch. +#> 7 59.160.142.17.in-addr.arpa. 12 3025 icloud.fr. +#> 8 59.160.142.17.in-addr.arpa. 12 3025 icloude.com. +#> 9 59.160.142.17.in-addr.arpa. 12 3025 camelspaceeffect.com. +#> 10 59.160.142.17.in-addr.arpa. 12 3025 camelphat.com. +#> 11 59.160.142.17.in-addr.arpa. 12 3025 alchemysynth.com. +#> 12 59.160.142.17.in-addr.arpa. 12 3025 openni.org. +#> 13 59.160.142.17.in-addr.arpa. 12 3025 swell.am. +#> 14 59.160.142.17.in-addr.arpa. 12 3025 appleweb.net. +#> 15 59.160.142.17.in-addr.arpa. 12 3025 apple.com. +#> 16 59.160.142.17.in-addr.arpa. 12 3025 pv-apple-com.apple.com. +#> 17 59.160.142.17.in-addr.arpa. 12 3025 ripmixburn.com. +#> 18 59.160.142.17.in-addr.arpa. 12 3025 yessql.info. +#> 19 59.160.142.17.in-addr.arpa. 12 3025 webobjects.info. +#> 20 59.160.142.17.in-addr.arpa. 12 3025 ubnw.info. +#> 21 59.160.142.17.in-addr.arpa. 12 3025 skyvines.info. +#> 22 59.160.142.17.in-addr.arpa. 12 3025 shopdifferent.info. +#> 23 59.160.142.17.in-addr.arpa. 12 3025 sherlock.info. +#> 24 59.160.142.17.in-addr.arpa. 12 3025 quicktimetv.info. +#> 25 59.160.142.17.in-addr.arpa. 12 3025 quicktimelive.info. +#> 26 59.160.142.17.in-addr.arpa. 12 3025 powermac.info. +#> 27 59.160.142.17.in-addr.arpa. 12 3025 powerbook.info. +#> 28 59.160.142.17.in-addr.arpa. 12 3025 macosx.info. +#> 29 59.160.142.17.in-addr.arpa. 12 3025 appleshare.info. +#> 30 59.160.142.17.in-addr.arpa. 12 3025 applescript.info. +#> 31 59.160.142.17.in-addr.arpa. 12 3025 applepaysupplies.info. +#> 32 59.160.142.17.in-addr.arpa. 12 3025 applepaymerchantsupplies.info. +#> 33 59.160.142.17.in-addr.arpa. 12 3025 applepay.info. +#> 34 59.160.142.17.in-addr.arpa. 12 3025 applemasters.info. +#> 35 59.160.142.17.in-addr.arpa. 12 3025 appleexpo.info. +#> 36 59.160.142.17.in-addr.arpa. 12 3025 applecomputerinc.info. +#> 37 59.160.142.17.in-addr.arpa. 12 3025 applecentre.info. +#> 38 59.160.142.17.in-addr.arpa. 12 3025 airtunes.info. +#> 39 59.160.142.17.in-addr.arpa. 12 3025 apple.by. #> #> $Additional #> list() @@ -272,17 +327,30 @@ query("17.142.160.59", "PTR") hosts <- c("rud.is", "dds.ec", "r-project.org", "rstudio.com", "apple.com") gdns::bulk_query(hosts) -#> Source: local data frame [7 x 4] -#> -#> name type TTL data -#> (chr) (int) (int) (chr) -#> 1 rud.is. 1 3598 104.236.112.222 -#> 2 dds.ec. 1 299 162.243.111.4 -#> 3 r-project.org. 1 7177 137.208.57.37 -#> 4 rstudio.com. 1 3599 45.79.156.36 -#> 5 apple.com. 1 1102 17.172.224.47 -#> 6 apple.com. 1 1102 17.178.96.59 -#> 7 apple.com. 1 1102 17.142.160.59 +#> name type TTL data +#> 1 rud.is. 1 3598 104.236.112.222 +#> 2 dds.ec. 1 299 162.243.111.4 +#> 3 r-project.org. 1 3072 137.208.57.37 +#> 4 rstudio.com. 1 3599 45.79.156.36 +#> 5 apple.com. 1 3415 17.172.224.47 +#> 6 apple.com. 1 3415 17.178.96.59 +#> 7 apple.com. 1 3415 17.142.160.59 +``` + +### Test Results + +``` r +library(gdns) +library(testthat) + +date() +#> [1] "Thu Sep 29 09:44:11 2016" + +test_dir("tests/") +#> testthat results ======================================================================================================== +#> OK: 2 SKIPPED: 0 FAILED: 0 +#> +#> DONE =================================================================================================================== ``` ### Code of Conduct diff --git a/man/query.Rd b/man/query.Rd index fb074bb..ba59463 100644 --- a/man/query.Rd +++ b/man/query.Rd @@ -16,7 +16,8 @@ a proper format for reverse lookups.} \item{type}{RR type can be represented as a number in [1, 65535] or canonical string (A, aaaa, etc). More information on RR types can be -found \href{http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4}{here}.} +found \href{http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4}{here}. +You can use \code{255} for an \code{ANY} query.} \item{edns_client_subnet}{The edns0-client-subnet option. Format is an IP address with a subnet mask. Examples: \code{1.2.3.4/24}, @@ -50,6 +51,7 @@ To perform vectorized queries with only answers (and no metadata) use } \examples{ query("rud.is") +query("example.com", "255") # ANY query query("microsoft.com", "MX") query("google-public-dns-a.google.com", "TXT") query("apple.com")