Add ASN to logtail, collector, aggregator, frontend and CLI
This commit is contained in:
@@ -126,8 +126,20 @@ func applyTerm(term string, fs *filterState) error {
|
||||
} else {
|
||||
fs.IsTor = "0"
|
||||
}
|
||||
case "asn":
|
||||
if op == "~=" {
|
||||
return fmt.Errorf("asn does not support ~=; use =, !=, >=, >, <=, <")
|
||||
}
|
||||
expr := op + value
|
||||
if op == "=" {
|
||||
expr = value
|
||||
}
|
||||
if _, _, ok := st.ParseStatusExpr(expr); !ok {
|
||||
return fmt.Errorf("invalid asn expression %q", expr)
|
||||
}
|
||||
fs.ASN = expr
|
||||
default:
|
||||
return fmt.Errorf("unknown field %q; valid: status, website, uri, prefix, is_tor", field)
|
||||
return fmt.Errorf("unknown field %q; valid: status, website, uri, prefix, is_tor, asn", field)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -167,9 +179,24 @@ func FilterExprString(f filterState) string {
|
||||
if f.IsTor != "" {
|
||||
parts = append(parts, "is_tor="+f.IsTor)
|
||||
}
|
||||
if f.ASN != "" {
|
||||
parts = append(parts, asnTermStr(f.ASN))
|
||||
}
|
||||
return strings.Join(parts, " AND ")
|
||||
}
|
||||
|
||||
// asnTermStr converts a stored ASN expression (">=1000", "12345") to a
|
||||
// full filter term ("asn>=1000", "asn=12345").
|
||||
func asnTermStr(expr string) string {
|
||||
if expr == "" {
|
||||
return ""
|
||||
}
|
||||
if len(expr) > 0 && (expr[0] == '!' || expr[0] == '>' || expr[0] == '<') {
|
||||
return "asn" + expr
|
||||
}
|
||||
return "asn=" + expr
|
||||
}
|
||||
|
||||
// statusTermStr converts a stored status expression (">=400", "200") to a
|
||||
// full filter term ("status>=400", "status=200").
|
||||
func statusTermStr(expr string) string {
|
||||
|
||||
Reference in New Issue
Block a user