Commit Graph

52000 Commits

Author SHA1 Message Date
Alex Vandiver
ebed224395 i18n: Update translation data from Transifex. 2023-07-03 20:40:46 +00:00
Alex Vandiver
738429cf77 middleware: Detect reverse proxy misconfigurations.
Combine nginx and Django middlware to stop putting misleading warnings
about `CSRF_TRUSTED_ORIGINS` when the issue is untrusted proxies.
This attempts to, in the error logs, diagnose and suggest next steps
to fix common proxy misconfigurations.

See also #24599 and zulip/docker-zulip#403.

(cherry picked from commit 8a77cca341)
2023-07-03 18:52:30 +00:00
Alex Vandiver
2f91471e98 zproject: Prevent having exactly 17/18 middlewares, for Python 3.11 bug.
Having exactly 17 or 18 middlewares, on Python 3.11.0 and above,
causes python to segfault when running tests with coverage; see
https://github.com/python/cpython/issues/106092

Work around this by adding one or two no-op middlewares if we would
hit those unlucky numbers.  We only add them in testing, since
coverage is a requirement to trigger it, and there is no reason to
burden production with additional wrapping.

(cherry picked from commit cf0b803d50)
2023-07-03 18:52:30 +00:00
Alex Vandiver
8f9807176e puppet: Remove loadbalancer configurations when they are unset.
(cherry picked from commit 671b708c4b)
2023-07-03 18:52:30 +00:00
Karl Stolley
217f5731fe stream_settings: Fix scroll at max-height.
Simplebar seems unaware of the `max-height: 1000px` on
`.subscriptions-container`, and therefore does not properly provide
a scrollbar when it's needed.

This commit adds a `max-height` to the stream Simplebar container,
ensuring that otherwise hidden content that Simplebar believes to
be visible can be scrolled to.

Finally, rather than rely on magic numbers or math done in comments,
this commit establishes CSS variables for all relevant modal-element
heights, doing the math inline using CSS calc().

Fixes #26107.

(cherry picked from commit 0c55fb7e89)
2023-07-03 18:51:58 +00:00
Karl Stolley
ca0fd7f797 bot_icon: Adjust bot-icon color for light and dark modes.
(cherry picked from commit a9bc5e94e7)
2023-07-03 18:51:37 +00:00
Alex Vandiver
da4c4f74f2 slack: Handle the special case of permissions denied on team.info call.
This is a follow-up to 4c8915c8e4, for
the case when the `team:read` permission is missing, which causes the
`team.info` call itself to fail.  The error message supplies
information about the provided and missing permissions -- but it also
still sends the `X-OAuth-Scopes` header which we normall read, so we can
use that as normal.

(cherry picked from commit 21aeb4a040)
2023-07-03 18:51:15 +00:00
Alex Vandiver
b2068222e0 pgroonga: Remove 'GRANT USAGE' statement again.
dc2726c814 removed these statements, but c8ec3dfcf6 accidentally
brought one back.  Remove it.

(cherry picked from commit f5540303ba)
2023-07-03 18:50:51 +00:00
Alex Vandiver
2dfc0463bd pgroonga: Run upgrade SQL when pgroonga package is updated.
Updating the pgroonga package is not sufficient to upgrade the
extension in PostgreSQL -- an `ALTER EXTENSION pgroonga UPDATE` must
explicitly be run[^1].  Failure to do so can lead to unexpected behavior,
including crashes of PostgreSQL.

Expand on the existing `pgroonga_setup.sql.applied` file, to track
which version of the PostgreSQL extension has been configured.  If the
file exists but is empty, we run `ALTER EXTENSION pgroonga UPDATE`
regardless -- if it is a no-op, it still succeeds with a `NOTICE`:

```
zulip=# ALTER EXTENSION pgroonga UPDATE;
NOTICE:  version "3.0.8" of extension "pgroonga" is already installed
ALTER EXTENSION
```

