init: 1.0.0
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user