From d8352d75b61ae72bb1142d3a3e9a546ad8704f73 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 5 Dec 2015 22:59:41 +0100 Subject: remove old obsolete linux kernel and wireshark patches Those were relevant in 2008/2009, but not today... Also, move hlrsync to the contrib directory --- openbsc/contrib/hlrsync/hlrsync.py | 125 +++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100755 openbsc/contrib/hlrsync/hlrsync.py (limited to 'openbsc') diff --git a/openbsc/contrib/hlrsync/hlrsync.py b/openbsc/contrib/hlrsync/hlrsync.py new file mode 100755 index 000000000..e4a495555 --- /dev/null +++ b/openbsc/contrib/hlrsync/hlrsync.py @@ -0,0 +1,125 @@ +#!/usr/bin/python2.5 + +from __future__ import with_statement + +from pysqlite2 import dbapi2 as sqlite3 +import sys + +hlr = sqlite3.connect(sys.argv[1]) +web = sqlite3.connect(sys.argv[2]) + +# switch to autocommit +hlr.isolation_level = None +web.isolation_level = None + +hlr.row_factory = sqlite3.Row +web.row_factory = sqlite3.Row + +with hlr: + hlr_subscrs = hlr.execute(""" + SELECT * FROM Subscriber + """).fetchall() + hlr_tokens = hlr.execute(""" + SELECT * FROM AuthToken + """).fetchall() + +with web: + web_tokens = web.execute(""" + SELECT * FROM reg_tokens + """).fetchall() + web_sms = web.execute(""" + SELECT * FROM sms_queue + """).fetchall() + +# index by subscr id +hlr_subscrs_by_id = {} +hlr_subscrs_by_ext = {} +hlr_tokens_by_subscr_id = {} +for x in hlr_subscrs: + hlr_subscrs_by_id[x['id']] = x + hlr_subscrs_by_ext[x['extension']] = x +del hlr_subscrs +for x in hlr_tokens: + hlr_tokens_by_subscr_id[x['subscriber_id']] = x +del hlr_tokens + +web_tokens_by_subscr_id = {} +for x in web_tokens: + web_tokens_by_subscr_id[x['subscriber_id']] = x +del web_tokens + +# remove leftover web_tokens and correct inconsistent fields +with web: + for x in web_tokens_by_subscr_id.values(): + subscr = hlr_subscrs_by_id.get(x['subscriber_id'], None) + if subscr is None: + web.execute(""" + DELETE FROM reg_tokens WHERE subscriber_id = ? + """, (x['subscriber_id'],)) + del web_tokens_by_subscr_id[x['subscriber_id']] + continue + if str(x['imsi']) != str(subscr['imsi']) or \ + x['extension'] != subscr['extension'] or \ + x['tmsi'] != subscr['tmsi'] or \ + x['lac'] != subscr['lac']: + web.execute(""" + UPDATE reg_tokens + SET imsi = ?, extension = ?, tmsi = ?, lac = ? + WHERE subscriber_id = ? + """, (str(subscr['imsi']), subscr['extension'], + subscr['tmsi'], subscr['lac'], x['subscriber_id'])) + +# add missing web_tokens +with web: + for x in hlr_tokens_by_subscr_id.values(): + subscr = hlr_subscrs_by_id.get(x['subscriber_id'], None) + if subscr is None: + hlr.execute(""" + DELETE FROM AuthToken WHERE subscriber_id = ? + """, (x['subscriber_id'],)) + del hlr_tokens_by_subscr_id[x['subscriber_id']] + continue + webtoken = web_tokens_by_subscr_id.get(x['subscriber_id'], None) + if webtoken is None: + web.execute(""" + INSERT INTO reg_tokens + (subscriber_id, extension, reg_completed, name, email, lac, imsi, token, tmsi) + VALUES + (?, ?, 0, ?, '', ?, ?, ?, ?) + """, (x['subscriber_id'], subscr['extension'], subscr['name'], + subscr['lac'], str(subscr['imsi']), x['token'], subscr['tmsi'])) + +# authorize subscribers +with hlr: + for x in web_tokens_by_subscr_id.values(): + subscr = hlr_subscrs_by_id.get(x['subscriber_id'], None) + if x['reg_completed'] and not subscr['authorized']: + hlr.execute(""" + UPDATE Subscriber + SET authorized = 1 + WHERE id = ? + """, (x['subscriber_id'],)) + +# Sync SMS from web to hlr +with hlr: + for sms in web_sms: + subscr = hlr_subscrs_by_ext.get(sms['receiver_ext']) + if subscr is None: + print '%s not found' % sms['receiver_ext'] + continue + hlr.execute(""" + INSERT INTO SMS + (created, sender_id, receiver_id, reply_path_req, status_rep_req, protocol_id, data_coding_scheme, ud_hdr_ind, text) + VALUES + (?, 1, ?, 0, 0, 0, 0, 0, ?) + """, (sms['created'], subscr['id'], sms['text'])) +with web: + for sms in web_sms: + web.execute(""" + DELETE FROM sms_queue WHERE id = ? + """, (sms['id'],)) + + +hlr.close() +web.close() + -- cgit v1.2.3