forked from extern/smegmesh
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package ctrlserver
|
|
|
|
import (
|
|
"github.com/tim-beatham/wgmesh/pkg/conf"
|
|
"github.com/tim-beatham/wgmesh/pkg/conn"
|
|
"github.com/tim-beatham/wgmesh/pkg/mesh"
|
|
"github.com/tim-beatham/wgmesh/pkg/query"
|
|
"golang.zx2c4.com/wireguard/wgctrl"
|
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
)
|
|
|
|
// Represents a WireGuard MeshNode
|
|
type MeshNode struct {
|
|
HostEndpoint string
|
|
WgEndpoint string
|
|
PublicKey string
|
|
WgHost string
|
|
Timestamp int64
|
|
Routes []string
|
|
}
|
|
|
|
// Represents a WireGuard Mesh
|
|
type Mesh struct {
|
|
SharedKey *wgtypes.Key
|
|
Nodes map[string]MeshNode
|
|
}
|
|
|
|
type CtrlServer interface {
|
|
GetConfiguration() *conf.WgMeshConfiguration
|
|
GetClient() *wgctrl.Client
|
|
GetQuerier() query.Querier
|
|
GetMeshManager() mesh.MeshManager
|
|
Close() error
|
|
GetConnectionManager() conn.ConnectionManager
|
|
}
|
|
|
|
// Represents a ctrlserver to be used in WireGuard
|
|
type MeshCtrlServer struct {
|
|
Client *wgctrl.Client
|
|
MeshManager mesh.MeshManager
|
|
ConnectionManager conn.ConnectionManager
|
|
ConnectionServer *conn.ConnectionServer
|
|
Conf *conf.WgMeshConfiguration
|
|
Querier query.Querier
|
|
}
|