pySim-shell: change Prompt character to "#" after "verify_adm"

Let's change the prompt from ">" to "#" when the user gains admin
privilegs using verify_adm.

Related: OS#6640
Change-Id: I957b9df7b5069b6fce5bf958c94e8ffda833c77f
This commit is contained in:
Philipp Maier
2024-11-22 12:24:16 +01:00
parent 9f9e931378
commit 67c0fff15b
2 changed files with 13 additions and 4 deletions

View File

@@ -219,18 +219,23 @@ Online manual available at https://downloads.osmocom.org/docs/pysim/master/html/
self.cmd2.poutput("<- %s: %s" % (sw, resp)) self.cmd2.poutput("<- %s: %s" % (sw, resp))
def update_prompt(self): def update_prompt(self):
if self.rs and self.rs.adm_verified:
prompt_char = '#'
else:
prompt_char = '>'
if self.lchan: if self.lchan:
path_str = self.lchan.selected_file.fully_qualified_path_str(not self.numeric_path) path_str = self.lchan.selected_file.fully_qualified_path_str(not self.numeric_path)
scp = self.lchan.scc.scp scp = self.lchan.scc.scp
if scp: if scp:
self.prompt = 'pySIM-shell (%s:%02u:%s)> ' % (str(scp), self.lchan.lchan_nr, path_str) self.prompt = 'pySIM-shell (%s:%02u:%s)%c ' % (str(scp), self.lchan.lchan_nr, path_str, prompt_char)
else: else:
self.prompt = 'pySIM-shell (%02u:%s)> ' % (self.lchan.lchan_nr, path_str) self.prompt = 'pySIM-shell (%02u:%s)%c ' % (self.lchan.lchan_nr, path_str, prompt_char)
else: else:
if self.card: if self.card:
self.prompt = 'pySIM-shell (no card profile)> ' self.prompt = 'pySIM-shell (no card profile)%c ' % prompt_char
else: else:
self.prompt = 'pySIM-shell (no card)> ' self.prompt = 'pySIM-shell (no card)%c ' % prompt_char
@cmd2.with_category(CUSTOM_CATEGORY) @cmd2.with_category(CUSTOM_CATEGORY)
def do_intro(self, _): def do_intro(self, _):
@@ -855,6 +860,8 @@ class PySimCommands(CommandSet):
self._cmd.lchan.scc.verify_chv(adm_chv_num, h2b(pin_adm)) self._cmd.lchan.scc.verify_chv(adm_chv_num, h2b(pin_adm))
else: else:
raise ValueError("error: cannot authenticate, no adm-pin!") raise ValueError("error: cannot authenticate, no adm-pin!")
self._cmd.rs.adm_verified = True
self._cmd.update_prompt()
def do_cardinfo(self, opts): def do_cardinfo(self, opts):
"""Display information about the currently inserted card""" """Display information about the currently inserted card"""

View File

@@ -53,6 +53,7 @@ class RuntimeState:
# this is a dict of card identities which different parts of the code might populate, # this is a dict of card identities which different parts of the code might populate,
# typically with something like ICCID, EID, ATR, ... # typically with something like ICCID, EID, ATR, ...
self.identity = {} self.identity = {}
self.adm_verified = False
# make sure the class and selection control bytes, which are specified # make sure the class and selection control bytes, which are specified
# by the card profile are used # by the card profile are used
@@ -139,6 +140,7 @@ class RuntimeState:
if lchan_nr == 0: if lchan_nr == 0:
continue continue
del self.lchan[lchan_nr] del self.lchan[lchan_nr]
self.adm_verified = False
atr = i2h(self.card.reset()) atr = i2h(self.card.reset())
if cmd_app: if cmd_app:
cmd_app.lchan = self.lchan[0] cmd_app.lchan = self.lchan[0]