mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-30 21:12:45 +00:00
refactor: update GMSL (#3058)
Sister PR to https://github.com/matrix-org/gomatrixserverlib/pull/364 Read this commit by commit to avoid going insane.
This commit is contained in:
parent
9fa39263c0
commit
72285b2659
306 changed files with 2117 additions and 1934 deletions
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
)
|
||||
|
||||
// ServerKeyCache contains the subset of functions needed for
|
||||
|
@ -14,7 +15,7 @@ type ServerKeyCache interface {
|
|||
// The timestamp should be the timestamp of the event that is being
|
||||
// verified. We will not return keys from the cache that are not valid
|
||||
// at this timestamp.
|
||||
GetServerKey(request gomatrixserverlib.PublicKeyLookupRequest, timestamp gomatrixserverlib.Timestamp) (response gomatrixserverlib.PublicKeyLookupResult, ok bool)
|
||||
GetServerKey(request gomatrixserverlib.PublicKeyLookupRequest, timestamp spec.Timestamp) (response gomatrixserverlib.PublicKeyLookupResult, ok bool)
|
||||
|
||||
// request -> result is emulating gomatrixserverlib.StoreKeys:
|
||||
// https://github.com/matrix-org/gomatrixserverlib/blob/f69539c86ea55d1e2cc76fd8e944e2d82d30397c/keyring.go#L112
|
||||
|
@ -23,7 +24,7 @@ type ServerKeyCache interface {
|
|||
|
||||
func (c Caches) GetServerKey(
|
||||
request gomatrixserverlib.PublicKeyLookupRequest,
|
||||
timestamp gomatrixserverlib.Timestamp,
|
||||
timestamp spec.Timestamp,
|
||||
) (gomatrixserverlib.PublicKeyLookupResult, bool) {
|
||||
key := fmt.Sprintf("%s/%s", request.ServerName, request.KeyID)
|
||||
val, found := c.ServerKeys.Get(key)
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/dendrite/setup/config"
|
||||
"github.com/matrix-org/gomatrixserverlib/fclient"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
)
|
||||
|
@ -174,7 +175,7 @@ func truncateAuthAndPrevEvents(auth, prev []gomatrixserverlib.EventReference) (
|
|||
// downstream components to the roomserver when an OutputTypeRedactedEvent occurs.
|
||||
func RedactEvent(redactionEvent, redactedEvent *gomatrixserverlib.Event) error {
|
||||
// sanity check
|
||||
if redactionEvent.Type() != gomatrixserverlib.MRoomRedaction {
|
||||
if redactionEvent.Type() != spec.MRoomRedaction {
|
||||
return fmt.Errorf("RedactEvent: redactionEvent isn't a redaction event, is '%s'", redactionEvent.Type())
|
||||
}
|
||||
redactedEvent.Redact()
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
|
||||
"github.com/blevesearch/bleve/v2"
|
||||
"github.com/matrix-org/dendrite/setup/process"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
|
||||
// side effect imports to allow all possible languages
|
||||
_ "github.com/blevesearch/bleve/v2/analysis/lang/ar"
|
||||
|
@ -47,7 +48,6 @@ import (
|
|||
_ "github.com/blevesearch/bleve/v2/analysis/lang/sv"
|
||||
_ "github.com/blevesearch/bleve/v2/analysis/lang/tr"
|
||||
"github.com/blevesearch/bleve/v2/mapping"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
|
||||
"github.com/matrix-org/dendrite/setup/config"
|
||||
)
|
||||
|
@ -79,9 +79,9 @@ func (i *IndexElement) SetContentType(v string) {
|
|||
switch v {
|
||||
case "m.room.message":
|
||||
i.ContentType = "content.body"
|
||||
case gomatrixserverlib.MRoomName:
|
||||
case spec.MRoomName:
|
||||
i.ContentType = "content.name"
|
||||
case gomatrixserverlib.MRoomTopic:
|
||||
case spec.MRoomTopic:
|
||||
i.ContentType = "content.topic"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/matrix-org/dendrite/setup/process"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
|
||||
"github.com/matrix-org/dendrite/internal/fulltext"
|
||||
|
@ -77,7 +77,7 @@ func mustAddTestData(t *testing.T, fts *fulltext.Search, firstStreamPos int64) (
|
|||
Content: "Roomname testing",
|
||||
StreamPosition: streamPos,
|
||||
}
|
||||
e.SetContentType(gomatrixserverlib.MRoomName)
|
||||
e.SetContentType(spec.MRoomName)
|
||||
batchItems = append(batchItems, e)
|
||||
e = fulltext.IndexElement{
|
||||
EventID: util.RandomString(16),
|
||||
|
@ -85,7 +85,7 @@ func mustAddTestData(t *testing.T, fts *fulltext.Search, firstStreamPos int64) (
|
|||
Content: "Room topic fulltext",
|
||||
StreamPosition: streamPos,
|
||||
}
|
||||
e.SetContentType(gomatrixserverlib.MRoomTopic)
|
||||
e.SetContentType(spec.MRoomTopic)
|
||||
batchItems = append(batchItems, e)
|
||||
if err := fts.Index(batchItems...); err != nil {
|
||||
t.Fatalf("failed to batch insert elements: %v", err)
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
package pushrules
|
||||
|
||||
import (
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
)
|
||||
import "github.com/matrix-org/gomatrixserverlib/spec"
|
||||
|
||||
// DefaultAccountRuleSets is the complete set of default push rules
|
||||
// for an account.
|
||||
func DefaultAccountRuleSets(localpart string, serverName gomatrixserverlib.ServerName) *AccountRuleSets {
|
||||
func DefaultAccountRuleSets(localpart string, serverName spec.ServerName) *AccountRuleSets {
|
||||
return &AccountRuleSets{
|
||||
Global: *DefaultGlobalRuleSet(localpart, serverName),
|
||||
}
|
||||
|
@ -14,7 +12,7 @@ func DefaultAccountRuleSets(localpart string, serverName gomatrixserverlib.Serve
|
|||
|
||||
// DefaultGlobalRuleSet returns the default ruleset for a given (fully
|
||||
// qualified) MXID.
|
||||
func DefaultGlobalRuleSet(localpart string, serverName gomatrixserverlib.ServerName) *RuleSet {
|
||||
func DefaultGlobalRuleSet(localpart string, serverName spec.ServerName) *RuleSet {
|
||||
return &RuleSet{
|
||||
Override: defaultOverrideRules("@" + localpart + ":" + string(serverName)),
|
||||
Content: defaultContentRules(localpart),
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
userAPI "github.com/matrix-org/dendrite/userapi/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/fclient"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
@ -58,7 +59,7 @@ type TxnReq struct {
|
|||
gomatrixserverlib.Transaction
|
||||
rsAPI api.FederationRoomserverAPI
|
||||
userAPI userAPI.FederationUserAPI
|
||||
ourServerName gomatrixserverlib.ServerName
|
||||
ourServerName spec.ServerName
|
||||
keys gomatrixserverlib.JSONVerifier
|
||||
roomsMu *MutexByRoom
|
||||
producer *producers.SyncAPIProducer
|
||||
|
@ -68,16 +69,16 @@ type TxnReq struct {
|
|||
func NewTxnReq(
|
||||
rsAPI api.FederationRoomserverAPI,
|
||||
userAPI userAPI.FederationUserAPI,
|
||||
ourServerName gomatrixserverlib.ServerName,
|
||||
ourServerName spec.ServerName,
|
||||
keys gomatrixserverlib.JSONVerifier,
|
||||
roomsMu *MutexByRoom,
|
||||
producer *producers.SyncAPIProducer,
|
||||
inboundPresenceEnabled bool,
|
||||
pdus []json.RawMessage,
|
||||
edus []gomatrixserverlib.EDU,
|
||||
origin gomatrixserverlib.ServerName,
|
||||
origin spec.ServerName,
|
||||
transactionID gomatrixserverlib.TransactionID,
|
||||
destination gomatrixserverlib.ServerName,
|
||||
destination spec.ServerName,
|
||||
) TxnReq {
|
||||
t := TxnReq{
|
||||
rsAPI: rsAPI,
|
||||
|
@ -154,7 +155,7 @@ func (t *TxnReq) ProcessTransaction(ctx context.Context) (*fclient.RespSend, *ut
|
|||
util.GetLogger(ctx).WithError(err).Debugf("Transaction: Failed to parse event JSON of event %s", string(pdu))
|
||||
continue
|
||||
}
|
||||
if event.Type() == gomatrixserverlib.MRoomCreate && event.StateKeyEquals("") {
|
||||
if event.Type() == spec.MRoomCreate && event.StateKeyEquals("") {
|
||||
continue
|
||||
}
|
||||
if api.IsServerBannedFromRoom(ctx, t.rsAPI, event.RoomID(), t.Origin) {
|
||||
|
@ -207,7 +208,7 @@ func (t *TxnReq) processEDUs(ctx context.Context) {
|
|||
for _, e := range t.EDUs {
|
||||
EDUCountTotal.Inc()
|
||||
switch e.Type {
|
||||
case gomatrixserverlib.MTyping:
|
||||
case spec.MTyping:
|
||||
// https://matrix.org/docs/spec/server_server/latest#typing-notifications
|
||||
var typingPayload struct {
|
||||
RoomID string `json:"room_id"`
|
||||
|
@ -228,7 +229,7 @@ func (t *TxnReq) processEDUs(ctx context.Context) {
|
|||
if err := t.producer.SendTyping(ctx, typingPayload.UserID, typingPayload.RoomID, typingPayload.Typing, 30*1000); err != nil {
|
||||
util.GetLogger(ctx).WithError(err).Error("Failed to send typing event to JetStream")
|
||||
}
|
||||
case gomatrixserverlib.MDirectToDevice:
|
||||
case spec.MDirectToDevice:
|
||||
// https://matrix.org/docs/spec/server_server/r0.1.3#m-direct-to-device-schema
|
||||
var directPayload gomatrixserverlib.ToDeviceMessage
|
||||
if err := json.Unmarshal(e.Content, &directPayload); err != nil {
|
||||
|
@ -255,12 +256,12 @@ func (t *TxnReq) processEDUs(ctx context.Context) {
|
|||
}
|
||||
}
|
||||
}
|
||||
case gomatrixserverlib.MDeviceListUpdate:
|
||||
case spec.MDeviceListUpdate:
|
||||
if err := t.producer.SendDeviceListUpdate(ctx, e.Content, t.Origin); err != nil {
|
||||
sentry.CaptureException(err)
|
||||
util.GetLogger(ctx).WithError(err).Error("failed to InputDeviceListUpdate")
|
||||
}
|
||||
case gomatrixserverlib.MReceipt:
|
||||
case spec.MReceipt:
|
||||
// https://matrix.org/docs/spec/server_server/r0.1.4#receipts
|
||||
payload := map[string]types.FederationReceiptMRead{}
|
||||
|
||||
|
@ -296,7 +297,7 @@ func (t *TxnReq) processEDUs(ctx context.Context) {
|
|||
sentry.CaptureException(err)
|
||||
logrus.WithError(err).Errorf("Failed to process signing key update")
|
||||
}
|
||||
case gomatrixserverlib.MPresence:
|
||||
case spec.MPresence:
|
||||
if t.inboundPresenceEnabled {
|
||||
if err := t.processPresence(ctx, e); err != nil {
|
||||
logrus.WithError(err).Errorf("Failed to process presence update")
|
||||
|
@ -336,7 +337,7 @@ func (t *TxnReq) processPresence(ctx context.Context, e gomatrixserverlib.EDU) e
|
|||
// processReceiptEvent sends receipt events to JetStream
|
||||
func (t *TxnReq) processReceiptEvent(ctx context.Context,
|
||||
userID, roomID, receiptType string,
|
||||
timestamp gomatrixserverlib.Timestamp,
|
||||
timestamp spec.Timestamp,
|
||||
eventIDs []string,
|
||||
) error {
|
||||
if _, serverName, err := gomatrixserverlib.SplitID('@', userID); err != nil {
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/nats-io/nats.go"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/atomic"
|
||||
|
@ -39,8 +40,8 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
testOrigin = gomatrixserverlib.ServerName("kaer.morhen")
|
||||
testDestination = gomatrixserverlib.ServerName("white.orchard")
|
||||
testOrigin = spec.ServerName("kaer.morhen")
|
||||
testDestination = spec.ServerName("white.orchard")
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -235,7 +236,7 @@ func TestProcessTransactionRequestEDUTyping(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.typing"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
edus := []gomatrixserverlib.EDU{badEDU, edu}
|
||||
|
||||
ctx := process.NewProcessContext()
|
||||
|
@ -301,7 +302,7 @@ func TestProcessTransactionRequestEDUToDevice(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.direct_to_device"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
edus := []gomatrixserverlib.EDU{badEDU, edu}
|
||||
|
||||
ctx := process.NewProcessContext()
|
||||
|
@ -378,7 +379,7 @@ func TestProcessTransactionRequestEDUDeviceListUpdate(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.device_list_update"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
edus := []gomatrixserverlib.EDU{badEDU, edu}
|
||||
|
||||
ctx := process.NewProcessContext()
|
||||
|
@ -441,7 +442,7 @@ func TestProcessTransactionRequestEDUReceipt(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.receipt"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
badUser := gomatrixserverlib.EDU{Type: "m.receipt"}
|
||||
if badUser.Content, err = json.Marshal(map[string]interface{}{
|
||||
roomID: map[string]interface{}{
|
||||
|
@ -519,7 +520,7 @@ func TestProcessTransactionRequestEDUSigningKeyUpdate(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.signing_key_update"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
edus := []gomatrixserverlib.EDU{badEDU, edu}
|
||||
|
||||
ctx := process.NewProcessContext()
|
||||
|
@ -576,7 +577,7 @@ func TestProcessTransactionRequestEDUPresence(t *testing.T) {
|
|||
t.Errorf("failed to marshal EDU JSON")
|
||||
}
|
||||
badEDU := gomatrixserverlib.EDU{Type: "m.presence"}
|
||||
badEDU.Content = gomatrixserverlib.RawJSON("badjson")
|
||||
badEDU.Content = spec.RawJSON("badjson")
|
||||
edus := []gomatrixserverlib.EDU{badEDU, edu}
|
||||
|
||||
ctx := process.NewProcessContext()
|
||||
|
|
|
@ -21,7 +21,7 @@ import (
|
|||
"regexp"
|
||||
|
||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
)
|
||||
|
||||
|
@ -70,7 +70,7 @@ func PasswordResponse(err error) *util.JSONResponse {
|
|||
}
|
||||
|
||||
// ValidateUsername returns an error if the username is invalid
|
||||
func ValidateUsername(localpart string, domain gomatrixserverlib.ServerName) error {
|
||||
func ValidateUsername(localpart string, domain spec.ServerName) error {
|
||||
// https://github.com/matrix-org/synapse/blob/v0.20.0/synapse/rest/client/v2_alpha/register.py#L161
|
||||
if id := fmt.Sprintf("@%s:%s", localpart, domain); len(id) > maxUsernameLength {
|
||||
return ErrUsernameTooLong
|
||||
|
@ -100,7 +100,7 @@ func UsernameResponse(err error) *util.JSONResponse {
|
|||
}
|
||||
|
||||
// ValidateApplicationServiceUsername returns an error if the username is invalid for an application service
|
||||
func ValidateApplicationServiceUsername(localpart string, domain gomatrixserverlib.ServerName) error {
|
||||
func ValidateApplicationServiceUsername(localpart string, domain spec.ServerName) error {
|
||||
if id := fmt.Sprintf("@%s:%s", localpart, domain); len(id) > maxUsernameLength {
|
||||
return ErrUsernameTooLong
|
||||
} else if !validUsernameRegex.MatchString(localpart) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
)
|
||||
|
||||
|
@ -54,7 +54,7 @@ func Test_validateUsername(t *testing.T) {
|
|||
tests := []struct {
|
||||
name string
|
||||
localpart string
|
||||
domain gomatrixserverlib.ServerName
|
||||
domain spec.ServerName
|
||||
wantErr error
|
||||
wantJSON *util.JSONResponse
|
||||
}{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue