分享一个调用v2ray接口的demo:go语言挺好用
1715 人阅读 | 时间:2020年02月26日 16:34
阿里云服务器 | 腾讯云服务器 | VPS2EZ:老牌低调VPS | ZJI:香港日本美国独服 |
LOCVPS服务周到 | HostKvm低调KVM VPS | 傲游主机:优质VPS | 80VPS:老牌VPS主机 |
搬瓦工:CN2 GIA线路 | CloudCone:性价比高 | JustMySocks科学上网 | RackNerd:超级便宜 |
JustMySocks科学上网 | 好用的宝塔面板 | 购买搬瓦工VPS | 恒创:香港CN2服务器 |
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("关闭连接失败") } }无聊在家,写了个调用v2ray接口的demo,各位mjj可以参考。初学go,感觉这语言挺好用啊。
评论专区