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 DDNS.Server
+import DDNS.Server.EditZone
+import DDNS.Server.SignReq
+import Data.List
+import OpenSSL
import System.Console.ParseArgs
+import System.IO
data Options
= Help
]
main :: IO ()
-main = do m <- parseArgsIO ArgsComplete arginfo
+main = withOpenSSL $
+ do m <- parseArgsIO ArgsComplete arginfo
when (gotArg m Help)
- $ usageError m "" `seq` return ()
+ $ usageError m ""
- usageError m "" `seq` return ()
+ let lsdir = getRequiredArg m LSDir
+ (key, cert) <- ensureWeHaveKeypair lsdir
+ withDB <- ensureWeHaveDB lsdir
-{-
-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
+ withDB $ \ db ->
+ case getRequiredArg m Command of
+ "signreq"
+ -> signReq key cert
+ "editzone"
+ -> editZone db
+ _ -> usageError m ""