osmo-cn-latest: Add script to populate HLR
Change-Id: I3ba73347a87e82422fcd3ec3da9acc4b70411003changes/39/13439/1
parent
5ff268371f
commit
8e990c4ff7
|
@ -0,0 +1,147 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import csv
|
||||
import sys
|
||||
import sqlite3
|
||||
|
||||
# 3G
|
||||
def create_hlr_3g(db):
|
||||
conn = sqlite3.connect(db)
|
||||
c = conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS subscriber (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
imsi VARCHAR(15) UNIQUE NOT NULL,
|
||||
msisdn VARCHAR(15) UNIQUE,
|
||||
imeisv VARCHAR,
|
||||
vlr_number VARCHAR(15),
|
||||
hlr_number VARCHAR(15),
|
||||
sgsn_number VARCHAR(15),
|
||||
sgsn_address VARCHAR,
|
||||
ggsn_number VARCHAR(15),
|
||||
gmlc_number VARCHAR(15),
|
||||
smsc_number VARCHAR(15),
|
||||
periodic_lu_tmr INTEGER,
|
||||
periodic_rau_tau_tmr INTEGER,
|
||||
nam_cs BOOLEAN NOT NULL DEFAULT 1,
|
||||
nam_ps BOOLEAN NOT NULL DEFAULT 1,
|
||||
lmsi INTEGER,
|
||||
ms_purged_cs BOOLEAN NOT NULL DEFAULT 0,
|
||||
ms_purged_ps BOOLEAN NOT NULL DEFAULT 0
|
||||
);"""
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS subscriber_apn (
|
||||
subscriber_id INTEGER,
|
||||
apn VARCHAR(256) NOT NULL
|
||||
);"""
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS subscriber_multi_msisdn (
|
||||
subscriber_id INTEGER,
|
||||
msisdn VARCHAR(15) NOT NULL
|
||||
);"""
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS auc_2g (
|
||||
subscriber_id INTEGER PRIMARY KEY,
|
||||
algo_id_2g INTEGER NOT NULL,
|
||||
ki VARCHAR(32) NOT NULL
|
||||
);"""
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS auc_3g (
|
||||
subscriber_id INTEGER PRIMARY KEY,
|
||||
algo_id_3g INTEGER NOT NULL,
|
||||
k VARCHAR(32) NOT NULL,
|
||||
op VARCHAR(32),
|
||||
opc VARCHAR(32),
|
||||
sqn INTEGER NOT NULL DEFAULT 0,
|
||||
ind_bitlen INTEGER NOT NULL DEFAULT 5
|
||||
);"""
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
"""CREATE UNIQUE INDEX idx_subscr_imsi ON subscriber (imsi);"""
|
||||
)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def write_hlr_3g(db, data):
|
||||
conn = sqlite3.connect(db)
|
||||
c = conn.execute(
|
||||
'INSERT INTO subscriber ' +
|
||||
'(imsi, msisdn) ' +
|
||||
'VALUES ' +
|
||||
'(?,?);',
|
||||
[
|
||||
data['imsi'],
|
||||
data['extension']
|
||||
],
|
||||
)
|
||||
sub_id= c.lastrowid
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
'INSERT INTO auc_2g ' +
|
||||
'(subscriber_id, algo_id_2g, ki)' +
|
||||
'VALUES ' +
|
||||
'(?,?,?);',
|
||||
[
|
||||
sub_id,
|
||||
1,
|
||||
data['ki']
|
||||
],
|
||||
)
|
||||
c.close()
|
||||
c = conn.execute(
|
||||
'INSERT INTO auc_3g ' +
|
||||
'(subscriber_id, algo_id_3g, k, opc, sqn)' +
|
||||
'VALUES ' +
|
||||
'(?, ?, ?, ?, ?);',
|
||||
[
|
||||
sub_id,
|
||||
5,
|
||||
data['ki'],
|
||||
data['opc'],
|
||||
0
|
||||
],
|
||||
)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def main(infilename):
|
||||
csvfields = ['name', 'iccid', 'mcc', 'mnc', 'imsi', 'extension', 'smsp', 'ki', 'opc', 'adm1']
|
||||
|
||||
create_hlr_3g("hlr.db")
|
||||
inf = open(infilename, "r")
|
||||
outf = open("simcards.csv", "w")
|
||||
|
||||
cr = csv.DictReader(inf)
|
||||
cw = csv.DictWriter(outf, csvfields)
|
||||
|
||||
cw.writeheader()
|
||||
for row in cr:
|
||||
data = {}
|
||||
data['name'] = "Subscriber " + row['iccid'][-6:-1]
|
||||
data['iccid'] = row['iccid']
|
||||
data['mcc'] = row['imsi'][0:3]
|
||||
data['mnc'] = row['imsi'][3:5]
|
||||
data['imsi'] = row['imsi']
|
||||
data['ki'] = row['ki']
|
||||
data['opc'] = row['opc']
|
||||
data['extension'] = row['iccid'][-6:-1]
|
||||
data['smsp'] = '00495555'
|
||||
if "adm1" in row:
|
||||
data['adm1'] = row['adm1']
|
||||
cw.writerow(data)
|
||||
write_hlr_3g("hlr.db", data)
|
||||
inf.close()
|
||||
outf.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1])
|
||||
|
Loading…
Reference in New Issue