diff options
| -rw-r--r-- | rmq.py | 6 | ||||
| -rw-r--r-- | snekbox.py | 21 | ||||
| -rw-r--r-- | snekweb.py | 2 | 
3 files changed, 19 insertions, 10 deletions
| @@ -111,13 +111,11 @@ class Rmq(object):                      properties=self.properties)                  if result: -                    log.info((f"published message: {self.host} " -                              f"port: {self.port} " -                              f"exchange: {exchange} " +                    log.info((f"published: {self.host} "                                f"queue: {queue} "                                f"message: {message}"))                  else: -                    log.error(f"Messge '{message}' not delivered") +                    log.error(f"Message '{message}' not delivered")              except ConnectionClosed:                  log.error(f"Could not send message, connection to {self.host} was lost") @@ -16,24 +16,35 @@ def execute(body):      failed = False      old_stdout = sys.stdout +    old_stderr = sys.stderr      redirected_output = sys.stdout = io.StringIO() +    redirected_error = sys.stderr = io.StringIO() +    snek_msg = json.loads(msg) +    snekid = snek_msg['snekid'] +    snekcode = snek_msg['message'].strip()      try: - -        snek_msg = json.loads(msg) -        for snekid, snekcode in snek_msg.items(): -            exec(snekcode) +        exec(snekcode)      except Exception as e:          failed = str(e)      finally:          sys.stdout = old_stdout +        sys.stderr = old_stderr      if failed:          result = failed.strip() +        log.debug(f"this was captured via exception: {result}") + +    result_err = redirected_error.getvalue().strip() +    result_ok = redirected_output.getvalue().strip() -    result = redirected_output.getvalue().strip() +    if result_err: +        log.debug(f"this was captured via stderr: {result_err}") +        result = result_err +    if result_ok: +        result = result_ok      log.info(f"outgoing: {result}") @@ -54,7 +54,7 @@ def websocket_route(ws, snekboxid):          while not ws.closed:              message = ws.receive()              if message: -                snek_msg = json.dumps({snekboxid: message}) +                snek_msg = json.dumps({"snekid": snekboxid, "message": message})                  log.info(f"User {snekboxid} sends message\n{message.strip()}")                  rmq.publish(snek_msg) | 
