fkw
Oct 06, 2020Nimbostratus
Logging response data
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?