mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
hicli: check spec versions on startup
This commit is contained in:
parent
b571d922e0
commit
9ed8ca3d37
2 changed files with 23 additions and 0 deletions
|
|
@ -19,6 +19,7 @@ import (
|
|||
|
||||
"github.com/rs/zerolog"
|
||||
"go.mau.fi/util/dbutil"
|
||||
"go.mau.fi/util/exerrors"
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/crypto"
|
||||
|
|
@ -145,6 +146,10 @@ func (h *HiClient) Start(ctx context.Context, userID id.UserID, expectedAccount
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = h.CheckServerVersions(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = h.Crypto.Load(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load olm machine: %w", err)
|
||||
|
|
@ -167,6 +172,20 @@ func (h *HiClient) Start(ctx context.Context, userID id.UserID, expectedAccount
|
|||
return nil
|
||||
}
|
||||
|
||||
var ErrFailedToCheckServerVersions = errors.New("failed to check server versions")
|
||||
var ErrOutdatedServer = errors.New("homeserver is outdated")
|
||||
var MinimumSpecVersion = mautrix.SpecV11
|
||||
|
||||
func (h *HiClient) CheckServerVersions(ctx context.Context) error {
|
||||
versions, err := h.Client.Versions(ctx)
|
||||
if err != nil {
|
||||
return exerrors.NewDualError(ErrFailedToCheckServerVersions, err)
|
||||
} else if !versions.Contains(MinimumSpecVersion) {
|
||||
return fmt.Errorf("%w (minimum: %s, highest supported: %s)", ErrOutdatedServer, MinimumSpecVersion, versions.GetLatest())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *HiClient) Sync() {
|
||||
h.Client.StopSync()
|
||||
if fn := h.stopSync; fn != nil {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ func (h *HiClient) LoginPassword(ctx context.Context, homeserverURL, username, p
|
|||
}
|
||||
|
||||
func (h *HiClient) Login(ctx context.Context, req *mautrix.ReqLogin) error {
|
||||
err := h.CheckServerVersions(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.StoreCredentials = true
|
||||
req.StoreHomeserverURL = true
|
||||
resp, err := h.Client.Login(ctx, req)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue