#!/bin/sh /etc/rc.common # Copyright (C) 2019 Dengfeng Liu START=99 USE_PROCD=1 NAME=kcptun-s PROG=/usr/bin/${NAME} validate_section_kcptun() { uci_load_validate "${NAME}" kcptun "$1" "$2" \ 'local_port:port' \ 'target_ip:string' \ 'target_port:port' \ 'mode:string' \ 'nocomp:bool' \ 'sndwnd:uinteger' \ 'rcvwnd:uinteger' \ 'disabled:bool' } kcptun_instance() { [ "$2" = 0 ] || { echo "validation failed" return 1 } [ "${disabled}" = "1" ] && return 1 [ "${local_port}" -gt 0 ] && [ "${local_port}" -lt 65536 ] || return 1 [ "${target_port}" -gt 0 ] && [ "${target_port}" -lt 65536 ] || return 1 [ -n "${target_ip}" ] || { return 1 } procd_open_instance procd_set_param command "${PROG}" procd_append_param command --listen ":${local_port}" procd_append_param command --target "${target_ip}:${target_port}" [ -n "${mode}" ] && procd_append_param command --mode "${mode}" [ "${nocomp}" -eq 1 ] && procd_append_param command --nocomp [ "${sndwnd}" -gt 0 ] && procd_append_param command --sndwnd "${sndwnd}" [ "${rcvwnd}" -gt 0 ] && procd_append_param command --rcvwnd "${rcvwnd}" procd_set_param respawn procd_close_instance } start_service() { config_load "${NAME}" config_foreach validate_section_kcptun kcptun kcptun_instance }