#!/bin/sh /etc/rc.common # Copyright 2021 Stan Grishin (stangri@melmac.net) # shellcheck disable=SC2039 PKG_VERSION='dev-test' # shellcheck disable=SC2034 START=80 # shellcheck disable=SC2034 USE_PROCD=1 if type extra_command 1>/dev/null 2>&1; then extra_command 'version' 'Show version information' else # shellcheck disable=SC2034 EXTRA_COMMANDS='version' fi readonly PROG=/usr/sbin/nebula version() { echo "Version: $PKG_VERSION"; } start_instance() { local cfg="$1" port name="${1##*/}" port="$(grep -A2 "^listen:" "$cfg" | grep "port: " | awk '{print $2}')" procd_open_instance procd_set_param command ${PROG} -config "${cfg}" procd_set_param stderr 1 procd_set_param stdout 1 procd_set_param respawn procd_open_data json_add_array firewall json_add_object '' json_add_string type 'rule' json_add_string name "Allow-$name" json_add_string src 'wan' json_add_string dest_port "$port" json_add_string proto 'udp' json_add_string target 'ACCEPT' json_close_object json_close_array procd_close_data procd_close_instance } start_service() { local f for f in /etc/nebula/*.yml; do [ -s "$f" ] && start_instance "$f" done } service_started() { procd_set_config_changed firewall; } service_stopped() { procd_set_config_changed firewall; }