summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/ubpasswd.sh66
1 files changed, 54 insertions, 12 deletions
diff --git a/src/ubpasswd.sh b/src/ubpasswd.sh
index 0e5ba2e..34180de 100755
--- a/src/ubpasswd.sh
+++ b/src/ubpasswd.sh
@@ -24,22 +24,24 @@ if ! [[ -x /sbin/mts-hashpwd ]] ; then
exit 1
fi
usage() {
- echo "ubpasswd [-c] [-m] [-n] [-r] [-u] [-d] [-s salt] [password]"
+ echo "ubpasswd [-c] [-d] [-n] [-i] [-m] [-u] [-r] [-f] [-s salt] [password]"
echo " -c clear the U-Boot password"
echo " -d debug"
- echo " -f returns true if U-Boot password"
- echo " feature is available."
- echo " -m means use the mac to generate the password (obsolete)."
echo " -n dryrun for setting password"
+ echo " -i use the uuid to generate the password"
+ echo " -m means use the mac to generate the password."
+ echo " -u means u-boot only (not UNIX password)"
echo " -r returns true if U-Boot password"
echo " is currently required"
+ echo " -f returns true if U-Boot password"
+ echo " feature is available."
echo " -s salt is user supplied salt"
- echo " -u means u-boot only (not UNIX password)"
echo " password is a user supplied password"
echo "A salt not supplied is generated."
echo "If a password is not supplied, it is generated"
- echo "If generating a password, and -m is not supplied,"
- echo "the UUID is used for generating the password"
+ echo "If generating a password. The MAC address is"
+ echo "preferred for generating the password, but the"
+ echo "UUID will be used if the MAC is not present."
exit 1
}
((ubonly=0))
@@ -48,7 +50,7 @@ usage() {
((debug=0))
((upwd=0))
((dryrun=0))
-while getopts ":cdfmnrs:u" opt; do
+while getopts ":cdfimnrs:u" opt; do
case $opt in
c)
u-boot setenv mtsp
@@ -64,17 +66,29 @@ while getopts ":cdfmnrs:u" opt; do
exit 0
fi
;;
+ i)
+ ((useuuid=1))
+ if ! [[ -f "${MTS}/uuid" ]] ; then
+ echo "${MTS}/uuid not found. Maybe mts-io driver is not loaded?"
+ exit 1
+ fi
+ uuid=$(cat "${MTS}/uuid")
+ if ((${#uuid} == 0)) ; then
+ echo "${MTS}/uuid must have a non-zero length value"
+ usage
+ fi
+ ;;
m)
((usemac=1))
+ if ! [[ -f "${MTS}/mac-eth" ]] ; then
+ echo "${MTS}/mac-eth not found. Maybe mts-io driver is not loaded?"
+ exit 1
+ fi
mac=$(cat "${MTS}/mac-eth")
if ((${#mac} == 0)) ; then
echo "${MTS}/mac-eth must have a non-zero length value"
usage
fi
- if ! [[ -f "${MTS}/mac-eth" ]] ; then
- echo "${MTS}/mac-eth not found. Maybe mts-io driver is not loaded?"
- exit 1
- fi
;;
n)
((dryrun=1))
@@ -130,11 +144,37 @@ echo "salt: $salt"
((debug)) && echo upwd is $upwd
((debug)) && echo did length is ${#did}
+
+ if ((useuuid == 0)) && ((usemac == 0)) ; then
+ # Use MAC unless not present.
+ # This is because old code did this, and because
+ # UUID is not present in MTR and old Conduits.
+ ((usemac=1))
+ mac=$(cat "${MTS}/mac-eth")
+ if ((${#mac} == 0)) ; then
+ ((usemac=0))
+ # Check for UUID
+ ((useuuid=1))
+ uuid=$(cat "${MTS}/uuid")
+ if ((${#uuid} == 0)) ; then
+ echo "${MTS}/uuid or ${MTS}/mac-eth must have a non-zero length value"
+ usage
+ fi
+ if ! [[ -f "${MTS}/uuid" ]] ; then
+ echo "${MTS}/uuid not found. Maybe mts-io driver is not loaded?"
+ exit 1
+ fi
+ fi
+fi
+
+
+
if ((upwd == 0)) ; then
if ! [[ -f "${MTS}/device-id" ]] ; then
echo "${MTS}/device-id not found. Maybe mts-io driver is not loaded?"
exit 1
fi
+
did=$(cat "${MTS}/device-id")
if ((${#did} == 0)) ; then
@@ -156,6 +196,8 @@ if ((upwd == 0)) ; then
else
pwdsrc="-d ${did} -m ${mac}"
fi
+
+
if ((debug)) ; then
echo Try this:
echo "/sbin/mts-hashpwd ${pwdsrc} ${salt}"