summary refs log tree commit diff
path: root/bin/hspl
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-02-10 12:32:48 +0100
committerRobert Günzler <r@gnzler.io>2026-02-10 12:41:25 +0100
commit63feeb9f369fc6176e85c1c2d8fcc863caad1946 (patch)
tree41cd5d2d1ec36e74e464caab722cc9b460153f04 /bin/hspl
parent5bd0a4aca65ecb9818ef1285982d160b6b6ff665 (diff)
start new
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'bin/hspl')
-rwxr-xr-xbin/hspl131
1 files changed, 0 insertions, 131 deletions
diff --git a/bin/hspl b/bin/hspl
deleted file mode 100755
index aca5516..0000000
--- a/bin/hspl
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-
-set -e
-[ -n "$DEBUG" ] && set -x
-
-print_gateway_uri=
-print_time_diff=
-print_json=
-if=wlan0
-debug=
-while getopts djuhDI: opt; do
-	case "$opt" in
-	d) print_time_diff=1 ;;
-	j) print_json=1 ;;
-	u) print_gateway_uri=1 ;;
-	I) if=$OPTARG ;;
-	D) debug=1 ;;
-	h | ?)
-		printf "usage: hspl [options]\n"
-		printf "\n"
-		printf "supported hotspot vendors:\n"
-		printf "    hotsplots.de (e.g. Espresso House / public libraries)\n"
-		printf "    pbspot (e.g. CoffeeFellows)\n"
-		printf "\n"
-		printf "options:\n"
-		printf "  -d   print time until expiry in seconds\n"
-		printf "  -j   output json\n"
-		printf "  -u   print gateway address\n"
-		printf "  -I   use a specific interface (default: %s)\n" "$if"
-		printf "  -D   emit the html for debugging\n"
-		printf "\n"
-		exit 2
-		;;
-	esac
-done
-shift $((OPTIND - 1))
-
-gateway=$(ip route show dev "$if" | awk '/default via/{print $3; exit}')
-
-if [ -n "$print_gateway_uri" ]; then
-	echo "$gateway"
-	exit 0
-fi
-
-html=$(curl -Ls --interface "$if" "$gateway")
-
-t=
-tx=
-rx=
-logged_in=0
-vendor=unknown
-name=unknown
-
-if [ -n "$debug" ]; then
-	echo "$html"
-	exit 1
-fi
-
-# hotspot vendor implementations go here:
-
-if grep -q pbspot <<<"$html"; then
-	vendor=pbspot
-	# TODO: logged_in=$(grep -qi 'eingeloggt seit' && echo 1)
-	t=$(grep -i 'expires' <<<"$html" | awk -F 'td>' '{print $4}' | tr -d '</' | tr -d ':' | sed -e 's,s, seconds,' -e 's,m, minutes,')
-	t=${t:-unlimited}
-	tx=$(grep -i 'transmitted' <<<"$html" | awk -F 'td>' '{print $4}' | tr -d '</')
-	rx=$(grep -i 'received' <<<"$html" | awk -F 'td>' '{print $4}' | tr -d '</')
-fi
-
-if grep -q hotsplots <<<"$html"; then
-	vendor=hotsplots
-	html=$(sed 's,\/tr>,\/tr>\n,g' <<<"$html")
-	logged_in=$(grep -qi 'eingeloggt seit' <<<"$html" && echo 1 || echo 0)
-	t=$(grep -i 'verbleibende zeit' <<<"$html" | awk -F 'td>' '{print $3}' | tr -d '</' | sed -e 's,&nbsp,,' -e 's,h, hours,' -e 's,min, minutes,' -e 's,sec, seconds,')
-	t=${t:-unlimited}
-	tx=$(grep -i 'übertragene daten' <<<"$html" | awk -F 'td>' '{print $3}' | tr -d '</' | sed -e 's,&nbsp,,' -e 's, (.*),,')
-	rx="-"
-	name=$(grep -i 'loginHead' <<<"$html" | awk -F 'h2>' '{print $2}' | tr -d '</')
-fi
-
-# end of hotspot vendor implementations
-
-if [ "$logged_in" -eq 0 ]; then
-	echo "not logged in" >&2
-	echo "open" "$gateway" "and complete hotspot sign in process" >&2
-	echo "" >&2
-	exit 1
-fi
-
-if [ -z "$t" ]; then
-	echo "no hotspot or unimplemented vendor" >&2
-	exit 1
-fi
-
-if [ "$t" != "unlimited" ]; then
-	expiry_time=$(date --date "now + $t" +%s)
-	remaining=$(((expiry_time - $(date +%s))))
-
-	if [ -n "$print_time_diff" ]; then
-		echo "$remaining"
-		exit 0
-	fi
-
-	# format remaining time like: 5h30m or 10s
-	remaining=$(awk '{
-		s=$0
-		h=(s/60/60);
-		if(h>1){ printf "%dh", h }
-		m=(s/60%60)
-		if(m>1){ printf "%dm", m }
-		if(h<1 && m<1){ printf "%ds", $0 }
-	}' <<<"$remaining")
-else
-	remaining=$t
-fi
-
-if [ -n "$print_json" ]; then
-	jq -n --args '{
-		remaining:$ARGS.positional[0],
-		tx:$ARGS.positional[1],
-		rx:$ARGS.positional[2],
-		t:$ARGS.positional[3],
-		vendor:$ARGS.positional[4],
-		name:$ARGS.positional[5]
-	}' "$remaining" "$tx" "$rx" "$t" "$vendor" "$name"
-else
-	echo "$remaining"
-	echo "TX:" "$tx"
-	echo "RX:" "$rx"
-	echo "[" "$name" "]"
-fi