Files
op-packages/openwrt-mwgp/files/mwgp.init
T

67 lines
1.5 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
# Change paths if you installed mwgp elsewhere
PROG=/usr/bin/mwgp
CONFIG_DIR=/tmp/etc/mwgp
CONFIG_FILE=${CONFIG_DIR}/config.json
CACHE_FILE=/tmp/etc/mwgp_cache.json
NAME=mwgp
function config() {
echo "{"
echo " \"listen\": \":1000\","
echo " \"timeout\": 60,"
echo " \"servers\": ["
OUTER=true
uci show network | grep proto | grep wireguard | sed "s|\.| |g" | while read A B C; do
[[ ${OUTER} == false ]] && echo ","
echo " {"
echo " \"privkey\": \"$(uci get network.${B}.private_key)\","
echo " \"peers\": ["
ADDR=127.0.0.1:$(uci get network.${B}.listen_port)
INNER=true
uci show network | grep network.${B}_ | grep public_key | sed "s|[=\']| |" | while read D E; do
[[ ${INNER} == false ]] && echo ","
echo " {"
echo " \"pubkey\": ${E//\'/\"},"
echo " \"forward_to\": \"${ADDR}\""
echo -e " }"
INNER=false
done
echo " ]"
echo " }"
OUTER=false
done
echo " ]"
echo "}"
}
start_service() {
mkdir -p ${CONFIG_DIR}
config | tee > ${CONFIG_FILE}
procd_open_instance
procd_set_param command ${PROG} server ${CONFIG_FILE} --cache-file ${CACHE_FILE}
# Respawn if the process crashes
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
# Send a kill signal to stop the instance safely
procd_send_signal $NAME
}
reload_service() {
restart
}