zgo-notifier/app/Main.hs
2023-01-24 10:29:31 -06:00

54 lines
1.4 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Main where
import Config
import Data.Time.Clock
import Database.MongoDB
import qualified Network.Mail.Mime as M
import Network.Mail.SMTP
import Owner
import System.Exit
main :: IO ()
main = do
now <- getCurrentTime
loadedConfig <- loadZGoConfig "zgo.cfg"
pipe <- connect $ host (c_dbHost loadedConfig)
let db = c_dbName loadedConfig
x <-
access
pipe
master
db
(auth (c_dbUser loadedConfig) (c_dbPassword loadedConfig))
if x
then do
putStrLn "Connected to MongoDB!"
users <- access pipe master db $ findExpiringOwners now
putStr "Expiring users: "
print $ length users
mapM_ (emailOwner loadedConfig) users
else die "MongoDB connection failed!"
where
emailOwner :: Config -> Document -> IO ()
emailOwner config doc = do
let o = (cast' . Doc) doc
case o of
Nothing -> putStrLn "Couldn't parse owner record."
Just o1 -> do
mail <-
M.simpleMail
(Address (Just $ oname o1) (oemail o1))
(Address (Just "ZGo Support") "contact@zgo.cash")
"ZGo session about to expire"
"Your ZGo session is about to expire"
"<p>Your ZGo session is about to expire</p>"
[]
sendMailWithLogin'
"127.0.0.1"
1025
"contact@zgo.cash"
"uib3K8BkCPexl_wr5bYfrg"
mail