54 lines
1.2 KiB
Text
54 lines
1.2 KiB
Text
|
#!/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; }
|