summaryrefslogtreecommitdiff
path: root/package/base-files/files/lib/preinit/99_10_failsafe_login
blob: 728c63b2e8aebf970cd7dff0d15518ccda83029c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# Copyright (C) 2006-2015 OpenWrt.org
# Copyright (C) 2010 Vertical Communications

failsafe_netlogin () {
	dropbearkey -t rsa -s 1024 -f /tmp/dropbear_failsafe_host_key
	dropbear -r /tmp/dropbear_failsafe_host_key <> /dev/null 2>&1
}

failsafe_shell() {
	local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
	[ -n "$console" ] || console=console
	[ -c "/dev/$console" ] || return 0
	while true; do
		ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
		sleep 1
	done &
}

boot_hook_add failsafe failsafe_netlogin
boot_hook_add failsafe failsafe_shell