blob: 701ce98e9ee72128eca9055f916879ab42718752 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh /etc/rc.common
2# Copyright (C) 2014 OpenWrt.org
3
4START=60
5
6USE_PROCD=1
7
8PROG=/usr/sbin/mactelnetd
9USERS=/var/etc/mactelnetd.users
10SSHMODE=0
11
12add_account() {
13 local cfg="$1"
14 local user pass
15
16 [ $SSHMODE -eq 0 ] || {
17 [ -n "$already_warned" ] || {
18 echo "mactelnet.$cfg: login sections ignored in SSH mode" >&1
19 already_warned=1
20 }
21 return
22 }
23
24 config_get username "$cfg" username
25 config_get password "$cfg" password
26
27 [ -n "$username" ] || {
28 echo "mactelnet.$cfg: username missing" >&2
29 return
30 }
31
32 [ -n "$password" ] || {
33 echo "mactelnet.$cfg: password missing" >&2
34 return
35 }
36
37 echo "$username:$password" >> $USERS
38}
39
40add_interface() {
41 local iface="$1"
42 local device
43
44 [ -n "$iface" ] || return
45
46 if network_get_physdev device "$iface"; then
47 procd_append_param command -i "$device"
48 fi
49
50 procd_add_reload_interface_trigger "$iface"
51}
52
53add_globals() {
54 local cfg="$1"
55
56 config_get_bool SSHMODE "$cfg" sshmode 0
57 [ $SSHMODE -eq 0 ] || procd_append_param command -S
58
59 config_list_foreach "$cfg" interface add_interface
60}
61
62start_service() {
63 . /lib/functions/network.sh
64
65 procd_open_instance
66
67 procd_add_reload_trigger mactelnet
68 procd_set_param command "$PROG" -f
69
70 config_load mactelnet
71 config_foreach add_globals mactelnetd
72
73 [ $SSHMODE -eq 1 ] || {
74 rm -f $USERS
75 config_foreach add_account login
76 }
77
78 procd_close_instance
79}
80