Commit Graph

49312 Commits

Author SHA1 Message Date
Anders Kaseorg
931afb97b8 emoji: Import modules relative to ZULIP_PATH.
Newer mypy is less confused this way.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Anders Kaseorg
773f9af6a6 emoji: Remove old broken CSV import/export scripts.
These have been broken at least since commit
e331a758c3 (#12787), so clearly nobody
cares.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-03-02 13:43:19 -08:00
Alex Vandiver
dbc1d71a0d upgrade-zulip-stage-2: Abort upgrade if puppet will not run cleanly. 2023-03-02 13:43:19 -08:00
Alex Vandiver
e4a766965d zulip-puppet-apply: Exit status code 2 on puppet failure.
This allows us, when run with `--noop -f`, to differentiate between
"there are unapplied changes" and "there were puppet errors."
2023-03-02 13:43:19 -08:00
Alex Vandiver
9299fe65d2 upgrade-postgresql: Also upgrade postgresql-client.
The `pg_upgrade` tool uses `pg_dump` as an internal step, and verifies
that the version of `pg_upgrade` is the same exactly the same as the
version of the PostgreSQL server it is upgrading to.  A mismatch (even
in packaging versions) leads to it aborting:

```
/usr/lib/postgresql/14/bin/pg_upgrade -b /usr/lib/postgresql/13/bin -B /usr/lib/postgresql/14/bin -p 5432 -P 5435 -d /etc/postgresql/13/main -D /etc/postgresql/14/main --link
Finding the real data directory for the source cluster      ok
Finding the real data directory for the target cluster      ok

check for "/usr/lib/postgresql/14/bin/pg_dump" failed: incorrect version: found "pg_dump (PostgreSQL) 14.6 (Ubuntu 14.6-0ubuntu0.22.04.1)", expected "pg_dump (PostgreSQL) 14.6 (Ubuntu 14.6-1.pgdg22.04+1)"
Failure, exiting
```

Explicitly upgrade `postgresql-client` at the same time we upgrade
`postgresql` itself, so their versions match.

Fixes: #24192
2023-03-02 13:43:19 -08:00
Mateusz Mandera
6bf24a0643 docs: Document how LDAP email address changes work (manually).
We will hopefully be able to just this in #16208 to document what
users need to configure in order to do this manually, but the content
here will be useful for anyone who hasn't set that up regardless.
2023-03-02 13:43:19 -08:00
Tim Abbott
d14870b564 recent topics: Fix exception displaying PMs with 5+ senders.
The previous logic incorrectly tried to map elements of the list of
user IDs beyond 4 senders to their `.id` fields, which were undefined;
the correct thing to do is just use the list of user IDs that we
already have.
2023-03-02 13:43:19 -08:00
Tim Abbott
5a7ce8bdc7 install-node: Upgrade Node.js from 18.10.0 to 18.14.1.
Manual backport of the pure Node upgrade part of upgrade commits from main.
2023-03-02 13:43:19 -08:00
Alex Vandiver
d97c450798 docs: Document how to use SMTP without authentication.
This is the behaviour inherited from Django[^1].  While setting the
password to empty (`email_password = `) in
`/etc/zulip/zulip-secrets.conf` also would suffice, it's unclear what
the user would have been putting into `EMAIL_HOST_USER` in that
context.

Because we previously did not warn when `email_password` was not
present in `zulip-secrets.conf`, having the error message clarify the
correct configuration for disabling SMTP auth is important.

Fixes: #23938.

[^1]: https://docs.djangoproject.com/en/4.1/ref/settings/#std-setting-EMAIL_HOST_USER

(cherry picked from commit 015a10637b)
2023-02-27 20:02:06 +00:00
Alex Vandiver
dc4f140e85 rabbitmq: Add a RABBITMQ_PORT setting.
(cherry picked from commit 1492191b6d)
2023-02-27 17:07:05 +00:00
David Rosa
b5427709f8 contributor docs: Improve the first sentence in "Upgrade Zulip".
(cherry picked from commit a6abf959bb)
2023-01-27 21:56:51 -08:00
David Rosa
aa121267ac contributor docs: Rename "Customize Zulip" -> "Server configuration".
- Renames "Customize Zulip" to "Server configuration".
- Cross-links "Server configuration" with "System and deployment
configuration".

Fixes part of #23984.

(cherry picked from commit 538801c651)
2023-01-27 21:56:51 -08:00
David Rosa
cc8dead870 contributor docs: Rename "Upgrade or modify Zulip" -> "Upgrade Zulip".
Fixes part of #23984.

(cherry picked from commit 08e9686cd2)
2023-01-27 21:56:51 -08:00
David Rosa
932af1ed2d contributor docs: Migrate "Modify Zulip" to its own page.
Splits /production/upgrade-or-modify.md to improve the organization
of production documentation.

Fixes #23984.

(cherry picked from commit af39a1a554)
2023-01-27 21:56:51 -08:00
Alex Vandiver
aea01b51d4 release: Add tests for spelling and links in changelog.
(cherry picked from commit ad8041253c)
2023-01-24 16:46:17 -05:00
Mateusz Mandera
b67785c289 do: Install pynacl in the oneclick job.
This is now a required dependency.

(cherry picked from commit 9aacf76f0d)
2023-01-24 16:45:40 -05:00
Alex Vandiver
8bc6ad7a46 email_mirror: Create attachments as the message sender.
When the email mirror gateway is sending messages "as" a user (as
triggered by having access to the missed-message email address),
attachments were still created as the Email Gateway bot.  Since the
sender (the end-user) was not the owner of those attachments (the
gateway bot), nor were they referenced yet anywhere, this resulted in
the attachments being "orphaned" and not allowed to be accessed by
anyone -- despite the attachment links being embedded in the message.
This was accompanied by the error:

```
WARN [] User 12345 tried to share upload 123/3LkSA4OcoG6OpAknS2I0SFAQ/example.jpf in message 123456, but lacks permission
INFO [zerver.lib.email_mirror] Successfully processed email from user 12345 to example-stream
```

We solve this by creating attachment objects as the users the message
will be sent from.

(cherry picked from commit 608c787c52)
2023-01-24 16:44:29 -05:00
Alex Vandiver
d97952bc7d changelog: Tweak wording to clarify impact to Safari.
(cherry picked from commit 25c9fcdb4e)
2023-01-23 15:07:35 -05:00
Alex Vandiver
312e81809f changelog: Fix the link from .html# to .md#. 2023-01-23 18:57:28 +00:00
Alex Vandiver
87ab3e73ca version: Update version after 6.1 release. 2023-01-23 18:51:11 +00:00
Alex Vandiver
8be460631b Release Zulip Server 6.1. 6.1 2023-01-23 18:32:20 +00:00
Alex Vandiver
cfae101805 docs: Mention probably needing to allow port 22 for SSH access.
(cherry picked from commit e19d4e5e0a)
2023-01-20 15:59:21 -05:00
Josh Klar
15aea7f6f2 tools: Reimplement CI failure script without using CircleCI endpoint.
Using curl to POST to the CircleCI workflow endpoint on CZO:

- Doesn't work on zulip/zulip@main (CZO runs a revert)
- Sets a bad example for other orgs
- Robs us of an opportunity to dogfood our own zulip/github-actions-zulip

Refactor the Actions workflows in this repo to report failure states
using the Zulip Action, and reimplement the related helper scripts in
Python, since they'd previously mostly shelled out to Python anyway.

(cherry picked from commit 3a0620a40c)
2023-01-19 10:51:58 -08:00
Josh Klar
041ee5ed42 invites: Validation error instead of DB exception on overflowed SMALLINT.
If `invite_as` is passed as a number outside the range of a PostgreSQL
`SMALLINT` field, the database throws an exception. Move this exception
to the glass as a validation error to allow better client-side error
handling and reduce database round-trips.

(cherry picked from commit ebc6ab4744)
2023-01-19 10:41:23 -08:00
Josh Klar
46966957ac invites: Use check_int_in to validate invite_as.
(cherry picked from commit ea9b05d88a)
2023-01-19 10:41:11 -08:00
Josh Klar
82aac9e113 message_list_view: Use translated form of "at" in timestamp tooltip.
The English word "at" was manually appended to the string output of
datetime-related functions to generate the string shown in the tooltip
when hovering over the timestamp of a message. Use the translated form
"{date} at {time}" instead, as found elsewhere in the codebase.

(cherry picked from commit 465d0b2710)
2023-01-19 10:39:54 -08:00
Zixuan James Li
83bd34c93c decorator: Do not send HEAD response with non-empty body.
An HTTP HEAD response with a non-empty message body is not compliant
with the standard.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
(cherry picked from commit 33716f6156)
2023-01-19 11:05:04 -05:00
Zixuan James Li
0484d38e5f intercom: Return success on HEAD requests.
Intercom sends a HEAD request to validate the webhook URL on their side,
which was not expected in the previous implementation.
This fixes the problem that we send out a confusing error message for it.

Fixes #23912.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
(cherry picked from commit 1e36d79b83)
2023-01-19 11:05:02 -05:00
Alya Abbott
edfdcdc6e2 docs: Clarify --email installation option.
(cherry picked from commit 358a0dda5b)
2023-01-19 11:03:20 -05:00
Alex Vandiver
16f119b076 create-database: Hide harmless "non-existant database" warnings.
During installation on a new host, `create-database` attempts to
verify that there isn't a bunch of data already in the database which
is it about to drop and recreate.  In the most common case, this
statement emits a scary-looking warning, since the database does not
exist yet:

```
+ /home/zulip/deployments/current/scripts/setup/create-database
+ POSTGRES_USER=postgres
++ crudini --get /etc/zulip/zulip.conf postgresql database_name
++ echo zulip
+ DATABASE_NAME=zulip
++ crudini --get /etc/zulip/zulip.conf postgresql database_user
++ echo zulip
+ DATABASE_USER=zulip
++ cd /
++ su postgres -c 'psql -v ON_ERROR_STOP=1 -Atc '\''SELECT COUNT(*) FROM zulip.zerver_message;'\'' zulip'
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  database "zulip" does not exist
```

Because we are attempting to gracefully handle the case where the
database does not exist yet, we also continue (and drop the database)
in other, less expected cases -- for instance, if database contains a
schema we do not expect.

Explicitly check for the database existence first, and once we verify
that, allow any further failures in the `SELECT COUNT(*)` to abort
`create-database`.  This serves the dual purpose of hiding the "FATAL"
error for the common case when the database does not exist, as well as
preventing dropping the database if anything else goes awry.

(cherry picked from commit a1151aef8b)
2023-01-19 11:02:25 -05:00
Anders Kaseorg
047be276e9 styles: Delete useless rules for stream and topic names.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit b0c1b2c37f)
2023-01-19 11:01:05 -05:00
Anders Kaseorg
0a225401ed styles: Don’t clip tall characters in stream and topic names.
Fixes #23867.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 34306ba1f3)
2023-01-19 11:01:05 -05:00
Josh Klar
efd1978294 tests/i18n: Reflect Serbian translation update from Transifex. 2023-01-18 13:09:27 -08:00
Josh Klar
7a9b09eea7 i18n: Sync latest 6.x branch translations from Transifex. 2023-01-18 13:09:27 -08:00
Josh Klar
23ed3251ee i18n: Unescape Unicode sequences in JSON.
This greatly improves the readability of the diffs and in-codebase
translation strings over using ASCII sequences for unicode in the JSON.

