|
Lines 59-66
Link Here
|
| 59 |
return |
59 |
return |
| 60 |
fi |
60 |
fi |
| 61 |
splash svc_input_begin ${SVCNAME} >/dev/null 2>&1 |
61 |
splash svc_input_begin ${SVCNAME} >/dev/null 2>&1 |
|
|
62 |
|
| 62 |
# Handle keys |
63 |
# Handle keys |
| 63 |
if [ -n "$key" ]; then |
64 |
if [ -n "$key" ]; then |
|
|
65 |
read_abort() { |
| 66 |
local ans |
| 67 |
local prompt=" ${green}*${off} $1? (${red}yes${off}/${green}No${off}) " |
| 68 |
shift |
| 69 |
echo -n -e "${prompt}" >/dev/console |
| 70 |
if ! read -n 1 $* ans </dev/console ; then |
| 71 |
local back=${prompt//?/\\b} |
| 72 |
echo -n -e "${back}" >/dev/console |
| 73 |
else |
| 74 |
echo >/dev/console |
| 75 |
fi |
| 76 |
case $ans in |
| 77 |
[yY]|[yY][eE][sS]) return 0;; |
| 78 |
*) return 1;; |
| 79 |
esac |
| 80 |
} |
| 81 |
|
| 64 |
# Notes: sed not used to avoid case where /usr partition is encrypted. |
82 |
# Notes: sed not used to avoid case where /usr partition is encrypted. |
| 65 |
mode=${key/*:/} && ( [ "$mode" == "$key" ] || [ -z "$mode" ] ) && mode=reg |
83 |
mode=${key/*:/} && ( [ "$mode" == "$key" ] || [ -z "$mode" ] ) && mode=reg |
| 66 |
key=${key/:*/} |
84 |
key=${key/:*/} |
|
Lines 70-90
Link Here
|
| 70 |
if [ -n "$remdev" ]; then |
88 |
if [ -n "$remdev" ]; then |
| 71 |
# temp directory to mount removable device |
89 |
# temp directory to mount removable device |
| 72 |
local mntrem=/mnt/remdev |
90 |
local mntrem=/mnt/remdev |
| 73 |
local c=0 ans |
91 |
local c=0 |
| 74 |
for (( i = 0 ; i < 10 ; i++ )) |
92 |
for (( i = 0 ; i < 10 ; i++ )) |
| 75 |
do |
93 |
do |
| 76 |
[ ! -d "$mntrem" ] && mkdir -p ${mntrem} 2>/dev/null >/dev/null |
94 |
[ ! -d "$mntrem" ] && mkdir -p ${mntrem} 2>/dev/null >/dev/null |
| 77 |
if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then |
95 |
if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then |
| 78 |
sleep 2 |
96 |
read_abort "Stop waiting after $i attempts" -t 1 && return |
| 79 |
# keyfile exists? |
97 |
# keyfile exists? |
| 80 |
if [ ! -e "${mntrem}${key}" ]; then |
98 |
if [ ! -e "${mntrem}${key}" ]; then |
| 81 |
umount -n ${mntrem} 2>/dev/null >/dev/null |
99 |
umount -n ${mntrem} 2>/dev/null >/dev/null |
| 82 |
rmdir ${mntrem} 2>/dev/null >/dev/null |
100 |
rmdir ${mntrem} 2>/dev/null >/dev/null |
| 83 |
einfo "Cannot find ${key} on removable media." |
101 |
einfo "Cannot find ${key} on removable media." |
| 84 |
echo -n -e " ${green}*${off} Abort?(${red}yes${off}/${green}no${off})" >/dev/console |
102 |
read_abort "Abort" ${read_timeout} && return |
| 85 |
read ${read_timeout} ans </dev/console |
103 |
i=0 |
| 86 |
echo >/dev/console |
104 |
c=0 |
| 87 |
[ "$ans" = "no" ] && { i=0; c=0; } || return |
|
|
| 88 |
else |
105 |
else |
| 89 |
key="${mntrem}${key}" |
106 |
key="${mntrem}${key}" |
| 90 |
break |
107 |
break |
|
Lines 92-106
Link Here
|
| 92 |
else |
109 |
else |
| 93 |
[ "$c" -eq 0 ] && einfo "Please insert removable device for ${target}" |
110 |
[ "$c" -eq 0 ] && einfo "Please insert removable device for ${target}" |
| 94 |
c=1 |
111 |
c=1 |
| 95 |
sleep 2 |
112 |
read_abort "Stop waiting after $i attempts" -t 1 && return |
| 96 |
# let user abort |
113 |
# let user abort |
| 97 |
if [ "$i" -eq 9 ]; then |
114 |
if [ "$i" -eq 9 ]; then |
| 98 |
rmdir ${mntrem} 2>/dev/null >/dev/null |
115 |
rmdir ${mntrem} 2>/dev/null >/dev/null |
| 99 |
einfo "Removable device for ${target} not present." |
116 |
einfo "Removable device for ${target} not present." |
| 100 |
echo -n -e " ${green}*${off} Abort?(${red}yes${off}/${green}no${off})" >/dev/console |
117 |
read_abort "Abort" ${read_timeout} && return |
| 101 |
read ${read_timeout} ans </dev/console |
118 |
i=0 |
| 102 |
echo >/dev/console |
119 |
c=0 |
| 103 |
[ "$ans" = "no" ] && { i=0; c=0; } || return |
|
|
| 104 |
fi |
120 |
fi |
| 105 |
fi |
121 |
fi |
| 106 |
done |
122 |
done |