Zulip 服务器和 Web 应用程序。开源团队聊天可帮助团队保持高效和专注。
Go to file
Tim Abbott d149af936d models: Rework Attachment.is_*_public to be a cache.
Previously, Attachment.is_realm_public and its cousin,
Attachment.is_web_public, were properties that began as False and
transitioned to True only when a message containing a link to the
attachment was sent to the appropriate class of stream, or such a link
was added as part of editing a message.

This pattern meant that neither field was updated in situations where
the access permissions for a message changed:

* Moving the message to a different stream.
* Changing the permissions for a stream containing links to the message.

This correctness issue has limited security impact, because uploaded
files are secured both by a random URL and by these access checks.

To fix this, we reformulate these fields as a cache, with code paths
that change the permissions affecting an attachment responsible for
setting these values to the `None` (uncached) state. We prefer setting
this `None` state over computing the correct permissions, because the
correct post-edit permissions are a function of all messages
containing the attachment, and we don't want to be responsible for
fetching all of those messages in the edit code paths.
2022-03-24 10:49:59 -07:00
.github ci: Test upgrades from 4.11. 2022-03-15 16:00:02 -07:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
.vscode vscode: Recommend remote development extension. 2021-11-03 16:03:46 -07:00
analytics streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
confirmation invite: Add backend support for "Never expires" option. 2022-02-24 16:32:19 -08:00
corporate requirements: Upgrade Python requirements. 2022-03-16 10:43:23 -07:00
docs uploads: Skip the outgoing proxy if S3_KEY is unset. 2022-03-24 10:21:35 -07:00
frontend_tests narrow: Fix messages being cached without flags set. 2022-03-24 08:10:14 -07:00
locale i18n: Update translation data from Transifex. 2022-03-23 23:41:11 -07:00
pgroonga pgroonga: Remove unnecessary code from first migration. 2021-05-28 09:42:33 -07:00
puppet puppet: Build wal-g from source for aarch64. 2022-03-22 15:02:35 -07:00
requirements requirements: Upgrade Python requirements. 2022-03-16 10:43:23 -07:00
scripts puppet: Build wal-g from source for aarch64. 2022-03-22 15:02:35 -07:00
static narrow: Fix messages being cached without flags set. 2022-03-24 08:10:14 -07:00
stubs/taint mypy: Add types-stripe. 2022-01-23 22:47:30 -08:00
templates help_docs: Update documentation about moving content. 2022-03-23 23:46:22 -07:00
tools tools: Add tool to count contributions across all major repositories. 2022-03-23 14:20:30 -07:00
var/puppeteer puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
zerver models: Rework Attachment.is_*_public to be a cache. 2022-03-24 10:49:59 -07:00
zilencer devtools: Remove development-only user creation management commands. 2022-03-21 12:05:59 -07:00
zproject uploads: Skip the outgoing proxy if S3_KEY is unset. 2022-03-24 10:21:35 -07:00
.browserslistrc browserslist: Stop transpiling for pre-ES2019 browsers. 2022-03-17 15:24:46 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.codespellignore CI: Add Codespell linter. 2021-10-27 16:49:30 -07:00
.editorconfig editorconfig: Restore indent_size = 2 for Markdown. 2021-08-20 23:14:37 -07:00
.eslintignore requirements: Remove Thumbor. 2021-05-06 20:07:32 -07:00
.eslintrc.json js: Fix no-jquery/no-parse-html-literal. 2022-03-17 13:16:34 -07:00
.gitattributes .gitattributes: Mark *.bmp, *.bson, *.mp3, *.pdf as binary. 2022-02-07 18:51:06 -08:00
.gitignore editor: Add .vscode/extensions.json file. 2021-10-29 15:47:44 -07:00
.gitlint lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
.mailmap mailmap: Add a comment explaining this file. 2022-03-23 14:12:43 -07:00
.npmignore Add proxy notes to new README.dev.md troubleshooting section. 2016-03-29 21:54:05 -07:00
.prettierignore prettier: Exclude backend-processed Markdown files. 2021-08-20 23:14:37 -07:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
babel.config.js browserslist: Stop transpiling for pre-ES2019 browsers. 2022-03-17 15:24:46 -07:00
CODE_OF_CONDUCT.md docs: Apply bullet style changes from Prettier. 2021-09-08 12:06:24 -07:00
CONTRIBUTING.md CONTRIBUTING: Advertise Git guide more clearly. 2022-03-01 22:18:42 -08:00
Dockerfile-postgresql docs: Standardize on PostgreSQL, not Postgres. 2020-10-28 11:55:16 -07:00
LICENSE license: Move copyright notice from LICENSE to NOTICE. 2021-02-05 09:28:12 -08:00
manage.py manage: Restore changepassword back to documented_commands. 2021-06-18 09:11:01 -07:00
NOTICE docs: Bump copyright year. 2021-02-05 09:28:15 -08:00
package.json password_quality: Switch zxcvbn to zxcvbn-ts. 2022-03-17 15:24:46 -07:00
postcss.config.js css: Replace "night-mode-block" with "dark-theme-block". 2021-11-26 22:03:29 -08:00
prettier.config.js prettier: Disable embedded language formatting for Markdown. 2021-08-20 23:14:37 -07:00
pyproject.toml mypy: Add types-beautifulsoup4. 2022-01-23 23:39:40 -08:00
README.md docs: Update README and installation guide. 2022-03-04 13:59:17 -08:00
SECURITY.md SECURITY.md: Reorder and make clearer how to subscribe to announcements. 2022-01-07 15:56:26 -08:00
setup.cfg pycodestyle: Improve comments documenting excludes. 2021-02-12 13:11:25 -08:00
stylelint.config.js yarn: Add package which allows creating css mixins. 2021-12-09 18:15:18 -08:00
tsconfig.json tsconfig: Enable noImplicitOverride. 2021-09-13 10:10:34 -07:00
Vagrantfile Remove Ubuntu 18.04 support. 2022-01-21 17:26:14 -08:00
version.py password_quality: Switch zxcvbn to zxcvbn-ts. 2022-03-17 15:24:46 -07:00
webpack.config.ts webpack: Remove LoaderOptionsPlugin. 2021-10-17 07:13:57 -07:00
yarn.lock password_quality: Switch zxcvbn to zxcvbn-ts. 2022-03-17 15:24:46 -07:00

Zulip overview

Zulip is an open-source team collaboration tool with unique topic-based threading that combines the best of email and chat to make remote work productive and delightful. Fortune 500 companies, leading open source projects, and thousands of other organizations use Zulip every day. Zulip is the only modern team chat app that is designed for both live and asynchronous conversations.

Zulip is built by a distributed community of developers from all around the world, with 74+ people who have each contributed 100+ commits. With over 1000 contributors merging over 500 commits a month, Zulip is the largest and fastest growing open source team chat project.

Come find us on the development community chat!

GitHub Actions build status coverage status Mypy coverage code style: black code style: prettier GitHub release docs Zulip chat Twitter GitHub Sponsors

Getting started

You may also be interested in reading our blog, and following us on Twitter and LinkedIn.

Zulip is distributed under the Apache 2.0 license.