diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-05 22:35:34 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-05 22:35:34 +0300 |
| commit | 5f8ab176b62efee8139626a353b7e00f7fa754c3 (patch) | |
| tree | 1f3e5b71344c5d5fe3d2eb33daad4f499a20ab74 /internal/server | |
| parent | 9199959cf46f3f300f08604d0018f47a79c7f02f (diff) | |
Added new packet types to facilitate TOS acceptance, Authentication and
re-authentication for sensitive information updates
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api/api.go | 20 | ||||
| -rw-r--r-- | internal/server/ctxkeys/ctxkeys.go | 5 | ||||
| -rw-r--r-- | internal/server/server.go | 4 |
3 files changed, 17 insertions, 12 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index dddd047..068e074 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "log" + "log/slog" "strconv" "strings" @@ -1343,7 +1344,7 @@ func SetLastReadMessages(ctx context.Context, sess *session.Session, request *pa tx, err := db.BeginTx(ctx, nil) if err != nil { - log.Println("database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } defer func() { _ = tx.Rollback() }() @@ -1351,25 +1352,28 @@ func SetLastReadMessages(ctx context.Context, sess *session.Session, request *pa queries := data.New(db) qtx := queries.WithTx(tx) + // OPTIMIZE: Convert this loop into a SQL query for i := 0; i < len(request.Source); i++ { _, err := qtx.GetUserById(ctx, request.Source[i]) if err == nil { + // ID is signal err = qtx.SetLastReadMessage(ctx, data.SetLastReadMessageParams{ UserID: sess.ID(), SourceID: request.Source[i], LastRead: request.LastRead[i], }) if err != nil { - log.Println("api.go:1362 database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } continue } - if err != nil && err != sql.ErrNoRows { - log.Println("api.go:1368 database error:", err) + if err != sql.ErrNoRows { + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } + // ID is frequency frequency, err := qtx.GetFrequencyById(ctx, request.Source[i]) if err == sql.ErrNoRows { return &packet.Error{Error: fmt.Sprintf( @@ -1377,13 +1381,13 @@ func SetLastReadMessages(ctx context.Context, sess *session.Session, request *pa )} } if err != nil { - log.Println("api.go:1379 database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } if frequency.Perms == packet.PermNoAccess { isAdmin, err := IsNetworkAdmin(ctx, qtx, sess.ID(), frequency.NetworkID) if err != nil { - log.Println("api.go:1385 database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } if !isAdmin { @@ -1397,7 +1401,7 @@ func SetLastReadMessages(ctx context.Context, sess *session.Session, request *pa LastRead: request.LastRead[i], }) if err != nil { - log.Println("api.go:1399 database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } continue @@ -1405,7 +1409,7 @@ func SetLastReadMessages(ctx context.Context, sess *session.Session, request *pa err = tx.Commit() if err != nil { - log.Println("api.go:1407 database error:", err) + slog.ErrorContext(ctx, "database error", "error", err) return &ErrInternalError } diff --git a/internal/server/ctxkeys/ctxkeys.go b/internal/server/ctxkeys/ctxkeys.go index 3677a07..1fb0fa6 100644 --- a/internal/server/ctxkeys/ctxkeys.go +++ b/internal/server/ctxkeys/ctxkeys.go @@ -12,9 +12,10 @@ type key int const ( UserID key = iota IpAddr - KeyMax Evicted EvictedBy + + KeyMax ) var keyNames = map[key]string{ @@ -24,7 +25,7 @@ var keyNames = map[key]string{ EvictedBy: "evicted_by", } -func Init() { +func init() { assert.Assert(len(keyNames) == int(KeyMax), "Keys in keyNames mismatch amount of keys", "len(keyNames)", len(keyNames), "KeyMax", int(KeyMax)) } diff --git a/internal/server/server.go b/internal/server/server.go index 5791f8e..1727961 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -186,11 +186,11 @@ func (server *server) handleConnection(conn net.Conn) { defer slog.InfoContext(ctx, "connection closed") defer conn.Close() - var writerWg *sync.WaitGroup + var writerWg sync.WaitGroup done := make(chan struct{}) framer := packet.NewFramer() - sess := session.NewSession(server, addr, cancel, writerWg) + sess := session.NewSession(server, addr, cancel, &writerWg) go func() { <-ctx.Done() // Remove session after cancellation |
