#!/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 } }