53 lines
2.6 KiB
JavaScript
53 lines
2.6 KiB
JavaScript
/*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 <https://www.gnu.org/licenses/>.*/
|
|
|
|
//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 channelModel = require('../schemas/channel/channelSchema');
|
|
const sessionUtils = require('./sessionUtils');
|
|
|
|
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"});
|
|
}
|
|
|
|
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();
|
|
|
|
|
|
//Schedule jobs
|
|
module.exports.schedule();
|
|
} |