aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/dgsm/osmo-mslookup-socket.py
blob: a26ad9fc3fbb3fc733d0f798b8bd4d63abf99c1e (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
#!/usr/bin/env python3
# vim: shiftwidth=4 tabstop=4 expandtab
import socket
import time

MSLOOKUP_SOCKET_PATH = '/tmp/mslookup'

def query_mslookup_socket(query_str, socket_path=MSLOOKUP_SOCKET_PATH):
    mslookup_socket = socket.socket(socket.AF_UNIX, socket.SOCK_SEQPACKET)
    mslookup_socket.setblocking(True)
    mslookup_socket.connect(socket_path)
    result = {'result': 'not-found'}
    column_names = mslookup_socket.recv(1024).decode('ascii')
    if not column_names:
        return result
    column_names = column_names.split('\t')
    mslookup_socket.sendall(query_str.encode('ascii'))
    while True:
        csv = mslookup_socket.recv(1024).decode('ascii')
        if not csv:
            break
        response = dict(zip(column_names, csv.split('\t')))
        if response.get('result') == 'result':
            result = response
        print('Response: %r' % response)
    return result

if __name__ == '__main__':
    import sys
    print(
        '\nPlease run separately: osmo-mslookup-client --socket /tmp/mslookup -d\n')
    query_str = '1000-5000@sip.voice.12345.msisdn'
    if len(sys.argv) > 1:
        query_str = sys.argv[1]
    print('Final result: %r' % query_mslookup_socket(query_str))