]> www.average.org Git - pdns-pipe-nmc.git/blobdiff - Config.hs
separate config module
[pdns-pipe-nmc.git] / Config.hs
diff --git a/Config.hs b/Config.hs
new file mode 100644 (file)
index 0000000..070b422
--- /dev/null
+++ b/Config.hs
@@ -0,0 +1,27 @@
+module Config ( Config(..)
+              , readConfig
+              ) where
+
+import Data.ConfigFile
+import Data.Either.Utils
+import Data.List.Split
+
+data Config = Config { rpcuser       :: String
+                     , rpcpassword   :: String
+                     , rpchost       :: String
+                     , rpcport       :: Int
+                     } deriving (Show)
+
+readConfig :: String -> IO Config
+readConfig f = do
+  cp <- return . forceEither =<< readfile emptyCP f
+  return (Config { rpcuser       = getSetting cp "rpcuser"     ""
+                 , rpcpassword   = getSetting cp "rpcpassword" ""
+                 , rpchost       = getSetting cp "rpchost"     "localhost"
+                 , rpcport       = getSetting cp "rpcport"     8336
+                 })
+    where
+      getSetting cp x dfl = case get cp "DEFAULT" x of
+                              Left  _ -> dfl
+                              Right x -> x
+