aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/driver23
1 files changed, 17 insertions, 6 deletions
diff --git a/scripts/driver b/scripts/driver
index ea43c40e..dbe219da 100644
--- a/scripts/driver
+++ b/scripts/driver
@@ -1,6 +1,6 @@
# -*- python -*-
-# Copyright (C) 1998-2004 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2009 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -14,10 +14,12 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
# This better succeed. If this fails, Python is royally screwed so we might
# as well let the Web server give us a fatal and obtrusive error.
+import os
import sys
# From here on we are as bulletproof as possible!
@@ -51,9 +53,10 @@ def websafe(s):
# no way to catch that. Mailman's install procedure should make this highly
# unlikely.
#
-# - The sys module could be royally screwed, probably we couldn't import it.
-# This would indicate a serious problem with the Python installation, so
-# it's also highly unlikely to occur.
+# - The os or sys modules could be royally screwed, probably we couldn't
+# import one or both of them. This would indicate a serious problem with
+# the Python installation, so it's also highly unlikely to occur.
+
def run_main():
@@ -98,7 +101,15 @@ def run_main():
try:
sys.stderr = logger
sys.stdout = tempstdout
- main()
+ # Check for a valid request method.
+ request_method = os.environ.get('REQUEST_METHOD')
+ if not request_method.lower() in ['get', 'post', 'head']:
+ print 'Status: 405 Method not allowed'
+ print 'Content-type: text/plain'
+ print
+ print '%s method is not allowed' % request_method
+ else:
+ main()
sys.__stdout__.write(tempstdout.getvalue())
finally:
sys.stderr = sys.__stderr__