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

« back to all changes in this revision

Viewing changes to platform/scripts/safe-python

  • Committer: mattgiuca
  • Date: 2007-12-12 01:38:59 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:37
Added src/dispatch/request.py: The IVLE Request class.
dispatch module now transforms the Apache request object into an IVLE one, and
goes through it. (Note this temporarily means the content type is no longer
set, because the request object is missing functionality).

Added brief description of this object in notes/apps/dispatch.txt.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/local/bin/python
 
2
 
 
3
import os
 
4
import sys
 
5
import re
 
6
import resource
 
7
 
 
8
jailBase = '/home/informatics/jails/'
 
9
siteBase = '/home/informatics/www/'
 
10
 
 
11
def findUser(login):
 
12
    entries = {}
 
13
    passwdfile = open('/etc/passwd')
 
14
    for line in passwdfile.readlines():
 
15
        rec = re.split(':',line)
 
16
        if rec[0] == login:
 
17
            return rec
 
18
    raise Exception, (login + " not found!")
 
19
 
 
20
def throttle():
 
21
    Kb = 1024
 
22
    Mb = 1024 * 1024
 
23
 
 
24
    limits = [(resource.RLIMIT_CORE,     (0,0)), \
 
25
              (resource.RLIMIT_CPU,      (1,2)), \
 
26
              (resource.RLIMIT_FSIZE,    (5 * Mb, 5 * Mb)), \
 
27
              (resource.RLIMIT_DATA,     (20 * Mb, 24 * Mb)), \
 
28
              (resource.RLIMIT_STACK,    (8 * Mb, 9 * Mb)), \
 
29
              (resource.RLIMIT_NPROC,    (10, 10)), \
 
30
              (resource.RLIMIT_NOFILE,   (50, 60))]
 
31
 
 
32
    for (r,l) in limits:
 
33
        resource.setrlimit(r,l)
 
34
 
 
35
def runit(login):
 
36
    os.environ['DOCUMENT_ROOT'] = '/'
 
37
    os.environ['SCRIPT_FILENAME'] = re.sub(siteBase + login + '/',
 
38
                        '/home/' + login + '/svn/' + login + '/trunk/',
 
39
                        os.environ['SCRIPT_FILENAME'])
 
40
    os.environ['HOME'] = '/home/' + login
 
41
    script = os.environ['SCRIPT_FILENAME']
 
42
    user = findUser(login)
 
43
    uid = int(user[2])
 
44
    os.chdir(jailBase + login)
 
45
    os.chroot(jailBase + login)
 
46
    os.setuid(uid)
 
47
    throttle()
 
48
    os.execlp("/usr/bin/python", "python", script)
 
49
 
 
50
m = re.match('^/([^/]*)/', os.environ['SCRIPT_NAME'])
 
51
if m is None:
 
52
    exit(1)
 
53
login = m.group(1)
 
54
 
 
55
runit(login)