Mercurial > p > roundup > code
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 |
| 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 | 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 | 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 | 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 |
