diff options
Diffstat (limited to 'dist/procd')
-rwxr-xr-x | dist/procd/wgconfd | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/dist/procd/wgconfd b/dist/procd/wgconfd new file mode 100755 index 0000000..9cfd438 --- /dev/null +++ b/dist/procd/wgconfd @@ -0,0 +1,55 @@ +#!/bin/sh /etc/rc.common + +START=50 +STOP=50 +USE_PROCD=1 + +handle_interface() { + local iface="$1" + local val + + mkdir -p "/tmp/wgconfd/$1" "/tmp/wgconfd/$1/cache" + procd_open_instance + procd_set_param env RUNTIME_DIRECTORY="/tmp/wgconfd/$1" CACHE_DIRECTORY="/tmp/wgconfd/$1/cache" + procd_set_param command /usr/bin/wgconfd "$1" --cmdline + + config_get val "$1" refresh_sec + [ -n "$val" ] && procd_append_param command refresh_sec "$val" + + config_get val "$1" min_keepalive + [ -n "$val" ] && procd_append_param command min_keepalive "$val" + + config_get val "$1" max_keepalive + [ -n "$val" ] && procd_append_param command max_keepalive "$val" + + config_list_foreach "$1" source handle_source + + procd_set_param respawn 30 5 5 + procd_set_param stderr 1 + procd_close_instance +} + +handle_source() { + local val + config_get val "$1" url + procd_append_param command source "$1" "$val" + + config_get val "$1" psk + [ -n "$val" ] && procd_append_param command psk "$val" + + config_get_bool val "$1" required 0 + [ "$val" -eq 1 ] && procd_append_param command required + + config_list_foreach "$1" ipv4 handle_source_arg ipv4 + + config_list_foreach "$1" ipv6 handle_source_arg ipv6 +} + +handle_source_arg() { + procd_append_param command "$2" "$1" +} + +start_service() { + config_load wgconfd + config_foreach handle_interface interface +} |