Tools to work with the Google DNS over HTTPS API in R https://cinc.rud.is/web/packages/gdns/
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
boB Rudis 2702ed26f8
new/addtl column for bulk_query and new RR global data
před 6 roky
R new/addtl column for bulk_query and new RR global data před 6 roky
data new/addtl column for bulk_query and new RR global data před 6 roky
docs pkgdown před 8 roky
man new/addtl column for bulk_query and new RR global data před 6 roky
tests new/addtl column for bulk_query and new RR global data před 6 roky
.Rbuildignore Fix CRAN tests před 7 roky
.gitignore Initial commit před 8 roky
.travis.yml macOS rdevel is busted in Travis and I don't have time to build a matrix před 8 roky
CONDUCT.md initial commit před 8 roky
DESCRIPTION new/addtl column for bulk_query and new RR global data před 6 roky
LICENSE Initial commit před 8 roky
NAMESPACE removed dplyr, purrr & tibble dependencies před 6 roky
NEWS.md new/addtl column for bulk_query and new RR global data před 6 roky
README.Rmd docs / travis / CRAN prep před 8 roky
README.md removed dplyr, purrr & tibble dependencies před 6 roky
cran-comments.md fix CRAN checks před 7 roky
gdns.Rproj Fix CRAN tests před 7 roky

README.md

Travis-CI BuildStatus

gdns : Tools to work with the Google DNS over HTTPS API

Traditional DNS queries and responses are sent over UDP or TCP without encryption. This is vulnerable to eavesdropping and spoofing (including DNS-based Internet filtering). Responses from recursive resolvers to clients are the most vulnerable to undesired or malicious changes, while communications between recursive resolvers and authoritative nameservers often incorporate additional protection.

To address this problem, Google Public DNS offers DNS resolution over an encrypted HTTPS connection. DNS-over-HTTPS greatly enhances privacy and security between a client and a recursive resolver, and complements DNSSEC to provide end-to-end authenticated DNS lookups.

More info at https://developers.google.com/speed/public-dns/docs/dns-over-https.

The following functions are implemented:

  • bulk_query: Vectorized query, returning only answers in a data frame
  • has_spf: Test for whether a DNS TXT record is an SPF record
  • is_hard_fail: SPF “all” type test
  • is_soft_fail: SPF “all” type test
  • passes_all: SPF “all” type test
  • query: Perform DNS over HTTPS queries using Google
  • spf_exists: SPF field extraction functions
  • spf_includes: SPF field extraction functions
  • spf_ipv4s: SPF field extraction functions
  • spf_ipv6s: SPF field extraction functions
  • spf_ptrs: SPF field extraction functions
  • split_spf: Split out all SPF records in a domain’s TXT record

Installation

devtools::install_github("hrbrmstr/gdns")

Usage

library(gdns)

# current verison
packageVersion("gdns")
#> [1] '0.2.1'

