0

Optimise regexp usage (#1502)

* Optimise regexp usage

* Revert regexp removal

* Atleast use the semioptimised version
This commit is contained in:
Jack 2021-10-29 20:29:01 +01:00 committed by GitHub
parent cc2a9b8d8e
commit f0a11cac5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 4 deletions

View File

@ -124,6 +124,11 @@ func RenderMarkdown(raw string) string {
return buf.String() return buf.String()
} }
var (
_sanitizeReSrcMatch = regexp.MustCompile(`(?i)^/img/emoji`)
_sanitizeReAltTitleMatch = regexp.MustCompile(`:\S+:`)
)
func sanitize(raw string) string { func sanitize(raw string) string {
p := bluemonday.StrictPolicy() p := bluemonday.StrictPolicy()
@ -146,8 +151,8 @@ func sanitize(raw string) string {
p.AllowElementsContent("p") p.AllowElementsContent("p")
// Allow img tags from the the local emoji directory only // Allow img tags from the the local emoji directory only
p.AllowAttrs("src").Matching(regexp.MustCompile(`(?i)^/img/emoji`)).OnElements("img") p.AllowAttrs("src").Matching(_sanitizeReSrcMatch).OnElements("img")
p.AllowAttrs("alt", "title").Matching(regexp.MustCompile(`:\S+:`)).OnElements("img") p.AllowAttrs("alt", "title").Matching(_sanitizeReAltTitleMatch).OnElements("img")
p.AllowAttrs("class").OnElements("img") p.AllowAttrs("class").OnElements("img")
// Allow bold // Allow bold

View File

@ -14,13 +14,15 @@ import (
const unknownString = "Unknown" const unknownString = "Unknown"
var _getInboundDetailsFromMetadataRE = regexp.MustCompile(`\{(.*?)\}`)
func getInboundDetailsFromMetadata(metadata []interface{}) (models.RTMPStreamMetadata, error) { func getInboundDetailsFromMetadata(metadata []interface{}) (models.RTMPStreamMetadata, error) {
metadataComponentsString := fmt.Sprintf("%+v", metadata) metadataComponentsString := fmt.Sprintf("%+v", metadata)
if !strings.Contains(metadataComponentsString, "onMetaData") { if !strings.Contains(metadataComponentsString, "onMetaData") {
return models.RTMPStreamMetadata{}, errors.New("Not a onMetaData message") return models.RTMPStreamMetadata{}, errors.New("Not a onMetaData message")
} }
re := regexp.MustCompile(`\{(.*?)\}`)
submatchall := re.FindAllString(metadataComponentsString, 1) submatchall := _getInboundDetailsFromMetadataRE.FindAllString(metadataComponentsString, 1)
if len(submatchall) == 0 { if len(submatchall) == 0 {
return models.RTMPStreamMetadata{}, errors.New("unable to parse inbound metadata") return models.RTMPStreamMetadata{}, errors.New("unable to parse inbound metadata")