summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Ole Bulling <Marc-Ole@gmx.de>2023-11-27 17:15:17 +0100
committerDirk Brenken <dev@brenken.org>2024-01-06 21:01:46 +0100
commit389a100bbc659b8200ccffddcb3e05212a2a0e56 (patch)
tree30a73ca33df8cd520890117766de2e74141017d5
parent766a5af5d92eaaba0d947176e490241cf06e9659 (diff)
travelmate: Added H-Rewards hotel login
Signed-off-by: Marc Ole Bulling <Marc-Ole@gmx.de> (cherry picked from commit f12c63b9b988b2046fb2059fd9ce7b2fd2efd4b4)
-rw-r--r--net/travelmate/Makefile2
-rwxr-xr-xnet/travelmate/files/hreward.login77
2 files changed, 78 insertions, 1 deletions
diff --git a/net/travelmate/Makefile b/net/travelmate/Makefile
index 45b9ceb31..ef0bf2779 100644
--- a/net/travelmate/Makefile
+++ b/net/travelmate/Makefile
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=travelmate
PKG_VERSION:=2.1.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
diff --git a/net/travelmate/files/hreward.login b/net/travelmate/files/hreward.login
new file mode 100755
index 000000000..01342a151
--- /dev/null
+++ b/net/travelmate/files/hreward.login
@@ -0,0 +1,77 @@
+#!/bin/sh
+# captive portal auto-login script for H-Reward Hotelss
+# This is free software, licensed under the GNU General Public License v3.
+
+# set (s)hellcheck exceptions
+# shellcheck disable=1091,2039,3040
+#
+#
+# Username and password can be passed to the script, to get fast wifi
+# If not provided, the option with the slower wifi will be selected
+
+
+. "/lib/functions.sh"
+
+
+export LC_ALL=C
+export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
+
+
+# From https://stackoverflow.com/a/17336953/819367 converted to sh
+rawurlencode() {
+ string="$1"
+ strlen=${#string}
+ encoded=""
+ pos=0
+ c=""
+ o=""
+
+ while [ $pos -lt $strlen ]; do
+ c=$(expr substr "$string" $((pos + 1)) 1)
+ case "$c" in
+ [-_.~a-zA-Z0-9] ) o="${c}" ;;
+ * ) o=$(printf '%%%02x' "'$c")
+ esac
+ encoded="${encoded}${o}"
+ pos=$((pos + 1))
+ done
+
+ echo "${encoded}"
+}
+
+user=$(rawurlencode "${1}")
+password=$(rawurlencode "${2}")
+
+successUrl="https://hrewards.com/en"
+trm_useragent="$(uci_get travelmate global trm_useragent "Mozilla/5.0 (Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0")"
+trm_maxwait="$(uci_get travelmate global trm_maxwait "30")"
+
+set -e
+
+
+session_key="$(curl -sL --user-agent "${trm_useragent}" \
+ --connect-timeout $((trm_maxwait / 6)) \
+ "http://nossl.com/?cmd=redirect&arubalp=12345" \
+ | awk -F 'name="session_key" value="' 'NF>1{split($2,a,"\""); print a[1]; exit}')"
+
+if [ -n "$user" ] && [ -n "$password" ]; then
+ response="$(curl -sL --user-agent "${trm_useragent}" \
+ --connect-timeout $((trm_maxwait / 6)) \
+ -w %{url_effective} \
+ -o /dev/null \
+ --header "Content-Type:application/x-www-form-urlencoded" \
+ --data "session_key=${session_key}&accept_terms=1&email=${user}&password=${password}&password_reset_form_email=&password_update_form_password=&password_update_form_password_repeat=&room_number=&last_name=&voucher=" \
+ "https://cp.deutschehospitality.com/aruba/login?lang=en")"
+else
+ response="$(curl -sL --user-agent "${trm_useragent}" \
+ --connect-timeout $((trm_maxwait / 6)) \
+ -w %{url_effective} \
+ -o /dev/null \
+ --header "Content-Type:application/x-www-form-urlencoded" \
+ --data "session_key=${session_key}&email=&password=&accept_terms=1&password_reset_form_email=&password_update_form_password=&password_update_form_password_repeat=&room_number=&last_name=&voucher=" \
+ "https://cp.deutschehospitality.com/aruba/skip-registration?lang=en")"
+fi
+
+if [ "$response" != "$successUrl" ]; then
+ exit 255
+fi