The simple `ALTER EXTENSION` is sufficient for the
backwards-compatible case[^1] -- which, for our usage, is every
upgrade since 0.9 -> 1.0.  Since version 1.0 was released in 2015,
before pgroonga support was added to Zulip in 2016, we can assume for
the moment that all pgroonga upgrades are backwards-compatible, and
not bother regenerating indexes.

Fixes: #25989.

[^1]: https://pgroonga.github.io/upgrade/

(cherry picked from commit c8ec3dfcf6)
2023-07-03 18:50:14 +00:00
Alex Vandiver
92c538c862 pgroonga: Remove now-unnecessary 'GRANT USAGE' statement.
This was only necessary for PGroonga 1.x, and the `pgroonga` schema
will most likely be removed at some point inthe future, which will
make this statement error out.

Drop the unnecessary statement.

(cherry picked from commit dc2726c814)
2023-07-03 18:50:14 +00:00
Lauryn Menard
2e03e1b6ee narrow: Mark as read in by_recipient based on case ("dm" or "stream").
In commit #25837, we added in a check for the user's mark as read
policy in the frontend for `by_topic` and `by_recipient` narrowing.
In that change, the assumption was that for both functions, it was
sufficient to check only for whether the user policy was to never
mark as read.

But because the `by_recipient` function may narrow to an interleaved
stream view, it is possible that message will be marked as read
when the user did not expect it to be (e.g. they marked all the
messages in a topic narrow as unread and then used the `S` key
shortcut to navigate back to the stream view) when they have
conversation views only as their mark as read  policy.

Here we move the check for the user's mark as read policy to be in
the two cases for `by_recipient` so that the mark as read behavior
here matches the user's setting.

(cherry picked from commit c5fbd3f085)
2023-07-03 18:49:31 +00:00
Daniil Fadeev
0ac81a1b77 compose_banner: Remove uploads banners when clearing compose box.
Upload banners were not cleared after closing compose box, which meant
that they would remain present in a paused state after compose was reopened.

https://chat.zulip.org/#narrow/stream/9-issues/topic/Incomplete.20Upload.20banner.20remains.20on.20closing.20compose/near/1582602
(cherry picked from commit daab1d4265)
2023-07-03 18:49:10 +00:00
Alex Vandiver
92e840efd1 puppet: Support IPv6 nameservers.
The syntax in `/etc/resolv.conf` does not include any brackets:
```
nameserver 2001:db8::a3
```

However, the format of the nginx `resolver` directive[^1] requires that
IPv6 addresses be enclosed in brackets.

Adjust the `resolver_ip` puppet function to surround any IPv6
addresses extracted from `/etc/resolv.conf` with square brackets, and
any addresses from `application_server.resolver` to gain brackets if
necessary.

Fixes: #26013.

[^1]: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

(cherry picked from commit 7ef05316d5)
2023-07-03 18:48:47 +00:00
Alex Vandiver
f1a8c402d1 convert_slack_data: Document "--token" more correctly.
(cherry picked from commit 38d1b3314a)
2023-07-03 18:48:08 +00:00
Alex Vandiver
8878fee6d6 slack: Provide more information when a Slack token fails to validate.
(cherry picked from commit 4c8915c8e4)
2023-07-03 18:48:08 +00:00
Alex Vandiver
783f3fac3b test_slack_importer: Switch to xoxb tokens, which is what we accept.
(cherry picked from commit 1b2ba4e09d)
2023-07-03 18:48:08 +00:00
Sahil Batra
5f397e5fa8 stream_settings: Fix height of select elements.
Previously, we used to have top and bottom paddings of 4px to
the select elements but it was removed in a208da9c4d to make
sure that text for the selected option is aligned properly.

All other select elements have height set to 30px, but the
select elements in stream settings page had height set to
"fit-content" and so they looked ugly after removing the
padding.

This commit sets the height of select elements in stream
settings to 30px.

