update
This commit is contained in:
parent
ac16db5f21
commit
186d5c3aa5
|
@ -268,30 +268,32 @@ Disable given information push to the central API.`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var key string
|
var keyToAdd string
|
||||||
var values []string
|
var valuesToAdd []string
|
||||||
cmdLabelAdd := &cobra.Command{
|
cmdLabelAdd := &cobra.Command{
|
||||||
Use: "add",
|
Use: "add",
|
||||||
Short: "Add label to send with alerts",
|
Short: "Add label to send with alerts",
|
||||||
DisableAutoGenTag: true,
|
DisableAutoGenTag: true,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
if _, ok := csConfig.Crowdsec.LabelsToSend[key]; !ok {
|
if _, ok := csConfig.Crowdsec.LabelsToSend[keyToAdd]; !ok {
|
||||||
csConfig.Crowdsec.LabelsToSend[key] = make([]string, 0)
|
csConfig.Crowdsec.LabelsToSend[keyToAdd] = make([]string, 0)
|
||||||
|
log.Infof("key '%s' added", keyToAdd)
|
||||||
}
|
}
|
||||||
data := csConfig.Crowdsec.LabelsToSend[key]
|
data := csConfig.Crowdsec.LabelsToSend[keyToAdd]
|
||||||
for _, val := range values {
|
for _, val := range valuesToAdd {
|
||||||
if !inSlice(val, data) {
|
if !inSlice(val, data) {
|
||||||
|
log.Infof("value '%s' added to key '%s'", val, keyToAdd)
|
||||||
data = append(data, val)
|
data = append(data, val)
|
||||||
}
|
}
|
||||||
csConfig.Crowdsec.LabelsToSend[key] = data
|
csConfig.Crowdsec.LabelsToSend[keyToAdd] = data
|
||||||
}
|
}
|
||||||
if err := csConfig.Crowdsec.DumpLabelConfigFile(); err != nil {
|
if err := csConfig.Crowdsec.DumpLabelConfigFile(); err != nil {
|
||||||
log.Fatalf(err.Error())
|
log.Fatalf(err.Error())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cmdLabelAdd.Flags().StringVarP(&key, "key", "k", "", "The key of the different values to send")
|
cmdLabelAdd.Flags().StringVarP(&keyToAdd, "key", "k", "", "The key of the different values to send")
|
||||||
cmdLabelAdd.Flags().StringSliceVar(&values, "value", []string{}, "The expr fields to associate with the key")
|
cmdLabelAdd.Flags().StringSliceVar(&valuesToAdd, "value", []string{}, "The expr fields to associate with the key")
|
||||||
cmdLabelAdd.MarkFlagRequired("key")
|
cmdLabelAdd.MarkFlagRequired("key")
|
||||||
cmdLabelAdd.MarkFlagRequired("value")
|
cmdLabelAdd.MarkFlagRequired("value")
|
||||||
cmdLabel.AddCommand(cmdLabelAdd)
|
cmdLabel.AddCommand(cmdLabelAdd)
|
||||||
|
@ -311,6 +313,53 @@ Disable given information push to the central API.`,
|
||||||
}
|
}
|
||||||
cmdLabel.AddCommand(cmdLabelStatus)
|
cmdLabel.AddCommand(cmdLabelStatus)
|
||||||
|
|
||||||
|
var keysToDelete []string
|
||||||
|
var valuesToDelete []string
|
||||||
|
cmdLabelDelete := &cobra.Command{
|
||||||
|
Use: "delete",
|
||||||
|
Short: "List label to send with alerts",
|
||||||
|
DisableAutoGenTag: true,
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
if len(keysToDelete) == 0 && len(valuesToDelete) == 0 {
|
||||||
|
log.Fatalf("please provide at least a key or a value to delete")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, key := range keysToDelete {
|
||||||
|
if _, ok := csConfig.Crowdsec.LabelsToSend[key]; ok {
|
||||||
|
delete(csConfig.Crowdsec.LabelsToSend, key)
|
||||||
|
log.Infof("key '%s' has been removed", key)
|
||||||
|
} else {
|
||||||
|
log.Warningf("key '%s' doesn't exist", key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, value := range valuesToDelete {
|
||||||
|
valueFound := false
|
||||||
|
for key, labels := range csConfig.Crowdsec.LabelsToSend {
|
||||||
|
if inSlice(value, labels) {
|
||||||
|
valueFound = true
|
||||||
|
csConfig.Crowdsec.LabelsToSend[key] = removeFromSlice(value, labels)
|
||||||
|
log.Infof("value '%s' has been removed from key '%s'", value, key)
|
||||||
|
}
|
||||||
|
if len(csConfig.Crowdsec.LabelsToSend[key]) == 0 {
|
||||||
|
delete(csConfig.Crowdsec.LabelsToSend, key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !valueFound {
|
||||||
|
log.Warningf("value '%s' not found", value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := csConfig.Crowdsec.DumpLabelConfigFile(); err != nil {
|
||||||
|
log.Fatalf(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
cmdLabelDelete.Flags().StringSliceVarP(&keysToDelete, "key", "k", []string{}, "The keys to delete")
|
||||||
|
cmdLabelDelete.Flags().StringSliceVar(&valuesToDelete, "value", []string{}, "The expr fields to delete")
|
||||||
|
cmdLabel.AddCommand(cmdLabelDelete)
|
||||||
|
|
||||||
cmdConsole.AddCommand(cmdLabel)
|
cmdConsole.AddCommand(cmdLabel)
|
||||||
|
|
||||||
return cmdConsole
|
return cmdConsole
|
||||||
|
|
|
@ -42,6 +42,24 @@ func inSlice(s string, slice []string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func removeFromSlice(val string, slice []string) []string {
|
||||||
|
var i int
|
||||||
|
var value string
|
||||||
|
|
||||||
|
// get the index
|
||||||
|
for i, value = range slice {
|
||||||
|
if value == val {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
slice[i] = slice[len(slice)-1]
|
||||||
|
slice[len(slice)-1] = ""
|
||||||
|
slice = slice[:len(slice)-1]
|
||||||
|
|
||||||
|
return slice
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func indexOf(s string, slice []string) int {
|
func indexOf(s string, slice []string) int {
|
||||||
for i, elem := range slice {
|
for i, elem := range slice {
|
||||||
if s == elem {
|
if s == elem {
|
||||||
|
|
Loading…
Reference in a new issue