diff --git a/nselib/http.lua b/nselib/http.lua index dc37efda5..6e6779553 100644 --- a/nselib/http.lua +++ b/nselib/http.lua @@ -729,9 +729,8 @@ end -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies -- @return Request String -local buildGet = function( host, port, path, options, cookies ) +local buildGet = function(host, port, path, options) options = options or {} -- Private copy of the options table, used to add default header fields. @@ -741,8 +740,8 @@ local buildGet = function( host, port, path, options, cookies ) ["User-Agent"] = USER_AGENT } } - if cookies then - local cookies = buildCookies(cookies, path) + if options.cookies then + local cookies = buildCookies(options.cookies, path) if #cookies > 0 then mod_options["header"]["Cookie"] = cookies end end @@ -764,9 +763,8 @@ end -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies -- @return Request String -local buildHead = function( host, port, path, options, cookies ) +local buildHead = function(host, port, path, options) local options = options or {} -- Private copy of the options table, used to add default header fields. @@ -776,8 +774,8 @@ local buildHead = function( host, port, path, options, cookies ) ["User-Agent"] = USER_AGENT } } - if cookies then - local cookies = buildCookies(cookies, path) + if options.cookies then + local cookies = buildCookies(options.cookies, path) if #cookies > 0 then mod_options["header"]["Cookie"] = cookies end end if options and options.connection @@ -803,7 +801,7 @@ end -- keys and values must be strings, and they will be encoded into an -- application/x-www-form-encoded form submission. -- @return Request String -local buildPost = function( host, port, path, options, cookies, postdata) +local buildPost = function( host, port, path, options, postdata) local mod_options = { header = { Host = get_host_field(host, port), @@ -826,8 +824,8 @@ local buildPost = function( host, port, path, options, cookies, postdata) mod_options.content = postdata - if cookies then - local cookies = buildCookies(cookies, path) + if options.cookies then + local cookies = buildCookies(options.cookies, path) if #cookies > 0 then mod_options["header"]["Cookie"] = cookies end end @@ -1006,19 +1004,18 @@ end -- host table passed to a portrule or hostrule. The second argument is either -- the port number or a table like the port table passed to a portrule or -- hostrule. The third argument is the path of the resource. The fourth argument --- is a table for further options. The fifth argument is a cookie table. +-- is a table for further options. -- The function calls buildGet to build the request, then calls request to send -- it and get the response. -- @param host The host to query. -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies -- @return Table as described in the module description. -get = function( host, port, path, options, cookies ) +get = function(host, port, path, options) local response, state = lookup_cache("GET", host, port, path, options); if response == nil then - local data, mod_options = buildGet(host, port, path, options, cookies) + local data, mod_options = buildGet(host, port, path, options) data = buildRequest(data, mod_options) response = request(host, port, data) insert_cache(state, response); @@ -1061,19 +1058,18 @@ end -- host table passed to a portrule or hostrule. The second argument is either -- the port number or a table like the port table passed to a portrule or -- hostrule. The third argument is the path of the resource. The fourth argument --- is a table for further options. The fifth argument is a cookie table. +-- is a table for further options. -- The function calls buildHead to build the request, then calls request to -- send it get the response. -- @param host The host to query. -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies -- @return Table as described in the module description. -head = function( host, port, path, options, cookies ) +head = function(host, port, path, options) local response, state = lookup_cache("HEAD", host, port, path, options); if response == nil then - local data, mod_options = buildHead(host, port, path, options, cookies) + local data, mod_options = buildHead(host, port, path, options) data = buildRequest(data, mod_options) response = request(host, port, data) insert_cache(state, response); @@ -1087,7 +1083,7 @@ end -- host table passed to a portrule or hostrule. The second argument is either -- the port number or a table like the port table passed to a portrule or -- hostrule. The third argument is the path of the resource. The fourth argument --- is a table for further options. The fifth argument is a cookie table. The sixth +-- is a table for further options. The fifth argument is ignored. The sixth -- argument is a table with data to be posted. -- The function calls buildHead to build the request, then calls request to -- send it and get the response. @@ -1095,13 +1091,13 @@ end -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies +-- @param ignored Ignored for backwards compatibility. -- @param postdata A string or a table of data to be posted. If a table, the -- keys and values must be strings, and they will be encoded into an -- application/x-www-form-encoded form submission. -- @return Table as described in the module description. -post = function( host, port, path, options, cookies, postdata ) - local data, mod_options = buildPost(host, port, path, options, cookies, postdata) +post = function( host, port, path, options, ignored, postdata ) + local data, mod_options = buildPost(host, port, path, options, postdata) data = buildRequest(data, mod_options) local response = request(host, port, data) return response @@ -1113,16 +1109,16 @@ end -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies +-- @param ignored Ignored for backwards compatibility. -- @param allReqs A table with all the pipeline requests -- @return Table with the pipeline get requests (plus this new one) -function pGet( host, port, path, options, cookies, allReqs ) +function pGet( host, port, path, options, ignored, allReqs ) local req = {} if not allReqs then allReqs = {} end if not options then options = {} end local object = {data="", opts="", method="get"} options.connection = "Keep-alive" - object["data"], object["opts"] = buildGet(host, port, path, options, cookies) + object["data"], object["opts"] = buildGet(host, port, path, options) allReqs[#allReqs + 1] = object return allReqs end @@ -1133,16 +1129,16 @@ end -- @param port The port for the host. -- @param path The path of the resource. -- @param options A table of options, as with http.request. --- @param cookies A table with cookies +-- @param ignored Ignored for backwards compatibility. -- @param allReqs A table with all the pipeline requests -- @return Table with the pipeline get requests (plus this new one) -function pHead( host, port, path, options, cookies, allReqs ) +function pHead( host, port, path, options, ignored, allReqs ) local req = {} if not allReqs then allReqs = {} end if not options then options = {} end local object = {data="", opts="", method="head"} options.connection = "Keep-alive" - object["data"], object["opts"] = buildHead(host, port, path, options, cookies) + object["data"], object["opts"] = buildHead(host, port, path, options) allReqs[#allReqs + 1] = object return allReqs end @@ -1263,6 +1259,7 @@ end -- * timeout: A timeout used for socket operations. -- * header: A table containing additional headers to be used for the request. -- * content: The content of the message (content-length will be added -- set header['Content-Length'] to override) +-- * cookies: A table of cookies in the form returned by parse_set_cookie. -- * bypass_cache: The contents of the cache is ignored for the request (method == "GET" or "HEAD") -- * no_cache: The result of the request is not saved in the cache (method == "GET" or "HEAD"). -- * no_cache_body: The body of the request is not saved in the cache (method == "GET" or "HEAD").