Added report types: zero_trust and general

Also moved the report resources to their own folder
This commit is contained in:
Shay Nehmad 2019-08-01 14:58:55 +03:00
parent 287115dded
commit 444144aecc
5 changed files with 56 additions and 16 deletions

View File

@ -23,7 +23,7 @@ from monkey_island.cc.resources.monkey_download import MonkeyDownload
from monkey_island.cc.resources.netmap import NetMap
from monkey_island.cc.resources.node import Node
from monkey_island.cc.resources.remote_run import RemoteRun
from monkey_island.cc.resources.report import Report
from monkey_island.cc.resources.reporting.report import Report
from monkey_island.cc.resources.root import Root
from monkey_island.cc.resources.telemetry import Telemetry
from monkey_island.cc.resources.telemetry_feed import TelemetryFeed
@ -122,7 +122,9 @@ def init_api_resources(api):
api.add_resource(NetMap, '/api/netmap', '/api/netmap/')
api.add_resource(Edge, '/api/netmap/edge', '/api/netmap/edge/')
api.add_resource(Node, '/api/netmap/node', '/api/netmap/node/')
api.add_resource(Report, '/api/report', '/api/report/')
# report_type: zero_trust or general
api.add_resource(Report, '/api/report/<string:report_type>')
api.add_resource(TelemetryFeed, '/api/telemetry-feed', '/api/telemetry-feed/')
api.add_resource(Log, '/api/log', '/api/log/')
api.add_resource(IslandLog, '/api/log/island/download', '/api/log/island/download/')

View File

@ -1,13 +0,0 @@
import flask_restful
from monkey_island.cc.auth import jwt_required
from monkey_island.cc.services.reporting.report import ReportService
__author__ = "itay.mizeretz"
class Report(flask_restful.Resource):
@jwt_required()
def get(self):
return ReportService.get_report()

View File

@ -0,0 +1,51 @@
import httplib
import flask_restful
from flask import jsonify
from monkey_island.cc.auth import jwt_required
from monkey_island.cc.services.reporting.report import ReportService
ZERO_TRUST_REPORT_TYPE = "zero_trust"
GENERAL_REPORT_TYPE = "general"
REPORT_TYPES = [GENERAL_REPORT_TYPE, ZERO_TRUST_REPORT_TYPE]
__author__ = "itay.mizeretz"
class Report(flask_restful.Resource):
@jwt_required()
def get(self, report_type):
if report_type == GENERAL_REPORT_TYPE:
return ReportService.get_report()
elif report_type == ZERO_TRUST_REPORT_TYPE:
fakedict = {
"are_all_monkeys_done": False,
"findings": [
{
"test": "Monkey 8 found a machine with no AV software active.",
"pillars": ["Devices"],
"events": [
{
"timestamp": "2019-08-01 14:48:46.112000",
"message": "log1"
}, {
"timestamp": "2019-08-01 14:48:42.112000",
"message": "log2"
}]
},
{
"test": "Monkey 6 successfully exploited machine XXX with shellshock.",
"pillars": ["Devices", "Networks"],
"events": [
{
"timestamp": "2019-08-01 14:48:46.112000",
"message": "log3"
}]
}
]
}
return jsonify(fakedict)
flask_restful.abort(httplib.NOT_FOUND)

View File

@ -117,7 +117,7 @@ class ReportPageComponent extends AuthComponent {
getReportFromServer(res) {
if (res['completed_steps']['run_monkey']) {
this.authFetch('/api/report')
this.authFetch('/api/report/general')
.then(res => res.json())
.then(res => {
this.setState({