Advertisement
hpema108

ussd.py

Jan 13th, 2016
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.53 KB | None | 0 0
  1. # telnet program example
  2. import socket, select, string, sys
  3. import xml.etree.ElementTree as ET
  4. import requests
  5. import time
  6.  
  7. def prompt() :
  8.     sys.stdout.write('<You> ')
  9.     sys.stdout.flush()
  10.  
  11. def sendSMS(msisdn, msg):
  12.     responseMeg = "<usareq NODE=\'*\' TRANSFORM=\'SUBMIT_SM\' USERNAME=\'*\' PASSWORD=\'*\'><command><submit_sm><a_number>*</a_number><b_number>" + msisdn + "</b_number><service_type></service_type><message>"+ msg +"</message><registered_delivery></registered_delivery></submit_sm></command></usareq>"
  13.     #sys.stdout.write(responseMeg)
  14.     r = requests.post('http://*/*/client.jsp', data = {'command': responseMeg} )
  15.     #sys.stdout.write(r.text)
  16.  
  17. def sendUSSD(sessionId, msisdn, msg, msgType):
  18.     responseMeg = "<usareq NODE=\'*\' TRANSFORM=\'USSD\' USERNAME=\'*\' PASSWORD=\'*\' VERBOSITY=\'2\'><command><ussd_response><sessionid>"+ sessionId+"</sessionid><type>"+msgType +"</type><msisdn>"+ msisdn+"</msisdn><message>"+ msg+"</message></ussd_response></command></usareq>"
  19.     #sys.stdout.write(responseMeg)
  20.     r = requests.post('http://*/*/client.jsp', data = {'command':responseMeg} )
  21.     #sys.stdout.write(r.text)
  22.  
  23. #main function
  24. #if __name__ == "__main__":
  25. def StartUSSDServer():
  26.     #localtime = time.asctime(time.localtime(time.time()))
  27.     #sendSMS('27810378419', "USSD Initiliazed on - " + localtime)
  28.  
  29.     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  30.     s.setblocking(0)
  31.     s.settimeout(20)
  32.     # connect to remote host
  33.     try :
  34.         s.connect(('*', *))
  35.     except :
  36.         print 'Unable to connect'
  37.         #sys.exit()
  38.  
  39.     #localtime = time.asctime(time.localtime(time.time()))
  40.     #sendSMS('27810378419',  "Connected to remote host - " + localtime)
  41.  
  42.     s.send("<usereq USERNAME=\'*\' PASSWORD =\'*\' VERBOSITY=\'0\'><subscribe NODE=\'.*\' TRANSFORM=\'USSD\' PATTERN=\'\\*\'/></usereq>END")
  43.     localtime = time.asctime(time.localtime(time.time()))
  44.     sendSMS('27810378419', "USSD Started on - " + localtime)
  45.     #prompt()
  46.  
  47.     while 1:
  48.         socket_list = [s]
  49.  
  50.         # Get the list sockets which are readable
  51.         read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])
  52.  
  53.         for sock in read_sockets:
  54.             #incoming message from remote server
  55.             if sock == s:
  56.                 data = sock.recv(4096)
  57.                 if not data :
  58.                     print '\nDisconnected from chat server'
  59.                     #sys.exit()
  60.                 else :
  61.                     #print data
  62.                     root = ET.fromstring(data)
  63.                     for datablock in root.findall('datablock'):
  64.                         sessionid = datablock.find('sessionid').text
  65.                         msisdn = datablock.find('msisdn').text
  66.                         rootMsg = datablock.find('svcCode').text
  67.                         requestMsg = datablock.find('message').text.replace('*130*826*','').replace('#','')
  68.                         msgType = datablock.find('type').text
  69.                         localtime = time.asctime(time.localtime(time.time()))
  70.                         #print localtime, sessionid, msisdn, rootMsg, requestMsg, msgType
  71.                         sendUSSD(sessionid, msisdn, localtime + ' - ' + requestMsg, 'USER_REQUEST' )
  72.                     #prompt()
  73.  
  74.             #user entered a message
  75.             else :
  76.                 msg = sys.stdin.readline()
  77.                 #prompt()
  78.  
  79. def StartUSSDServerTest():
  80.     localtime = time.asctime(time.localtime(time.time()))
  81.     sendSMS('27810378419', "USSD Started on " + localtime)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement