mirror of
https://gitcode.com/JianFeeeee/webui4frpc.git
synced 2026-09-20 00:47:57 +00:00
- 零 frp 源码依赖,单二进制 (Go + Vue3 + VueFlow + Element Plus) - 画布多对多连线,渲染 tcp/udp/http/https frpc 配置 - worker 进程管理:自愈、日志轮转、崩溃退避重启 - frpc 一键安装 (GitHub Releases) + 手动指定路径 - 三页 UI:状态(默认)/连接配置/设置 - 状态页实时节点/转发状态,节点可增删改启停 - 画布冲突检查:端口/域名冲突标红 + 弹窗拦截保存 - backend 单测覆盖 store/render/process/httpapi/install - plan.md + FRPC_FEATURES_AUDIT.md 文档
110 lines
5.5 KiB
Markdown
110 lines
5.5 KiB
Markdown
# webui4frpc 对 frpc 高级功能支持审查报告
|
||
|
||
> 审查基准:frp v0.71 的 frpc 配置能力(官方文档支持的 proxy 类型、认证、传输、插件等)。
|
||
> 审查范围:当前 webui4frpc 的画布数据模型(Local/Remote/Link)、渲染器(internal/render)能表达和输出什么。
|
||
|
||
## 一、总体结论
|
||
|
||
当前实现聚焦「最小可用」:**TCP/HTTP 单端口转发 + token 认证** 已打通并验证(多个远程节点、多对多连线、真实连通)。但 frpc 的**大部分高级能力尚未建模**,且**已有能力因模型缺字段而不可配置**。适合作为 1.0 基线,但要覆盖更广使用场景需系统性扩展。
|
||
|
||
## 二、能力支持矩阵
|
||
|
||
### 2.1 代理类型(proxy type)
|
||
|
||
| 类型 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| tcp | ✅ | 完整支持(LocalIP/LocalPort/RemotePort) |
|
||
| udp | 🟡 部分 | 渲染支持,但协处理器(KCP/加密等)未建模 |
|
||
| http | 🟡 部分 | 支持 customDomains 默认域名,但无法配置 locations/headers/负载均衡 |
|
||
| https | 🟡 部分 | 同 http,未建模证书/SNI |
|
||
| stcp | ❌ | 加密点对点穿透完全不支持 |
|
||
| sudp | ❌ | 同 stcp |
|
||
| xtcp | ❌ | P2P TCP 模拟(依赖 kcp-go),不支持 |
|
||
| tcpmux | ❌ | HTTP/2 多路复用(multiplexer/http2),不支持 |
|
||
|
||
### 2.2 认证(auth)
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 服务端 token | ✅ | Remote 有 Token 字段 |
|
||
| OIDC | ❌ | frpc 支持 openid connect(coreos/go-oidc),未建模 |
|
||
| TLS 客户端证书 | ❌ | 未建模 |
|
||
|
||
### 2.3 传输(transport)
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| tcp / kcp / websocket / quic | 🟡 | Remote 无 protocol 字段,无法选择 |
|
||
| 加密 / 压缩(useEncryption/useCompression) | ❌ | 未建模 |
|
||
| 带宽限制(bandwidthLimit) | ❌ | 未建模 |
|
||
| 连接池(poolCount) | ❌ | 未建模 |
|
||
| TLS 传输(transport.tls.enable) | ❌ | 未建模 |
|
||
| Connect Server 超时/重连 | ❌ | 未建模(有默认值) |
|
||
|
||
### 2.4 负载均衡与健康检查
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 多个 local 提供同一组(group/loadBalancer) | ❌ | 未建模 group/groupKey |
|
||
| health check(tcp/http,失败剔除) | ❌ | 未建模 HealthCheckConfig |
|
||
|
||
### 2.5 域名与路由(http/https)
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| customDomains 多域名 | 🟡 | 可输出,但画布 local 无域名字段(写死 name.local) |
|
||
| subdomain | 🟡 | render 支持生成,但依赖服务器 subdomain_host(演示环境未启用) |
|
||
| locations(路径路由) | ❌ | 未建模 |
|
||
| httpHeader 改写 / hostHeaderRewrite | ❌ | 未建模 |
|
||
| basicAuth(站点访问认证) | ❌ | 未建模 |
|
||
|
||
### 2.6 插件(plugin)与虚拟 IP
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| client plugin(http2https/static/server 等) | ❌ | 未建模
|
||
| vmnet(虚拟 IP) | ❌ | 未建模 |
|
||
|
||
### 2.7 其它
|
||
|
||
| 能力 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 元数据 metadatas / annotations | ❌ | Remote 有 URL 但无 metadatas |
|
||
| start (enabled 控制) | ✅ | Remote 有 Enabled |
|
||
| 全局配置(byteLimit 等) | ❌ | 未建模 |
|
||
|
||
## 三、具体缺口细节
|
||
|
||
1. **Local/Remote 模型过简**:Local 只有 name/ip/port/protocol;缺 encryption/compression/bandwidth/plugin/metadatas/域名/路径/健康检查等。Remote 缺 protocol(kcp/quic/ws)、tls、oidc、pool 等。
|
||
2. **渲染器只输出 6 个字段**:`brpcProxy` 仅 name/type/localIP/localPort/remotePort/customDomains/subdomain。**transport 段只有空 protocol**,frpc 其它传输参数全部缺失。
|
||
3. **画布节点编辑只暴露 ip/port/协议**:连已有的 token/url 也只在部分入口可编辑,更别说高级字段。
|
||
4. **udp 渲染无 UDPPacketSize 等**、**https 无证书流程**。
|
||
|
||
## 四、用户实际会遇到的典型场景覆盖
|
||
|
||
| 场景 | 现状 |
|
||
|---|---|
|
||
| 内网 Web 服务对外(http+tcp) | ✅ 覆盖 |
|
||
| 普通 TCP 服务(数据库/SSH/自建协议) | ✅ 覆盖 |
|
||
| 加密内网通信(stcp/sudp) | ❌ 若用户需要点对点加密穿透则无法完成 |
|
||
| 多域名多路径挂多个站点到一台 frps | 🟡 部分(域名选择没做) |
|
||
| 限速 / 压缩 / 加密传输 | ❌ |
|
||
| 负载均衡 / 健康检查 | ❌ |
|
||
| kcp/quic 弱网优化 | ❌ |
|
||
|
||
## 五、优先级建议
|
||
|
||
| 优先级 | 项 | 理由 |
|
||
|---|---|---|
|
||
| P0 | 画布冲突检查(本次已实现) | 防止重复 remotePort / 域名重复导致配置直接失败 |
|
||
| P0 | Local 增加「连接参数」高级区:encryption / compression / bandwidthLimit / poolCount / metadatas | 高频项,改动小(渲染器 + 表单) |
|
||
| P1 | Remote 增加 transport 选择:protocol(tcp/quic/kcp/websocket) 、tls.enable、poolCount | 让 kcp/quic/web 场景可用 |
|
||
| P1 | local http/https 增加域名字段(customDomains/subdomain 可编辑)+ locations | 覆盖多站点部署 |
|
||
| P2 | 健康检查 / 负载均衡(group) | 中频 |
|
||
| P2 | 插件 stub / 虚拟 IP | 低频,且 UI 复杂 |
|
||
| P3 | OIDC / TLS 证书 / 高级插件 | 低频,可延后 |
|
||
|
||
## 六、结论
|
||
|
||
webui4frpc 已具备**生产可用的核心**(tcp/http 多节点多对多转发 + 状态页 + worker 管理),且面向「避免运维手写配置」的目标价值明确。但要覆盖 frpc 完整能力需分阶段补齐:**先做 P0(冲突检查已做)+ P0 高级传输参数建模**,再逐级推进,避免一上来堆字段导致画布复杂化。建议 UI 采用「折叠高级区」或「按类型动态显示字段」,保持画布简洁。
|