ShowCPEmailInfo

Get email info from Check Point Smart API.

python · Check Point Harmony Email and Collaboration (HEC)

Details

IDShowCPEmailInfo
Languagepython
From Version6.9.0
Docker Imagedemisto/python3:3.12.13.10116658

README

Get email info from Check Point Smart API.

Script Data


Name Description
Script Type python3
Cortex XSOAR Version 6.9.0

Dependencies


This script uses the following commands and scripts.

  • checkpointhec-get-email-info

Inputs


There are no inputs for this script.

Outputs


There are no outputs for this script.

from CommonServerPython import *

EMAIL_INFO_FIELD = "checkpointhecemailinfo"
FIELDS_TO_SHOW = {
    "fromEmail",
    "to",
    "replyToEmail",
    "replyToNickname",
    "recipients",
    "subject",
    "cc",
    "bcc",
    "isRead",
    "received",
    "isDeleted",
    "isIncoming",
    "isOutgoing",
    "internetMessageId",
    "isUserExposed",
    "emailLinks",
}


def dict_to_md(info: dict) -> str:
    lines = ["|field|value|", "|-|-|"]
    for key, value in info.items():
        if key in FIELDS_TO_SHOW and value not in (None, []):
            _value = ", ".join(value) if isinstance(value, list) else value
            lines.append(f"|{key}|{_value}|")
    return "\n".join(lines)


def get_email_info(entity: str, instance: str) -> tuple[bool, str]:
    email_info = demisto.executeCommand("checkpointhec-get-entity", {"entity": entity, "using": instance})[0]["Contents"]

    if isinstance(email_info, str):
        return False, email_info

    return True, dict_to_md(email_info)


def main():  # pragma: no cover
    try:
        incident = demisto.incident()
        instance = incident["sourceInstance"]
        custom_fields = incident["CustomFields"]
        if not (email_info := custom_fields.get(EMAIL_INFO_FIELD)):
            entity = custom_fields.get("checkpointhecentity")
            success, email_info = get_email_info(entity, instance)
            if not success:
                raise Exception(email_info)

            demisto.executeCommand(
                "setIncident",
                {
                    "customFields": json.dumps(
                        {
                            EMAIL_INFO_FIELD: email_info,
                        }
                    )
                },
            )

        return_results(
            {
                "ContentsFormat": EntryFormat.MARKDOWN,
                "Type": EntryType.NOTE,
                "Contents": email_info,
            }
        )
    except Exception as ex:
        demisto.error(traceback.format_exc())
        return_error(f"Failed to execute BaseScript. Error: {ex!s}")


if __name__ in ("__main__", "__builtin__", "builtins"):  # pragma: no cover
    main()