mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 18:18:19 +00:00
Updates for the urls.bro script. Fixes BIT-1404.
This commit is contained in:
parent
2b1cd66f17
commit
097354a43f
3 changed files with 48 additions and 16 deletions
|
@ -6,23 +6,23 @@ const url_regex = /^([a-zA-Z\-]{3,5})(:\/\/[^\/?#"'\r\n><]*)([^?#"'\r\n><]*)([^[
|
|||
## A URI, as parsed by :bro:id:`decompose_uri`.
|
||||
type URI: record {
|
||||
## The URL's scheme..
|
||||
scheme: string &optional;
|
||||
scheme: string &optional;
|
||||
## The location, which could be a domain name or an IP address. Left empty if not
|
||||
## specified.
|
||||
netlocation: string;
|
||||
netlocation: string;
|
||||
## Port number, if included in URI.
|
||||
portnum: count &optional;
|
||||
portnum: count &optional;
|
||||
## Full including the file name. Will be '/' if there's not path given.
|
||||
path: string;
|
||||
path: string;
|
||||
## Full file name, including extension, if there is a file name.
|
||||
file_name: string &optional;
|
||||
file_name: string &optional;
|
||||
## The base filename, without extension, if there is a file name.
|
||||
file_base: string &optional;
|
||||
file_base: string &optional;
|
||||
## The filename's extension, if there is a file name.
|
||||
file_ext: string &optional;
|
||||
file_ext: string &optional;
|
||||
## A table of all query parameters, mapping their keys to values, if there's a
|
||||
## query.
|
||||
params: table[string] of string &optional;
|
||||
params: table[string] of string &optional;
|
||||
};
|
||||
|
||||
## Extracts URLs discovered in arbitrary text.
|
||||
|
@ -46,19 +46,19 @@ function find_all_urls_without_scheme(s: string): string_set
|
|||
return return_urls;
|
||||
}
|
||||
|
||||
function decompose_uri(s: string): URI
|
||||
function decompose_uri(uri: string): URI
|
||||
{
|
||||
local parts: string_vec;
|
||||
local u: URI = [$netlocation="", $path="/"];
|
||||
local u = URI($netlocation="", $path="/");
|
||||
local s = uri;
|
||||
|
||||
if ( /\?/ in s)
|
||||
if ( /\?/ in s )
|
||||
{
|
||||
# Parse query.
|
||||
u$params = table();
|
||||
|
||||
parts = split_string1(s, /\?/);
|
||||
s = parts[0];
|
||||
local query: string = parts[1];
|
||||
local query = parts[1];
|
||||
|
||||
if ( /&/ in query )
|
||||
{
|
||||
|
@ -73,7 +73,7 @@ function decompose_uri(s: string): URI
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else if ( /=/ in query )
|
||||
{
|
||||
parts = split_string1(query, /=/);
|
||||
u$params[parts[0]] = parts[1];
|
||||
|
@ -97,14 +97,14 @@ function decompose_uri(s: string): URI
|
|||
|
||||
if ( |u$path| > 1 && u$path[|u$path| - 1] != "/" )
|
||||
{
|
||||
local last_token: string = find_last(u$path, /\/.+/);
|
||||
local last_token = find_last(u$path, /\/.+/);
|
||||
local full_filename = split_string1(last_token, /\//)[1];
|
||||
|
||||
if ( /\./ in full_filename )
|
||||
{
|
||||
u$file_name = full_filename;
|
||||
u$file_base = split_string1(full_filename, /\./)[0];
|
||||
u$file_ext = split_string1(full_filename, /\./)[1];
|
||||
u$file_ext = split_string1(full_filename, /\./)[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -122,7 +122,9 @@ function decompose_uri(s: string): URI
|
|||
u$portnum = to_count(parts[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
u$netlocation = s;
|
||||
}
|
||||
|
||||
return u;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue