mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 00:01:36 +00:00
finish FIXME: move open_browser() to addon/browser (#3832)
This commit is contained in:
parent
6d3b8c9716
commit
e01f044c33
@ -1,5 +1,3 @@
|
||||
import webbrowser
|
||||
|
||||
import tornado.httpserver
|
||||
import tornado.ioloop
|
||||
from tornado.platform.asyncio import AsyncIOMainLoop
|
||||
@ -112,38 +110,4 @@ class WebMaster(master.Master):
|
||||
self.log.info(
|
||||
"Web server listening at {}".format(web_url),
|
||||
)
|
||||
# FIXME: This should be in an addon hooked to the "running" event, not in master
|
||||
if self.options.web_open_browser:
|
||||
success = open_browser(web_url)
|
||||
if not success:
|
||||
self.log.info(
|
||||
"No web browser found. Please open a browser and point it to {}".format(web_url),
|
||||
)
|
||||
self.run_loop(iol.start)
|
||||
|
||||
|
||||
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
|
||||
|
@ -1,3 +1,8 @@
|
||||
import webbrowser
|
||||
|
||||
from mitmproxy import ctx
|
||||
|
||||
|
||||
class WebAddon:
|
||||
def load(self, loader):
|
||||
loader.add_option(
|
||||
@ -16,3 +21,39 @@ class WebAddon:
|
||||
"web_iface", str, "127.0.0.1",
|
||||
"Web UI interface."
|
||||
)
|
||||
|
||||
def running(self):
|
||||
if hasattr(ctx.options, "web_open_browser") and ctx.options.web_open_browser:
|
||||
web_url = "http://{}:{}/".format(ctx.options.web_iface, ctx.options.web_port)
|
||||
success = open_browser(web_url)
|
||||
if not success:
|
||||
ctx.log.info(
|
||||
"No web browser found. Please open a browser and point it to {}".format(web_url),
|
||||
)
|
||||
|
||||
|
||||
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