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

« back to all changes in this revision

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

Require that plugins providing media subclass MediaPlugin.

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