Initial Commit
This commit is contained in:
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
NAME="${1:?instance name missing}"
|
||||
CONFIG_FILE="${CONFIG_FILE:-/etc/relaydock/config.json}"
|
||||
|
||||
command -v jq >/dev/null 2>&1 || { echo "Fehlt: jq" >&2; exit 1; }
|
||||
command -v socat >/dev/null 2>&1 || { echo "Fehlt: socat" >&2; exit 1; }
|
||||
[[ -f "$CONFIG_FILE" ]] || { echo "Config fehlt: $CONFIG_FILE" >&2; exit 1; }
|
||||
|
||||
ROLE=$(jq -r '.role' "$CONFIG_FILE")
|
||||
RULE=$(jq -e --arg name "$NAME" '.rules[] | select(.name == $name)' "$CONFIG_FILE")
|
||||
PROTO=$(jq -r '.proto' <<<"$RULE")
|
||||
LISTEN_PORT=$(jq -r '.listen_port' <<<"$RULE")
|
||||
TARGET_HOST=$(jq -r '.target_host' <<<"$RULE")
|
||||
TARGET_PORT=$(jq -r '.target_port' <<<"$RULE")
|
||||
|
||||
if [[ "$ROLE" == "oracle" ]]; then
|
||||
if [[ "$PROTO" == "udp" ]]; then
|
||||
exec socat "UDP4-LISTEN:${LISTEN_PORT},fork,reuseaddr" "UDP6:[${TARGET_HOST}]:${TARGET_PORT}"
|
||||
else
|
||||
exec socat "TCP4-LISTEN:${LISTEN_PORT},fork,reuseaddr" "TCP6:[${TARGET_HOST}]:${TARGET_PORT}"
|
||||
fi
|
||||
else
|
||||
if [[ "$PROTO" == "udp" ]]; then
|
||||
exec socat "UDP6-LISTEN:${LISTEN_PORT},fork,reuseaddr" "UDP4:${TARGET_HOST}:${TARGET_PORT}"
|
||||
else
|
||||
exec socat "TCP6-LISTEN:${LISTEN_PORT},fork,reuseaddr" "TCP4:${TARGET_HOST}:${TARGET_PORT}"
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user