blob: df51271384692fbe94346a1e4de4fd569bf00270 [file] [log] [blame]
#!/bin/dash
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# 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.PrivateKey
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