HTTP Redirection, Take 2
Further to the comment posted, here is a revised version for redirection driven by configuration file.
#! /usr/local/bin/python import sys, os import BaseHTTPServer if len(sys.argv) != 2: sys.stderr.write("Usage: %s &lgt;config-file>\n" % sys.argv[0]) sys.exit(1) # # config file: # 1 line 2 fields (port, url) # config = sys.argv[1] if not os.path.exists(config): sys.stderr.write("Error. Config file '%s' does not exist" % config) sys.exit(2) else: fp = open(config, 'r') (port, url) = fp.readline().rstrip().split() class RedirectHandler(BaseHTTPServer.BaseHTTPRequestHandler): # just redirect regardless of uri def do_GET(s): s.send_response(302) s.send_header('Location', url) s.end_headers() # ignore output def log_message(s, format, *args): pass if __name__ == '__main__': server_class = BaseHTTPServer.HTTPServer httpd = server_class( ('', int(port)), RedirectHandler) try: httpd.serve_forever() except KeyboardInterrupt: pass httpd.server_close()
Sample content of a typical file to listen at port 1668 to www.google.com:
1668 http://www.google.com/
Tested on my Cygwin
Labels: python