Skip to content

Commit df15003

Browse files
Merge pull request #64 from matrix-org/neilalexander/gmsl
Update gomatrixserverlib
2 parents 9ed6e09 + 9ac4366 commit df15003

8 files changed

+26
-49
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/docker/go-connections v0.4.0
1010
github.com/docker/go-units v0.4.0 // indirect
1111
github.com/gorilla/mux v1.7.3
12-
github.com/matrix-org/gomatrixserverlib v0.0.0-20200626111150-364501214328
12+
github.com/matrix-org/gomatrixserverlib v0.0.0-20210122154608-a38974bd8a37
1313
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7
1414
github.com/opencontainers/go-digest v1.0.0 // indirect
1515
github.com/pkg/errors v0.9.1 // indirect

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
3232
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
3333
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 h1:Hr3zjRsq2bhrnp3Ky1qgx/fzCtCALOoGYylh2tpS9K4=
3434
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0=
35-
github.com/matrix-org/gomatrixserverlib v0.0.0-20200626111150-364501214328 h1:rz6aiTpUyNPRcWZBWUGDkQjI7lfeLdhzy+x/Pw2jha8=
36-
github.com/matrix-org/gomatrixserverlib v0.0.0-20200626111150-364501214328/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
35+
github.com/matrix-org/gomatrixserverlib v0.0.0-20210122154608-a38974bd8a37 h1:si2CZZpwOLWZfDXfgHPkaTlaAkdJvpJzr1zVqyKXd0I=
36+
github.com/matrix-org/gomatrixserverlib v0.0.0-20210122154608-a38974bd8a37/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
3737
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 h1:ntrLa/8xVzeSs8vHFHK25k0C+NV74sYMJnNSg5NoSRo=
3838
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7/go.mod h1:vVQlW/emklohkZnOPwD3LrZUBqdfsbiyO3p1lNV8F6U=
3939
github.com/miekg/dns v1.1.12 h1:WMhc1ik4LNkTg8U9l3hI1LvxKmIL+f1+WV/SZtCbDDA=

internal/federation/handle.go

+4-12
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"crypto/ed25519"
55
"encoding/json"
66
"fmt"
7-
"io/ioutil"
87
"log"
98
"net/http"
109
"time"
@@ -98,7 +97,7 @@ func SendJoinRequestsHandler(s *Server, w http.ResponseWriter, req *http.Request
9897
w.Write([]byte("complement: HandleMakeSendJoinRequests send_join cannot parse event JSON: " + err.Error()))
9998
}
10099
// insert the join event into the room state
101-
room.AddEvent(&event)
100+
room.AddEvent(event)
102101

