generated from ITwrxOrg/EZ-Bkup
make hardcoded values release friendly
This commit is contained in:
parent
b66c40264f
commit
451492fa20
|
@ -85,6 +85,6 @@ proc handlePost() =
|
||||||
|
|
||||||
let getserver = newHttpServer(handleGet, headerfields = ["cookie", "cookie"])
|
let getserver = newHttpServer(handleGet, headerfields = ["cookie", "cookie"])
|
||||||
let postserver = newHttpServer(handlePost, loglevel = INFO, headerfields = ["origin", "cookie", "referer"])
|
let postserver = newHttpServer(handlePost, loglevel = INFO, headerfields = ["origin", "cookie", "referer"])
|
||||||
if not epolldispatcher.start(getserver, 8096): quit()
|
if not epolldispatcher.start(getserver, 5050): quit()
|
||||||
if not epolldispatcher.start(postserver, 8097, threadpoolsize = 20): quit()
|
if not epolldispatcher.start(postserver, 5051, threadpoolsize = 20): quit()
|
||||||
joinThreads(getserver.thread, postserver.thread)
|
joinThreads(getserver.thread, postserver.thread)
|
||||||
|
|
|
@ -69,12 +69,10 @@ proc nextMonthlyOnWeekdayOfWeek*(weekdayString: string, ocurrence: string): Date
|
||||||
let nextMonthsDate = now() + 1.months
|
let nextMonthsDate = now() + 1.months
|
||||||
let weekNumStrings = @["1", "2", "3"]
|
let weekNumStrings = @["1", "2", "3"]
|
||||||
if ocurrence in weekNumStrings:
|
if ocurrence in weekNumStrings:
|
||||||
#nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString, parseInt(ocurrence))
|
|
||||||
nextSendDate = nthWeekdayInMonth(year(now()), month(now()), weekdayString, parseInt(ocurrence))
|
nextSendDate = nthWeekdayInMonth(year(now()), month(now()), weekdayString, parseInt(ocurrence))
|
||||||
if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
|
if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
|
||||||
nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString, parseInt(ocurrence))
|
nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString, parseInt(ocurrence))
|
||||||
else:
|
else:
|
||||||
#nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString)
|
|
||||||
nextSendDate = lastWeekdayInMonth(year(now()), month(now()), weekdayString)
|
nextSendDate = lastWeekdayInMonth(year(now()), month(now()), weekdayString)
|
||||||
if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
|
if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
|
||||||
nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString)
|
nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString)
|
||||||
|
|
|
@ -7,22 +7,21 @@ import std/[times, strutils, re, uri, paths, random, strtabs]
|
||||||
|
|
||||||
#universal
|
#universal
|
||||||
const APP_PATH* = "/var/www/forget-me-not-gs"
|
const APP_PATH* = "/var/www/forget-me-not-gs"
|
||||||
const ASSETS_PATH* = "/var/www/forget-me-not-gs/app/assets"
|
const ASSETS_PATH* = "/var/www/forget-me-not-gs/assets"
|
||||||
const APP_NAME* = "Forget-Me-Not"
|
const APP_NAME* = "Forget-Me-Not"
|
||||||
#set to 'dev' or 'prod'
|
#set to 'dev' or 'prod'. changes how cookies are created and possibly paths, if using two environments. Maybe other stuff i'm forgetting.
|
||||||
const APP_MODE* = "dev"
|
const APP_MODE* = "dev"
|
||||||
#dev
|
#dev
|
||||||
|
#using paths config'd in /etc/hosts for local dev.
|
||||||
const APP_URL* = "http://fmn-gs"
|
const APP_URL* = "http://fmn-gs"
|
||||||
#const SITE_URL* = "http://"
|
|
||||||
const ASSETS_URL* = "http://assets.fmn-gs"
|
const ASSETS_URL* = "http://assets.fmn-gs"
|
||||||
#prod
|
#prod
|
||||||
#const APP_URL* = "https://ssm.itwrx.org"
|
#const APP_URL* = "https://my-fmn-url.com"
|
||||||
#const SITE_URL* = "https://itwrx.org"
|
#const ASSETS_URL* = "https://assets.my-fmn-url.com"
|
||||||
#const ASSETS_URL* = "https://assets.itwrx.org"
|
|
||||||
|
|
||||||
var frStrTab* = newStringTable()
|
var frStrTab* = newStringTable()
|
||||||
|
|
||||||
#TODO: implement logging or remove logging code.
|
#TODO: implement logging or remove logging code. Remove SSM code not used in FMN.
|
||||||
|
|
||||||
#Guildensterns logger is conflicting with my, evidently incorrect, usage of the std lib logger so i'll just write some lines to a file for now.
|
#Guildensterns logger is conflicting with my, evidently incorrect, usage of the std lib logger so i'll just write some lines to a file for now.
|
||||||
#var logger* = newFileLogger("errors.log")
|
#var logger* = newFileLogger("errors.log")
|
||||||
|
|
|
@ -6,6 +6,8 @@ See COPYING or <https://www.gnu.org/licenses/> for details.]#
|
||||||
import std/[times, osproc], smtp
|
import std/[times, osproc], smtp
|
||||||
import ../models/reminder, ../models/user, datetime
|
import ../models/reminder, ../models/user, datetime
|
||||||
|
|
||||||
|
#TODO: use comnfig file for creds and other comms settings instead of hardcoding.
|
||||||
|
|
||||||
proc setFutureSendDate(reminderId: int) =
|
proc setFutureSendDate(reminderId: int) =
|
||||||
var reminder: Reminder
|
var reminder: Reminder
|
||||||
reminder = getReminderById(reminderId)
|
reminder = getReminderById(reminderId)
|
||||||
|
@ -53,23 +55,24 @@ proc setFutureSendDate(reminderId: int) =
|
||||||
echo "Invalid value for reminder.repeatFreq in setFutureSendDate()"
|
echo "Invalid value for reminder.repeatFreq in setFutureSendDate()"
|
||||||
|
|
||||||
proc sendEmail(reminderMsg: string) =
|
proc sendEmail(reminderMsg: string) =
|
||||||
|
##Warning: hardcoded userId expects one user with id of 1.
|
||||||
let userEmailAddress = getEmailByUserId("1")
|
let userEmailAddress = getEmailByUserId("1")
|
||||||
let headers = @[("From", "mailer@itwrx.org")]
|
let headers = @[("From", "mymaileraccount@mydomain.org")]
|
||||||
let msg = createMessage("Reminder from Forget-Me-Not", reminderMsg, @[userEmailAddress], mCc = @[""], otherHeaders = headers)
|
let msg = createMessage("Reminder from Forget-Me-Not", reminderMsg, @[userEmailAddress], mCc = @[""], otherHeaders = headers)
|
||||||
{.cast(raises: []).}:
|
{.cast(raises: []).}:
|
||||||
let smtpConn = newSmtp(debug=false)
|
let smtpConn = newSmtp(debug=false)
|
||||||
smtpConn.connect("email.itwrx.org", Port 587)
|
smtpConn.connect("mail.mydomain.org", Port 587)
|
||||||
smtpConn.startTls()
|
smtpConn.startTls()
|
||||||
smtpConn.auth("mailer@itwrx.org", ".AQ8u((xB(AgZh^a`jEJ~W~{0Eq?fd$")
|
smtpConn.auth("mymaileraccount@mydomain.org", "mymaileraccount-password-goes-here")
|
||||||
#loop through email messages and send to reuse connection?
|
#loop through email messages and send to reuse connection?
|
||||||
smtpConn.sendmail("mailer@itwrx.org", @[userEmailAddress], $msg)
|
smtpConn.sendmail("mymaileraccount@mydomain.org", @[userEmailAddress], $msg)
|
||||||
#manually closing not necessary?
|
#manually closing not necessary?
|
||||||
smtpConn.close()
|
smtpConn.close()
|
||||||
|
|
||||||
proc sendXMPP(reminderMsg: string) =
|
proc sendXMPP(reminderMsg: string) =
|
||||||
var output: string
|
var output: string
|
||||||
var status: int
|
var status: int
|
||||||
(output, status) = execCmdEx("xmppc -m message chat itwrx@sec-chat.itwrx.org \"" & reminderMsg & "\"")
|
(output, status) = execCmdEx("xmppc -m message chat receiving-xmpp-user@myxmppserverdomain.org \"" & reminderMsg & "\"")
|
||||||
if status != 0:
|
if status != 0:
|
||||||
#log this later instead.
|
#log this later instead.
|
||||||
echo output
|
echo output
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
#[Copyright 2025 ITwrx.
|
|
||||||
This file is part of Forget-Me-Not.
|
|
||||||
Forget-Me-Not is released under the GNU Affero General Public License 3.0.
|
|
||||||
See COPYING or <https://www.gnu.org/licenses/> for details.]#
|
|
||||||
|
|
||||||
#TODO: Use a human checker in login form or remove from project.
|
|
||||||
|
|
||||||
import std/random
|
|
||||||
|
|
||||||
type
|
|
||||||
HumanChecker* = object
|
|
||||||
question*: string
|
|
||||||
id*, answer*: int
|
|
||||||
|
|
||||||
var humanCheckers: seq[HumanChecker]
|
|
||||||
humanCheckers = @[
|
|
||||||
HumanChecker(id: 1, question: "26 + four, minus 10", answer: 20),
|
|
||||||
HumanChecker(id: 2, question: "10 minus 2, + 14", answer: 22),
|
|
||||||
HumanChecker(id: 3, question: "15 + five, minus 3", answer: 17),
|
|
||||||
HumanChecker(id: 4, question: "9 + nine, minus 6", answer: 12),
|
|
||||||
HumanChecker(id: 5, question: "13 - three, plus 5", answer: 15),
|
|
||||||
HumanChecker(id: 6, question: "7 + six, plus one", answer: 14),
|
|
||||||
HumanChecker(id: 7, question: "22 + 8, - 2", answer: 28),
|
|
||||||
HumanChecker(id: 8, question: "4 - four, + ten", answer: 10),
|
|
||||||
HumanChecker(id: 9, question: "16 + four, minus three", answer: 17),
|
|
||||||
HumanChecker(id: 10, question: "twelve minus four, plus 8", answer: 16)
|
|
||||||
]
|
|
||||||
|
|
||||||
proc getHumanChecker*(): HumanChecker =
|
|
||||||
{.gcsafe.}:
|
|
||||||
randomize()
|
|
||||||
return sample(humancheckers)
|
|
||||||
|
|
||||||
proc getHCById*(id: int): HumanChecker =
|
|
||||||
{.gcsafe.}:
|
|
||||||
for hc in humanCheckers:
|
|
||||||
if hc.id == id:
|
|
||||||
return hc
|
|
|
@ -7,7 +7,7 @@ import guildenstern/httpserver, "../helpers/reminder", "../helpers/form"
|
||||||
|
|
||||||
proc sendRemindersPostHandler*() =
|
proc sendRemindersPostHandler*() =
|
||||||
try:
|
try:
|
||||||
if formInput("send_reminders_key") == "wpsU5CY1Tn5PkMjN6OBC7cdPVZbaW3x":
|
if formInput("send_reminders_key") == "your-key-string-goes-here":
|
||||||
sendReminders()
|
sendReminders()
|
||||||
reply(Http200)
|
reply(Http200)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -7,7 +7,7 @@ import guildenstern/httpserver, "../models/user_session", "../helpers/form"
|
||||||
|
|
||||||
proc userSessionDeletePostHandler*() =
|
proc userSessionDeletePostHandler*() =
|
||||||
try:
|
try:
|
||||||
if formInput("delete_user_sessions_key") == "XR5yLeigb4PFXOZBh3PBOuQXc8d7NE6":
|
if formInput("delete_user_sessions_key") == "your-key-string-goes-here":
|
||||||
deleteUserSessions()
|
deleteUserSessions()
|
||||||
reply(Http200)
|
reply(Http200)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue