Merge pull request #646 from guardicore/635/scanned-servers-summary-section

Added a short summary sentence over each table in the security report
This commit is contained in:
Shay Nehmad 2020-05-13 15:39:56 +03:00 committed by GitHub
commit e15923103c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 74 additions and 37 deletions

View File

@ -407,18 +407,23 @@ class ReportPageComponent extends AuthComponent {
<div style={{position: 'relative', height: '80vh'}}> <div style={{position: 'relative', height: '80vh'}}>
<ReactiveGraph graph={this.state.graph} options={getOptions(this.state.nodeStateList)}/> <ReactiveGraph graph={this.state.graph} options={getOptions(this.state.nodeStateList)}/>
</div> </div>
<div style={{marginBottom: '20px'}}>
<BreachedServers data={this.state.report.glance.exploited}/>
</div>
<div style={{marginBottom: '20px'}}>
<PostBreach data={this.state.report.glance.scanned}/>
</div>
<div style={{marginBottom: '20px'}}> <div style={{marginBottom: '20px'}}>
<ScannedServers data={this.state.report.glance.scanned}/> <ScannedServers data={this.state.report.glance.scanned}/>
</div> </div>
<div style={{marginBottom: '20px'}}>
<BreachedServers data={this.state.report.glance.exploited}/>
</div>
<div style={{marginBottom: '20px'}}>
<PostBreach data={this.state.report.glance.scanned}/>
</div>
<div style={{position: 'relative', height: '80vh'}}> <div style={{position: 'relative', height: '80vh'}}>
{this.generateReportPthMap()} {this.generateReportPthMap()}
</div> </div>
<div style={{marginBottom: '20px'}}> <div style={{marginBottom: '20px'}}>
<StolenPasswords data={this.state.report.glance.stolen_creds.concat(this.state.report.glance.ssh_keys)}/> <StolenPasswords data={this.state.report.glance.stolen_creds.concat(this.state.report.glance.ssh_keys)}/>
</div> </div>

View File

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import ReactTable from 'react-table' import ReactTable from 'react-table';
import Pluralize from 'pluralize';
let renderArray = function (val) { let renderArray = function (val) {
return <div>{val.map(x => <div>{x}</div>)}</div>; return <div>{val.map(x => <div>{x}</div>)}</div>;
@ -34,14 +35,20 @@ class BreachedServersComponent extends React.Component {
let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length; let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length;
let showPagination = this.props.data.length > pageSize; let showPagination = this.props.data.length > pageSize;
return ( return (
<div className="data-table-container"> <>
<ReactTable <p>
columns={columns} The Monkey successfully breached <span
data={this.props.data} className="label label-danger">{this.props.data.length}</span> {Pluralize('machine', this.props.data.length)}:
showPagination={showPagination} </p>
defaultPageSize={defaultPageSize} <div className="data-table-container">
/> <ReactTable
</div> columns={columns}
data={this.props.data}
showPagination={showPagination}
defaultPageSize={defaultPageSize}
/>
</div>
</>
); );
} }
} }

View File

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import ReactTable from 'react-table' import ReactTable from 'react-table';
import Pluralize from 'pluralize';
let renderArray = function (val) { let renderArray = function (val) {
return <span>{val.map(x => <span key={x}> {x}</span>)}</span>; return <span>{val.map(x => <span key={x}> {x}</span>)}</span>;
@ -62,19 +63,26 @@ class PostBreachComponent extends React.Component {
}); });
let defaultPageSize = pbaMachines.length > pageSize ? pageSize : pbaMachines.length; let defaultPageSize = pbaMachines.length > pageSize ? pageSize : pbaMachines.length;
let showPagination = pbaMachines > pageSize; let showPagination = pbaMachines > pageSize;
const pbaCount = pbaMachines.reduce((accumulated, pbaMachine) => accumulated+pbaMachine["pba_results"].length, 0);
return ( return (
<div className="data-table-container"> <>
<ReactTable <p>
columns={columns} The Monkey performed <span
data={pbaMachines} className="label label-danger">{pbaCount}</span> post-breach {Pluralize('action', pbaCount)} on <span
showPagination={showPagination} className="label label-warning">{pbaMachines.length}</span> {Pluralize('machine', pbaMachines.length)}:
defaultPageSize={defaultPageSize} </p>
SubComponent={row => { <div className="data-table-container">
return renderDetails(row.original.pba_results); <ReactTable
}} columns={columns}
/> data={pbaMachines}
</div> showPagination={showPagination}
defaultPageSize={defaultPageSize}
SubComponent={row => {
return renderDetails(row.original.pba_results);
}}
/>
</div>
</>
); );
} }
} }

View File

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import ReactTable from 'react-table' import ReactTable from 'react-table';
import Pluralize from 'pluralize';
let renderArray = function (val) { let renderArray = function (val) {
return <div>{val.map(x => <div>{x}</div>)}</div>; return <div>{val.map(x => <div>{x}</div>)}</div>;
@ -32,17 +33,33 @@ class ScannedServersComponent extends React.Component {
} }
render() { render() {
let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length; let defaultPageSize = this.props.data.length > pageSize ? pageSize : this.props.data.length;
let showPagination = this.props.data.length > pageSize; 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 ( return (
<div className="data-table-container"> <>
<ReactTable <p>
columns={columns} The Monkey discovered
data={this.props.data} <span className="label label-danger">{scannedServicesAmount}</span>
showPagination={showPagination} open {Pluralize('service', scannedServicesAmount)}
defaultPageSize={defaultPageSize} on
/> <span className="label label-warning">{scannedMachinesCount}</span>
</div> {Pluralize('machine', scannedMachinesCount)}:
</p>
<div className="data-table-container">
<ReactTable
columns={columns}
data={this.props.data}
showPagination={showPagination}
defaultPageSize={defaultPageSize}
/>
</div>
</>
); );
} }
} }