From 69f8101edb9a24aff83183c3bd9cfb53169ec22c Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Mon, 21 Dec 2015 20:41:19 +0300 Subject: [PATCH] add primitive config to query.cgi --- linux/query.cgi | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/linux/query.cgi b/linux/query.cgi index 3ebf5ce..0bab4e1 100644 --- a/linux/query.cgi +++ b/linux/query.cgi @@ -1,4 +1,5 @@ #!/bin/env runhaskell + {-# LANGUAGE OverloadedStrings #-} module Main where @@ -15,9 +16,11 @@ main = runCGI $ handleErrors cgiMain cgiMain :: CGI CGIResult cgiMain = do - conn <- liftIO $ connect defaultConnectInfo { connectUser = "watermeter" - , connectPassword = "xxxxxxxx" - , connectDatabase = "watermeter" + conf <- liftIO $ readConf "/etc/watermeter.db" + conn <- liftIO $ connect defaultConnectInfo { connectHost = host conf + , connectUser = user conf + , connectPassword = pass conf + , connectDatabase = dbnm conf } today <- liftIO getClockTime let tomorrow = addToClockTime (noTimeDiff {tdDay = 1}) today @@ -58,3 +61,24 @@ cgiMain = do showjson :: [(Int, Double)] -> String showjson l = intercalate "," $ map (\(t, c) -> "[" ++ show t ++ "," ++ show (floor c) ++ "]") l +data Conf = Conf { host :: String + , user :: String + , pass :: String + , dbnm :: String + } + +readConf :: String -> IO Conf +readConf fn = + readFile fn >>= return . (foldr parseLine (Conf "" "" "" "")) . lines + where + parseLine :: String -> Conf -> Conf + parseLine l sum = + case words l of + [k, v] -> + case k of + "host" -> sum { host = v } + "user" -> sum { user = v } + "password" -> sum { pass = v } + "database" -> sum { dbnm = v } + _ -> error $ "bad key in config line \"" ++ l ++ "\"" + _ -> error $ "bad config line \"" ++ l ++ "\"" -- 2.39.2