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,
|
|
|
|
}
|
|
|
|
}
|