open-health/server/main.js
2025-12-06 15:44:43 -06:00

95 lines
No EOL
3 KiB
JavaScript

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 });
await Roles.createRoleAsync("shareadmin", { 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);
}
}