{ "info": { "author": "Roger Hoover", "author_email": "roger.hoover@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Networking" ], "description": "# SMPPPDU (Forked from [smpp.pdu](https://github.com/mozes/smpp.pdu))\n\nsmpppdu is a Python3 library for parsing Protocol Data Units (PDUs) in SMPP protocol\n\nhttp://www.nowsms.com/discus/messages/1/24856.html \n\n## Install\n\n```bash\n$ pip install smpppdu\n```\n\n## Examples\n\n### Decoding (parsing) PDUs\n\n```python\nimport binascii\nimport io\n\nfrom smpp.pdu.pdu_encoding import PDUEncoder\n\nhex = '0000004d00000005000000009f88f12441575342440001013136353035353531323334000101313737333535353430373000000000000000000300117468657265206973206e6f2073706f6f6e'\nbinary = binascii.a2b_hex(hex)\nfile = io.BytesIO(binary)\n\npdu = PDUEncoder().decode(file)\nprint(f\"PDU: {pdu}\")\n\n# Prints the following:\n#\n# PDU: PDU [command: deliver_sm, sequence_number: 2676551972, command_status: ESME_ROK\n# service_type: AWSBD\n# source_addr_ton: INTERNATIONAL\n# source_addr_npi: ISDN\n# source_addr: 16505551234\n# dest_addr_ton: INTERNATIONAL\n# dest_addr_npi: ISDN\n# destination_addr: 17735554070\n# esm_class: EsmClass[mode: DEFAULT, type: DEFAULT, gsmFeatures: set()]\n# protocol_id: 0\n# priority_flag: LEVEL_0\n# schedule_delivery_time: None\n# validity_period: None\n# registered_delivery: RegisteredDelivery[receipt: NO_SMSC_DELIVERY_RECEIPT_REQUESTED, smeOriginatedAcks: set(), intermediateNotification: False]\n# replace_if_present_flag: DO_NOT_REPLACE\n# data_coding: DataCoding[scheme: DEFAULT, schemeData: LATIN_1]\n# sm_default_msg_id: None\n# short_message: b'there is no spoon'\n# ]\n```\n\n### Creating and encoding PDUs\n\n```python\nimport binascii\n\nfrom smpp.pdu.pdu_types import (\n AddrTon, AddrNpi, EsmClass, EsmClassMode, EsmClassType, PriorityFlag, \n RegisteredDelivery, RegisteredDeliveryReceipt, ReplaceIfPresentFlag,\n DataCoding, DataCodingScheme, DataCodingGsmMsg, DataCodingGsmMsgCoding,\n DataCodingGsmMsgClass\n)\nfrom smpp.pdu.operations import SubmitSM\nfrom smpp.pdu.pdu_encoding import PDUEncoder\n\npdu = SubmitSM(9284,\n service_type='',\n source_addr_ton=AddrTon.ALPHANUMERIC,\n source_addr_npi=AddrNpi.UNKNOWN,\n source_addr='mobileway',\n dest_addr_ton=AddrTon.INTERNATIONAL,\n dest_addr_npi=AddrNpi.ISDN,\n destination_addr='1208230',\n esm_class=EsmClass(EsmClassMode.DEFAULT, EsmClassType.DEFAULT),\n protocol_id=0,\n priority_flag=PriorityFlag.LEVEL_0,\n registered_delivery=RegisteredDelivery(\n RegisteredDeliveryReceipt.SMSC_DELIVERY_RECEIPT_REQUESTED\n ),\n replace_if_present_flag=ReplaceIfPresentFlag.DO_NOT_REPLACE,\n data_coding=DataCoding(\n DataCodingScheme.GSM_MESSAGE_CLASS, \n DataCodingGsmMsg(\n DataCodingGsmMsgCoding.DEFAULT_ALPHABET, \n DataCodingGsmMsgClass.CLASS_2\n )\n ),\n short_message=b'HELLO',\n)\nprint(f\"PDU: {pdu}\")\n\nbinary = PDUEncoder().encode(pdu)\nhexStr = binascii.b2a_hex(binary)\nprint(f\"HEX: {hexStr}\")\n\n# Prints the following:\n#\n# PDU: PDU [command: submit_sm, sequence_number: 9284, command_status: ESME_ROK\n# service_type: \n# source_addr_ton: ALPHANUMERIC\n# source_addr_npi: UNKNOWN\n# source_addr: mobileway\n# dest_addr_ton: INTERNATIONAL\n# dest_addr_npi: ISDN\n# destination_addr: 1208230\n# esm_class: EsmClass[mode: DEFAULT, type: DEFAULT, gsmFeatures: set()]\n# protocol_id: 0\n# priority_flag: LEVEL_0\n# schedule_delivery_time: None\n# validity_period: None\n# registered_delivery: RegisteredDelivery[receipt: SMSC_DELIVERY_RECEIPT_REQUESTED, smeOriginatedAcks: set(), intermediateNotification: False]\n# replace_if_present_flag: DO_NOT_REPLACE\n# data_coding: DataCoding[scheme: GSM_MESSAGE_CLASS, schemeData: DataCodingGsmMsg[msgCoding: DEFAULT_ALPHABET, msgClass: CLASS_2]]\n# sm_default_msg_id: None\n# short_message: b'HELLO'\n# ]\n# HEX: b'000000360000000400000000000024440005006d6f62696c65776179000101313230383233300000000000000100f2000548454c4c4f'\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/devtud/smpppdu", "keywords": "smpp pdu", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "smpppdu", "package_url": "https://pypi.org/project/smpppdu/", "platform": "", "project_url": "https://pypi.org/project/smpppdu/", "project_urls": { "Homepage": "https://github.com/devtud/smpppdu", "Source": "https://github.com/devtud/smpppdu" }, "release_url": "https://pypi.org/project/smpppdu/0.1.2/", "requires_dist": null, "requires_python": ">=3.7, <4", "summary": "Library for parsing Protocol Data Units (PDUs) in SMPP protocol", "version": "0.1.2" }, "last_serial": 5684198, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "188e0076cd43cdbd42ce590eca830b23", "sha256": "6420d2e594e3828dd137ee0557c89d999c893120e18906aca1b629a96466e341" }, "downloads": -1, "filename": "smpppdu-0.1.tar.gz", "has_sig": false, "md5_digest": "188e0076cd43cdbd42ce590eca830b23", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7, <4", "size": 33919, "upload_time": "2019-08-15T09:08:09", "url": "https://files.pythonhosted.org/packages/e7/86/9b79911a7c99ea6d265a7020aaa0939e75926ae89f95747d19d5054858bd/smpppdu-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2b8d052b18c2c2f252dcee73d50b8960", "sha256": "d5ebaf992784efc696d1806dc70bbc4e6087fb8d4fc944eea91507c8947855af" }, "downloads": -1, "filename": "smpppdu-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2b8d052b18c2c2f252dcee73d50b8960", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7, <4", "size": 34099, "upload_time": "2019-08-15T12:50:01", "url": "https://files.pythonhosted.org/packages/e3/a0/d8ac441fa6f2e50038e401496cb2d9b43447af6a918dd6c5ac5126be583d/smpppdu-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8fdfd4da6ba8240555c4331ceed783e1", "sha256": "78ec7548481bef887fb402bb464f4e7d497d8130f5b63694133665ac804c174a" }, "downloads": -1, "filename": "smpppdu-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8fdfd4da6ba8240555c4331ceed783e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7, <4", "size": 33216, "upload_time": "2019-08-15T20:44:41", "url": "https://files.pythonhosted.org/packages/a0/50/cb7f5c16cb1a83ec469d680a8eaa6449514f8996e47e0f21d337d74b8ded/smpppdu-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8fdfd4da6ba8240555c4331ceed783e1", "sha256": "78ec7548481bef887fb402bb464f4e7d497d8130f5b63694133665ac804c174a" }, "downloads": -1, "filename": "smpppdu-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8fdfd4da6ba8240555c4331ceed783e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7, <4", "size": 33216, "upload_time": "2019-08-15T20:44:41", "url": "https://files.pythonhosted.org/packages/a0/50/cb7f5c16cb1a83ec469d680a8eaa6449514f8996e47e0f21d337d74b8ded/smpppdu-0.1.2.tar.gz" } ] }