Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlireza Ahmadi <alireza7@gmail.com>2023-12-04 21:13:21 +0300
committerAlireza Ahmadi <alireza7@gmail.com>2023-12-04 21:13:21 +0300
commitf734c821d6e62eca5a206b6048f3cd7d65f3e665 (patch)
treed1904c2b8566f9b9e33889ff9af8da5c53564859 /web/service
parent8dc23f97b647b182df3faecff975498fee345e2c (diff)
online users backend #1286
Diffstat (limited to 'web/service')
-rw-r--r--web/service/inbound.go18
-rw-r--r--web/service/server.go2
2 files changed, 19 insertions, 1 deletions
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 1646b5ed..5972d9a5 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -716,9 +716,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)
@@ -744,11 +750,19 @@ 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 traffic
+ if traffics[traffic_index].Up+traffics[traffic_index].Down > 0 {
+ 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)
@@ -1675,3 +1689,7 @@ func (s *InboundService) MigrateDB() {
s.MigrationRequirements()
s.MigrationRemoveOrphanedTraffics()
}
+
+func (s *InboundService) GetOnlineClinets() []string {
+ return p.GetOnlineClients()
+}
diff --git a/web/service/server.go b/web/service/server.go
index d88fa098..629d9253 100644
--- a/web/service/server.go
+++ b/web/service/server.go
@@ -230,7 +230,7 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status {
status.AppStats.Mem = rtm.Sys
status.AppStats.Threads = uint32(runtime.NumGoroutine())
- if p.IsRunning() {
+ if p != nil && p.IsRunning() {
status.AppStats.Uptime = p.GetUptime()
} else {
status.AppStats.Uptime = 0