From 0de4ccb4b5bcfd736ae703c78281b3a48ecfdc08 Mon Sep 17 00:00:00 2001 From: Nabil Adouani Date: Thu, 15 Dec 2016 13:29:26 +0100 Subject: [PATCH] #53 Disable UI actions related to Cortex, if no cortex is available --- .../admin/AdminReportTemplatesCtrl.js | 13 +++++++-- .../controllers/case/CaseObservablesCtrl.js | 3 +- .../case/CaseObservablesItemCtrl.js | 28 +++++++++++-------- ui/app/scripts/services/AnalyzerSrv.js | 2 +- ui/app/scripts/services/VersionSrv.js | 14 +++++++++- .../partials/admin/report-templates.html | 19 ++++++++----- .../views/partials/case/case.observables.html | 2 +- .../details/artifact-details-analysers.html | 6 ++-- 8 files changed, 59 insertions(+), 28 deletions(-) diff --git a/ui/app/scripts/controllers/admin/AdminReportTemplatesCtrl.js b/ui/app/scripts/controllers/admin/AdminReportTemplatesCtrl.js index dce93862dc..b5c37d6afa 100644 --- a/ui/app/scripts/controllers/admin/AdminReportTemplatesCtrl.js +++ b/ui/app/scripts/controllers/admin/AdminReportTemplatesCtrl.js @@ -12,6 +12,7 @@ this.templates = []; this.analyzers = []; + this.analyzerCount = 0; this.load = function() { @@ -24,11 +25,19 @@ return $q.resolve(self.analyzers); }).then(function (analyzersMap) { + if(_.isEmpty(analyzersMap)) { + _.each(_.pluck(self.templates, 'analyzers'), function(item) { + analyzersMap[item] = { + id: item + }; + }); + } + _.each(self.templates, function (tpl) { analyzersMap[tpl.analyzers][tpl.flavor + 'Report'] = tpl; - }); + }); - console.log(self.analyzers); + self.analyzerCount = _.keys(analyzersMap).length; }); }; diff --git a/ui/app/scripts/controllers/case/CaseObservablesCtrl.js b/ui/app/scripts/controllers/case/CaseObservablesCtrl.js index 3d172c5e34..fc46071fdd 100644 --- a/ui/app/scripts/controllers/case/CaseObservablesCtrl.js +++ b/ui/app/scripts/controllers/case/CaseObservablesCtrl.js @@ -1,10 +1,11 @@ (function () { 'use strict'; angular.module('theHiveControllers').controller('CaseObservablesCtrl', - function ($scope, $q, $state, $stateParams, $modal, CaseTabsSrv, PSearchSrv, CaseArtifactSrv, AlertSrv, AnalyzerSrv, CortexSrv, ObservablesUISrv) { + function ($scope, $q, $state, $stateParams, $modal, CaseTabsSrv, PSearchSrv, CaseArtifactSrv, AlertSrv, AnalyzerSrv, CortexSrv, ObservablesUISrv, VersionSrv) { CaseTabsSrv.activateTab($state.current.data.tab); + $scope.analysisEnabled = VersionSrv.hasCortex(); $scope.uiSrv = ObservablesUISrv; $scope.caseId = $stateParams.caseId; $scope.showText = false; diff --git a/ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js b/ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js index ba7d471866..05802c2398 100644 --- a/ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js +++ b/ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js @@ -1,7 +1,7 @@ (function () { 'use strict'; angular.module('theHiveControllers').controller('CaseObservablesItemCtrl', - function ($scope, $state, $stateParams, $q, CaseTabsSrv, CaseArtifactSrv, CortexSrv, PSearchSrv, AnalyzerSrv, JobSrv, AlertSrv) { + function ($scope, $state, $stateParams, $q, CaseTabsSrv, CaseArtifactSrv, CortexSrv, PSearchSrv, AnalyzerSrv, JobSrv, AlertSrv, VersionSrv) { var observableId = $stateParams.itemId, observableName = 'observable-' + observableId; @@ -19,7 +19,7 @@ $scope.artifact = {}; $scope.artifact.tlp = $scope.artifact.tlp || -1; - + $scope.analysisEnabled = VersionSrv.hasCortex(); $scope.editorOptions = { lineNumbers: true, @@ -61,9 +61,11 @@ // Get analyzers available for the observable's datatype AnalyzerSrv.forDataType(artifact.dataType) .then(function (analyzers) { - return $scope.analyzers = analyzers; + $scope.analyzers = analyzers; + }, function () { + $scope.analyzers = []; }) - .then(function (analyzers) { + .finally(function () { $scope.jobs = CortexSrv.list($scope.caseId, observableId, $scope.onJobsChange); }); @@ -82,6 +84,7 @@ } else { $scope.analyzerJobs[job.analyzerId] = [job]; + /* AnalyzerSrv.get(job.analyzerId) .finally(function (data) { $scope.analyzers[data.analyzerId] = { @@ -89,6 +92,7 @@ showRows: false }; }); + */ } }); }; @@ -146,9 +150,9 @@ var artifactName = $scope.artifact.data || $scope.artifact.attachment.name; CortexSrv.getServers([analyzerId]) - .then(function(serverId) { + .then(function (serverId) { return $scope._runAnalyzer(serverId, analyzerId, $scope.artifact.id); - }) + }) .then(function () { AlertSrv.log('Analyzer ' + analyzerId + ' has been successfully started for observable: ' + artifactName, 'success'); }, function (response) { @@ -166,15 +170,15 @@ }), 'id'); CortexSrv.getServers(analyzerIds) - .then(function(serverId) { - return $q.all(_.map(analyzerIds, function(analyzerId){ + .then(function (serverId) { + return $q.all(_.map(analyzerIds, function (analyzerId) { return $scope._runAnalyzer(serverId, analyzerId, artifactId); - })); + })); }) - .then(function() { + .then(function () { AlertSrv.log('Analyzers has been successfully started for observable: ' + artifactName, 'success'); - }, function() { - + }, function () { + }) }; diff --git a/ui/app/scripts/services/AnalyzerSrv.js b/ui/app/scripts/services/AnalyzerSrv.js index 15ac43a6e4..22ad18960b 100644 --- a/ui/app/scripts/services/AnalyzerSrv.js +++ b/ui/app/scripts/services/AnalyzerSrv.js @@ -33,7 +33,7 @@ deferred.resolve(analyzers); }, function (rejection) { - deferred.reject(rejection); + deferred.reject({}); }) } else { diff --git a/ui/app/scripts/services/VersionSrv.js b/ui/app/scripts/services/VersionSrv.js index 995640468f..2aeab0eda1 100644 --- a/ui/app/scripts/services/VersionSrv.js +++ b/ui/app/scripts/services/VersionSrv.js @@ -4,7 +4,7 @@ .factory('VersionSrv', function($http, $q) { var cache = null; - return { + var factory = { get: function() { var deferred = $q.defer(); @@ -20,7 +20,19 @@ } return deferred.promise; + }, + + hasCortex: function() { + try { + var service = cache.connectors.cortex; + + return service.enabled && service.servers.length; + } catch (err) { + return false; + } } }; + + return factory; }); })(); diff --git a/ui/app/views/partials/admin/report-templates.html b/ui/app/views/partials/admin/report-templates.html index ccce11acbb..180ab6f7ed 100644 --- a/ui/app/views/partials/admin/report-templates.html +++ b/ui/app/views/partials/admin/report-templates.html @@ -12,13 +12,19 @@

Report template management

-
+ +
+
+
No report templates found.
+
+
+ +
- - + @@ -26,10 +32,9 @@

Report template management

- + {{::analyzer.id}}
+ {{::analyzer.description}} + - + @@ -30,7 +30,7 @@

-

NameVersionName Short template Long template
- {{analyzer.name}}
- {{analyzer.description}} -
{{analyzer.version}} Add tag -
  • +
  • Run analyzers
  • diff --git a/ui/app/views/partials/observables/details/artifact-details-analysers.html b/ui/app/views/partials/observables/details/artifact-details-analysers.html index 4333f3c274..52cbd37473 100644 --- a/ui/app/views/partials/observables/details/artifact-details-analysers.html +++ b/ui/app/views/partials/observables/details/artifact-details-analysers.html @@ -1,6 +1,6 @@

    Observable Analyzers - + Run all

    @@ -8,7 +8,7 @@

    Analyzer Last analysisActionAction
    +