Skip to content

Commit

Permalink
#53 Disable UI actions related to Cortex, if no cortex is available
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Dec 15, 2016
1 parent c9be7a6 commit 0de4ccb
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 28 deletions.
13 changes: 11 additions & 2 deletions ui/app/scripts/controllers/admin/AdminReportTemplatesCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

this.templates = [];
this.analyzers = [];
this.analyzerCount = 0;


this.load = function() {
Expand All @@ -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;
});
};

Expand Down
3 changes: 2 additions & 1 deletion ui/app/scripts/controllers/case/CaseObservablesCtrl.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
28 changes: 16 additions & 12 deletions ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -19,7 +19,7 @@

$scope.artifact = {};
$scope.artifact.tlp = $scope.artifact.tlp || -1;

$scope.analysisEnabled = VersionSrv.hasCortex();

$scope.editorOptions = {
lineNumbers: true,
Expand Down Expand Up @@ -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);
});

Expand All @@ -82,13 +84,15 @@
} else {
$scope.analyzerJobs[job.analyzerId] = [job];

/*
AnalyzerSrv.get(job.analyzerId)
.finally(function (data) {
$scope.analyzers[data.analyzerId] = {
active: false,
showRows: false
};
});
*/
}
});
};
Expand Down Expand Up @@ -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) {
Expand All @@ -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 () {

})
};

Expand Down
2 changes: 1 addition & 1 deletion ui/app/scripts/services/AnalyzerSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

deferred.resolve(analyzers);
}, function (rejection) {
deferred.reject(rejection);
deferred.reject({});
})

} else {
Expand Down
14 changes: 13 additions & 1 deletion ui/app/scripts/services/VersionSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
.factory('VersionSrv', function($http, $q) {
var cache = null;

return {
var factory = {
get: function() {
var deferred = $q.defer();

Expand All @@ -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;
});
})();
19 changes: 12 additions & 7 deletions ui/app/views/partials/admin/report-templates.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,29 @@ <h2>Report template management</h2>
</div>
</div>
</div>
<div class="row">

<div class="row mv-s" ng-show="vm.analyzerCount === 0">
<div class="col-md-12">
<div class="empty-message">No report templates found.</div>
</div>
</div>

<div class="row" ng-show="vm.analyzerCount > 0">
<div class="col-md-12">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th width="100px">Version</th>
<th>Name</th>
<th width="200px">Short template</th>
<th width="200px">Long template</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="analyzer in vm.analyzers">
<td>
{{analyzer.name}}<br>
<small class="text-muted">{{analyzer.description}}</small>
</td>
<td class="vmiddle">{{analyzer.version}}</td>
{{::analyzer.id}}<br>
<small class="text-muted">{{::analyzer.description}}</small>
</td>
<td class="vmiddle">
<span class="clickable label label-lg label-success"
ng-if="analyzer.shortReport"
Expand Down
2 changes: 1 addition & 1 deletion ui/app/views/partials/case/case.observables.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<li>
<a ng-click="selection.isCollapsed=true;selection.Action ='addTags';evalTtags();">Add tag</a>
</li>
<li>
<li ng-if="analysisEnabled">
<a ng-click="selection.Action ='runAnalyzers'; activeAnalyzers();">Run analyzers</a>
</li>
<li class="divider"></li>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<h3 class="pad10 text-primary">
Observable Analyzers
<span class="pull-right">
<span class="pull-right" ng-if="analysisEnabled">
<small><a href class="text-primary" ng-click="runAll()">Run all</a></small>
</span>
</h3>
<table class="table table-hover">
<thead>
<th>Analyzer</th>
<th width="300">Last analysis</th>
<th width="60">Action</th>
<th width="60" ng-if="analysisEnabled">Action</th>
</thead>
<tbody>
<tr ng-repeat="(analyzerId, jobs) in analyzerJobs" ng-init="analyzers[analyzerId].showRows=false;">
Expand All @@ -30,7 +30,7 @@ <h3 class="pad10 text-primary">
</li>
</ul>
</td>
<td>
<td ng-if="analysisEnabled">
<span class="btn btn-xs" ng-class="{true: 'btn-warning', false: 'btn-danger'}[jobs.length > 0]"
ng-click="runAnalyzer(analyzerId)"
ng-if="analyzers[analyzerId].active">
Expand Down

0 comments on commit 0de4ccb

Please sign in to comment.