Skip to content
This repository was archived by the owner on Mar 29, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions minion/frontend/static/css/minion.css
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,19 @@ body {
text-shadow: 2px 2px 2px #021124;
}

#issue-search input {
width: 30%;
}

#issue-search select {
width: 40%;
}

.issues > h3 {
display: inline-block;
}

.issues > span{
display: inline-block;
text-align: right;
}
18 changes: 17 additions & 1 deletion minion/frontend/static/js/minion-main.js
Original file line number Diff line number Diff line change
Expand Up @@ -525,20 +525,24 @@ app.controller("ScanController", function($scope, $routeParams, $http, $location
var issueCounts = {high: 0, medium: 0, low: 0, info: 0, error: 0};
_.each(scan.sessions, function (session) {
_.each(session.issues, function (issue) {
issue.session = session;
issue.plugin = session.plugin;
issues.push(issue);
switch (issue.Severity) {
case "High":
issue.position = 4;
issueCounts.high++;
break;
case "Medium":
issue.position = 3;
issueCounts.medium++;
break;
case "Low":
issue.position = 2;
issueCounts.low++;
break;
case "Informational":
case "Info":
issue.position = 1;
issueCounts.info++;
break;
case "Error":
Expand Down Expand Up @@ -636,6 +640,18 @@ app.filter('scan_datetime_fromnow', function () {
};
});

app.filter('site_label', function () {
return function(input, list, index) {
if (index != 0 && (list[index-1].target == list[index].target)){
input = '-';
}
else{
input = list[index].target;
}
return input;
};
});

app.filter('moment_duration', function () {
return function(input, timenow) {
var start, end;
Expand Down
27 changes: 24 additions & 3 deletions minion/frontend/static/partials/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,29 @@ <h2>Sites & Scans
<select ng-model="group" ng-options="group for group in groups" ng-change="changeGroup()"></select>
</div>
</h2>
<span class="pull-right">
Search: <input ng-model="query"> Sort by:
<select ng-model="orderOption">
<option value="plan">Plan (ascending)</option>
<option value="-plan">Plan (descending)</option>
<option value="target">Site (ascending)</option>
<option value="-target">Site (descending)</option>
<option value="scan.created">Created on (ascending)</option>
<option value="-scan.created">Created on (descending)</option>
<option value="scan.state">State (ascending)</option>
<option value="-scan.state">State (descending)</option>
<option value="scan.issues.high">High issues (ascending)</option>
<option value="-scan.issues.high">High issues (descending)</option>
<option value="scan.issues.medium">Medium issues (ascending)</option>
<option value="-scan.issues.medium">Medium issues (descending)</option>
<option value="scan.issues.low">Low issues (ascending)</option>
<option value="-scan.issues.low">Low issues (descending)</option>
<option value="scan.issues.info">Info issues (ascending)</option>
<option value="-scan.issues.info">Info issues (descending)</option>
</select>
</span>

<table class="table">
<table class="table" id="home-table">
<thead>
<tr>
<th>Site</th>
Expand All @@ -45,8 +66,8 @@ <h2>Sites & Scans
<th></th>
</tr>
</thead>
<tr ng-repeat="r in report">
<td><a href="{{r.label}}" target="_blank">{{r.label}}</a></td>
<tr ng-repeat="r in (orderedReport = (report | filter:query | orderBy: orderOption))">
<td><a href="{{r.label}}" target="_blank">{{r.label | site_label:orderedReport:$index}}</a></td>
<td><a ng-href="#!/plan/{{r.plan}}">{{r.plan}}</a></td>
<td>{{(r.scan.created | scan_datetime) || "-" }}</td>
<td>{{r.scan.state || "-"}}</td>
Expand Down
43 changes: 27 additions & 16 deletions minion/frontend/static/partials/scan.html
Original file line number Diff line number Diff line change
Expand Up @@ -73,22 +73,33 @@ <h3>Issue Counts</h3>
<p><strong>This scan was aborted:</strong> {{scan.failure.message}}</p>
</div>

<h3>Found Issues</h3>

<table class="table table-bordered">
<thead>
<tr>
<th>Severity</th>
<th>Plugin</th>
<th>Risk Summary</th>
</tr>
</thead>
<tr ng-repeat="issue in issues">
<td><span class="label severity-{{issue.Severity}} minion-severity-label">{{issue.Severity}}</span></td>
<td>{{issue.session.plugin.name}} (v{{issue.session.plugin.version}})</td>
<td><a ng-href="#!/scan/{{scan.id}}/issue/{{issue.Id}}">{{issue.Summary}}</a></td>
</tr>
</table>
<div ng-show="issues.length > 0" class="issues">

<h3>Found Issues</h3>
<span id="issue-search">
Search: <input ng-model="query"> Sort by:
<select ng-model="orderOption">
<option value="Summary">Summary (ascending)</option>
<option value="-Summary">Summary (descending)</option>
<option value="position">Severity (ascending)</option>
<option value="-position">Severity (descending)</option>
</select>
</span>

<table class="table table-bordered">
<thead>
<tr>
<th>Severity</th>
<th>Plugin</th>
<th>Risk Summary</th>
</tr>
</thead>
<tr ng-repeat="issue in issues | filter:query | orderBy: orderOption">
<td><span class="label severity-{{issue.Severity}} minion-severity-label">{{issue.Severity}}</span></td>
<td>{{issue.plugin.name}} (v{{issue.plugin.version}})</td>
<td><a ng-href="#!/scan/{{scan.id}}/issue/{{issue.Id}}">{{issue.Summary}}</a></td>
</tr>
</table>

<h3>Workflow</h3>

Expand Down