mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 08:13:09 -06:00
Configurability updates
This commit is contained in:
parent
73c0ea9ff1
commit
8d195e12be
|
|
@ -46,6 +46,12 @@ import (
|
|||
yggdrasilConfig "github.com/yggdrasil-network/yggdrasil-go/src/config"
|
||||
)
|
||||
|
||||
const (
|
||||
PeerTypeRemote = pineconeRouter.PeerTypeRemote
|
||||
PeerTypeMulticast = pineconeRouter.PeerTypeMulticast
|
||||
PeerTypeBluetooth = pineconeRouter.PeerTypeBluetooth
|
||||
)
|
||||
|
||||
type DendriteMonolith struct {
|
||||
logger logrus.Logger
|
||||
config *yggdrasilConfig.NodeConfig
|
||||
|
|
@ -72,25 +78,32 @@ func (m *DendriteMonolith) SessionCount() int {
|
|||
}
|
||||
|
||||
func (m *DendriteMonolith) SetMulticastEnabled(enabled bool) {
|
||||
// TODO
|
||||
if enabled {
|
||||
m.PineconeMulticast.Start()
|
||||
} else {
|
||||
m.PineconeMulticast.Stop()
|
||||
m.DisconnectType(pineconeRouter.PeerTypeMulticast)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *DendriteMonolith) SetStaticPeer(uri string) error {
|
||||
func (m *DendriteMonolith) SetStaticPeer(uri string) {
|
||||
m.DisconnectType(pineconeRouter.PeerTypeRemote)
|
||||
if uri != "" {
|
||||
go conn.ConnectToPeer(m.PineconeRouter, uri)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (m *DendriteMonolith) DisconnectNonMulticastPeers() {
|
||||
func (m *DendriteMonolith) DisconnectType(peertype int) {
|
||||
for _, p := range m.PineconeRouter.Peers() {
|
||||
if p.Zone == "static" {
|
||||
if peertype == p.PeerType {
|
||||
_ = m.PineconeRouter.Disconnect(types.SwitchPortID(p.Port))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *DendriteMonolith) DisconnectMulticastPeers() {
|
||||
func (m *DendriteMonolith) DisconnectZone(zone string) {
|
||||
for _, p := range m.PineconeRouter.Peers() {
|
||||
if p.Zone != "static" {
|
||||
if zone == p.Zone {
|
||||
_ = m.PineconeRouter.Disconnect(types.SwitchPortID(p.Port))
|
||||
}
|
||||
}
|
||||
|
|
@ -100,7 +113,7 @@ func (m *DendriteMonolith) DisconnectPort(port int) error {
|
|||
return m.PineconeRouter.Disconnect(types.SwitchPortID(port))
|
||||
}
|
||||
|
||||
func (m *DendriteMonolith) Conduit(zone string) (*Conduit, error) {
|
||||
func (m *DendriteMonolith) Conduit(zone string, peertype int) (*Conduit, error) {
|
||||
l, r := net.Pipe()
|
||||
conduit := &Conduit{conn: r, port: 0}
|
||||
go func() {
|
||||
|
|
@ -110,7 +123,7 @@ func (m *DendriteMonolith) Conduit(zone string) (*Conduit, error) {
|
|||
for i := 1; i <= 10; i++ {
|
||||
logrus.Errorf("Attempting authenticated connect (attempt %d)", i)
|
||||
var err error
|
||||
conduit.port, err = m.PineconeRouter.AuthenticatedConnect(l, zone)
|
||||
conduit.port, err = m.PineconeRouter.AuthenticatedConnect(l, zone, peertype)
|
||||
switch err {
|
||||
case io.ErrClosedPipe:
|
||||
logrus.Errorf("Authenticated connect failed due to closed pipe (attempt %d)", i)
|
||||
|
|
@ -360,13 +373,6 @@ func (m *DendriteMonolith) Stop() {
|
|||
_ = m.PineconeRouter.Close()
|
||||
}
|
||||
|
||||
func (m *DendriteMonolith) Suspend() {
|
||||
m.logger.Info("Suspending monolith")
|
||||
if err := m.httpServer.Close(); err != nil {
|
||||
m.logger.Warn("Error stopping HTTP server:", err)
|
||||
}
|
||||
}
|
||||
|
||||
type Conduit struct {
|
||||
conn net.Conn
|
||||
port types.SwitchPortID
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ func ConnectToPeer(pRouter *pineconeRouter.Router, peer string) {
|
|||
if parent == nil {
|
||||
return
|
||||
}
|
||||
if _, err := pRouter.AuthenticatedConnect(parent, "static"); err != nil {
|
||||
if _, err := pRouter.AuthenticatedConnect(parent, "static", pineconeRouter.PeerTypeRemote); err != nil {
|
||||
logrus.WithError(err).Errorf("Failed to connect Pinecone static peer to switch")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/userapi"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
|
||||
pineconeMulticast "github.com/matrix-org/pinecone/multicast"
|
||||
pineconeRouter "github.com/matrix-org/pinecone/router"
|
||||
pineconeSessions "github.com/matrix-org/pinecone/sessions"
|
||||
|
||||
|
|
@ -109,7 +110,7 @@ func main() {
|
|||
continue
|
||||
}
|
||||
|
||||
port, err := pRouter.AuthenticatedConnect(conn, "")
|
||||
port, err := pRouter.AuthenticatedConnect(conn, "", pineconeRouter.PeerTypeRemote)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Error("pSwitch.AuthenticatedConnect failed")
|
||||
continue
|
||||
|
|
@ -120,7 +121,8 @@ func main() {
|
|||
}()
|
||||
|
||||
pQUIC := pineconeSessions.NewQUIC(logger, pRouter)
|
||||
//_ = pineconeMulticast.NewMulticast(logger, pRouter)
|
||||
pMulticast := pineconeMulticast.NewMulticast(logger, pRouter)
|
||||
pMulticast.Start()
|
||||
|
||||
cfg := &config.Dendrite{}
|
||||
cfg.Defaults()
|
||||
|
|
@ -206,7 +208,7 @@ func main() {
|
|||
return
|
||||
}
|
||||
conn := conn.WrapWebSocketConn(c)
|
||||
if _, err = pRouter.AuthenticatedConnect(conn, "websocket"); err != nil {
|
||||
if _, err = pRouter.AuthenticatedConnect(conn, "websocket", pineconeRouter.PeerTypeRemote); err != nil {
|
||||
logrus.WithError(err).Error("Failed to connect WebSocket peer to Pinecone switch")
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue