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

« back to all changes in this revision

Viewing changes to platform/scripts/safe-python

  • Committer: matt.giuca
  • Date: 2009-01-12 01:03:59 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1077
Reverted revisions 1059 and 1069 - renaming the DB user from 'postgres' to
    'ivleuser'.
    Heart was in the right place, but currently doesn't work because postgres
    owns the relations and we've no way to correct that yet (since we manually
    run the .sql script as postgres).

    This will be reverted back again once that's solved.

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)