8000 Release 2025-05-12 - (expected chart version 5.15.0) by zebot · Pull Request #4573 · wireapp/wire-server · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Release 2025-05-12 - (expected chart version 5.15.0) #4573

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 40 commits into
base: master
Choose a base branch
from

Conversation

zebot
Copy link
Contributor
@zebot zebot commented May 12, 2025

[2025-05-12] (Chart Release 5.15.0)

API changes

  • From API version V9 on, the POST /domain-verification/{domain}/backend and
    POST /get-domain-registration endpoints are adjusted to also carry the
    webapp_url in their payloads. The structure of these payloads changes as
    well: The former backend_url and the new webapp_url are now combined in one
    object in the backend field:

    {
    ...
      "backend": {
        "config_url": "{url}",
        "webapp_url": "{url}"
      }
    }

    The same change is applied to the internal endpoints PUT /i/domain-registration and GET /i/domain-registration. (Add a webapp url field to email domain registration (1) #4559)

  • Add a new endpoint /mls/reset-conversation which can be used to restore an MLS group that ended up in an invalid state for any reason. After resetting, the conversation has the same users, but the corresponding MLS group gets a new group ID and resets to epoch 0 with no clients. (Reset MLS conversations #4558)

Features

Bug fixes and other updates

Internal changes

Federation changes

mohitrajain and others added 30 commits April 2, 2025 20:54
* integration: Move testInvalidCookie from brig-integration

* Move Brig.ZAuth to Wire.AuthenticationSubsystem.ZAuth

This needs more changes to the zauth library before it can be integrated in the
the AuthenticationSubsystem.

* zauth: Polysemize token creation and use it in AuthSubsys.ZAuth

* Remove TokenPair type class

The 'newAccessToken' function is moved to the 'AccessTokenLike' typeclass
returns an 'AccessToken' type which contains the serialized token, removing the
need for polymorphism.

Similarly 'renewAccessToken' function in the 'UserTokenLike' typeclass returns
an 'AccessToken'.

We might be able to get rid of all of this polymophism as things are not _so_
complicated. This is just the first step.

* Remove accessTokenClient from AccessTokenLike

It was only used in integration tests and only for one type of access token

* zauth: Unify User/LegalHoldUser and Acess/LegalHoldAccess using a phantom type paramter

These are essentially same things and we have invented type classes to treat
them so, but if they contain the same data structures inside and have same
serialisation/de-serialisation logic, there is little point in having new type
wrappers for LegalHoldUser and LegalHoldAccess.

The phantom type parameter is of type `UserTokenType` with values `ActualUser`
and `LHUser`. These names don't completely make any sense because there is no
such thing as a `LegalHoldUser` different from `ActualUser`. It _should_ rather
be called something like `TokenType`, but that name is taken by something else.
I suspect this type will go away soon, so while transitioning its probably fine
to keep it as it.

Doing all this makes it easier for The typeclasses `AccessTokenLike` and
`UserTokenLike` to be merged. The actual use of those type classes is to
determine which ttls to apply to these the `UserTokenType`, which can now be
made clearer in the code.

* zauth: Delete unused validation functions

* Introduce mappings from UserTokenType to Token.Type

These help de-dupe bit more code.

* zauth: Polysemize validation

Delete bunch of unused code.

* zauth: Remove lenses and renamed constructors

* zauth: Use 'Type' as the parameter for the 'Token' type instead of body

Create a type family 'Body t' which defines the body based on the type of the
token. This removes illegal states like token of type Bot having a User as the
body.

As a result the token creation can be greatly simplified with it being passed
the parameters for creating the header and the body of correct type. This helps
reduce some duplication between ZAuth.Creation and
Wire.AuthenticationSubsystems.ZAuth. This also pushed the need for the random
number generation to the subsystems code making the creation even lighter. Maybe
we can get rid of polysemy from there too making the whole thing very simple.

The classes 'UserTokenLike' and 'AccessTokenLike' also become much simpler as
they can just have a general constraint like '(Body t ~ User)' and '(Body t ~
Access) respectively. Perhaps these classes can be gotten rid of once we can use
some state from the AuthenticationSubsystem.

* integration tests: Adjust expectations of reading invalid tokens

Since the token is generic now, read errors don't specify which type of token is
invalid to read. This only changes the message of the error and not the label,
so it is an acceptable change.

* AuthSubs.ZAuth: deduplicate mkUserToken' and mkLegalHoldUserToken

They're same functions now, this deals with a futurework

* Unify newAccessToken and newLegalHoldAccessToken

It is a bit reminiscent of the recently removed TokenPair class. Perhaps this
was we can merge AccessTokenLike and UserTokenLike soon.

* Unify newUserToken and newLegalHoldUserToken

* zauth: Implement renewToken in terms of newToken

The implementation only depended on newTokenImpl anyway.

* zauth: Remove polysemy

Every place it was used, it was immediately run. So there is little point in
keeping this abstraction around.

* Take newSessionToken out of UserTokenLike

This makes UserTokenLike indepedent of MonadZAuth, freeing it to be useable in a
polysemy action.

* Replace MonadZAuth with Input ZAuthEnv and Embed IO

Another way to do this would've been to implement stuff in the prod interpreter
of AuthenticationSubsytem using MonadZAuth and then get rid of MonadZAuth. But
it so happened this way. This way is worse because it has caused a lot of
changes to constraints in brig which would need to be undone. Perhaps that
happens in the next commit.

* Make wire-api dependent on polysemy-wire-zoo instead of the other around

This will help polysemy-wire-zoo to be usable in zauth

* zauth: Reintroduce polysemy at a lower level

This helps get rid of IO from token creation and validation, which would help
avoid IO from AuthenticationSubsystem.Interpreter, which is required because
MiniBackend doesn't run IO right now.

brig doesn't compile right now, but the functions will be moved into
AuthenticationSubsystem anyway, so playing type-tetris isn't as productive.

* AuthenticationSubsytem: Move code for issuing a new cookie

* Propagate constraint changes and newCookie moving to brig

* Don't use singletons.

The old code is good enough, and singletons may add more complexity
than they abstract away.

* Changelog.

* integration/testCookieLimit: Add threadDelay to get around failure

Brig updates its time every second. If we create many cookies very quickly all
of them get assigned the same cookie creation time, this makes it impossible to
guess which cookie will get evicted when we have too many cookies. So waiting a
second between cookie creation gets around this problem.

* AuthenticationSubsystem: Consolidate Input effects

* brig: Remove `Member (Input Env)` from everywhere

Move the required settings to AuthenticationSubsystemConfig.

* brig: Remove ZAuthEnv as an explicit Input

* Add test for randomConnId

---------

Co-authored-by: Matthias Fischmann <mf@zerobuzz.net>
Co-authored-by: Leif Battermann <leif.battermann@wire.com>
Release 2025-04-07 - (expected chart version 5.14.0)
* Add local hooks to deploy/docker-ephemeral/run.sh

this can be used to do hacky cleanup tricks before and after
restarting docker services.

* Makefile hack: disconnect treefmt from posix env

this is useful if you're running make in emacs.  treefmt seems to be
waiting for something for >5 seconds every when run in emacs.

* fix typo

Co-authored-by: Sven Tennie <sven.tennie@wire.com>

* Add a line of docs.

---------

Co-authored-by: Sven Tennie <sven.tennie@wire.com>
* Make proxy config follow same schema as other services

Otherwise, integration cannot patch the config correctly.

* Add /services/proxy to `make cr`.

* Add integration test for giphy proxy.

make devtest TEST_INCLUDE=testProxyGiphy now does something!

* wip

* Add giphyEndpoint to Helm chart

* Read giphyEndpoint config option

* Formatting

* WIP: Proxy integration test

* Make Proxy testable

Allow HTTP connections for tests.

* More assertions in test

* More assertions in test.

* Error case.

* Drop SetupHelpers.Proxied and move everything into Test.Proxy.

* Test more error cases.

* refactor: make proxy independent of wai-predicate

* Move giphy proxy from wai-predicate to servant.

* TODO

* Make test more exhaustive.

* Test for youtube proxy; make proxied endpoints optional in yaml.

* Move youtube proxy from wai-predicate to servant.

* Refactor test.

* Fixup

* Make googlemaps proxy take optional google maps endpoint.

* Test for googlemaps proxy.

* Fix google maps test route

The path prefix was wrong.

* Add assertions: Handle 404 responses

* Servantify googlemaps staticmap

* Lint

* Servantify googlemaps geocode api

* make sanitize-pr

* Delete obsolete wai routes

* Remove RawM hack (it's been available upstream since forever).

* Make spotify endpoint configurable

* Fixup: Remove RawM hack (it's been available ... since forever).

* Start test for spotify

* Add assertion to spotify test

* One servant type to rule them all

* Servantify proxy spotify api

* Add test for soundcloud resolve

* Servantify souncloud /resolve endpoint

* Add test for soundcloud stream

* Servantify soundcloud proxy.

this removes the last traces of wai-{routes,predicates} from /services/proxy.

* Enable proxy for integration tests (CI)

Unfortunately, local and CI test setups differ...

* changelog

* Use Endpoint instead of hacking it with CaptureAll.

* Change default log level for proxy in /integration from Trace to Warn.

* Add swagger description.

* Remove outdated TODO.

* Add unrelated haddocks.

---------

Co-authored-by: Sven Tennie <sven.tennie@wire.com>
* Remove wai-{route,predicates} deps everywhere.

* Remove some more dead code.

* Clean up imports.
…nal requests (#4543)

This will reduce noise log in brig.
WPB-16211: fix the wire-docs build and added the documentation for contribution to wire-docs
* Remove duplication in checkProposal

* Check signature keys of leaf nodes in internal commits

* Refactor createMLSClient

* Migrate mls/clients test to integration

* Make mls/clients return only one signature key

* Remove GenericClientMap and generalise ClientMap

* Use Error effect in getClientInfo

* Implement signature check for update paths

* fixup! Check signature keys of leaf nodes in internal commits

* Skip leaf node signature key check if no key can be found

* Lint

* Check leaf node of update path

* Extract and generalise leaf node signature check

* Move new federation endpoint to V3.

* fixup! Extract and generalise leaf node signature check

* Add CHANGELOG entry

* Test signature keys for clients of existing users as well

* Test incorrect signature key on external commit

* Test compatibility with federation v1

* More explicit wording for ms-identity-mismatch error

Co-authored-by: Leif Battermann <leif.battermann@wire.com>

---------

Co-authored-by: Leif Battermann <leif.battermann@wire.com>
This PR changes the way assets are uploaded to S3, it makes use of [multi-part uploads API](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) via the amazonka-s3-streaming library.

cargohold needs to be compatible with StorageGRID.
Without this PR cargohold receives 400 Bad request when uploading. It might be related to this comment:
: https://docs.netapp.com/us-en/storagegrid/s3/s3-rest-api-supported-operations-and-limitations.html#common-request-headers

Switching to multi-part uploads seems to fix the problem.

See also https://wearezeta.atlassian.net/browse/WPB-17236
…bbitmq (#4556)

This commit introduces a new RecipientClients constructor to
express that sometimes notifs should only be pushed to the
temporary queue of a user.

Co-authored-by: Akshay Mankar <itsakshaymankar@gmail.com>
| image                              | CVEs |
|------------------------------------|------|
| bitnami/redis:6.2.6 (debian 10.12) | 411  |
| bitnami/redis:6.2.16 (debian 12.8) | 96   |
supersven and others added 10 commits May 2, 2025 11:23
This version is known to work. Newer versions probably need
adjustment(s) to their values.
This commit changes these endpoints for versions V9+:
 - POST /get-domain-registration
 - POST /domain-verification/{domain}/backend

The `backend_url` is moved into an object (`backend`) as field `config_url`. A new field (`webapp_url`) is added to this. This new field is backed by a column in the database.
Apply new schema (payloads) to DomainRegistrationResponse and
DomainRegistrationUpdate.
extend test coverage: when a SCIM provisioned user logs in via SSO, even if validateSAMLEmails is enabled
We allow only TLS connections to the Redis nodes. Thus we replication
has to use TLS as well (by default it doesn't.)

See
https://redis.io/docs/latest/operate/oss_and_stack/management/security/encryption/#replication

* Add missing newlines

These files are interpreted as "POSIX text files". And, thus should
adhere to their standards.

See
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206

* Add changelog entry
* Implement group ID version 2

* Add MLS reset endpoint

* Fix GroupId roundtrip test

* Basic MLS reset test

* Federated reset endpoint

* Finish implementation of federated reset

* Test delete subconv with new reset endpoint

* fixup! Basic MLS reset test

* Test mixed conversation reset

* Fix fed versioning and add test

* Add CHANGELOG entry

* Add new endpoint to nginx

* Remove TODO

* Temporarily remove legacy fed test

We will add it back in a follow-up PR
* More SAML login error details.

* HasCallStack

* cabal bounds.
@zebot zebot requested review from a team as code owners May 12, 2025 14:25
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label May 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0