aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/eval_python.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/modules/eval_python.py b/modules/eval_python.py
index 86fe3db3..5fcdec4b 100644
--- a/modules/eval_python.py
+++ b/modules/eval_python.py
@@ -2,12 +2,24 @@ import html, socket
from src import ModuleManager, utils
EVAL_TEMPLATE = """
-import sys
+import StringIO, sys
+
compiled = compile(sys.stdin.read(), "code", "single")
-result = eval(compiled)
-print("")
+
+old_stdout = sys.stdout
+stdout = StringIO.StringIO()
+sys.stdout = stdout
+
+try:
+ result = eval(compiled)
+except Exception as e:
+ old_stdout.write(json.dumps({"success" False, "out": str(e)}))
+ sys.exit()
+
+stdout.write("\n")
if not result == None:
- sys.stdout.write(str(result))
+ stdout.write(str(result)+"\n")
+old_stdout.write(json.dumps({"success" True, "out": stdout.getvalue()}))
"""
EVAL_URL = "https://tpcg.tutorialspoint.com/tpcg.php"