query("rud.is")
#> $Status
#> [1] 0
#> 
#> $TC
#> [1] FALSE
#> 
#> $RD
#> [1] TRUE
#> 
#> $RA
#> [1] TRUE
#> 
#> $AD
#> [1] FALSE
#> 
#> $CD
#> [1] FALSE
#> 
#> $Question
#>      name type
#> 1 rud.is.    1
#> 
#> $Answer
#>      name type TTL            data
#> 1 rud.is.    1 277 104.236.112.222
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"

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.   46 21548
#> 2  example.com.   46 21548
#> 3  example.com.   46  3548
#> 4  example.com.   46     8
#> 5  example.com.   46 21548
#> 6  example.com.   46  3548
#> 7  example.com.   46  3548
#> 8  example.com.   46  3548
#> 9  example.com.   47  3548
#> 10 example.com.    2 21548
#> 11 example.com.    2 21548
#> 12 example.com.   28 21548
#> 13 example.com.    1 21548
#> 14 example.com.   16     8
#> 15 example.com.   16     8
#> 16 example.com.   48  3548
#> 17 example.com.   48  3548
#> 18 example.com.   48  3548
#> 19 example.com.   48  3548
#> 20 example.com.    6  3548
#>                                                                                                                                                                                                                                                                                                                                                                                                                 data
#> 1                                                                                                                                                                                   a 8 2 86400 1530064725 1528271786 4354 example.com. gpgx3XIhF4XZg5Nw0eo7TmCD1zfKX9YtMq9PuSh3eAc4fJrvyS/VWy2bz/KYhgiXQe6PvtOLZbgTT2O9knkHIlAsmnznEowSrgWYaCkkkNnoC8Ii1Ikg87PCZ7FffTposk/4HRG6yXZlo9+++YZAfAC0cc9FFYpQXqxVLf9/aDQ=
#> 2                                                                                                                                                                                  ns 8 2 86400 1530070167 1528286186 4354 example.com. tVZnWX3VxO+XqrDS76S6RpLYvGluZIQkai0aWx3pzjjhqi+qKO7WtjcIYmOgehBB2t3TVC9cv1rhb21SDBZPNtgtpWAR/W3hPK1FA4AhDW3tDwk0vZ8VnxRS6YZRdubY5xx8f+88auYUZNauK3SsAcKj4k9IaeMLinzpie0ydKk=
#> 3                                                                                                                                                                                  soa 8 2 3600 1530144931 1528300586 4354 example.com. oDz3EMYugQZ5zJV2Wwr76heKzbOB8cDgol+HD0DTPPNkBHkU33thZI3kwtD/KE7YFbwlD86is5Qgy4sVOToEcxs6Th2+bxkwkSDbnNCfpqXg9FP2nknfsYdN8UHIOcsbjo8pAEQrwbOBnRhkfgh+B2jXCeR8wcYIDtlfyjIG5dw=
#> 4                                                                                                                                                                                    txt 8 2 60 1530100194 1528250186 4354 example.com. PRVGxCX8Sghw9xQv+ITTpIHbpku543BNEVSA0LZVIZ2p5r3kPb4vlID/jSzFTOhgLhdkB0OAMG3dvWxNXT3fOBiv8c/UZHdwjJdneLeoHILiAa4Y3HSC+t4kcs+9qRFzj4EQgXwr0zWLDoZTa9bkhoVdaC8q+oL+TyjiwgG6RXs=
#> 5                                                                                                                                                                                aaaa 8 2 86400 1528834805 1526975786 4354 example.com. lRAUeTu/Wr7mobPHuh29z66cqqnCQXvUcSWYNsrdJvWIUaaGNUtz800bQQuZah3tZbJeSbDV+LivN8pFYrTPR9AVyTi1uD7x8qH+3MckgKezJ199e1twfbpl0O44zSFlrI7SxEaWhTnUGM2xafyH0HZUr1Eg/5nxDFlmaVfxet8=
#> 6                                                                                                                                                                                 nsec 8 2 3600 1530145868 1528300586 4354 example.com. NV0BbCZT7yXFnrJhEV1atS0QBbkDmojtUw9PIxDOUJzEZtWql5qJ5iMJl2z8ghmRwurnRAskBOZaT1jstyf/X8wBS8T05uc6KgfiFdoeseIWfTd9+9y6E9ESHmsSLDyHlbex6k3XAb5c4GWSyZ058JpSUyQbpnTC0fxEONxiFT4=
#> 7  dnskey 8 2 3600 1530072436 1528278986 31406 example.com. exstuS89vtBrpvN+6XK49NWMrQmUoHJAAMzLMCi5w3xUczvo9hQWi3yfDVk7Rdtv61IFEFRTIVVCoM0kpWmgp1NwOPKNSUxg3OVO5++PGoCE7hI8fhW/xdiOUC1dHHk/zuWRoriERykgNvo6yzegBmXbOyf7WCh1csoGuk+RmIWykngZw9wCX+qjdO1G8y8DMmwzEzDc3fBN9v2at3lo+VK/uhR4Tu6rr4rxkYqqgz02TIkHr14GsCa4hlf8/s2UhaWKil5ja51HgFsR2fLHRwZ1x1toejaxMekJvVcarhNYodU83q8qZ0Yoa8GIKpdS70chj4ZrLiUkBhV2KEtytg==
#> 8  dnskey 8 2 3600 1530072436 1528278986 45620 example.com. Kd2iq2xmcg5GJmNOQiHjZKDKHH+MyDagSjXuTJKiJFXSpgMzZUl9Gnr+LsDTiLaddotsBo3OXQODZDlIB5jlI7/hkt/kYOb8d1ns+hd5jmTyFowhOiQAxpWUlZkvXvVQ5gAnefxGCx78/4JtFnTMGADiAYEIMXZm+qtjn9/YJKtkgmgutxcVjTDAl7zVdvN+uyR5g/f2Rm5x1aWLIfmAtg0Nv5xFKZTduPse8PrKsGHC3uezWRshbOYugOxp/Ui6Ru6PNBaeUBGuKwQw2XcB9H65PE4wj14mcCcQk5wTL8VfeaW6WQ6y+dgtwMGoUCnF2Eaj/5Gnv2mW+1VMv0jIqg==
#> 9                                                                                                                                                                                                                                                                                                                                                               www.example.com. A NS SOA TXT AAAA RRSIG NSEC DNSKEY
#> 10                                                                                                                                                                                                                                                                                                                                                                                               a.iana-servers.net.
#> 11                                                                                                                                                                                                                                                                                                                                                                                               b.iana-servers.net.
#> 12                                                                                                                                                                                                                                                                                                                                                                                2606:2800:220:1:248:1893:25c8:1946
#> 13                                                                                                                                                                                                                                                                                                                                                                                                     93.184.216.34
#> 14                                                                                                                                                                                                                                                                                                                                                                                                     "v=spf1 -all"
#> 15                                                                                                                                                                                                                                                                                                                                                             "$Id: example.com 4415 2015-08-24 20:12:23Z davids $"
#> 16                                                                                                                                                                                                                          256 3 8 AwEAAa1e3aHzKml+EtBvA6ZVztOV+AByi8/9akkbL9COtasbKc1VBbHS6w8uHGqHaEMXzriWtXAwlSzHMgIxJ1y0fXcB/h4Yg8qNnJvgSU1JAKvYLJMkdAk+P5XbdGtpUNCh4d9NEZkY/lFClYo8iyIAVeifDeaeaEQIRKbPZLLwtgr1
#> 17                                                                                                                                                                                                                          256 3 8 AwEAAbpTkuNZuxDDAwDW46cAroMR10zm9MsdVnXT+m/4HtbGstC4LIt8WU3CRayoXZyO6zDwxAytkuKxuEWVCAVA7ligFPR8Ta/BoR91H66dj8OPExAq6ugqKsQDKP906j5cF9Rsr9k0rEjvh2MptStkzCSaBB3FulTj14pBX1MZ8x9n
#> 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=
#> 20                                                                                                                                                                                                                                                                                                                                           sns.dns.icann.org. noc.dns.icann.org. 2018050812 7200 3600 1209600 3600
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"

