feat: enable multiple domains to apply same rule

This commit is contained in:
joncrangle
2023-11-07 21:15:24 -05:00
parent 719373bb7d
commit 501dfb106a

View File

@@ -172,33 +172,37 @@ func applyRules(domain string, path string, body string) string {
}
for _, rule := range rulesSet {
if rule.Domain != domain {
continue
}
if len(rule.Paths) > 0 && !StringInSlice(path, rule.Paths) {
continue
}
for _, regexRule := range rule.RegexRules {
re := regexp.MustCompile(regexRule.Match)
body = re.ReplaceAllString(body, regexRule.Replace)
}
for _, injection := range rule.Injections {
doc, err := goquery.NewDocumentFromReader(strings.NewReader(body))
if err != nil {
log.Fatal(err)
// rule.Domain can be multiple domains delimited by "|"
domains := strings.Split(rule.Domain, "|")
for _, ruleDomain := range domains {
if ruleDomain != domain {
continue
}
if injection.Replace != "" {
doc.Find(injection.Position).ReplaceWithHtml(injection.Replace)
if len(rule.Paths) > 0 && !StringInSlice(path, rule.Paths) {
continue
}
if injection.Append != "" {
doc.Find(injection.Position).AppendHtml(injection.Append)
for _, regexRule := range rule.RegexRules {
re := regexp.MustCompile(regexRule.Match)
body = re.ReplaceAllString(body, regexRule.Replace)
}
if injection.Prepend != "" {
doc.Find(injection.Position).PrependHtml(injection.Prepend)
}
body, err = doc.Html()
if err != nil {
log.Fatal(err)
for _, injection := range rule.Injections {
doc, err := goquery.NewDocumentFromReader(strings.NewReader(body))
if err != nil {
log.Fatal(err)
}
if injection.Replace != "" {
doc.Find(injection.Position).ReplaceWithHtml(injection.Replace)
}
if injection.Append != "" {
doc.Find(injection.Position).AppendHtml(injection.Append)
}
if injection.Prepend != "" {
doc.Find(injection.Position).PrependHtml(injection.Prepend)
}
body, err = doc.Html()
if err != nil {
log.Fatal(err)
}
}
}
}