From 7ac65426405d7c86b3c5e03751f601ee63b80c67 Mon Sep 17 00:00:00 2001 From: zhaoye Date: Thu, 15 Sep 2022 12:58:56 +0800 Subject: [PATCH] Add mitm installer --- docs/guide/command-line.md | 27 ++++++++++++++++----------- lyrebird/installer.py | 20 ++++++++++++++++++++ lyrebird/manager.py | 18 +++++++++++++++++- lyrebird/version.py | 2 +- 4 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 lyrebird/installer.py diff --git a/docs/guide/command-line.md b/docs/guide/command-line.md index cd98c5549..0bee3595a 100644 --- a/docs/guide/command-line.md +++ b/docs/guide/command-line.md @@ -1,8 +1,8 @@ # 命令行 -> 在通过pip安装Lyrebird之后,可以直接使用lyrebird命令行启动。 +> 在通过 pip 安装 Lyrebird 之后,可以直接使用 lyrebird 命令行启动。 -## -h --help +## -h --help 查看帮助 @@ -24,6 +24,7 @@ optional arguments: --proxy PROXY Set proxy server port, default port is 9090 --data DATA Set data dir, default is "./data/" -b, --no_browser Start without open a browser + --no-mitm Start without mitmproxy on 4272 -c CONFIG, --config CONFIG Start with a config file. Default is "~/.lyrebird/conf.json" @@ -32,7 +33,7 @@ optional arguments: --plugin PLUGIN Set a plugin project path ``` -## -V --version +## -V --version 查看版本 @@ -41,7 +42,7 @@ optional arguments: Lyrebird 1.6.0 ``` -## -v -vvv +## -v -vv 显示详细日志 @@ -54,16 +55,16 @@ Lyrebird 1.6.0 > lyrebird -vv ``` -## --mock +## --mock -指定mock服务端口 +指定 mock 服务端口 ```bash # 指定mock服务端口,lyrebird将在9000端口开启mock服务端口。(默认端口是9090) > lyrebird --mock 9000 ``` -## --proxy +## --proxy 指定代理服务端端口 @@ -83,20 +84,24 @@ Lyrebird 1.6.0 启动时不打开浏览器 +## --no-mitm + +启动时不开启 mitmproxy [port:4272] + ## -c --config -使用指定配置文件启动lyrebird +使用指定配置文件启动 lyrebird ## --log 指定输出日志文件的位置 -## --script +## --script 从指定路径加载[自定义脚本](./checker.html) 用于调试自定义脚本 -## --plugin +## --plugin 从源码启动自定义插件工程,用于插件开发和调试。 @@ -104,7 +109,7 @@ Lyrebird 1.6.0 从模板生成一个自定义插件项目 -安装好Lyrebird后,可通过Lyrebird命令行工具生成插件 +安装好 Lyrebird 后,可通过 Lyrebird 命令行工具生成插件 ``` # 在指定路径创建插件工程 diff --git a/lyrebird/installer.py b/lyrebird/installer.py new file mode 100644 index 000000000..d8386bad8 --- /dev/null +++ b/lyrebird/installer.py @@ -0,0 +1,20 @@ +from lyrebird.mitm.proxy_server import LyrebirdProxyServer +from click import secho + + +def install_mitm(): + LyrebirdProxyServer().download_mitmproxy() + + +installer = { + 'mitm': install_mitm +} + + +def install(extension_name): + global installer + install_func = installer.get(extension_name) + if install_func: + install_func() + else: + secho(f'Install failed. extension "{extension_name}" not found.') diff --git a/lyrebird/manager.py b/lyrebird/manager.py index 1efb73e63..2c730b44c 100644 --- a/lyrebird/manager.py +++ b/lyrebird/manager.py @@ -27,6 +27,7 @@ from lyrebird.task import BackgroundTaskServer from lyrebird.base_server import MultiProcessServerMessageDispatcher from lyrebird import utils +from lyrebird import installer logger = log.get_logger() @@ -84,6 +85,9 @@ def main(): gen_parser = subparser.add_parser('gen') gen_parser.add_argument('path', help='Create plugin project') + install_parser = subparser.add_parser('install') + install_parser.add_argument('extension_name') + args = parser.parse_args() if args.version: @@ -146,6 +150,9 @@ def thread_excepthook(args): if args.sub_command == 'gen': logger.debug('EXEC: Plugin project generator') gen(args) + elif args.sub_command == 'install': + logger.debug('EXEC: Installer') + installer.install(args.extension_name) else: logger.debug('EXEC: LYREBIRD START') run(args) @@ -173,8 +180,17 @@ def run(args: argparse.Namespace): # mutilprocess message dispatcher application.server['dispather'] = MultiProcessServerMessageDispatcher() application.server['task'] = BackgroundTaskServer() - if not args.no_mitm: + + # Start mitmproxy server + conf_no_mitm = application._cm.config.get('no_mitm', None) + args_no_mitm = args.no_mitm + if conf_no_mitm is None: + should_start_mitm = not args_no_mitm + else: + should_start_mitm = not conf_no_mitm + if should_start_mitm: application.server['proxy'] = LyrebirdProxyServer() + application.server['mock'] = LyrebirdMockServer() application.server['extra.mock'] = ExtraMockServer() application.server['db'] = LyrebirdDatabaseServer(path=args.database) diff --git a/lyrebird/version.py b/lyrebird/version.py index 69b779c21..69172c141 100644 --- a/lyrebird/version.py +++ b/lyrebird/version.py @@ -1,3 +1,3 @@ -IVERSION = (2, 9, 1) +IVERSION = (2, 10, 0) VERSION = ".".join(str(i) for i in IVERSION) LYREBIRD = "Lyrebird " + VERSION