Skip to content

Instantly share code, notes, and snippets.

@charleso
Created March 29, 2014 04:49
Show Gist options
  • Save charleso/9848659 to your computer and use it in GitHub Desktop.
Save charleso/9848659 to your computer and use it in GitHub Desktop.
import sys, os, os.path
import signal
from threading import Thread
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SimpleHTTPServer import SimpleHTTPRequestHandler
class PUTHandler(SimpleHTTPRequestHandler):
def do_PUT(self):
length = int(self.headers['Content-Length'])
content = self.rfile.read(length)
path = self.path[1:]
if os.path.dirname(path) and not os.path.exists(os.path.dirname(path)):
os.makedirs(os.path.dirname(path))
if os.path.exists(path):
os.remove(path)
f = file(path, 'w')
f.write(content)
self.send_response(200)
# print content
def run_on(port):
print("Starting a server on port %i" % port)
server_address = ('localhost', port)
httpd = HTTPServer(server_address, PUTHandler)
httpd.serve_forever()
if __name__ == "__main__":
ports = [int(arg) for arg in sys.argv[1:]]
for port_number in ports:
server = Thread(target=run_on, args=[port_number])
server.daemon = True # Do not make us wait for you to exit
server.start()
signal.pause() # Wait for interrupt signal, e.g. KeyboardInterrupt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment