mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-20 20:44:20 +00:00
contrib/script/sip_to_pjsip: add support for realtime
Add a new script that can read from legacy realtime peers & generate an sql file for populating pjsip endpoints, identify, and aor records. ASTERISK-27348 #close Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65
This commit is contained in:
committed by
Matthew Fredrickson
parent
4568894d2a
commit
976afd26ab
69
contrib/scripts/sip_to_pjsip/sqlconfigparser.py
Normal file
69
contrib/scripts/sip_to_pjsip/sqlconfigparser.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from astconfigparser import MultiOrderedConfigParser
|
||||
|
||||
import MySQLdb
|
||||
import traceback
|
||||
|
||||
class SqlConfigParser(MultiOrderedConfigParser):
|
||||
|
||||
_tablename = "sippeers"
|
||||
|
||||
def __init__(self,tablename="sippeers"):
|
||||
self._tablename=tablename
|
||||
MultiOrderedConfigParser.__init__(self)
|
||||
|
||||
def connect(self, user, password, host, port, database):
|
||||
self.cnx = MySQLdb.connect(user=user,passwd=password,host=host,port=int(port),db=database)
|
||||
|
||||
def read(self, filename, sect=None):
|
||||
MultiOrderedConfigParser.read(self, filename, sect)
|
||||
# cursor = self.cnx.cursor(dictionary=True)
|
||||
cursor = self.cnx.cursor(cursorclass=MySQLdb.cursors.DictCursor)
|
||||
cursor.execute("SELECT * from `" + MySQLdb.escape_string(self._tablename) + "`")
|
||||
rows = cursor.fetchall()
|
||||
|
||||
for row in rows:
|
||||
sect = self.add_section(row['name'])
|
||||
for key in row:
|
||||
if (row[key] != None):
|
||||
for elem in str(row[key]).split(";"):
|
||||
sect[key] = elem
|
||||
#sect[key] = str(row[key]).split(";")
|
||||
|
||||
def write_dicts(self, config_file, mdicts):
|
||||
"""Write the contents of the mdicts to the specified config file"""
|
||||
for section, sect_list in mdicts.iteritems():
|
||||
# every section contains a list of dictionaries
|
||||
for sect in sect_list:
|
||||
sql = "INSERT INTO "
|
||||
if (sect.get('type')[0] == "endpoint"):
|
||||
sql += "ps_endpoints "
|
||||
elif (sect.get('type')[0] == "aor" and section != "sbc"):
|
||||
sql += "ps_aors "
|
||||
elif (sect.get('type')[0] == "identify"):
|
||||
sql += "ps_endpoint_id_ips"
|
||||
else:
|
||||
continue
|
||||
|
||||
sql += " SET `id` = " + "\"" + MySQLdb.escape_string(section) + "\""
|
||||
for key, val_list in sect.iteritems():
|
||||
if key == "type":
|
||||
continue
|
||||
# every value is also a list
|
||||
|
||||
key_val = " `" + key + "`"
|
||||
key_val += " = " + "\"" + MySQLdb.escape_string(";".join(val_list)) + "\""
|
||||
sql += ","
|
||||
sql += key_val
|
||||
|
||||
config_file.write("%s;\n" % (sql))
|
||||
|
||||
def write(self, config_file):
|
||||
"""Write configuration information out to a file"""
|
||||
try:
|
||||
self.write_dicts(config_file, self._sections)
|
||||
except Exception,e:
|
||||
print "Could not open file ", config_file, " for writing"
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user