X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=haskell-dns.git;a=blobdiff_plain;f=ExampleDNSServer.hs;fp=ExampleDNSServer.hs;h=75b261aa9effb9349a6f4e7d9a0f75fd557b5803;hp=428f261856dd892fa8d8a2862996239eb8b91f9d;hb=845dca95afa7e073e62520ef3c4840b3b078bdad;hpb=826401d22c87d6c5d77ad4f427d28d6b97a9d12f diff --git a/ExampleDNSServer.hs b/ExampleDNSServer.hs index 428f261..75b261a 100644 --- a/ExampleDNSServer.hs +++ b/ExampleDNSServer.hs @@ -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