Common: Use IJSONSerializable interface for credentials

This commit is contained in:
vakarisz 2022-07-12 11:58:42 +03:00
parent 4bbcffabd3
commit 43387dc1a5
3 changed files with 13 additions and 6 deletions

View File

@ -7,6 +7,7 @@ from typing import Any, Mapping, MutableMapping, Sequence, Tuple
from marshmallow import Schema, fields, post_load, pre_dump from marshmallow import Schema, fields, post_load, pre_dump
from marshmallow.exceptions import MarshmallowError from marshmallow.exceptions import MarshmallowError
from ..utils import IJSONSerializable
from . import ( from . import (
CredentialComponentType, CredentialComponentType,
InvalidCredentialComponentError, InvalidCredentialComponentError,
@ -116,7 +117,7 @@ class CredentialsSchema(Schema):
@dataclass(frozen=True) @dataclass(frozen=True)
class Credentials: class Credentials(IJSONSerializable):
identities: Tuple[ICredentialComponent] identities: Tuple[ICredentialComponent]
secrets: Tuple[ICredentialComponent] secrets: Tuple[ICredentialComponent]
@ -141,8 +142,8 @@ class Credentials:
except MarshmallowError as err: except MarshmallowError as err:
raise InvalidCredentialsError(str(err)) raise InvalidCredentialsError(str(err))
@staticmethod @classmethod
def from_json(credentials: str) -> Credentials: def from_json(cls, credentials: str) -> Credentials:
""" """
Construct a Credentials object from a JSON string Construct a Credentials object from a JSON string
@ -180,8 +181,8 @@ class Credentials:
credentials_list = json.loads(credentials_array_json) credentials_list = json.loads(credentials_array_json)
return [Credentials.from_mapping(c) for c in credentials_list] return [Credentials.from_mapping(c) for c in credentials_list]
@staticmethod @classmethod
def to_json(credentials: Credentials) -> str: def to_json(cls, credentials: Credentials) -> str:
""" """
Serialize a Credentials object to JSON Serialize a Credentials object to JSON

View File

@ -1 +1,2 @@
from .timer import Timer from .timer import Timer
from .IJSONSerializable import IJSONSerializable

View File

@ -4,7 +4,6 @@ dead or is kept deliberately. Referencing these in a file like this makes sure t
Vulture doesn't mark these as dead again. Vulture doesn't mark these as dead again.
""" """
from infection_monkey.exploit.log4shell_utils.ldap_server import LDAPServerFactory from infection_monkey.exploit.log4shell_utils.ldap_server import LDAPServerFactory
from monkey_island.cc import app
from monkey_island.cc.models import Report from monkey_island.cc.models import Report
from monkey_island.cc.models.networkmap import Arc, NetworkMap from monkey_island.cc.models.networkmap import Arc, NetworkMap
from monkey_island.cc.repository.attack.IMitigationsRepository import IMitigationsRepository from monkey_island.cc.repository.attack.IMitigationsRepository import IMitigationsRepository
@ -207,6 +206,12 @@ _make_simulation # unused method (monkey/monkey_island/cc/models/simulation.py:
# TODO DELETE AFTER RESOURCE REFACTORING # TODO DELETE AFTER RESOURCE REFACTORING
# https://github.com/jendrikseipp/vulture/issues/287
# Both happen in common\utils\IJSONSerializable.py
json_string
class_object
NetworkMap NetworkMap
Arc.dst_machine Arc.dst_machine
IMitigationsRepository.get_mitigations IMitigationsRepository.get_mitigations