dexter has posted comments on this change by dexter. ( https://gerrit.osmocom.org/c/pysim/+/37774?usp=email )
The change is no longer submittable: Code-Review is unsatisfied now.
Change subject: runtime: integrate escape route for applications without ADF support
......................................................................
Patch Set 1: Code-Review-2
(1 comment)
Patchset:
PS1:
(accidentally pressed the +2 button)
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37774?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ie6f37d13af880d24a9c7a8a95cef436b603587c7
Gerrit-Change-Number: 37774
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 06 Aug 2024 07:30:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Attention is currently required from: dexter.
fixeria has posted comments on this change by dexter. ( https://gerrit.osmocom.org/c/pysim/+/37774?usp=email )
Change subject: runtime: integrate escape route for applications without ADF support
......................................................................
Patch Set 2: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37774?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ie6f37d13af880d24a9c7a8a95cef436b603587c7
Gerrit-Change-Number: 37774
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 06 Aug 2024 17:48:59 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37774?usp=email )
Change subject: runtime: integrate escape route for applications without ADF support
......................................................................
runtime: integrate escape route for applications without ADF support
the select_parent method in RuntimeLchan currently implements a way
to escape from an application that has no filesystem support. However,
this escape route can be integrated directly into the select_file
method. This will give us the benefit that it will work transparently
in all code locations.
(This also means we can get ri of the select_parent method again)
Related: OS#6120
Change-Id: Ie6f37d13af880d24a9c7a8a95cef436b603587c7
---
M pySim-shell.py
M pySim/runtime.py
2 files changed, 20 insertions(+), 32 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/74/37774/1
diff --git a/pySim-shell.py b/pySim-shell.py
index 3d6853a..76f0102 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -543,7 +543,7 @@
# below, so we must not move up.
if skip_df == False:
self.walk(indent + 1, action_ef, action_df, context, **kwargs)
- self._cmd.lchan.select_parent(self._cmd)
+ self._cmd.lchan.select_file(self._cmd.lchan.selected_file.parent, self._cmd)
elif action_ef:
self.__walk_action(action_ef, f, context, **kwargs)
@@ -589,7 +589,7 @@
# When reading the file is done, make sure the parent file is selected again. This will be the usual case,
# however we need to check before since we must not select the parent file twice
if df != self._cmd.lchan.selected_file:
- self._cmd.lchan.select_parent(self._cmd)
+ self._cmd.lchan.select_file(self._cmd.lchan.selected_file.parent, self._cmd)
self._cmd.poutput("#")
diff --git a/pySim/runtime.py b/pySim/runtime.py
index a90128d..08371ae 100644
--- a/pySim/runtime.py
+++ b/pySim/runtime.py
@@ -320,6 +320,24 @@
file : CardFile [or derived class] instance
cmd_app : Command Application State (for unregistering old file commands)
"""
+
+ if not isinstance(file, CardADF) and self.selected_adf and self.selected_adf.has_fs == False:
+ # Not every application that may be present on a GlobalPlatform card will support the SELECT
+ # command as we know it from ETSI TS 102 221, section 11.1.1. In fact the only subset of
+ # SELECT we may rely on is the OPEN SELECT command as specified in GlobalPlatform Card
+ # Specification, section 11.9. Unfortunately the OPEN SELECT command only supports the
+ # "select by name" method, which means we can only select an application and not a file.
+ # The consequence of this is that we may get trapped in an application that does not have
+ # ISIM/USIM like file system support and the only way to leave that application is to select
+ # an ISIM/USIM application in order to get the file system access back.
+ #
+ # To automate this escape-route we will first select an arbitrary ADF that has file system support first
+ # and then continue normally.
+ for selectable in self.rs.mf.get_selectables().items():
+ if isinstance(selectable[1], CardADF) and selectable[1].has_fs == True:
+ self.select(selectable[1].name, cmd_app)
+ break
+
# we need to find a path from our self.selected_file to the destination
inter_path = self.selected_file.build_select_path_to(file)
if not inter_path:
@@ -394,36 +412,6 @@
return self.selected_file_fcp
- def select_parent(self, cmd_app=None):
- """Select the parent file of the currently selected file. This method also works in case the currently selected
- file is an ADF without UICC file system support and can be used to exit those ADFs.
- """
- parent = self.selected_file.parent
- df = self.selected_file
- adf = self.selected_adf
- if adf and adf.has_fs == False:
- # Not every application that may be present on a GlobalPlatform card will support the SELECT
- # command as we know it from ETSI TS 102 221, section 11.1.1. In fact the only subset of
- # SELECT we may rely on is the OPEN SELECT command as specified in GlobalPlatform Card
- # Specification, section 11.9. Unfortunately the OPEN SELECT command only supports the
- # "select by name" method, which means we can only select an application and not a file.
- # The consequence of this is that we may get trapped in an application that does not have
- # ISIM/USIM like file system support and the only way to leave that application is to select
- # an ISIM/USIM application in order to get the file system access back.
- #
- # To automate this escape-route while traversing the file system we will check whether
- # the parent file is the MF. When this is the case and the selected ADF has no file system
- # support, we will select an arbitrary ADF that has file system support first and from there
- # we will then select the MF.
- for selectable in parent.get_selectables().items():
- if isinstance(selectable[1], CardADF) and selectable[1].has_fs == True:
- self.select(selectable[1].name, cmd_app)
- break
- self.select_file(parent, cmd_app)
-
- # Select the parent file normally
- self.select_file(parent, cmd_app)
-
def status(self):
"""Request STATUS (current selected file FCP) from card."""
(data, _sw) = self.scc.status()
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37774?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ie6f37d13af880d24a9c7a8a95cef436b603587c7
Gerrit-Change-Number: 37774
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Attention is currently required from: laforge.
dexter has posted comments on this change by dexter. ( https://gerrit.osmocom.org/c/pysim/+/37641?usp=email )
Change subject: pySim-shell: improve export and enable exportation of DF and ADF files
......................................................................
Patch Set 3:
This change is ready for review.
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37641?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I3ee661dbae5c11fec23911775f352ac13bc2c6e5
Gerrit-Change-Number: 37641
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 08 Aug 2024 14:25:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo_dia2gsup/+/37720?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: examples/sys.config: add pid, delete time
......................................................................
examples/sys.config: add pid, delete time
pid is useful for understanding which process logs messages.
time is not needed, since systemd-journald adds timestamps for us.
Related: OS#6450
Change-Id: I1dd98bae69c6d644870d44f8217262669fc20c6d
---
M examples/sys.config
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
laforge: Looks good to me, approved
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/examples/sys.config b/examples/sys.config
index c85eee7..15b6b35 100644
--- a/examples/sys.config
+++ b/examples/sys.config
@@ -17,8 +17,8 @@
{level, info},
{formatter, lager_default_formatter},
{formatter_config, [
- time, " ",
"[", severity ,"] ",
+ pid, " ",
message, "\n"
]}
]}
--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo_dia2gsup/+/37720?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo_dia2gsup
Gerrit-Branch: master
Gerrit-Change-Id: I1dd98bae69c6d644870d44f8217262669fc20c6d
Gerrit-Change-Number: 37720
Gerrit-PatchSet: 4
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Attention is currently required from: fixeria, laforge, neels.
dexter has posted comments on this change by dexter. ( https://gerrit.osmocom.org/c/osmo-mgw/+/37776?usp=email )
Change subject: mgcp_network: use an uint16_t to store the port number
......................................................................
Patch Set 2:
(1 comment)
Commit Message:
https://gerrit.osmocom.org/c/osmo-mgw/+/37776/comment/f6f6215c_5624c36b?usp… :
PS1, Line 10: byte
> 16 bit!
Done
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/37776?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I392b07b243389a78d4ad1d784cdfdc28ec59b487
Gerrit-Change-Number: 37776
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 07 Aug 2024 07:49:20 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37778?usp=email )
Change subject: pySim.cards: Make file_exists() check for activated/deactivated
......................................................................
pySim.cards: Make file_exists() check for activated/deactivated
The Card.file_exists() method is only called by legacy pySim-{read,prog}
when it wants to determine if it can read/write a file. Therefore
it actually doesn't only want to know if the file exists, but also
if it's not deactivated.
Change-Id: I73bd1ab3780e475c96a10cd5dbdd45b829c67335
Closes: OS#6530
---
M pySim/cards.py
1 file changed, 8 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/78/37778/1
diff --git a/pySim/cards.py b/pySim/cards.py
index 802c921..65aef98 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -23,7 +23,7 @@
#
from typing import Optional, Tuple
-from pySim.ts_102_221 import EF_DIR
+from pySim.ts_102_221 import EF_DIR, CardProfileUICC
from pySim.ts_51_011 import DF_GSM
from pySim.utils import *
@@ -54,10 +54,17 @@
print("warning: erasing is not supported for specified card type!")
def file_exists(self, fid: Path) -> bool:
+ """Determine if the file exists (and is not deactivated)."""
res_arr = self._scc.try_select_path(fid)
for res in res_arr:
if res[1] != '9000':
return False
+ try:
+ d = CardProfileUICC.decode_select_response(res_arr[-1][0])
+ if d.get('life_cycle_status_integer', 'operational_activated') != 'operational_activated':
+ return False
+ except:
+ pass
return True
def read_aids(self) -> List[Hexstr]:
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37778?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I73bd1ab3780e475c96a10cd5dbdd45b829c67335
Gerrit-Change-Number: 37778
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37785?usp=email )
Change subject: runtime: add method to lookup a file by name without selecting it
......................................................................
runtime: add method to lookup a file by name without selecting it
In some cases it might come in handy to be able to lookup a random file
in the file system tree before actually selecting it. This would be
very useful in situations where we need to check the presence of the
file or if we need to check certain file attributes before performing
some task.
Related: OS#6092
Change-Id: I6b6121e749cea843163659e1a26bb3893c032e29
---
M pySim/runtime.py
1 file changed, 36 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/85/37785/1
diff --git a/pySim/runtime.py b/pySim/runtime.py
index 08371ae..5ffbee6 100644
--- a/pySim/runtime.py
+++ b/pySim/runtime.py
@@ -234,6 +234,42 @@
node = node.parent
return None
+ def get_file_by_name(self, name: str) -> CardFile:
+ """Obtain the file object from the file system tree by its name without actually selecting the file.
+
+ Returns:
+ CardFile() instance or None"""
+
+ # handling of entire paths with multiple directories/elements
+ if '/' in name:
+ pathlist = name.split('/')
+ # treat /DF.GSM/foo like MF/DF.GSM/foo
+ if pathlist[0] == '':
+ pathlist[0] = 'MF'
+ else:
+ pathlist = [name]
+
+ # start in the current working directory (we can still
+ # select any ADF and the MF from here, so those will be
+ # among the selectables).
+ file = self.get_cwd()
+
+ for p in pathlist:
+ # Look for the next file in the path list
+ selectables = file.get_selectables().items()
+ file = None
+ for selectable in selectables:
+ if selectable[1].name == name:
+ file = selectable[1]
+ break
+
+ # When we hit none, then the given path must be invalid
+ if file is None:
+ return None
+
+ # Return the file object found at the tip of the path
+ return file
+
def interpret_sw(self, sw: str):
"""Interpret a given status word relative to the currently selected application
or the underlying card profile.
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/37785?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I6b6121e749cea843163659e1a26bb3893c032e29
Gerrit-Change-Number: 37785
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>