From caf5ad6c0ce06484de9da057032461f07d953f3c Mon Sep 17 00:00:00 2001 From: Florian Loeffler Date: Tue, 5 May 2020 23:32:14 +0200 Subject: [PATCH] cleanup and started to implement automatic domain_id/record_id retrieval --- ud_ddns.sh | 133 ----------------------------------------------------- ud_list.sh | 40 ---------------- 2 files changed, 173 deletions(-) delete mode 100755 ud_ddns.sh delete mode 100755 ud_list.sh diff --git a/ud_ddns.sh b/ud_ddns.sh deleted file mode 100755 index 1d97662..0000000 --- a/ud_ddns.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash -# requires: wget, ca-certificates, grep, jq -#rm -f /tmp/cookies.txt - -cookiefile="/tmp/cookies.txt" - -#username="" -#password="" -#domain="" - -#domain should contain "domain_id:record_id" -domain_id=$(echo $domain | tr ":" "\n" | sed -n "1p") -record_id=$(echo $domain | tr ":" "\n" | sed -n "2p") -ipv4=$1 - -# fake user agent -ua="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0" - - - -# GET LOGIN PAGE -#csrf tokens for login + language xmlhttprequest required to login (nice try blocking my API access, UD) -loginpage=$(/usr/bin/wget -U "$ua" \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - -qO- "https://www.united-domains.de/login/") - -csrf=$(echo "$loginpage" | /bin/grep -oP -m 2 "(?<=)" | tail -1) -echo "csrfr=${csrf}" -csrfmeta=$(echo "$loginpage" | /bin/grep -oP -m 1 "(?<=)") -echo "csrfmeta=${csrfmeta}" -csrfscript=$(echo "$loginpage" | /bin/grep -oP -m 1 "(?<=\"CSRF_TOKEN\":\")[^\"]*(?=\")") -echo "csrfscript=${csrfscript}" - -/usr/bin/wget -U "$ua" \ - --load-cookies $cookiefile \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - --delete-after \ - --post-data "language=en-US" \ - --header="HTTP-X-CSRF-TOKEN: $csrfmeta" \ - --header="X-Csrf-Token: $csrfscript" \ - --header="X-Requested-With: XMLHttpRequest" \ - -qO- "https://www.united-domains.de/set-user-language" - - -# DO THE LOGIN -#login -echo 'login' -loginresp=$(/usr/bin/wget -U "$ua" \ - --load-cookies $cookiefile \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - --post-data "csrf=$csrf&email=$username&pwd=$password&selector=login&loginBtn=Login" \ - -qO- "https://www.united-domains.de/login/") - - - -#check if successful by requesting domain list -#echo 'domain list' -#DOMAIN_LIST=$(/usr/bin/wget -U "$ua" \ -# --load-cookies $cookiefile \ -# --save-cookies $cookiefile \ -# --keep-session-cookies \ -# -qO- 'https://www.united-domains.de/pfapi/dns/domain-list') -#if [ "$DOMAIN_LIST" = "" ] ; then -# echo "Login not successful" -# exit 1 -#else -# echo $DOMAIN_LIST -#fi - - -#################################################################################################### -# WE'RE IN - - - -#get current dns record json object & modify ip -echo "get current dns record json object" -current=$(/usr/bin/wget -U "$ua" \ - --load-cookies $cookiefile \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - -qO- "https://www.united-domains.de/pfapi/dns/domain/$domain_id/records") -#echo "CURRENT: $current" - -record=$(echo $current | - jq -cM ".data.A | map(select(.id == $record_id)) | .[0]" | \ - sed "s/ //g" | \ - sed "s/\"address\":\"[0-9.]\+\"/\"address\":\"$ipv4\",\"formId\":${record_id}/g") -#echo "NEW: $record" - -payload="{\"record\":$record,\"domain_lock_state\":{\"domain_locked\":false,\"email_locked\":false}}" -url="https://www.united-domains.de/pfapi/dns/domain/$domain_id/records" - - -# load the DNS page for the given domain_id to get the latest csrf code -dnspage=$(/usr/bin/wget -U "$ua" \ - --load-cookies $cookiefile \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - -qO- "https://www.united-domains.de/portfolio/a/domain-admin/dns/$domain_id") - -csrfscript=$(echo "$loginpage" | /bin/grep -oP -m 1 "(?<=\"CSRF_TOKEN\":\")[^\"]*(?=\")") -echo "csrfscript=${csrfscript}" - - -#send changes -echo "send changes" -#echo -ne "PUT ${url}\n${payload}\n" - -output=$(/usr/bin/wget -U "$ua" \ - --load-cookies $cookiefile \ - --save-cookies $cookiefile \ - --keep-session-cookies \ - --method=PUT \ - --header="Accept: application/json" \ - --header="Accept-Encoding: gzip, deflate, br" \ - --header="Accept-Language: de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3" \ - --header="Content-Type: application/json;charset=utf-8" \ - --header="Referer: https://www.united-domains.de/portfolio/a/domain-admin/dns/$domain_id" \ - --header="Origin: https://www.united-domains.de" \ - --header="Http-X-Csrf-Token: $csrfscript" \ - --body-data=$payload -O- $url 2>&1) -echo "UD answered: $output" -#write_log 7 "UD answered:\n$output" - -echo $output | /bin/grep "$ipv4" >/dev/null 2>&1 -success=$? -#write_log 7 "Retval: $success" -echo "Retval: $success" -#return $success diff --git a/ud_list.sh b/ud_list.sh deleted file mode 100755 index 1ee2ae3..0000000 --- a/ud_list.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -#UD_USERNAME='' -#UD_PASSWORD='' - -#setup stuff -COOKIEFILE="/tmp/cookies.txt" -CURL="/usr/bin/curl -s -S -b $COOKIEFILE -c $COOKIEFILE" - -#load website -WEBSITE=$($CURL 'https://www.united-domains.de/') - -#get csrf tokens -CSRF_WEBSITE=$(/bin/echo $WEBSITE | /bin/grep -oP -m 1 "(?<=)") -CSRF_LOGIN=$(/bin/echo $WEBSITE | /bin/grep -A 1 "login-form-1" | /bin/grep -oP -m 1 "(?<=)") - -#get sessionid from cookie -SESSIONID=$(/usr/bin/tail -n 1 $COOKIEFILE | /usr/bin/awk '{print $7}') - -#accept the cookie usage popup on united-domains.de -ACCEPT_COOKIES=$($CURL "https://www.united-domains.de/cookie-settings?SESSID=$SESSIONID" -X PATCH -H "HTTP-X-CSRF-TOKEN: $CSRF_WEBSITE" -H 'Content-Type: application/json' -d '{"ids":[13]}') - -#set language -LANGUAGE=$($CURL "https://www.united-domains.de/set-user-language?SESSID=$SESSIONID" -H "HTTP-X-CSRF-TOKEN: $CSRF_WEBSITE" -H "X-Csrf-Token: $CSRF_WEBSITE" -d 'language=de') - -#generate login data string -LOGIN_DATA="csrf=$CSRF_LOGIN&selector=login&email=$UD_USERNAME&pwd=$UD_PASSWORD&submit=Login" - -#send login -WEBSITE_LOGIN=$($CURL 'https://www.united-domains.de/login' -d "$LOGIN_DATA") - -#check if successful by requesting domain list -DOMAIN_LIST=$($CURL 'https://www.united-domains.de/pfapi/dns/domain-list') -if [ "$DOMAIN_LIST" = "" ] ; then - echo "Login not successful" - exit 1 -fi - -echo $DOMAIN_LIST -