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

« back to all changes in this revision

Viewing changes to www/apps/diff/__init__.py

  • Committer: dcoles
  • Date: 2008-02-25 02:26:39 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:562
Added new app: Diff (SVN diff application)
setup.py: Added diffservice script to jail scripts

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# IVLE
 
2
# Copyright (C) 2007-2008 The University of Melbourne
 
3
#
 
4
# This program is free software; you can redistribute it and/or modify
 
5
# it under the terms of the GNU General Public License as published by
 
6
# the Free Software Foundation; either version 2 of the License, or
 
7
# (at your option) any later version.
 
8
#
 
9
# This program is distributed in the hope that it will be useful,
 
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
# GNU General Public License for more details.
 
13
#
 
14
# You should have received a copy of the GNU General Public License
 
15
# along with this program; if not, write to the Free Software
 
16
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
17
 
 
18
# App: Diff Service
 
19
# Author: David Coles
 
20
# Date: 21/2/2008
 
21
 
 
22
# This app is a wrapper around the diff script run through the trampoline
 
23
 
 
24
import os.path
 
25
 
 
26
import conf
 
27
import common
 
28
import common.interpret
 
29
from os import path
 
30
 
 
31
 
 
32
# handle_with_trampoline controls the way in which fileservice_lib is invoked.
 
33
# If False, it will simply be called directly by this handler.
 
34
# If True, the request will get marshalled into a CGI environment and the
 
35
# trampoline will invoke scripts/fileservices within the user's jail (SetUID'd
 
36
# to them). This script will then wrap the CGI environment in a replica of the
 
37
# original environment and handle it that way.
 
38
# This is a lot of overhead but it's the only way to properly ensure we are
 
39
# acting "as" that user and therefore we don't run into permissions problems.
 
40
# If set to True, it will be a lot more efficient, but there will be
 
41
# permissions issues unless all user's files are owned by the web server user.
 
42
HANDLE_WITH_TRAMPOLINE = True
 
43
 
 
44
diffservice_path = "/opt/ivle/scripts/diffservice"   # Within jail
 
45
 
 
46
def handle(req):
 
47
    """Handler for the File Services application."""
 
48
    req.styles = ["media/diff/diff.css"] # CSS styles
 
49
    req.write_html_head_foot = True     # Have dispatch print head and foot
 
50
 
 
51
    # Handle
 
52
    if not HANDLE_WITH_TRAMPOLINE:
 
53
        pass
 
54
    else:
 
55
        if req.path == "":
 
56
            req.throw_redirect(path.join(req.uri,req.user.login));
 
57
        interp_object = common.interpret.interpreter_objects["cgi-python"]
 
58
        user_jail_dir = os.path.join(conf.jail_base, req.user.login)
 
59
        common.interpret.interpret_file(req, req.user.login, user_jail_dir,
 
60
            diffservice_path, interp_object)
 
61