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

« back to all changes in this revision

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

  • Committer: Nick Chadwick
  • Date: 2009-05-12 11:49:31 UTC
  • mto: This revision was merged to the branch mainline in revision 1247.
  • Revision ID: chadnickbok@gmail.com-20090512114931-k6rgwieyvbg8ld07
Removed non-functional links to delete projects and grant extensions.

Also fixed a line in the javascript which was accidentally commented out.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
 
32
32
import ivle.console
33
33
import ivle.chat
34
 
import ivle.conf
35
34
from ivle.webapp.base.rest import JSONRESTView, named_operation
36
35
from ivle.webapp.errors import BadRequest
37
36
 
38
37
# XXX: Should be RPC view, with actions in URL?
39
38
class ConsoleServiceRESTView(JSONRESTView):
40
39
    '''An RPC interface to a Python console.'''
41
 
    @named_operation
 
40
    def get_permissions(self, user):
 
41
        if user is not None:
 
42
            return set(['use'])
 
43
        else:
 
44
            return set()
 
45
 
 
46
    @named_operation('use')
42
47
    def start(self, req, cwd=''):
43
48
        working_dir = os.path.join("/home", req.user.login, cwd)
44
49
 
45
50
        uid = req.user.unixid
46
51
 
47
52
        # Start the server
48
 
        jail_path = os.path.join(ivle.conf.jail_base, req.user.login)
 
53
        jail_path = os.path.join(req.config['paths']['jails']['mounts'],
 
54
                                 req.user.login)
49
55
        cons = ivle.console.Console(uid, jail_path, working_dir)
50
56
 
51
57
        # Assemble the key and return it. Yes, it is double-encoded.
53
59
                                     "port": cons.port,
54
60
                                     "magic": cons.magic}).encode('hex')}
55
61
 
56
 
    @named_operation
 
62
    @named_operation('use')
57
63
    def chat(self, req, key, text='', kind="chat"):
58
64
        # The request *should* have the following four fields:
59
65
        # key: Hex JSON dict of host and port where the console server lives,
70
76
        except KeyError:
71
77
            raise BadRequest("Invalid console key.")
72
78
 
73
 
        jail_path = os.path.join(ivle.conf.jail_base, req.user.login)
 
79
        jail_path = os.path.join(req.config['paths']['jails']['mounts'],
 
80
                                 req.user.login)
74
81
        working_dir = os.path.join("/home", req.user.login)   # Within jail
75
82
        uid = req.user.unixid
76
83