~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-20 22:35:46 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:104
setup.py: Replaced the simple script with a full options processing script
    which has multiple operations (help, conf, build, listmake, install).
    conf does what setup.py used to do.
    Wrote help operation, and explained all of the other operations.

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)