{-# LANGUAGE OverloadedStrings #-} module Server where import Config --import Control.Concurrent (forkIO) import Database.MongoDB import Network.Wai.Handler.Warp (defaultSettings, setPort) import Network.Wai.Handler.WarpTLS (runTLS, tlsSettings) import Web.Scotty import ZGoBackend main :: IO () main = do putStrLn "Reading config..." loadedConfig <- loadZGoConfig "zgo.cfg" let myTlsSettings = if c_useTls loadedConfig then Just $ tlsSettings (c_certificate loadedConfig) (c_key loadedConfig) else Nothing putStrLn "Starting Server..." pipe <- connect $ host (c_dbHost loadedConfig) j <- access pipe master (c_dbName loadedConfig) (auth (c_dbUser loadedConfig) (c_dbPassword loadedConfig)) if j then putStrLn "Connected to MongoDB!" else fail "MongoDB connection failed!" {-_ <- forkIO (setInterval 60 (checkZcashPrices pipe (c_dbName loadedConfig)))-} {-_ <- forkIO (setInterval 75 (scanZcash loadedConfig pipe))-} {-_ <- forkIO (setInterval 90 (scanPayments loadedConfig pipe))-} {-_ <- forkIO (setInterval 60 (checkPayments pipe (c_dbName loadedConfig)))-} {-_ <- forkIO (setInterval 60 (expireOwners pipe (c_dbName loadedConfig)))-} {-_ <- forkIO (setInterval 60 (updateLogins pipe loadedConfig))-} let appRoutes = routes pipe loadedConfig case myTlsSettings of Nothing -> scotty (c_port loadedConfig) appRoutes Just tls -> do apiCore <- scottyApp appRoutes runTLS tls (setPort (c_port loadedConfig) defaultSettings) apiCore