Index: scripts/ssh-hostkey.nse
===================================================================
--- scripts/ssh-hostkey.nse (revision 22115)
+++ scripts/ssh-hostkey.nse (working copy)
@@ -51,7 +51,7 @@
portrule = function() return false end
action = function() end
stdnse.print_debug( 3, "Skipping %s script because OpenSSL is missing.",
- filename)
+ SCRIPT_NAME)
return;
end
Index: docs/scripting.xml
===================================================================
--- docs/scripting.xml (revision 22115)
+++ docs/scripting.xml (working copy)
@@ -1252,6 +1252,7 @@
"prerule", "hostrule",
"portrule" or
"postrule".
+ This variable is available only inside the action and the rule functions.
Index: nse_main.lua
===================================================================
--- nse_main.lua (revision 22115)
+++ nse_main.lua (working copy)
@@ -303,6 +303,7 @@
local script_type = assert(NSE_SCRIPT_RULES[rule]);
if not self[rule] then return nil end -- No rule for this script?
local file_closure = self.file_closure;
+ -- Rebuild the environment for the running thread.
local env = {
SCRIPT_PATH = self.filename,
SCRIPT_NAME = self.short_basename,
@@ -366,10 +367,15 @@
"Warning: Loading '%s' -- the recommended file extension is '.nse'.",
filename);
end
+ local basename = match(filename, "[/\\]([^/\\]-)$") or filename;
+ local short_basename = match(filename, "[/\\]([^/\\]-)%.nse$") or
+ match(filename, "[/\\]([^/\\]-)%.[^.]*$") or
+ filename;
local file_closure = assert(loadfile(filename));
-- Give the closure its own environment, with global access
local env = {
- filename = filename,
+ SCRIPT_PATH = filename,
+ SCRIPT_NAME = short_basename,
dependencies = {},
};
setmetatable(env, {__index = _G});
@@ -412,11 +418,9 @@
-- Return the script
local script = {
filename = filename,
- basename = match(filename, "[/\\]([^/\\]-)$") or filename,
- short_basename = match(filename, "[/\\]([^/\\]-)%.nse$") or
- match(filename, "[/\\]([^/\\]-)%.[^.]*$") or
- filename,
- id = match(filename, "^.-[/\\]([^\\/]-)%.nse$") or filename,
+ basename = basename,
+ short_basename = short_basename,
+ id = match(filename, "^.-[/\\]([^\\/]-)%.nse$") or short_basename,
file_closure = file_closure,
prerule = prerule,
hostrule = hostrule,