/usr/share/pyshared/messaging/sms/udh.py is in python-messaging 0.5.11+debian-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | # See LICENSE
class PortAddress(object):
def __init__(self, dest_port, orig_port, eight_bits):
self.dest_port = dest_port
self.orig_port = orig_port
self.eight_bits = eight_bits
def __repr__(self):
args = (self.dest_port, self.orig_port)
return "<PortAddress dest_port: %d orig_port: %d>" % args
class ConcatReference(object):
def __init__(self, ref, cnt, seq, eight_bits):
self.ref = ref
self.cnt = cnt
self.seq = seq
self.eight_bits = eight_bits
def __repr__(self):
args = (self.ref, self.cnt, self.seq)
return "<ConcatReference ref: %d cnt: %d seq: %d>" % args
class UserDataHeader(object):
def __init__(self):
self.concat = None
self.ports = None
self.headers = {}
def __repr__(self):
args = (self.headers, self.concat, self.ports)
return "<UserDataHeader data: %s concat: %s ports: %s>" % args
@classmethod
def from_status_report_ref(cls, ref):
udh = cls()
udh.concat = ConcatReference(ref, 0, 0, True)
return udh
@classmethod
def from_bytes(cls, data):
udh = cls()
while len(data):
iei = data.pop(0)
ie_len = data.pop(0)
ie_data = data[:ie_len]
data = data[ie_len:]
udh.headers[iei] = ie_data
if iei == 0x00:
# process SM concatenation 8bit ref.
ref, cnt, seq = ie_data
udh.concat = ConcatReference(ref, cnt, seq, True)
if iei == 0x08:
# process SM concatenation 16bit ref.
ref = ie_data[0] << 8 | ie_data[1]
cnt = ie_data[2]
seq = ie_data[3]
udh.concat = ConcatReference(ref, cnt, seq, False)
elif iei == 0x04:
# process App port addressing 8bit
dest_port, orig_port = ie_data
udh.ports = PortAddress(dest_port, orig_port, False)
elif iei == 0x05:
# process App port addressing 16bit
dest_port = ie_data[0] << 8 | ie_data[1]
orig_port = ie_data[2] << 8 | ie_data[3]
udh.ports = PortAddress(dest_port, orig_port, False)
return udh
|