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