diff options
Diffstat (limited to 'contrib/dgsm/osmo-mslookup-socket.py')
-rwxr-xr-x | contrib/dgsm/osmo-mslookup-socket.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/contrib/dgsm/osmo-mslookup-socket.py b/contrib/dgsm/osmo-mslookup-socket.py new file mode 100755 index 0000000..a26ad9f --- /dev/null +++ b/contrib/dgsm/osmo-mslookup-socket.py @@ -0,0 +1,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)) |