Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 189901 | Differences between
and this patch

Collapse All | Expand All

(-)dm-crypt-start.sh (-23 / +89 lines)
Lines 54-77 Link Here
54
		case "$mode" in
54
		case "$mode" in
55
		gpg|reg)
55
		gpg|reg)
56
			# handle key on removable device
56
			# handle key on removable device
57
			if [ -n "$remdev" ]; then
57
			local mntrem=/mnt/remdev c=0 ans i devices
58
				# temp directory to mount removable device
58
			[ ! -d "$mntrem" ] && mkdir -p ${mntrem} 2>/dev/null >/dev/null
59
				local mntrem=/mnt/remdev
59
			for (( i = 0 ; i < 10 ; i++ )); do
60
				local c=0 ans
60
				if [ -f "${key}" ]; then
61
				for (( i = 0 ; i < 10 ; i++ ))
61
					break;
62
				do
62
				elif [ -z "$remdev" ]; then
63
					[ ! -d "$mntrem" ] && mkdir -p ${mntrem} 2>/dev/null >/dev/null
63
					ebegin " Guessing the key device"
64
					# usb keychain/storage
65
					devices="/dev/sd*"
66
					# ide
67
					devices="${devices} /dev/hd*"
68
					# usb using the 'usb block driver'
69
					devices="${devices} /dev/ubd* /dev/ubd/*"
70
					# cdrom's
71
					devices="${devices} /dev/cdroms/* /dev/ide/cd/* /dev/sr*"				
72
					for x in ${devices}; do
73
						if [ -b "${x}" ]; then
74
							mount -r -t auto ${x} ${mntrem} >/dev/null 2>&1
75
							if [ "$?" = '0' ]; then
76
								if [ -f "${mntrem}/${key}" ]; then
77
									key="${mntrem}/${key}"
78
									break 2;
79
								fi
80
							else
81
								umount ${mntrem} >/dev/null 2>&1
82
							fi						
83
						fi
84
					done
85
					einfo "Removable device for ${target} not present."
86
					echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
87
					read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
88
					echo	>/dev/console
89
					case ${ans} in
90
						a)
91
							remdev=''; i=$((i-1)); sleep 8; continue
92
							;;
93
						q)
94
							return
95
							;;
96
						'')
97
							i=$((i-1)); sleep 8; continue
98
							;;
99
						*)
100
							remdev=${ans}; i=0; sleep 8
101
							;;
102
					esac
103
				else
64
					if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then
104
					if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then
65
						sleep 2
105
						sleep 2
66
						# keyfile exists?
106
						# keyfile exists?
67
						if [ ! -e "${mntrem}${key}" ]; then
107
						if [ ! -e "${mntrem}/${key}" ]; then
68
							umount -n ${mntrem} 2>/dev/null >/dev/null
108
							umount -n ${mntrem} 2>/dev/null >/dev/null
69
							rmdir ${mntrem} 2>/dev/null >/dev/null
109
							rmdir ${mntrem} 2>/dev/null >/dev/null
70
							einfo "Cannot find ${key} on removable media."
110
							einfo "Cannot find ${key} on removable media ${remdev}."
71
							echo -n -e " ${green}*${off}  Abort?(${red}yes${off}/${green}no${off})" >/dev/console	
111
							echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
72
							read ans </dev/console
112
							read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
73
							echo	>/dev/console
113
							echo	>/dev/console
74
							[ "$ans" != "yes" ] && { i=0; c=0; } || return 
114
							case "${ans}" in
115
								a)
116
									remdev=''; i=$((i-2)); c=0; sleep 8; continue
117
									;;
118
								q)
119
									return
120
									;;
121
								'')
122
									i=0; c=0; sleep 8
123
									;;
124
								*)
125
									remdev=${ans}; i=0; c=0;
126
									;;
127
							esac
75
						else
128
						else
76
							key="${mntrem}${key}"
129
							key="${mntrem}${key}"
77
							break
130
							break
Lines 83-102 Link Here
83
						# let user abort
136
						# let user abort
84
						if [ "$i" -eq 9 ]; then
137
						if [ "$i" -eq 9 ]; then
85
							rmdir ${mntrem} 2>/dev/null >/dev/null
138
							rmdir ${mntrem} 2>/dev/null >/dev/null
86
							einfo "Removable device for ${target} not present."
139
							einfo "Removable device ${remdev} for ${target} not present."
87
							echo -n -e " ${green}*${off}  Abort?(${red}yes${off}/${green}no${off})" >/dev/console
140
							echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
88
							read ans </dev/console
141
							read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
89
							echo  >/dev/console
142
							echo	>/dev/console
90
							[ "$ans" != "yes" ] && { i=0; c=0; } || return
143
							case ${ans} in
144
								a)
145
									remdev=''; i=$((i-2)); c=0; sleep 8; continue
146
									;;
147
								q)
148
									return
149
									;;
150
								'')
151
									i=0; c=0; sleep 8
152
									;;
153
								*)
154
									remdev=${ans}; i=0; c=0; sleep 8
155
									;;
156
							esac
91
						fi
157
						fi
92
					fi
158
					fi
93
				done
94
			else    # keyfile ! on removable device
95
				if [ ! -e "$key" ]; then
96
					ewarn "${source} will not be decrypted ..."
97
					einfo "Reason: keyfile ${key} does not exist."
98
					return
99
				fi
159
				fi
160
			done
161
			# keyfile ! on removable device
162
			if [ ! -e "$key" ]; then
163
				ewarn "${source} will not be decrypted ..."
164
				einfo "Reason: keyfile ${key} does not exist."
165
				return
100
			fi
166
			fi
101
			;;
167
			;;
102
		*)
168
		*)

Return to bug 189901