author | Mikael Berthe <mikael@lilotux.net> |
Tue, 31 Jul 2012 18:52:47 +0200 | |
changeset 3 | de3dceee742e |
permissions | -rw-r--r-- |
3
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
1 |
# HG changeset patch |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
2 |
# User Mikael Berthe <mikael@lilotux.net> |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
3 |
mod_admin_telnet: introduce a global function console_incoming_message() |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
4 |
This patch moves code from console_listener.onincoming() into a new global |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
5 |
function so that it can be used in other modules. |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
6 |
|
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
7 |
diff -r 9962fc19f9e9 plugins/mod_admin_telnet.lua |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
8 |
--- a/plugins/mod_admin_telnet.lua Sat Jul 28 01:28:14 2012 +0100 |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
9 |
+++ b/plugins/mod_admin_telnet.lua Sat Jul 28 18:14:31 2012 +0200 |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
10 |
@@ -72,19 +72,7 @@ function console:new_session(conn) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
11 |
return session; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
12 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
13 |
|
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
14 |
-local sessions = {}; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
15 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
16 |
-function console_listener.onconnect(conn) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
17 |
- -- Handle new connection |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
18 |
- local session = console:new_session(conn); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
19 |
- sessions[conn] = session; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
20 |
- printbanner(session); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
21 |
- session.send(string.char(0)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
22 |
-end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
23 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
24 |
-function console_listener.onincoming(conn, data) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
25 |
- local session = sessions[conn]; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
26 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
27 |
+function console_incoming_message(session, data) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
28 |
local partial = session.partial_data; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
29 |
if partial then |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
30 |
data = partial..data; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
31 |
@@ -110,7 +98,7 @@ function console_listener.onincoming(con |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
32 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
33 |
|
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
34 |
session.env._ = line; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
35 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
36 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
37 |
local chunkname = "=console"; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
38 |
local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
39 |
local chunk, err = envload("return "..line, chunkname, env); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
40 |
@@ -124,20 +112,20 @@ function console_listener.onincoming(con |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
41 |
break; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
42 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
43 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
44 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
45 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
46 |
local ranok, taskok, message = pcall(chunk); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
47 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
48 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
49 |
if not (ranok or message or useglobalenv) and commands[line:lower()] then |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
50 |
commands[line:lower()](session, line); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
51 |
break; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
52 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
53 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
54 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
55 |
if not ranok then |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
56 |
session.print("Fatal error while running command, it did not complete"); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
57 |
session.print("Error: "..taskok); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
58 |
break; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
59 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
60 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
61 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
62 |
if not message then |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
63 |
session.print("Result: "..tostring(taskok)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
64 |
break; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
65 |
@@ -146,15 +134,30 @@ function console_listener.onincoming(con |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
66 |
session.print("Message: "..tostring(message)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
67 |
break; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
68 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
69 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
70 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
71 |
session.print("OK: "..tostring(message)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
72 |
until true |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
73 |
- |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
74 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
75 |
session.send(string.char(0)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
76 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
77 |
session.partial_data = data:match("[^\n]+$"); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
78 |
end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
79 |
|
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
80 |
+local sessions = {}; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
81 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
82 |
+function console_listener.onconnect(conn) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
83 |
+ -- Handle new connection |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
84 |
+ local session = console:new_session(conn); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
85 |
+ sessions[conn] = session; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
86 |
+ printbanner(session); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
87 |
+ session.send(string.char(0)); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
88 |
+end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
89 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
90 |
+function console_listener.onincoming(conn, data) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
91 |
+ local session = sessions[conn]; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
92 |
+ console_incoming_message(session, data); |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
93 |
+end |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
94 |
+ |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
95 |
function console_listener.ondisconnect(conn, err) |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
96 |
local session = sessions[conn]; |
de3dceee742e
Add patch for Prosody (dev. tree)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
97 |
if session then |