103102
// return current state and auth chain
104103
b, err := json.Marshal(gomatrixserverlib.RespSendJoin{
@@ -204,12 +203,6 @@ func HandleEventRequests() func(*Server) {
204203
func HandleKeyRequests() func(*Server) {
205204
return func(srv *Server) {
206205
keymux := srv.mux.PathPrefix("/_matrix/key/v2").Subrouter()
207-
208-
certData, err := ioutil.ReadFile(srv.certPath)
209-
if err != nil {
210-
panic("failed to read cert file: " + err.Error())
211-
}
212-
213206
keyFn := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
214207
k := gomatrixserverlib.ServerKeys{}
215208
k.ServerName = gomatrixserverlib.ServerName(srv.ServerName)
@@ -220,7 +213,6 @@ func HandleKeyRequests() func(*Server) {
220213
},
221214
}
222215
k.OldVerifyKeys = map[gomatrixserverlib.KeyID]gomatrixserverlib.OldVerifyKey{}
223-
k.TLSFingerprints = fingerprintPEM(certData)
224216
k.ValidUntilTS = gomatrixserverlib.AsTimestamp(time.Now().Add(24 * time.Hour))
225217
toSign, err := json.Marshal(k.ServerKeyFields)
226218
if err != nil {
@@ -282,7 +274,7 @@ func HandleMediaRequests(mediaIds map[string]func(w http.ResponseWriter)) func(*
282274

283275
// HandleTransactionRequests is an option which will process GET /_matrix/federation/v1/send/{transactionID} requests universally when requested.
284276
// pduCallback and eduCallback are functions that if non-nil will be called and passed each PDU or EDU event received in the transaction
285-
func HandleTransactionRequests(pduCallback func(gomatrixserverlib.Event), eduCallback func(gomatrixserverlib.EDU)) func(*Server) {
277+
func HandleTransactionRequests(pduCallback func(*gomatrixserverlib.Event), eduCallback func(gomatrixserverlib.EDU)) func(*Server) {
286278
return func(srv *Server) {
287279
srv.mux.Handle("/_matrix/federation/v1/send/{transactionID}", http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
288280
// Extract the transaction ID from the request vars
@@ -361,7 +353,7 @@ func HandleTransactionRequests(pduCallback func(gomatrixserverlib.Event), eduCal
361353
}
362354
roomVersion := gomatrixserverlib.RoomVersion(room.Version)
363355

364-
var event gomatrixserverlib.Event
356+
var event *gomatrixserverlib.Event
365357
event, err = gomatrixserverlib.NewEventFromUntrustedJSON(pdu, roomVersion)
366358
if err != nil {
367359
// We were unable to verify or process this event.
@@ -375,7 +367,7 @@ func HandleTransactionRequests(pduCallback func(gomatrixserverlib.Event), eduCal
375367
}
376368

377369
// Store this PDU in the room's timeline
378-
room.AddEvent(&event)
370+
room.AddEvent(event)
379371

380372
// Add this PDU as a success to the response
381373
response.PDUs[event.EventID()] = gomatrixserverlib.PDUResult{}

internal/federation/server.go

+8-23
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"crypto/ed25519"
66
"crypto/rand"
77
"crypto/rsa"
8-
"crypto/sha256"
98
"crypto/x509"
109
"encoding/json"
1110
"encoding/pem"
@@ -69,9 +68,9 @@ func NewServer(t *testing.T, deployment *docker.Deployment, opts ...func(*Server
6968
}
7069
fetcher := &basicKeyFetcher{
7170
KeyFetcher: &gomatrixserverlib.DirectKeyFetcher{
72-
Client: *gomatrixserverlib.NewClientWithTransport(&docker.RoundTripper{
73-
Deployment: deployment,
74-
}),
71+
Client: gomatrixserverlib.NewClient(
72+
gomatrixserverlib.WithTransport(&docker.RoundTripper{Deployment: deployment}),
73+
),
7574
},
7675
srv: srv,
7776
}
@@ -149,8 +148,10 @@ func (s *Server) MustMakeRoom(t *testing.T, roomVer gomatrixserverlib.RoomVersio
149148

150149
// FederationClient returns a client which will sign requests using this server and accept certs from hsName.
151150
func (s *Server) FederationClient(deployment *docker.Deployment, hsName string) *gomatrixserverlib.FederationClient {
152-
f := gomatrixserverlib.NewFederationClient(gomatrixserverlib.ServerName(s.ServerName), s.KeyID, s.Priv)
153-
f.Client = *gomatrixserverlib.NewClientWithTransport(&docker.RoundTripper{Deployment: deployment})
151+
f := gomatrixserverlib.NewFederationClient(
152+
gomatrixserverlib.ServerName(s.ServerName), s.KeyID, s.Priv,
153+
gomatrixserverlib.WithTransport(&docker.RoundTripper{Deployment: deployment}),
154+
)
154155
return f
155156
}
156157

@@ -188,7 +189,7 @@ func (s *Server) MustCreateEvent(t *testing.T, room *ServerRoom, ev b.Event) *go
188189
if err != nil {
189190
t.Fatalf("MustCreateEvent: failed to sign event: %s", err)
190191
}
191-
return &signedEvent
192+
return signedEvent
192193
}
193194

194195
// Mux returns this server's router so you can attach additional paths
@@ -403,22 +404,6 @@ func federationServer(name string, h http.Handler) (*http.Server, string, string
403404
return srv, tlsCertPath, tlsKeyPath, nil
404405
}
405406

406-
func fingerprintPEM(data []byte) []gomatrixserverlib.TLSFingerprint {
407-
for {
408-
var certDERBlock *pem.Block
409-
certDERBlock, data = pem.Decode(data)
410-
if data == nil {
411-
return nil
412-
}
413-
if certDERBlock.Type == "CERTIFICATE" {
414-
digest := sha256.Sum256(certDERBlock.Bytes)
415-
return []gomatrixserverlib.TLSFingerprint{
416-
{SHA256: digest[:]},
417-
}
418-
}
419-
}
420-
}
421-
422407
type nopKeyDatabase struct {
423408
gomatrixserverlib.KeyFetcher
424409
}

internal/federation/server_room.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ func (r *ServerRoom) CurrentState(evType, stateKey string) *gomatrixserverlib.Ev
7474
}
7575

7676
// AllCurrentState returns all the current state events
77-
func (r *ServerRoom) AllCurrentState() (events []gomatrixserverlib.Event) {
77+
func (r *ServerRoom) AllCurrentState() (events []*gomatrixserverlib.Event) {
7878
for _, ev := range r.State {
79-
events = append(events, *ev)
79+
events = append(events, ev)
8080
}
8181
return
8282
}
8383

8484
// AuthChain returns all auth events for all events in the current state TODO: recursively
85-
func (r *ServerRoom) AuthChain() (chain []gomatrixserverlib.Event) {
85+
func (r *ServerRoom) AuthChain() (chain []*gomatrixserverlib.Event) {
8686
chainMap := make(map[string]bool)
8787
// get all the auth event IDs
8888
for _, ev := range r.AllCurrentState() {
@@ -96,7 +96,7 @@ func (r *ServerRoom) AuthChain() (chain []gomatrixserverlib.Event) {
9696
// find them in the timeline
9797
for _, tev := range r.Timeline {
9898
if chainMap[tev.EventID()] {
99-
chain = append(chain, *tev)
99+
chain = append(chain, tev)
100100
}
101101
}
102102
return

tests/federation_room_get_missing_events_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func TestOutboundFederationIgnoresMissingEventWithBadJSONForRoomVersion6(t *test
8383
if err != nil {
8484
t.Fatalf("failed to sign event: %s", err)
8585
}
86-
room.AddEvent(&signedBadEvent)
86+
room.AddEvent(signedBadEvent)
8787

8888
sentEvent := srv.MustCreateEvent(t, room, b.Event{
8989
Type: "m.room.message",
@@ -106,9 +106,9 @@ func TestOutboundFederationIgnoresMissingEventWithBadJSONForRoomVersion6(t *test
106106
// return the bad event, which should result in the transaction failing.
107107
w.WriteHeader(200)
108108
res := struct {
109-
Events []gomatrixserverlib.Event `json:"events"`
109+
Events []*gomatrixserverlib.Event `json:"events"`
110110
}{
111-
Events: []gomatrixserverlib.Event{signedBadEvent},
111+
Events: []*gomatrixserverlib.Event{signedBadEvent},
112112
}
113113
var responseBytes []byte
114114
responseBytes, err = json.Marshal(&res)

tests/federation_room_join_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func TestJoinFederatedRoomWithUnverifiableEvents(t *testing.T) {
128128
must.NotError(t, "failed to strip signatures key from event", err)
129129
unsignedEvent, err := gomatrixserverlib.NewEventFromTrustedJSON(raw, false, ver)
130130
must.NotError(t, "failed to make Event from unsigned event JSON", err)
131-
room.AddEvent(&unsignedEvent)
131+
room.AddEvent(unsignedEvent)
132132
alice := deployment.Client(t, "hs1", "@alice:hs1")
133133
alice.JoinRoom(t, roomAlias, nil)
134134
})
@@ -157,7 +157,7 @@ func TestJoinFederatedRoomWithUnverifiableEvents(t *testing.T) {
157157
must.NotError(t, "failed to modify signatures key from event", err)
158158
unsignedEvent, err := gomatrixserverlib.NewEventFromTrustedJSON(raw, false, ver)
159159
must.NotError(t, "failed to make Event from unsigned event JSON", err)
160-
room.AddEvent(&unsignedEvent)
160+
room.AddEvent(unsignedEvent)
161161
alice := deployment.Client(t, "hs1", "@alice:hs1")
162162
alice.JoinRoom(t, roomAlias, nil)
163163
})
@@ -187,7 +187,7 @@ func TestJoinFederatedRoomWithUnverifiableEvents(t *testing.T) {
187187
must.NotError(t, "failed to modify signatures key from event", err)
188188
unsignedEvent, err := gomatrixserverlib.NewEventFromTrustedJSON(raw, false, ver)
189189
must.NotError(t, "failed to make Event from unsigned event JSON", err)
190-
room.AddEvent(&unsignedEvent)
190+
room.AddEvent(unsignedEvent)
191191
alice := deployment.Client(t, "hs1", "@alice:hs1")
192192
alice.JoinRoom(t, roomAlias, nil)
193193
})

tests/federation_room_send_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestOutboundFederationSend(t *testing.T) {
3131
federation.HandleMakeSendJoinRequests(),
3232
federation.HandleTransactionRequests(
3333
// listen for PDU events in transactions
34-
func(ev gomatrixserverlib.Event) {
34+
func(ev *gomatrixserverlib.Event) {
3535
defer waiter.Finish()
3636

3737
if ev.Type() != wantEventType {

0 commit comments

Comments
 (0)