Nmap Development mailing list archives
Re: parse_timespec function
From: Michael Pattrick <mpattrick () rhinovirus org>
Date: Tue, 6 Apr 2010 07:40:47 -0400
On Mon, Apr 5, 2010 at 4:02 PM, David Fifield <david () bamsoftware com> wrote:
On Fri, Apr 02, 2010 at 04:54:38PM -0700, Fyodor wrote:On Fri, Apr 02, 2010 at 07:01:56PM -0400, Michael Pattrick wrote:Other scripts take time arguments in seconds, not minutes. It's not the best for this script but I'd like it if you make this script work that way too. In the future we should have a standard function for parsing a time specification like "60s" or "1m".I have implemented it to stay consistent with the new argument name, but I don't think it works well... No one would be running a fuzzer for less then one minute.Yeah, it will be better when we have a custom time parsing function for NSE like David suggested. We already have one for Nmap proper. I've added it to docs/TODO. But for now, I think standardizing on seconds like you've done makes sense. While it may be slightly annnoying to type in 1200 rather than 20 to run for 20 minutes, it beats having to look up the documentation each time or to get it wrong.Here's a proposed function to go in stdnse. --- -- Parses a time duration specification, which is a number followed by a -- unit, and returns a number of seconds. The unit is optional and -- defaults to seconds. The possible units (case-insensitive) are -- * <code>s</code>: seconds, -- * <code>m</code>: minutes, -- * <code>h</code>: hours. -- In case of a parsing error, the function returns <code>nil</code> -- followed by an error message. -- -- @usage -- parse_timespec("10") --> 10 -- parse_timespec("10s") --> 10 -- parse_timespec("10m") --> 600 -- parse_timespec("10h") --> 3600 -- parse_timespec("10z") --> nil, "Can't parse time specification \"10z\" (bad unit \"z\"" -- -- @param timespec A time specification string. -- @return A number of seconds, or <code>nil</code> followed by an error -- message. function parse_timespec(timespec) local n, unit local multiplier n, unit = string.match(timespec, "^(%d+)(.*)$") if not n then return nil, string.format("Can't parse time specification \"%s\"", timespec) end n = tonumber(n) assert(n) unit = string.lower(unit) if unit == "" or unit == "s" then multiplier = 1 elseif unit == "m" then multiplier = 60 elseif unit == "h" then multiplier = 60 * 60 else return nil, string.format("Can't parse time specification \"%s\" (bad unit \"%s\")", timespec, unit) end return n * multiplier end If this looks good, I'll commit it and change scripts to use it where appropriate. David Fifield
The following line: -- parse_timespec("10h") --> 3600 Should probably be: -- parse_timespec("10h") --> 36000 Other then that it looks good. -M _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://seclists.org/nmap-dev/
Current thread:
- Re: DNS fuzzer David Fifield (Apr 02)
- Re: DNS fuzzer Michael Pattrick (Apr 02)
- Re: DNS fuzzer Fyodor (Apr 02)
- parse_timespec function David Fifield (Apr 05)
- Re: parse_timespec function Michael Pattrick (Apr 06)
- Re: parse_timespec function Fyodor (Apr 07)
- Re: parse_timespec function David Fifield (Apr 08)
- Re: parse_timespec function Fyodor (Apr 08)
- Re: parse_timespec function David Fifield (Apr 15)
- Re: parse_timespec function David Fifield (Apr 13)
- Re: DNS fuzzer Fyodor (Apr 02)
- Re: DNS fuzzer Michael Pattrick (Apr 02)
- Re: DNS fuzzer Michael Pattrick (Apr 03)
- Re: DNS fuzzer' David Fifield (Apr 03)
- <Possible follow-ups>
- Re: DNS fuzzer Michael Pattrick (Apr 02)
- Re: DNS fuzzer David Fifield (Apr 02)