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

(-)1.0.4-dm-crypt-start.sh (-26 / +91 lines)
Lines 54-79 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
									remdev=${x}
79
									break 2;
80
								fi
81
							else
82
								umount ${mntrem} >/dev/null 2>&1
83
							fi						
84
						fi
85
					done
86
					einfo "Removable device for ${target} not present."
87
					echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
88
					read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
89
					echo	>/dev/console
90
					case ${ans} in
91
						a)
92
							remdev=''; i=$((i-1)); sleep 8; continue
93
							;;
94
						q)
95
							return
96
							;;
97
						'')
98
							i=$((i-1)); sleep 8; continue
99
							;;
100
						*)
101
							remdev=${ans}; i=0; sleep 8
102
							;;
103
					esac
104
				else
64
					if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then
105
					if mount -n -o ro ${remdev} ${mntrem} 2>/dev/null >/dev/null ; then
65
						sleep 2
106
						sleep 2
66
						# keyfile exists?
107
						# keyfile exists?
67
						if [ ! -e "${mntrem}${key}" ]; then
108
						if [ ! -e "${mntrem}/${key}" ]; then
68
							umount -n ${mntrem} 2>/dev/null >/dev/null
109
							umount -n ${mntrem} 2>/dev/null >/dev/null
69
							rmdir ${mntrem} 2>/dev/null >/dev/null
110
							einfo "Cannot find ${key} on removable media ${remdev}."
70
							einfo "Cannot find ${key} on removable media."
111
							echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
71
							echo -n -e " ${green}*${off}  Abort?(${red}yes${off}/${green}no${off})" >/dev/console	
112
							read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
72
							read ans </dev/console
73
							echo	>/dev/console
113
							echo	>/dev/console
74
							[ "$ans" != "yes" ] && { i=0; c=0; } || return 
114
							case "${ans}" in
115
								a)
116
									unset remdev; i=$((i-2)); c=0; sleep 8; continue
117
									;;
118
								q)
119
									return
120
									;;
121
								'')
122
									i=0; c=0; sleep 8; continue
123
									;;
124
								*)
125
									remdev=${ans}; i=0; c=0; continue
126
									;;
127
							esac
75
						else
128
						else
76
							key="${mntrem}${key}"
129
							key="${mntrem}/${key}"
77
							break
130
							break
78
						fi
131
						fi
79
					else
132
					else
Lines 82-102 Link Here
82
						sleep 2
135
						sleep 2
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
							einfo "Removable device ${remdev} for ${target} not present."
86
							einfo "Removable device for ${target} not present."
139
							echo -n -e " ${green}*${off}  Auto search (${green}a${off}), quit (${red}q${off}) or input device name:" >/dev/console	
87
							echo -n -e " ${green}*${off}  Abort?(${red}yes${off}/${green}no${off})" >/dev/console
140
							read -t 25 ans </dev/console; [ "$?" != '0' ] && continue
88
							read ans </dev/console
141
							echo	>/dev/console
89
							echo  >/dev/console
142
							case ${ans} in
90
							[ "$ans" != "yes" ] && { i=0; c=0; } || return
143
								a)
144
									unset remdev; i=$((i-2)); c=0; sleep 8; continue
145
									;;
146
								q)
147
									return
148
									;;
149
								'')
150
									i=0; c=0; sleep 8
151
									;;
152
								*)
153
									remdev=${ans}; i=0; c=0; sleep 8
154
									;;
155
							esac
91
						fi
156
						fi
92
					fi
157
					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
158
				fi
159
			done
160
			# keyfile ! on removable device
161
			if [ ! -e "$key" ]; then
162
				ewarn "${source} will not be decrypted ..."
163
				einfo "Reason: keyfile ${key} does not exist."
164
				return
100
			fi
165
			fi
101
			;;
166
			;;
102
		*)
167
		*)

Return to bug 189901