"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.SecuritySolutionServerlessPlugin = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _pli_features = require("../common/pli/pli_features"); var _usage_reporting_task = require("./task_manager/usage_reporting_task"); var _cloud_security_metering_task_config = require("./cloud_security/cloud_security_metering_task_config"); var _metering = require("./endpoint/constants/metering"); var _services = require("./endpoint/services"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ class SecuritySolutionServerlessPlugin { constructor(initializerContext) { (0, _defineProperty2.default)(this, "config", void 0); (0, _defineProperty2.default)(this, "cspmUsageReportingTask", void 0); (0, _defineProperty2.default)(this, "endpointUsageReportingTask", void 0); (0, _defineProperty2.default)(this, "logger", void 0); this.initializerContext = initializerContext; this.config = this.initializerContext.config.get(); this.logger = this.initializerContext.logger.get(); } setup(coreSetup, pluginsSetup) { // securitySolutionEss plugin should always be disabled when securitySolutionServerless is enabled. // This check is an additional layer of security to prevent double registrations when // `plugins.forceEnableAllPlugins` flag is enabled). const shouldRegister = pluginsSetup.securitySolutionEss == null; if (shouldRegister) { const productTypesStr = JSON.stringify(this.config.productTypes, null, 2); this.logger.info(`Security Solution running with product types:\n${productTypesStr}`); pluginsSetup.securitySolution.setAppFeatures((0, _pli_features.getProductAppFeatures)(this.config.productTypes)); } pluginsSetup.ml.setFeaturesEnabled({ ad: true, dfa: true, nlp: false }); this.cspmUsageReportingTask = new _usage_reporting_task.SecurityUsageReportingTask({ core: coreSetup, logFactory: this.initializerContext.logger, config: this.config, taskManager: pluginsSetup.taskManager, cloudSetup: pluginsSetup.cloudSetup, taskType: _cloud_security_metering_task_config.cloudSecurityMetringTaskProperties.taskType, taskTitle: _cloud_security_metering_task_config.cloudSecurityMetringTaskProperties.taskTitle, version: _cloud_security_metering_task_config.cloudSecurityMetringTaskProperties.version, meteringCallback: _cloud_security_metering_task_config.cloudSecurityMetringTaskProperties.meteringCallback }); this.endpointUsageReportingTask = new _usage_reporting_task.SecurityUsageReportingTask({ core: coreSetup, logFactory: this.initializerContext.logger, config: this.config, taskType: _metering.METERING_TASK.TYPE, taskTitle: _metering.METERING_TASK.TITLE, version: _metering.METERING_TASK.VERSION, meteringCallback: _services.endpointMeteringService.getUsageRecords, taskManager: pluginsSetup.taskManager, cloudSetup: pluginsSetup.cloudSetup }); return {}; } start(_coreStart, pluginsSetup) { var _this$cspmUsageReport, _this$endpointUsageRe; const internalESClient = _coreStart.elasticsearch.client.asInternalUser; const internalSOClient = _coreStart.savedObjects.createInternalRepository(); (_this$cspmUsageReport = this.cspmUsageReportingTask) === null || _this$cspmUsageReport === void 0 ? void 0 : _this$cspmUsageReport.start({ taskManager: pluginsSetup.taskManager, interval: _cloud_security_metering_task_config.cloudSecurityMetringTaskProperties.interval }); (_this$endpointUsageRe = this.endpointUsageReportingTask) === null || _this$endpointUsageRe === void 0 ? void 0 : _this$endpointUsageRe.start({ taskManager: pluginsSetup.taskManager, interval: _metering.METERING_TASK.INTERVAL }); (0, _services.setEndpointPackagePolicyServerlessFlag)(internalSOClient, internalESClient, pluginsSetup.fleet.packagePolicyService); return {}; } stop() {} } exports.SecuritySolutionServerlessPlugin = SecuritySolutionServerlessPlugin;