1 import Network.DNS.Message
2 import Network.DNS.Named
3 import Network.DNS.Named.Config
4 import Network.DNS.Named.Zone
5 import Network.Socket.IsString ()
8 main = runNamed cnf (return . findZone)
12 cnfServerPort = "9090"
13 , cnfAllowTransfer = True
16 findZone :: DomainName -> Maybe Zone
18 | name `isInZone` zone = Just zone
23 zoneName = "cielonegro.org."
24 , zoneSOA = Just SOAFields {
25 soaMasterNameServer = "ns.cielonegro.org."
26 , soaResponsibleMailbox = "root.ns.cielonegro.org."
27 , soaSerialNumber = 2008022148
28 , soaRefreshInterval = 3600
29 , soaRetryInterval = 900
30 , soaExpirationLimit = 3600000
31 , soaMinimumTTL = 3600
33 , zoneRecordNames = return [ "ns.cielonegro.org."
34 , "www.cielonegro.org."
35 , "git.cielonegro.org."
37 , zoneResponder = return . responder
40 responder :: DomainName -> [SomeRR]
42 | name == "ns.cielonegro.org."
43 = [ wrapRecord ResourceRecord {
48 , rrData = "127.0.0.1"
50 , wrapRecord ResourceRecord {
58 | name == "www.cielonegro.org."
59 = [ wrapRecord ResourceRecord {
64 , rrData = "127.0.0.2"
66 , wrapRecord ResourceRecord {
71 , rrData = "fe80::216:cbff:fe39:56a4"
74 | name == "git.cielonegro.org."
75 = [ wrapRecord ResourceRecord {
80 , rrData = "www.cielonegro.org."
84 = [] -- This means NXDOMAIN.