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

« back to all changes in this revision

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

  • Committer: David Coles
  • Date: 2009-07-21 02:19:56 UTC
  • mto: (1281.1.8 aufsless)
  • mto: This revision was merged to the branch mainline in revision 1300.
  • Revision ID: coles.david@gmail.com-20090721021956-c1jiwu7fhi2dna1g
Updated to work on bind mounts

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
# XXX: Should be RPC view, with actions in URL?
38
38
class ConsoleServiceRESTView(JSONRESTView):
39
39
    '''An RPC interface to a Python console.'''
40
 
    def get_permissions(self, user, config):
 
40
    def get_permissions(self, user):
41
41
        if user is not None:
42
42
            return set(['use'])
43
43
        else:
60
60
                                     "magic": cons.magic}).encode('hex')}
61
61
 
62
62
    @named_operation('use')
63
 
    def chat(self, req, key, text='', cwd='', kind="chat"):
 
63
    def chat(self, req, key, text='', kind="chat"):
64
64
        # The request *should* have the following four fields:
65
65
        # key: Hex JSON dict of host and port where the console server lives,
66
66
        # and the secret to use to digitally sign the communication with the
78
78
 
79
79
        jail_path = os.path.join(req.config['paths']['jails']['mounts'],
80
80
                                 req.user.login)
81
 
        # Within Jail
82
 
        working_dir = os.path.join("/home", req.user.login, cwd)
 
81
        working_dir = os.path.join("/home", req.user.login)   # Within jail
83
82
        uid = req.user.unixid
84
83
 
85
84
        # XXX: JSONRESTView should do this for us.
87
86
 
88
87
        msg = {'cmd':kind, 'text':text}
89
88
        try:
 
89
            json_response = ivle.chat.chat(host, port, msg, magic,decode=False)
 
90
 
 
91
            # Snoop the response from python-console to check that it's valid
90
92
            try:
91
 
                json_response = ivle.chat.chat(host, port, msg, magic,decode=False)
92
 
                # Snoop the response from python-console to check that it's valid
93
93
                response = cjson.decode(json_response)
94
 
            except (cjson.DecodeError, ivle.chat.ProtocolError):
 
94
            except cjson.DecodeError:
95
95
                # Could not decode the reply from the python-console server
96
96
                response = {"terminate":
97
97
                    "Communication to console process lost"}