#!/usr/bin/env python """ remime - A CGI Tool to Allow MIME Type Override License: GPL 2; share and enjoy! Author: Sean B. Palmer, inamidst.com Implemented requests: 00:31:02 sbp: why not propagate the request's UA? - http://swhack.com/logs/2004-08-06#T00-31-02 --- MIME Type Fixing Service

MIME Type Fixing Service

URI
MIME Type:

This form allows you to fix the MIME type of documents that are being incorrectly served. View the Python source code.

Sean B. Palmer
""" import cgitb; cgitb.enable() import sys, os, urllib sys.path.append('../misc') from cgiutil import method, form class Grab(urllib.URLopener): def __init__(self, *args): version = os.environ.get('HTTP_USER_AGENT') self.version = version or 'Mozilla/5.0 (remime)' urllib.URLopener.__init__(self, *args) def http_error_default(self, url, fp, errcode, errmsg, headers): return urllib.addinfourl(fp, [headers, errcode], "http:" + url) urllib._urlopener = Grab() def serve(status, headers, s): sys.stdout.write("Status: %s\r\n" % status) sys.stdout.write(headers + "\r\n") sys.stdout.write(s) def remime(uri, mime): u = urllib.urlopen(uri) info = u.info() s = u.read() u.close() if not isinstance(info, list): status, headers = 200, info else: headers, status = tuple(info) headers['Content-Type'] = mime headers = str(headers) serve(status, headers, s) def homepage(): headers = 'Content-Type: text/html; charset=utf-8\r\n' i = __doc__.find('---') serve(200, headers, __doc__[i+3:]) def main(): if form.has_key('uri') and form.has_key('mime'): remime(form('uri'), form('mime')) elif method == 'GET': homepage() else: serve(501, "

Only GET is supported.

\n") if __name__=="__main__": main()