From f12c63b9b988b2046fb2059fd9ce7b2fd2efd4b4 Mon Sep 17 00:00:00 2001 From: Marc Ole Bulling Date: Mon, 27 Nov 2023 17:15:17 +0100 Subject: [PATCH] travelmate: Added H-Rewards hotel login Signed-off-by: Marc Ole Bulling --- net/travelmate/Makefile | 2 +- net/travelmate/files/hreward.login | 77 ++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100755 net/travelmate/files/hreward.login 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 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