Add internal http fedapi for adding relay servers to a node

This commit is contained in:
Devon Hudson 2023-01-24 16:22:29 -07:00
parent e0e4225a46
commit 012bdf735e
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628
3 changed files with 43 additions and 1 deletions

View file

@ -72,12 +72,19 @@ type RoomserverFederationAPI interface {
} }
type P2PFederationAPI interface { type P2PFederationAPI interface {
// Relay Server sync api used in the pinecone demos. // Get the relay servers associated for the given server.
P2PQueryRelayServers( P2PQueryRelayServers(
ctx context.Context, ctx context.Context,
request *P2PQueryRelayServersRequest, request *P2PQueryRelayServersRequest,
response *P2PQueryRelayServersResponse, response *P2PQueryRelayServersResponse,
) error ) error
// Add relay server associations to the given server.
P2PAddRelayServers(
ctx context.Context,
request *P2PAddRelayServersRequest,
response *P2PAddRelayServersResponse,
) error
} }
// KeyserverFederationAPI is a subset of gomatrixserverlib.FederationClient functions which the keyserver // KeyserverFederationAPI is a subset of gomatrixserverlib.FederationClient functions which the keyserver
@ -256,3 +263,11 @@ type P2PQueryRelayServersRequest struct {
type P2PQueryRelayServersResponse struct { type P2PQueryRelayServersResponse struct {
RelayServers []gomatrixserverlib.ServerName RelayServers []gomatrixserverlib.ServerName
} }
type P2PAddRelayServersRequest struct {
Server gomatrixserverlib.ServerName
RelayServers []gomatrixserverlib.ServerName
}
type P2PAddRelayServersResponse struct {
}

View file

@ -840,6 +840,21 @@ func (r *FederationInternalAPI) P2PQueryRelayServers(
return nil return nil
} }
// P2PAddRelayServers implements api.FederationInternalAPI
func (r *FederationInternalAPI) P2PAddRelayServers(
ctx context.Context,
request *api.P2PAddRelayServersRequest,
response *api.P2PAddRelayServersResponse,
) error {
logrus.Infof("Adding relay servers for: %s", request.Server)
err := r.db.P2PAddRelayServersForServer(ctx, request.Server, request.RelayServers)
if err != nil {
return err
}
return nil
}
func (r *FederationInternalAPI) shouldAttemptDirectFederation( func (r *FederationInternalAPI) shouldAttemptDirectFederation(
destination gomatrixserverlib.ServerName, destination gomatrixserverlib.ServerName,
) bool { ) bool {

View file

@ -25,6 +25,7 @@ const (
FederationAPIPerformBroadcastEDUPath = "/federationapi/performBroadcastEDU" FederationAPIPerformBroadcastEDUPath = "/federationapi/performBroadcastEDU"
FederationAPIPerformWakeupServers = "/federationapi/performWakeupServers" FederationAPIPerformWakeupServers = "/federationapi/performWakeupServers"
FederationAPIQueryRelayServers = "/federationapi/queryRelayServers" FederationAPIQueryRelayServers = "/federationapi/queryRelayServers"
FederationAPIAddRelayServers = "/federationapi/addRelayServers"
FederationAPIGetUserDevicesPath = "/federationapi/client/getUserDevices" FederationAPIGetUserDevicesPath = "/federationapi/client/getUserDevices"
FederationAPIClaimKeysPath = "/federationapi/client/claimKeys" FederationAPIClaimKeysPath = "/federationapi/client/claimKeys"
@ -522,3 +523,14 @@ func (h *httpFederationInternalAPI) P2PQueryRelayServers(
h.httpClient, ctx, request, response, h.httpClient, ctx, request, response,
) )
} }
func (h *httpFederationInternalAPI) P2PAddRelayServers(
ctx context.Context,
request *api.P2PAddRelayServersRequest,
response *api.P2PAddRelayServersResponse,
) error {
return httputil.CallInternalRPCAPI(
"AddRelayServers", h.federationAPIURL+FederationAPIAddRelayServers,
h.httpClient, ctx, request, response,
)
}