Add patch for Prosody (dev. tree)
# HG changeset patch
# User Mikael Berthe <mikael@lilotux.net>
mod_admin_telnet: introduce a global function console_incoming_message()
This patch moves code from console_listener.onincoming() into a new global
function so that it can be used in other modules.
diff -r 9962fc19f9e9 plugins/mod_admin_telnet.lua
--- a/plugins/mod_admin_telnet.lua Sat Jul 28 01:28:14 2012 +0100
+++ b/plugins/mod_admin_telnet.lua Sat Jul 28 18:14:31 2012 +0200
@@ -72,19 +72,7 @@ function console:new_session(conn)
return session;
end
-local sessions = {};
-
-function console_listener.onconnect(conn)
- -- Handle new connection
- local session = console:new_session(conn);
- sessions[conn] = session;
- printbanner(session);
- session.send(string.char(0));
-end
-
-function console_listener.onincoming(conn, data)
- local session = sessions[conn];
-
+function console_incoming_message(session, data)
local partial = session.partial_data;
if partial then
data = partial..data;
@@ -110,7 +98,7 @@ function console_listener.onincoming(con
end
session.env._ = line;
-
+
local chunkname = "=console";
local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil
local chunk, err = envload("return "..line, chunkname, env);
@@ -124,20 +112,20 @@ function console_listener.onincoming(con
break;
end
end
-
+
local ranok, taskok, message = pcall(chunk);
-
+
if not (ranok or message or useglobalenv) and commands[line:lower()] then
commands[line:lower()](session, line);
break;
end
-
+
if not ranok then
session.print("Fatal error while running command, it did not complete");
session.print("Error: "..taskok);
break;
end
-
+
if not message then
session.print("Result: "..tostring(taskok));
break;
@@ -146,15 +134,30 @@ function console_listener.onincoming(con
session.print("Message: "..tostring(message));
break;
end
-
+
session.print("OK: "..tostring(message));
until true
-
+
session.send(string.char(0));
end
session.partial_data = data:match("[^\n]+$");
end
+local sessions = {};
+
+function console_listener.onconnect(conn)
+ -- Handle new connection
+ local session = console:new_session(conn);
+ sessions[conn] = session;
+ printbanner(session);
+ session.send(string.char(0));
+end
+
+function console_listener.onincoming(conn, data)
+ local session = sessions[conn];
+ console_incoming_message(session, data);
+end
+
function console_listener.ondisconnect(conn, err)
local session = sessions[conn];
if session then