From ad84e85d3734fec14fddf2051fe3e6d27a5e1592 Mon Sep 17 00:00:00 2001 From: rainmaker Date: Tue, 16 Jul 2024 23:38:10 +0200 Subject: [PATCH] Add main.py --- main.py | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..d7457b4 --- /dev/null +++ b/main.py @@ -0,0 +1,81 @@ +import json +import logging +import random +import sys +import smpplib.consts +import smpplib.gsm +import ssl + +with open("config.json", "r") as config_file: + data = json.load(config_file) + +smppserverhostname = data["SMPPServer"]["Hostname"] +smppserverport = data["SMPPServer"]["Port"] +smppserverusername = data["SMPPServer"]["Username"] +smppserverpassword = data["SMPPServer"]["Password"] +usessl = data["SMPPServer"]["SSL"] +smssendsource = data["SMSSend"]["Source"] +smssenddest = data["SMSSend"]["Destination"] +smssendcont = data["SMSSend"]["Content"] +numberofmsgtosend = data["SMSSend"]["Count"] +validityperiod = data["SMSSend"]["ValidityPeriod"] +othersettingsloglevel = data["OtherSettings"]["LogLevel"] + +logging.basicConfig(level=othersettingsloglevel) + +if usessl == "1": + ssl_context = ssl.create_default_context() + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + ssl_context.options = ssl.OP_NO_SSLv2 + client = smpplib.client.Client(smppserverhostname, smppserverport, allow_unknown_opt_params=True, + ssl_context=ssl_context) +else: + client = smpplib.client.Client(smppserverhostname, smppserverport, allow_unknown_opt_params=True) + +client.set_message_sent_handler( + lambda pdu: sys.stdout.write('Sent msg with sequence ID {}, got ID back {}\n'.format(pdu.sequence, pdu.message_id))) + +client.set_message_received_handler( + lambda pdu: sys.stdout.write('Delivered msg with ID {}, and state {}\n'.format(pdu.receipted_message_id, + pdu.message_state))) + +try: + print("Connecting to SMPP Server", smppserverhostname, "on port", smppserverport) + client.connect() + client.bind_transceiver(system_id=smppserverusername, password=smppserverpassword) + print("Connected to SMPP Server", smppserverhostname, "on port", smppserverport) + print("Sending", numberofmsgtosend, "messages towards server", smppserverhostname) +except: + print("Error connecting to SMPP Server", smppserverhostname, "on port", smppserverport, + "Will exit with return code 1.") + client.disconnect() + exit(1) + +for i in range(numberofmsgtosend): + parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts(smssendcont + str(random.randint(1, 10000))) + for part in parts: + pdu = client.send_message( + # source_addr_ton=smpplib.consts.SMPP_TON_INTL, + source_addr_ton=smpplib.consts.SMPP_TON_ALNUM, + # source_addr_npi=smpplib.consts.SMPP_NPI_ISDN, + # Make sure it is a byte string, not unicode: + source_addr=smssendsource, + dest_addr_ton=smpplib.consts.SMPP_TON_INTL, + # dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN, + # Make sure these two params are byte strings, not unicode: + destination_addr=smssenddest, + short_message=part, + data_coding=encoding_flag, + esm_class=msg_type_flag, + # validity_period=validityperiod, + registered_delivery=True, + ) + +# Enters a loop, waiting for incoming PDUs +print('Starting thread to listen for incoming delivery reports. Ctrl+C to exit.') +while True: + try: + client.listen() + except KeyboardInterrupt: + break