Skip to content

Commit

Permalink
[feature] detect online users #559
Browse files Browse the repository at this point in the history
  • Loading branch information
alireza0 committed Sep 24, 2023
1 parent d4a23f8 commit bf892e9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
6 changes: 5 additions & 1 deletion web/controller/inbound.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (a *InboundController) initRouter(g *gin.RouterGroup) {
g.POST("/resetAllTraffics", a.resetAllTraffics)
g.POST("/resetAllClientTraffics/:id", a.resetAllClientTraffics)
g.POST("/delDepletedClients/:id", a.delDepletedClients)

g.POST("/onlines", a.onlines)
}

func (a *InboundController) getInbounds(c *gin.Context) {
Expand Down Expand Up @@ -253,3 +253,7 @@ func (a *InboundController) delDepletedClients(c *gin.Context) {
}
jsonMsg(c, "All delpeted clients are deleted", nil)
}

func (a *InboundController) onlines(c *gin.Context) {
jsonObj(c, a.inboundService.GetOnlineClinets(), nil)
}
15 changes: 15 additions & 0 deletions web/service/inbound.go
Original file line number Diff line number Diff line change
Expand Up @@ -688,9 +688,15 @@ func (s *InboundService) addInboundTraffic(tx *gorm.DB, traffics []*xray.Traffic

func (s *InboundService) addClientTraffic(tx *gorm.DB, traffics []*xray.ClientTraffic) (err error) {
if len(traffics) == 0 {
// Empty onlineUsers
if p != nil {
p.SetOnlineClients(nil)
}
return nil
}

var onlineClients []string

emails := make([]string, 0, len(traffics))
for _, traffic := range traffics {
emails = append(emails, traffic.Email)
Expand All @@ -716,11 +722,16 @@ func (s *InboundService) addClientTraffic(tx *gorm.DB, traffics []*xray.ClientTr
if dbClientTraffics[dbTraffic_index].Email == traffics[traffic_index].Email {
dbClientTraffics[dbTraffic_index].Up += traffics[traffic_index].Up
dbClientTraffics[dbTraffic_index].Down += traffics[traffic_index].Down
// Add user in onlineUsers array on download
onlineClients = append(onlineClients, traffics[traffic_index].Email)
break
}
}
}

// Set onlineUsers
p.SetOnlineClients(onlineClients)

err = tx.Save(dbClientTraffics).Error
if err != nil {
logger.Warning("AddClientTraffic update data ", err)
Expand Down Expand Up @@ -1248,3 +1259,7 @@ func (s *InboundService) MigrateDB() {
s.MigrationRequirements()
s.MigrationRemoveOrphanedTraffics()
}

func (s *InboundService) GetOnlineClinets() []string {
return p.GetOnlineClients()
}
10 changes: 10 additions & 0 deletions xray/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ type process struct {
version string
apiPort int

onlineClients []string

config *Config
lines *queue.Queue
exitErr error
Expand Down Expand Up @@ -114,6 +116,14 @@ func (p *Process) GetConfig() *Config {
return p.config
}

func (p *Process) GetOnlineClients() []string {
return p.onlineClients
}

func (p *Process) SetOnlineClients(users []string) {
p.onlineClients = users
}

func (p *Process) GetUptime() uint64 {
return uint64(time.Since(p.startTime).Seconds())
}
Expand Down

0 comments on commit bf892e9

Please sign in to comment.