Browse Source

Not working, but slightly better...

tags/v1.21.12.1
Kim "BKC" Carlbäcker 9 years ago
parent
commit
1ab8a60d73
4 changed files with 17 additions and 12 deletions
  1. +1
    -1
      modules/base/markdown.go
  2. +12
    -10
      modules/base/tool.go
  3. +1
    -1
      modules/template/template.go
  4. +3
    -0
      routers/install.go

+ 1
- 1
modules/base/markdown.go View File

@@ -340,7 +340,7 @@ OUTER_LOOP:
func RenderMarkdown(rawBytes []byte, urlPrefix string, metas map[string]string) []byte { func RenderMarkdown(rawBytes []byte, urlPrefix string, metas map[string]string) []byte {
result := RenderRawMarkdown(rawBytes, urlPrefix) result := RenderRawMarkdown(rawBytes, urlPrefix)
result = PostProcessMarkdown(result, urlPrefix, metas) result = PostProcessMarkdown(result, urlPrefix, metas)
result = BuildSanitizer().SanitizeBytes(result)
result = Sanitizer.SanitizeBytes(result)
return result return result
} }




+ 12
- 10
modules/base/tool.go View File

@@ -31,17 +31,19 @@ import (
"github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/setting"
) )


func BuildSanitizer() (p *bluemonday.Policy) {
p = bluemonday.UGCPolicy()
p.AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code")

p.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input")
p.AllowAttrs("checked", "disabled").OnElements("input")
p.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
return p
}
var Sanitizer = bluemonday.UGCPolicy()

func BuildSanitizer() {
// Normal markdown-stuff
Sanitizer.AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code")


var Sanitizer = BuildSanitizer()
// Checkboxes
Sanitizer.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input")
Sanitizer.AllowAttrs("checked", "disabled").OnElements("input")

// Custom URL-Schemes
Sanitizer.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
}


// EncodeMD5 encodes string to md5 hex value. // EncodeMD5 encodes string to md5 hex value.
func EncodeMD5(str string) string { func EncodeMD5(str string) string {


+ 1
- 1
modules/template/template.go View File

@@ -105,7 +105,7 @@ func Safe(raw string) template.HTML {
} }


func Str2html(raw string) template.HTML { func Str2html(raw string) template.HTML {
return template.HTML(base.BuildSanitizer().Sanitize(raw))
return template.HTML(base.Sanitizer.Sanitize(raw))
} }


func Range(l int) []int { func Range(l int) []int {


+ 3
- 0
routers/install.go View File

@@ -91,6 +91,9 @@ func GlobalInit() {
ssh.Listen(setting.SSHPort) ssh.Listen(setting.SSHPort)
log.Info("SSH server started on :%v", setting.SSHPort) log.Info("SSH server started on :%v", setting.SSHPort)
} }

// Build Sanitizer
base.BuildSanitizer()
} }


func InstallInit(ctx *middleware.Context) { func InstallInit(ctx *middleware.Context) {


Loading…
Cancel
Save