[HN Gopher] Show HN: Doggo - A powerful, human-friendly DNS clie...
       ___________________________________________________________________
        
       Show HN: Doggo - A powerful, human-friendly DNS client for the
       command line
        
       Author : mr-karan
       Score  : 178 points
       Date   : 2024-07-01 16:56 UTC (6 hours ago)
        
 (HTM) web link (doggo.mrkaran.dev)
 (TXT) w3m dump (doggo.mrkaran.dev)
        
       | toomuchtodo wrote:
       | Looks super cool! Can you share more about why you built this,
       | design decisions, and other behind the scenes context?
        
         | justsomehnguy wrote:
         | Because everything should be rewritten in Rust^W Go:
         | https://github.com/mr-karan/doggo/
        
           | chrisweekly wrote:
           | > "doggo is a modern command-line DNS client (like dig)
           | written in Golang. It outputs information in a neat concise
           | manner and supports protocols like DoH, DoT, DoQ, and
           | DNSCrypt as well.
           | 
           | It's totally inspired from dog which is written in Rust. I
           | wanted to add some features to it but since I don't know
           | Rust, I found it as a nice opportunity to experiment with
           | writing a DNS Client from scratch in Go myself. Hence the
           | name dog +go => doggo."
        
             | lagniappe wrote:
             | That's pretty cool :) It makes a great visualizer for bbs-
             | over-dns.com
        
         | mr-karan wrote:
         | Thanks! I pretty much did this as a learning/hobby side
         | project. Back in 2021, I was dealing with a lot of K8s clusters
         | and had recently learnt what about ndots[1]. That prompted me
         | to build an easy to use DNS client which can avoid surprises
         | about the host environment.
         | 
         | I've built this using Go, my daily driver. It doesn't use any
         | CLI frameworks, that was mostly out of choice as I didn't want
         | to add external deps unless really required. My favourite part
         | was to build this small help.go[3] utility which renders
         | colored/formatted help text.
         | 
         | Over the time I got some good quality external contributions,
         | especially the one from @jedisct1 for adding DNSCrypt[2]
         | support to it.
         | 
         | Releasing a v1.0 has been on the back burner forever (like, a
         | whole year+ :'). Life, other projects, and probably a bit of
         | procrastination got in the way. Finally sat down last week and
         | forced myself to come up with a deadline to push this out.
         | 
         | [1]: https://mrkaran.dev/posts/ndots-kubernetes/
         | 
         | [2]: https://github.com/mr-karan/doggo/pull/17
         | 
         | [3]: https://github.com/mr-karan/doggo/blob/main/cmd/help.go
        
       | valtlfelipe wrote:
       | very nice! looks clean and simple.
        
       | madars wrote:
       | Amazing naming choice - doggos like to dig!
        
         | ck45 wrote:
         | TIL there's also dog[1] Which is probably also common typo for
         | "dig"
         | 
         | [1] https://github.com/ogham/dog
        
           | hk__2 wrote:
           | doggo is actually dog written in Go.
        
           | linsomniac wrote:
           | I went to switch over to "dog" last week but it looks
           | abandoned. I couldn't get a download to work because of
           | outdated dependencies, and IIRC I couldn't get it to build,
           | so I just gave up on it after seeing the latest release is 4
           | years old.
        
       | ThinkBeat wrote:
       | Is this a client to query DNS servers, like digg or dogg?
       | 
       | Or is it a client to control and configure the DNS servers a
       | computer is using?
       | 
       | or both?
        
         | mr-karan wrote:
         | It's a DNS client for querying DNS servers.
        
       | mrbluecoat wrote:
       | Reminds me of https://github.com/ogham/dog
        
         | generalizations wrote:
         | From the doggo github readme:
         | 
         | > It's totally inspired from dog which is written in Rust. I
         | wanted to add some features to it but since I don't know Rust,
         | I found it as a nice opportunity to experiment with writing a
         | DNS Client from scratch in Go myself. Hence the name dog +go =>
         | doggo.
        
         | jiehong wrote:
         | And dog seems unmaintained, sadly
        
           | 0xCMP wrote:
           | Yea a lot of lingering PRs to fix building with OpenSSL or
           | update packages in some way. Last change was ~3 years ago.
        
       | obviyus wrote:
       | Pretty! Time to alias dig to doggo for a few days ;)
       | 
       | BTW I really enjoyed reading your blog on Nomad while setting up
       | our own clusters, kudos!
        
       | fs111 wrote:
       | Happy user for years here. Keep up the good work!
        
       | pixelready wrote:
       | Ok, now hear me out. You bundle this with Bruno and some other
       | networking tools as... The Woof Pack
        
       | mholt wrote:
       | Love this, thank you!
       | 
       | Is there a way to query all DNS records? (I was surprised to
       | learn that isn't the default.) This would be really helpful for
       | troubleshooting people's Caddy questions (which are actually DNS
       | problems).
        
         | andrewmcwatters wrote:
         | You can't really query all DNS records these days anymore by
         | using the ANY query type. The closest alternative is to run dig
         | across all record types.
         | 
         | At Andrew McWatters & Co., we use a small internal utility
         | called digany(1)[1][2] that does this for you.
         | 
         | [1]: https://github.com/andrewmcwattersandco/digany
         | 
         | [2]:
         | https://github.com/andrewmcwattersandco/digany/blob/main/dig...
         | andrewmcwatters@Andrews-MacBook-Pro digany % ./digany
         | andrewmcwatters.com         andrewmcwatters.com. 1799 IN A
         | 107.172.29.10         andrewmcwatters.com. 1800 IN NS
         | dns1.registrar-servers.com.         andrewmcwatters.com. 1800
         | IN NS dns2.registrar-servers.com.         andrewmcwatters.com.
         | 3601 IN SOA dns1.registrar-servers.com. hostmaster.registrar-
         | servers.com. 1719805485 43200 3600 604800 3601
         | andrewmcwatters.com. 1800 IN MX 20 eforward5.registrar-
         | servers.com.         andrewmcwatters.com. 1800 IN MX 15
         | eforward4.registrar-servers.com.         andrewmcwatters.com.
         | 1800 IN MX 10 eforward1.registrar-servers.com.
         | andrewmcwatters.com. 1800 IN MX 10 eforward2.registrar-
         | servers.com.         andrewmcwatters.com. 1800 IN MX 10
         | eforward3.registrar-servers.com.         andrewmcwatters.com.
         | 1799 IN TXT "google-site-
         | verification=39W1-Db36mrNNekPXww8TUdo7LcrmEUfv-gBmVTT1Dk"
         | andrewmcwatters.com. 1799 IN TXT "v=spf1
         | include:spf.efwd.registrar-servers.com
         | a:andrewmcwatters-17ce78.andrewmcwatters.com ~all"         ...
        
           | bandie91 wrote:
           | or AXFR... but it is allowed on even less places than ANY.
        
       | KingOfCoders wrote:
       | go: downloading github.com/mr-karan/doggo v0.5.7        go:
       | github.com/mr-karan/doggo/cmd@latest:             module
       | github.com/mr-karan/doggo@latest found (v0.5.7),             but
       | does not contain package github.com/mr-karan/doggo/cmd
        
         | skibbityboop wrote:
         | Hit the same issue, but it goes fine if you just clone the
         | repo, cd down into the cmd directory and 'go build -o doggo'.
        
           | KingOfCoders wrote:
           | Does this install in a way I can upgrade it with topgrade?
        
       | jmduke wrote:
       | Shameless plug for folks looking for something similar, but on
       | the web: I was fed up with Google's slow/janky dig webface, so
       | built my own. (Still very WIP, but already works better as a
       | daily driver than Google's!)
       | 
       | https://www.shovel.report/ycombinator.com
        
         | willhackett wrote:
         | Did you use DNS over HTTPS (DoH)? I love how easy it is to
         | perform DNS lookups in web apps too through this.
         | curl -H "accept: application/dns-json" "https://cloudflare-
         | dns.com/dns-query?name=ycombinator.com&type=A"
        
       | wiseowise wrote:
       | Is there any reason why so many of those tools are written in Go?
       | Is it because of a stdlib or just accidental?
        
         | keyle wrote:
         | Go gets it done and for years to come.
        
         | aeadio wrote:
         | Could be cultural. Go has a lot of exposure in the DevOps /
         | cloud infrastructure space. Lots of stuff like k8s and
         | Terraform (and its providers) are written in Go, and it
         | competes with Python in popularity for internal tooling.
        
         | SushiHippie wrote:
         | In this case it seems like the creator of this tool already
         | knew golang so he used it.
         | 
         | From the readme:
         | 
         | > It's totally inspired from dog [0] which is written in Rust.
         | I wanted to add some features to it but since I don't know
         | Rust, I found it as a nice opportunity to experiment with
         | writing a DNS Client from scratch in Go myself. Hence the name
         | dog +go => doggo.
         | 
         | [0] https://github.com/ogham/dog
        
         | moffkalast wrote:
         | So the name can be a pun, of course.
        
         | lynndotpy wrote:
         | Go is produces (mostly) statically compiled binaries by
         | default. No runtime, no interpreter, no dependencies.
         | 
         | Python, Java, JavaScript, C#, etc. can't say the same.
        
       | jedisct1 wrote:
       | Congrats for the 1.0 release!
       | 
       | doggo has been my main DNS tool for a while, now. Love it!
        
       | XiS wrote:
       | Would be amazing is this tool would add support for the
       | equivalent of query type ANY
        
       ___________________________________________________________________
       (page generated 2024-07-01 23:00 UTC)