-#!/usr/bin/python
+#!/usr/bin/python3
-import cherrypy
+import http.server
import os
import sys
+import urllib
import webbrowser
-class Listener(object):
- @cherrypy.expose
- def firefox(self, url):
- print "Loading:", url
- webbrowser.open(url)
- raise cherrypy.HTTPRedirect(url, status=303)
+class FirefoxServer(http.server.BaseHTTPRequestHandler):
+ def do_GET(self):
+ query_string = self.path.partition("?")[2]
+ url = urllib.parse.parse_qs(query_string)["url"][0]
+
+ print("Loading:", url)
+ webbrowser.open(url)
+
+ self.send_response(code=303)
+ self.send_header("Location", url)
+ self.end_headers()
def do_fork():
- pid = os.fork()
- if pid < 0:
- print >>sys.stderr, "Unable to fork!"
- sys.exit(1)
- if pid != 0:
- sys.exit(0)
+ pid = os.fork()
+ if pid < 0:
+ print("Unable to fork!", file=sys.stderr)
+ sys.exit(1)
+ if pid != 0:
+ sys.exit(0)
def main(fork):
- if fork:
- do_fork()
- cherrypy.tree.mount(Listener())
- cherrypy.server.socket_host = "0.0.0.0"
- cherrypy.server.socket_port = 8080
- cherrypy.engine.start()
+ if fork:
+ do_fork()
-if __name__ == "__main__":
- fork = False
- if len(sys.argv) != 1:
- if sys.argv[1] == "--fork":
- fork = True
- else:
- print >>sys.stderr, "Usage: %s [--fork]" % sys.argv[0]
- sys.exit(1)
- main(fork)
+ with http.server.HTTPServer(("0.0.0.0", 8080), FirefoxServer) as httpd:
+ httpd.serve_forever()
+if __name__ == "__main__":
+ fork = False
+ if len(sys.argv) != 1:
+ if sys.argv[1] == "--fork":
+ fork = True
+ else:
+ print("Usage: %s [--fork]" % sys.argv[0], file=sys.stderr)
+ sys.exit(1)
+ main(fork)