diff options
Diffstat (limited to 'contrib/dgsm')
-rw-r--r-- | contrib/dgsm/Makefile.am | 4 | ||||
-rwxr-xr-x | contrib/dgsm/osmo-mslookup-pipe.py | 24 | ||||
-rwxr-xr-x | contrib/dgsm/osmo-mslookup-socket.py | 35 |
3 files changed, 63 insertions, 0 deletions
diff --git a/contrib/dgsm/Makefile.am b/contrib/dgsm/Makefile.am new file mode 100644 index 0000000..c759302 --- /dev/null +++ b/contrib/dgsm/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = \ + osmo-mslookup-pipe.py \ + osmo-mslookup-socket.py \ + $(NULL) diff --git a/contrib/dgsm/osmo-mslookup-pipe.py b/contrib/dgsm/osmo-mslookup-pipe.py new file mode 100755 index 0000000..b18bf5f --- /dev/null +++ b/contrib/dgsm/osmo-mslookup-pipe.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +# vim: shiftwidth=4 tabstop=4 expandtab +import subprocess +import json + +def query_mslookup(query_str): + result = {'result': 'not-found'} + proc = subprocess.Popen(('osmo-mslookup-client', '-f', 'json', query_str), + stdout=subprocess.PIPE) + for line in iter(proc.stdout.readline,''): + if not line: + break + response = json.loads(line) + if response.get('result') == 'result': + result = response + print('Response: %r' % response) + return result + +if __name__ == '__main__': + import sys + query_str = '1000-5000@sip.voice.12345.msisdn' + if len(sys.argv) > 1: + query_str = sys.argv[1] + print('Final result: %r' % query_mslookup(query_str)) 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)) |