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

« back to all changes in this revision

Viewing changes to scripts/serveservice

  • Committer: dcoles
  • Date: 2008-03-09 02:34:46 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:671
forum: Now uses a unique secret generated at './setup config' time for shared secret

setup.py: Generate and write forum_secret to config.py and config.php
w/p/p/i/session.php: Use forum_secret from config.php and some code cleaning
l/c/forumutil.py: Use config.py to get forum_secret to make HMAC 

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 
26
26
import mimetypes
27
27
import os
28
 
import conf
29
 
import StringIO
30
 
import urlparse
31
28
 
32
 
from common import (cgirequest, studpath)
33
 
from common import zip as zipmod
 
29
from common import cgirequest
 
30
from common import studpath
34
31
 
35
32
req = cgirequest.CGIRequest()
36
 
req.install_error_handler()
37
 
 
38
 
# Work out the parts of the URL
39
 
url = urlparse.urlparse(req.path)
40
 
querystr = url[4]
41
 
urlpath = url[2]
42
 
filename = studpath.url_to_jailpaths(urlpath)[2]
43
 
 
44
 
default_mimetype = "application/octet-stream"
45
 
zip_mimetype = "application/zip"
46
 
 
47
 
zipmode = False
48
 
zipbasepath = None
49
 
zipfilename = None
50
 
path = None
51
 
 
52
 
# If any "path=" variables have been supplied, bring these into a list and
53
 
# make a zip file instead.
54
 
fields = req.get_fieldstorage()
55
 
paths = fields.getlist("path")
56
 
if len(paths) > 0:
57
 
    zipmode = True
58
 
    zipbasepath = filename
59
 
    zipfilename = os.path.basename(zipbasepath)
60
 
    #for i in range(0, len(paths)):
61
 
        #paths[i] = paths[i].value
62
 
else:
63
 
    if filename is None:
64
 
        req.throw_error(req.HTTP_NOT_FOUND,
65
 
            "The path specified is invalid.")
66
 
    elif not os.access(filename, os.R_OK):
67
 
        req.throw_error(req.HTTP_NOT_FOUND,
68
 
            "The specified file (%s) does not exist." % urlpath)
69
 
     # If it's a directory, serve as a zip file
70
 
    if os.path.isdir(filename):
71
 
        zipmode = True
72
 
        # Zip it from the perspective of its own parent.
73
 
        # That way it will be a directory in the top level of the zip
74
 
        # file.
75
 
        if filename[-1] == os.sep: filename = filename[:-1]
76
 
        splitpath = filename.rsplit(os.sep, 1)
77
 
        if len(splitpath) == 1:
78
 
            zipbasepath = ''
79
 
            paths = [filename]
80
 
        else:
81
 
            zipbasepath = splitpath[0]
82
 
            paths = [splitpath[1]]
83
 
        zipfilename = paths[0]
84
 
 
85
 
if zipmode:
86
 
    req.content_type = zip_mimetype
87
 
    # zipfilename is some filename. Strip trailing slash or extension,
88
 
    # and add ".zip".
89
 
    if zipfilename == '':
90
 
        zipfilename = "files"
91
 
    elif zipfilename[-1] == '/':
92
 
        zipfilename = zipfilename[:-1]
93
 
    elif '.' in zipfilename:
94
 
        zipfilename = zipfilename[:zipfilename.rindex('.')]
95
 
    zipfilename += ".zip"
96
 
    req.headers_out["Content-Disposition"] = ("attachment; filename=" +   
97
 
        zipfilename)
98
 
    zipfile = StringIO.StringIO()
99
 
    zipmod.make_zip(zipbasepath, paths, zipfile)
100
 
        
101
 
    req.write(zipfile.getvalue())
102
 
else:
103
 
    #req.content_type = default_mimetype
104
 
    req.sendfile(filename)
 
33
filename = studpath.url_to_jailpaths(req.path)[2]
 
34
 
 
35
if not os.access(filename, os.R_OK):
 
36
    req.throw_error(req.HTTP_NOT_FOUND, "The specified file does not exist.")
 
37
 
 
38
(type, _) = mimetypes.guess_type(filename)
 
39
if type is None:
 
40
    type = conf.mimetypes.default_mimetype
 
41
 
 
42
req.content_type = type
 
43
req.sendfile(filename)