mirror of
https://github.com/ivanilves/xiringuito.git
synced 2025-05-21 01:30:27 -07:00
Merge pull request #26 from ivanilves/feature/configurable-failed-pings
Configurable failed pings
This commit is contained in:
commit
f94762b983
@ -2,13 +2,14 @@
|
|||||||
#
|
#
|
||||||
# Execute/teardown on the server side
|
# Execute/teardown on the server side
|
||||||
#
|
#
|
||||||
if [[ ${#} != 2 ]]; then
|
if [[ ${#} != 3 ]]; then
|
||||||
echo "Usage: ${0} TUNNEL_ID IP_BASE"
|
echo "Usage: ${0} TUNNEL_ID IP_BASE MAX_FAILED_PINGS"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
declare -r TUNNEL_ID=${1}
|
declare -r TUNNEL_ID=${1}
|
||||||
declare -r IP_BASE=${2}
|
declare -r IP_BASE=${2}
|
||||||
|
declare -r MAX_FAILED_PINGS=${3}
|
||||||
|
|
||||||
declare -r NETWORK_DEVICE=tun${TUNNEL_ID}
|
declare -r NETWORK_DEVICE=tun${TUNNEL_ID}
|
||||||
let CLIENT_LAST_IP_ADDR_OCTET="4*(${TUNNEL_ID}-1)+1"
|
let CLIENT_LAST_IP_ADDR_OCTET="4*(${TUNNEL_ID}-1)+1"
|
||||||
@ -26,11 +27,11 @@ function teardown() {
|
|||||||
echo "CONNECTED"
|
echo "CONNECTED"
|
||||||
|
|
||||||
FAILED_PINGS=0
|
FAILED_PINGS=0
|
||||||
while [[ ${FAILED_PINGS} -lt 10 ]]; do
|
while [[ ${FAILED_PINGS} -lt ${MAX_FAILED_PINGS} ]]; do
|
||||||
ping -c3 -nq ${CLIENT_IP_ADDR} >/dev/null
|
ping -c3 -nq ${CLIENT_IP_ADDR} >/dev/null
|
||||||
if [[ ${?} -ne 0 ]]; then
|
if [[ ${?} -ne 0 ]]; then
|
||||||
let FAILED_PINGS+=1
|
let FAILED_PINGS+=1
|
||||||
logger -i -p warn "xiringuito[${TUNNEL_ID}]: Failed to ping ${CLIENT_IP_ADDR} (${FAILED_PINGS})"
|
logger -i -p warn "xiringuito[${TUNNEL_ID}]: Failed to ping ${CLIENT_IP_ADDR} (${FAILED_PINGS}/${MAX_FAILED_PINGS})"
|
||||||
else
|
else
|
||||||
FAILED_PINGS=0
|
FAILED_PINGS=0
|
||||||
fi
|
fi
|
||||||
|
22
xiringuito
22
xiringuito
@ -8,6 +8,7 @@ function print_help() {
|
|||||||
echo "Usage: ${0} [OPTIONS] [SSH_USER@]SSH_SERVER [NETWORK1, NETWORK2, ... NETWORKx]"
|
echo "Usage: ${0} [OPTIONS] [SSH_USER@]SSH_SERVER [NETWORK1, NETWORK2, ... NETWORKx]"
|
||||||
echo
|
echo
|
||||||
echo "OPTIONS"
|
echo "OPTIONS"
|
||||||
|
echo "-f X fail connection after X ping failures"
|
||||||
echo "-R do not reconnect after connection failure"
|
echo "-R do not reconnect after connection failure"
|
||||||
echo "-D do not fetch DNS config from server"
|
echo "-D do not fetch DNS config from server"
|
||||||
echo "-h show this extremely helpful message"
|
echo "-h show this extremely helpful message"
|
||||||
@ -37,8 +38,19 @@ fi
|
|||||||
declare -r ORIGINAL_EXEC=${0}
|
declare -r ORIGINAL_EXEC=${0}
|
||||||
declare -r ORIGINAL_ARGS=${@}
|
declare -r ORIGINAL_ARGS=${@}
|
||||||
|
|
||||||
while getopts "RDrh" o; do
|
while getopts "f:RDrh" o; do
|
||||||
case ${o} in
|
case ${o} in
|
||||||
|
f)
|
||||||
|
MAX_FAILED_PINGS=${OPTARG}
|
||||||
|
if [[ ! ${MAX_FAILED_PINGS} =~ ^[0-9]{1,}$ ]]; then
|
||||||
|
echo "'-f' option accepts only positive integer values"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ${MAX_FAILED_PINGS} -eq 0 ]]; then
|
||||||
|
echo "'-f' option value should be greater then zero"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
R)
|
R)
|
||||||
NO_RECONNECT=true
|
NO_RECONNECT=true
|
||||||
;;
|
;;
|
||||||
@ -58,6 +70,8 @@ while getopts "RDrh" o; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
declare -r MAX_FAILED_PINGS=${MAX_FAILED_PINGS-10}
|
||||||
|
|
||||||
shift $((OPTIND-1))
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
cd $(dirname ${0})
|
cd $(dirname ${0})
|
||||||
@ -124,7 +138,7 @@ if [[ ${KERNEL} == linux ]]; then
|
|||||||
else
|
else
|
||||||
SSH_TUNNEL_CMD="sudo -E ssh"
|
SSH_TUNNEL_CMD="sudo -E ssh"
|
||||||
fi
|
fi
|
||||||
${SSH_TUNNEL_CMD} ${SSH_OPTS} -oStrictHostKeyChecking=no -w ${LOCAL_TUNNEL_ID}:${TUNNEL_ID} ${SSH_SERVER} ${REMOTE_PATH}/server-execute.sh ${TUNNEL_ID} ${IP_BASE} &
|
${SSH_TUNNEL_CMD} ${SSH_OPTS} -oStrictHostKeyChecking=no -w ${LOCAL_TUNNEL_ID}:${TUNNEL_ID} ${SSH_SERVER} ${REMOTE_PATH}/server-execute.sh ${TUNNEL_ID} ${IP_BASE} ${MAX_FAILED_PINGS} &
|
||||||
SSH_PID=${!}
|
SSH_PID=${!}
|
||||||
sudo ./scripts/${KERNEL}/client-teardown.sh ${$} ${SSH_PID} ${LOCAL_TUNNEL_ID} &
|
sudo ./scripts/${KERNEL}/client-teardown.sh ${$} ${SSH_PID} ${LOCAL_TUNNEL_ID} &
|
||||||
|
|
||||||
@ -158,13 +172,13 @@ fi
|
|||||||
|
|
||||||
set +e
|
set +e
|
||||||
FAILED_PINGS=0
|
FAILED_PINGS=0
|
||||||
while [[ ${FAILED_PINGS} -lt 10 ]]; do
|
while [[ ${FAILED_PINGS} -lt ${MAX_FAILED_PINGS} ]]; do
|
||||||
kill -0 ${SSH_PID} &>/dev/null || break
|
kill -0 ${SSH_PID} &>/dev/null || break
|
||||||
|
|
||||||
./scripts/client-ping-server.sh ${TUNNEL_ID} ${IP_BASE}
|
./scripts/client-ping-server.sh ${TUNNEL_ID} ${IP_BASE}
|
||||||
if [[ ${?} -ne 0 ]]; then
|
if [[ ${?} -ne 0 ]]; then
|
||||||
let FAILED_PINGS+=1
|
let FAILED_PINGS+=1
|
||||||
echo "* Failed to ping server-side tunnel endpoint... (${FAILED_PINGS})"
|
echo "* Failed to ping server-side tunnel endpoint... (${FAILED_PINGS}/${MAX_FAILED_PINGS})"
|
||||||
else
|
else
|
||||||
FAILED_PINGS=0
|
FAILED_PINGS=0
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user