Граф коммитов

176 Коммитов

Автор SHA1 Сообщение Дата
Agniva De Sarker
833578741d Improve Redis failure modes (#29405)
While investigating code paths during
Redis downtime, I found out that the library
by default retries indefinitely for read commmands.

This leads to it being stuck in a loop
while trying to read anything from Redis.
We fix that by disabling retry.

Secondly, we adjust the ConnWriteTimeout
value slightly from its default of 10s
which is a bit too high for normal working
conditions.

Ref: https://github.com/redis/rueidis/issues/680
```release-note
NONE
```
2024-12-03 09:34:47 +05:30
catalintomai
c98f0f3a0f MM-60487: Consolidate config telemetry (#28200) 2024-11-25 17:35:25 +00:00
Ben Schumacher
053d0b5f0a [MM-61140] Allow plugins to add Support Packet data without UI elements (#28833)
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
2024-11-13 11:20:39 +01:00
Nadav Tasher
5e47c97db4 Added support for S3 storage classes (#28319)
* Added support for S3 storage classes

* Added missing translations for S3 storage class

* Changed default storage class values to preserve original behaviour

* Changed storage class description and example

* Fix translations ordering

* Change configuration defaults to empty strings

* Remove redundant empty string check

* Validate storage class variable against constants from S3 API docs

* Validate export storage class against constants

* Use slices for config validation

* Applied patch for translation ordering
2024-11-13 12:29:44 +05:30
Nicolas Le Cam
c90e562528 Migrate mockery to packages feature (#29013) 2024-11-07 12:48:11 +01:00
Harshil Sharma
f812104a92 MM-60331 - Scheduled post telemetry (#29132)
* Added scheduled posts telemetry

* Tracking scheudled post creation via webapp to filter by platform

* Fixed keys

* Lint fix
2024-11-06 10:39:52 +00:00
Guillermo Vayá
751d84bf13 [MM-59363] Shared channel event telemetry (#29024)
* shared channel event tracking

* Update notification.go

Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>

---------

Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
2024-11-05 16:26:18 +01:00
Ben Schumacher
2424358b7d [MM-61302] Use model.NewPointer throughout the code base (#28957) 2024-10-29 13:29:53 +01:00
Guillermo Vayá
a532b70317 [MM-59361] custom groups & read only channels (#28892)
* added group mention, read only view and post event tracking

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-10-28 13:41:29 +01:00
Miguel de la Cruz
98d341fbae Return an error if an invite for a confirmed remote cluster is received (#28943)
Co-authored-by: Caleb Roseland <caleb@calebroseland.com>
2024-10-25 11:30:29 +02:00
Miguel de la Cruz
cb03009992 Adds a feature flag to control availability of DMs in shared channels (#28920)
* Adds a feature flag to control availability of DMs in shared channels

* Reverse feature flag wording
2024-10-24 19:38:00 +02:00
Ibrahim Serdar Acikgoz
a8cf496e31 [MM-61213] Limit file size for slack import file uploads (#28904) 2024-10-24 19:06:14 +02:00
Daniel Espino García
2d96053012 Use flags for create post (#28857)
* Use flags for create post

* Remove unintended file

* Fix unintended change and types

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-10-22 16:00:26 +02:00
Miguel de la Cruz
30cb527cf6 Forbid users from creating DMs and GMs with remote users (#28855)
* Forbid users from creating DMs and GMs with remote users

This change prevents the application from creating new DMs and GMs
when remote users are involved, and prevents as well new posts from
being created into preexisting DMs and GMs with remote users created
in previous versions.

* Adds i18n

* Skip preexisting DM tests and create a new one for the new behavior
2024-10-18 11:16:29 -06:00
Caleb Roseland
fcded9559c MM-61032: Add default_team_id to accept invite flow (#28841)
* add default_team_id to accept invite api

* add team selector to accept invite flow UI

* e2e

* lint/i18n
2024-10-18 12:26:38 +02:00
Agniva De Sarker
a190fe8503 MM-59947: Remove the remaining **model.User special casing (#28707)
We remove the remaining special casing for **model.User
and add unit tests to lock in the behavior.

Additional load tests were done locally to confirm
there are no hidden code paths left out.

https://mattermost.atlassian.net/browse/MM-59947

```release-note
NONE
```
2024-10-14 21:03:01 +05:30
enzowritescode
991debeb0b Change log level inside sendMail() (#28669)
* Change log level inside sendMail()
2024-10-09 14:01:01 -06:00
Ben Cooke
b3c7ef0b97 [MM-56073] MMCTL delete post command (#27539)
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
2024-10-08 16:45:31 +02:00
Guillermo Vayá
662e59865c MM-59360 add telemetry for paid features related to guests (#28295)
* add telemetry for paid features related to guests

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-10-07 13:30:19 +02:00
Julien Tant
d1cad8c692 add reuse check on update MFA (#28304) 2024-09-27 17:35:36 +02:00
Agniva De Sarker
9900151fb6 Remove some dead code from Redis (#28313)
I forgot to remove this method in my
earlier refactoring. A bit weird that no linter
caught this. 🤔

```release-note
NONE
```
2024-09-25 22:05:46 +05:30
Guillermo Vayá
343746c4b6 MM-59954 Community plugins telemetry (#28226)
* add known plugins to the list of possible plugins to be located

* improve testing and fix config data collection

* Improve testing

* remove empty lines

* make linter happy

* go through all plugins
2024-09-23 12:59:19 +02:00
Miguel de la Cruz
8a735f1b03 Add a specific error when inviting a remote cluster to a remote channel (#28255) 2024-09-19 14:27:41 -05:00
Agniva De Sarker
7be7a47fd3 MM-59933: Increment/Decrement the member count directly (#28196)
While using Redis, there is no need to invalidate
and then update the new count from the DB when
we know the exact number it is going to be incremented
or decremented by.

In that case, we can directly use Redis primitives
to update the cache and prevent yet another DB query.

To achieve this, we modify the LRU cache get/set
paths slightly to not marshal into byte slices
for *int64 values. This is needed for Redis to operate
the INCR/DECR commands.

https://mattermost.atlassian.net/browse/MM-59933

```release-note
NONE
```

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-09-19 09:38:38 +05:30
Agniva De Sarker
75ed2860ac MM-59934: Add Redis to CI and other improvements (#28164)
- Update library version.
- Added MaxFlush delay to help reduce CPU usage.
- Fall back to LRU cache for the caches which use SCAN.
- Added mattermost-redis and running for all api layer
tests in Postgres.

https://mattermost.atlassian.net/browse/MM-59934
```release-note
NONE
```
2024-09-18 19:13:44 +05:30
Agniva De Sarker
f18323980f MM-60413: Fix issues due to incorrect cache provider (#28181)
We were using a mock cache provider which mixed up LRU caches
with each other. This led to incorrect unmarshalling method calls.

We fix this by using the real cache provider.

https://mattermost.atlassian.net/browse/MM-60413

```release-note
NONE
```
2024-09-17 09:37:54 +05:30
Julien Tant
1909206e16 [MM-59069] Make sure OTP are actual One Time Password (#28074)
Automatic Merge
2024-09-17 00:44:32 +02:00
Miguel de la Cruz
d2c69fbf95 Changes the event to send when a channel is shared or unshared (#28183)
* Changes the event to send when a channel is shared or unshared

Before we were sending the CHANNEL_CONVERTED websockets event, which
is intended to notify of a public channel being converted into a
private one, so the interface was showing the channel as private until
the client was refreshed.

Now a full channel update event is sent when the channel is shared or
unshared, so the interface gets the new information correctly.

* Fix message type on command tests
2024-09-13 21:40:02 +00:00
Miguel de la Cruz
cae456de2d Adds includeDeleted flag to get remote cluster app and store methods (#28182) 2024-09-13 23:08:53 +02:00
Miguel de la Cruz
f41d54b336 Allows invites to be sent to offline remotes (#28176)
* Allows invites to be sent to offline remotes

Invites sent to remotes marked as offline will be stored as pending,
and when the remote comes back online, it will process the invites as
part of the synchronization process.

* Update condition name for excluding confirmed invites
2024-09-13 10:54:51 +02:00
Miguel de la Cruz
d1ae710d45 Adds a ConnectedWorkspaces.MaxPostsPerSync configuration property (#28154)
* Adds a ConnectedWorkspaces.MaxPostsPerSync configuration property

* Fix linter
2024-09-12 20:40:44 +02:00
Miguel de la Cruz
f8202309ce Adds logical deletes to shared channel remotes and remote clusters (#28159)
* Adds logical deletes to shared channel remotes and remote clusters

Instead of physically deleting the shared channel remote and remote
clusters records when a channel is unshared, a remote uninvited or a
remote cluster is deleted, now those have a logical `DeleteAt` field
that is set.

This allows us to safely restore shared channels between two remote
clusters (as of now resetting the cursor without backfilling their
contents) and to know which connections were established in the past
and now are severed.

* Delete the index in remoteclusters before adding the new column

* Fix bad error check
2024-09-12 13:55:11 +02:00
Miguel de la Cruz
b898d13e55 Adds status sync to shared channels (#28020)
* Adds status sync to shared channels

To allow for status to be synced, this changes add a new type of
shared channel internal task. This task has its contents pre-fetched
and stored in the `existingMsg` property, and it is keyed with a user
ID besides a channel ID, so it doesn't conflict with channel-driven
synchronization tasks.

All status synchronizations are triggered from the app layer, so there
is no need of watching for new WebSocket events. Although right now
we're only syncing one user status per message, the changes account
for a list of statuses in case we want to batch them in the future.

The feature is gated by a configuration property and can be disabled
independently of the rest of Shared Channels if it's necessary. It is
backwards compatible as well, and should cause no problems with
servers running older Mattermost versions.

* Adds status sync error management and retry

* Adds DisableSharedChannelsStatusSync to the telemetry report

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-09-10 21:39:07 +00:00
Miguel de la Cruz
d5e9aa9fb3 Adds ConnectedWorkspacesSettings configuration block (#27820)
* Adds ServerFederationSettings configuration block

The Server Federation related configuration properties were located in
the `ExperimentalSettings` config block. Now that the feature is going
to get out of beta, and foreseeing more configuration properties being
added to it, we're moving them to a block of its own.

If the properties were set in the old location, their values should be
carried over to the new ones. The old properties are left in place and
marked as deprecated not to cause issues with the model.

* Update System Console to include Server Federation section

* Remove system console section

* Move the configuration properties to ConnectedWorkspaces

* Add ConnectedWorkspacesSettings to the telemetry

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-09-10 22:33:00 +02:00
Miguel de la Cruz
3dc0e63c03 Adds Shared Channel related API endpoints (#27436)
* Adds Shared Channel management API endpoints

New endpoints for the following routes are added:

- Get Shared Channel Remotes by Remote Cluster at `GET
/api/v4/remotecluster/{remote_id}/sharedchannelremotes`
- Invite Remote Cluster to Channel at `POST
/api/v4/remotecluster/{remote_id}/channels/invite`
- Uninvite Remote Cluster to Channel at `POST
/api/v4/remotecluster/{remote_id}/channels/uninvite`

These endpoints are planned to be used from the system console, and
gated through the `manage_secure_connections` permission.

* Adds i18n messages for API errors

* Fix pagination flaky test

* Fix linter

* Adds the posibility of filtering shared channel remotes by home

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-08-29 12:46:37 +02:00
Yoo Dongryul
283f59b479 Fix Video Unavailable problem at YouTube preview (#26980)
* Fix YouTube preview shows Video Unavailable

* Fix typo on iframe property

* Remove duplicated property

* fix lint error (double-quotes, unknown property)

* renew snapshot for youtube_video.tsx

* fix double quotes and newline error on snapshot for youtube_video.tsx

* fix blank on snapshot for youtube_video.tsx

* Add YouTube Shorts Embed Preview

* Revert "Add YouTube Shorts Embed Preview"

This reverts commit b5fb7a4076ef73774a0e50157f371516b9d383b2.

* Add setting for Youtube Referrer Policy

* fix test code error about Youtube Referrer Policy

* remove mistake changes on `webpack.config.js`

* add test and snapshot about `youtubeReferrerPolicy = true`

* fix errors on ci

* update description of YouTube Referrer Policy

* remove unnecessary whitespace in default_config.ts

* remove ko.json changes to prevent conflict with translate tool

* update snapshot of `youtube_video.test.tsx`

* referrerPolicy on `youtube_video` didn't follow global policy value

https://github.com/mattermost/mattermost/pull/26980#discussion_r1672524152

* update snapshot of `youtube_video.test.tsx`

* Remove obsolete snapshot

* fix typo on index.ts @ youtube_video

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
2024-08-22 11:35:04 +02:00
Ben Schumacher
6229b784eb [MM-58113] Remove deprecated AdvancedLoggingConfig (#27386) 2024-08-13 22:17:06 +02:00
Agniva De Sarker
a1012d33eb MM-59932: Migrate remaining caches to Redis (#27880)
- We introduce 2 new APIs:
1. Scan: this allows incremental iteration
without blocking the Redis server and is the
recommended way to iterate over keys. With this,
we have entirely removed the need for Keys.
2. RemoveMulti: this allows deletion of multiple
keys in a single operation which optimizes
network round trips.

- While here, we make a small improvement to
GetStatusFromCache, where we remove the shallow
copy which wasn't necessary because we always
serialize the data from the cache.
- We do not use Redis for session cache because of
frequent requests to iterate the entire cache which leads
to a lot of `SCAN` calls.
- Avoid broadcasting status update messages for Redis case.
- Setting cache expiry for status cache
- Removing .Set method altogether to prevent
any chances of setting an item with no expiry.

https://mattermost.atlassian.net/browse/MM-59932

```release-note
NONE
```
2024-08-13 14:18:25 +05:30
alexcekay
7232b5f002 [GH-26715] Added Pagination Support for IncomingWebHooks (#27502)
* Added Pagination Support for IncomingWebHooks

* Incorporated feedback from reviews

* Removed trailing spaces

* Restored deleted server en.json entries, fixed order in webapp en.json

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-08-09 16:44:22 -04:00
Miguel de la Cruz
59873a2a50 Adds default team to the remote cluster entity (#27863)
* Adds default team to the remote cluster entity

A new DefaultTeamId field is added to the RemoteCluster entity and its
endpoints, and used when receiving channel invites to choose in which
team to create a new channel.

This will be later extended with the ability for the system admin to
manually accept invites, choosing which team to create the channel on
each. This use case will be triggered when the DefaultTeamId field is
empty, which now simply chooses the first team it finds in the
database as a fallback.

* Fix migrations list

* Fixes channelinvite test case

* Fix i18n

* Fix migration list
2024-08-08 16:36:27 +02:00
Miguel de la Cruz
2be8f2f349 Allows remote users to change their username (#27839) 2024-08-06 09:48:58 +02:00
Agniva De Sarker
540febd866 MM-56876: Redis: first introduction (#27752)
```release-note
NONE
```

---------

Co-authored-by: Jesús Espino <jespinog@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-08-06 09:28:41 +05:30
Agniva De Sarker
c3ed07e679 OSF: Used model.NewPointer everywhere (#27838)
```release-note
NONE
```
2024-08-06 09:15:00 +05:30
Jesse Hallam
295c8c277b Pre-package MS Teams v2.0 (#27708)
* Pre-package MS Teams v2.0.0

* bump to v2.0.1

* add MS Teams plugin to known list for tracking telemetry

* bump to v2.0.2
2024-07-31 16:18:09 -03:00
Harshil Sharma
eb6336ce7a Fixed bug around channel file sidebar (#27705)
* Fixed the issue for DB layer, ES to go

* Handled channel bookmarks

* Handled Bleve

* Lint fix

* Added channel bookmark test

* Skip bleve test

* Used common function

* SKipping ES as indexing logic in unavailable in test
2024-07-26 11:45:42 +05:30
Harshil Sharma
79480494d0 Prominent payload limit error and configurable URL length limit (#27747)
* Added context error handler for MaxBytesError

* Made URL length limit configurable

* Added tests

* Removed an unused function

* Typo
2024-07-25 09:09:58 +00:00
M-ZubairAhmed
e2d7d2d23c [MM-59060] Remove pre release features section from advanced section of user settings (#27608) 2024-07-18 13:01:57 +00:00
Doug Lauder
19d59d1126 MM-58245 Don't allow patching real email or username for remote users (#27613)
* don't allow patching real email or username for remote users

* add comment
2024-07-11 10:17:09 +02:00
Miguel de la Cruz
809ad4f76d Adds Remote Cluster related API endpoints (#27432)
* Adds Remote Cluster related API endpoints

New endpoints for the following routes are added:

- Get Remote Clusters at `GET /api/v4/remotecluster`
- Create Remote Cluster at `POST /api/v4/remotecluster`
- Accept Remote Cluster invite at `POST
/api/v4/remotecluster/accept_invite`
- Generate Remote Cluster invite at `POST
/api/v4/remotecluster/{remote_id}/generate_invite`
- Get Remote Cluster at `GET /api/v4/remotecluster/{remote_id}`
- Patch Remote Cluster at `PATCH /api/v4/remotecluster/{remote_id}`
- Delete Remote Cluster at `DELETE /api/v4/remotecluster/{remote_id}`

These endpoints are planned to be used from the system console, and
gated through the `manage_secure_connections` permission.

* Update server/channels/api4/remote_cluster_test.go

Co-authored-by: Doug Lauder <wiggin77@warpmail.net>

* Fix AppError names

---------

Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-07-04 10:35:26 +02:00
Agniva De Sarker
d20b55bde8 MM-57375: Update to latest minio image (#27475)
* test with latest minio image
* Update the KMS key
- Also use latest config settings. The older ones were deprecated.
2024-06-28 20:34:18 +05:30