Merge branch 'master' of ssh://git.uucp.hu/git/sysop/tools
[hband-tools.git] / óraállás-diktáló / alfoldviz
blob1d4e86a1e05b0164e466b5fd767ec0955bc70a60
1 #!/bin/bash
3 set -e
5 curlargs=(-sS)
6 HelpText="Használat: $0 [felhasználási_hely_azonosító] [mérőóra_gyári_száma] [email] [óraállás]
7 $0 --history [email] [jelszó]"
8 response=''
9 declare -g Cookies="acceptCookies=1"
12 assert()
14 local msg=$1
15 shift
16 if ! command "$@"
17 then
18 echo "$msg" >&2
19 save_diag
20 exit 1
24 save_diag()
26 tmp=`tempfile -s .txt`
28 echo == Cookies
29 echo "$Cookies"
30 echo
31 echo == Curl args
32 echo "${curlargs[@]}" "$url"
33 if [ -n "$response" ]
34 then
35 echo
36 echo == Response
37 echo "$response"
39 }>"$tmp"
40 echo "Diagnosztika mentve ebbe a fájlba: $tmp" >&2
43 http_headers()
45 awk 'BEGIN{h=1} { if(/^\r?$/){h=0} if(h){print} }'
48 extract_cookies()
50 http_headers | grep -i ^Set-Cookie: | cut -f2 -d: | cut -f1 -d';' | tr "\n" ";"
53 start_session()
55 local url=$1
56 # get session (and other) cookie
57 local cookies=`curl "${curlargs[@]}" "$url" -b "$Cookies" -i | extract_cookies`
58 Cookies="$Cookies;$cookies"
61 urlencode()
63 local s=$1
64 s=${s//+/%2B}
65 echo "$s"
69 if [ ".$1" = .--history ]
70 then
71 url=https://www.alfoldviz.hu/ugyfelszolgalat/e-ugyfelszolgalat
72 start_session "$url"
74 url=https://www.alfoldviz.hu/ugyfelszolgalat/e-ugyfelszolgalat/bejelentkezes
75 email=`urlencode "$2"`
76 password=`urlencode "$3"`
77 response=`curl "${curlargs[@]}" -i "$url" -d "email=$email" -d "password=$password" -b "$Cookies"`
78 echo "$response" |\
80 read httpver status message
81 [ "$status" = 302 ]
82 while IFS=: read -r header content
84 if [ "$header" = Location ] && expr "$content" : '.*bejelentkezes' >/dev/null
85 then
86 echo "Hibás bejelentkezés" >&2
87 exit 2
89 if [ -z "$header" ]
90 then
91 break
93 done
95 ps=("${PIPESTATUS[@]}")
96 assert "Rossz státusz bejelentkezéskor" [ ${ps[1]} = 0 ]
97 Cookies="acceptCookies=1;"`echo "$response" | extract_cookies`
99 url=https://www.alfoldviz.hu/ugyfelszolgalat/e-ugyfelszolgalat/korabbi-meroallasok-listaja/betoltes
100 curl "${curlargs[@]}" "$url" -b "$Cookies" | html2text -utf8
101 exit ${PIPESTATUS[0]}
104 assert "$HelpText" [ $# = 4 ]
106 fogyhely=$1
107 merogysz=$2
108 email=$3
109 meroallas=$4
111 url=https://www.alfoldviz.hu/ugyfelszolgalat/meroallas-bejelentes
112 start_session "$url"
113 # get CSRF token
114 csrf_token=`curl "${curlargs[@]}" "$url" -b "$Cookies" | pup 'input[name=_token] attr{value}'`
115 assert "CSRF tokent nem találtam" [ -n "$csrf_token" ]
117 # fill form input fields
118 curlargs+=( \
119 -d "ugyfelazonosito=$fogyhely" \
120 -d "email=$email" \
121 -d "meters[0][gyariszam]=$merogysz" \
122 -d "meters[0][meter]=$meroallas" \
123 -d "_token=$csrf_token" \
126 # fire report
127 response=`curl -i -L "${curlargs[@]}" "$url" -b "$Cookies" 2>&1`
129 if echo "$response" | grep -o "Az adatok feldolgozását megkezdtük."
130 then
131 exit 0
132 else
133 echo "Az Alföldvíz NEM nyugtázta a bejelentést." >&2
134 save_diag
135 exit 1