forked from tangled.org/core
this repo has no description

appview: pages/markup: enable html.Unsafe in renderer

subsequently, every RenderMarkdown call has been wrapped with
bluemonday sanitization.

Changed files
+5 -2
appview
+2 -1
appview/pages/funcmap.go
···
"time"
"github.com/dustin/go-humanize"
+
"github.com/microcosm-cc/bluemonday"
"tangled.sh/tangled.sh/core/appview/filetree"
"tangled.sh/tangled.sh/core/appview/pages/markup"
)
···
},
"markdown": func(text string) template.HTML {
rctx := &markup.RenderContext{RendererType: markup.RendererTypeDefault}
-
return template.HTML(rctx.RenderMarkdown(text))
+
return template.HTML(bluemonday.UGCPolicy().Sanitize(rctx.RenderMarkdown(text)))
},
"isNil": func(t any) bool {
// returns false for other "zero" values
+2
appview/pages/markup/markdown.go
···
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/parser"
+
"github.com/yuin/goldmark/renderer/html"
"github.com/yuin/goldmark/text"
"github.com/yuin/goldmark/util"
"tangled.sh/tangled.sh/core/appview/pages/repoinfo"
···
goldmark.WithParserOptions(
parser.WithAutoHeadingID(),
),
+
goldmark.WithRendererOptions(html.WithUnsafe()),
)
if rctx != nil {
+1 -1
appview/pages/pages.go
···
case markup.FormatMarkdown:
p.rctx.RepoInfo = params.RepoInfo
p.rctx.RendererType = markup.RendererTypeRepoMarkdown
-
params.RenderedContents = template.HTML(p.rctx.RenderMarkdown(params.Contents))
+
params.RenderedContents = template.HTML(bluemonday.UGCPolicy().Sanitize(p.rctx.RenderMarkdown(params.Contents)))
}
}