Implement config for SMTP
This commit is contained in:
parent
e927cb26f3
commit
597ac5efc3
8 changed files with 92 additions and 13 deletions
29
app/Main.hs
29
app/Main.hs
|
@ -3,10 +3,13 @@
|
||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
import Config
|
import Config
|
||||||
|
import qualified Data.Text.Lazy as L
|
||||||
|
import qualified Data.Text.Lazy.IO as TIO
|
||||||
import Data.Time.Clock
|
import Data.Time.Clock
|
||||||
import Database.MongoDB
|
import Database.MongoDB
|
||||||
import qualified Network.Mail.Mime as M
|
import qualified Network.Mail.Mime as M
|
||||||
import Network.Mail.SMTP
|
import Network.Mail.SMTP
|
||||||
|
import qualified Network.Socket as NS
|
||||||
import Owner
|
import Owner
|
||||||
import System.Exit
|
import System.Exit
|
||||||
|
|
||||||
|
@ -29,7 +32,7 @@ main = do
|
||||||
putStr "Expiring users: "
|
putStr "Expiring users: "
|
||||||
print $ length users
|
print $ length users
|
||||||
mapM_ (emailOwner loadedConfig) users
|
mapM_ (emailOwner loadedConfig) users
|
||||||
else die "MongoDB connection failed!"
|
else die "MongoDB connection failed! :("
|
||||||
where
|
where
|
||||||
emailOwner :: Config -> Document -> IO ()
|
emailOwner :: Config -> Document -> IO ()
|
||||||
emailOwner config doc = do
|
emailOwner config doc = do
|
||||||
|
@ -37,17 +40,29 @@ main = do
|
||||||
case o of
|
case o of
|
||||||
Nothing -> putStrLn "Couldn't parse owner record."
|
Nothing -> putStrLn "Couldn't parse owner record."
|
||||||
Just o1 -> do
|
Just o1 -> do
|
||||||
|
msgtmp <- TIO.readFile "email.html"
|
||||||
|
txttmp <- TIO.readFile "email.txt"
|
||||||
|
let msg =
|
||||||
|
L.replace
|
||||||
|
"PLACEHOLDER_EXPIRATION"
|
||||||
|
(L.pack $ show (oexpiration o1)) $
|
||||||
|
L.replace "PLACEHOLDER_NAME" (L.fromStrict $ ofirst o1) msgtmp
|
||||||
|
let txt =
|
||||||
|
L.replace
|
||||||
|
"PLACEHOLDER_EXPIRATION"
|
||||||
|
(L.pack $ show (oexpiration o1)) $
|
||||||
|
L.replace "PLACEHOLDER_NAME" (L.fromStrict $ ofirst o1) txttmp
|
||||||
mail <-
|
mail <-
|
||||||
M.simpleMail
|
M.simpleMail
|
||||||
(Address (Just $ oname o1) (oemail o1))
|
(Address (Just $ oname o1) (oemail o1))
|
||||||
(Address (Just "ZGo Support") "contact@zgo.cash")
|
(Address (Just "ZGo Support") "contact@zgo.cash")
|
||||||
"ZGo session about to expire"
|
"ZGo session about to expire"
|
||||||
"Your ZGo session is about to expire"
|
txt
|
||||||
"<p>Your ZGo session is about to expire</p>"
|
msg
|
||||||
[]
|
[]
|
||||||
sendMailWithLogin'
|
sendMailWithLogin'
|
||||||
"127.0.0.1"
|
(c_smtpHost config)
|
||||||
1025
|
(fromInteger (c_smtpPort config) :: NS.PortNumber)
|
||||||
"contact@zgo.cash"
|
(c_smtpUser config)
|
||||||
"uib3K8BkCPexl_wr5bYfrg"
|
(c_smtpPwd config)
|
||||||
mail
|
mail
|
||||||
|
|
49
email.html
Normal file
49
email.html
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>ZGo Session about to Expire</title>
|
||||||
|
<link rel="preload" href="https://zgo.cash/fonts/Spartan-Regular.woff2" as="font" type="font/woff2" crossorigin>
|
||||||
|
<link rel="icon" type="image/x-icon" href="https://zgo.cash/images/favicon.ico" />
|
||||||
|
<link rel="stylesheet" href="https://zgo.cash/css/default.css" />
|
||||||
|
<link rel="stylesheet" href="https://zgo.cash/css/fontawesome.css" />
|
||||||
|
<link rel="stylesheet" href="https://zgo.cash/css/all.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<a href="https://zgo.cash/"><img src="https://zgo.cash/images/logo-new-transparent.png" height="100" style="margin:5px; vertical-align: middle;" /></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main role="main">
|
||||||
|
|
||||||
|
<p>Hello PLACEHOLDER_NAME,</p>
|
||||||
|
<p>Your current ZGo session will expire on PLACEHOLDER_EXPIRATION. To avoid any service disruption, please proceed to activate a new session in the app.</p>
|
||||||
|
<p>If your session does expire, your shop and all its data will be readily available for you when you activate your next session.</p>
|
||||||
|
<br>
|
||||||
|
<p>Thank you for offering your customers the option to pay with Zcash with us,<br>The ZGo team</p>
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<table width="100%" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<p>
|
||||||
|
<a href="https://zeal.center/@zgo" target="_blank" rel="me"><i class="fa-brands fa-mastodon fa-2xl" style="color: #ff5722;"></i></a>
|
||||||
|
<a href="mailto:contact@zgo.cash" target="_blank"><i class="fa-solid fa-envelope fa-2xl" style="color: #ff5722;"></i></a>
|
||||||
|
<a href="https://matrix.to/#/#zgo-support:vergara.tech" target="_blank"><i class="fa-solid fa-comments fa-2xl" style="color: #ff5722;"></i></a>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td align="right">
|
||||||
|
<i class="fa-regular fa-copyright"></i>2023 Copyright Vergara Technologies LLC<br>
|
||||||
|
ZGo is supported by a <a href="https://zcashgrants.org/" target="_blank">Zcash Community Grant</a><br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
9
email.txt
Normal file
9
email.txt
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
Hello PLACEHOLDER_NAME,
|
||||||
|
|
||||||
|
Your current ZGo session will expire on PLACEHOLDER_EXPIRATION. To avoid any
|
||||||
|
service disruption, please proceed to activate a new session in the app.
|
||||||
|
If you session does expire, your shop and all its data will be readily
|
||||||
|
available for you when you activate your next session.
|
||||||
|
|
||||||
|
Thank you for offering your customers the option to pay with Zcash with us,
|
||||||
|
The ZGo Team
|
|
@ -41,6 +41,8 @@ executables:
|
||||||
- time
|
- time
|
||||||
- mime-mail
|
- mime-mail
|
||||||
- smtp-mail
|
- smtp-mail
|
||||||
|
- text
|
||||||
|
- network
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
zgo-notifier-test:
|
zgo-notifier-test:
|
||||||
|
|
|
@ -37,7 +37,7 @@ packages:
|
||||||
#
|
#
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
- git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
||||||
commit: a8e1c1b4d8365c6c9f1959bf597558f50bb1a1cc
|
commit: f2c04ec8d5723b54d16f2657dcb7b8476bb0d1ec
|
||||||
- blake3-0.2@sha256:d1146b9a51ccfbb0532780778b6d016a614e3d44c05d8c1923dde9a8be869045,2448
|
- blake3-0.2@sha256:d1146b9a51ccfbb0532780778b6d016a614e3d44c05d8c1923dde9a8be869045,2448
|
||||||
- git: https://github.com/reach-sh/haskell-hexstring.git
|
- git: https://github.com/reach-sh/haskell-hexstring.git
|
||||||
commit: 085c16fb21b9f856a435a3faab980e7e0b319341
|
commit: 085c16fb21b9f856a435a3faab980e7e0b319341
|
||||||
|
|
|
@ -5,15 +5,15 @@
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
- completed:
|
- completed:
|
||||||
commit: a8e1c1b4d8365c6c9f1959bf597558f50bb1a1cc
|
commit: f2c04ec8d5723b54d16f2657dcb7b8476bb0d1ec
|
||||||
git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
||||||
name: zgo-backend
|
name: zgo-backend
|
||||||
pantry-tree:
|
pantry-tree:
|
||||||
sha256: 223b93209879687086a70437f8913eee611bf9f6876b0d6b124a70dbe741c447
|
sha256: 06d62c7a8f7862ac49f8d052d2b1c6328ce82a10be2d0644983321295751857b
|
||||||
size: 1319
|
size: 1319
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
original:
|
original:
|
||||||
commit: a8e1c1b4d8365c6c9f1959bf597558f50bb1a1cc
|
commit: f2c04ec8d5723b54d16f2657dcb7b8476bb0d1ec
|
||||||
git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
git: https://git.vergara.tech/Vergara_Tech/zgo-backend.git
|
||||||
- completed:
|
- completed:
|
||||||
hackage: blake3-0.2@sha256:d1146b9a51ccfbb0532780778b6d016a614e3d44c05d8c1923dde9a8be869045,2448
|
hackage: blake3-0.2@sha256:d1146b9a51ccfbb0532780778b6d016a614e3d44c05d8c1923dde9a8be869045,2448
|
||||||
|
|
|
@ -22,8 +22,6 @@ source-repository head
|
||||||
location: https://git.vergara.tech/Vergara_Tech/zgo-notifier
|
location: https://git.vergara.tech/Vergara_Tech/zgo-notifier
|
||||||
|
|
||||||
library
|
library
|
||||||
exposed-modules:
|
|
||||||
Lib
|
|
||||||
other-modules:
|
other-modules:
|
||||||
Paths_zgo_notifier
|
Paths_zgo_notifier
|
||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
|
@ -44,7 +42,9 @@ executable zgo-notifier
|
||||||
, blake3
|
, blake3
|
||||||
, mime-mail
|
, mime-mail
|
||||||
, mongoDB
|
, mongoDB
|
||||||
|
, network
|
||||||
, smtp-mail
|
, smtp-mail
|
||||||
|
, text
|
||||||
, time
|
, time
|
||||||
, zgo-backend
|
, zgo-backend
|
||||||
, zgo-notifier
|
, zgo-notifier
|
||||||
|
|
4
zgo.cfg
4
zgo.cfg
|
@ -10,3 +10,7 @@ port = 3000
|
||||||
tls = false
|
tls = false
|
||||||
certificate = "/path/to/cert.pem"
|
certificate = "/path/to/cert.pem"
|
||||||
key = "/path/to/key.pem"
|
key = "/path/to/key.pem"
|
||||||
|
smtpHost = "127.0.0.1"
|
||||||
|
smtpPort = 1025
|
||||||
|
smtpUser = "contact@zgo.cash"
|
||||||
|
smtpPwd = "uib3K8BkCPexl_wr5bYfrg"
|
||||||
|
|
Loading…
Reference in a new issue