Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提供一套完整的 RESTful api #1938

Open
liuweiGL opened this issue Aug 11, 2020 · 16 comments
Open

提供一套完整的 RESTful api #1938

liuweiGL opened this issue Aug 11, 2020 · 16 comments
Labels

Comments

@liuweiGL
Copy link

liuweiGL commented Aug 11, 2020

需求

希望 frps 服务端能对外提供一套标准的 api,方便第三方使用。

暂时期望的 api 列表:

  1. 获取客户端基础信息
  2. 获取每个客户端的代理配置
  3. 添加、修改客户端的代理配置
  4. 配置校验,防止错误的配置导致客户端无法启动

示例 api

Dreamacro/clash

使用场景

想要基于 api 开发一个代理管理服务,方便查看、维护代理配置。

解决的问题

  1. 目前修改代理需要手动去各个客户端主机上进行操作,一是繁琐,二是手动操作不可靠。
  2. 代理信息需要手动编写文档分享给同事
@liuweiGL liuweiGL changed the title 提供一套完整的 RESTful api。 提供一套完整的 RESTful api Aug 11, 2020
@QQ2017
Copy link

QQ2017 commented Aug 12, 2020

其实自己也可以做的,frpc可以reload,所以支持动态增删代理,你只需要提供额外的管理程序。
至于信息获取方面,frps和frpc都有web管理接口,获取的数据都是标准json数据。

@liuweiGL
Copy link
Author

自己做,每个客户端都部署一套管理程序?

@liuweiGL
Copy link
Author

而且一般客户端都是内网环境,那我的管理程序本身还得再来个穿透?

@QQ2017
Copy link

QQ2017 commented Aug 12, 2020

自己做,每个客户端都部署一套管理程序?

可以这样做的,没有问题。你也可以做成DLL,让GO加载你的DLL,所有管理工作都在DLL中进行。

@QQ2017
Copy link

QQ2017 commented Aug 12, 2020

而且一般客户端都是内网环境,那我的管理程序本身还得再来个穿透?

你自己应该有中间服务器吧,管理程序服务端放中间服务器就行了呀

@liuweiGL
Copy link
Author

不知道你说的中间程序是指什么呢?我目前使用 frp 就是 frps 跟 frpc 两个端。

@liuweiGL
Copy link
Author

我要 frps 暴露接口,就是为了把代理管理服务做成一个云管理平台。
这样的话,搭建内网穿透的时候,只需要部署 frps 跟 frpc 服务(不用配置),然后去管理服务进行维护就好了。

@QQ2017
Copy link

QQ2017 commented Aug 12, 2020

image

@liuweiGL
Copy link
Author

不一样,我这边的内网环境不止一套。
而且就算是放到能访问所有内网的跳机上,这样也不行: 如何自动更新客户端服务?自己弄只能手动维护这个信息。

@fatedier
Copy link
Owner

@liuweiGL API 之后会重新设计,在计划中,但是只能用于获取信息,不能提供创建修改的能力。

客户端的配置目前的架构是客户端自己维护,服务端无法指定,这样的安全性会更高,不容易有漏洞暴露整个内网机器。

frpc 目前也有接口可以增删改查代理,这一块之后也会优化。

目前可能的一种方式,就是 frpc 提供一个选项,可以支持将自己的接口开放给 frps,frps 作为一个代理,再将这个接口提供给外部调用者。实际上目前也已经可以通过暴露 frpc admin service 的端口到 frps 来实现这一能力。

@fatedier fatedier added the todo label Aug 12, 2020
@skywalkerscott
Copy link

@liuweiGL API 之后会重新设计,在计划中,但是只能用于获取信息,不能提供创建修改的能力。

客户端的配置目前的架构是客户端自己维护,服务端无法指定,这样的安全性会更高,不容易有漏洞暴露整个内网机器。

frpc 目前也有接口可以增删改查代理,这一块之后也会优化。

目前可能的一种方式,就是 frpc 提供一个选项,可以支持将自己的接口开放给 frps,frps 作为一个代理,再将这个接口提供给外部调用者。实际上目前也已经可以通过暴露 frpc admin service 的端口到 frps 来实现这一能力。

目前我就是通过frpc admin 端口暴露给服务端,然后热加载配置实现的客户机的配置更新的

@liuweiGL
Copy link
Author

liuweiGL commented Sep 7, 2020

  • 能用
  • 好用
  • 优雅

看个人的习惯吧,很多东西多绕几圈,都是能用的。

@xmsz
Copy link

xmsz commented Nov 30, 2021

现在情况怎么样

@onlyGuo
Copy link

onlyGuo commented Oct 20, 2022

沟通没在一个频道上,lssuse的原意是frpc仅注册到frps中,由frps统一管理配置和下发配置,而不是单独维护每个frpc的配置。
将7400交给frps是一个不是办法的办法
因为一旦frpc的数量多了的话,就得找个小本本记下来:

  • 映射机器1的端口我要访问7400、
  • 映射机器二的端口我要访问17400、
  • 映射机器三的端口我要访问27400

@pkxutao
Copy link

pkxutao commented Apr 20, 2023

请问现在开发完成了吗?我没找到相关文档

@aizhimou
Copy link

aizhimou commented Nov 5, 2023

请问下restful api开发有进展吗?我想做一个dashbord的移动端,找不到api

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants