Improved HTTP::build_url function.

- Scripts now deal with host headers containing the port value.
- build_url function copes with missing the request now
  (only seeing the response for some reason).
This commit is contained in:
Seth Hall 2011-05-10 13:49:55 -04:00
parent a1f9ba8b1b
commit c0ff43fd4a
5 changed files with 11 additions and 10 deletions

View file

@ -155,7 +155,8 @@ event http_header(c: connection, is_orig: bool, name: string, value: string) &pr
c$http$referrer = value;
else if ( name == "HOST" )
c$http$host = value;
# The split is done to remove the occasional port value that shows up here.
c$http$host = split1(value, /:/)[1];
else if ( name == "CONTENT-LENGTH" )
c$http$request_content_length = to_count(strip(value));

View file

@ -29,7 +29,7 @@ event signature_match(state: signature_state, msg: string, data: string) &priori
local c = state$conn;
local si = Software::parse(msg, c$id$resp_h, WEB_APPLICATION);
si$url = build_url(c);
si$url = build_url(c$http);
if ( c$id$resp_h in Software::tracked &&
si$name in Software::tracked[c$id$resp_h] )
{

View file

@ -72,7 +72,7 @@ event http_message_done(c: connection, is_orig: bool, stat: http_message_stat) &
if ( c$http$calculating_md5 )
{
local url = build_url(c);
local url = build_url(c$http);
c$http$calculating_md5 = F;
c$http$md5 = md5_hash_finish(c$id);

View file

@ -76,7 +76,7 @@ event signature_match(state: signature_state, msg: string, data: string) &priori
if ( msg in mime_types_extensions &&
c$http?$uri && mime_types_extensions[msg] !in c$http$uri )
{
local url = build_url(c);
local url = build_url(c$http);
local message = fmt("%s %s %s", msg, c$http$method, url);
NOTICE([$note=HTTP_IncorrectFileType,
$msg=message,

View file

@ -6,7 +6,7 @@ module HTTP;
export {
global extract_keys: function(data: string, kv_splitter: pattern): string_vec;
global build_url: function(c: connection): string;
global build_url: function(h: Info): string;
}
@ -24,11 +24,11 @@ function extract_keys(data: string, kv_splitter: pattern): string_vec
return key_vec;
}
function build_url(c: connection): string
function build_url(h: Info): string
{
if ( ! c?$http ) return "";
local host = c$http?$host ? c$http$host : fmt("%s:%d", c$id$resp_h, c$id$resp_p);
local uri = c$http?$uri ? c$http$uri : "/<missed_request>";
local uri = h?$uri ? h$uri : "/<missed_request>";
local host = h?$host ? h$host : fmt("%s", h$id$resp_h);
if ( h$id$resp_p != 80/tcp )
host = fmt("%s:%s", host, h$id$resp_p);
return fmt("http://%s%s", host, uri);
}