/*Canopy - The next generation of stoner streaming software Copyright (C) 2024-2025 Rainbownapkin and the TTN Community This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .*/ //NPM Imports const cron = require('node-cron'); //Local Imports const {userModel} = require('../schemas/user/userSchema'); const userBanModel = require('../schemas/user/userBanSchema'); const passwordResetModel = require('../schemas/user/passwordResetSchema'); const emailChangeModel = require('../schemas/user/emailChangeSchema'); const channelModel = require('../schemas/channel/channelSchema'); const sessionUtils = require('./sessionUtils'); const { email } = require('../validators/accountValidator'); module.exports.schedule = function(){ //Process hashed IP Records that haven't been recorded in a week or more cron.schedule('0 0 * * *', ()=>{userModel.processAgedIPRecords()},{scheduled: true, timezone: "UTC"}); //Process expired global bans every night at midnight cron.schedule('0 0 * * *', ()=>{userBanModel.processExpiredBans()},{scheduled: true, timezone: "UTC"}); //Process expired channel bans every night at midnight cron.schedule('0 0 * * *', ()=>{channelModel.processExpiredBans()},{scheduled: true, timezone: "UTC"}); //Process expired failed login attempts every night at midnight cron.schedule('0 0 * * *', ()=>{sessionUtils.processExpiredAttempts()},{scheduled: true, timezone: "UTC"}); //Process expired password reset requests every night at midnight cron.schedule('0 0 * * *', ()=>{passwordResetModel.processExpiredRequests()},{scheduled: true, timezone: "UTC"}); //Process expired email change requests every night at midnight cron.schedule('0 0 * * *', ()=>{emailChangeModel.processExpiredRequests()},{scheduled: true, timezone: "UTC"}); } module.exports.kickoff = function(){ //Process Hashed IP Records that haven't been recorded in a week or more userModel.processAgedIPRecords(); //Process expired global bans that may have expired since last restart userBanModel.processExpiredBans() //Process expired channel bans that may have expired since last restart channelModel.processExpiredBans(); //Process expired password reset requests that may have expired since last restart passwordResetModel.processExpiredRequests(); //Process expired email change requests that may have expired since last restart emailChangeModel.processExpiredRequests(); //Schedule jobs module.exports.schedule(); }