54 lines
1.4 KiB
Haskell
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
|