You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
1 year ago
|
#!/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()
|