| #!/usr/bin/env python |
| # Single purpose HTTP server |
| # - serves files specified as arguments in order of appearance |
| |
| |
| import os |
| import sys |
| import BaseHTTPServer |
| #from pprint import pprint |
| |
| class Handler(BaseHTTPServer.BaseHTTPRequestHandler): |
| def do_POST(self): |
| |
| print self.rfile.read(int(self.headers.getheader('content-length'))) |
| |
| response = self.dummy_response |
| if not self.filelist: |
| print 'No more files to serve - sending dummy response' |
| sys.stdout.flush() |
| else: |
| response = self.filelist.pop() |
| self.reply(response) |
| |
| def reply(self, response): |
| try: |
| #redirect stdout to client |
| stdout = sys.stdout |
| sys.stdout = self.wfile |
| print response |
| stdout.flush() |
| finally: |
| sys.stdout = stdout # restore |
| pass |
| |
| PORT = 12345 |
| print "Serving at port", PORT |
| sys.stdout.flush() |
| |
| filelist = [] |
| for file in sys.argv[1:]: |
| if os.path.isfile(file): |
| print "Adding file %s" % file |
| sys.stdout.flush() |
| with open(file) as f: |
| filelist.append(f.read()) |
| |
| filelist.reverse() |
| Handler.filelist = filelist |
| Handler.dummy_response = open("dummy", "r").read() |
| httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler) |
| httpd.serve_forever() |