#!/bin/sh /etc/rc.common USE_PROCD=1 START=99 CONF="mihomo" PROG="/usr/bin/mihomo" start_service() { config_load "$CONF" local enabled conffile workdir ifaces local log_stdout log_stderr config_get_bool enabled "main" "enabled" "0" [ "$enabled" -eq "1" ] || return 0 config_get conffile "main" "conffile" "/etc/mihomo/config.yaml" config_get workdir "main" "workdir" "/etc/mihomo" config_get ifaces "main" "ifaces" config_get_bool log_stdout "main" "log_stdout" "1" config_get_bool log_stderr "main" "log_stderr" "1" mkdir -p "$workdir" procd_open_instance "$CONF.main" procd_set_param command "$PROG" -d "$workdir" -f "$conffile" procd_set_param file "$conffile" [ -z "$ifaces" ] || procd_set_param netdev $ifaces procd_set_param stdout "$log_stdout" procd_set_param stderr "$log_stderr" procd_set_param limits core="unlimited" procd_set_param limits nofile="1000000 1000000" procd_set_param respawn procd_close_instance } service_triggers() { local ifaces config_load "$CONF" config_get ifaces "main" "ifaces" procd_open_trigger for iface in $ifaces; do procd_add_interface_trigger "interface.*.up" "$iface" \ /etc/init.d/$CONF restart done procd_close_trigger procd_add_reload_trigger "$CONF" }