aboutsummaryrefslogtreecommitdiff
path: root/modules/base/tool.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/base/tool.go')
-rw-r--r--modules/base/tool.go37
1 files changed, 22 insertions, 15 deletions
diff --git a/modules/base/tool.go b/modules/base/tool.go
index f98ae28b..811a7696 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -26,21 +26,23 @@ import (
"github.com/gogits/chardet"
- "github.com/gogits/gogs/modules/avatar"
"github.com/gogits/gogs/modules/log"
"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")
+var Sanitizer = bluemonday.UGCPolicy()
- p.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input")
- p.AllowAttrs("checked", "disabled").OnElements("input")
- return p
-}
+func BuildSanitizer() {
+ // Normal markdown-stuff
+ Sanitizer.AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code")
+
+ // Checkboxes
+ Sanitizer.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input")
+ Sanitizer.AllowAttrs("checked", "disabled").OnElements("input")
-var Sanitizer = BuildSanitizer()
+ // Custom URL-Schemes
+ Sanitizer.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
+}
// EncodeMD5 encodes string to md5 hex value.
func EncodeMD5(str string) string {
@@ -206,17 +208,22 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
return code
}
-// AvatarLink returns avatar link by given e-mail.
+// HashEmail hashes email address to MD5 string.
+// https://en.gravatar.com/site/implement/hash/
+func HashEmail(email string) string {
+ email = strings.ToLower(strings.TrimSpace(email))
+ h := md5.New()
+ h.Write([]byte(email))
+ return hex.EncodeToString(h.Sum(nil))
+}
+
+// AvatarLink returns avatar link by given email.
func AvatarLink(email string) string {
if setting.DisableGravatar || setting.OfflineMode {
return setting.AppSubUrl + "/img/avatar_default.jpg"
}
- gravatarHash := avatar.HashEmail(email)
- if setting.Service.EnableCacheAvatar {
- return setting.AppSubUrl + "/avatar/" + gravatarHash
- }
- return setting.GravatarSource + gravatarHash
+ return setting.GravatarSource + HashEmail(email)
}
// Seconds-based time units