Fix hilink login

This commit is contained in:
Christian Zeitnitz 2021-05-21 22:07:04 +02:00
parent b99752c4cd
commit 26a50993b9
3 changed files with 19 additions and 17 deletions

View File

@ -232,6 +232,7 @@ function _login() {
if ! _sendRequest "api/user/state-login"; then return 1; fi
pwtype=$(echo "$response" | sed -rn 's/.*<password_type>([0-9])<\/password_type>.*/\1/pi')
if [ -z "$pwtype" ];then pwtype=4; fi # fallback is type 4
ret=1
if [[ ! -z "$user" ]] && [[ ! -z "$pw" ]]; then
# password encoding
# type 3 : base64(pw) encoded
@ -251,12 +252,11 @@ function _login() {
tokenlist=( $(cat $header_file | sed -rn 's/^__RequestVerificationToken:\s*([0-9a-z#]*).*$/\1/pi' | sed 's/#/ /g') )
_getToken
sessID=$(cat $header_file | grep -ioP 'SessionID=([a-z0-9]*)')
if [ ! -z "$sessID" ] && [ ! -z "$token" ]; then
return 0
fi
if [ ! -z "$sessID" ] && [ ! -z "$token" ]; then ret=0; fi
fi
rm -f $header_file
fi
return 1
return $ret
}
# logout of hilink device

View File

@ -14,35 +14,37 @@
# zbchristian 2021
function _setAPIParams() {
if [ ! -z "$hostip" ]; then host="$hostip"; fi
if [ ! -z "$username" ]; then user="$username"; fi
if [ ! -z "$password" ]; then pw="$password"; fi
if [ ! -z "$simpin" ]; then pin="$simpin"; fi
if [ ! -z "$hostip" ]; then host="$hostip"; fi
if [ ! -z "$username" ]; then user="$username"; fi
if [ ! -z "$password" ]; then pw="$password"; fi
if [ ! -z "$simpin" ]; then pin="$simpin"; fi
}
if [ -z "$1" ]; then echo "none"; exit; fi
opt="${1,,}"
shift
hostip="192.168.8.1"
while [ -n "$1" ]; do
case "$1" in
-u|--user) username="$2"; shift ;;
-P|--password) password="$2"; shift ;;
-p|--pin) simpin="$2"; shift ;;
-h|--host) hostip="$2"; shift ;;
-u|--user) username="$2"; shift ;;
-P|--password) password="$2"; shift ;;
-p|--pin) simpin="$2"; shift ;;
-h|--host) hostip="$2"; shift ;;
esac
shift
done
status="no valid option given"
result="none"
hostip="192.168.8.1"
if [ "$opt" = "connected" ]; then
source /usr/local/sbin/huawei_hilink_api.sh
if ! _initHilinkAPI; then echo "none"; exit; fi
_setAPIParams
if ! _initHilinkAPI; then echo "none"; exit; fi
result=$(_getMobileDataStatus)
_closeHilinkAPI
else
info_file="/tmp/huawei_infos_$host.dat"
info_file="/tmp/huawei_infos_${hostip}_${id -u}.dat"
if [ -f "$info_file" ]; then
age=$(( $(date +%s) - $(stat $info_file -c %Y) ))
if [[ $age -gt 5 ]]; then rm -f $info_file; fi
@ -52,11 +54,11 @@ else
infos=$(cat $info_file)
else
source /usr/local/sbin/huawei_hilink_api.sh
_setAPIParams
if ! _initHilinkAPI; then echo "none"; exit; fi
_setAPIParams
infos=$(_getAllInformations)
_closeHilinkAPI
if [ ! -z "$infos" ]; then echo "$infos" > /tmp/huawei_infos_$host.dat; fi
if [ ! -z "$infos" ]; then echo "$infos" > $info_file; fi
fi
case "$opt" in

View File

@ -284,7 +284,7 @@ function setClientState($state)
$ipadd = $ipadd[0].'1'; // ip address of the Hilink api
$mode = ($state == "up") ? 1 : 0;
$pin=$user=$pw="";
getMobileLogin($pin,$pw,$user)
getMobileLogin($pin,$pw,$user);
exec('sudo '.RASPI_CLIENT_SCRIPT_PATH.'/onoff_huawei_hilink.sh -c '.$mode.' -h '.$ipadd.' '.$pin.' '.$user.' '.$pw);
break;
case "ppp":