We've previously noticed [^1] some JSON translation files ending up with
escaped Unicode sequences on disk, which Transifex indicates is expected
behavior [^2], though it is sometimes fixed by `manage.py
compilemessages` [^3]. Further, as noted in #23932 [^4], some JSON
translation files include HTML-escaped entities like quotation marks.

This script will ingest valid JSON files and output them as proper UTF-8
files with appropriately unescaped (unless otherwise necessary, like
double quotes being backslash-escaped) sequences, except when the key
itself contains HTML escape sequences (as it's presumed the value of
such entries must be pre-escaped before being passed to consumers).

[^1]: https://chat.zulip.org/#narrow/stream/58-translation/topic/Transifex.20client/near/1479205

[^2]: https://chat.zulip.org/#narrow/stream/58-translation/topic/an.20email.20for.20Transifex.20support/near/1481287

[^3]: https://chat.zulip.org/#narrow/stream/58-translation/topic/an.20email.20for.20Transifex.20support/near/1481908

[^4]: Which is not end-to-end fixed yet by this commit: that will
require a new release of Zulip Server.

gitlint-ignore: B1, title-trailing-punctuation, body-min-length, body-is-missing
2023-01-18 13:09:27 -08:00
Alex Vandiver
c57d885680 puppet: Go's website is officially go.dev, not golang.org.
(cherry picked from commit 8ba51f90e6)
2023-01-04 17:34:35 -05:00
evykassirer
ed930f2e7f emoji: Remove variation selector when generating emoji.
Fixes #23625.

