diff --git a/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js b/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js
index e25b7f126..d6891b5bb 100644
--- a/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js
+++ b/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js
@@ -407,18 +407,23 @@ class ReportPageComponent extends AuthComponent {
-
-
-
-
+
+
+
+
+
+
+
+
{this.generateReportPthMap()}
+
diff --git a/monkey/monkey_island/cc/ui/src/components/report-components/security/BreachedServers.js b/monkey/monkey_island/cc/ui/src/components/report-components/security/BreachedServers.js
index 4eeb1f971..1b2efcd06 100644
--- a/monkey/monkey_island/cc/ui/src/components/report-components/security/BreachedServers.js
+++ b/monkey/monkey_island/cc/ui/src/components/report-components/security/BreachedServers.js
@@ -1,5 +1,6 @@
import React from 'react';
import ReactTable from 'react-table'
+import Pluralize from "pluralize";
let renderArray = function (val) {
return ;
@@ -34,14 +35,20 @@ class BreachedServersComponent extends React.Component {
let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length;
let showPagination = this.props.data.length > pageSize;
return (
-
-
-
+ <>
+
+ The Monkey successfully breached {this.props.data.length} {Pluralize('machines', this.props.data.length)}:
+
+
+
+
+ >
);
}
}
diff --git a/monkey/monkey_island/cc/ui/src/components/report-components/security/PostBreach.js b/monkey/monkey_island/cc/ui/src/components/report-components/security/PostBreach.js
index b0fe5fa9e..2aa772db5 100644
--- a/monkey/monkey_island/cc/ui/src/components/report-components/security/PostBreach.js
+++ b/monkey/monkey_island/cc/ui/src/components/report-components/security/PostBreach.js
@@ -1,5 +1,6 @@
import React from 'react';
import ReactTable from 'react-table'
+import Pluralize from 'pluralize'
let renderArray = function (val) {
return {val.map(x => {x})};
@@ -62,19 +63,26 @@ class PostBreachComponent extends React.Component {
});
let defaultPageSize = pbaMachines.length > pageSize ? pageSize : pbaMachines.length;
let showPagination = pbaMachines > pageSize;
+ const howManyPBAs = pbaMachines.reduce((accumulated, pbaMachine) => accumulated+pbaMachine["pba_results"].length,0)
return (
-
- {
- return renderDetails(row.original.pba_results);
- }}
- />
-
-
+ <>
+
+ The Monkey performed {howManyPBAs} post-breach {Pluralize('actions', howManyPBAs)} on {pbaMachines.length} {Pluralize('machines', pbaMachines.length)}:
+
+
+ {
+ return renderDetails(row.original.pba_results);
+ }}
+ />
+
+ >
);
}
}
diff --git a/monkey/monkey_island/cc/ui/src/components/report-components/security/ScannedServers.js b/monkey/monkey_island/cc/ui/src/components/report-components/security/ScannedServers.js
index 7a4495da3..f68415a3a 100644
--- a/monkey/monkey_island/cc/ui/src/components/report-components/security/ScannedServers.js
+++ b/monkey/monkey_island/cc/ui/src/components/report-components/security/ScannedServers.js
@@ -1,5 +1,6 @@
import React from 'react';
import ReactTable from 'react-table'
+import Pluralize from 'pluralize'
let renderArray = function (val) {
return ;
@@ -32,17 +33,30 @@ class ScannedServersComponent extends React.Component {
}
render() {
+
let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length;
let showPagination = this.props.data.length > pageSize;
+
+ const howManyScannedMachines = this.props.data.length;
+ const reducerFromScannedServerToServicesAmount = (accumulated, scannedServer) => accumulated + scannedServer["services"].length;
+ const howManyScannedServices = this.props.data.reduce(reducerFromScannedServerToServicesAmount, 0);
+
return (
-
-
-
+ <>
+
+ The Monkey discovered {howManyScannedServices} open {Pluralize('services', howManyScannedServices)} on {howManyScannedMachines} {Pluralize('machines', howManyScannedMachines)}:
+
+
+
+
+ >
);
}
}