mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +00:00
mitmweb: start browser on startup
This commit is contained in:
parent
677789a617
commit
de6bf175e2
@ -1,4 +1,5 @@
|
|||||||
import sys
|
import sys
|
||||||
|
import webbrowser
|
||||||
|
|
||||||
import tornado.httpserver
|
import tornado.httpserver
|
||||||
import tornado.ioloop
|
import tornado.ioloop
|
||||||
@ -143,13 +144,16 @@ class WebMaster(master.Master):
|
|||||||
iol = tornado.ioloop.IOLoop.instance()
|
iol = tornado.ioloop.IOLoop.instance()
|
||||||
|
|
||||||
http_server = tornado.httpserver.HTTPServer(self.app)
|
http_server = tornado.httpserver.HTTPServer(self.app)
|
||||||
http_server.listen(self.options.wport)
|
http_server.listen(self.options.wport, self.options.wiface)
|
||||||
|
|
||||||
iol.add_callback(self.start)
|
iol.add_callback(self.start)
|
||||||
tornado.ioloop.PeriodicCallback(lambda: self.tick(timeout=0), 5).start()
|
tornado.ioloop.PeriodicCallback(lambda: self.tick(timeout=0), 5).start()
|
||||||
try:
|
try:
|
||||||
print("Server listening at http://{}:{}".format(
|
url = "http://{}:{}/".format(self.options.wiface, self.options.wport)
|
||||||
self.options.wiface, self.options.wport), file=sys.stderr)
|
print("Server listening at {}".format(url), file=sys.stderr)
|
||||||
|
if not open_browser(url):
|
||||||
|
print("No webbrowser found. Please open a browser and point it to {}".format(url))
|
||||||
|
|
||||||
iol.start()
|
iol.start()
|
||||||
except (Stop, KeyboardInterrupt):
|
except (Stop, KeyboardInterrupt):
|
||||||
self.shutdown()
|
self.shutdown()
|
||||||
@ -157,3 +161,30 @@ class WebMaster(master.Master):
|
|||||||
# def add_log(self, e, level="info"):
|
# def add_log(self, e, level="info"):
|
||||||
# super().add_log(e, level)
|
# super().add_log(e, level)
|
||||||
# return self.state.add_log(e, level)
|
# return self.state.add_log(e, level)
|
||||||
|
|
||||||
|
|
||||||
|
def open_browser(url: str) -> bool:
|
||||||
|
"""
|
||||||
|
Open a URL in a browser window.
|
||||||
|
In contrast to webbrowser.open, we limit the list of suitable browsers.
|
||||||
|
This gracefully degrades to a no-op on headless servers, where webbrowser.open
|
||||||
|
would otherwise open lynx.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True, if a browser has been opened
|
||||||
|
False, if no suitable browser has been found.
|
||||||
|
"""
|
||||||
|
browsers = (
|
||||||
|
"windows-default", "macosx",
|
||||||
|
"google-chrome", "chrome", "chromium", "chromium-browser",
|
||||||
|
"firefox", "opera", "safari",
|
||||||
|
)
|
||||||
|
for browser in browsers:
|
||||||
|
try:
|
||||||
|
b = webbrowser.get(browser)
|
||||||
|
except webbrowser.Error:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
b.open(url)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
Loading…
Reference in New Issue
Block a user