Commit Graph

49365 Commits

Author SHA1 Message Date
Alex Vandiver
5082182e37 Release Zulip Server 6.2. 6.2 2023-05-19 18:23:04 +00:00
Sahil Batra
7c2693a2c6 CVE-2023-32677: Check permission to subscribe other users in invites.
This commit updates the API to check the permission to subscribe other
users while inviting.  The API will error if the user passes the
"stream_ids" parameter (even when it contains only default streams)
and the calling user does not having permission to subscribe others to
streams.

For users who do not have permission to subscribe others, the
invitee will be subscribed to default streams at the time of
accepting the invite.

There is no change for multiuse invites, since only admins are allowed
to send them, and admins always have the permission to subscribe
others to streams.
2023-05-18 21:49:20 +00:00
Mateusz Mandera
3df1b4dd7c CVE-2023-28623: Prevent unauthorized signup with ldap + external auth.
Since 74dd21c8fa in Zulip Server 2.1.0, if:
- ZulipLDAPAuthBackend and an external authentication backend (any aside
  of ZulipLDAPAuthBackend and EmailAuthBackend) are the only ones
  enabled in AUTHENTICATION_BACKENDS in /etc/zulip/settings.py
- The organization permissions don't require invitations to join

...then an attacker can create a new account in the organization with
an arbitrary email address in their control that's not in the
organization's LDAP directory.

The impact is limited to installations which have the specific
combination of authentication backends described above, in addition to
having the "Invitations are required for joining this organization
organization" permission disabled.
2023-05-18 19:49:36 +00:00
Mateusz Mandera
baf9382f24 maybe_send_to_registration: Remove password_required arg.
This argument was added with the default incorrectly set to `True` in
bb0eb76bf3 - despite
`maybe_send_to_registration` only ever being called in production code
in a single place, with `password_required=False` explicitly. And then
it just got carried forward through refactors.

`maybe_send_to_registration` was/is also called twice in tests, falling
back to the default, but the `password_required` value is irrelevant to
the tests - and if anything letting it use the `True` has been wrong,
due to not matching how this function is actually used.
2023-05-18 19:49:36 +00:00
Anders Kaseorg
520808f55a requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit d0481be3e5)
2023-05-15 16:11:36 -07:00
Anders Kaseorg
fb61843a00 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 03b3c8522d)
2023-05-15 16:11:36 -07:00
Anders Kaseorg
6cfe0655f2 provision: Disable compilemessages searching for locale directories.
We explicitly configure LOCALE_PATHS, so we can safely disable this
search of the entire tree for other locale directories.

https://github.com/django/django/blob/4.1/django/core/management/commands/compilemessages.py#L92-L100

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 8f27a6fb73)
2023-05-15 12:05:08 -07:00
Mateusz Mandera
2a6d4ea036 zilencer: Delete duplicate remote push registrations.
This fixes existing instances of the bug fixed in the previous commit.

Fixes #24969.
2023-05-14 11:17:46 -07:00
Mateusz Mandera
7b08419145 zilencer: Avoid creating duplicate remote push registrations.
Servers that had upgraded from a Zulip server version that did not yet
support the user_uuid field to one that did could end up with some
mobile devices having two push notifications registrations, one with a
user_id and the other with a user_uuid.

Fix this issue by sending both user_id and user_uuid, and clearing
2023-05-14 11:17:46 -07:00
Alex Vandiver
546ecc38d6 zulip-puppet-apply: Any resources failing to apply should exit 2.
The existing `except subprocess.CalledProcessError` only catches if
there are syntax errors which prevent the `lastrun` file from being
written; it does not handle if there are properly-defined resources
which fail to evaluate (e.g. due to a missing dependency or file).

Check the `failed` resource count, and exit 2 if there are any such
resources.  This will cause `zulip-puppet-apply --force --noop` (which
is used as a pre-flight check during upgrades) to properly detect and
signal on more types of invalid puppet configurations.  In turn, this
will cause `upgrade-zulip` to not attempt to power through upgrades it
knows are destined to fail.
2023-05-12 17:59:14 -07:00
Alex Vandiver
d2ef4e85f8 webpack: Silence out-of-date warnings from caniuse browserslist. 2023-05-12 17:58:23 -07:00
Sahil Batra
ad27f38d93 invite: Add checkbox to select all default streams.
We now add a checkbox in "Steams they should join" to directly
select all default streams in the realm for the invite.
We hide the stream list if that option is selected.
2023-05-12 17:52:57 -07:00
Sahil Batra
f6f5697ccb invites: Allow users to invite without specifying any stream to join.
We now allow users to invite without specifying any stream to join.
In such cases, the user would join the default streams, if any, during
the process of account creation after accepting the invite.

