mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-22 05:23:09 -06:00
Add GetRelayServers api to pinecone monolith
This commit is contained in:
parent
f7fb7b0cba
commit
e0e4225a46
|
|
@ -176,8 +176,18 @@ func (m *DendriteMonolith) SetRelayServer(nodeKey string, uri string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if userID, err := gomatrixserverlib.NewUserID(uri, false); err == nil {
|
if userID, err := gomatrixserverlib.NewUserID(uri, false); err == nil {
|
||||||
|
hexKey, decodeErr := hex.DecodeString(string(userID.Domain()))
|
||||||
|
if decodeErr != nil || len(hexKey) != ed25519.PublicKeySize {
|
||||||
|
logrus.Warnf("UserID domain is not a valid ed25519 public key: %v", userID.Domain())
|
||||||
|
continue
|
||||||
|
}
|
||||||
relays = append(relays, userID.Domain())
|
relays = append(relays, userID.Domain())
|
||||||
} else {
|
} else {
|
||||||
|
hexKey, decodeErr := hex.DecodeString(uri)
|
||||||
|
if decodeErr != nil || len(hexKey) != ed25519.PublicKeySize {
|
||||||
|
logrus.Warnf("Relay server uri is not a valid ed25519 public key: %v", uri)
|
||||||
|
continue
|
||||||
|
}
|
||||||
relays = append(relays, gomatrixserverlib.ServerName(uri))
|
relays = append(relays, gomatrixserverlib.ServerName(uri))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -186,10 +196,31 @@ func (m *DendriteMonolith) SetRelayServer(nodeKey string, uri string) {
|
||||||
logrus.Infof("Setting relay servers to: %v", relays)
|
logrus.Infof("Setting relay servers to: %v", relays)
|
||||||
m.relayRetriever.SetRelayServers(relays)
|
m.relayRetriever.SetRelayServers(relays)
|
||||||
} else {
|
} else {
|
||||||
// TODO: add relay/s for other node
|
// TODO: add relay/s for other nodes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *DendriteMonolith) GetRelayServers(nodeKey string) string {
|
||||||
|
if nodeKey == m.PublicKey() {
|
||||||
|
relays := m.relayRetriever.GetRelayServers()
|
||||||
|
relaysString := ""
|
||||||
|
|
||||||
|
for i, relay := range relays {
|
||||||
|
if i != 0 {
|
||||||
|
// Append a comma to the previous entry if there is one.
|
||||||
|
relaysString += ","
|
||||||
|
}
|
||||||
|
relaysString += string(relay)
|
||||||
|
}
|
||||||
|
|
||||||
|
return relaysString
|
||||||
|
} else {
|
||||||
|
// TODO: return relays for other nodes
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (m *DendriteMonolith) DisconnectType(peertype int) {
|
func (m *DendriteMonolith) DisconnectType(peertype int) {
|
||||||
for _, p := range m.PineconeRouter.Peers() {
|
for _, p := range m.PineconeRouter.Peers() {
|
||||||
if int(peertype) == p.PeerType {
|
if int(peertype) == p.PeerType {
|
||||||
|
|
@ -565,6 +596,17 @@ func (r *RelayServerRetriever) SetRelayServers(servers []gomatrixserverlib.Serve
|
||||||
r.StartSync()
|
r.StartSync()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *RelayServerRetriever) GetRelayServers() []gomatrixserverlib.ServerName {
|
||||||
|
r.queriedServersMutex.Lock()
|
||||||
|
defer r.queriedServersMutex.Unlock()
|
||||||
|
relayServers := []gomatrixserverlib.ServerName{}
|
||||||
|
for server := range r.relayServersQueried {
|
||||||
|
relayServers = append(relayServers, server)
|
||||||
|
}
|
||||||
|
|
||||||
|
return relayServers
|
||||||
|
}
|
||||||
|
|
||||||
func (r *RelayServerRetriever) StartSync() {
|
func (r *RelayServerRetriever) StartSync() {
|
||||||
if !r.running.Load() {
|
if !r.running.Load() {
|
||||||
logrus.Info("Starting relay server sync")
|
logrus.Info("Starting relay server sync")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue