找回密码
 立即注册
CeraNetworksBGVM服务器主机交流IP归属甄别会员请立即修改密码
查看: 70|回复: 9

无聊在家,写了个调用v2ray接口的demo,各位mjj可以参考

[复制链接]

120

主题

877

回帖

3321

积分

论坛元老

积分
3321
发表于 2020-2-26 15:49:20 | 显示全部楼层 |阅读模式
本帖最后由 king51 于 2020-2-26 15:53 编辑
[ol]
  • package main
  • import (
  •         "context"
  •         "fmt"
  •         "github.com/labstack/gommon/log"
  •         "github.com/satori/go.uuid"
  •         "google.golang.org/grpc"
  •         // proxy管理服务
  •         proxymanService "v2ray.com/core/app/proxyman/command"
  •         // 统计服务
  •         statsService "v2ray.com/core/app/stats/command"
  •         "v2ray.com/core/common/protocol"
  •         "v2ray.com/core/common/serial"
  •         "v2ray.com/core/proxy/vmess"
  • )
  • // 添加用户
  • func addUser(conn *grpc.ClientConn) error {
  •         client := proxymanService.NewHandlerServiceClient(conn)
  •         userUUID := uuid.NewV4().String() //使用UUID库生成一个UUID
  •         resp, err := client.AlterInbound(context.Background(), &proxymanService.AlterInboundRequest{
  •                 Tag: "proxy", // 要添加用户的tag,目前只支持vmess协议
  •                 Operation: serial.ToTypedMessage(&proxymanService.AddUserOperation{
  •                         User: &protocol.User{
  •                                 Level: 0,                 // 用户等级
  •                                 Email: "usermail@qq.com", // 用户邮箱,删除和统计要用到
  •                                 Account: serial.ToTypedMessage(&vmess.Account{
  •                                         Id:               userUUID,                                                   //用户UUID
  •                                         AlterId:          4,                                                          // 额外ID
  •                                         SecuritySettings: &protocol.SecurityConfig{Type: protocol.SecurityType_AUTO}, // 安全设置,auto为自动判断加密协议
  •                                 }),
  •                         },
  •                 }),
  •         })
  •         if err != nil {
  •                 return err
  •         }
  •         fmt.Println(resp)
  •         fmt.Println(userUUID)
  •         return nil
  • }
  • // 删除用户
  • func removeUser(conn *grpc.ClientConn) error {
  •         client := proxymanService.NewHandlerServiceClient(conn)
  •         resp, err := client.AlterInbound(context.Background(), &proxymanService.AlterInboundRequest{
  •                 Tag: "proxy",
  •                 Operation: serial.ToTypedMessage(&proxymanService.RemoveUserOperation{
  •                         Email: "usermail@qq.com", // 用户邮箱地址
  •                 }),
  •         })
  •         if err != nil {
  •                 return err
  •         }
  •         fmt.Println(resp)
  •         return nil
  • }
  • // 获取用户流量
  • func queryUserTraffic(conn *grpc.ClientConn) error {
  •         client := statsService.NewStatsServiceClient(conn)
  •         resp, err := client.QueryStats(context.Background(), &statsService.QueryStatsRequest{
  •                 /*
  •                         user>>>[email]>>>traffic>>>uplink
  •                         特定用户的上行流量,单位字节。
  •                         user>>>[email]>>>traffic>>>downlink
  •                         特定用户的下行流量,单位字节。
  •                         inbound>>>[tag]>>>traffic>>>uplink
  •                         特定入站代理的上行流量,单位字节。
  •                         inbound>>>[tag]>>>traffic>>>downlink
  •                         特定入站代理的下行流量,单位字节。
  •                 */
  •                 Pattern: "user", // 筛选用户表达式
  •                 Reset_:  false,  // 查询完成后是否重置流量
  •         })
  •         if err != nil {
  •                 return err
  •         }
  •         // 获取返回值中的流量信息
  •         stat := resp.GetStat()
  •         // 返回的是一个数组,对其进行遍历输出
  •         for _, e := range stat {
  •                 fmt.Println(e)
  •         }
  •         return nil
  • }
  • func main() {
  •         // 连接grpc服务
  •         conn, err := grpc.Dial("IP:port", grpc.WithInsecure())
  •         if err != nil {
  •                 panic(err)
  •         }
  •         //err = queryUserTraffic(conn)
  •         err = addUser(conn)
  •         //err = removeUser(conn)
  •         if err != nil {
  •                 log.Info(err)
  •         }
  •         if err = conn.Close(); err != nil {
  •                 log.Info("关闭连接失败")
  •         }
  • }
  • [/ol]复制代码


      初学go,感觉这语言挺好用啊
  • 回复

    使用道具 举报

    6

    主题

    2232

    回帖

    4606

    积分

    论坛元老

    积分
    4606
    发表于 2020-2-26 15:50:53 | 显示全部楼层
    可惜不是拍黄皮
    回复

    使用道具 举报

    120

    主题

    877

    回帖

    3321

    积分

    论坛元老

    积分
    3321
     楼主| 发表于 2020-2-26 15:53:23 | 显示全部楼层

    hasamol7468 发表于 2020-2-26 15:50

    可惜不是拍黄皮



    php毕竟不是谷歌自家 调用grpc麻烦
    回复

    使用道具 举报

    54

    主题

    133

    回帖

    444

    积分

    中级会员

    积分
    444
    发表于 2020-2-26 15:50:00 | 显示全部楼层
    派黄片很好
    回复

    使用道具 举报

    7

    主题

    37

    回帖

    103

    积分

    注册会员

    积分
    103
    发表于 2020-2-26 15:54:18 | 显示全部楼层
    本帖最后由 wuxjian 于 2020-2-26 16:02 编辑

    go error写的很恶心,我也写过一些
    回复

    使用道具 举报

    6

    主题

    2232

    回帖

    4606

    积分

    论坛元老

    积分
    4606
    发表于 2020-2-26 16:01:14 | 显示全部楼层

    king51 发表于 2020-2-26 15:53

    php毕竟不是谷歌自家 调用grpc麻烦

    的确,之前整过,很头大只好整了个中间件
    回复

    使用道具 举报

    37

    主题

    684

    回帖

    2314

    积分

    金牌会员

    积分
    2314
    发表于 2020-2-26 17:11:32 | 显示全部楼层

    king51 发表于 2020-2-26 15:53

    php毕竟不是谷歌自家 调用grpc麻烦

    也不是很麻烦 有grpc一键生成各种语言的, 转成php和js一样用
    目前我用的js调用的
    回复

    使用道具 举报

    19

    主题

    124

    回帖

    665

    积分

    高级会员

    积分
    665
    发表于 2020-2-26 15:53:00 | 显示全部楼层
    大佬大佬!话说 v.2.r.a.y api 的文档在哪里查看啊?
    回复

    使用道具 举报

    120

    主题

    877

    回帖

    3321

    积分

    论坛元老

    积分
    3321
     楼主| 发表于 2020-2-26 17:14:50 | 显示全部楼层

    XiFanU 发表于 2020-2-27 12:18

    大佬大佬!话说 v.2.r.a.y api 的文档在哪里查看啊?



    没有文档,自己参考谷歌上教程和demo做就行
    回复

    使用道具 举报

    32

    主题

    338

    回帖

    960

    积分

    高级会员

    积分
    960
    发表于 2020-2-26 15:53:00 | 显示全部楼层
    go 不会用
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-5-19 15:06 , Processed in 0.063121 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表