|
@@ -118,7 +118,14 @@ func (a *ClientController) get(c *gin.Context) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
rec.Flow = flow
|
|
rec.Flow = flow
|
|
|
- jsonObj(c, gin.H{"client": rec, "inboundIds": inboundIds}, nil)
|
|
|
|
|
|
|
+ // Consumed bytes (up+down, including cross-node global overlay) so API
|
|
|
|
|
+ // consumers can pair usage with the client's totalGB quota (#4973).
|
|
|
|
|
+ // Best-effort: a traffic lookup failure must not break the client fetch.
|
|
|
|
|
+ var usedTraffic int64
|
|
|
|
|
+ if t, tErr := a.inboundService.GetClientTrafficByEmail(email); tErr == nil && t != nil {
|
|
|
|
|
+ usedTraffic = t.Up + t.Down
|
|
|
|
|
+ }
|
|
|
|
|
+ jsonObj(c, gin.H{"client": rec, "inboundIds": inboundIds, "usedTraffic": usedTraffic}, nil)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (a *ClientController) create(c *gin.Context) {
|
|
func (a *ClientController) create(c *gin.Context) {
|