blob: c2121b48dbeb5cb651473866645a104ef154de64 [file]
import marshmallow as ma
from app.utility.base_object import BaseObject
class InstructionSchema(ma.Schema):
id = ma.fields.String()
sleep = ma.fields.Int()
command = ma.fields.String()
executor = ma.fields.String()
timeout = ma.fields.Int()
payloads = ma.fields.List(ma.fields.String())
deadman = ma.fields.Boolean()
uploads = ma.fields.List(ma.fields.Dict(keys=ma.fields.String(), values=ma.fields.String()))
delete_payload = ma.fields.Bool(load_default=None)
@ma.post_load
def build_instruction(self, data, **_):
return Instruction(**data)
class Instruction(BaseObject):
schema = InstructionSchema()
@property
def display(self):
return self.clean(dict(id=self.id, sleep=self.sleep, command=self.command, executor=self.executor,
timeout=self.timeout, payloads=self.payloads, uploads=self.uploads, deadman=self.deadman,
delete_payload=self.delete_payload))
def __init__(self, id, command, executor, payloads=None, uploads=None, sleep=0, timeout=60, deadman=False, delete_payload=True):
super().__init__()
self.id = id
self.sleep = sleep
self.command = command
self.executor = executor
self.timeout = timeout
self.payloads = payloads if payloads else []
self.uploads = uploads if uploads else []
self.deadman = deadman
self.delete_payload = delete_payload