It is also fine if there are no default streams and user isn't
subscribed to any stream initially.
2023-05-12 17:52:57 -07:00
Sahil Batra
f0d1f7370d invites: Do not add user to default streams if streams list is empty.
We do not add user to the default streams if the streams list passed
while sending the invite (both email and multi-use) was empty since
invite explicitly selected to not subscribe the user to default
streams.
2023-05-12 17:52:57 -07:00
Sahil Batra
a15bc8e1be test_signup: Add test to verify stream subscriptions.
This commit adds test to verify whether the user was
subscribed to the streams selected when inviting them.
2023-05-12 17:52:57 -07:00
Alex Vandiver
ea27719e07 workers: Rewrite missedmessage_emails with a worker thread.
The previous implementation leaked database connections, as a new
thread (and thus a new thread-local database connection) was made for
each timer execution.  While these connections were relatively
lightweight in Python, they also incur memory overhead in the
PostgreSQL server itself.  The logic for managing the timer was also
unclear, and the unavoidable deadlock in the stopping logic was rather
unfortunate.

Rewrite with one explicit worker thread which handles the delayed
message sending.  The RabbitMQ consumer creates the database rows, and
notifies the worker to start its 5s timeout.  Because it is controlled
by a condition variable, it does not hold the lock while waiting, and
can be notified to exit.

(cherry picked from commit 3efc0c9af3)
2023-04-18 15:47:51 -07:00
Alex Vandiver
99047e5a0c requirements: Add time-machine for time mocking.
This was in main as 50a2a54393.
2023-04-18 15:47:51 -07:00
Anders Kaseorg
e99240e4e7 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit a881918a05)
2023-04-06 09:30:23 -07:00
Anders Kaseorg
f290c4cb8f codespell: Fix newly found typos.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 2ce8357009)
2023-04-06 09:30:23 -07:00
Zixuan James Li
aa791f6381 cache: Use QuerySetAny for isinstance check.
Previously, `QuerySet` does not support isinstance check since it is
defined to be generic in django-stubs. In a recent update, such check is
possible by using `QuerySetAny`, a non-generic alias of `QuerySet`.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
(cherry picked from commit 24f24d236d)
2023-04-06 09:30:23 -07:00
Anders Kaseorg
042cd05b6c Fix typos caught by typos.
https://github.com/crate-ci/typos

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit bd884c88ed)
2023-04-06 09:30:23 -07:00
Anders Kaseorg
da1296e7e7 setup-apt-repo: Fix GPG check of groonga-apt-source-*.deb.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 54b08ee30b)
2023-04-05 16:08:11 -07:00
Anders Kaseorg
315f62610a requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 087660a87e)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
d85022ca17 html_diff: Fix lxml import.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 11e94c4bb7)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
cdd222b8f6 python: Import F, Q, QuerySet from their canonical module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit d3efd4c095)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
51d2dc68c8 populate_db: Import timedelta from its canonical module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit aa577a554b)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
94a3f2cf1c migrations: Import BaseDatabaseSchemaEditor from its canonical module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 0628c3cac8)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
fe27f8eb40 upload: Replace deprecated PIL.PngImagePlugin.APNG_DISPOSE_OP_NONE.
https://pillow.readthedocs.io/en/stable/deprecations.html#constants

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit f90a41bab0)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
961be78940 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 81a7c7502f)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
1709d707d2 exceptions: Accept lazy translation as JsonableError argument.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit b85cb1e700)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
08b30e95b4 readthedocs: Add a configuration file.
This overrides the settings in the web interface, and enables much
more flexible configuration of the build environment (which previously
defaulted to Python 3.7).

