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