crowdsec/pkg/waf/env.go

43 lines
1.1 KiB
Go
Raw Normal View History

2023-07-04 15:36:56 +00:00
package waf
2023-09-11 08:35:14 +00:00
import (
"github.com/crowdsecurity/coraza/v3"
"github.com/crowdsecurity/coraza/v3/experimental"
)
2023-07-04 15:36:56 +00:00
2023-09-11 08:35:14 +00:00
type ExtendedTransaction struct {
2023-07-04 15:36:56 +00:00
Tx experimental.FullTransaction
}
2023-09-11 08:35:14 +00:00
func NewExtendedTransaction(engine coraza.WAF, uuid string) ExtendedTransaction {
inBoundTx := engine.NewTransactionWithID(uuid)
expTx := inBoundTx.(experimental.FullTransaction)
tx := NewTransaction(expTx)
return tx
2023-07-04 15:36:56 +00:00
}
2023-09-11 08:35:14 +00:00
func NewTransaction(tx experimental.FullTransaction) ExtendedTransaction {
return ExtendedTransaction{Tx: tx}
}
func (t *ExtendedTransaction) RemoveRuleByIDWithError(id int) error {
2023-07-04 15:36:56 +00:00
t.Tx.RemoveRuleByID(id)
return nil
}
func GetEnv() map[string]interface{} {
ResponseRequest := ResponseRequest{}
ParsedRequest := ParsedRequest{}
2023-09-11 08:35:14 +00:00
Rules := &WaapCollection{}
Tx := ExtendedTransaction{}
2023-07-04 15:36:56 +00:00
return map[string]interface{}{
"rules": Rules,
"req": ParsedRequest,
"SetRemediation": ResponseRequest.SetRemediation,
"SetRemediationByID": ResponseRequest.SetRemediationByID,
"CancelEvent": ResponseRequest.CancelEvent,
"RemoveRuleByID": Tx.RemoveRuleByIDWithError,
}
}