[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)