Skip to content

Commit

Permalink
#81 Add Apply defaults buttons to analyzer config dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Apr 6, 2018
1 parent abf26e2 commit df80aae
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 46 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,28 @@
'use strict';

import _ from 'lodash/core';

export default class AnalyzerConfigFormController {
constructor(Tlps) {
constructor($log, Tlps, AnalyzerService) {
'ngInject';

this.AnalyzerService = AnalyzerService;
this.Tlps = Tlps;
this.rateUnits = ['Day', 'Month'];
}

applyConfig(config) {
_.forEach(
_.keys(config),
k => (this.analyzer.configuration[k] = config[k])
);
}

applyGlobalConfig() {
this.applyConfig(this.globalConfig.config);
}

applyBaseConfig() {
this.applyConfig(this.baseConfig.config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,28 @@ <h4>Base details</h4>
</section>

<section ng-show="$ctrl.definition.configurationItems.length > 0">
<h4>Configuration</h4>
<h4>
Configuration
<div class="clearfix pull-right">
<small>
<a href ng-click="$ctrl.applyBaseConfig()">
<i class="fa fa-copy"></i> Apply defaults</a>
</small>
</div>
</h4>
<configuration-form items="$ctrl.definition.configurationItems" configuration="$ctrl.analyzer.configuration"></configuration-form>
</section>

<section>
<h4>Options</h4>
<h4>
Options
<div class="clearfix pull-right">
<small>
<a href ng-click="$ctrl.applyGlobalConfig()">
<i class="fa fa-copy"></i> Apply defaults</a>
</small>
</div>
</h4>
<div class="form-group">
<label class="col-sm-3 control-label">Enable TLP check</label>
<div class="col-sm-9 form-inline">
Expand All @@ -30,20 +46,6 @@ <h4>Options</h4>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Rate Limiting</label>
<div class="col-sm-4">
<input class="form-control" type="number" ng-model="$ctrl.analyzer.rate">
</div>
<div class="col-sm-5">
<select class="form-control" ng-model="$ctrl.analyzer.rateUnit" ng-options="unit for unit in $ctrl.rateUnits">
<option value="">-- choose unit --</option>
</select>
</div>
<div class="col-sm-offset-3 col-sm-9">
<p class="help-block">Define the maximum number of requests and the associated unit if applicable.</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">HTTP Proxy</label>
<div class="col-sm-9">
Expand All @@ -65,7 +67,21 @@ <h4>Options</h4>
</div>
</div>
<div class="col-sm-offset-3 col-sm-9">
<p class="help-block">Set to True to enable automatic observables extraction from analysis reports</p>
<p class="help-block">Set to True to enable automatic observables extraction from analysis reports.</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Rate Limiting</label>
<div class="col-sm-4">
<input class="form-control" type="number" ng-model="$ctrl.analyzer.rate">
</div>
<div class="col-sm-5">
<select class="form-control" ng-model="$ctrl.analyzer.rateUnit" ng-options="unit for unit in $ctrl.rateUnits">
<option value="">-- choose unit --</option>
</select>
</div>
<div class="col-sm-offset-3 col-sm-9">
<p class="help-block">Define the maximum number of requests and the associated unit if applicable.</p>
</div>
</div>
</section>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ export default class AnalyzerEditController {
$log,
$uibModalInstance,
definition,
globalConfig,
baseConfig,
configuration,
analyzer,
mode
Expand All @@ -17,6 +19,8 @@ export default class AnalyzerEditController {
this.$uibModalInstance = $uibModalInstance;
this.mode = mode;
this.definition = definition;
this.globalConfig = globalConfig;
this.baseConfig = baseConfig;
this.configuration = configuration;
this.analyzer = analyzer;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
<h3 class="modal-title">{{$modal.mode === 'create' ? 'Enable' : 'Edit'}} analyzer {{$modal.definition.id}}</h3>
</div>
<div class="modal-body">
<analyzer-config-form definition="$modal.definition" analyzer="$modal.analyzer"></analyzer-config-form>
<analyzer-config-form definition="$modal.definition"
global-config="$modal.globalConfig"
base-config="$modal.baseConfig"
configuration="$modal.configuration"
analyzer="$modal.analyzer"></analyzer-config-form>
</div>
<div class="modal-footer">
<button class="btn btn-default pull-left" type="button" ng-click="$modal.cancel()">Cancel</button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,34 +39,36 @@ export default class OrganizationAnalyzersController {
}

openModal(mode, definition, analyzer) {
let promise;

if (definition && definition.baseConfig) {
promise = this.AnalyzerService.getConfiguration(definition.baseConfig);
} else {
promise = this.$q.resolve({});
}
return promise
.then(
analyzerConfig => analyzerConfig,
err => {
if (err.status === 404) {
return {};
}
}
)
.then(analyzerConfig =>
this.AnalyzerService.getConfiguration('global').then(globalConfig => {
if (!analyzerConfig.config) {
analyzerConfig.config = {};
let baseConfigName = definition ? definition.baseConfig : undefined;
return this.AnalyzerService.getBaseConfig(baseConfigName)
.then(baseConfig => {
let configs = {
globalConfig: {},
baseConfig: baseConfig,
analyzerConfig: {
config: {}
}
};

return this.AnalyzerService.getConfiguration('global').then(
globalConfig => {
configs.globalConfig = globalConfig;

_.merge(analyzerConfig.config, globalConfig.config);
if (!baseConfig.config) {
baseConfig.config = {};
}

return analyzerConfig;
})
)
.then(analyzerConfig => {
_.merge(
configs.analyzerConfig.config,
configs.baseConfig.config,
configs.globalConfig.config
);

return configs;
}
);
})
.then(configs => {
let modal = this.$uibModal.open({
animation: true,
controller: AnalyzerEditController,
Expand All @@ -75,7 +77,9 @@ export default class OrganizationAnalyzersController {
size: 'lg',
resolve: {
definition: () => definition,
configuration: () => analyzerConfig,
globalConfig: () => configs.globalConfig,
baseConfig: () => configs.baseConfig,
configuration: () => configs.analyzerConfig,
analyzer: () => angular.copy(analyzer),
mode: () => mode
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,10 @@ const organizationsModule = angular
templateUrl: analyzerConfigFormTpl,
bindings: {
analyzer: '=',
definition: '='
definition: '=',
configuration: '<',
globalConfig: '<',
baseConfig: '<'
}
})
.service('OrganizationService', organizationService);
Expand Down
15 changes: 15 additions & 0 deletions www/src/app/pages/analyzers/analyzers.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,21 @@ export default class AnalyzerService {
return defer.promise;
}

getBaseConfig(baseConfig) {
let defer = this.$q.defer();

if (baseConfig) {
this.getConfiguration(baseConfig).then(
cfg => defer.resolve(cfg),
() => defer.resolve({})
);
} else {
defer.resolve({});
}

return defer.promise;
}

getConfiguration(name) {
let defer = this.$q.defer();

Expand Down

0 comments on commit df80aae

Please sign in to comment.