-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstants.py
More file actions
272 lines (257 loc) · 9.66 KB
/
Copy pathconstants.py
File metadata and controls
272 lines (257 loc) · 9.66 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# SMPP protocol versions.
SMPP_VERSION_33 = 0x33
SMPP_VERSION_34 = 0x34
# SMPP error codes.
ESME_ROK = 0x00000000
ESME_RINVMSGLEN = 0x00000001
ESME_RINVCMDLEN = 0x00000002
ESME_RINVCMDID = 0x00000003
ESME_RINVBNDSTS = 0x00000004
ESME_RALYBND = 0x00000005
ESME_RINVPRTFLG = 0x00000006
ESME_RINVREGDLVFLG = 0x00000007
ESME_RSYSERR = 0x00000008
ESME_RINVSRCADR = 0x0000000A
ESME_RINVDSTADR = 0x0000000B
ESME_RINVMSGID = 0x0000000C
ESME_RBINDFAIL = 0x0000000D
ESME_RINVPASWD = 0x0000000E
ESME_RINVSYSID = 0x0000000F
ESME_RCANCELFAIL = 0x00000011
ESME_RREPLACEFAIL = 0x00000013
ESME_RMSGQFUL = 0x00000014
ESME_RINVSERTYP = 0x00000015
ESME_RINVNUMDESTS = 0x00000033
ESME_RINVDLNAME = 0x00000034
ESME_RINVDESTFLAG = 0x00000040
ESME_RINVSUBREP = 0x00000042
ESME_RINVESMCLASS = 0x00000043
ESME_RCNTSUBDL = 0x00000044
ESME_RSUBMITFAIL = 0x00000045
ESME_RINVSRCTON = 0x00000048
ESME_RINVSRCNPI = 0x00000049
ESME_RINVDSTTON = 0x00000050
ESME_RINVDSTNPI = 0x00000051
ESME_RINVSYSTYP = 0x00000053
ESME_RINVREPFLAG = 0x00000054
ESME_RINVNUMMSGS = 0x00000055
ESME_RTHROTTLED = 0x00000058
ESME_RINVSCHED = 0x00000061
ESME_RINVEXPIRY = 0x00000062
ESME_RINVDFTMSGID = 0x00000063
ESME_RX_T_APPN = 0x00000064
ESME_RX_P_APPN = 0x00000065
ESME_RX_R_APPN = 0x00000066
ESME_RQUERYFAIL = 0x00000067
ESME_RINVOPTPARSTREAM = 0x000000C0
ESME_ROPTPARNOTALLWD = 0x000000C1
ESME_RINVPARLEN = 0x000000C2
ESME_RMISSINGOPTPARAM = 0x000000C3
ESME_RINVOPTPARAMVAL = 0x000000C4
ESME_RDELIVERYFAILURE = 0x000000FE
ESME_RUNKNOWNERR = 0x000000FF
# SMPP error codes, numeric -> human readable
SMPP_ERROR_CODES = {
ESME_ROK: "No Error",
ESME_RINVMSGLEN: "Message Length is invalid",
ESME_RINVCMDLEN: "Command Length is invalid",
ESME_RINVCMDID: "Invalid Command ID",
ESME_RINVBNDSTS: "Incorrect BIND Status for given command",
ESME_RALYBND: "ESME Already in Bound State",
ESME_RINVPRTFLG: "Invalid Priority Flag",
ESME_RINVREGDLVFLG: "'<Desc Not Set>'",
ESME_RSYSERR: "System Error",
ESME_RINVSRCADR: "Invalid Source Address",
ESME_RINVDSTADR: "Invalid Destination Address",
ESME_RINVMSGID: "Invalid Message ID",
ESME_RBINDFAIL: "Bind Failed",
ESME_RINVPASWD: "Invalid Password",
ESME_RINVSYSID: "Invalid System ID",
ESME_RCANCELFAIL: "Cancel SM Failed",
ESME_RREPLACEFAIL: "Replace SM Failed",
ESME_RMSGQFUL: "Message Queue is full",
ESME_RINVSERTYP: "Invalid Service Type",
ESME_RINVNUMDESTS: "Invalid number of destinations",
ESME_RINVDLNAME: "Invalid Distribution List name",
ESME_RINVDESTFLAG: "Invalid Destination Flag (submit_multi)",
ESME_RINVSUBREP: "Invalid Submit With Replace request (replace_if_present_flag set)",
ESME_RINVESMCLASS: "Invalid esm_class field data",
ESME_RCNTSUBDL: "Cannot submit to Distribution List",
ESME_RSUBMITFAIL: "submit_sm or submit_multi failed",
ESME_RINVSRCTON: "Invalid Source address TON",
ESME_RINVSRCNPI: "Invalid Source address NPI",
ESME_RINVDSTTON: "Invalid Destination address TON",
ESME_RINVDSTNPI: "Invalid Destination address NPI",
ESME_RINVSYSTYP: "Invalid system_type field",
ESME_RINVREPFLAG: "Invalid replace_if_present flag",
ESME_RINVNUMMSGS: "Invalid number of messages",
ESME_RTHROTTLED: "Throttling error (ESME has exceeded allowed message limits)",
ESME_RINVSCHED: "Invalid Scheduled Delivery Time",
ESME_RINVEXPIRY: "Invalid message validity period (Expiry Time)",
ESME_RINVDFTMSGID: "Predefined Message is invalid or not found",
ESME_RX_T_APPN: "ESME received Temporary App Error Code",
ESME_RX_P_APPN: "ESME received Permanent App Error Code",
ESME_RX_R_APPN: "ESME received Reject Message Error Code",
ESME_RQUERYFAIL: "query_sm request failed",
ESME_RINVOPTPARSTREAM: "Error in the optional part of the PDU body",
ESME_ROPTPARNOTALLWD: "Optional Parameter not allowed",
ESME_RINVPARLEN: "Invalid Parameter Length",
ESME_RMISSINGOPTPARAM: "Expected Optional Parameter missing",
ESME_RINVOPTPARAMVAL: "Invalid Optional Parameter Value",
ESME_RDELIVERYFAILURE: "Delivery Failure (used data_sm_resp)",
ESME_RUNKNOWNERR: "Unknown Error"}
# command IDs
CMD_GENERIC_NACK = 0X80000000
CMD_BIND_RECEIVER = 0X00000001
CMD_BIND_RECEIVER_RESP = 0X80000001
CMD_BIND_TRANSMITTER = 0X00000002
CMD_BIND_TRANSMITTER_RESP = 0X80000002
CMD_QUERY_SM = 0X00000003
CMD_QUERY_SM_RESP = 0X80000003
CMD_SUBMIT_SM = 0X00000004
CMD_SUBMIT_SM_RESP = 0X80000004
CMD_DELIVER_SM = 0X00000005
CMD_DELIVER_SM_RESP = 0X80000005
CMD_UNBIND = 0X00000006
CMD_UNBIND_RESP = 0X80000006
CMD_REPLACE_SM = 0X00000007
CMD_REPLACE_SM_RESP = 0X80000007
CMD_CANCEL_SM = 0X00000008
CMD_CANCEL_SM_RESP = 0X80000008
CMD_BIND_TRANSCEIVER = 0X00000009
CMD_BIND_TRANSCEIVER_RESP = 0X80000009
CMD_OUTBIND = 0X0000000B
CMD_ENQUIRE_LINK = 0X00000015
CMD_ENQUIRE_LINK_RESP = 0X80000015
CMD_SUBMIT_MULTI = 0X00000021
CMD_SUBMIT_MULTI_RESP = 0X80000021
CMD_ALERT_NOTIFICATION = 0X00000102
CMD_DATA_SM = 0X00000103
CMD_DATA_SM_RESP = 0X80000103
COMMAND_IDS = {
CMD_GENERIC_NACK: "generic_nack",
CMD_BIND_RECEIVER: "bind_receiver",
CMD_BIND_RECEIVER_RESP: "bind_receiver_resp",
CMD_BIND_TRANSMITTER: "bind_transmitter",
CMD_BIND_TRANSMITTER_RESP: "bind_transmitter_resp",
CMD_QUERY_SM: "query_sm",
CMD_QUERY_SM_RESP: "query_sm_resp",
CMD_SUBMIT_SM: "submit_sm",
CMD_SUBMIT_SM_RESP: "submit_sm_resp",
CMD_DELIVER_SM: "deliver_sm",
CMD_DELIVER_SM_RESP: "deliver_sm_resp",
CMD_UNBIND: "unbind",
CMD_UNBIND_RESP: "unbind_resp",
CMD_REPLACE_SM: "replace_sm",
CMD_REPLACE_SM_RESP: "replace_sm_resp",
CMD_CANCEL_SM: "cancel_sm",
CMD_CANCEL_SM_RESP: "cancel_sm_resp",
CMD_BIND_TRANSCEIVER: "bind_transceiver",
CMD_BIND_TRANSCEIVER_RESP: "bind_transceiver_resp",
CMD_OUTBIND: "outbind",
CMD_ENQUIRE_LINK: "enquire_link",
CMD_ENQUIRE_LINK_RESP: "enquire_link_resp",
CMD_SUBMIT_MULTI: "submit_multi",
CMD_SUBMIT_MULTI_RESP: "submit_multi_resp",
CMD_ALERT_NOTIFICATION: "alert_notification",
CMD_DATA_SM: "data_sm",
CMD_DATA_SM_RESP: "data_sm_resp"}
# SMPP session states
SESSION_STATE_CLOSED = 0
SESSION_STATE_OPEN = 1
SESSION_STATE_BOUND_TX = 2
SESSION_STATE_BOUND_RX = 3
SESSION_STATE_BOUND_TRX = 4
SESSION_STATE_NAMES = {
SESSION_STATE_CLOSED: "CLOSED",
SESSION_STATE_OPEN: "OPEN",
SESSION_STATE_BOUND_TX: "BOUND_TX",
SESSION_STATE_BOUND_RX: "BOUND_RX",
SESSION_STATE_BOUND_TRX: "BOUND_TRX"}
# any bound session state
SESSION_STATES_BOUND = (SESSION_STATE_BOUND_TX,
SESSION_STATE_BOUND_RX,
SESSION_STATE_BOUND_TRX)
# any bound transmitter state
SESSION_STATES_BOUND_TX = (SESSION_STATE_BOUND_TX, SESSION_STATE_BOUND_TRX)
# any bound receiver state
SESSION_STATES_BOUND_RX = (SESSION_STATE_BOUND_TX, SESSION_STATE_BOUND_TRX)
# session states allowed for each command
COMMAND_SESSION_STATES = {
CMD_BIND_TRANSMITTER: (SESSION_STATE_OPEN,),
CMD_BIND_TRANSMITTER_RESP: (SESSION_STATE_OPEN,),
CMD_BIND_RECEIVER: (SESSION_STATE_OPEN,),
CMD_BIND_RECEIVER_RESP: (SESSION_STATE_OPEN,),
CMD_BIND_TRANSCEIVER: (SESSION_STATE_OPEN,),
CMD_BIND_TRANSCEIVER_RESP: (SESSION_STATE_OPEN,),
CMD_OUTBIND: (SESSION_STATE_OPEN,),
CMD_UNBIND: SESSION_STATES_BOUND,
CMD_UNBIND_RESP: SESSION_STATES_BOUND,
CMD_SUBMIT_SM: SESSION_STATES_BOUND_TX,
CMD_SUBMIT_SM_RESP: SESSION_STATES_BOUND_TX,
CMD_SUBMIT_MULTI: SESSION_STATES_BOUND_TX,
CMD_SUBMIT_MULTI_RESP: SESSION_STATES_BOUND_TX,
CMD_DATA_SM: SESSION_STATES_BOUND,
CMD_DATA_SM_RESP: SESSION_STATES_BOUND,
CMD_DELIVER_SM: SESSION_STATES_BOUND_RX,
CMD_DELIVER_SM_RESP: SESSION_STATES_BOUND_RX,
CMD_QUERY_SM: SESSION_STATES_BOUND_RX,
CMD_QUERY_SM_RESP: SESSION_STATES_BOUND_RX,
CMD_CANCEL_SM: SESSION_STATES_BOUND_RX,
CMD_CANCEL_SM_RESP: SESSION_STATES_BOUND_RX,
CMD_REPLACE_SM: (SESSION_STATE_BOUND_TX,),
CMD_REPLACE_SM_RESP: (SESSION_STATE_BOUND_TX,),
CMD_ENQUIRE_LINK: SESSION_STATES_BOUND,
CMD_ENQUIRE_LINK_RESP: SESSION_STATES_BOUND,
CMD_ALERT_NOTIFICATION: SESSION_STATES_BOUND_RX,
CMD_GENERIC_NACK: SESSION_STATES_BOUND}
# TON (Type Of Number) values.
TON_UNKNOWN = 0x00
TON_INT = 0x01
TON_NAT = 0x02
TON_NWSPEC = 0x03
TON_SBSCR = 0x04
TON_ALNUM = 0x05
TON_ABBREV = 0x06
# NPI (Numbering Plan Indicator) values.
NPI_UNKNOWN = 0x00
NPI_ISDN = 0x01
NPI_DATA = 0x03
NPI_TELEX = 0x04
NPI_LNDMBL = 0x06
NPI_NATNL = 0x08
NPI_PRVT = 0x09
NPI_ERMES = 0x0A
NPI_IP = 0x0E
NPI_WAP = 0x12
# submit_multi flags
DEST_FLAG_SME = 0x01
DEST_FLAG_DISTRIBUTION_LIST = 0x02
# alert_notification ms_availability flags
MS_AVAILABILITY_STATUS_AVAILABLE = 0x00
MS_AVAILABILITY_STATUS_DENIED = 0x01
MS_AVAILABILITY_STATUS_UNAVAILABLE = 0x02
# data_coding values
DATA_CODING_DEFAULT = 0x00 # SMSC Default
DATA_CODING_IA5 = 0x01 # IA5 (CCITT T.50)/ASCII (ANSI X3.4)
DATA_CODING_BINARY = 0x02 # Octet unspecified (8-bit binary)
DATA_CODING_ISO88591 = 0x03 # Latin 1 (ISO-8859-1)
DATA_CODING_LATIN1 = 0x03 # Latin 1 (ISO-8859-1)
DATA_CODING_BINARY2 = 0x04 # Octet unspecified (8-bit binary)
DATA_CODING_JIS = 0x05 # JIS (X 0208-1990)
DATA_CODING_ISO88595 = 0x06 # Cyrillic (ISO-8859-5)
DATA_CODING_ISO88598 = 0x07 # Latin/Hebrew (ISO-8859-8)
DATA_CODING_ISO10646 = 0x08 # UCS2 (ISO/IEC-10646)
DATA_CODING_UCS2 = 0x08 # UCS2 (ISO/IEC-10646)
DATA_CODING_PICTOGRAM = 0x09 # Pictogram Encoding
DATA_CODING_ISO2022JP = 0x0A # ISO-2022-JP (Music Codes)
DATA_CODING_EXTJIS = 0x0D # Extended Kanji JIS (X 0212-1990)
DATA_CODING_KSC5601 = 0x0E # KS C 5601
# registered_delivery values
REGISTERED_DELIVERY_DEFAULT = 0x00
REGISTERED_DELIVERY_FINAL = 0x01
REGISTERED_DELIVERY_FAILURE = 0x02
REGISTERED_DELIVERY_SUCCESS = 0x03
REGISTERED_DELIVERY_DELV_ACK = 0x04
REGISTERED_DELIVERY_USER_ACK = 0x08
REGISTERED_DELIVERY_INTERMEDIATE = 0x10