aboutsummaryrefslogtreecommitdiff
path: root/cmd/dnsd
diff options
context:
space:
mode:
authorXe <me@christine.website>2022-12-30 15:31:44 -0500
committerXe <me@christine.website>2022-12-30 15:31:44 -0500
commit45ddea9aca135f522dde57a62bf58c563f8bdf94 (patch)
treee2ef8d07edf0a6e2b5dabc020154d342947eebf6 /cmd/dnsd
parent6a0ed693247e268322d34fad3aa793e16071a7d2 (diff)
downloadx-45ddea9aca135f522dde57a62bf58c563f8bdf94.tar.xz
x-45ddea9aca135f522dde57a62bf58c563f8bdf94.zip
remove deprecated code
Signed-off-by: Xe <me@christine.website>
Diffstat (limited to 'cmd/dnsd')
-rw-r--r--cmd/dnsd/Dockerfile11
-rw-r--r--cmd/dnsd/README.md88
-rw-r--r--cmd/dnsd/dnsd.conf7
-rw-r--r--cmd/dnsd/dnsd.service12
-rw-r--r--cmd/dnsd/main.go169
5 files changed, 0 insertions, 287 deletions
diff --git a/cmd/dnsd/Dockerfile b/cmd/dnsd/Dockerfile
deleted file mode 100644
index 7cd22bf..0000000
--- a/cmd/dnsd/Dockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-ARG X_VERSION
-
-FROM xena/xperimental:$X_VERSION as build
-FROM xena/alpine
-
-ENV PORT 53
-ENV FORWARD_SERVER 1.1.1.1:53
-EXPOSE 53/udp
-
-COPY --from=build /usr/local/bin/dnsd /usr/local/bin/dnsd
-CMD /usr/local/bin/dnsd
diff --git a/cmd/dnsd/README.md b/cmd/dnsd/README.md
deleted file mode 100644
index cb3921c..0000000
--- a/cmd/dnsd/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# dnsd
-
-A custom [DNS](https://en.wikipedia.org/wiki/Domain_Name_System) server for my network. DNS zone files are dynamically downloaded on
-startup and are continuously monitored for changes. When the DNS zone is changed,
-the service reloads it.
-
-I primarily use this to give myself a limited form of piHole DNS adblocking, as
-well as serving my [home network services](https://home.cetacean.club).
-
-This is related to my [WireGuard Site to Site VPN](https://christine.website/blog/site-to-site-wireguard-part-1-2019-04-02)
-project.
-
-## How to Configure `dnsd`
-
-`dnsd` relies on [RFC 1035](https://tools.ietf.org/html/rfc1035) zone files. This
-is a file that looks roughly like this:
-
-```rfc1035
-$TTL 60
-$ORIGIN pele.
-@ IN SOA oho.pele. some@email.address. (
- 2019040601 ; serial number YYYYMMDDNN
- 28800 ; Refresh
- 7200 ; Retry
- 864000 ; Expire
- 60 ; Minimum DNS TTL
- )
- IN NS oho.pele.
-
-oho IN A 10.55.0.1
-1.0.55.10.in-addr.arpa. IN PTR oho.pele.
-
-;; apps
-prometheus IN CNAME oho.pele.
-grafana IN CNAME oho.pele.
-```
-
-Put this file in a publicly available place and then set its URL as a
-`-zone-file` in the command line configuration. This file will be monitored
-every minute for changes (via the proxy of the ETag of the HTTP responses).
-
-If you need to change the DNS forwarding server, set the value of the environment
-variable `FORWARD_SERVER` or the command line flag `-forward-server`.
-
-## Installation
-
-### Docker
-
-```console
-$ export DNSD_VERSION=v1.0.3
-$ docker run --name dnsd -p 53:53/udp -dit --restart always xena/dnsd:$DNSD_VERSION \
- dnsd -zone-url https://domain.hostname.tld/path/to/your.zone \
- -zone-url https://domain.hostname.tld/path/to/adblock.zone \
- -forward-server 1.1.1.1:53
-```
-
-### From Git with systemd
-
-```console
-$ go get -u -v github.com/Xe/x/cmd/dnsd@latest
-$ GOBIN=$(pwd) go install github.com/Xe/x/cmd/dnsd
-$ sudo cp dnsd /usr/local/bin/dnsd
-<edit dnsd.service as needed>
-$ sudo cp dnsd.service /etc/systemd/system/dnsd.service
-$ sudo systemctl daemon-reload
-$ sudo systemctl start dnsd
-$ sudo systemctl status dnsd
-$ sudo systemctl enable dnsd
-```
-
-## Testing
-
-```console
-$ dig @127.0.0.1 google.com
-$ dig @127.0.0.1 oho.pele
-```
-
-## Support
-
-If you need help with this, please [contact](https://christine.website/contact) me.
-This is fairly simplistic software. If you need anything more, I'd suggest using
-[CoreDNS](https://coredns.io) or similar.
-
-If you like this software, please consider donating on [Patreon](https://www.patreon.com/cadey)
-or [Ko-Fi](https://www.ko-fi.com/christinedodrill). I use this software daily on my personal
-network to service most of my devices.
-
-Thanks and be well.
diff --git a/cmd/dnsd/dnsd.conf b/cmd/dnsd/dnsd.conf
deleted file mode 100644
index e490d13..0000000
--- a/cmd/dnsd/dnsd.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-port 5900
-forward-server 1.1.1.1:53
-
-zone-url (
- https://xena.greedo.xeserv.us/files/akua.zone
- https://xena.greedo.xeserv.us/files/adblock.zone
-) \ No newline at end of file
diff --git a/cmd/dnsd/dnsd.service b/cmd/dnsd/dnsd.service
deleted file mode 100644
index 73add3d..0000000
--- a/cmd/dnsd/dnsd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=dnsd
-
-[Service]
-Environment=PORT=53
-Environment=FORWARD_SERVER=1.1.1.1:53
-ExecStart=/usr/local/bin/dnsd -zone-file https://host.domain.tld/path/to/your.zone -zone-file https://host.domain.tld/path/to/adblock.zone
-Restart=always
-RestartSec=1s
-
-[Install]
-WantedBy=multi-user.target
diff --git a/cmd/dnsd/main.go b/cmd/dnsd/main.go
deleted file mode 100644
index c84a54b..0000000
--- a/cmd/dnsd/main.go
+++ /dev/null
@@ -1,169 +0,0 @@
-// Command dnsd is a simple DNS server for my network. It has O(n) lookup times.
-package main
-
-import (
- "bufio"
- "flag"
- "log"
- "net/http"
- "os"
- "os/signal"
- "syscall"
- "time"
-
- "github.com/miekg/dns"
- "github.com/mmikulicic/stringlist"
- "within.website/x/internal"
-)
-
-var (
- port = flag.String("port", "53", "UDP port to listen on for DNS")
- server = flag.String("forward-server", "1.1.1.1:53", "forward DNS server")
-
- zoneURLs = stringlist.Flag("zone-url", "DNS zonefiles to load")
-)
-
-var (
- defaultZoneURLS = []string{
- "https://xena.greedo.xeserv.us/files/akua.zone",
- "https://xena.greedo.xeserv.us/files/adblock.zone",
- }
-)
-
-func monitorURLs(urls []string) {
- etags := make(map[string]string)
-
- t := time.NewTicker(time.Minute)
- defer t.Stop()
-
- for {
- select {
- case <-t.C:
- for _, urli := range urls {
- resp, err := http.Get(urli)
- if err != nil {
- panic(err)
- }
-
- et := resp.Header.Get("ETag")
-
- ot, ok := etags[urli]
- if !ok {
- log.Printf("stored %s:%s", urli, et)
- etags[urli] = et
- }
- if ok && et != ot {
- log.Fatalf("url %s has new etag %s and wanted old etag %s", urli, et, ot)
- }
- }
- }
- }
-}
-
-func main() {
- internal.HandleStartup()
-
- if len(*zoneURLs) == 0 {
- *zoneURLs = defaultZoneURLS
- }
-
- go monitorURLs(*zoneURLs)
-
- for _, zurl := range *zoneURLs {
- log.Printf("conf: -zone-url=%s", zurl)
- }
- log.Printf("conf: -port=%s", *port)
- log.Printf("conf: -forward-server=%s", *server)
-
- rrs := []dns.RR{}
- ns := []dns.RR{}
-
- for _, zurl := range *zoneURLs {
- resp, err := http.Get(zurl)
- if err != nil {
- panic(err)
- }
-
- reader := bufio.NewReaderSize(resp.Body, 2048)
-
- var i int
- zp := dns.NewZoneParser(reader, "", zurl)
- for rr, ok := zp.Next(); ok; rr, ok = zp.Next() {
- rrs = append(rrs, rr)
-
- if rr.Header().Rrtype == dns.TypeNS {
- ns = append(ns, rr)
- }
-
- i++
- }
-
- if zp.Err() != nil {
- panic(zp.Err())
- }
-
- resp.Body.Close()
-
- log.Printf("%s: %d records", zurl, i)
- }
-
- dns.HandleFunc(".", func(w dns.ResponseWriter, r *dns.Msg) {
- m := new(dns.Msg)
- m.SetReply(r)
- m.Authoritative = true
-
- for _, q := range r.Question {
- answers := []dns.RR{}
- for _, rr := range rrs {
- rh := rr.Header()
-
- if rh.Rrtype == dns.TypeCNAME && q.Name == rh.Name {
- answers = append(answers, rr)
-
- for _, a := range resolver("127.0.0.1:"+*port, rr.(*dns.CNAME).Target, q.Qtype) {
- answers = append(answers, a)
- }
- }
-
- if q.Name == rh.Name && q.Qtype == rh.Rrtype && q.Qclass == rh.Class {
- answers = append(answers, rr)
- }
- }
- if len(answers) == 0 && *server != "" {
- for _, a := range resolver(*server, q.Name, q.Qtype) {
- answers = append(answers, a)
- }
- } else {
- m.Ns = ns
- }
- for _, a := range answers {
- m.Answer = append(m.Answer, a)
- }
- }
- w.WriteMsg(m)
- })
-
- go func() {
- srv := &dns.Server{Addr: ":" + *port, Net: "udp"}
- if err := srv.ListenAndServe(); err != nil {
- log.Fatalf("Failed to set udp listener %s\n", err.Error())
- }
- }()
-
- sig := make(chan os.Signal)
- signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
- s := <-sig
- log.Fatalf("Signal (%v) received, stopping\n", s)
-}
-
-func resolver(server, fqdn string, r_type uint16) []dns.RR {
- m1 := new(dns.Msg)
- m1.Id = dns.Id()
- m1.SetQuestion(fqdn, r_type)
-
- in, err := dns.Exchange(m1, server)
- if err == nil {
- return in.Answer
- }
- return []dns.RR{}
-}