mirror of
https://github.com/openwrt/routing.git
synced 2025-01-31 00:11:26 +00:00
ad85bc8142
The alfred server always needs interfaces to operate on. But these interfaces might not exist at the moment when the daemon process is started. This situation stopped the startup process after the init scripts waited for a longer period of polling the system state. But alfred is able to deal with interfaces which disappeared at runtime but existed at startup. To force a similar behavior for the alfred startup, the parameter "--force" or "-f" is used. The extra polling code is therefore no longer needed in the init scripts. Signed-off-by: Sven Eckelmann <sven@narfation.org>
98 lines
2.1 KiB
Bash
Executable File
98 lines
2.1 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
alfred_args=""
|
|
vis_args=""
|
|
facters_dir="/etc/alfred"
|
|
enable=0
|
|
vis_enable=0
|
|
|
|
append_interface()
|
|
{
|
|
append "interfaces" "$1" ","
|
|
}
|
|
|
|
alfred_start() {
|
|
local args=""
|
|
local section="$1"
|
|
local disabled interface mode
|
|
local interfaces
|
|
|
|
# check if section is disabled
|
|
config_get_bool disabled "$section" disabled 0
|
|
[ $disabled = 0 ] || return 1
|
|
|
|
args="-f"
|
|
|
|
config_list_foreach "$section" "interface" append_interface
|
|
if [ -z "$interfaces" ]; then
|
|
config_get interface "$section" interface
|
|
append_interface "$interface"
|
|
fi
|
|
append args "-i $interfaces"
|
|
|
|
config_get mode "$section" mode
|
|
[ "$mode" = "master" ] && append args "-m"
|
|
|
|
config_get batmanif "$section" batmanif
|
|
append args "-b $batmanif"
|
|
|
|
append alfred_args "$args"
|
|
enable=1
|
|
|
|
config_get_bool start_vis "$section" start_vis 0
|
|
if [ "$start_vis" = 1 ] && [ -x /usr/sbin/batadv-vis ]; then
|
|
vis_enable=1
|
|
append vis_args "-i $batmanif -s"
|
|
fi
|
|
|
|
config_get_bool run_facters "$section" run_facters 0
|
|
|
|
return 0
|
|
}
|
|
|
|
start_service() {
|
|
config_load "alfred"
|
|
config_foreach alfred_start alfred
|
|
|
|
[ "$enable" = "0" ] && return 0
|
|
|
|
procd_open_instance "alfred"
|
|
procd_set_param command /usr/sbin/alfred
|
|
procd_append_param command ${alfred_args}
|
|
procd_close_instance
|
|
|
|
[ "$vis_enable" = "1" ] && {
|
|
procd_open_instance "batadv-vis"
|
|
procd_set_param command /usr/sbin/batadv-vis
|
|
procd_append_param command ${vis_args}
|
|
procd_close_instance
|
|
}
|
|
|
|
[ "$run_facters" = "1" ] && {
|
|
( for file in $facters_dir/* ; do [ -x $file ] && $file ; done )
|
|
if ! ( grep -q "for file in $facters_dir/\* ; do " /etc/crontabs/root 2>/dev/null ) ; then
|
|
echo "*/5 * * * * ( for file in $facters_dir/* ; do [ -x \$file ] && \$file ; done )" >> /etc/crontabs/root
|
|
/etc/init.d/cron enable
|
|
/etc/init.d/cron restart
|
|
fi
|
|
}
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "alfred"
|
|
}
|
|
|
|
stop_service() {
|
|
[ -e /etc/crontabs/root ] && {
|
|
sed "\|for file in $facters_dir/\* ; do |d" -i /etc/crontabs/root
|
|
/etc/init.d/cron restart
|
|
}
|
|
}
|