https://docs.readthedocs.io/en/stable/config-file/v2.html

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit b4ee94e758)
2023-04-05 16:07:58 -07:00
Anders Kaseorg
7a34e9a3fd black: Reformat with Black 23.
Black 23 enforces some slightly more specific rules about empty line
counts and redundant parenthesis removal, but the result is still
compatible with Black 22.

(This does not actually upgrade our Python environment to Black 23
yet.)

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit df001db1a9)
2023-04-05 16:07:58 -07:00
Aman Agrawal
25609fb675 people: Add function get participants from user_ids_string.
This implements the TODO in recent_senders.
2023-04-05 15:47:32 -07:00
Aman Agrawal
66b593e505 recent_senders: Fix twice sent user ids in PM to self case.
This caused double user avatar to appear in recent conversations
for when showing user PM to self.
2023-04-05 15:47:32 -07:00
Josh Klar
f62b55a5cf ci: Only report failures to CZO on branch pushes.
Targeted fix for regression introduced in #23719 wherein failure reports
were attempted for all CI failures, including those from forked pull
requests, which don't have access to Actions Secrets. Since undefined
Secrets are empty strings at interpolation time [^1], the underlying
`send-message` Action was being called with no API Key, causing a
failure in the failure handler.

This fix is, per discussion in both a comment on #23719 and later on CZO
[^2], prefered to restoring the prior guard against ZULIP_BOT_KEY being
an empty string that had been in the shell script as it is more explicit
in its intent.

[^1]: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-secrets

[^2]: https://chat.zulip.org/#narrow/stream/43-automated-testing/topic/all.20branches.20failing/near/1475246

(cherry picked from commit a67ecc0f36)
2023-04-05 14:52:34 -07:00
Anders Kaseorg
00829867d7 Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit d1bb100a2d)
2023-04-05 12:48:58 -07:00
Anders Kaseorg
2e39466575 migrations: Switch message_model type to Any.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit fd617b24f2)
2023-04-05 12:48:58 -07:00
Anders Kaseorg
e7e1756886 remote_server: Check for missing ZULIP_ORG_ID, ZULIP_ORG_KEY.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit a98ecee278)
2023-04-05 12:48:58 -07:00
Aman Agrawal
1563c85573 streams_list: Don't zoom out user when stream list rearranges.
Fixes #23588

When a new message arrives in an inactive stream, it will lead
to stream being marked as active from inactive which leads to
stream list being rearranged which zooms out the user since the
active stream is reset momentarily. To avoid this, we delay the
stream list redraw until user zooms out and only update the topics
list.
2023-04-02 23:18:45 -07:00
Aman Agrawal
03b55a3d03 left_sidebar: Highlight inactive streams when narrowed to.
Having active streams greyed out can be confusing to the user. This
is especially useful when the app is still fetching messages on
a reload and the active stream has no messages and is thus marked
as `inactive`.
2023-04-02 23:18:45 -07:00
Chris Bobbe
c429fe19b7 docs: Update mobile/desktop apps' compatability threshold to 4.0, from 3.0
Zulip Server 4.0 is now 22 months old, which is more than 18 months.
Per the general policy in the "Client apps" section below, that
means it's time to drop support for older versions.

We released 5.0 near the end of 2022-03, so near the end of 2023-09
we can update this further to say 5.0.
2023-04-02 23:15:47 -07:00
Alex Vandiver
0172200baa management: Add a command to send initial welcome bot messages. 2023-04-02 23:05:01 -07:00
Alex Vandiver
628464ad98 queue: Allow enabling TLS for the RabbitMQ connection.
This allows using cloud-based RabbitMQ services like AmazonMQ.

Fixes: #24699.
(cherry picked from commit bf532de8bb)
2023-03-24 20:06:52 +00:00
Alex Vandiver
73fef4152f puppet: Allow choice of timesync tool. 2023-03-02 13:43:19 -08:00
Anders Kaseorg
fbb58903c6 mypy: Link issue for missing py.typed in aioapns.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
b47f014ab5 ruff: Enable some new errors.
PGH001 forbids eval().

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
17b14f5233 ruff: Fix PLR0402 Consider using from … import.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
2296629c17 ruff: Fix PLR1701 Consider merging these isinstance calls.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
0255fc9ead ruff: Fix B006 Do not use mutable data structures for argument defaults.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
a24aee2679 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00