Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!tudelft.nl!txtfeed1.tudelft.nl!multikabel.net!newsfeed20.multikabel.net!amsnews11.chello.com!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'bug': 0.02; 'else:': 0.03; 'happily': 0.07; 'supported.': 0.07; 'python': 0.08; '[],': 0.09; 'args,': 0.09; 'flush': 0.09; 'throw': 0.09; 'output': 0.10; '+++': 0.13; "'ok')": 0.16; '+import': 0.16; 'except:': 0.16; 'forking': 0.16; 'giovanni': 0.16; 'handy': 0.16; 'pid,': 0.16; 'stderr': 0.16; 'stderr:': 0.16; 'contribute': 0.18; 'instance': 0.18; 'programming': 0.20; 'cheers,': 0.20; 'maybe': 0.21; "doesn't": 0.22; '+0000': 0.24; 'cc:2**0': 0.25; 'module': 0.26; 'import': 0.27; 'fact': 0.27; "i'm": 0.27; 'cc:addr:gmail.com': 0.28; 'noticed': 0.28; 'message-id:@mail.gmail.com': 0.28; 'pass': 0.28; "skip:' 10": 0.29; 'class': 0.29; 'server': 0.30; 'but...': 0.30; 'parent': 0.30; 'translate': 0.30; '---': 0.31; '+0100': 0.32; 'everyone,': 0.32; 'break': 0.32; "isn't": 0.32; 'to:addr :python-list': 0.33; 'rest': 0.33; 'nobody': 0.34; 'someone': 0.34; 'setting': 0.34; 'try:': 0.34; 'http': 0.36; 'charset:us- ascii': 0.36; 'received:google.com': 0.37; 'page': 0.37; 'could': 0.37; 'patch': 0.38; 'received:209.85': 0.38; 'think': 0.38; 'skip:o 20': 0.38; "i'd": 0.39; 'except': 0.39; 'header': 0.39; 'help': 0.39; 'received:209': 0.39; 'to:addr:python.org': 0.40; 'skip:s 40': 0.40; 'data': 0.40; 'matter': 0.61; 'spend': 0.61; 'your': 0.61; 'full': 0.62; 'subject:skip:C 10': 0.64; 'quality': 0.74; 'enhancement.': 0.84; 'data)': 0.91; 'proposal.': 0.91; 'redirect': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:cc:content-type; bh=lWzAVaBW3v7QJCVqEM0uKaRfR7yyPKOF3G6aIrSJO2k=; b=h+yCsZp+YBebKGhjS2PQ3eeEWPlZ2fn7J8JbBY3aGjXXj/LIOamjkgxu/QpN/5N0qN MpNg+4zhzqMybus0GsrQWiuxdeVpfkTUOvYDCiyXdFH0gxzoo3x2IGs3MCOBOQ9Zedlo yOpjji4YCsvI55+Cx8AZKjP5gbHbSG47OEwjU= MIME-Version: 1.0 From: Giovanni Funchal Date: Fri, 27 Jan 2012 22:48:53 +0000 Subject: Patching CGIHTTPServer.py To: python-list@python.org Content-Type: multipart/mixed; boundary=20cf300fb08ddafb5304b78a4e8c Cc: Laurie Lugrin X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 78 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1327704566 news.xs4all.nl 6937 [2001:888:2000:d::a6]:37654 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:19528 --20cf300fb08ddafb5304b78a4e8c Content-Type: text/plain; charset=UTF-8 Hi everyone, I was fiddling around with CGIHTTPServer.py --- a very handy module for quickly setting up a full HTTP server with CGI support --- when I noticed that it doesn't support responses other than "200 OK". So, for instance if your page wants to do a redirect (response 303), it just isn't supported. I think this is a major drawback that can be easily overcome and I'd very happily contribute that as an enhancement. But... I'm new to Python and as a matter of fact web programming as a whole isn't really my specialty. I was thinking that maybe someone could spend half an hour looking at my solution and help raising it's quality to the level I can submit it as a patch proposal. Cheers, -- Giovanni --20cf300fb08ddafb5304b78a4e8c Content-Type: text/x-patch; charset=US-ASCII; name="CGIHTTPServer.patch" Content-Disposition: attachment; filename="CGIHTTPServer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxxsxed60 LS0tIC91c3IvbGliL3B5dGhvbjIuNy9DR0lIVFRQU2VydmVyLnB5CTIwMTEtMTAtMDQgMjI6MjQ6 MDAuMDAwMDAwMDAwICswMTAwCisrKyBDR0lIVFRQU2VydmVyLnB5CTIwMTItMDEtMjcgMjI6Mzg6 MDEuNzg1NTg3OTUyICswMDAwCkBAIC0zMCw2ICszMCw3IEBACiBpbXBvcnQgU2ltcGxlSFRUUFNl cnZlcgogaW1wb3J0IHNlbGVjdAogaW1wb3J0IGNvcHkKK2ltcG9ydCByZQogCiAKIGNsYXNzIENH SUhUVFBSZXF1ZXN0SGFuZGxlcihTaW1wbGVIVFRQU2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFu ZGxlcik6CkBAIC0yMTgsOCArMjE5LDYgQEAKICAgICAgICAgICAgICAgICAgICdIVFRQX1VTRVJf QUdFTlQnLCAnSFRUUF9DT09LSUUnLCAnSFRUUF9SRUZFUkVSJyk6CiAgICAgICAgICAgICBlbnYu c2V0ZGVmYXVsdChrLCAiIikKIAotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiU2Ny aXB0IG91dHB1dCBmb2xsb3dzIikKLQogICAgICAgICBkZWNvZGVkX3F1ZXJ5ID0gcXVlcnkucmVw bGFjZSgnKycsICcgJykKIAogICAgICAgICBpZiBzZWxmLmhhdmVfZm9yazoKQEAgLTIyOSwxMCAr MjI4LDIzIEBACiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoZGVjb2RlZF9xdWVyeSkKICAg ICAgICAgICAgIG5vYm9keSA9IG5vYm9keV91aWQoKQogICAgICAgICAgICAgc2VsZi53ZmlsZS5m bHVzaCgpICMgQWx3YXlzIGZsdXNoIGJlZm9yZSBmb3JraW5nCisgICAgICAgICAgICByLCB3ID0g b3MucGlwZSgpCiAgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgIGlmIHBp ZCAhPSAwOgogICAgICAgICAgICAgICAgICMgUGFyZW50CisgICAgICAgICAgICAgICAgb3MuY2xv c2UodykKICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IG9zLndhaXRwaWQocGlkLCAwKQorICAg ICAgICAgICAgICAgICMgcmVhZCBhbmQgdHJhbnNsYXRlIHN0YXR1cyBoZWFkZXIKKyAgICAgICAg ICAgICAgICByID0gb3MuZmRvcGVuKHIpCisgICAgICAgICAgICAgICAgZGF0YSA9IHIucmVhZGxp bmUoKQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IHJlLm1hdGNoKCdTdGF0dXM6IChbMC05XSsp ICguKyknLCBkYXRhKQorICAgICAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKGludChzdGF0dXMuZ3JvdXAoMSkpLCBzdGF0dXMuZ3Jv dXAoMikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZW5kX3Jlc3BvbnNlKDIwMCwgJ09LJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53 cml0ZShkYXRhKQorICAgICAgICAgICAgICAgICMgcGlwZSByZXN0IG9mIGNvbnRlbnRzCisgICAg ICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShyLnJlYWQoKSkKICAgICAgICAgICAgICAgICAj IHRocm93IGF3YXkgYWRkaXRpb25hbCBkYXRhIFtzZWUgYnVnICM0MjczNDVdCiAgICAgICAgICAg ICAgICAgd2hpbGUgc2VsZWN0LnNlbGVjdChbc2VsZi5yZmlsZV0sIFtdLCBbXSwgMClbMF06CiAg ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJmaWxlLnJlYWQoMSk6CkBAIC0yNDIsMTIg KzI1NCwxMyBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBDaGlsZAog ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCiAgICAgICAgICAg ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5zZXR1aWQobm9ib2R5KQogICAgICAg ICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAg ICAgICAgICAgICAgIG9zLmR1cDIoc2VsZi5yZmlsZS5maWxlbm8oKSwgMCkKLSAgICAgICAgICAg ICAgICBvcy5kdXAyKHNlbGYud2ZpbGUuZmlsZW5vKCksIDEpCisgICAgICAgICAgICAgICAgb3Mu ZHVwMih3LCAxKQogICAgICAgICAgICAgICAgIG9zLmV4ZWN2ZShzY3JpcHRmaWxlLCBhcmdzLCBl bnYpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFu ZGxlX2Vycm9yKHNlbGYucmVxdWVzdCwgc2VsZi5jbGllbnRfYWRkcmVzcykKQEAgLTI4NSw4ICsy OTgsMTYgQEAKICAgICAgICAgICAgIHdoaWxlIHNlbGVjdC5zZWxlY3QoW3NlbGYucmZpbGUuX3Nv Y2tdLCBbXSwgW10sIDApWzBdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJmaWxlLl9z b2NrLnJlY3YoMSk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzdGRv dXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoZGF0YSkKLSAgICAgICAgICAgIHNlbGYud2ZpbGUu d3JpdGUoc3Rkb3V0KQorICAgICAgICAgICAgciwgc3RkZXJyID0gcC5jb21tdW5pY2F0ZShkYXRh KQorICAgICAgICAgICAgZGF0YSA9IHIuc3BsaXQoJ1xuJywgMSkKKyAgICAgICAgICAgIHN0YXR1 cyA9IHJlLm1hdGNoKCdTdGF0dXM6IChbMC05XSspICguKyknLCBkYXRhWzBdKQorICAgICAgICAg ICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShpbnQoc3Rh dHVzLmdyb3VwKDEpKSwgc3RhdHVzLmdyb3VwKDIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAnT0snKQorICAgICAgICAgICAgICAg IHNlbGYud2ZpbGUud3JpdGUoZGF0YVswXSsnXG4nKQorICAgICAgICAgICAgIyBwaXBlIHJlc3Qg b2YgY29udGVudHMKKyAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoZGF0YVsxXSkKICAgICAg ICAgICAgIGlmIHN0ZGVycjoKICAgICAgICAgICAgICAgICBzZWxmLmxvZ19lcnJvcignJXMnLCBz dGRlcnIpCiAgICAgICAgICAgICBwLnN0ZGVyci5jbG9zZSgpCg== --20cf300fb08ddafb5304b78a4e8c--