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

« back to all changes in this revision

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

  • Committer: Matt Giuca
  • Date: 2010-02-25 07:54:59 UTC
  • mto: This revision was merged to the branch mainline in revision 1731.
  • Revision ID: matt.giuca@gmail.com-20100225075459-ofwtu37q7d8rbmc8
Fully link the Project Delete view, from all the places the Project Edit view is linked.

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):
 
40
    def get_permissions(self, user, config):
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='', kind="chat"):
 
63
    def chat(self, req, key, text='', cwd='', 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
 
        working_dir = os.path.join("/home", req.user.login)   # Within jail
 
81
        # Within Jail
 
82
        working_dir = os.path.join("/home", req.user.login, cwd)
82
83
        uid = req.user.unixid
83
84
 
84
85
        # XXX: JSONRESTView should do this for us.
86
87
 
87
88
        msg = {'cmd':kind, 'text':text}
88
89
        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
92
90
            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:
 
94
            except (cjson.DecodeError, ivle.chat.ProtocolError):
95
95
                # Could not decode the reply from the python-console server
96
96
                response = {"terminate":
97
97
                    "Communication to console process lost"}