The U+FE0F character was appearing in the data supplied by
emoji-datasource-google, but isn't in the CLDR data. By
removing that variation selector character, all remaining
emoji (that were previously marked as "not found in custom
emoji name maps, but also not found in CLDR data. Skipping.")
are now supported.
2023-01-03 11:33:37 -08:00
Mateusz Mandera
d9c1c25ef8 docs: Mention the reset_authentication_attempt_count command.
The authenticate_by_username limit of 5 attempts per 30 minutes can get
annoying in some cases where the user really forgot their password and
should be allowed to keep trying with admin approvial - so we should
document the command that allows unblocking them.
2023-01-03 11:30:53 -08:00
Mateusz Mandera
c3e58ef5f8 rate_limit: Add comments documenting how each rate limit rule works.
This avoid the need for spelunking the code to figure out the details of
how/when the rule is applied.
2023-01-03 11:30:53 -08:00
Anders Kaseorg
ce6f0e806a rocketchat: Import timezone-aware datetimes.
The bson library creates naive datetime objects by default.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-01-03 11:29:50 -08:00
Anders Kaseorg
53238f0e8f realm_logo: Add fallback for MediaQueryList.addEventListener.
MediaQueryList.addEventListener is missing in Safari < 14:
https://caniuse.com/mdn-api_mediaquerylist_eventtarget_inheritance

Fixes #23915.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-01-03 11:28:40 -08:00
Anders Kaseorg
52d9c96ae9 dark_theme: Move color scheme classes from body to root element.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-01-03 11:28:31 -08:00
Josh Klar
7a918eab48 docs: Use API Tokens instead of raw creds for Transifex. 2023-01-03 11:26:26 -08:00
Josh Klar
1698bd8615 provision: Respect proxy settings when installing shellcheck+shfmt. 2023-01-03 11:26:26 -08:00
Josh Klar
dc569809ee provision: Replace transifex-client with new transifex-cli.
transifex-client went EOL on November 30, 2022, replaced by
transifex/cli [^1].

Swap this in-place, since per the upstream README [^2]:

> The current version of the client maintains backwards compatibility
> for the tx push and tx pull commands. So, if you have a CI setup that
> uses them, you should not have to change anything.

As the mobile team found out, this is a partial truth if one previously
used some of the more advanced CLI flags, but all workflows referenced
in tools/ and docs/ use forwards-compatible flags to the new version.

[^1]: https://github.com/transifex/transifex-client/

[^2]: a0f28a1cf3/README.md
2023-01-03 11:26:26 -08:00
Alex Vandiver
f28eced391 upgrade-postgresql: Ensure the new PostgreSQL is running.
If a previous attempt at an upgrade failed for some reason, the new
PostgreSQL may be installed, and the conversion will succeed, but the
new PostgreSQL daemon will not be running (Puppet does not force it to
start).  This causes the upgrade to fail when analyzing statistics,
since the daemon isn't running.

Explicitly start the new PostgreSQL; this does nothing in most cases,
but will provider better resiliency when recovering from previous
partial upgrades.
2023-01-03 11:17:41 -08:00
Sahil Batra
d2be34d5aa settings: Fix bug when changing stream specific notification setting.
The class for "tr" element was changed in c22de76af7, so
get_stream_id function was not able to get the correct stream-id
from the target element. This commit fixes get_stream_edit
function to also check for closest ".stream-notifications-row"
ancestor element and thus it returns the correct stream id.
2023-01-03 11:17:32 -08:00
SameepAher
d64b536e11 compose: Fix overflow in expanded compose box preview mode.
Fixed a bug in expanded compose box preview mode,
which lead to buttons at the bottom of the compose box
being pushed off the screen and text overflowing.

Manually tested for different screen sizes.

Fixes: #23493.
2022-12-30 17:57:43 -08:00
Alex Vandiver
4bd092b98f apps: Fix redirect from /apps -> https://zulip.com/apps/.
When this code was moved from being in zerver in 21a2fd482e, it kept
the `if ZILENCER_ENABLED` blocks.  Since ZILENCER and CORPORATE are
generally either both on or both off, the if statement became
mostly-unnecessary.

However, because tests cannot easily remove elements from
INSTALLED_APPS and re-determine URL resolution, we switch to checking
`if CORPORATE_ENABLED` as a guard, and leave these in-place.

The other side effect of this is that with e54ded49c4, most Zulip
deployments started to 404 requests for `/apps` instead of redirecting
them to `https://zulip.com/apps/` since they no longer had any path
configured for `/apps`.  Unfortunately, this URL is in widespread use
in the app (e.g. in links from the Welcome Bot), so we should ensure
that it does successfully redirect.

Add the `/apps` path to `zerver`, but only if not CORPORATE_ENABLED,
so the URLs do not overlap.
2022-12-30 17:48:22 -08:00
Alex Vandiver
011aa62dc9 corporate: CORPORATE_ENABLED is always true in corporate.views.portico.
This is a holdover from when the portico was moved from zerver in
21a2fd482e.
2022-12-30 17:48:21 -08:00