def __init__(self): UpdateReactMapping() response_actions = [] for ra_id, ra_name in ra_mapping.items(): ra_color = "" category_score = int(ra_id[3:6]) ra_category = ATCutils.get_ra_category(ra_id) for category_name, category_color in category_colors.items(): if ra_category == category_name: ra_color = category_color break response_actions.append({ "techniqueID": ra_id, "color": ra_color, "score": category_score, # for sorting }) NAVIGATOR_TEMPLATE['techniques'] = response_actions with open(directory + '/' + filename, 'w') as fp: json.dump(NAVIGATOR_TEMPLATE, fp) print(f'[+] Created {filename}')
def render_template(self, template_type): """Description template_type: - "markdown" """ if template_type not in ["markdown"]: raise Exception("Bad template_type. Available values:" + " [\"markdown\"]") template = env.get_template('markdown_responseaction_template.md.j2') self.ra_parsed_file.update( {'description': self.ra_parsed_file.get('description').strip()}) self.ra_parsed_file.update({ 'title': ATCutils.normalize_react_title(self.ra_parsed_file.get('title')) }) stage_list = [] stage = self.ra_parsed_file.get('stage') for rs_id, rs_name in rs_mapping.items(): if ATCutils.normalize_rs_name(stage) == rs_name: stage_list.append((rs_id, rs_name)) self.ra_parsed_file.update({'stage': stage_list}) self.ra_parsed_file.update({ 'category': ATCutils.get_ra_category(self.ra_parsed_file.get('id')) }) self.content = template.render(self.ra_parsed_file)