跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 无聊在家,写了个调用v2ray接口的demo,各位mjj可以参考
未分類
26 2 月 2020

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

king51 大佬有话说 :

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

本帖最后由 king51 于 2020-2-26 15:53 编辑

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: "[email protected]", // 用户邮箱,删除和统计要用到
                                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: "[email protected]", // 用户邮箱地址
                }),
        })
        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>>>>>>traffic>>>uplink
                        特定用户的上行流量,单位字节。
                        user>>>>>>traffic>>>downlink
                        特定用户的下行流量,单位字节。
                        inbound>>>>>>traffic>>>uplink
                        特定入站代理的上行流量,单位字节。
                        inbound>>>>>>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("关闭连接失败")
        }
}

yc022t初学go,感觉这语言挺好用啊

hasamol7468 大佬有话说 :

可惜不是拍黄皮

king51 大佬有话说 :

hasamol7468 大佬有话说 : 2020-2-26 15:50
可惜不是拍黄皮

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

korbin 大佬有话说 :

派黄片很好

wuxjian 大佬有话说 :

本帖最后由 wuxjian 于 2020-2-26 16:02 编辑

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

hasamol7468 大佬有话说 :

king51 大佬有话说 : 2020-2-26 15:53
php毕竟不是谷歌自家 调用grpc麻烦

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

风铃 大佬有话说 :

king51 大佬有话说 : 2020-2-26 15:53
php毕竟不是谷歌自家 调用grpc麻烦

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

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具