contrib/script/sip_to_pjsip: add support for realtime
[asterisk/asterisk.git] / contrib / scripts / sip_to_pjsip / sip_to_pjsql.py
1 #!/usr/bin/python
2
3 from sip_to_pjsip import cli_options
4 from sip_to_pjsip import convert
5 import sip_to_pjsip
6 import optparse
7
8
9 import sqlconfigparser
10
11
12 def write_pjsip(filename, pjsip, non_mappings):
13     """
14     Write pjsip.sql file to disk
15     """
16     try:
17         with open(filename, 'wt') as fp:
18             pjsip.write(fp)
19
20     except IOError:
21         print "Could not open file ", filename, " for writing"
22
23 def cli_options():
24     """
25     Parse command line options and apply them. If invalid input is given,
26     print usage information
27
28     """
29     global user
30     global password
31     global host
32     global port
33     global database
34     global table
35
36     usage = "usage: %prog [options] [input-file [output-file]]\n\n" \
37         "Converts the chan_sip configuration input-file to mysql output-file.\n" \
38         "The input-file defaults to 'sip.conf'.\n" \
39         "The output-file defaults to 'pjsip.sql'."
40     parser = optparse.OptionParser(usage=usage)
41     parser.add_option('-u', '--user', dest='user', default="root",
42                       help='mysql username')
43     parser.add_option('-p', '--password', dest='password', default="root",
44                       help='mysql password')
45     parser.add_option('-H', '--host', dest='host', default="127.0.0.1",
46                       help='mysql host ip')
47     parser.add_option('-P', '--port', dest='port', default="3306",
48                       help='mysql port number')
49     parser.add_option('-D', '--database', dest='database', default="asterisk",
50                       help='mysql port number')
51     parser.add_option('-t', '--table', dest='table', default="sippeers",
52                       help='name of sip realtime peers table')
53
54     options, args = parser.parse_args()
55
56     user = options.user
57     password = options.password
58     host = options.host
59     port = options.port
60     database = options.database
61     table = options.table
62
63     sip_filename = args[0] if len(args) else 'sip.conf'
64     pjsip_filename = args[1] if len(args) == 2 else 'pjsip.sql'
65
66     return sip_filename, pjsip_filename
67
68 if __name__ == "__main__":
69     sip_filename, pjsip_filename = cli_options()
70     sip = sqlconfigparser.SqlConfigParser(table)
71     sip_to_pjsip.sip = sip
72     sip.connect(user,password,host,port,database)
73     print 'Please, report any issue at:'
74     print '    https://issues.asterisk.org/'
75     print 'Reading', sip_filename
76     sip.read(sip_filename)
77     print 'Converting to PJSIP realtime sql...'
78     pjsip, non_mappings = convert(sip, pjsip_filename, dict(), False)
79     print 'Writing', pjsip_filename
80     write_pjsip(pjsip_filename, pjsip, non_mappings)
81