2021-07-20 01:19:28 +00:00
|
|
|
module Config (setup, Config(..), ConfigFile.ServerConfig(..), ConfigFile.MUC(..)) where
|
2021-06-24 02:00:55 +00:00
|
|
|
|
|
|
|
import Prelude ()
|
|
|
|
import BasicPrelude
|
|
|
|
|
2021-06-26 03:04:58 +00:00
|
|
|
import Data.Time.Clock.POSIX (getPOSIXTime)
|
2021-06-24 02:00:55 +00:00
|
|
|
import qualified Dhall
|
|
|
|
import qualified Network.Protocol.XMPP as XMPP
|
2021-06-26 03:04:58 +00:00
|
|
|
import qualified Database.SQLite.Simple as DB
|
2021-06-24 02:00:55 +00:00
|
|
|
|
2021-06-26 03:04:58 +00:00
|
|
|
import qualified ConfigFile
|
2021-06-24 02:00:55 +00:00
|
|
|
|
|
|
|
data Config = Config {
|
|
|
|
componentJid :: XMPP.JID,
|
2021-06-26 03:04:58 +00:00
|
|
|
server :: ConfigFile.ServerConfig,
|
2021-06-24 02:00:55 +00:00
|
|
|
secret :: Text,
|
2021-06-24 04:02:38 +00:00
|
|
|
nick :: Text,
|
2021-06-26 03:04:58 +00:00
|
|
|
bridgeJid :: XMPP.JID,
|
|
|
|
db :: DB.Connection,
|
|
|
|
dbVersion :: Integer,
|
2021-07-20 01:19:28 +00:00
|
|
|
mucs :: [[ConfigFile.MUC]]
|
2021-06-26 03:04:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
-- Not importing Util because Util imports us
|
|
|
|
s :: (IsString s) => String -> s
|
|
|
|
s = fromString
|
|
|
|
|
|
|
|
setup :: Text -> IO Config
|
|
|
|
setup expr = do
|
|
|
|
configFile <- Dhall.input Dhall.auto expr
|
|
|
|
Just bridgeJid <- return $ XMPP.parseJID $ s"bridge@" ++
|
|
|
|
XMPP.formatJID (ConfigFile.componentJid configFile) ++ s"/bridge"
|
|
|
|
db <- DB.open (textToString $ ConfigFile.db configFile)
|
|
|
|
now <- getPOSIXTime
|
|
|
|
return $ Config {
|
|
|
|
componentJid = ConfigFile.componentJid configFile,
|
|
|
|
server = ConfigFile.server configFile,
|
|
|
|
secret = ConfigFile.secret configFile,
|
|
|
|
nick = ConfigFile.nick configFile,
|
|
|
|
bridgeJid = bridgeJid,
|
|
|
|
db = db,
|
|
|
|
dbVersion = ceiling now,
|
|
|
|
mucs = ConfigFile.mucs configFile
|
2021-06-24 02:00:55 +00:00
|
|
|
}
|