query("microsoft.com", "MX")
#> $Status
#> [1] 0
#> 
#> $TC
#> [1] FALSE
#> 
#> $RD
#> [1] TRUE
#> 
#> $RA
#> [1] TRUE
#> 
#> $AD
#> [1] FALSE
#> 
#> $CD
#> [1] FALSE
#> 
#> $Question
#>             name type
#> 1 microsoft.com.   15
#> 
#> $Answer
#>             name type  TTL                                          data
#> 1 microsoft.com.   15 3599 10 microsoft-com.mail.protection.outlook.com.
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"
#> 
#> $Comment
#> [1] "Response from 193.221.113.53."

query("google-public-dns-a.google.com", "TXT")
#> $Status
#> [1] 0
#> 
#> $TC
#> [1] FALSE
#> 
#> $RD
#> [1] TRUE
#> 
#> $RA
#> [1] TRUE
#> 
#> $AD
#> [1] FALSE
#> 
#> $CD
#> [1] FALSE
#> 
#> $Question
#>                              name type
#> 1 google-public-dns-a.google.com.   16
#> 
#> $Answer
#>                              name type   TTL                    data
#> 1 google-public-dns-a.google.com.   16 21599 "http://xkcd.com/1361/"
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"
#> 
#> $Comment
#> [1] "Response from 216.239.32.10."

