dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit bc4e4723bdc92d3c3b9ec6e3fe208c10f1dd654f
parent 61d5aac9a0915c7a94739485d268dba11c92eb97
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 24 May 2023 18:47:22 -0700

debug view

Diffstat:
Mpkg/web/handlers/handlers.go | 22++++++++++++++++++++++
Mpkg/web/web.go | 1+
2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -4926,6 +4926,17 @@ func (m *UsersStreamsManager) Remove(userID database.UserID) { m.m[userID]-- } +func (m *UsersStreamsManager) GetUsers() (out []database.UserID) { + m.Lock() + defer m.Unlock() + for userID, count := range m.m { + if count > 0 { + out = append(out, userID) + } + } + return +} + var usersStreamsManager = NewUsersStreamsManager() func closeSignalChan(c echo.Context) <-chan struct{} { @@ -4944,6 +4955,17 @@ func closeSignalChan(c echo.Context) <-chan struct{} { return ctx.Done() } +func StreamUsersHandler(c echo.Context) error { + db := c.Get("database").(*database.DkfDB) + usersIDs := usersStreamsManager.GetUsers() + users, _ := db.GetUsersByID(usersIDs) + out := "" + for _, user := range users { + out += user.Username + ", " + } + return c.String(http.StatusOK, out) +} + func ChatStreamMessagesHandler(c echo.Context) error { db := c.Get("database").(*database.DkfDB) authUser := c.Get("authUser").(*database.User) diff --git a/pkg/web/web.go b/pkg/web/web.go @@ -266,6 +266,7 @@ func getMainServer(db *database.DkfDB, i18nBundle *i18n.Bundle, renderer *tmp.Te adminGroup.POST("/admin/gists/new", handlers.AdminNewGistHandler) adminGroup.GET("/admin/gists/:gistUUID/edit", handlers.AdminEditGistHandler, middlewares.AuthRateLimitMiddleware(1*time.Second, 2)) adminGroup.POST("/admin/gists/:gistUUID/edit", handlers.AdminEditGistHandler, middlewares.AuthRateLimitMiddleware(1*time.Second, 2)) + adminGroup.GET("/admin/stream-users", handlers.StreamUsersHandler) clubGroup := authGroup.Group("", middlewares.ClubMiddleware) clubGroup.GET("/club", handlers.ClubHandler) clubGroup.GET("/club/threads/:threadID", handlers.ClubThreadHandler)