busybox: convert telnet init script to procd
[openwrt.git] / package / utils / busybox / files / telnet
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2006-2011 OpenWrt.org
3
4 START=50
5 USE_PROCD=1
6 PROG=/usr/sbin/telnetd
7 NAME=telnetd
8
9 has_root_pwd() {
10         local pwd=$([ -f "$1" ] && cat "$1")
11               pwd="${pwd#*root:}"
12               pwd="${pwd%%:*}"
13
14         test -n "${pwd#[\!x]}"
15 }
16
17 get_root_home() {
18         local homedir=$([ -f "$1" ] && cat "$1")
19         homedir="${homedir#*:*:0:0:*:}"
20
21         echo "${homedir%%:*}"
22 }
23
24 has_ssh_pubkey() {
25         ( /etc/init.d/dropbear enabled 2> /dev/null && grep -qs "^ssh-" /etc/dropbear/authorized_keys ) || \
26         ( /etc/init.d/sshd enabled 2> /dev/null && grep -qs "^ssh-" "$(get_root_home /etc/passwd)"/.ssh/authorized_keys )
27 }
28
29 start_service() {
30         if ( ! has_ssh_pubkey && \
31              ! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \
32            ( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null );
33         then
34                 procd_open_instance
35                 procd_set_param command "$PROG" -F -l /bin/login.sh
36                 procd_close_instance
37         fi
38 }