zgo-backend/app/Main.hs

40 lines
1.3 KiB
Haskell
Raw Normal View History

2022-04-22 16:15:23 +00:00
{-# LANGUAGE OverloadedStrings #-}
module Main where
2022-05-19 13:24:52 +00:00
import Control.Concurrent (forkIO)
import Data.Configurator
2022-04-22 16:15:23 +00:00
import Data.SecureMem
import Database.MongoDB
2022-05-19 13:24:52 +00:00
import Network.Wai.Handler.WarpTLS (tlsSettings)
2022-04-22 16:15:23 +00:00
import ZGoBackend
main :: IO ()
main = do
2022-05-19 13:24:52 +00:00
putStrLn "Reading config..."
config <- load ["zgo.cfg"]
dbName <- require config "dbName"
dbUser <- require config "dbUser"
dbPassword <- require config "dbPassword"
nodeAddress <- require config "nodeAddress"
passkey <- secureMemFromByteString <$> require config "passkey"
port <- require config "port"
useTls <- require config "tls"
cert <- require config "certificate"
key <- require config "key"
let myTlsSettings =
if useTls
then Just $ tlsSettings cert key
else Nothing
2022-04-22 16:15:23 +00:00
putStrLn "Starting Server..."
pipe <- connect $ host "127.0.0.1"
2022-05-19 13:24:52 +00:00
j <- access pipe master dbName (auth dbUser dbPassword)
2022-04-22 16:15:23 +00:00
if j
then putStrLn "Connected to MongoDB!"
else fail "MongoDB connection failed!"
2022-05-19 13:24:52 +00:00
_ <- forkIO (setInterval 60 (checkZcashPrices pipe dbName))
_ <- forkIO (setInterval 75 (scanZcash nodeAddress pipe dbName))
_ <- forkIO (setInterval 60 (checkPayments pipe dbName))
_ <- forkIO (setInterval 60 (expireOwners pipe dbName))
app pipe dbName passkey nodeAddress port myTlsSettings