mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-10 12:05:39 -04:00
Recording proxy usage is business logic, and it had ended up in the RPC handler: the throttle interval, the service-user skip, the exclusion rule for embedded and browser peers, and a store handle to write through. It moves to a reverseproxy module manager, matching how accesslogs, domain, service and proxy are already structured, and the RPC keeps only what is its own: calling the manager and deciding the request must not fail when the write does. The proxy service goes back to holding ProxyTokenChecker rather than a widened store interface. The policy tests move with the policy. The handler tests now assert only that a granted request reaches the manager, which is all the transport decides.
26 lines
1.1 KiB
Go
26 lines
1.1 KiB
Go
// Package activity records that a principal used a reverse proxy service, so
|
|
// that activity accounting counts people and devices which reach services
|
|
// through the proxy but never touch the dashboard or the management API.
|
|
package activity
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/netbirdio/netbird/management/server/peer"
|
|
"github.com/netbirdio/netbird/management/server/types"
|
|
)
|
|
|
|
// Manager records reverse proxy usage against the timestamps activity
|
|
// accounting reads. Both methods are best effort from the caller's point of
|
|
// view: a lost record is corrected by the next request, and no authorization
|
|
// decision reads them back.
|
|
type Manager interface {
|
|
// RecordUserLogin records a completed SSO sign-in to a proxied service.
|
|
// Service users have no interactive login and are ignored.
|
|
RecordUserLogin(ctx context.Context, accountID string, user *types.User) error
|
|
// RecordPeerSeen records that a peer reached a private service over the
|
|
// mesh, which is what lets its owner count as active. Peers activity
|
|
// accounting excludes, and peers already seen recently, are ignored.
|
|
RecordPeerSeen(ctx context.Context, accountID string, peer *peer.Peer) error
|
|
}
|