Skip to content

Commit

Permalink
Add mitm installer
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaoye committed Sep 15, 2022
1 parent 0930a4c commit 7ac6542
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 13 deletions.
27 changes: 16 additions & 11 deletions docs/guide/command-line.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 命令行

> 在通过pip安装Lyrebird之后,可以直接使用lyrebird命令行启动
> 在通过 pip 安装 Lyrebird 之后,可以直接使用 lyrebird 命令行启动
## -h --help
## -h --help

查看帮助

Expand All @@ -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"
Expand All @@ -32,7 +33,7 @@ optional arguments:
--plugin PLUGIN Set a plugin project path
```

## -V --version
## -V --version

查看版本

Expand All @@ -41,7 +42,7 @@ optional arguments:
Lyrebird 1.6.0
```

## -v -vvv
## -v -vv

显示详细日志

Expand All @@ -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

指定代理服务端端口

Expand All @@ -83,28 +84,32 @@ Lyrebird 1.6.0

启动时不打开浏览器

## --no-mitm

启动时不开启 mitmproxy [port:4272]

## -c --config

使用指定配置文件启动lyrebird
使用指定配置文件启动 lyrebird

## --log

指定输出日志文件的位置

## --script
## --script

从指定路径加载[自定义脚本](./checker.html)
用于调试自定义脚本

## --plugin
## --plugin

从源码启动自定义插件工程,用于插件开发和调试。

## gen

从模板生成一个自定义插件项目

安装好Lyrebird后,可通过Lyrebird命令行工具生成插件
安装好 Lyrebird 后,可通过 Lyrebird 命令行工具生成插件

```
# 在指定路径创建插件工程
Expand Down
20 changes: 20 additions & 0 deletions lyrebird/installer.py
Original file line number Diff line number Diff line change
@@ -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.')
18 changes: 17 additions & 1 deletion lyrebird/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion lyrebird/version.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
IVERSION = (2, 9, 1)
IVERSION = (2, 10, 0)
VERSION = ".".join(str(i) for i in IVERSION)
LYREBIRD = "Lyrebird " + VERSION

0 comments on commit 7ac6542

Please sign in to comment.