From eed90f3ee670377b3b10fe5211770c75cd50f7c1 Mon Sep 17 00:00:00 2001 From: ekahn27 <50031375+ekahn27@users.noreply.github.com> Date: Thu, 15 Aug 2019 19:27:11 -0400 Subject: [PATCH 1/4] Update mms_pdu.py --- messaging/mms/mms_pdu.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/messaging/mms/mms_pdu.py b/messaging/mms/mms_pdu.py index ed44c46..39aa7e9 100644 --- a/messaging/mms/mms_pdu.py +++ b/messaging/mms/mms_pdu.py @@ -994,3 +994,37 @@ def encode_status_value(status_value): # Return an unrecognised state if it couldn't be decoded return [status_values.get(status_value, 'Unrecognised')] + + @staticmethod + def encode_expiry_value(expiry_value): + """ + Encodes the expiry value for an MMS message using a relative token + (delta time), not an absolute token (fixed date and time) + + encoding: [(total # of octets), (0x81), (# of octets in expiry value), (expiry value)] + + Param: expiry_value + Precondition: expiry_value must be an base 10 integer representing the number + of seconds until the MMSC should delete an unaccepted MMS message + + Returns: Encoded expiry value + rtype: list of ints + """ + assert type(expiry_value) == int + + encoded_expiry_value = [] + relativeToken = 129 + hexValue = hex(expiry_value)[2:] + length = len(hexValue) + + for x in range(length, 0, -2): + if x-2 < 0: + encoded_expiry_value.insert(0, int(hexValue[:x], 16)) + else: + encoded_expiry_value.insert(0, int(hexValue[x-2:x], 16)) + + encoded_expiry_value.insert(0, len(encoded_expiry_value)) + encoded_expiry_value.insert(0, relativeToken) + encoded_expiry_value.insert(0, len(encoded_expiry_value)) + + return encoded_expiry_value From 457787e815884818052cab777f7bc7f7b8c99540 Mon Sep 17 00:00:00 2001 From: ekahn27 <50031375+ekahn27@users.noreply.github.com> Date: Thu, 15 Aug 2019 19:29:44 -0400 Subject: [PATCH 2/4] Update message.py --- messaging/mms/message.py | 1 + 1 file changed, 1 insertion(+) diff --git a/messaging/mms/message.py b/messaging/mms/message.py index 6cff8a0..6ec65c9 100644 --- a/messaging/mms/message.py +++ b/messaging/mms/message.py @@ -36,6 +36,7 @@ def __init__(self): 'Message-Type': 'm-send-req', 'Transaction-Id': '1234', 'MMS-Version': '1.0', + 'To': [], 'Content-Type': ('application/vnd.wap.multipart.mixed', {}), } self.width = 176 From 2bb1d0bab6013ae353496ad3816e6a3f52efd697 Mon Sep 17 00:00:00 2001 From: Eric Kahn Date: Fri, 16 Aug 2019 11:20:35 -0400 Subject: [PATCH 3/4] Added List for To header --- messaging/mms/mms_pdu.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/messaging/mms/mms_pdu.py b/messaging/mms/mms_pdu.py index 39aa7e9..9348c9e 100644 --- a/messaging/mms/mms_pdu.py +++ b/messaging/mms/mms_pdu.py @@ -691,8 +691,13 @@ def encode_message_header(self): # -- this needs to be added last, according [2] and [4] for hdr in headers_to_encode: if hdr != 'Content-Type': - message_header.extend( - MMSEncoder.encode_header(hdr, headers_to_encode[hdr])) + if hdr == 'To': + for client in range(0, len(headers_to_encode[hdr])): + message_header.extend( + MMSEncoder.encode_header(hdr, headers_to_encode[hdr][client])) + else: + message_header.extend( + MMSEncoder.encode_header(hdr, headers_to_encode[hdr])) # Ok, now only "Content-type" should be left content_type, ct_parameters = headers_to_encode['Content-Type'] From 9b31f36ea8634ae5ed1fc38ead0afb59c63ad61d Mon Sep 17 00:00:00 2001 From: Eric Kahn Date: Fri, 16 Aug 2019 11:40:16 -0400 Subject: [PATCH 4/4] fixed typo --- messaging/mms/mms_pdu.py | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/messaging/mms/mms_pdu.py b/messaging/mms/mms_pdu.py index 9348c9e..9a97669 100644 --- a/messaging/mms/mms_pdu.py +++ b/messaging/mms/mms_pdu.py @@ -999,37 +999,3 @@ def encode_status_value(status_value): # Return an unrecognised state if it couldn't be decoded return [status_values.get(status_value, 'Unrecognised')] - - @staticmethod - def encode_expiry_value(expiry_value): - """ - Encodes the expiry value for an MMS message using a relative token - (delta time), not an absolute token (fixed date and time) - - encoding: [(total # of octets), (0x81), (# of octets in expiry value), (expiry value)] - - Param: expiry_value - Precondition: expiry_value must be an base 10 integer representing the number - of seconds until the MMSC should delete an unaccepted MMS message - - Returns: Encoded expiry value - rtype: list of ints - """ - assert type(expiry_value) == int - - encoded_expiry_value = [] - relativeToken = 129 - hexValue = hex(expiry_value)[2:] - length = len(hexValue) - - for x in range(length, 0, -2): - if x-2 < 0: - encoded_expiry_value.insert(0, int(hexValue[:x], 16)) - else: - encoded_expiry_value.insert(0, int(hexValue[x-2:x], 16)) - - encoded_expiry_value.insert(0, len(encoded_expiry_value)) - encoded_expiry_value.insert(0, relativeToken) - encoded_expiry_value.insert(0, len(encoded_expiry_value)) - - return encoded_expiry_value