mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-22 18:08:14 -05:00
15c36a9580
refactor limiter fix getLink bug add connection limit move limit config to ControllerConfig del dynamic speed limit (next version will be re add) del online ip sync (next version will be re add)
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package panel
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
type OnlineUser struct {
|
|
UID int
|
|
IP string
|
|
}
|
|
|
|
type UserInfo struct {
|
|
Id int `json:"id"`
|
|
Uuid string `json:"uuid"`
|
|
SpeedLimit int `json:"speed_limit"`
|
|
Traffic int64 `json:"-"`
|
|
}
|
|
|
|
type UserListBody struct {
|
|
//Msg string `json:"msg"`
|
|
Users []UserInfo `json:"users"`
|
|
}
|
|
|
|
// GetUserList will pull user form sspanel
|
|
func (c *Client) GetUserList() (UserList []UserInfo, err error) {
|
|
const path = "/api/v1/server/UniProxy/user"
|
|
res, err := c.client.R().
|
|
Get(path)
|
|
err = c.checkResponse(res, path, err)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var userList *UserListBody
|
|
err = json.Unmarshal(res.Body(), &userList)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("unmarshal userlist error: %s", err)
|
|
}
|
|
return userList.Users, nil
|
|
}
|
|
|
|
type UserTraffic struct {
|
|
UID int
|
|
Upload int64
|
|
Download int64
|
|
}
|
|
|
|
// ReportUserTraffic reports the user traffic
|
|
func (c *Client) ReportUserTraffic(userTraffic []UserTraffic) error {
|
|
data := make(map[int][]int64, len(userTraffic))
|
|
for i := range userTraffic {
|
|
data[userTraffic[i].UID] = []int64{userTraffic[i].Upload, userTraffic[i].Download}
|
|
}
|
|
const path = "/api/v1/server/UniProxy/push"
|
|
res, err := c.client.R().
|
|
SetBody(data).
|
|
ForceContentType("application/json").
|
|
Post(path)
|
|
err = c.checkResponse(res, path, err)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|