annotate cgi-bin/roundup.cgi @ 2365:3a80831ecebe

If the target platform is win32, create .bat files... ...instead of *nix shell scripts. Target platform is set to "win32" if main command is 'bdist_wininst' or if the command is 'bdist' and it has the list of formats (from command line or config file) and the first item on that list is wininst. Otherwise target platform is set to current (build) platform.
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Wed, 26 May 2004 10:00:53 +0000
parents 80534c722838
children 8e1c1623710b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #!/usr/bin/env python
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
2 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
3 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
4 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
5 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
6 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
7 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
8 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
9 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
10 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
11 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
12 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
13 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
14 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
15 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
16 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
17 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
18 #
1891
80534c722838 add flush() to DevNull
Richard Jones <richard@users.sourceforge.net>
parents: 1782
diff changeset
19 # $Id: roundup.cgi,v 1.37 2003-11-03 23:37:06 richard Exp $
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 # python version check
449
141aacfdb34f Centralised the python version check code, bumped version to 2.1.1
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
22 from roundup import version_check
485
fad315a10185 i18n'ification
Richard Jones <richard@users.sourceforge.net>
parents: 449
diff changeset
23 from roundup.i18n import _
486
Richard Jones <richard@users.sourceforge.net>
parents: 485
diff changeset
24 import sys
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 ## Configuration
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
30 # Configuration can also be provided through the OS environment (or via
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
31 # the Apache "SetEnv" configuration directive). If the variables
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
32 # documented below are set, they _override_ any configuation defaults
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
33 # given in this file.
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
34
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
35 # TRACKER_HOMES is a list of trackers, in the form
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
36 # "NAME=DIR<sep>NAME2=DIR2<sep>...", where <sep> is the directory path
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
37 # separator (";" on Windows, ":" on Unix).
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
38
1181
49aebf5a8691 some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents: 1157
diff changeset
39 # Make sure the NAME part doesn't include any url-unsafe characters like
49aebf5a8691 some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents: 1157
diff changeset
40 # spaces, as these confuse the cookie handling in browsers like IE.
49aebf5a8691 some speedups, some fixes to the benchmarking
Richard Jones <richard@users.sourceforge.net>
parents: 1157
diff changeset
41
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
42 # ROUNDUP_LOG is the name of the logfile; if it's empty or does not exist,
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
43 # logging is turned off (unless you changed the default below).
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
44
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
45 # ROUNDUP_DEBUG is a debug level, currently only 0 (OFF) and 1 (ON) are
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
46 # used in the code. Higher numbers means more debugging output.
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
47
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
48 # This indicates where the Roundup tracker lives
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
49 TRACKER_HOMES = {
1782
d51cb5225d4a commented out example tracker homes
Richard Jones <richard@users.sourceforge.net>
parents: 1304
diff changeset
50 # 'example': '/path/to/example',
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 }
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 # Where to log debugging information to. Use an instance of DevNull if you
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 # don't want to log anywhere.
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 class DevNull:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 def write(self, info):
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 pass
486
Richard Jones <richard@users.sourceforge.net>
parents: 485
diff changeset
58 def close(self):
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
59 pass
1891
80534c722838 add flush() to DevNull
Richard Jones <richard@users.sourceforge.net>
parents: 1782
diff changeset
60 def flush(self):
80534c722838 add flush() to DevNull
Richard Jones <richard@users.sourceforge.net>
parents: 1782
diff changeset
61 pass
258
96fa4c11d3b0 Fixes to the top-level index
Richard Jones <richard@users.sourceforge.net>
parents: 252
diff changeset
62 #LOG = open('/var/log/roundup.cgi.log', 'a')
96fa4c11d3b0 Fixes to the top-level index
Richard Jones <richard@users.sourceforge.net>
parents: 252
diff changeset
63 LOG = DevNull()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 ## end configuration
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
69
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 # Set up the error handler
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 try:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 import traceback, StringIO, cgi
1060
Richard Jones <richard@users.sourceforge.net>
parents: 1040
diff changeset
75 from roundup.cgi import cgitb
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 except:
965
b2c537f51fc5 Fix to be able to report errors even if the cgi module can't be imported(!)
Richard Jones <richard@users.sourceforge.net>
parents: 486
diff changeset
77 print "Content-Type: text/plain\n"
b2c537f51fc5 Fix to be able to report errors even if the cgi module can't be imported(!)
Richard Jones <richard@users.sourceforge.net>
parents: 486
diff changeset
78 print _("Failed to import cgitb!\n\n")
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 s = StringIO.StringIO()
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 traceback.print_exc(None, s)
965
b2c537f51fc5 Fix to be able to report errors even if the cgi module can't be imported(!)
Richard Jones <richard@users.sourceforge.net>
parents: 486
diff changeset
81 print s.getvalue()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
83
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
84 #
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
85 # Check environment for config items
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
86 #
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
87 def checkconfig():
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
88 import os, string
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
89 global TRACKER_HOMES, LOG
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
90
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
91 # see if there's an environment var. ROUNDUP_INSTANCE_HOMES is the
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
92 # old name for it.
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
93 if os.environ.has_key('ROUNDUP_INSTANCE_HOMES'):
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
94 homes = os.environ.get('ROUNDUP_INSTANCE_HOMES')
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
95 else:
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
96 homes = os.environ.get('TRACKER_HOMES', '')
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
97 if homes:
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
98 TRACKER_HOMES = {}
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
99 for home in string.split(homes, os.pathsep):
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
100 try:
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
101 name, dir = string.split(home, '=', 1)
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
102 except ValueError:
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
103 # ignore invalid definitions
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
104 continue
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
105 if name and dir:
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
106 TRACKER_HOMES[name] = dir
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
107
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
108 logname = os.environ.get('ROUNDUP_LOG', '')
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
109 if logname:
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
110 LOG = open(logname, 'a')
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
111
1033
dec4711e40b3 fix cgi client importing
Richard Jones <richard@users.sourceforge.net>
parents: 965
diff changeset
112 # ROUNDUP_DEBUG is checked directly in "roundup.cgi.client"
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
113
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
114
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
115 #
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
116 # Provide interface to CGI HTTP response handling
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
117 #
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
118 class RequestWrapper:
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
119 '''Used to make the CGI server look like a BaseHTTPRequestHandler
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
120 '''
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
121 def __init__(self, wfile):
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
122 self.wfile = wfile
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
123 def write(self, data):
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
124 self.wfile.write(data)
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
125 def send_response(self, code):
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
126 self.write('Status: %s\r\n'%code)
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
127 def send_header(self, keyword, value):
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
128 self.write("%s: %s\r\n" % (keyword, value))
356
3aee8a37afeb Fixed HTTP headers for top-level index in CGI script
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
129 def end_headers(self):
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
130 self.write("\r\n")
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
131
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
132 #
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
133 # Main CGI handler
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
134 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
135 def main(out, err):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
136 import os, string
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
137 import roundup.instance
331
bff3a9e9548f Fixed some URL issues in roundup.cgi, again thanks Juergen Hermann.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
138 path = string.split(os.environ.get('PATH_INFO', '/'), '/')
1040
4316d1432db4 add the path to the cgi-bin request
Richard Jones <richard@users.sourceforge.net>
parents: 1037
diff changeset
139 request = RequestWrapper(out)
4316d1432db4 add the path to the cgi-bin request
Richard Jones <richard@users.sourceforge.net>
parents: 1037
diff changeset
140 request.path = os.environ.get('PATH_INFO', '/')
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
141 tracker = path[1]
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
142 os.environ['TRACKER_NAME'] = tracker
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
143 os.environ['PATH_INFO'] = string.join(path[2:], '/')
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
144 if TRACKER_HOMES.has_key(tracker):
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
145 # redirect if we need a trailing '/'
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
146 if len(path) == 2:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
147 request.send_response(301)
1157
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
148 # redirect
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
149 if os.environ.get('HTTPS', '') == 'on':
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
150 protocol = 'https'
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
151 else:
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
152 protocol = 'http'
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
153 absolute_url = '%s://%s%s/'%(protocol, os.environ['HTTP_HOST'],
1304
61ad556cfc8d working toward 0.5.2 release
Richard Jones <richard@users.sourceforge.net>
parents: 1251
diff changeset
154 os.environ.get('REQUEST_URI', ''))
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
155 request.send_header('Location', absolute_url)
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
156 request.end_headers()
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
157 out.write('Moved Permanently')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
158 else:
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
159 tracker_home = TRACKER_HOMES[tracker]
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
160 tracker = roundup.instance.open(tracker_home)
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
161 from roundup.cgi.client import Unauthorised, NotFound
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
162 client = tracker.Client(tracker, request, os.environ)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
163 try:
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
164 client.main()
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
165 except Unauthorised:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
166 request.send_response(403)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
167 request.send_header('Content-Type', 'text/html')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
168 request.end_headers()
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
169 out.write('Unauthorised')
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
170 except NotFound:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
171 request.send_response(404)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
172 request.send_header('Content-Type', 'text/html')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
173 request.end_headers()
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
174 out.write('Not found: %s'%client.path)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
175
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
176 else:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
177 import urllib
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
178 request.send_response(200)
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
179 request.send_header('Content-Type', 'text/html')
356
3aee8a37afeb Fixed HTTP headers for top-level index in CGI script
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
180 request.end_headers()
403
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
181 w = request.write
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
182 w(_('<html><head><title>Roundup trackers index</title></head>\n'))
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
183 w(_('<body><h1>Roundup trackers index</h1><ol>\n'))
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
184 homes = TRACKER_HOMES.keys()
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
185 homes.sort()
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
186 for tracker in homes:
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
187 w(_('<li><a href="%(tracker_url)s/index">%(tracker_name)s</a>\n')%{
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
188 'tracker_url': os.environ['SCRIPT_NAME']+'/'+
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
189 urllib.quote(tracker),
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
190 'tracker_name': cgi.escape(tracker)})
485
fad315a10185 i18n'ification
Richard Jones <richard@users.sourceforge.net>
parents: 449
diff changeset
191 w(_('</ol></body></html>'))
252
76c6994aa4e8 CGI interfaces now spit up a top-level index of all instances they can serve.
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
192
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
193 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
194 # Now do the actual CGI handling
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
195 #
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
196 out, err = sys.stdout, sys.stderr
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
197 try:
403
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
198 # force input/output to binary (important for file up/downloads)
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
199 if sys.platform == "win32":
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
200 import os, msvcrt
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
201 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
202 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
203 checkconfig()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
204 sys.stdout = sys.stderr = LOG
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
205 main(out, err)
331
bff3a9e9548f Fixed some URL issues in roundup.cgi, again thanks Juergen Hermann.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
206 except SystemExit:
bff3a9e9548f Fixed some URL issues in roundup.cgi, again thanks Juergen Hermann.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
207 pass
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
208 except:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
209 sys.stdout, sys.stderr = out, err
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210 out.write('Content-Type: text/html\n\n')
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
211 cgitb.handler()
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212 sys.stdout.flush()
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213 sys.stdout, sys.stderr = out, err
358
3cc910586bde Added env config; fixed request wrapper & index list; sort list by key
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 356
diff changeset
214 LOG.close()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
215
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 38
diff changeset
216 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/