Files
dns-server/test_rule.go
2025-12-15 16:04:45 +08:00

63 lines
1.4 KiB
Go

package main
import (
"fmt"
"dns-server/config"
"dns-server/shield"
)
func main() {
// 创建一个简单的配置
cfg := &config.ShieldConfig{
LocalRulesFile: "",
RemoteRulesCacheDir: "/tmp",
UpdateInterval: 3600,
}
// 创建屏蔽管理器
manager := shield.NewShieldManager(cfg)
// 添加测试规则
testRules := []string{
"||example.com", // 应该只屏蔽 example.com
"||www.example.com", // 应该只屏蔽 www.example.com
"/text/", // 应该屏蔽包含 text 的域名
}
for _, rule := range testRules {
manager.AddRule(rule)
}
// 测试域名
testDomains := []string{
"example.com",
"www.example.com",
"subdomain.example.com",
"anotherexample.com",
"google.com",
"www.anytext.com",
"text.example.com",
"example.text.com",
"example.com.text",
"examplewithouttext.com",
}
fmt.Println("测试结果:")
fmt.Println("----------------------------------------")
for _, domain := range testDomains {
details := manager.CheckDomainBlockDetails(domain)
blocked := details["blocked"].(bool)
blockRule := details["blockRule"].(string)
blockRuleType := details["blockRuleType"].(string)
status := "允许"
if blocked {
status = fmt.Sprintf("屏蔽 (规则: %s, 类型: %s)", blockRule, blockRuleType)
}
fmt.Printf("%s: %s\n", domain, status)
}
fmt.Println("----------------------------------------")
}