mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +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.httpserver
|
||||||
import tornado.ioloop
|
import tornado.ioloop
|
||||||
from tornado.platform.asyncio import AsyncIOMainLoop
|
from tornado.platform.asyncio import AsyncIOMainLoop
|
||||||
@ -112,38 +110,4 @@ class WebMaster(master.Master):
|
|||||||
self.log.info(
|
self.log.info(
|
||||||
"Web server listening at {}".format(web_url),
|
"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)
|
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:
|
class WebAddon:
|
||||||
def load(self, loader):
|
def load(self, loader):
|
||||||
loader.add_option(
|
loader.add_option(
|
||||||
@ -16,3 +21,39 @@ class WebAddon:
|
|||||||
"web_iface", str, "127.0.0.1",
|
"web_iface", str, "127.0.0.1",
|
||||||
"Web UI interface."
|
"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