X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=blackboard-dns.git;a=blobdiff_plain;f=ServerMain.hs;fp=ServerMain.hs;h=833256f23961a03fa4ee73774b6cc911e25e087a;hp=0000000000000000000000000000000000000000;hb=c0afc68ff35fc668809c488fc55d14b4dbcb863c;hpb=9683501d29db20b736e459e9844368ac433a4db6 diff --git a/ServerMain.hs b/ServerMain.hs new file mode 100644 index 0000000..833256f --- /dev/null +++ b/ServerMain.hs @@ -0,0 +1,84 @@ +{-# LANGUAGE CPP #-} +module Main where + +import Control.Monad +{- +import DDNS.DBInfo +import qualified Database.HDBC as RAW +import qualified Database.HDBC.Sqlite3 as RAW +import Database.HaskellDB.DBSpec +import Database.HaskellDB.HDBC.SQLite3 +-} +import System.Console.ParseArgs + +data Options + = Help + | LSDir + | DNSPort + | HTTPSPort + | AllowTransfer + | Command + deriving (Show, Eq, Ord) + +arginfo :: [Arg Options] +arginfo = [ Arg { + argIndex = Help + , argAbbr = Just 'h' + , argName = Just "help" + , argData = Nothing + , argDesc = "print this help." + } + , Arg { + argIndex = LSDir + , argAbbr = Just 'd' + , argName = Just "localstatedir" + -- LOCALSTATEDIR will be replaced by CPP + , argData = argDataDefaulted "DIR" ArgtypeString LOCALSTATEDIR + , argDesc = "specify the local state directory (def: " ++ LOCALSTATEDIR ++ ")." + } + , Arg { + argIndex = DNSPort + , argAbbr = Just 'p' + , argName = Just "dns-port" + , argData = argDataDefaulted "PORT" ArgtypeString "53" + , argDesc = "port to listen for DNS packets (default: 53)." + } + , Arg { + argIndex = HTTPSPort + , argAbbr = Just 'P' + , argName = Just "https-port" + , argData = argDataDefaulted "PORT" ArgtypeString "443" + , argDesc = "port to listen for HTTPS connections (def: 443)." + } + , Arg { + argIndex = AllowTransfer + , argAbbr = Just 'a' + , argName = Just "allow-transfer" + , argData = Nothing + , argDesc = "accept AXFR requests." + } + , Arg { + argIndex = Command + , argAbbr = Nothing + , argName = Nothing + , argData = argDataDefaulted "COMMAND" ArgtypeString "daemon" + , argDesc = "command to the server (default: \"daemon\")." + } + ] + +main :: IO () +main = do m <- parseArgsIO ArgsComplete arginfo + when (gotArg m Help) + $ usageError m "" `seq` return () + + usageError m "" `seq` return () + +{- +main = do sqliteConnect "ddns.db" $ \ db -> + dbSpecToDatabase db dbinfo + + rawCon <- RAW.connectSqlite3 "ddns.db" + mapM_ (\ sql -> RAW.run rawCon sql []) indexDeclarations + RAW.commit rawCon + RAW.disconnect rawCon +-} \ No newline at end of file