mirror of
https://github.com/zulip/zulip.git
synced 2025-10-29 11:03:54 +00:00
email_mirror: Check address usability in get_missed_message_address.
This commit is contained in:
committed by
Tim Abbott
parent
843c148c59
commit
ac8f4aaa93
@@ -105,16 +105,23 @@ def get_missed_message_token_from_address(address: str) -> str:
|
|||||||
|
|
||||||
return msg_string
|
return msg_string
|
||||||
|
|
||||||
def get_missed_message_address(address: str) -> MissedMessageEmailAddress:
|
def get_usable_missed_message_address(address: str) -> MissedMessageEmailAddress:
|
||||||
token = get_missed_message_token_from_address(address)
|
token = get_missed_message_token_from_address(address)
|
||||||
try:
|
try:
|
||||||
return MissedMessageEmailAddress.objects.select_related().get(
|
mm_address = MissedMessageEmailAddress.objects.select_related().get(
|
||||||
email_token=token,
|
email_token=token,
|
||||||
timestamp__gt=timezone_now() - timedelta(seconds=MissedMessageEmailAddress.EXPIRY_SECONDS)
|
timestamp__gt=timezone_now() - timedelta(seconds=MissedMessageEmailAddress.EXPIRY_SECONDS)
|
||||||
)
|
)
|
||||||
except MissedMessageEmailAddress.DoesNotExist:
|
except MissedMessageEmailAddress.DoesNotExist:
|
||||||
raise ZulipEmailForwardError("Missed message address expired or doesn't exist.")
|
raise ZulipEmailForwardError("Missed message address expired or doesn't exist.")
|
||||||
|
|
||||||
|
if not mm_address.is_usable():
|
||||||
|
# Technical, this also checks whether the event is expired,
|
||||||
|
# but that case is excluded by the logic above.
|
||||||
|
raise ZulipEmailForwardError("Missed message address out of uses.")
|
||||||
|
|
||||||
|
return mm_address
|
||||||
|
|
||||||
def create_missed_message_address(user_profile: UserProfile, message: Message) -> str:
|
def create_missed_message_address(user_profile: UserProfile, message: Message) -> str:
|
||||||
if settings.EMAIL_GATEWAY_PATTERN == '':
|
if settings.EMAIL_GATEWAY_PATTERN == '':
|
||||||
logger.warning("EMAIL_GATEWAY_PATTERN is an empty string, using "
|
logger.warning("EMAIL_GATEWAY_PATTERN is an empty string, using "
|
||||||
@@ -302,9 +309,7 @@ def process_stream_message(to: str, message: message.Message) -> None:
|
|||||||
stream.name, stream.realm.string_id))
|
stream.name, stream.realm.string_id))
|
||||||
|
|
||||||
def process_missed_message(to: str, message: message.Message) -> None:
|
def process_missed_message(to: str, message: message.Message) -> None:
|
||||||
mm_address = get_missed_message_address(to)
|
mm_address = get_usable_missed_message_address(to)
|
||||||
if not mm_address.is_usable():
|
|
||||||
raise ZulipEmailForwardError("Missed message address out of uses.")
|
|
||||||
mm_address.increment_times_used()
|
mm_address.increment_times_used()
|
||||||
|
|
||||||
user_profile = mm_address.user_profile
|
user_profile = mm_address.user_profile
|
||||||
@@ -371,9 +376,7 @@ def process_message(message: message.Message, rcpt_to: Optional[str]=None) -> No
|
|||||||
|
|
||||||
def validate_to_address(rcpt_to: str) -> None:
|
def validate_to_address(rcpt_to: str) -> None:
|
||||||
if is_missed_message_address(rcpt_to):
|
if is_missed_message_address(rcpt_to):
|
||||||
mm_address = get_missed_message_address(rcpt_to)
|
get_usable_missed_message_address(rcpt_to)
|
||||||
if not mm_address.is_usable():
|
|
||||||
raise ZulipEmailForwardError("Missed message address out of uses.")
|
|
||||||
else:
|
else:
|
||||||
decode_stream_email_address(rcpt_to)
|
decode_stream_email_address(rcpt_to)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user