mirror of
https://github.com/h44z/wg-portal
synced 2025-02-26 05:49:14 +00:00
88 lines
3.6 KiB
Go
88 lines
3.6 KiB
Go
package wireguard
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/h44z/wg-portal/internal/domain"
|
|
)
|
|
|
|
type InterfaceAndPeerDatabaseRepo interface {
|
|
GetInterface(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Interface, error)
|
|
GetInterfaceAndPeers(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Interface, []domain.Peer, error)
|
|
GetPeersStats(ctx context.Context, ids ...domain.PeerIdentifier) ([]domain.PeerStatus, error)
|
|
GetAllInterfaces(ctx context.Context) ([]domain.Interface, error)
|
|
FindInterfaces(ctx context.Context, search string) ([]domain.Interface, error)
|
|
GetInterfaceIps(ctx context.Context) (map[domain.InterfaceIdentifier][]domain.Cidr, error)
|
|
SaveInterface(
|
|
ctx context.Context,
|
|
id domain.InterfaceIdentifier,
|
|
updateFunc func(in *domain.Interface) (*domain.Interface, error),
|
|
) error
|
|
DeleteInterface(ctx context.Context, id domain.InterfaceIdentifier) error
|
|
GetInterfacePeers(ctx context.Context, id domain.InterfaceIdentifier) ([]domain.Peer, error)
|
|
FindInterfacePeers(ctx context.Context, id domain.InterfaceIdentifier, search string) ([]domain.Peer, error)
|
|
GetUserPeers(ctx context.Context, id domain.UserIdentifier) ([]domain.Peer, error)
|
|
FindUserPeers(ctx context.Context, id domain.UserIdentifier, search string) ([]domain.Peer, error)
|
|
SavePeer(
|
|
ctx context.Context,
|
|
id domain.PeerIdentifier,
|
|
updateFunc func(in *domain.Peer) (*domain.Peer, error),
|
|
) error
|
|
DeletePeer(ctx context.Context, id domain.PeerIdentifier) error
|
|
GetPeer(ctx context.Context, id domain.PeerIdentifier) (*domain.Peer, error)
|
|
GetUsedIpsPerSubnet(ctx context.Context, subnets []domain.Cidr) (map[domain.Cidr][]domain.Cidr, error)
|
|
}
|
|
|
|
type StatisticsDatabaseRepo interface {
|
|
GetAllInterfaces(ctx context.Context) ([]domain.Interface, error)
|
|
GetInterfacePeers(ctx context.Context, id domain.InterfaceIdentifier) ([]domain.Peer, error)
|
|
GetPeer(ctx context.Context, id domain.PeerIdentifier) (*domain.Peer, error)
|
|
|
|
UpdatePeerStatus(
|
|
ctx context.Context,
|
|
id domain.PeerIdentifier,
|
|
updateFunc func(in *domain.PeerStatus) (*domain.PeerStatus, error),
|
|
) error
|
|
UpdateInterfaceStatus(
|
|
ctx context.Context,
|
|
id domain.InterfaceIdentifier,
|
|
updateFunc func(in *domain.InterfaceStatus) (*domain.InterfaceStatus, error),
|
|
) error
|
|
|
|
DeletePeerStatus(ctx context.Context, id domain.PeerIdentifier) error
|
|
}
|
|
|
|
type InterfaceController interface {
|
|
GetInterfaces(_ context.Context) ([]domain.PhysicalInterface, error)
|
|
GetInterface(_ context.Context, id domain.InterfaceIdentifier) (*domain.PhysicalInterface, error)
|
|
GetPeers(_ context.Context, deviceId domain.InterfaceIdentifier) ([]domain.PhysicalPeer, error)
|
|
GetPeer(_ context.Context, deviceId domain.InterfaceIdentifier, id domain.PeerIdentifier) (
|
|
*domain.PhysicalPeer,
|
|
error,
|
|
)
|
|
SaveInterface(
|
|
_ context.Context,
|
|
id domain.InterfaceIdentifier,
|
|
updateFunc func(pi *domain.PhysicalInterface) (*domain.PhysicalInterface, error),
|
|
) error
|
|
DeleteInterface(_ context.Context, id domain.InterfaceIdentifier) error
|
|
SavePeer(
|
|
_ context.Context,
|
|
deviceId domain.InterfaceIdentifier,
|
|
id domain.PeerIdentifier,
|
|
updateFunc func(pp *domain.PhysicalPeer) (*domain.PhysicalPeer, error),
|
|
) error
|
|
DeletePeer(_ context.Context, deviceId domain.InterfaceIdentifier, id domain.PeerIdentifier) error
|
|
}
|
|
|
|
type WgQuickController interface {
|
|
ExecuteInterfaceHook(id domain.InterfaceIdentifier, hookCmd string) error
|
|
SetDNS(id domain.InterfaceIdentifier, dnsStr, dnsSearchStr string) error
|
|
UnsetDNS(id domain.InterfaceIdentifier) error
|
|
}
|
|
|
|
type MetricsServer interface {
|
|
UpdateInterfaceMetrics(status domain.InterfaceStatus)
|
|
UpdatePeerMetrics(peer *domain.Peer, status domain.PeerStatus)
|
|
}
|