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