6 import DDNS.Server.EditZone
7 import DDNS.Server.SignReq
10 import System.Console.ParseArgs
20 deriving (Show, Eq, Ord)
22 arginfo :: [Arg Options]
26 , argName = Just "help"
28 , argDesc = "print this help."
33 , argName = Just "localstatedir"
34 -- LOCALSTATEDIR will be replaced by CPP
35 , argData = argDataDefaulted "DIR" ArgtypeString LOCALSTATEDIR
36 , argDesc = "specify the local state directory (def: " ++ LOCALSTATEDIR ++ ")."
41 , argName = Just "dns-port"
42 , argData = argDataDefaulted "PORT" ArgtypeString "53"
43 , argDesc = "port to listen for DNS packets (default: 53)."
48 , argName = Just "https-port"
49 , argData = argDataDefaulted "PORT" ArgtypeString "443"
50 , argDesc = "port to listen for HTTPS connections (def: 443)."
53 argIndex = AllowTransfer
55 , argName = Just "allow-transfer"
57 , argDesc = "accept AXFR requests."
63 , argData = argDataDefaulted "COMMAND" ArgtypeString "daemon"
64 , argDesc = "command to the server (default: \"daemon\")."
70 do m <- parseArgsIO ArgsComplete arginfo
74 let lsdir = getRequiredArg m LSDir
75 (key, cert) <- ensureWeHaveKeypair lsdir
76 withDB <- ensureWeHaveDB lsdir
79 case getRequiredArg m Command of