SHA256
1
0

Initial commit

This commit is contained in:
2025-12-04 23:23:42 -05:00
commit 765f598313
58 changed files with 2736 additions and 0 deletions

86
scripts/speedtest-compare Executable file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env bash
# This script performs speedtests over Wireguard and native connections and prints their output
set -euo pipefail
usage() {
cat <<-EOF
Usage: speedtest-compare [OPTIONS]
Compare network speed between Wireguard and native connections.
OPTIONS:
-s, --server ID Specify server ID for native test (default: 17170)
-u, --upload Include upload speed test
-h, --help Display this help message
EOF
}
# Parse options
UPLOAD_FLAG="--no-upload"
SERVER_ID="17170"
while [[ $# -gt 0 ]]; do
case "$1" in
-s|--server) shift; SERVER_ID="$1"; shift ;;
-u|--upload) UPLOAD_FLAG=""; shift ;;
-h|--help) usage; exit 0 ;;
*)
echo "[ERROR] Unknown option: $1" >&2
usage
exit 1
;;
esac
done
# Check if speedtest-cli is installed
if ! command -v speedtest-cli &>/dev/null; then
echo "[ERROR] speedtest-cli is not installed. Please install it first." >&2
exit 1
fi
run_test() {
local output pingBps pingPart bpsPart pingInt bpsInt mbpsInt
# Run speedtest-cli and extract the 7th and 8th CSV fields
if ! output=$(speedtest-cli $UPLOAD_FLAG --csv "$@" 2>/dev/null); then
echo "[ERROR] Speedtest failed" >&2
return 1
fi
pingBps=$(echo "$output" | cut -d"," -f7-8)
# Extract ping value (as an integer) and bps (and convert to Mbps)
pingPart="${pingBps%,*}"
bpsPart="${pingBps#*,}"
pingInt="${pingPart%.*}"
bpsInt="${bpsPart%.*}"
mbpsInt=$(( bpsInt / 1000000 ))
echo "$pingInt $mbpsInt"
}
echo "[INFO] Running speedtest comparison..."
echo ""
# Test Wireguard using automatic server selection
echo "Testing Wireguard connection..."
if output=$(run_test); then
read -r pingInt mbpsInt <<< "$output"
echo " Ping: ${pingInt}ms"
echo " Speed: ${mbpsInt}Mbps"
else
echo " [ERROR] Wireguard test failed"
fi
echo ""
# Test native connection to ISP
echo "Testing native connection (server: $SERVER_ID)..."
if output=$(run_test --server "$SERVER_ID"); then
read -r pingInt mbpsInt <<< "$output"
echo " Ping: ${pingInt}ms"
echo " Speed: ${mbpsInt}Mbps"
else
echo " [ERROR] Native test failed"
fi