Index: nse_main.lua =================================================================== --- nse_main.lua (revision 29856) +++ nse_main.lua (working copy) @@ -401,7 +401,7 @@ co = co, env = env, identifier = tostring(co), - info = format("'%s' (%s)", self.short_basename, tostring(co)); + info = format("'%s' (%s)", self.id, tostring(co)); type = script_type, close_handlers = {}, }; @@ -837,7 +837,7 @@ port = current.port, type = current.type, parent = current.parent, - info = format("'%s' worker (%s)", current.short_basename, tostring(co)); + info = format("'%s' (worker %s)", current.id, tostring(co)); close_handlers = {}, -- d = function(...) end, -- output no debug information }; @@ -857,6 +857,12 @@ rawset(stdnse, "base", function () return current and current.co; end); + rawset(stdnse, "gettinfo", function () + return current and current.info; + end); + rawset(stdnse, "getid", function () + return current and current.id; + end); while threads_iter and num_threads < CONCURRENCY_LIMIT do local thread = threads_iter() @@ -1291,6 +1297,8 @@ -- These functions do not exist until we are executing action functions. rawset(stdnse, "new_thread", nil) rawset(stdnse, "base", nil) + rawset(stdnse, "gettinfo", nil) + rawset(stdnse, "getid", nil) for runlevel, scripts in ipairs(runlevels) do -- This iterator is passed to the run function. It returns one new script Index: nselib/stdnse.lua =================================================================== --- nselib/stdnse.lua (revision 29856) +++ nselib/stdnse.lua (working copy) @@ -58,45 +58,78 @@ -- Prints a formatted debug message if the current debugging level is greater -- than or equal to a given level. -- --- This is a convenience wrapper around --- nmap.log_write. The first optional numeric --- argument, level, is used as the debugging level necessary --- to print the message (it defaults to 1 if omitted). All remaining arguments --- are processed with Lua's string.format function. +-- This is a convenience wrapper around nmap.log_write. The first +-- optional numeric argument, level, is used as the debugging level +-- necessary to print the message (it defaults to 1 if omitted). All remaining +-- arguments are processed with Lua's string.format function. +-- +-- If known, the output includes some context based information: the script +-- identifier and the base thread identifier. +-- -- @param level Optional debugging level. -- @param fmt Format string. -- @param ... Arguments to format. -print_debug = function(level, fmt, ...) - local l, d = tonumber(level), nmap.debugging(); - if l and l <= d then - nmap.log_write("stdout", format(fmt, ...)); - elseif not l and 1 <= d then - nmap.log_write("stdout", format(level, fmt, ...)); +function debug (level, fmt, ...) + local current = nmap.debugging() + if type(level) == "number" then + if level <= current then + local info = gettinfo() + if info then + nmap.log_write("stdout", "["..info.."] "..format(fmt, ...)) + else + nmap.log_write("stdout", format(fmt, ...)) + end + end + elseif 1 <= current then + -- level is fmt and fmt is first argument + local info = gettinfo() + if info then + nmap.log_write("stdout", "["..info.."] "..format(level, fmt, ...)) + else + nmap.log_write("stdout", format(level, fmt, ...)) + end end end +_ENV.print_debug = debug -- alias for older name --- -- Prints a formatted verbosity message if the current verbosity level is greater -- than or equal to a given level. -- --- This is a convenience wrapper around --- nmap.log_write. The first optional numeric --- argument, level, is used as the verbosity level necessary --- to print the message (it defaults to 1 if omitted). All remaining arguments --- are processed with Lua's string.format function. +-- This is a convenience wrapper around nmap.log_write. The first +-- optional numeric argument, level, is used as the verbosity level +-- necessary to print the message (it defaults to 1 if omitted). All remaining +-- arguments are processed with Lua's string.format function. +-- +-- If known, the output includes some context based information: the script +-- identifier. +-- -- @param level Optional verbosity level. -- @param fmt Format string. -- @param ... Arguments to format. -print_verbose = function(level, fmt, ...) - local l, d = tonumber(level), nmap.verbosity(); - if l and l <= d then - nmap.log_write("stdout", format(fmt, ...)); - elseif not l and 1 <= d then - nmap.log_write("stdout", format(level, fmt, ...)); +function verbose (level, fmt, ...) + local current = nmap.verbosity() + if type(level) == "number" then + if level <= current then + local id = getid() + if id then + nmap.log_write("stdout", "["..id.."] "..format(fmt, ...)) + else + nmap.log_write("stdout", format(fmt, ...)) + end + end + elseif 1 <= current then + -- level is fmt and fmt is first argument + local id = getid() + if id then + nmap.log_write("stdout", "["..id.."] "..format(level, fmt, ...)) + else + nmap.log_write("stdout", format(level, fmt, ...)) + end end end +_ENV.print_verbose = verbose -- alias for older name - --- Join a list of strings with a separator string. -- -- This is Lua's table.concat function with the parameters