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