aboutsummaryrefslogtreecommitdiff
path: root/modules/eval_lua.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-10-09 22:15:27 +0100
committerGravatar jesopo2018-10-09 22:15:27 +0100
commit88e523c3deaf6d4b95ad46a072a5f61211e5a87c (patch)
treed43de00726a59628906f1445e9aee6aaafd02aa9 /modules/eval_lua.py
parent.kill() a process when it times out (diff)
signature
Add modules/eval_lua.py
Diffstat (limited to 'modules/eval_lua.py')
-rw-r--r--modules/eval_lua.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/eval_lua.py b/modules/eval_lua.py
new file mode 100644
index 00000000..b3ff07d4
--- /dev/null
+++ b/modules/eval_lua.py
@@ -0,0 +1,26 @@
+import socket
+from src import ModuleManager, utils
+
+EVAL_URL = "https://www.lua.org/cgi-bin/demo"
+
+class Module(ModuleManager.BaseModule):
+ _name = "Lua"
+ @utils.hook("received.command.lua", min_args=1)
+ def eval(self, event):
+ try:
+ page = utils.http.get_url(EVAL_URL,
+ post_params={"input": event["args"]},
+ method="POST",
+ soup=True)
+ except socket.timeout:
+ event["stderr"].write("%s: eval timed out" %
+ event["user"].nickname)
+ return
+
+ if page:
+ textareas = page.find_all("textarea")
+ if len(textareas) > 1:
+ out = textareas[1].text.strip()
+ event["stdout"].write("%s: %s" % (event["user"].nickname, out))
+ else:
+ event["stderr"].write("%s: failed to eval" % event["user"].nickname)