query("apple.com")
#> $Status
#> [1] 0
#> 
#> $TC
#> [1] FALSE
#> 
#> $RD
#> [1] TRUE
#> 
#> $RA
#> [1] TRUE
#> 
#> $AD
#> [1] FALSE
#> 
#> $CD
#> [1] FALSE
#> 
#> $Question
#>         name type
#> 1 apple.com.    1
#> 
#> $Answer
#>         name type  TTL          data
#> 1 apple.com.    1 3592 17.172.224.47
#> 2 apple.com.    1 3592  17.178.96.59
#> 3 apple.com.    1 3592 17.142.160.59
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"

query("17.142.160.59", "PTR")
#> $Status
#> [1] 0
#> 
#> $TC
#> [1] FALSE
#> 
#> $RD
#> [1] TRUE
#> 
#> $RA
#> [1] TRUE
#> 
#> $AD
#> [1] FALSE
#> 
#> $CD
#> [1] FALSE
#> 
#> $Question
#>                          name type
#> 1 59.160.142.17.in-addr.arpa.   12
#> 
#> $Answer
#>                           name type TTL                           data
#> 1  59.160.142.17.in-addr.arpa.   12 907                      imac.one.
#> 2  59.160.142.17.in-addr.arpa.   12 907                       mac.one.
#> 3  59.160.142.17.in-addr.arpa.   12 907                  itunes.earth.
#> 4  59.160.142.17.in-addr.arpa.   12 907                     chomp.com.
#> 5  59.160.142.17.in-addr.arpa.   12 907                   iphone.host.
#> 6  59.160.142.17.in-addr.arpa.   12 907                ripmixburn.com.
#> 7  59.160.142.17.in-addr.arpa.   12 907                   yessql.info.
#> 8  59.160.142.17.in-addr.arpa.   12 907               webobjects.info.
#> 9  59.160.142.17.in-addr.arpa.   12 907                     ubnw.info.
#> 10 59.160.142.17.in-addr.arpa.   12 907                 skyvines.info.
#> 11 59.160.142.17.in-addr.arpa.   12 907            shopdifferent.info.
#> 12 59.160.142.17.in-addr.arpa.   12 907                 sherlock.info.
#> 13 59.160.142.17.in-addr.arpa.   12 907              quicktimetv.info.
#> 14 59.160.142.17.in-addr.arpa.   12 907            quicktimelive.info.
#> 15 59.160.142.17.in-addr.arpa.   12 907                 powermac.info.
#> 16 59.160.142.17.in-addr.arpa.   12 907                powerbook.info.
#> 17 59.160.142.17.in-addr.arpa.   12 907                   macosx.info.
#> 18 59.160.142.17.in-addr.arpa.   12 907               appleshare.info.
#> 19 59.160.142.17.in-addr.arpa.   12 907              applescript.info.
#> 20 59.160.142.17.in-addr.arpa.   12 907         applepaysupplies.info.
#> 21 59.160.142.17.in-addr.arpa.   12 907 applepaymerchantsupplies.info.
#> 22 59.160.142.17.in-addr.arpa.   12 907                 applepay.info.
#> 23 59.160.142.17.in-addr.arpa.   12 907             applemasters.info.
#> 24 59.160.142.17.in-addr.arpa.   12 907                appleexpo.info.
#> 25 59.160.142.17.in-addr.arpa.   12 907         applecomputerinc.info.
#> 26 59.160.142.17.in-addr.arpa.   12 907              applecentre.info.
#> 27 59.160.142.17.in-addr.arpa.   12 907                 airtunes.info.
#> 28 59.160.142.17.in-addr.arpa.   12 907                      apple.by.
#> 29 59.160.142.17.in-addr.arpa.   12 907                 apples-msk.ru.
#> 30 59.160.142.17.in-addr.arpa.   12 907                     icloud.se.
#> 31 59.160.142.17.in-addr.arpa.   12 907                     icloud.es.
#> 32 59.160.142.17.in-addr.arpa.   12 907                     icloud.om.
#> 33 59.160.142.17.in-addr.arpa.   12 907                   icloudo.com.
#> 34 59.160.142.17.in-addr.arpa.   12 907                     icloud.ch.
#> 35 59.160.142.17.in-addr.arpa.   12 907                     icloud.fr.
#> 36 59.160.142.17.in-addr.arpa.   12 907                   icloude.com.
#> 37 59.160.142.17.in-addr.arpa.   12 907          camelspaceeffect.com.
#> 38 59.160.142.17.in-addr.arpa.   12 907                 camelphat.com.
#> 39 59.160.142.17.in-addr.arpa.   12 907              alchemysynth.com.
#> 40 59.160.142.17.in-addr.arpa.   12 907                    openni.org.
#> 41 59.160.142.17.in-addr.arpa.   12 907                      swell.am.
#> 42 59.160.142.17.in-addr.arpa.   12 907                  appleweb.net.
#> 43 59.160.142.17.in-addr.arpa.   12 907                     apple.com.
#> 44 59.160.142.17.in-addr.arpa.   12 907        pv-apple-com.apple.com.
#> 45 59.160.142.17.in-addr.arpa.   12 907                     ipad.host.
#> 46 59.160.142.17.in-addr.arpa.   12 907                   appleid.org.
#> 47 59.160.142.17.in-addr.arpa.   12 907                     apple.xyz.
#> 48 59.160.142.17.in-addr.arpa.   12 907           searchads-apple.com.
#> 49 59.160.142.17.in-addr.arpa.   12 907              airport.brussels.
#> 50 59.160.142.17.in-addr.arpa.   12 907                  ipadpro.buzz.
#> 
#> $Additional
#> list()
#> 
#> $edns_client_subnet
#> [1] "0.0.0.0/0"

hosts <- c("rud.is", "dds.ec", "r-project.org", "rstudio.com", "apple.com")
gdns::bulk_query(hosts)
#>             name type  TTL            data
#> 1        rud.is.    1  276 104.236.112.222
#> 2        dds.ec.    1  599    185.53.178.9
#> 3 r-project.org.    1 4806   137.208.57.37
#> 4   rstudio.com.    1 3599   104.196.200.5
#> 5     apple.com.    1 3585   17.172.224.47
#> 6     apple.com.    1 3585    17.178.96.59
#> 7     apple.com.    1 3585   17.142.160.59

Test Results

library(gdns)
library(testthat)

date()
#> [1] "Wed Jun  6 15:28:43 2018"

test_dir("tests/")
#> ✔ | OK F W S | Context
#> ══ testthat results  ════════════════════════════════════════════════════════════
#> OK: 2 SKIPPED: 0 FAILED: 0
#> 
#> ══ Results ══════════════════════════════════════════════════════════════════════
#> Duration: 0.3 s
#> 
#> OK:       0
#> Failed:   0
#> Warnings: 0
#> Skipped:  0

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.