示例#1
0
    def checkRA(self, stage):
        if self.rp_rule.get(stage):
            for rule in self.rp_rule.get(stage):
                try:
                    rtask = REACTutils.read_yaml_file(self.inputRA + rule +
                                                      ".yml")
                except OSError:
                    print("Response Action %s not existing\n" % rule)
                    continue
                self.task_prefix = int(self.task_prefix)
                self.task_prefix += 1
                task = THC.TheHiveTask(order=self.task_order)
                self.task_order += 1
                task.title = str(self.task_prefix) + " | "\
                    + rtask.get('id')\
                    + ": "\
                    + REACTutils.normalize_react_title(rtask.get('title'),REACTConfig.get('titlefmtrules'))

                if rtask.get('stage'):
                    task.group = REACTutils.normalize_rs_name(
                        rtask.get('stage'))
                else:
                    task.group = 'Unknown stage'

                task.description = str(rtask.get('workflow'))
                if rtask.get('owner'):
                    task.owner = str(rtask.get('owner'))
                self.case.tasks.append(task.return_dictionary())
示例#2
0
    def render_template(self, template_type):
        """Description
        template_type:
            - "markdown"
            - "confluence"
        """

        if template_type not in ["markdown", "confluence"]:
            raise Exception(
                "Bad template_type. Available values:" +
                " [\"markdown\", \"confluence\"]")

        #
        # PRE: Common for both Markdown and Confluence templates
        #

        self.ra_parsed_file.update(
            {'category': REACTutils.get_ra_category(self.ra_parsed_file
                .get('id'))}
        )

        self.ra_parsed_file.update(
            {'description': self.ra_parsed_file.get('description').strip()}
        )

        # Get proper template
        if template_type == "markdown":

            template = env.get_template(
                'markdown_responseaction_template.md.j2'
            )
    
            self.ra_parsed_file.update(
                {'title': REACTutils.normalize_react_title(self.ra_parsed_file
                    .get('title'),REACTConfig.get('titlefmtrules'))}
            )
    
            stage_list = []
            stage = self.ra_parsed_file.get('stage')
    
            for rs_id, rs_name in rs_mapping.items():
                if REACTutils.normalize_rs_name(stage) == rs_name:
                    stage_list.append((rs_id, rs_name))
    
            self.ra_parsed_file.update(
                {'stage': stage_list}
            )

        elif template_type == "confluence":

            template = env.get_template(
                'confluence_responseaction_template.html.j2')

            new_title = self.ra_parsed_file.get('id')\
                + ": "\
                + REACTutils.normalize_react_title(self.ra_parsed_file.get('title'),REACTConfig.get('titlefmtrules'))

            self.ra_parsed_file.update(
                {'title': new_title}
            )

            self.ra_parsed_file.update(
                {'confluence_viewpage_url': REACTConfig.get('confluence_viewpage_url')})

            ##
            ## Add link to a stage
            ##
            stage = self.ra_parsed_file.get('stage')
            rs_list = []
            for rs_id, rs_name in rs_mapping.items():
                if REACTutils.normalize_rs_name(stage) == rs_name:
                    if self.apipath and self.auth and self.space:
                        rs_confluence_page_name = rs_id + ": " + rs_name
                        rs_confluence_page_id = str(REACTutils.confluence_get_page_id(
                            self.apipath, self.auth, self.space, rs_confluence_page_name)
                        )
                        rs_list.append((rs_id, rs_name, rs_confluence_page_id))
                    else:
                        rs_confluence_page_id = ""
                        rs_list.append((rs_id, rs_name, rs_confluence_page_id))
                    break

            self.ra_parsed_file.update(
                    {'stage': rs_list}
            )

        #
        # POST: Common for both Markdown and Confluence templates
        #
        self.content = template.render(self.ra_parsed_file)