(cherry picked from commit b119ff68c3)
2023-07-03 18:47:31 +00:00
Daniil Fadeev
8ff2684d61 compose: Fix keyboard indicator appearance in send shortcut.
(cherry picked from commit b13a85cdbf)
2023-07-03 18:46:41 +00:00
Daniil Fadeev
016f53711d compose: Fix keyboard indicator vertical alignment in send shortcut.
(cherry picked from commit 83b4fef060)
2023-07-03 18:46:41 +00:00
Alex Vandiver
e921c7dafe docs: Clarify that trust of X-Fowarded-Proto is also necessary.
Previously, `X-Forwarded-Proto` did not need to be set, and failure to
set `loadbalancer.ips` would merely result in bad IP-address
rate-limiting and incorrect access logs; after 0935d388f0, however,
failure to do either of those, if Zulip is deployed with `http_only`,
will lead to infinite redirect loops after login.  These are
accompanied by a misleading error, from Tornado, of:

    Forbidden (Origin checking failed - https://zulip.example.com does not match any trusted origins.): /json/events

This is most common with Docker deployments, where deployments use
another docker container, such as nginx or Traefik, to do SSL
termination.  See zulip/docker-zulip#403.

Update the documentation to reinforce that `loadbalancer.ips` also
controls trust of `X-Forwarded-Proto`, and that failure to set it will
cause the application to not function correctly.

(cherry picked from commit d46279c41e)
2023-07-03 18:45:54 +00:00
Alex Vandiver
9b950f9c6a send_email: Delete ScheduledEmail objects with no recipients.
9d97af6ebb addressed the one major source of inconsistent data which
would be solved by simply re-attempting the ScheduledEmail row.  Every
other instance that we have seen since then has been a corrupt or
modified database in some way, which does not self-resolve.  This
results in an endless stream of emails to the administrator, and no
forward progress.

Drop this to a warning, and make it remove the offending row.  This
ensures we make forward progress.

(cherry picked from commit 77c146b8b0)
2023-07-03 18:44:33 +00:00
Alex Vandiver
aab515feb9 version: Update version after 7.1 release. 2023-06-13 18:15:14 +00:00
Alex Vandiver
b178bb7c59 Release Zulip Server 7.1. 7.1 2023-06-13 17:59:16 +00:00
Alex Vandiver
8a783c448f i18n: Update translation data from Transifex. 2023-06-13 17:28:04 +00:00
Alya Abbott
f4f8d091a9 github: Configure templates for filing issues.
This PR creates templates for filing issues. The templates are
intentionally quite light-weight. Note that I'm specifically not using
forms for creating issues, as the UI for filling out such a form does
not include GitHub's helpful formatting buttons and preview mode.

Follow-up to #25998, pushed as a separate PR so that the original one can pass CI.

This PR creates templates for filing issues. The templates are
intentionally quite light-weight. Note that I'm specifically not using
forms for creating issues, as the UI for filling out such a form does
not include GitHub's helpful formatting buttons and preview mode.

A major goal is to guide users towards starting a CZO conversation
when that's more appropriate than filing a GitHub issue.

Note that the config makes it possible to create a blank issue, which
should be handy for:

* Issues filed by maintainers
* Issues for tracking follow-ups from merged PRs
* Probably some other situations

Because the blank issue option is easy to miss, it should probably be
documented somewhere, but I'm not sure where. We can perhaps start
with a note on CZO.

Relevant CZO threads:

https://chat.zulip.org/#narrow/stream/137-feedback/topic/issues.20link.20in.20description/near/1561110)
https://chat.zulip.org/#narrow/stream/2-general/topic/bug.20report.20management/near/1589141

Also provide external documentation links for situations where
filing an issue is not the best approach.

(cherry picked from commit 0adcc2a1df)
2023-06-13 11:48:50 -04:00
Alya Abbott
67157ec2b8 docs: Link to new guide on suggesting features and improvements.
(cherry picked from commit 03659004a9)
2023-06-13 11:48:50 -04:00
Alex Vandiver
4bf4c8a040 upgrade-postgresql: Only upgrade to a supported version.
(cherry picked from commit 875502b2e1)
2023-06-13 11:48:50 -04:00
Alex Vandiver
08a844153c docs: Document supported versions of PostgreSQL.
Fixes: #25853.
(cherry picked from commit f4b20337a7)
2023-06-13 11:48:50 -04:00
Alya Abbott
69e04c20f9 docs: Add a guide on suggesting features and improvements.
Similar to the guide on reporting bugs.

(cherry picked from commit 9ee5a5a70e)
2023-06-13 11:48:50 -04:00
Alya Abbott
ec8d341cae docs: Link to new "Reporting bugs" guide.
(cherry picked from commit 9258acce14)
2023-06-13 11:48:50 -04:00
Alya Abbott
3ee59df091 docs: Improve instructions for reporting bugs.
- Create a dedicated "Reporting bugs" page to learly document
where and how bugs should be reported.
- Drop "Reporting issues" section from the Contributing guide.
- Delete "Bug report guidelines" page.

(cherry picked from commit 052a109ba4)
2023-06-13 11:48:50 -04:00
Alex Vandiver
dd940d2eac puppet: Read resolver from /etc/resolv.conf.
04cf68b45e make nginx responsible for downloading (and caching)
files from S3.  As noted in that commit, nginx implements its own
non-blocking DNS resolver, since the base syscall is blocking, so
requires an explicit nameserver configuration.  That commit used
127.0.0.53, which is provided by systemd-resolved, as the resolver.

However, that service may not always be enabled and running, and may
in fact not even be installed (e.g. on Docker).  Switch to parsing
`/etc/resolv.conf` and using the first-provided nameserver.  In many
deployments, this will still be `127.0.0.53`, but for others it will
provide a working DNS server which is external to the host.

In the event that a server is misconfigured and has no resolvers in
`/etc/resolv.conf`, it will error out:
```console
Error: Evaluation Error: Error while evaluating a Function Call, No nameservers found in /etc/resolv.conf!  Configure one by setting application_server.nameserver in /etc/zulip/zulip.conf (file: /home/zulip/deployments/current/puppet/zulip/manifests/app_frontend_base.pp, line: 76, column: 70) on node example.zulipdev.org
```

(cherry picked from commit bd217ad31b)
2023-06-12 21:12:50 +00:00
Tim Abbott
e3f0c28528 docs: Improve troubleshooting overview intro.
(cherry picked from commit 6ca5130cd8)
2023-06-12 20:09:13 +00:00
Alya Abbott
b44ee89245 docs: Clarify instructions for getting help with self-hosting.
(cherry picked from commit 582e88544c)
2023-06-12 20:09:13 +00:00
Alex Vandiver
ee2654c4ee uploads: Allow access to the /download/ variant anonymously.
This was mistakenly left off of b799ec32b0.

(cherry picked from commit fbb831ff3b)
2023-06-12 20:05:46 +00:00
Alex Vandiver
c12f8de80b test_helpers: Switch add/remove_ratelimit to a contextmanager.
Failing to remove all of the rules which were added causes action at a
distance with other tests.  The two methods were also only used by
test code, making their existence in zerver.lib.rate_limiter clearly
misplaced.

This fixes one instance of a mis-balanced add/remove, which caused
tests to start failing if run non-parallel and one more anonymous
request was added within a rate-limit-enabled block.

(cherry picked from commit 0dbe111ab3)
2023-06-12 20:05:46 +00:00
Sahil Batra
94437ab5be user_groups: Prevent cycles when adding subgroups for a user group.
The user group depedency graph should always be a DAG.
This commit adds code to make sure we keep the graph DAG
while adding subgroups to a user group.

Fixes #25913.
2023-06-12 16:04:18 -04:00
Zixuan James Li
a9a30ad5b4 user_groups: Make system groups creation atomic.
We want to make sure that the system groups, once created, will always
have the GroupGroupMemberships fully set up.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2023-06-12 16:04:18 -04:00
Alex Vandiver
e9f0ef4c15 docs: Clarify access to port 25 is needed for local email delivery. 2023-06-12 16:04:18 -04:00
Alex Vandiver
2e16e27265 ui_init: Fix typo in error data. 2023-06-12 16:04:18 -04:00
Karl Stolley
f5e2a2a38f popovers: Reorganize Tippy onShow logic for stream popover.
These changes appear to correct the keyboard-navigation repro
from #25907, and it makes it possible for users without the
permission to create streams to exit the streams modal by
hitting Esc.

This reorganizes logic within the Tippy `onShow` method to
ensure that nothing is set or called for those users without
stream-creation privileges.

These changes probably require broader testing to determine
whether the fix addresses only that specific reproducer, or
the broader problems #25907 addresses with malfunctioning
j, k, Esc, and Return keys (when Ctrl + Return to send is
enabled).

Fixes a part of #25907.
2023-06-12 16:04:18 -04:00
Alex Vandiver
5a177bff3a prod_settings_template: Document REALM_HOSTS configuration.
This was in docs/production/multiple-organizations.md, but not the
settings template.
2023-06-12 16:04:18 -04:00
Alex Vandiver
fabb5ffe94 upgrade-zulip: Verify postgresql.version against where data is stored.
This prevents installing a PostgreSQL server which matches
/etc/zulip/zulip.conf but which has no data and is not used by Django.
2023-06-12 16:04:18 -04:00
Alex Vandiver
5b4a673bbd upgrade-zulip: Set postgresql.version from running version, not a guess. 2023-06-12 16:04:18 -04:00
Alex Vandiver
afeb73e12a upgrade-zulip: Simplify PostgreSQL version check.
This is much simpler now that we do not support PostgreSQL 9.x.
2023-06-12 16:04:18 -04:00
Alex Vandiver
d5a39a6564 upgrade-postgresql: Prevent upgrades if /etc/zulip/zulip.conf is wrong.
If the `postgresql.version` in `/etc/zulip/zulip.conf` is out of date
or wrong, upgrading to the actual current version would drop your
production database without prompting.  While we do document taking a
Zulip backup (which includes a database backup) before running
`upgrade-postgresql`[^1], not everyone does so, with possibly
catastrophic consequences.

Do a true end-to-end check of the version in `/etc/zulip/zulip.conf`
by asking Django to query the database for its version, checking that
against the configured value, and aborting if there is any
disagreement.

[^1]: https://zulip.readthedocs.io/en/latest/production/upgrade.html#upgrading-postgresql
2023-06-12 16:04:18 -04:00
Alex Vandiver
a4b5ee41ea upgrade-postgresql: Prevent PostgreSQL downgrades. 2023-06-12 16:04:18 -04:00
Alex Vandiver
884a8d5628 upgrade-postgresql: Check for undefined variables. 2023-06-12 16:04:18 -04:00
Mateusz Mandera
8c9e521f57 migrations: Handle duplicate fk constraint in 0443.
It turns out that for some some deployments, there exists a second,
duplicate, foreign key constraint for user_profile_id. The logic below
would try to rename both to the same name, which would fail on the
second:

```
psycopg2.errors.DuplicateObject: constraint "zerver_userpresenceo_user_profile_id_d75366d6_fk_zerver_us" for relation "zerver_userpresence" already exists
```

Eliminate the duplicate constraint, rather than attempting to rename
it.  Also add a block, in case of future reuse of this pattern, which
caveats that this approach will not work in the presence of
explicitly-named indexes.  UserPresence happens to not have any, so
this technique is safe in this instance.

Co-authored-by: Alex Vandiver <alexmv@zulip.com>
2023-06-12 16:04:18 -04:00
Brijmohan Siyag
2f04875ad3 send_later: Wildcard mention throwing error on send later.
It was throwing error while schudiling a message having wildcard mention,
because the function `open_send_later_menu` was using param instance to track down
interval, but the parametere instance was not passed from when it was
called from warning banner action. This commit removes the instance
param as it is of no use, and uses a variable to track interval.
2023-06-12 16:04:18 -04:00