diff options
| author | 2018-10-12 11:56:13 +0100 | |
|---|---|---|
| committer | 2018-10-12 11:56:13 +0100 | |
| commit | b2dd75d68fb3e527c006d434c30c25e206971aec (patch) | |
| tree | 5b525c01300ad1b03023612c674bbcc6b793850d | |
| parent | Use decimal.Decimal in utils.parse_number (diff) | |
| signature | ||
Use a more reliable API for evaling python
| -rw-r--r-- | modules/eval_python.py | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/modules/eval_python.py b/modules/eval_python.py index 281cba97..f6765134 100644 --- a/modules/eval_python.py +++ b/modules/eval_python.py @@ -1,7 +1,7 @@ import socket from src import ModuleManager, utils -EVAL_URL = "https://eval.appspot.com/eval" +EVAL_URL = "https://pyeval.appspot.com/exec" class Module(ModuleManager.BaseModule): _name = "Python" @@ -12,17 +12,27 @@ class Module(ModuleManager.BaseModule): :help: Evaluate a python statement :usage: <statement> """ + id = None try: - code, page = utils.http.get_url(EVAL_URL, get_params={ - "statement": event["args"]}, code=True) - except socket.timeout: - event["stderr"].write("%s: eval timed out" % - event["user"].nickname) - return + id = utils.http.get_url(EVAL_URL, + post_data={"input": event["args"]}, + method="POST") + except: + pass - if not page == None and code == 200: - event["stdout"].write("%s: %s" % (event["user"].nickname, - page)) - else: - event["stderr"].write("%s: failed to eval" % - event["user"].nickname) + if not id == None: + try: + page = utils.http.get_url(EVAL_URL, + get_params={"id": id}, + json=True) + except socket.timeout: + event["stderr"].write("%s: eval timed out" % + event["user"].nickname) + return + + if page: + event["stdout"].write("%s: %s" % (event["user"].nickname, + page["output"].strip("\n"))) + return + + event["stderr"].write("%s: failed to eval" % event["user"].nickname) |
