export default function getVersionRunningInfo()

in client/src/components/tools/utils/getVersionInfo.js [21:116]


export default function getVersionRunningInfo (
  version,
  versions,
  scanPolicy,
  isAdmin,
  preferences,
  registry) {
  if (!preferences.toolScanningEnabledForRegistry(registry)) {
    return {
      allowedToExecute: true,
      tooltip: null,
      launchTooltip: null,
      notLoaded: false
    };
  }
  if (version && versions && scanPolicy) {
    const isGracePeriod = (versionObject) => {
      if (versionObject && versionObject.gracePeriod) {
        return moment.utc(versionObject.gracePeriod) > moment.utc();
      }
      return false;
    };
    const checkVulnerabilitiesNumber = (currentVersion) => {
      const vulnerabilities = currentVersion.vulnerabilitiesCount || {};
      const countCriticalVulnerabilities = vulnerabilities.Critical || 0;
      const countHighVulnerabilities = vulnerabilities.High || 0;
      const countMediumVulnerabilities = vulnerabilities.Medium || 0;
      return countCriticalVulnerabilities > scanPolicy.maxCriticalVulnerabilities ||
        countHighVulnerabilities > scanPolicy.maxHighVulnerabilities ||
        countMediumVulnerabilities > scanPolicy.maxMediumVulnerabilities;
    };
    const versionScanResult = versions[version]
      ? versions[version].scanResult
      : undefined;
    const versionPlatform = versions[version] && versions[version].attributes
      ? versions[version].attributes.platform
      : undefined;
    if (/^windows$/i.test(versionPlatform)) {
      return {
        allowedToExecute: true,
        tooltip: null,
        launchTooltip: null,
        notLoaded: false
      };
    }
    const allowedToExecuteFlag = versionScanResult
      ? versionScanResult.allowedToExecute
      : false;
    const {
      distribution,
      version: distrVersion,
      isAllowed = true
    } = (versionScanResult ? versionScanResult.toolOSVersion : undefined) || {};
    let tooltip, launchTooltip;
    let defaultTag;
    if (versions['latest']) {
      defaultTag = 'latest';
    } else if (Object.keys(versions).length === 1) {
      defaultTag = Object.keys(versions)[0];
    }
    const isGrace = isGracePeriod(versionScanResult);
    let gracePeriodEnd = isGrace && !isAdmin
      ? displayDate(versionScanResult.gracePeriod, 'D MMMM YYYY')
      : null;
    const isLatest = version === defaultTag;
    let allowedToExecute = allowedToExecuteFlag || isAdmin || isGrace;
    if (!isAllowed) {
      const distributionDescription = distribution
        ? ` (${distribution}${distrVersion ? ` ${distrVersion}` : ''})`
        : '';
      tooltip = `This distribution${distributionDescription} is not supported.`;
      launchTooltip = `This distribution${distributionDescription} is not supported. Run anyway?`;
    } else if (versionScanResult && checkVulnerabilitiesNumber(versionScanResult)) {
      tooltip = ScanStatusDescriptionsFn(isLatest, isGrace || isAdmin).vulnerabilitiesNumberExceeds;
      launchTooltip = LaunchMessages(gracePeriodEnd).vulnerabilitiesNumberExceeds;
    } else if (versionScanResult && versionScanResult.status === ScanStatuses.notScanned) {
      tooltip = ScanStatusDescriptionsFn(isLatest, isGrace || isAdmin).notScanned;
      launchTooltip = LaunchMessages(gracePeriodEnd).launchNotScanned;
    } else if (!allowedToExecuteFlag) {
      tooltip = ScanStatusDescriptionsFn(isLatest, isGrace || isAdmin).againstSecurityPolicy;
      launchTooltip = LaunchMessages(gracePeriodEnd).againstSecurityPolicy;
    }
    return {
      allowedToExecute,
      tooltip,
      launchTooltip,
      notLoaded: false
    };
  }
  return {
    allowedToExecute: false,
    tooltip: null,
    launchTooltip: null,
    notLoaded: true
  };
}