aboutsummaryrefslogtreecommitdiff
path: root/src/Config.hs
diff options
context:
space:
mode:
authorLia Lenckowski <lialenck@protonmail.com>2023-08-20 20:25:32 +0200
committerLia Lenckowski <lialenck@protonmail.com>2023-08-20 20:25:56 +0200
commit28290ac9e4aaed9a605bfec734818c28dd4ff51a (patch)
tree1edace370532a99b541918baef6edf1d4683e74b /src/Config.hs
parent621a91776a6512fc23664e8b2e7ab796ed9ffcd5 (diff)
downloadfastbangs-28290ac9e4aaed9a605bfec734818c28dd4ff51a.tar
fastbangs-28290ac9e4aaed9a605bfec734818c28dd4ff51a.tar.bz2
fastbangs-28290ac9e4aaed9a605bfec734818c28dd4ff51a.tar.zst
make admin user/password configurable with env vars instead of recompilation
Diffstat (limited to 'src/Config.hs')
-rw-r--r--src/Config.hs22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/Config.hs b/src/Config.hs
index b0c7670..d494477 100644
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -7,7 +7,7 @@ module Config (
) where
import Data.Maybe (fromMaybe)
-import Data.String (fromString)
+import Data.String (fromString, IsString)
import Data.Text (Text)
import Network.Wai.Handler.Warp (HostPreference)
import System.Environment (lookupEnv)
@@ -16,17 +16,21 @@ data Config = Config {
confPort :: Int,
confHost :: HostPreference,
confBaseUrl :: Text,
- confFavicon :: Text
+ confFavicon :: Text,
+ confUser :: Text,
+ confPwHash :: Text
} deriving (Show, Eq)
getConfig :: IO Config
-getConfig = do
- port <- (read . fromMaybe "20546") <$> lookupEnv "PORT"
- host <- (fromString . fromMaybe "*6") <$> lookupEnv "BIND_ADDR"
- baseUrl <- (fromString . fromMaybe "http://localhost:20546") <$> lookupEnv "BASE_URL"
- favicon <- (fromString . fromMaybe "https://69owo.de/favicon.ico") <$> lookupEnv "FAVICON_URL"
-
- return $ Config port host baseUrl favicon
+getConfig = Config
+ <$> (read <$> getEnvOr "PORT" "20546")
+ <*> getEnvOr "BIND_ADDR" "*6"
+ <*> getEnvOr "BASE_URL" "http://localhost:20546"
+ <*> getEnvOr "FAVICON_URL" "https://69owo.de/favicon.ico"
+ <*> getEnvOr "ADMIN_USER" "bleb"
+ <*> getEnvOr "ADMIN_PW_HASH" "" -- prevent login without manual pw
+ where getEnvOr :: IsString s => String -> s -> IO s
+ getEnvOr q def = fromMaybe def . fmap fromString <$> lookupEnv q
makeOpenSearch :: Config -> Maybe Text -> Text
makeOpenSearch cfg defBang =