0
0
mirror of https://github.com/openwrt/packages.git synced 2025-02-07 09:19:51 +00:00
packages/net/netatalk/files/atalkd.init
Antonio Pastor 900e71b607 netatalk: add uci support
Signed-off-by: Antonio Pastor <antonio.pastor@gmail.com>
2025-02-02 19:12:30 +08:00

82 lines
2.0 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2010-2025 OpenWrt.org
START=80
STOP=10
USE_PROCD=1
PROG='/usr/sbin/atalkd'
# Config file, contents and status
default_config="/etc/atalkd.conf"
atalkd_config=''
atalkd_error=0
# Log tag
log_tag='atalkd-init'
NL=$'\n'
generate_config() {
# Setup section
config_file=''
config_overwrite=''
handle_zone() {
local value="$1"
atalkd_config="$atalkd_config -zone $value"
}
parse_interface() {
local section="$1"
local _buffer=''
local _value
local _interface=''
config_get _interface "$section" "interface"
append _buffer "$_interface"
[ -n "$_interface" ] || {
atalkd_error=1 && logger -p err -t "$log_tag" "Missing interface name for interface $section"
}
config_get _value "$section" "mode"
[ -z "$_value" ] || append _buffer "-$_value"
config_get _value "$section" "net"
[ -z "$_value" ] || append _buffer "-net $_value"
config_get _value "$section" "addr"
[ -z "$_value" ] || append _buffer "-addr $_value"
config_get _value "$section" "phase"
[ -z "$_value" ] || append _buffer "-phase $_value"
atalkd_config="$atalkd_config$_buffer"
config_list_foreach "$section" zone handle_zone
atalkd_config="$atalkd_config$NL"
}
config_load atalkd
config_get disabled atalkd disabled '0'
if [ "$disabled" = "1" ] ; then
logger -p info -t $log_tag "Disabled by config"
exit
fi
config_get config_file atalkd config_file "$default_config"
config_get config_overwrite atalkd config_overwrite
if [ "$config_overwrite" == "1" ] ; then
config_foreach parse_interface interface
mkdir -p `dirname "$config_file"`
echo "$atalkd_config" > "$config_file"
logger -p info -t $log_tag "Configuration written to $config_file"
else
logger -p info -t $log_tag 'Configuration not modified - atalkd:config_overwrite=0 or missing'
fi
}
start_service() {
generate_config
[ "$atalkd_error" == "0" ] || exit
procd_open_instance
procd_set_param command $PROG -d -f "$config_file"
procd_set_param file "$config_file"
procd_set_param respawn
procd_close_instance
}