소스 검색

add --origin to cscli decisions delete (#2109)

Thibault "bui" Koechlin 2 년 전
부모
커밋
9d5aaf5ea2
2개의 변경된 파일15개의 추가작업 그리고 10개의 파일을 삭제
  1. 8 4
      cmd/crowdsec-cli/decisions.go
  2. 7 6
      pkg/apiclient/decisions_service.go

+ 8 - 4
cmd/crowdsec-cli/decisions.go

@@ -382,6 +382,7 @@ func NewDecisionsDeleteCmd() *cobra.Command {
 		IPEquals:       new(string),
 		RangeEquals:    new(string),
 		ScenarioEquals: new(string),
+		OriginEquals:   new(string),
 	}
 	var delDecisionId string
 	var delDecisionAll bool
@@ -404,7 +405,8 @@ cscli decisions delete --type captcha
 			}
 			if *delFilter.ScopeEquals == "" && *delFilter.ValueEquals == "" &&
 				*delFilter.TypeEquals == "" && *delFilter.IPEquals == "" &&
-				*delFilter.RangeEquals == "" && *delFilter.ScenarioEquals == "" && delDecisionId == "" {
+				*delFilter.RangeEquals == "" && *delFilter.ScenarioEquals == "" &&
+				*delFilter.OriginEquals == "" && delDecisionId == "" {
 				cmd.Usage()
 				log.Fatalln("At least one filter or --all must be specified")
 			}
@@ -420,21 +422,21 @@ cscli decisions delete --type captcha
 			if *delFilter.ScopeEquals == "" {
 				delFilter.ScopeEquals = nil
 			}
+			if *delFilter.OriginEquals == "" {
+				delFilter.OriginEquals = nil
+			}
 			if *delFilter.ValueEquals == "" {
 				delFilter.ValueEquals = nil
 			}
 			if *delFilter.ScenarioEquals == "" {
 				delFilter.ScenarioEquals = nil
 			}
-
 			if *delFilter.TypeEquals == "" {
 				delFilter.TypeEquals = nil
 			}
-
 			if *delFilter.IPEquals == "" {
 				delFilter.IPEquals = nil
 			}
-
 			if *delFilter.RangeEquals == "" {
 				delFilter.RangeEquals = nil
 			}
@@ -466,6 +468,8 @@ cscli decisions delete --type captcha
 	cmdDecisionsDelete.Flags().StringVarP(delFilter.TypeEquals, "type", "t", "", "the decision type (ie. ban,captcha)")
 	cmdDecisionsDelete.Flags().StringVarP(delFilter.ValueEquals, "value", "v", "", "the value to match for in the specified scope")
 	cmdDecisionsDelete.Flags().StringVarP(delFilter.ScenarioEquals, "scenario", "s", "", "the scenario name (ie. crowdsecurity/ssh-bf)")
+	cmdDecisionsDelete.Flags().StringVar(delFilter.OriginEquals, "origin", "", fmt.Sprintf("the value to match for the specified origin (%s ...)", strings.Join(types.GetOrigins(), ",")))
+
 	cmdDecisionsDelete.Flags().StringVar(&delDecisionId, "id", "", "decision id")
 	cmdDecisionsDelete.Flags().BoolVar(&delDecisionAll, "all", false, "delete all decisions")
 	cmdDecisionsDelete.Flags().BoolVar(contained, "contained", false, "query decisions contained by range")

+ 7 - 6
pkg/apiclient/decisions_service.go

@@ -43,12 +43,13 @@ func (o *DecisionsStreamOpts) addQueryParamsToURL(url string) (string, error) {
 }
 
 type DecisionsDeleteOpts struct {
-	ScopeEquals *string `url:"scope,omitempty"`
-	ValueEquals *string `url:"value,omitempty"`
-	TypeEquals  *string `url:"type,omitempty"`
-	IPEquals    *string `url:"ip,omitempty"`
-	RangeEquals *string `url:"range,omitempty"`
-	Contains    *bool   `url:"contains,omitempty"`
+	ScopeEquals  *string `url:"scope,omitempty"`
+	ValueEquals  *string `url:"value,omitempty"`
+	TypeEquals   *string `url:"type,omitempty"`
+	IPEquals     *string `url:"ip,omitempty"`
+	RangeEquals  *string `url:"range,omitempty"`
+	Contains     *bool   `url:"contains,omitempty"`
+	OriginEquals *string `url:"origin,omitempty"`
 	//
 	ScenarioEquals *string `url:"scenario,omitempty"`
 	ListOpts