~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/console/service.py

  • Committer: William Grant
  • Date: 2010-07-28 04:13:05 UTC
  • mfrom: (1801.1.2 die-cjson-die)
  • Revision ID: grantw@unimelb.edu.au-20100728041305-xwypm3cn1l1mnki1
Port from cjson to (simple)json.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import os
27
27
import socket
28
28
 
29
 
import cjson
 
29
try:
 
30
    import json
 
31
except ImportError:
 
32
    import simplejson as json
 
33
 
30
34
import errno
31
35
 
32
36
import ivle.console
54
58
                working_dir)
55
59
 
56
60
        # Assemble the key and return it. Yes, it is double-encoded.
57
 
        return {'key': cjson.encode({"host": cons.host,
58
 
                                     "port": cons.port,
59
 
                                     "magic": cons.magic}).encode('hex')}
 
61
        return {'key': json.dumps({"host": cons.host,
 
62
                                   "port": cons.port,
 
63
                                   "magic": cons.magic}).encode('hex')}
60
64
 
61
65
    @write_operation('use')
62
66
    def chat(self, req, key, text='', cwd='', kind="chat"):
68
72
        # It simply acts as a proxy to the console server
69
73
 
70
74
        try:
71
 
            keydict = cjson.decode(key.decode('hex'))
 
75
            keydict = json.loads(key.decode('hex'))
72
76
            host = keydict['host']
73
77
            port = keydict['port']
74
78
            magic = keydict['magic']
88
92
            try:
89
93
                json_response = ivle.chat.chat(host, port, msg, magic,decode=False)
90
94
                # Snoop the response from python-console to check that it's valid
91
 
                response = cjson.decode(json_response)
92
 
            except (cjson.DecodeError, ivle.chat.ProtocolError):
 
95
                response = json.loads(json_response)
 
96
            except (ValueError, ivle.chat.ProtocolError):
93
97
                # Could not decode the reply from the python-console server
94
98
                response = {"terminate":
95
99
                    "Communication lost"}
122
126
    cons = ivle.console.Console(config, user, jail_path, working_dir)
123
127
 
124
128
    # Make a JSON object to tell the browser to restart its console client
125
 
    new_key = cjson.encode(
 
129
    new_key = json.dumps(
126
130
        {"host": cons.host, "port": cons.port, "magic": cons.magic})
127
131
 
128
132
    return {"restart": reason, "key": new_key.encode("hex")}