summaryrefslogtreecommitdiff
path: root/app/BahnhofDNS.hs
diff options
context:
space:
mode:
authorFynn Godau2025-12-28 17:38:40 +0000
committerstuebinm2026-01-01 19:44:11 +0100
commitdabe335b06145f39ea36f4841459cbf5c213be14 (patch)
treeb0cde923fce39abc07b52857574b91d5314e8dd1 /app/BahnhofDNS.hs
parent7833a4ba758a7cf9b2534da1434f1070abcad577 (diff)
bahnhof-dns: improved configuration options
Diffstat (limited to 'app/BahnhofDNS.hs')
-rw-r--r--app/BahnhofDNS.hs15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/BahnhofDNS.hs b/app/BahnhofDNS.hs
index 1b06dc1..b4f1988 100644
--- a/app/BahnhofDNS.hs
+++ b/app/BahnhofDNS.hs
@@ -11,9 +11,19 @@ import Util
mkByteString :: String -> ByteString
mkByteString = TSE.encodeUtf8 . Data.Text.pack
+-- | name that the nameserver will run on
ourName :: ByteString
ourName = mkByteString "ns.fynngodau.de."
+-- |
+-- Nothing to bind anywhere (*:53)
+-- recommended: set to your public IP address if running in parallel to a proper local resolver
+bindAddress :: Maybe String
+bindAddress = Just "2003:a:1525:3967::2"
+
+bindPort :: String
+bindPort = "53"
+
servedName :: ByteString
servedName = mkByteString "bahnhof.fynngodau.de."
@@ -26,6 +36,7 @@ soa = ResourceRecord servedName SOA classIN 86400 $ RD_SOA
7200 -- retry
3600000 -- expire
3600 -- minttl
+-- CONFIGURE UP TO HERE --
ns :: ResourceRecord
ns = ResourceRecord servedName NS classIN 86400 $ RD_NS ourName
@@ -34,10 +45,10 @@ ns = ResourceRecord servedName NS classIN 86400 $ RD_NS ourName
main :: IO ()
main = do -- general structure like sample code at https://book.realworldhaskell.org/read/sockets-and-syslog.html (for UDP server)
staticData <- readData
- addr : _ <- getAddrInfo (Just defaultHints { addrSocketType = Datagram, addrFamily = AF_INET6, addrFlags = [AI_PASSIVE] }) Nothing (Just "5300")
+ addr : _ <- getAddrInfo (Just defaultHints { addrSocketType = Datagram, addrFlags = [AI_PASSIVE] }) bindAddress (Just bindPort)
sckt <- openSocket addr
bind sckt (addrAddress addr)
- putStrLn "Starting DNS server (listening on port 5300)"
+ putStrLn $ "Starting DNS server (listening on port " ++ bindPort ++ ")"
procMessages staticData sckt
where
procMessages staticData sckt = do