import Network.DNS.Named
import Network.DNS.Named.Config
import Network.DNS.Named.Zone
-import Network.Socket
-import System.IO.Unsafe
+import Network.Socket.IsString ()
main :: IO ()
main = runNamed cnf (return . findZone)
zone :: Zone
zone = Zone {
- zoneName = mkDN "cielonegro.org."
+ zoneName = "cielonegro.org."
, zoneSOA = Just SOAFields {
- soaMasterNameServer = mkDN "ns.cielonegro.org."
- , soaResponsibleMailbox = mkDN "root.ns.cielonegro.org."
+ soaMasterNameServer = "ns.cielonegro.org."
+ , soaResponsibleMailbox = "root.ns.cielonegro.org."
, soaSerialNumber = 2008022148
, soaRefreshInterval = 3600
, soaRetryInterval = 900
, soaExpirationLimit = 3600000
, soaMinimumTTL = 3600
}
- , zoneRecordNames = return [ mkDN "ns.cielonegro.org."
- , mkDN "www.cielonegro.org."
- , mkDN "git.cielonegro.org."
+ , zoneRecordNames = return [ "ns.cielonegro.org."
+ , "www.cielonegro.org."
+ , "git.cielonegro.org."
]
, zoneResponder = return . responder
}
responder :: DomainName -> [SomeRR]
responder name
- | name == mkDN "ns.cielonegro.org."
+ | name == "ns.cielonegro.org."
= [ wrapRecord ResourceRecord {
rrName = name
, rrType = A
, rrClass = IN
, rrTTL = 9600
- , rrData = inetAddr "127.0.0.1"
+ , rrData = "127.0.0.1"
+ }
+ , wrapRecord ResourceRecord {
+ rrName = name
+ , rrType = AAAA
+ , rrClass = IN
+ , rrTTL = 9600
+ , rrData = "::1"
}
]
- | name == mkDN "www.cielonegro.org."
+ | name == "www.cielonegro.org."
= [ wrapRecord ResourceRecord {
rrName = name
, rrType = A
, rrClass = IN
, rrTTL = 9600
- , rrData = inetAddr "127.0.0.2"
+ , rrData = "127.0.0.2"
+ }
+ , wrapRecord ResourceRecord {
+ rrName = name
+ , rrType = AAAA
+ , rrClass = IN
+ , rrTTL = 9600
+ , rrData = "fe80::216:cbff:fe39:56a4"
}
]
- | name == mkDN "git.cielonegro.org."
+ | name == "git.cielonegro.org."
= [ wrapRecord ResourceRecord {
rrName = name
, rrType = CNAME
, rrClass = IN
, rrTTL = 9600
- , rrData = mkDN "www.cielonegro.org."
+ , rrData = "www.cielonegro.org."
}
]
| otherwise
= [] -- This means NXDOMAIN.
-
-inetAddr :: String -> HostAddress
-inetAddr = unsafePerformIO . inet_addr