From a6930be86248f91182ce0220df3a50cbb5d84f5d Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 25 Aug 2022 10:57:17 +0200 Subject: [PATCH] new: [expansion:jinja_template_rendering] Added new module to rendre a jinja template based on the provided data --- misp_modules/modules/expansion/__init__.py | 2 +- .../expansion/jinja_template_rendering.py | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 misp_modules/modules/expansion/jinja_template_rendering.py diff --git a/misp_modules/modules/expansion/__init__.py b/misp_modules/modules/expansion/__init__.py index c30aad5..8e3b243 100644 --- a/misp_modules/modules/expansion/__init__.py +++ b/misp_modules/modules/expansion/__init__.py @@ -18,7 +18,7 @@ __all__ = ['cuckoo_submit', 'vmray_submit', 'bgpranking', 'circl_passivedns', 'c 'assemblyline_submit', 'assemblyline_query', 'ransomcoindb', 'malwarebazaar', 'lastline_query', 'lastline_submit', 'sophoslabs_intelix', 'cytomic_orion', 'censys_enrich', 'trustar_enrich', 'recordedfuture', 'html_to_markdown', 'socialscan', 'passive-ssh', - 'qintel_qsentry', 'mwdb', 'hashlookup', 'mmdb_lookup', 'ipqs_fraud_and_risk_scoring', 'clamav'] + 'qintel_qsentry', 'mwdb', 'hashlookup', 'mmdb_lookup', 'ipqs_fraud_and_risk_scoring', 'clamav', 'jinja_template_rendering'] minimum_required_fields = ('type', 'uuid', 'value') diff --git a/misp_modules/modules/expansion/jinja_template_rendering.py b/misp_modules/modules/expansion/jinja_template_rendering.py new file mode 100755 index 0000000..5749aba --- /dev/null +++ b/misp_modules/modules/expansion/jinja_template_rendering.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python\ + +import json +from jinja2.sandbox import SandboxedEnvironment + +misperrors = {'error': 'Error'} +mispattributes = {'input': ['text'], 'output': ['text']} +moduleinfo = {'version': '0.1', 'author': 'Sami Mokaddem', + 'description': 'Render the template with the data passed', + 'module-type': ['expansion']} + +default_template = '- Default template -' + +def renderTemplate(data, template=default_template): + env = SandboxedEnvironment() + return env.from_string(template).render(data) + +def handler(q=False): + if q is False: + return False + request = json.loads(q) + if request.get('text'): + data = request['text'] + else: + return False + data = json.loads(data) + template = data.get('template', default_template) + templateData = data.get('data', {}) + try: + rendered = renderTemplate(templateData, template) + except TypeError: + rendered = '' + + r = {'results': [{'types': mispattributes['output'], + 'values':[rendered]}]} + return r + + +def introspection(): + return mispattributes + + +def version(): + return moduleinfo