| #!/bin/dash | |
| # Copyright 2012 The ChromiumOS Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| . /usr/lib/connectivity-common.sh | |
| OCF=org.chromium.flimflam | |
| MASKED_PROPERTIES=" | |
| Address | |
| Cellular.ESN | |
| Cellular.ICCID | |
| Cellular.IMEI | |
| Cellular.IMSI | |
| Cellular.MDN | |
| Cellular.MEID | |
| Cellular.MIN | |
| Cellular.UsageUrl | |
| EAP.AnonymousIdentity | |
| EAP.CACertID | |
| EAP.CACertNSS | |
| EAP.CertID | |
| EAP.EAP | |
| EAP.Identity | |
| EAP.InnerEAP | |
| EAP.KeyID | |
| EAP.PIN | |
| EAP.SubjectMatch | |
| Name | |
| WiFi.BSSID | |
| WiFi.HexSSID | |
| WiFi.SSID | |
| " | |
| MASKED_PROPERTIES_PATTERN=$(echo ${MASKED_PROPERTIES} | sed 's/ /|/g') | |
| mask_properties() { | |
| sed -E "s/\<(${MASKED_PROPERTIES_PATTERN}): (.+)/\1: *** MASKED ***/i" | |
| } | |
| # Returns a list of flimflam objects of the specified kind. | |
| get_flimflam_objects() { | |
| # NB: add s to pluralize kind | |
| local kind="${1}s" | |
| local filter="$2" | |
| dbus_call "${OCF}" / "${OCF}.Manager.GetProperties" \ | |
| | extract_dbus_match "${kind}" \ | |
| | grep "${filter}" | |
| } | |
| print_properties() { | |
| local kind="$1" | |
| local object="$2" | |
| dbus_call "${OCF}" "${object}" "${OCF}.${kind}.GetProperties" | stripindexes | |
| } | |
| normalize_kind() { | |
| local kind="${1%s}" # Remove trailing s | |
| case "${kind}" in | |
| [Ss]ervice) | |
| echo -n Service | |
| ;; | |
| [Dd]evice) | |
| echo -n Device | |
| ;; | |
| *) | |
| error_exit "Did not understand connection manager entity ${kind}." | |
| ;; | |
| esac | |
| } | |
| show() { | |
| $(needarg raw_kind) | |
| $(arg_or_default filter .) | |
| local kind=$(normalize_kind "${raw_kind}") | |
| local objects="$(get_flimflam_objects ${kind} ${filter})" | |
| for object in ${objects}; do | |
| echo "${object}" | |
| print_properties "${kind}" "${object}" | |
| echo | |
| done | |
| } | |
| usage() { | |
| cat <<EOF | |
| Usage: $0 <command> [args...] | |
| show {Devices|Services} [-filter regex] | |
| Show these objects and their properties: If a filter is supplied, | |
| use it to filter object names. | |
| EOF | |
| exit | |
| } | |
| $(needarg cmd) | |
| case "$cmd" in | |
| show) | |
| show "$@" | |
| ;; | |
| show-feedback) | |
| show "$@" | mask_properties | |
| ;; | |
| *) | |
| usage | |
| ;; | |
| esac |