From b316cb131a7814992b33db791e0b09f3f9dbec1c Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 19 Nov 2024 16:01:50 +0200 Subject: [PATCH] push: enable push encryption key [skip cd] --- go.mod | 4 ++-- go.sum | 8 ++++---- pkg/connector/config.go | 2 ++ pkg/connector/push.go | 13 +++++++++++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index e5332b11..e2e270eb 100644 --- a/go.mod +++ b/go.mod @@ -10,12 +10,12 @@ require ( github.com/gotd/td v0.111.0 github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.9.0 - go.mau.fi/util v0.8.2-0.20241113135441-636f8643f367 + go.mau.fi/util v0.8.2 go.mau.fi/zerozap v0.1.1 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f golang.org/x/net v0.31.0 - maunium.net/go/mautrix v0.21.2-0.20241114125808-21aa3291f31f + maunium.net/go/mautrix v0.22.1-0.20241119140028-4bc4bc00465a ) require ( diff --git a/go.sum b/go.sum index 3258a5ad..066b1d5e 100644 --- a/go.sum +++ b/go.sum @@ -74,8 +74,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= -go.mau.fi/util v0.8.2-0.20241113135441-636f8643f367 h1:GU0TYiAOU79p6r3jf3e4k5cdgnPxOcJWkWeWampdAjw= -go.mau.fi/util v0.8.2-0.20241113135441-636f8643f367/go.mod h1:SVzC++wSl8Yq4YVQRClLPa1frNpSVDVP6mfkw/OvDbc= +go.mau.fi/util v0.8.2 h1:zWbVHwdRKwI6U9AusmZ8bwgcLosikwbb4GGqLrNr1YE= +go.mau.fi/util v0.8.2/go.mod h1:BHHC9R2WLMJd1bwTZfTcFxUgRFmUgUmiWcT4RbzUgiA= go.mau.fi/zeroconfig v0.1.3 h1:As9wYDKmktjmNZW5i1vn8zvJlmGKHeVxHVIBMXsm4kM= go.mau.fi/zeroconfig v0.1.3/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70= go.mau.fi/zerozap v0.1.1 h1:mxE/dW4wtkqBYOXOEEzXldk5qKB+ahsZXjoTGnvEhZQ= @@ -117,8 +117,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= -maunium.net/go/mautrix v0.21.2-0.20241114125808-21aa3291f31f h1:NyPane3nuWA3Pisj7Z0uG1rmNDOkDFSrXEB8xGN0gzs= -maunium.net/go/mautrix v0.21.2-0.20241114125808-21aa3291f31f/go.mod h1:X7VB/wOIUo6c3wACyVwA//v2k8BpMLFB2rvaX2Y0984= +maunium.net/go/mautrix v0.22.1-0.20241119140028-4bc4bc00465a h1:mClMaxDq8iiBEvoHgi2chKZiRMzhU7idN9ihhqaLpWI= +maunium.net/go/mautrix v0.22.1-0.20241119140028-4bc4bc00465a/go.mod h1:oqwf9WYC/brqucM+heYk4gX11O59nP+ljvyxVhndFIM= nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= diff --git a/pkg/connector/config.go b/pkg/connector/config.go index b678cfbb..d9ed2563 100644 --- a/pkg/connector/config.go +++ b/pkg/connector/config.go @@ -188,6 +188,8 @@ type UserLoginMetadata struct { TakeoutDialogCrawlCursor networkid.PortalID `json:"takeout_portal_crawl_cursor,omitempty"` PinnedDialogs []networkid.PortalID `json:"pinned_dialogs,omitempty"` + + PushEncryptionKey []byte `json:"push_encryption_key,omitempty"` } func (s *UserLoginSession) Load(_ context.Context) (*session.Data, error) { diff --git a/pkg/connector/push.go b/pkg/connector/push.go index 0c14312b..46b59beb 100644 --- a/pkg/connector/push.go +++ b/pkg/connector/push.go @@ -5,12 +5,21 @@ import ( "fmt" "github.com/gotd/td/tg" + "go.mau.fi/util/random" "maunium.net/go/mautrix/bridgev2" ) var _ bridgev2.PushableNetworkAPI = (*TelegramClient)(nil) func (t *TelegramClient) RegisterPushNotifications(ctx context.Context, pushType bridgev2.PushType, token string) error { + meta := t.userLogin.Metadata.(*UserLoginMetadata) + if meta.PushEncryptionKey == nil { + meta.PushEncryptionKey = random.Bytes(256) + err := t.userLogin.Save(ctx) + if err != nil { + return fmt.Errorf("failed to save push encryption key: %w", err) + } + } var tokenType int switch pushType { case bridgev2.PushTypeWeb: @@ -27,12 +36,12 @@ func (t *TelegramClient) RegisterPushNotifications(ctx context.Context, pushType TokenType: tokenType, Token: token, AppSandbox: false, - Secret: nil, + Secret: meta.PushEncryptionKey, OtherUIDs: nil, // TODO set properly }) return err } func (t *TelegramClient) GetPushConfigs() *bridgev2.PushConfig { - return &bridgev2.PushConfig{} + return &bridgev2.PushConfig{Native: true} }