server/pkg/rules/rules.go
Chang lue Tsen 8addcc584b init: 1.0.0
2025-04-25 12:08:29 +09:00

51 lines
775 B
Go

package rules
import (
"strings"
)
const noResolve = "no-resolve"
type Rule struct {
Type string
Payload string
Target string
}
func NewRule(text, name string) *Rule {
rule := trimArr(strings.Split(text, ","))
var (
payload string
target string
)
switch l := len(rule); {
case l == 2:
payload = rule[1]
target = name
case l == 3:
payload = rule[1]
target = rule[2]
case l >= 4:
payload = rule[1]
target = rule[2]
default:
return nil
}
rule = trimArr(rule)
return &Rule{
Type: rule[0],
Payload: payload,
Target: target,
}
}
func (r *Rule) String() string {
text := r.Type + "," + r.Payload + "," + r.Target
switch ParseRuleType(r.Type) {
case IPCIDR, IPSet:
return text + "," + noResolve
default:
return text
}
}