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..3ea23a075 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 ReactTable from 'react-table'; +import Pluralize from 'pluralize'; let renderArray = function (val) { return
{val.map(x =>
{x}
)}
; @@ -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('machine', 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..c482fb992 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 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 pbaCount = pbaMachines.reduce((accumulated, pbaMachine) => accumulated+pbaMachine["pba_results"].length, 0); return ( -
- { - return renderDetails(row.original.pba_results); - }} - /> -
- + <> +

+ The Monkey performed {pbaCount} post-breach {Pluralize('action', pbaCount)} on {pbaMachines.length} {Pluralize('machine', 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..644d77f54 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 ReactTable from 'react-table'; +import Pluralize from 'pluralize'; let renderArray = function (val) { return
{val.map(x =>
{x}
)}
; @@ -32,17 +33,33 @@ 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 scannedMachinesCount = this.props.data.length; + const reducerFromScannedServerToServicesAmount = (accumulated, scannedServer) => accumulated + scannedServer["services"].length; + const scannedServicesAmount = this.props.data.reduce(reducerFromScannedServerToServicesAmount, 0); + return ( -
- -
+ <> +

+ The Monkey discovered + {scannedServicesAmount} + open {Pluralize('service', scannedServicesAmount)} + on + {scannedMachinesCount} + {Pluralize('machine', scannedMachinesCount)}: +

+
+ +
+ ); } }