fleet/ee/vulnerability-dashboard/api/controllers/view-patch-progress.js
Eric b1945b2128
Add fleet-vulnerability-dashboard repo to ee/ folder (#17428)
Closes: https://github.com/fleetdm/confidential/issues/4057

Changes:
- Added the contents of the fleet-vulnerability-dashboard repo to
ee/vulnerability-dashboard
- Added a github workflow to deploy the vulnerability dashboard on
Heroku
- Added a github workflow to test changes to the vulnerability-dashboard
- Updated the website's custom configuration to enable
auto-approvals/review requests to files in the
ee/vulnerability-dashboard folder
2024-03-13 13:06:11 -05:00

96 lines
3.6 KiB
JavaScript

module.exports = {
friendlyName: 'View patch progress',
description: 'Display "Patch progress" page.',
exits: {
success: {
viewTemplatePath: 'pages/patch-progress'
}
},
fn: async function () {
// Look for any configured Operating System
let teamsInformation = await Host.find().select(['teamDisplayName', 'teamApid']);
// console.log(teamsInformation)
// Build a list of teams in the Fleet instance using host records.
let teamsInFleetInstance = [];
for(let team of teamsInformation) {
let teamToDisplay = {
name: team.teamDisplayName,
id: team.teamApid,
};
teamsInFleetInstance.push(teamToDisplay);
}
let teamsToDisplay = _.uniq(teamsInFleetInstance, 'id');
let osComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'operatingSystem' });
let chromeComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'chrome' });
let safariComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'safari' });
let firefoxComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'firefox' });
let microsoftOfficeComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'microsoftOffice' });
let flashComplianceInfo = await sails.helpers.getComplianceInformation.with({complianceType: 'flash' });
let patchProgress = {
operatingSystem: osComplianceInfo.patchProgress,
chrome: chromeComplianceInfo.patchProgress,
safari: safariComplianceInfo.patchProgress,
firefox: firefoxComplianceInfo.patchProgress,
microsoftOffice: microsoftOfficeComplianceInfo.patchProgress,
flash: flashComplianceInfo.patchProgress,
};
// Used to populate the <select> options for the forms on the page.
let versionsInUse = {
operatingSystem: osComplianceInfo.versionsInUse,
chrome: chromeComplianceInfo.versionsInUse,
safari: safariComplianceInfo.versionsInUse,
firefox: firefoxComplianceInfo.versionsInUse,
microsoftOffice: microsoftOfficeComplianceInfo.versionsInUse,
flash: flashComplianceInfo.versionsInUse,
};
// Used to prefill the current compliant versions in the forms on the patch progress page.
let idsOfCompliantVersions = {
operatingSystem: _.pluck(_.filter(osComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
chrome: _.pluck(_.filter(chromeComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
safari: _.pluck(_.filter(safariComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
firefox: _.pluck(_.filter(firefoxComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
microsoftOffice: _.pluck(_.filter(microsoftOfficeComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
flash: _.pluck(_.filter(flashComplianceInfo.versionsInUse, {isCompliant: true}), 'id'),
};
// Used to display the current host count for each complaint version (when a section is expanded)
let complaintVersionsInUse = {
operatingSystem: osComplianceInfo.compliantVersionsInUse,
chrome: chromeComplianceInfo.compliantVersionsInUse,
safari: safariComplianceInfo.compliantVersionsInUse,
firefox: firefoxComplianceInfo.compliantVersionsInUse,
microsoftOffice: microsoftOfficeComplianceInfo.compliantVersionsInUse,
flash: flashComplianceInfo.compliantVersionsInUse,
};
return {
idsOfCompliantVersions,
complaintVersionsInUse,
versionsInUse,
patchProgress,
teamsToDisplay
};
}
};