修复本地规则管理不工作的问题
This commit is contained in:
@@ -804,6 +804,8 @@ func (m *ShieldManager) RemoveRule(rule string) error {
|
||||
domain := strings.TrimPrefix(format, "@@||")
|
||||
if _, exists := m.domainExceptions[domain]; exists {
|
||||
delete(m.domainExceptions, domain)
|
||||
delete(m.domainExceptionsIsLocal, domain)
|
||||
delete(m.domainExceptionsSource, domain)
|
||||
removed = true
|
||||
break
|
||||
}
|
||||
@@ -812,6 +814,8 @@ func (m *ShieldManager) RemoveRule(rule string) error {
|
||||
domain := strings.TrimPrefix(format, "||")
|
||||
if _, exists := m.domainRules[domain]; exists {
|
||||
delete(m.domainRules, domain)
|
||||
delete(m.domainRulesIsLocal, domain)
|
||||
delete(m.domainRulesSource, domain)
|
||||
removed = true
|
||||
break
|
||||
}
|
||||
@@ -819,11 +823,15 @@ func (m *ShieldManager) RemoveRule(rule string) error {
|
||||
// 尝试直接作为域名删除
|
||||
if _, exists := m.domainRules[format]; exists {
|
||||
delete(m.domainRules, format)
|
||||
delete(m.domainRulesIsLocal, format)
|
||||
delete(m.domainRulesSource, format)
|
||||
removed = true
|
||||
break
|
||||
}
|
||||
if _, exists := m.domainExceptions[format]; exists {
|
||||
delete(m.domainExceptions, format)
|
||||
delete(m.domainExceptionsIsLocal, format)
|
||||
delete(m.domainExceptionsSource, format)
|
||||
removed = true
|
||||
break
|
||||
}
|
||||
@@ -832,12 +840,10 @@ func (m *ShieldManager) RemoveRule(rule string) error {
|
||||
|
||||
// 处理正则表达式规则
|
||||
if !removed && strings.HasPrefix(cleanRule, "/") && strings.HasSuffix(cleanRule, "/") {
|
||||
pattern := strings.TrimPrefix(strings.TrimSuffix(cleanRule, "/"), "/")
|
||||
|
||||
// 检查是否在正则表达式规则中
|
||||
newRegexRules := []regexRule{}
|
||||
for _, re := range m.regexRules {
|
||||
if re.pattern.String() != pattern {
|
||||
if re.original != rule && re.original != cleanRule {
|
||||
newRegexRules = append(newRegexRules, re)
|
||||
} else {
|
||||
removed = true
|
||||
@@ -849,7 +855,7 @@ func (m *ShieldManager) RemoveRule(rule string) error {
|
||||
if !removed {
|
||||
newRegexExceptions := []regexRule{}
|
||||
for _, re := range m.regexExceptions {
|
||||
if re.pattern.String() != pattern {
|
||||
if re.original != rule && re.original != cleanRule {
|
||||
newRegexExceptions = append(newRegexExceptions, re)
|
||||
} else {
|
||||
removed = true
|
||||
|
||||
Reference in New Issue
Block a user