import { Meteor } from 'meteor/meteor'; import { Roles } from 'meteor/roles'; import { SysConfig } from '../imports/api/systemConfig.js'; import { MScripts } from '../imports/api/mScripts.js'; import { UpdateInfo } from '../imports/api/updateInfo.js' Meteor.startup(async () => { // code to run on server at startup await Roles.createRoleAsync("user", { unlessExists: true }); await Roles.createRoleAsync("systemadmin", { unlessExists: true }); await Roles.createRoleAsync("tenantadmin", { unlessExists: true }); // set the systemconfig defaults for registration // check if this has already been run let regPolRun = await MScripts.findOneAsync({ scriptName: "DefaultRegPolicy", scriptRun: true }); if (!regPolRun) { try { let regPolicy = await SysConfig.findOneAsync({}); if (!regPolicy) { SysConfig.insertAsync({ SysAdminReg: false, dateAdded: new Date(), allowReg: true, allowUpdates: true, }); markScriptRun("DefaultRegPolicy"); } else { // console.log("Registration policy already set."); markScriptRun("DefaultRegPolicy"); } } catch(error) { console.log(" ERROR trying to check if registration policy was set."); console.log(error.message); console.log(error.stack); } } }); var startCronForUpdates = function(feedurl) { var cron = require('node-cron'); cron.schedule('*/30 * * * *', () => { getUpdateInfoNow(feedurl); }); } var markScriptRun = async function(scriptName) { // check if this is already set let scriptRun = await MScripts.findOneAsync({ scriptName: scriptName }); if (!scriptRun) { try { return MScripts.insertAsync({ scriptName: scriptName, scriptRun: true, runOn: new Date() }); } catch(error) { console.log(" ERROR inserting the script run log: " + error); console.log(error.message); console.log(error.stack); } } else { // console.log(scriptName + " already set as run on " + scriptRun.runOn); } } var getUpdateInfoNow = async function(feedurl) { const parser = require('rss-url-parser') const data = await parser(feedurl) let dataLength = data.length; // console.dir(data[0].title); // check if this title already exists in db let updatesExist = await UpdateInfo.findOneAsync({ title: data[0].title }); try { if (!updatesExist) { UpdateInfo.insertAsync({ title: data[0].title, description: data[0].description, dateRelease: data[0].date, releaseLink: data[0].link, viewed: false }); } else { console.log("No new updates available at this time."); } } catch(error) { console.log(" ERROR checking for update: " + error); console.log(error.message); console.log(error.stack); } }