7 import qualified Database.HDBC as RAW
8 import qualified Database.HDBC.Sqlite3 as RAW
9 import Database.HaskellDB.DBSpec
10 import Database.HaskellDB.HDBC.SQLite3
12 import System.Console.ParseArgs
21 deriving (Show, Eq, Ord)
23 arginfo :: [Arg Options]
27 , argName = Just "help"
29 , argDesc = "print this help."
34 , argName = Just "localstatedir"
35 -- LOCALSTATEDIR will be replaced by CPP
36 , argData = argDataDefaulted "DIR" ArgtypeString LOCALSTATEDIR
37 , argDesc = "specify the local state directory (def: " ++ LOCALSTATEDIR ++ ")."
42 , argName = Just "dns-port"
43 , argData = argDataDefaulted "PORT" ArgtypeString "53"
44 , argDesc = "port to listen for DNS packets (default: 53)."
49 , argName = Just "https-port"
50 , argData = argDataDefaulted "PORT" ArgtypeString "443"
51 , argDesc = "port to listen for HTTPS connections (def: 443)."
54 argIndex = AllowTransfer
56 , argName = Just "allow-transfer"
58 , argDesc = "accept AXFR requests."
64 , argData = argDataDefaulted "COMMAND" ArgtypeString "daemon"
65 , argDesc = "command to the server (default: \"daemon\")."
70 main = do m <- parseArgsIO ArgsComplete arginfo
72 $ usageError m "" `seq` return ()
74 usageError m "" `seq` return ()
77 main = do sqliteConnect "ddns.db" $ \ db ->
78 dbSpecToDatabase db dbinfo
80 rawCon <- RAW.connectSqlite3 "ddns.db"
81 mapM_ (\ sql -> RAW.run rawCon sql []) indexDeclarations