Initial release v0.1.0
This commit is contained in:
commit
b997bd6078
62 changed files with 56224 additions and 0 deletions
386
docs/第一版本.md
Normal file
386
docs/第一版本.md
Normal file
|
|
@ -0,0 +1,386 @@
|
|||
|
||||
|
||||
# 项目组织
|
||||
|
||||
> 使用语言 Go
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
> 第一版本需要实现的指令
|
||||
|
||||
```BASH
|
||||
tz status
|
||||
tz start
|
||||
tz stop
|
||||
tz restart
|
||||
|
||||
tz core list
|
||||
tz core add
|
||||
tz core remove
|
||||
tz core use
|
||||
tz core info
|
||||
|
||||
tz profile list
|
||||
tz profile add
|
||||
tz profile remove
|
||||
tz profile use
|
||||
tz profile update
|
||||
|
||||
tz config build
|
||||
tz config check
|
||||
|
||||
tz node list
|
||||
tz node select
|
||||
tz node test
|
||||
|
||||
tz log
|
||||
|
||||
```
|
||||
|
||||
> 文件树
|
||||
|
||||
|
||||
|
||||
```
|
||||
tz/
|
||||
├── Cargo.toml
|
||||
├── Cargo.lock
|
||||
├── rust-toolchain.toml
|
||||
├── README.md
|
||||
├── LICENSE
|
||||
│
|
||||
├── src/
|
||||
│ ├── main.rs
|
||||
│ ├── lib.rs
|
||||
│ │
|
||||
│ ├── cli/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── args.rs
|
||||
│ │ ├── output.rs
|
||||
│ │ └── commands/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── status.rs
|
||||
│ │ ├── service.rs
|
||||
│ │ ├── core.rs
|
||||
│ │ ├── profile.rs
|
||||
│ │ ├── group.rs
|
||||
│ │ ├── node.rs
|
||||
│ │ ├── mode.rs
|
||||
│ │ ├── tun.rs
|
||||
│ │ ├── proxy.rs
|
||||
│ │ ├── setting.rs
|
||||
│ │ ├── rule.rs
|
||||
│ │ ├── connection.rs
|
||||
│ │ ├── config.rs
|
||||
│ │ ├── log.rs
|
||||
│ │ └── diagnose.rs
|
||||
│ │
|
||||
│ ├── application/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── context.rs
|
||||
│ │ └── usecase/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── start.rs
|
||||
│ │ ├── stop.rs
|
||||
│ │ ├── restart.rs
|
||||
│ │ ├── reload.rs
|
||||
│ │ ├── switch_core.rs
|
||||
│ │ ├── switch_profile.rs
|
||||
│ │ ├── update_profile.rs
|
||||
│ │ └── select_node.rs
|
||||
│ │
|
||||
│ ├── domain/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── core.rs
|
||||
│ │ ├── profile.rs
|
||||
│ │ ├── settings.rs
|
||||
│ │ ├── runtime.rs
|
||||
│ │ ├── capability.rs
|
||||
│ │ ├── group.rs
|
||||
│ │ ├── node.rs
|
||||
│ │ ├── connection.rs
|
||||
│ │ └── error.rs
|
||||
│ │
|
||||
│ ├── adapter/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── traits.rs
|
||||
│ │ ├── registry.rs
|
||||
│ │ │
|
||||
│ │ ├── mihomo/
|
||||
│ │ │ ├── mod.rs
|
||||
│ │ │ ├── adapter.rs
|
||||
│ │ │ ├── command.rs
|
||||
│ │ │ ├── config.rs
|
||||
│ │ │ ├── controller.rs
|
||||
│ │ │ └── response.rs
|
||||
│ │ │
|
||||
│ │ └── sing_box/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── adapter.rs
|
||||
│ │ ├── command.rs
|
||||
│ │ ├── config.rs
|
||||
│ │ ├── controller.rs
|
||||
│ │ └── response.rs
|
||||
│ │
|
||||
│ ├── core_manager/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── manager.rs
|
||||
│ │ ├── registry.rs
|
||||
│ │ ├── package.rs
|
||||
│ │ ├── installer.rs
|
||||
│ │ └── remover.rs
|
||||
│ │
|
||||
│ ├── profile/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── manager.rs
|
||||
│ │ ├── store.rs
|
||||
│ │ ├── fetcher.rs
|
||||
│ │ ├── detector.rs
|
||||
│ │ └── format/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── clash.rs
|
||||
│ │ ├── sing_box.rs
|
||||
│ │ └── uri_list.rs
|
||||
│ │
|
||||
│ ├── config/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── builder.rs
|
||||
│ │ ├── overlay.rs
|
||||
│ │ ├── effective.rs
|
||||
│ │ ├── bypass.rs
|
||||
│ │ └── validator.rs
|
||||
│ │
|
||||
│ ├── runtime/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── manager.rs
|
||||
│ │ ├── process.rs
|
||||
│ │ ├── pid.rs
|
||||
│ │ ├── lock.rs
|
||||
│ │ ├── health.rs
|
||||
│ │ ├── state.rs
|
||||
│ │ └── log.rs
|
||||
│ │
|
||||
│ ├── platform/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── paths.rs
|
||||
│ │ ├── shell.rs
|
||||
│ │ ├── system_proxy.rs
|
||||
│ │ ├── service.rs
|
||||
│ │ └── linux/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── systemd.rs
|
||||
│ │ ├── signal.rs
|
||||
│ │ ├── tun.rs
|
||||
│ │ └── routes.rs
|
||||
│ │
|
||||
│ ├── storage/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── atomic_file.rs
|
||||
│ │ ├── core_store.rs
|
||||
│ │ ├── profile_store.rs
|
||||
│ │ ├── settings_store.rs
|
||||
│ │ └── runtime_store.rs
|
||||
│ │
|
||||
│ ├── infrastructure/
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── command.rs
|
||||
│ │ ├── http.rs
|
||||
│ │ ├── download.rs
|
||||
│ │ ├── checksum.rs
|
||||
│ │ └── filesystem.rs
|
||||
│ │
|
||||
│ └── diagnose/
|
||||
│ ├── mod.rs
|
||||
│ ├── process.rs
|
||||
│ ├── ports.rs
|
||||
│ ├── api.rs
|
||||
│ ├── config.rs
|
||||
│ └── network.rs
|
||||
│
|
||||
├── assets/
|
||||
│ ├── defaults/
|
||||
│ │ └── settings.toml
|
||||
│ ├── templates/
|
||||
│ │ ├── mihomo.yaml
|
||||
│ │ └── sing-box.json
|
||||
│ └── systemd/
|
||||
│ └── tz.service
|
||||
│
|
||||
├── tests/
|
||||
│ ├── cli.rs
|
||||
│ ├── start_stop.rs
|
||||
│ ├── profile.rs
|
||||
│ └── adapter.rs
|
||||
│
|
||||
├── testdata/
|
||||
│ ├── profiles/
|
||||
│ │ ├── clash.yaml
|
||||
│ │ └── sing-box.json
|
||||
│ ├── api/
|
||||
│ │ ├── mihomo-proxies.json
|
||||
│ │ ├── mihomo-connections.json
|
||||
│ │ └── mihomo-version.json
|
||||
│ └── bin/
|
||||
│ └── fake-core
|
||||
│
|
||||
├── docs/
|
||||
│ ├── scope.md
|
||||
│ ├── domain-model.md
|
||||
│ ├── workflows.md
|
||||
│ ├── adapter-contract.md
|
||||
│ └── filesystem-layout.md
|
||||
│
|
||||
├── packaging/
|
||||
│ ├── systemd/
|
||||
│ └── completions/
|
||||
│
|
||||
└── scripts/
|
||||
├── install.sh
|
||||
├── uninstall.sh
|
||||
└── release.sh
|
||||
```
|
||||
|
||||
> 运行树
|
||||
|
||||
```
|
||||
语言 Rust
|
||||
异步运行时 Tokio
|
||||
CLI clap derive
|
||||
序列化 Serde
|
||||
HTTP reqwest
|
||||
错误类型 thiserror + anyhow
|
||||
日志 tracing
|
||||
项目配置 TOML
|
||||
Clash Profile YAML
|
||||
sing-box JSON
|
||||
```
|
||||
|
||||
|
||||
|
||||
```
|
||||
~/.config/tz/
|
||||
├── settings.toml
|
||||
├── current.toml
|
||||
├── bypass.list
|
||||
├── profiles/
|
||||
│ ├── home/
|
||||
│ │ ├── manifest.toml
|
||||
│ │ └── source.yaml
|
||||
│ └── company/
|
||||
│ ├── manifest.toml
|
||||
│ └── source.json
|
||||
└── overlays/
|
||||
├── common.toml
|
||||
├── mihomo.yaml
|
||||
└── sing-box.json
|
||||
|
||||
~/.local/share/tz/
|
||||
└── cores/
|
||||
├── mihomo/
|
||||
│ ├── current
|
||||
│ └── versions/
|
||||
│ └── 1.20.0/
|
||||
│ ├── manifest.toml
|
||||
│ └── bin/
|
||||
│ └── mihomo
|
||||
└── sing-box/
|
||||
├── current
|
||||
└── versions/
|
||||
└── 1.x/
|
||||
├── manifest.toml
|
||||
└── bin/
|
||||
└── sing-box
|
||||
|
||||
~/.local/state/tz/
|
||||
├── logs/
|
||||
│ ├── tz.log
|
||||
│ └── core.log
|
||||
├── builds/
|
||||
│ ├── effective-mihomo.yaml
|
||||
│ └── effective-sing-box.json
|
||||
├── history/
|
||||
└── runtime-history/
|
||||
|
||||
~/.cache/tz/
|
||||
├── downloads/
|
||||
├── subscriptions/
|
||||
└── latency/
|
||||
|
||||
${XDG_RUNTIME_DIR}/tz/
|
||||
├── tz.lock
|
||||
├── core.pid
|
||||
├── runtime.json
|
||||
├── effective-config
|
||||
└── control.sock
|
||||
```
|
||||
|
||||
|
||||
|
||||
# rust开发环境
|
||||
|
||||
```
|
||||
Rust + Tokio + clap
|
||||
Mihomo
|
||||
Clash YAML profile
|
||||
start / stop / status / log
|
||||
node list / select
|
||||
```
|
||||
|
||||
**现在使用一个 Package,包含一个 Library target 和一个 Binary target。**
|
||||
不使用 Workspace,也不使用多 Bin。
|
||||
|
||||
|
||||
|
||||
# 开发顺序
|
||||
|
||||
```
|
||||
第一阶段
|
||||
├── 路径系统
|
||||
├── SettingsStore
|
||||
├── CoreRegistry
|
||||
├── ProfileStore
|
||||
├── MihomoAdapter
|
||||
├── RuntimeManager
|
||||
├── tz start
|
||||
├── tz stop
|
||||
├── tz status
|
||||
└── tz log
|
||||
```
|
||||
|
||||
|
||||
|
||||
```
|
||||
第二阶段
|
||||
├── Mihomo Controller API
|
||||
├── group list/select
|
||||
├── node list/select/test
|
||||
├── mode
|
||||
├── reload
|
||||
└── profile update
|
||||
```
|
||||
|
||||
```
|
||||
第三阶段
|
||||
├── sing-box Adapter
|
||||
├── Capability 检测
|
||||
├── sing-box 配置生成
|
||||
├── TUN
|
||||
├── system proxy
|
||||
└── bypass
|
||||
```
|
||||
|
||||
```
|
||||
第四阶段
|
||||
├── core install/update
|
||||
├── diagnose
|
||||
├── connection
|
||||
├── completion
|
||||
└── 发布与安装脚本
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue