annotate cgi-bin/roundup.cgi @ 3854:f4e8dc583256

Restored subject parser regexp to the string it was before the... ...implementation of customization of it, i.e., the version from CVS revision 1.184 of mailgw.py. This makes 'testFollowupTitleMatchMultiRe' work again.
author Erik Forsberg <forsberg@users.sourceforge.net>
date Sat, 12 May 2007 16:14:54 +0000
parents bd2e784f43aa
children 662cd78df973
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 #
3329
bd2e784f43aa fix name collision in roundup.cgi script [SF#1203795]
Richard Jones <richard@users.sourceforge.net>
parents: 3277
diff changeset
19 # $Id: roundup.cgi,v 1.42 2005-05-18 05:39:21 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 _
3277
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
24 import sys, time
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
3277
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
45 # DEBUG_TO_CLIENT specifies whether debugging goes to the HTTP server (via
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
46 # stderr) or to the web client (via cgitb).
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
47 DEBUG_TO_CLIENT = False
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
48
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
49 # 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
50 TRACKER_HOMES = {
1782
d51cb5225d4a commented out example tracker homes
Richard Jones <richard@users.sourceforge.net>
parents: 1304
diff changeset
51 # 'example': '/path/to/example',
24
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
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 # 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
55 # don't want to log anywhere.
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 class DevNull:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 def write(self, info):
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 pass
486
Richard Jones <richard@users.sourceforge.net>
parents: 485
diff changeset
59 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
60 pass
1891
80534c722838 add flush() to DevNull
Richard Jones <richard@users.sourceforge.net>
parents: 1782
diff changeset
61 def flush(self):
80534c722838 add flush() to DevNull
Richard Jones <richard@users.sourceforge.net>
parents: 1782
diff changeset
62 pass
258
96fa4c11d3b0 Fixes to the top-level index
Richard Jones <richard@users.sourceforge.net>
parents: 252
diff changeset
63 #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
64 LOG = DevNull()
24
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 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 ## end configuration
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69
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
70
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 # Set up the error handler
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 try:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 import traceback, StringIO, cgi
1060
Richard Jones <richard@users.sourceforge.net>
parents: 1040
diff changeset
76 from roundup.cgi import cgitb
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 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
78 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
79 print _("Failed to import cgitb!\n\n")
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 s = StringIO.StringIO()
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 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
82 print s.getvalue()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83
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
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 #
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 # 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
87 #
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 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
89 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
90 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
91
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
92 # 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
93 # 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
94 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
95 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
96 else:
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
97 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
98 if homes:
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
99 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
100 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
101 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
102 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
103 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
104 # 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
105 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
106 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
107 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
108
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 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
110 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
111 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
112
1033
dec4711e40b3 fix cgi client importing
Richard Jones <richard@users.sourceforge.net>
parents: 965
diff changeset
113 # 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
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 #
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 # 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
118 #
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
119 class RequestWrapper:
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
120 '''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
121 '''
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
122 def __init__(self, wfile):
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
123 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
124 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
125 self.wfile.write(data)
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
126 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
127 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
128 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
129 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
130 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
131 self.write("\r\n")
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
132
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
133 #
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 # 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
135 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
136 def main(out, err):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
137 import os, string
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
138 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
139 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
140 request = RequestWrapper(out)
4316d1432db4 add the path to the cgi-bin request
Richard Jones <richard@users.sourceforge.net>
parents: 1037
diff changeset
141 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
142 tracker = path[1]
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
143 os.environ['TRACKER_NAME'] = tracker
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
144 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
145 if TRACKER_HOMES.has_key(tracker):
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
146 # redirect if we need a trailing '/'
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
147 if len(path) == 2:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
148 request.send_response(301)
1157
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
149 # redirect
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
150 if os.environ.get('HTTPS', '') == 'on':
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
151 protocol = 'https'
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
152 else:
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
153 protocol = 'http'
26c8cb2162d7 fixed various URL / base URL issues
Richard Jones <richard@users.sourceforge.net>
parents: 1096
diff changeset
154 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
155 os.environ.get('REQUEST_URI', ''))
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
156 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
157 request.end_headers()
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
158 out.write('Moved Permanently')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
159 else:
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
160 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
161 tracker = roundup.instance.open(tracker_home)
3329
bd2e784f43aa fix name collision in roundup.cgi script [SF#1203795]
Richard Jones <richard@users.sourceforge.net>
parents: 3277
diff changeset
162 import roundup.cgi.client
2633
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2510
diff changeset
163 if hasattr(tracker, 'Client'):
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2510
diff changeset
164 client = tracker.Client(tracker, request, os.environ)
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2510
diff changeset
165 else:
3329
bd2e784f43aa fix name collision in roundup.cgi script [SF#1203795]
Richard Jones <richard@users.sourceforge.net>
parents: 3277
diff changeset
166 client = roundup.cgi.client.Client(tracker, request, os.environ)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
167 try:
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
168 client.main()
3329
bd2e784f43aa fix name collision in roundup.cgi script [SF#1203795]
Richard Jones <richard@users.sourceforge.net>
parents: 3277
diff changeset
169 except roundup.cgi.client.Unauthorised:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
170 request.send_response(403)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
171 request.send_header('Content-Type', 'text/html')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
172 request.end_headers()
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
173 out.write('Unauthorised')
3329
bd2e784f43aa fix name collision in roundup.cgi script [SF#1203795]
Richard Jones <richard@users.sourceforge.net>
parents: 3277
diff changeset
174 except roundup.cgi.client.NotFound:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
175 request.send_response(404)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
176 request.send_header('Content-Type', 'text/html')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
177 request.end_headers()
1037
34297f4c8789 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 1033
diff changeset
178 out.write('Not found: %s'%client.path)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 403
diff changeset
179
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
180 else:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
181 import urllib
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
182 request.send_response(200)
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 336
diff changeset
183 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
184 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
185 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
186 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
187 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
188 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
189 homes.sort()
1251
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
190 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
191 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
192 '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
193 urllib.quote(tracker),
347657425a10 Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents: 1181
diff changeset
194 'tracker_name': cgi.escape(tracker)})
485
fad315a10185 i18n'ification
Richard Jones <richard@users.sourceforge.net>
parents: 449
diff changeset
195 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
196
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
197 #
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 # 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
199 #
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
200 out, err = sys.stdout, sys.stderr
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
201 try:
403
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
202 # 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
203 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
204 import os, msvcrt
82a5757d01eb quick fix for file uploads on windows in roundup.cgi
Richard Jones <richard@users.sourceforge.net>
parents: 358
diff changeset
205 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
206 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
207 checkconfig()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
208 sys.stdout = sys.stderr = LOG
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 258
diff changeset
209 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
210 except SystemExit:
bff3a9e9548f Fixed some URL issues in roundup.cgi, again thanks Juergen Hermann.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
211 pass
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212 except:
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213 sys.stdout, sys.stderr = out, err
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
214 out.write('Content-Type: text/html\n\n')
3277
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
215 if DEBUG_TO_CLIENT:
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
216 cgitb.handler()
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
217 else:
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
218 out.write(cgitb.breaker())
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
219 ts = time.ctime()
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
220 out.write('''<p>%s: An error occurred. Please check
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
221 the server log for more infomation.</p>'''%ts)
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
222 print >> sys.stderr, 'EXCEPTION AT', ts
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
223 traceback.print_exc(0, sys.stderr)
3084b07ec266 send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
224
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
225 sys.stdout.flush()
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
226 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
227 LOG.close()
24
9d37058ffa8c More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
228
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
229 # vim: set filetype=python ts=4 sw=4 et si

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