#!/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