]> gitweb @ CieloNegro.org - blackboard-dns.git/blob - ServerMain.hs
5f0db3001bc24fdb162e4e260ed755ccf0bb896f
[blackboard-dns.git] / ServerMain.hs
1 {-# LANGUAGE CPP #-}
2 module Main where
3
4 import           Control.Monad
5 {-
6 import           DDNS.DBInfo
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
11 -}
12 import           System.Console.ParseArgs
13
14 data Options
15     = Help
16     | LSDir
17     | DNSPort
18     | HTTPSPort
19     | AllowTransfer
20     | Command
21     deriving (Show, Eq, Ord)
22
23 arginfo :: [Arg Options]
24 arginfo = [ Arg {
25               argIndex = Help
26             , argAbbr  = Just 'h'
27             , argName  = Just "help"
28             , argData  = Nothing
29             , argDesc  = "print this help."
30             }
31           , Arg {
32               argIndex = LSDir
33             , argAbbr  = Just 'd'
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 ++ ")."
38             }
39           , Arg {
40               argIndex = DNSPort
41             , argAbbr  = Just 'p'
42             , argName  = Just "dns-port"
43             , argData  = argDataDefaulted "PORT" ArgtypeString "53"
44             , argDesc  = "port to listen for DNS packets (default: 53)."
45             }
46           , Arg {
47               argIndex = HTTPSPort
48             , argAbbr  = Just 'P'
49             , argName  = Just "https-port"
50             , argData  = argDataDefaulted "PORT" ArgtypeString "443"
51             , argDesc  = "port to listen for HTTPS connections (def: 443)."
52             }
53           , Arg {
54               argIndex = AllowTransfer
55             , argAbbr  = Just 'a'
56             , argName  = Just "allow-transfer"
57             , argData  = Nothing
58             , argDesc  = "accept AXFR requests."
59             }
60           , Arg {
61               argIndex = Command
62             , argAbbr  = Nothing
63             , argName  = Nothing
64             , argData  = argDataDefaulted "COMMAND" ArgtypeString "daemon"
65             , argDesc  = "command to the server (default: \"daemon\")."
66             }
67           ]
68
69 main :: IO ()
70 main = do m <- parseArgsIO ArgsComplete arginfo
71           when (gotArg m Help)
72                    $ usageError m ""
73
74           usageError m ""
75
76 {-
77 main = do sqliteConnect "ddns.db" $ \ db ->
78               dbSpecToDatabase db dbinfo
79
80           rawCon <- RAW.connectSqlite3 "ddns.db"
81           mapM_ (\ sql -> RAW.run rawCon sql []) indexDeclarations
82           RAW.commit rawCon
83           RAW.disconnect rawCon
84 -}