mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-11 19:05:11 +08:00
67 lines
1.5 KiB
Bash
Executable File
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
|
|
}
|