Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import MySQLdb
- import pyst.manager
- import re
- import time
- DBHOST=""
- DBUSER="root"
- DBPASS=""
- DBNAME="asterisk"
- DBHOST2=""
- DBUSER2="root"
- DBPASS2=""
- DBNAME2="sim_bank"
- #TECH="Dongle"
- TECH="SIP"
- #NAME="GSM-9-XX"
- #NAME="FO-XX"
- NAME="[A-Z]XXX"
- LENNAME=4;
- PATTERN = "^" + TECH + "/" + NAME.replace('X', '[0-9]')
- PATTERN2 = "^" + NAME.replace('X', '[0-9]')
- def handle_event(event, manager):
- if event.name == "Dial" and event.message["SubEvent"] == "Begin" and re.compile(PATTERN).match(event.message["Destination"]):
- db = MySQLdb.connect(host=DBHOST, user=DBUSER, passwd=DBPASS, db=DBNAME)
- c = db.cursor()
- number = event.message["Dialstring"][LENNAME+1:]
- name = event.message["Destination"][len(TECH)+1:len(TECH)+1+LENNAME]
- print name + " Dial " + number
- c.execute("update panel set number=%s where name=%s", (number, name))
- c.close()
- db.close()
- if event.name == "Newchannel" and re.compile(PATTERN).match(event.message["Channel"]):
- db = MySQLdb.connect(host=DBHOST, user=DBUSER, passwd=DBPASS, db=DBNAME)
- c = db.cursor()
- name = event.message["Channel"][len(TECH)+1:len(TECH)+1+LENNAME]
- print name + " New"
- c.execute("update panel set state=1,date=now(),number=null where name=%s", (name,))
- c.close()
- "/var/www/monitor/monitor.py" 137L, 4402C
- c = db.cursor()
- d = db2.cursor()
- d.execute("select scid,gsm_number from scid_gsm")
- rows = d.fetchall()
- gids = {}
- for row in rows:
- gids[str(row[0])] = str(row[1])
- c.execute("select balance,scid from trunks_trunk where name=%s", (event["Device"],))
- row = c.fetchone()
- if not row:
- return
- print event["Device"], event["State"],row[0]
- if gids.has_key(str(row[1])):
- gsm = str(gids[row[1]])
- else:
- gsm = ""
- c.execute("update panel set status=%s,balance=%s,gsm_number=%s where name=%s", (event["State"], row[0], gsm, event["Device"]))
- c.close()
- d.close()
- db.close()
- db2.close()
- db = MySQLdb.connect(host=DBHOST, user=DBUSER, passwd=DBPASS, db=DBNAME)
- db2 = MySQLdb.connect(host=DBHOST2, user=DBUSER2, passwd=DBPASS2, db=DBNAME2)
- c = db.cursor()
- d = db2.cursor()
- c.execute("select name from trunks_trunk order by name")
- rows = c.fetchall()
- #print rows
- c.execute("delete from panel")
- for row in rows:
- if re.compile(PATTERN2).match(row[0]):
- print row[0], "X"
- c.execute("insert into panel(name) values(%s)", (row[0],))
- c.close()
- d.close()
- db.close()
- db2.close()
- manager = pyst.manager.Manager()
- manager.connect('localhost')
- manager.login('monitor', 'monitor')
- manager.register_event('*', handle_event)
- while True:
- res = manager.send_action({"Action": "Sippeers"})
- res = manager.send_action({"Action": "DongleShowDevices"})
- time.sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement