Island: Remove `keepalive`

Fixes #1783
This commit is contained in:
Shreya Malviya 2022-03-17 14:14:51 +05:30 committed by Mike Salvatore
parent 87a742186a
commit ed5e686b04
5 changed files with 1 additions and 30 deletions

View File

@ -44,7 +44,6 @@ class Monkey(Document):
ip_addresses = ListField(StringField())
networks = ListField()
launch_time = FloatField()
keepalive = DateTimeField()
modifytime = DateTimeField()
# TODO make "parent" an embedded document, so this can be removed and the schema explained (
# and validated) verbosely.

View File

@ -15,7 +15,6 @@ class ClientRun(flask_restful.Resource):
monkey = NodeService.get_monkey_island_monkey()
else:
monkey = NodeService.get_monkey_by_ip(client_ip)
NodeService.update_dead_monkeys()
if monkey is not None:
is_monkey_running = not monkey["dead"]
else:

View File

@ -12,7 +12,6 @@ from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService
class LocalRun(flask_restful.Resource):
@jwt_required
def get(self):
NodeService.update_dead_monkeys()
island_monkey = NodeService.get_monkey_island_monkey()
if island_monkey is not None:
is_monkey_running = not Monkey.get_single_monkey_by_id(island_monkey["_id"]).is_dead()

View File

@ -1,7 +1,6 @@
import json
from datetime import datetime
import dateutil.parser
import flask_restful
from flask import request
@ -21,7 +20,6 @@ class Monkey(flask_restful.Resource):
# Used by monkey. can't secure.
def get(self, guid=None, config_format=None, **kw):
NodeService.update_dead_monkeys() # refresh monkeys status
if not guid:
guid = request.args.get("guid")
@ -45,10 +43,6 @@ class Monkey(flask_restful.Resource):
monkey_json = json.loads(request.data)
update = {"$set": {"modifytime": datetime.now()}}
monkey = NodeService.get_monkey_by_guid(guid)
if "keepalive" in monkey_json:
update["$set"]["keepalive"] = dateutil.parser.parse(monkey_json["keepalive"])
else:
update["$set"]["keepalive"] = datetime.now()
if "config" in monkey_json:
update["$set"]["config"] = monkey_json["config"]
if "config_error" in monkey_json:
@ -70,10 +64,6 @@ class Monkey(flask_restful.Resource):
with agent_killing_mutex:
monkey_json = json.loads(request.data)
monkey_json["dead"] = False
if "keepalive" in monkey_json:
monkey_json["keepalive"] = dateutil.parser.parse(monkey_json["keepalive"])
else:
monkey_json["keepalive"] = datetime.now()
monkey_json["modifytime"] = datetime.now()

View File

@ -1,5 +1,5 @@
import socket
from datetime import datetime, timedelta
from datetime import datetime
from bson import ObjectId
@ -295,22 +295,6 @@ class NodeService:
def set_node_propagated(node_id):
mongo.db.node.update({"_id": node_id}, {"$set": {"propagated": True}})
@staticmethod
def update_dead_monkeys():
# Update dead monkeys only if no living monkey transmitted keepalive in the last 10 minutes
if mongo.db.monkey.find_one(
{"dead": {"$ne": True}, "keepalive": {"$gte": datetime.now() - timedelta(minutes=10)}}
):
return
# config.alive is changed to true to cancel the force kill of dead monkeys
mongo.db.monkey.update(
{"keepalive": {"$lte": datetime.now() - timedelta(minutes=10)}, "dead": {"$ne": True}},
{"$set": {"dead": True, "config.alive": True, "modifytime": datetime.now()}},
upsert=False,
multi=True,
)
@staticmethod
def is_any_monkey_alive():
all_monkeys = models.Monkey.objects()