summaryrefslogtreecommitdiff
path: root/contrib/scripts/sip_to_pjsip/sip_to_pjsql.py
blob: d93bca500ad51e7727c31fcb5bc128a6c992ade3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/python

from sip_to_pjsip import cli_options
from sip_to_pjsip import convert
import sip_to_pjsip
import optparse


import sqlconfigparser


def write_pjsip(filename, pjsip, non_mappings):
    """
    Write pjsip.sql file to disk
    """
    try:
        with open(filename, 'wt') as fp:
            pjsip.write(fp)

    except IOError:
        print "Could not open file ", filename, " for writing"

def cli_options():
    """
    Parse command line options and apply them. If invalid input is given,
    print usage information

    """
    global user
    global password
    global host
    global port
    global database
    global table

    usage = "usage: %prog [options] [input-file [output-file]]\n\n" \
        "Converts the chan_sip configuration input-file to mysql output-file.\n" \
        "The input-file defaults to 'sip.conf'.\n" \
        "The output-file defaults to 'pjsip.sql'."
    parser = optparse.OptionParser(usage=usage)
    parser.add_option('-u', '--user', dest='user', default="root",
                      help='mysql username')
    parser.add_option('-p', '--password', dest='password', default="root",
                      help='mysql password')
    parser.add_option('-H', '--host', dest='host', default="127.0.0.1",
                      help='mysql host ip')
    parser.add_option('-P', '--port', dest='port', default="3306",
                      help='mysql port number')
    parser.add_option('-D', '--database', dest='database', default="asterisk",
                      help='mysql port number')
    parser.add_option('-t', '--table', dest='table', default="sippeers",
                      help='name of sip realtime peers table')

    options, args = parser.parse_args()

    user = options.user
    password = options.password
    host = options.host
    port = options.port
    database = options.database
    table = options.table

    sip_filename = args[0] if len(args) else 'sip.conf'
    pjsip_filename = args[1] if len(args) == 2 else 'pjsip.sql'

    return sip_filename, pjsip_filename

if __name__ == "__main__":
    sip_filename, pjsip_filename = cli_options()
    sip = sqlconfigparser.SqlConfigParser(table)
    sip_to_pjsip.sip = sip
    sip.connect(user,password,host,port,database)
    print 'Please, report any issue at:'
    print '    https://issues.asterisk.org/'
    print 'Reading', sip_filename
    sip.read(sip_filename)
    print 'Converting to PJSIP realtime sql...'
    pjsip, non_mappings = convert(sip, pjsip_filename, dict(), False)
    print 'Writing', pjsip_filename
    write_pjsip(pjsip_filename, pjsip, non_mappings)