@@ -405,17 +405,20 @@ def gen_parameters(opts):
405
405
406
406
def print_parameters (params ):
407
407
408
- print """Generated card parameters :
409
- > Name : %(name)s
410
- > SMSP : %(smsp)s
411
- > ICCID : %(iccid)s
412
- > MCC/MNC : %(mcc)d/%(mnc)d
413
- > IMSI : %(imsi)s
414
- > Ki : %(ki)s
415
- > OPC : %(opc)s
416
- > ACC : %(acc)s
417
- > ADM1(hex): %(pin_adm)s
418
- """ % params
408
+ s = ["Generated card parameters :" ]
409
+ if 'name' in params :
410
+ s .append (" > Name : %(name)s" )
411
+ if 'smsp' in params :
412
+ s .append (" > SMSP : %(smsp)s" )
413
+ s .append (" > ICCID : %(iccid)s" )
414
+ s .append (" > MCC/MNC : %(mcc)d/%(mnc)d" )
415
+ s .append (" > IMSI : %(imsi)s" )
416
+ s .append (" > Ki : %(ki)s" )
417
+ s .append (" > OPC : %(opc)s" )
418
+ if 'acc' in params :
419
+ s .append (" > ACC : %(acc)s" )
420
+ s .append (" > ADM1(hex): %(pin_adm)s" )
421
+ print ("\n " .join (s ) % params )
419
422
420
423
421
424
def write_params_csv (opts , params ):
@@ -430,10 +433,11 @@ def write_params_csv(opts, params):
430
433
431
434
def _read_params_csv (opts , imsi ):
432
435
import csv
433
- row = ['name' , 'iccid' , 'mcc' , 'mnc' , 'imsi' , 'smsp' , 'ki' , 'opc' ]
434
436
f = open (opts .read_csv , 'r' )
435
- cr = csv .DictReader (f , row )
437
+ cr = csv .DictReader (f )
436
438
i = 0
439
+ if not 'iccid' in cr .fieldnames :
440
+ raise Exception ("CSV file in wrong format!" )
437
441
for row in cr :
438
442
if opts .num is not None and opts .read_imsi is False :
439
443
if opts .num == i :
@@ -450,8 +454,17 @@ def _read_params_csv(opts, imsi):
450
454
def read_params_csv (opts , imsi ):
451
455
row = _read_params_csv (opts , imsi )
452
456
if row is not None :
453
- row ['mcc' ] = int (row ['mcc' ])
454
- row ['mnc' ] = int (row ['mnc' ])
457
+ row ['mcc' ] = int (row .get ('mcc' , row ['imsi' ][0 :3 ]))
458
+ row ['mnc' ] = int (row .get ('mnc' , row ['imsi' ][3 :5 ]))
459
+ pin_adm = None
460
+ # We need to escape the pin_adm we get from the csv
461
+ if 'pin_adm' in row :
462
+ pin_adm = '' .join (['%02x' % (ord (x )) for x in row ['pin_adm' ]])
463
+ # Stay compatible to the odoo csv format
464
+ elif 'adm1' in row :
465
+ pin_adm = '' .join (['%02x' % (ord (x )) for x in row ['adm1' ]])
466
+ if pin_adm :
467
+ row ['pin_adm' ] = rpad (pin_adm , 16 )
455
468
return row
456
469
457
470
0 commit comments