06-Oct-2020
08:51
- last edited on
04-Jun-2023
21:16
by
JimmyPackets
I already know about HTTP::collect and HTTP:payload. My current iRule looks like this:
when HTTP_REQUEST_DATA {
set request_payload [HTTP::payload]
}
when HTTP_RESPONSE_DATA {
set response_payload [HTTP::payload]
HSL::send [HSL::open -proto UDP -pool syslog_server] "HSL TEST: BLA"
}
when HTTP_REQUEST {
set request_payload ""
set response_payload ""
set client_ip [getfield [IP::remote_addr] "%" 1]
set http_method [HTTP::method]
set port [TCP::local_port]
if { $http_method eq "POST" } {
if { [HTTP::header Content-Length] != "" } {
HTTP::collect [HTTP::header Content-Length]
} else {
HTTP::collect 1048576
}
}
}
when HTTP_RESPONSE
{
if { $http_method eq "POST" } {
if { [HTTP::header Content-Length] != "" } {
HTTP::collect [HTTP::header Content-Length]
} else {
HTTP::collect 1048576
}
HSL::send [HSL::open -proto UDP -pool syslog_server] "HSL TEST:\n\nClient: $client_ip\n\nRequest Data: $request_payload\n\nResponse Data: $response_payload"
}
}
The problem is that the "HSL TEST: BLA" will never be logged because the event HTTP_RESPONSE_DATA gets never called (thats what I think).
It actually makes no difference if HTTP::collect is used in HTTP_RESPONSE or not.
Any idea anyone?
19-Oct-2020
09:53
- last edited on
04-Jun-2023
21:14
by
JimmyPackets
Hello.
Try this:
when HTTP_REQUEST_DATA {
set request_payload [HTTP::payload]
HTTP::release
}
when HTTP_RESPONSE_DATA {
set response_payload [HTTP::payload]
HSL::send [HSL::open -proto UDP -pool syslog_server] "HSL TEST: BLA"
HTTP::release
}
REF - https://clouddocs.f5.com/api/irules/HTTP__release.html
Regards,
Dario.
29-Oct-2020
02:20
- last edited on
04-Jun-2023
21:13
by
JimmyPackets
Thank you for your response.
I modified my iRule but this doesn't work either
when HTTP_REQUEST_DATA {
set request_payload [HTTP::payload]
HTTP::release
}
when HTTP_RESPONSE_DATA {
set response_payload [HTTP::payload]
HTTP::release
}
when HTTP_REQUEST {
set request_payload ""
set response_payload ""
set client_ip [getfield [IP::remote_addr] "%" 1]
set http_method [HTTP::method]
set port [TCP::local_port]
if { $http_method eq "POST" } {
if { [HTTP::header Content-Length] != "" } {
HTTP::collect [HTTP::header Content-Length]
} else {
HTTP::collect 1048576
}
}
}
when HTTP_RESPONSE
{
if { $http_method eq "POST" } {
if { [HTTP::header Content-Length] != "" } {
HTTP::collect [HTTP::header Content-Length]
} else {
HTTP::collect 1048576
}
HSL::send [HSL::open -proto UDP -pool syslog_server] "HSL TEST:\n\nClient: $client_ip\n\nRequest Data: $request_payload\n\nResponse Data: $response_payload"
}
}