zulip/zerver/lib
Alex Vandiver 608c787c52 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.
2023-01-18 15:42:40 -08:00
..
markdown markdown: Update max inline preview from 10 to 24. 2023-01-18 14:58:00 -05:00
upload uploads: Serve S3 uploads directly from nginx. 2023-01-09 18:23:58 -05:00
url_preview python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
webhooks ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
__init__.py
addressee.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
alert_words.py docs: Remove highlight parameters from links. 2022-02-16 13:15:39 -08:00
async_utils.py requirements: Upgrade Python requirements. 2022-05-03 10:10:06 -07:00
attachments.py
avatar.py avatars: Use a helper method, rather than use upload_backend directly. 2023-01-09 18:23:58 -05:00
avatar_hash.py settings: Make AVATAR_SALT mandatory. 2022-08-25 12:13:03 -07:00
bot_config.py bot_config: Placate mypy 0.930. 2021-12-28 09:31:55 -08:00
bot_lib.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
bot_storage.py
bulk_create.py markdown: Pass realm down into render_stream_description. 2022-11-01 08:20:47 -07:00
cache.py ruff: Fix PLW0602 Using global but no assignment is done. 2023-01-04 16:25:07 -08:00
cache_helpers.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
camo.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
ccache.py
compatibility.py ruff: Fix DTZ004 `datetime.datetime.utcfromtimestamp()`. 2023-01-04 16:25:07 -08:00
context_managers.py
create_user.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
data_types.py ruff: Fix PLR1701 Consider merging these isinstance calls. 2022-12-04 22:11:24 -08:00
db.py db: Use cursor_factory psycopg2 option. 2022-07-05 17:54:17 -07:00
debug.py python: Accept Optional[FrameType] in signal handlers. 2021-12-28 09:31:55 -08:00
dev_ldap_directory.py tests: Update tests to use example profile picture. 2022-10-31 14:36:54 -07:00
digest.py ruff: Fix C414 Unnecessary `list` call within `sorted()`. 2022-11-03 12:10:15 -07:00
display_recipient.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
domains.py
drafts.py typing: Remove ViewFuncT. 2022-08-22 15:46:16 -07:00
email_mirror.py email_mirror: Create attachments as the message sender. 2023-01-18 15:42:40 -08:00
email_mirror_helpers.py
email_notifications.py email-notifs: Use bracketed prefix to indicate a resolved topic. 2022-12-15 23:56:48 -08:00
email_validation.py email_validation: Restore case-insensitive domain validation. 2022-10-20 08:19:07 -07:00
emoji.py emoji: Add which emoji are supported to the /register call. 2022-08-26 17:58:31 -07:00
error_notify.py error_notify: Fix type narrowing of settings.ERROR_BOT. 2022-07-15 14:00:56 -07:00
event_schema.py ruff: Fix SIM118 Use `key in dict` instead of `key in dict.keys()`. 2023-01-04 16:25:07 -08:00
events.py python: Clean up janky URL matching code with urlsplit. 2023-01-18 17:25:46 -05:00
exceptions.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
export.py uploads: Add LOCAL_AVATARS_DIR / LOCAL_FILES_DIR computed settings. 2023-01-09 18:23:58 -05:00
external_accounts.py typing: Import StrPromise alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
fix_unreads.py python: Use format string for logging str(obj). 2022-10-10 08:32:29 -07:00
generate_test_data.py
github.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
home.py ruff: Fix SIM118 Use `key in dict` instead of `key in dict.keys()`. 2023-01-04 16:25:07 -08:00
hotspots.py ruff: Fix SIM118 Use `key in dict` instead of `key in dict.keys()`. 2023-01-04 16:25:07 -08:00
html_diff.py
html_to_text.py
i18n.py django: Use HttpRequest.headers. 2022-05-13 20:42:20 -07:00
import_realm.py uploads: Add LOCAL_AVATARS_DIR / LOCAL_FILES_DIR computed settings. 2023-01-09 18:23:58 -05:00
initial_password.py initial_password: Add explicit development environment assertion. 2022-03-21 12:05:59 -07:00
integrations.py ruff: Fix C417 Unnecessary `map` usage. 2022-11-03 12:10:15 -07:00
logging_util.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
management.py ruff: Fix ISC003 Explicitly concatenated string. 2023-01-04 16:25:07 -08:00
mdiff.py ci: Check that non-scripts aren’t marked executable. 2022-12-07 09:54:01 -08:00
mention.py markdown: Update characters allowed before @ and stream mentions. 2022-08-06 19:29:39 -07:00
message.py messages: Eliminate redundant realm fetch in has_message_access. 2023-01-10 15:27:55 -08:00
migrate.py
mobile_auth_otp.py
name_restrictions.py name_restrictions: Add your-org.zulipchat.com as a reserved name. 2022-05-17 14:58:31 -07:00
narrow.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
notes.py notes: Separate __notes_map per-subclass. 2022-10-10 08:42:13 -07:00
notification_data.py notifications: Move user group mentions helpers together. 2022-04-27 16:43:54 -07:00
onboarding.py ruff: Fix ISC003 Explicitly concatenated string. 2023-01-04 16:25:07 -08:00
outgoing_http.py python: Replace requests.packages.urllib3 alias with urllib3. 2022-01-23 22:14:17 -08:00
outgoing_webhook.py outgoing_webhook: Ignore the exception on failure if the stream is gone. 2022-11-04 14:46:17 -07:00
presence.py user-presence: Refactor function names with "status" for clarity. 2022-09-23 12:27:54 -07:00
profile.py profile: Strengthen decorator types using ParamSpec. 2022-04-14 12:44:35 -07:00
push_notifications.py Fix typos caught by typos. 2023-01-03 11:09:50 -08:00
pysa.py
queue.py queue: Do test retries in tests. 2022-11-04 14:46:17 -07:00
rate_limiter.py ruff: Fix Q002 Single quote docstring found. 2023-01-04 16:25:07 -08:00
realm_description.py
realm_icon.py
realm_logo.py
recipient_users.py actions: Split out zerver.lib.recipient_users. 2022-04-14 17:14:30 -07:00
redis_utils.py
remote_server.py remote_server: Check for missing ZULIP_ORG_ID, ZULIP_ORG_KEY. 2023-01-04 11:08:56 -08:00
request.py ruff: Fix PIE807 Prefer `list()` over useless lambda. 2023-01-04 16:25:07 -08:00
response.py do_mark_all_as_read: Split up the work into batches. 2022-10-27 16:59:54 -07:00
rest.py uploads: Set X-Accel-Redirect manually, without using django-sendfile2. 2023-01-09 18:23:58 -05:00
retention.py ruff: Fix SIM118 Use `key in dict` instead of `key in dict.keys()`. 2023-01-04 16:25:07 -08:00
safe_session_cached_db.py session: Enforce that changes cannot happen in a transaction. 2022-03-15 13:52:15 -07:00
scim.py mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
scim_filter.py
send_email.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
server_initialization.py realms: Create default system user groups for internal realm. 2022-08-11 04:38:36 -07:00
sessions.py typing: Add none-checks for miscellaneous cases. 2022-05-31 09:43:55 -07:00
singleton_bmemcached.py cache: Instantiate only one BMemcached cache backend. 2022-05-02 17:41:49 -07:00
soft_deactivation.py soft_deactivation: Tighten function signatures with generic QuerySet. 2022-07-07 11:28:13 -07:00
sounds.py actions: Split out zerver.lib.sounds. 2022-04-14 14:26:40 -07:00
sqlalchemy_utils.py sqlalchemy_utils: Remove NonClosingPool.recreate override. 2022-02-10 11:59:41 -08:00
storage.py storage: Fix type annotation of content. 2022-07-27 13:46:13 -07:00
stream_color.py streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
stream_subscription.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
stream_topic.py stream_topic: Refactor user_ids_muting_topic. 2022-09-27 17:18:48 -07:00
stream_traffic.py streams: Extract stream_traffic library. 2022-03-14 18:01:36 -07:00
streams.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
string_validation.py email_mirror: Replace disallowed characters in incoming email subject. 2022-08-22 17:16:20 -07:00
subdomains.py subdomains: Fix realm=None case for is_static_or_current_realm_url. 2022-10-06 15:15:10 -07:00
subscription_info.py typing: Use django-stubs' type annotations for QuerySet. 2022-10-05 16:15:56 -07:00
templates.py api-docs: Move include markdown macro files for API documentation. 2022-12-08 12:58:11 -08:00
test_classes.py ruff: Fix ISC003 Explicitly concatenated string. 2023-01-04 16:25:07 -08:00
test_console_output.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_data.source.txt
test_fixtures.py ruff: Fix ANN204 missing return type annotation for __init__. 2022-11-16 09:29:11 -08:00
test_helpers.py test_helpers: Use a mock, rather than explicitly setting and unsetting. 2023-01-09 18:23:58 -05:00
test_runner.py avatars: Serve /user_avatars/ through Django, which offloads to nginx. 2023-01-09 18:23:58 -05:00
tex.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
thumbnail.py docs: Remove some outdated references to thumbnailing.md doc. 2022-07-12 17:44:24 -07:00
timeout.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
timestamp.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
timezone.py timezone: Improve tzdata parser’s compatibility with zic(8). 2022-09-20 16:58:31 -07:00
topic.py email-notifs: Use bracketed prefix to indicate a resolved topic. 2022-12-15 23:56:48 -08:00
transfer.py uploads: Add LOCAL_AVATARS_DIR / LOCAL_FILES_DIR computed settings. 2023-01-09 18:23:58 -05:00
types.py ruff: Fix PIE790 Unnecessary `pass` statement. 2023-01-04 16:25:07 -08:00
unminify.py
url_encoding.py url_encoding: Use user name instead of email in personal_narrow_url. 2022-10-28 09:47:43 -07:00
url_redirects.py recent-topics: Rename to "Recent conversations" in web-app and docs. 2022-10-21 10:28:19 -07:00
user_agent.py
user_counts.py actions: Split out zerver.lib.user_counts. 2022-04-14 17:14:30 -07:00
user_groups.py ruff: Fix SIM118 Use `key in dict` instead of `key in dict.keys()`. 2023-01-04 16:25:07 -08:00
user_message.py actions: Split out zerver.lib.user_message. 2022-04-14 17:14:30 -07:00
user_mutes.py
user_status.py user-status: Stop updating the UserStatus model for `away` updates. 2022-09-23 12:27:54 -07:00
user_topics.py user_topics: Refactor the construction loop for UserTopicDict. 2022-08-11 13:45:54 -07:00
users.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
utils.py
validator.py ruff: Fix DTZ007 `datetime.datetime.strptime()` without %z. 2023-01-04 16:25:07 -08:00
widget.py
zcommand.py actions: Split out zerver.actions.user_settings. 2022-04-14 17:14:34 -07:00
zephyr.py