summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-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