]> gitweb @ CieloNegro.org - haskell-dns.git/blobdiff - ExampleDNSServer.hs
AAAA support
[haskell-dns.git] / ExampleDNSServer.hs
index 428f261856dd892fa8d8a2862996239eb8b91f9d..75b261aa9effb9349a6f4e7d9a0f75fd557b5803 100644 (file)
@@ -2,8 +2,7 @@ import           Network.DNS.Message
 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)
@@ -21,55 +20,66 @@ 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