Forum Discussion
hooleylist
Dec 13, 2010Cirrostratus
Maybe something like this?
when RULE_INIT {
Default amount of request payload to collect (in bytes)
set static::collect_length 2048
}
when HTTP_REQUEST {
Only check POST requests
if {([HTTP::method] eq "POST") && ([HTTP::uri] eq "/test")} {
Check for a non-existent Content-Length header
if {[HTTP::header Content-Length] eq ""}{
Use default collect length of 1k for POSTs without a Content-Length header
set collect_length $static::collect_length
} elseif {[HTTP::header Content-Length] == 0}{
Don't try collect a payload if there isn't one
unset collect_length
} elseif {[HTTP::header Content-Length] > $static::collect_length}{
Use default collect length
set collect_length $static::collect_length
} else {
Collect the actual payload length
set collect_length [HTTP::header Content-Length]
}
If the POST Content-Length isn't 0, collect (a portion of) the payload
if {[info exists collect_length]}{
Trigger collection of the request payload
HTTP::collect $collect_length
}
}
}
when HTTP_REQUEST_DATA {
set relay [URI::decode [URI::query "?[HTTP::payload]" Relay]]
if {$relay ne ""}{
HTTP::redirect "https://test.com$relay"
}
}
Aaron