#!/bin/sh /etc/rc.common
# Copyright (C) 2014 OpenWrt.org

START=60

USE_PROCD=1

PROG=/usr/sbin/mactelnetd
USERS=/var/etc/mactelnetd.users
SSHMODE=0

add_account() {
	local cfg="$1"
	local user pass

	[ $SSHMODE -eq 0 ] || {
		[ -n "$already_warned" ] || {
			echo "mactelnet.$cfg: login sections ignored in SSH mode" >&1
			already_warned=1
		}
		return
	}

	config_get username "$cfg" username
	config_get password "$cfg" password

	[ -n "$username" ] || {
		echo "mactelnet.$cfg: username missing" >&2
		return
	}

	[ -n "$password" ] || {
		echo "mactelnet.$cfg: password missing" >&2
		return
	}

	echo "$username:$password" >> $USERS
}

add_interface() {
	local iface="$1"
	local device

	[ -n "$iface" ] || return

	if network_get_physdev device "$iface"; then
		procd_append_param command -i "$device"
	fi

	procd_add_reload_interface_trigger "$iface"
}

add_globals() {
	local cfg="$1"

	config_get_bool SSHMODE "$cfg" sshmode 0
	[ $SSHMODE -eq 0 ] || procd_append_param command -S

	config_list_foreach "$cfg" interface add_interface
}

start_service() {
	. /lib/functions/network.sh

	procd_open_instance

	procd_add_reload_trigger mactelnet
	procd_set_param command "$PROG" -f

	config_load mactelnet
	config_foreach add_globals mactelnetd

	[ $SSHMODE -eq 1 ] || {
		rm -f $USERS
		config_foreach add_account login
	}

	procd_close_instance
}