From 84b0581306b0794e29adda5dc774dacb0e6819a9 Mon Sep 17 00:00:00 2001 From: xm1k3 Date: Sun, 15 Jan 2023 17:30:34 +0100 Subject: [PATCH] Markdown Reporting Index File (#3129) * implemented index.md creation on markdown export * fixes on markdown generation added also hyperlink to markdown created * code optimization and refactoring * index header refactor --- .../reporting/exporters/markdown/markdown.go | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/v2/pkg/reporting/exporters/markdown/markdown.go b/v2/pkg/reporting/exporters/markdown/markdown.go index ef6ff6a43..ebd0f09f6 100644 --- a/v2/pkg/reporting/exporters/markdown/markdown.go +++ b/v2/pkg/reporting/exporters/markdown/markdown.go @@ -11,6 +11,8 @@ import ( stringsutil "github.com/projectdiscovery/utils/strings" ) +const indexFileName = "index.md" + type Exporter struct { directory string options *Options @@ -33,6 +35,17 @@ func New(options *Options) (*Exporter, error) { directory = dir } _ = os.MkdirAll(directory, 0755) + + // index generation header + dataHeader := "" + + "|Hostname/IP|Finding|Severity|\n" + + "|-|-|-|\n" + + err := os.WriteFile(filepath.Join(directory, indexFileName), []byte(dataHeader), 0644) + if err != nil { + return nil, err + } + return &Exporter{options: options, directory: directory}, nil } @@ -66,6 +79,18 @@ func (exporter *Exporter) Export(event *output.ResultEvent) error { dataBuilder.WriteString(description) data := dataBuilder.Bytes() + // index generation + file, err := os.OpenFile(filepath.Join(exporter.directory, indexFileName), os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + return err + } + defer file.Close() + + _, err = file.WriteString("|[" + event.Host + "](" + finalFilename + ")" + "|" + event.TemplateID + " " + event.MatcherName + "|" + event.Info.SeverityHolder.Severity.String() + "|\n") + if err != nil { + return err + } + return os.WriteFile(filepath.Join(exporter.directory, finalFilename), data, 0644) }