forked from p34709852/monkey
Fix bug in processing tunnel edges
This commit is contained in:
parent
22ff980923
commit
27d9e8bcee
|
@ -46,9 +46,8 @@ class Monkey(flask_restful.Resource):
|
||||||
update['$set']['config_error'] = monkey_json['config_error']
|
update['$set']['config_error'] = monkey_json['config_error']
|
||||||
|
|
||||||
if 'tunnel' in monkey_json:
|
if 'tunnel' in monkey_json:
|
||||||
host = monkey_json['tunnel'].split(":")[-2].replace("//", "")
|
tunnel_host_ip = monkey_json['tunnel'].split(":")[-2].replace("//", "")
|
||||||
tunnel_host_id = NodeService.get_monkey_by_ip(host)["_id"]
|
NodeService.set_monkey_tunnel(monkey["_id"], tunnel_host_ip)
|
||||||
NodeService.set_monkey_tunnel(monkey["_id"], tunnel_host_id)
|
|
||||||
|
|
||||||
return mongo.db.monkey.update({"_id": monkey["_id"]}, update, upsert=False)
|
return mongo.db.monkey.update({"_id": monkey["_id"]}, update, upsert=False)
|
||||||
|
|
||||||
|
@ -98,10 +97,9 @@ class Monkey(flask_restful.Resource):
|
||||||
else:
|
else:
|
||||||
monkey_json['parent'] = db_monkey.get('parent') + [parent_to_add]
|
monkey_json['parent'] = db_monkey.get('parent') + [parent_to_add]
|
||||||
|
|
||||||
tunnel_host_id = None
|
tunnel_host_ip = None
|
||||||
if 'tunnel' in monkey_json:
|
if 'tunnel' in monkey_json:
|
||||||
host = monkey_json['tunnel'].split(":")[-2].replace("//", "")
|
tunnel_host_ip = monkey_json['tunnel'].split(":")[-2].replace("//", "")
|
||||||
tunnel_host_id = NodeService.get_monkey_by_ip(host)["_id"]
|
|
||||||
monkey_json.pop('tunnel')
|
monkey_json.pop('tunnel')
|
||||||
|
|
||||||
mongo.db.monkey.update({"guid": monkey_json["guid"]},
|
mongo.db.monkey.update({"guid": monkey_json["guid"]},
|
||||||
|
@ -112,8 +110,8 @@ class Monkey(flask_restful.Resource):
|
||||||
|
|
||||||
new_monkey_id = mongo.db.monkey.find_one({"guid": monkey_json["guid"]})["_id"]
|
new_monkey_id = mongo.db.monkey.find_one({"guid": monkey_json["guid"]})["_id"]
|
||||||
|
|
||||||
if tunnel_host_id is not None:
|
if tunnel_host_ip is not None:
|
||||||
NodeService.set_monkey_tunnel(new_monkey_id, tunnel_host_id)
|
NodeService.set_monkey_tunnel(new_monkey_id, tunnel_host_ip)
|
||||||
|
|
||||||
existing_node = mongo.db.node.find_one({"ip_addresses": {"$in": monkey_json["ip_addresses"]}})
|
existing_node = mongo.db.node.find_one({"ip_addresses": {"$in": monkey_json["ip_addresses"]}})
|
||||||
|
|
||||||
|
|
|
@ -89,9 +89,8 @@ class Telemetry(flask_restful.Resource):
|
||||||
def process_tunnel_telemetry(self, telemetry_json):
|
def process_tunnel_telemetry(self, telemetry_json):
|
||||||
monkey_id = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])["_id"]
|
monkey_id = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])["_id"]
|
||||||
if telemetry_json['data']['proxy'] is not None:
|
if telemetry_json['data']['proxy'] is not None:
|
||||||
host = telemetry_json['data']['proxy'].split(":")[-2].replace("//", "")
|
tunnel_host_ip = telemetry_json['data']['proxy'].split(":")[-2].replace("//", "")
|
||||||
tunnel_host_id = NodeService.get_monkey_by_ip(host)["_id"]
|
NodeService.set_monkey_tunnel(monkey_id, tunnel_host_ip)
|
||||||
NodeService.set_monkey_tunnel(monkey_id, tunnel_host_id)
|
|
||||||
else:
|
else:
|
||||||
NodeService.unset_all_monkey_tunnels(monkey_id)
|
NodeService.unset_all_monkey_tunnels(monkey_id)
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ class EdgeService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def edge_to_displayed_edge(edge):
|
def edge_to_displayed_edge(edge):
|
||||||
services = {}
|
services = []
|
||||||
os = {}
|
os = {}
|
||||||
exploits = []
|
exploits = []
|
||||||
if len(edge["scans"]) > 0:
|
if len(edge["scans"]) > 0:
|
||||||
|
@ -52,6 +52,7 @@ class EdgeService:
|
||||||
exploit_container["end_timestamp"] = new_exploit["timestamp"]
|
exploit_container["end_timestamp"] = new_exploit["timestamp"]
|
||||||
|
|
||||||
displayed_edge = EdgeService.edge_to_net_edge(edge)
|
displayed_edge = EdgeService.edge_to_net_edge(edge)
|
||||||
|
|
||||||
displayed_edge["ip_address"] = edge["ip_address"]
|
displayed_edge["ip_address"] = edge["ip_address"]
|
||||||
displayed_edge["services"] = services
|
displayed_edge["services"] = services
|
||||||
displayed_edge["os"] = os
|
displayed_edge["os"] = os
|
||||||
|
|
|
@ -148,7 +148,8 @@ class NodeService:
|
||||||
upsert=False)
|
upsert=False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_monkey_tunnel(monkey_id, tunnel_host_id):
|
def set_monkey_tunnel(monkey_id, tunnel_host_ip):
|
||||||
|
tunnel_host_id = NodeService.get_monkey_by_ip(tunnel_host_ip)["_id"]
|
||||||
NodeService.unset_all_monkey_tunnels(monkey_id)
|
NodeService.unset_all_monkey_tunnels(monkey_id)
|
||||||
mongo.db.monkey.update(
|
mongo.db.monkey.update(
|
||||||
{"_id": monkey_id},
|
{"_id": monkey_id},
|
||||||
|
@ -156,7 +157,7 @@ class NodeService:
|
||||||
upsert=False)
|
upsert=False)
|
||||||
tunnel_edge = EdgeService.get_or_create_edge(monkey_id, tunnel_host_id)
|
tunnel_edge = EdgeService.get_or_create_edge(monkey_id, tunnel_host_id)
|
||||||
mongo.db.edge.update({"_id": tunnel_edge["_id"]},
|
mongo.db.edge.update({"_id": tunnel_edge["_id"]},
|
||||||
{'$set': {'tunnel': True}},
|
{'$set': {'tunnel': True, 'ip_address': tunnel_host_ip}},
|
||||||
upsert=False)
|
upsert=False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue