1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-13 02:51:50 +00:00
openmptcprouter-feeds/dsvpn/files/init

93 lines
1.8 KiB
Text
Raw Normal View History

2019-08-02 20:37:45 +00:00
#!/bin/sh /etc/rc.common
# Copyright (C) 2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter project
START=90
STOP=10
USE_PROCD=1
PROG_NAME=dsvpn
PROG=/usr/sbin/${PROG_NAME}
_log() {
logger -p daemon.info -t ${PROG_NAME} "$@"
}
_err() {
logger -p daemon.err -t ${PROG_NAME} "$@"
}
validate_section() {
uci_validate_section dsvpn dsvpn "${1}" \
'enable:bool:0' \
'key:string' \
'host:host' \
'port:port' \
'dev:string' \
'localip:host' \
2020-12-03 10:21:43 +00:00
'remoteip:host' \
'mode:string:client' \
'externalip:string:auto'
2019-08-02 20:37:45 +00:00
}
start_instance() {
local enable key host port dev
validate_section "${1}" || {
_err "validation failed"
return 1
}
[ "${enable}" = "1" ] || return 1
[ -n "${key}" ] || return 1
[ "${key}" != "secretkey" ] || return 1
2020-12-03 10:21:43 +00:00
[ -z "${host}" ] && host="auto"
[ -z "${port}" ] && port="auto"
2019-08-02 20:37:45 +00:00
[ -n "${dev}" ] || return 1
echo "${key}" > /tmp/${PROG_NAME}-${1}.key
key=""
2019-08-05 14:56:05 +00:00
if [ "$(uci -q get network.omrvpn)" != "" ] && [ "$(uci -q get network.omrvpn)" != "$dev" ]; then
2019-08-02 20:37:45 +00:00
uci -q set network.omrvpn.ifname=$dev
uci -q commit
fi
2019-08-05 14:56:05 +00:00
ip addr flush $dev
2019-09-17 17:52:15 +00:00
sleep 2
2019-08-05 14:56:05 +00:00
2019-08-02 20:37:45 +00:00
_log "starting ${PROG_NAME} ${1} instance $*"
procd_open_instance
2020-12-03 10:21:43 +00:00
procd_set_param command ${PROG} ${mode} \
2019-08-02 20:37:45 +00:00
/tmp/${PROG_NAME}-${1}.key \
$host \
$port \
$dev \
${localip:+$localip} \
2020-12-03 10:21:43 +00:00
${remoteip:+$remoteip}
[ "$mode" = "client" ] && procd_append_param command $(ip r get $host | awk '{print $3}' | tr -d "\n")
[ "$mode" = "server" ] && procd_append_param command externalip
2019-08-02 20:37:45 +00:00
2019-09-17 17:52:15 +00:00
procd_set_param respawn 0 30 5
2019-08-02 20:37:45 +00:00
procd_set_param file /tmp/${PROG_NAME}-${1}.key
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
start_service() {
config_load dsvpn
config_foreach start_instance dsvpn
}
service_triggers() {
procd_add_reload_trigger dsvpn network
}