Skip to content

Commit e7f23e5

Browse files
committed
Support ignore all santize for external renderer
1 parent eddd2fb commit e7f23e5

File tree

6 files changed

+48
-12
lines changed

6 files changed

+48
-12
lines changed

modules/markup/csv/csv.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ func (Renderer) SanitizerRules() []setting.MarkupSanitizerRule {
4646
}
4747
}
4848

49+
// SanitizeDisabled disabled sanitize if return true
50+
func (Renderer) SanitizeDisabled() bool {
51+
return false
52+
}
53+
4954
func writeField(w io.Writer, element, class, field string) error {
5055
if _, err := io.WriteString(w, "<"); err != nil {
5156
return err

modules/markup/external/external.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ func (p *Renderer) SanitizerRules() []setting.MarkupSanitizerRule {
5454
return p.MarkupSanitizerRules
5555
}
5656

57+
// DisableSanitize disabled sanitize if return true
58+
func (p *Renderer) SanitizeDisabled() bool {
59+
return p.DisableSanitize
60+
}
61+
5762
func envMark(envName string) string {
5863
if runtime.GOOS == "windows" {
5964
return "%" + envName + "%"

modules/markup/markdown/markdown.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,11 @@ func (Renderer) SanitizerRules() []setting.MarkupSanitizerRule {
221221
return []setting.MarkupSanitizerRule{}
222222
}
223223

224+
// SanitizeDisabled disabled sanitize if return true
225+
func (Renderer) SanitizeDisabled() bool {
226+
return false
227+
}
228+
224229
// Render implements markup.Renderer
225230
func (Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error {
226231
return render(ctx, input, output)

modules/markup/orgmode/orgmode.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ func (Renderer) SanitizerRules() []setting.MarkupSanitizerRule {
4747
return []setting.MarkupSanitizerRule{}
4848
}
4949

50+
// SanitizeDisabled disabled sanitize if return true
51+
func (Renderer) SanitizeDisabled() bool {
52+
return false
53+
}
54+
5055
// Render renders orgmode rawbytes to HTML
5156
func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error {
5257
htmlWriter := org.NewHTMLWriter()

modules/markup/renderer.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ type Renderer interface {
8181
Extensions() []string
8282
NeedPostProcess() bool
8383
SanitizerRules() []setting.MarkupSanitizerRule
84+
SanitizeDisabled() bool
8485
Render(ctx *RenderContext, input io.Reader, output io.Writer) error
8586
}
8687

@@ -127,6 +128,12 @@ func RenderString(ctx *RenderContext, content string) (string, error) {
127128
return buf.String(), nil
128129
}
129130

131+
type nopCloser struct {
132+
io.Writer
133+
}
134+
135+
func (nopCloser) Close() error { return nil }
136+
130137
func render(ctx *RenderContext, renderer Renderer, input io.Reader, output io.Writer) error {
131138
var wg sync.WaitGroup
132139
var err error
@@ -136,18 +143,25 @@ func render(ctx *RenderContext, renderer Renderer, input io.Reader, output io.Wr
136143
_ = pw.Close()
137144
}()
138145

139-
pr2, pw2 := io.Pipe()
140-
defer func() {
141-
_ = pr2.Close()
142-
_ = pw2.Close()
143-
}()
144-
145-
wg.Add(1)
146-
go func() {
147-
err = SanitizeReader(pr2, renderer.Name(), output)
148-
_ = pr2.Close()
149-
wg.Done()
150-
}()
146+
var pr2 io.ReadCloser
147+
var pw2 io.WriteCloser
148+
149+
if !renderer.SanitizeDisabled() {
150+
pr2, pw2 = io.Pipe()
151+
defer func() {
152+
_ = pr2.Close()
153+
_ = pw2.Close()
154+
}()
155+
156+
wg.Add(1)
157+
go func() {
158+
err = SanitizeReader(pr2, renderer.Name(), output)
159+
_ = pr2.Close()
160+
wg.Done()
161+
}()
162+
} else {
163+
pw2 = nopCloser{output}
164+
}
151165

152166
wg.Add(1)
153167
go func() {

modules/setting/markup.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type MarkupRenderer struct {
2929
IsInputFile bool
3030
NeedPostProcess bool
3131
MarkupSanitizerRules []MarkupSanitizerRule
32+
DisableSanitize bool
3233
}
3334

3435
// MarkupSanitizerRule defines the policy for whitelisting attributes on
@@ -150,5 +151,6 @@ func newMarkupRenderer(name string, sec *ini.Section) {
150151
Command: command,
151152
IsInputFile: sec.Key("IS_INPUT_FILE").MustBool(false),
152153
NeedPostProcess: sec.Key("NEED_POSTPROCESS").MustBool(true),
154+
DisableSanitize: sec.Key("DISABLE_SANITIZE").MustBool(false),
153155
})
154156
}

0 commit comments

Comments
 (0)