module.add bank module.add bank:refresh mainmenu.add "Kontoumsatz" "/bank" ::http::register https 443 ::tls::socket ::http::config -useragent "Mozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20050927 Debian/1.7.8-1sarge3" proc bank {} { global db upvar cgi cgi mysql::ping $db htmlout.header "Banktransaktionen" htmlout "

Banktransaktionen

" htmlout "


" htmlout [mysql:htmltable bank transactions bankaccount "date sender comment amount" "Datum Absender Verwendungszweck Betrag" {{} {} {} {text-align:right;}} {{set field [clock format [mysql:sqldate2timestamp $field] -format "%d.%m.%Y"]} {} {} {set field "[format "%.2f" $field] Eur"}} 10 "001000"] htmlout.footer } proc bank:refresh {} { global db mysql::ping $db set bank(baseurl) "https://banking.postbank.de" proc tagfilter {p t n} { if [string match $p [$t get $n type]] {return 1} {return 0} } proc tagkeyvalue {d k} { return [lindex [string range [lindex [split $d " "] [lsearch [split $d " "] ${k}=*]] [expr [string length $k]+1] end] 0] } set token [::http::geturl $bank(baseurl)/app/welcome.do] upvar #0 $token state catch "htmldata destroy" ::struct::tree htmldata ::htmlparse::2tree $state(body) htmldata set node(form) [htmldata children -all root filter "tagfilter form"] set sessionid [lindex [split [tagkeyvalue [htmldata get $node(form) data] action] \;] 1] set query "accountNumber=628536207&pinNumber=73973" htmldata destroy set token [::http::geturl $bank(baseurl)/app/login.prep.do\;$sessionid -query $query] set zeitraum tage set tage "00" set tag "01" set monat "10" set jahr "2005" set headers [list "Referer:" $bank(baseurl)/app/kontoumsatz.umsatz.init.do] set query "?action=download&cache=true&konto=628536207&zeitraum=$zeitraum&tage=$tage&tag=$tag&monat=$monat&jahr=$jahr&action=Umsatzauskunft+aktualisieren" set token [::http::geturl $bank(baseurl)/app/kontoumsatz.umsatz.init.do\;$sessionid$query -headers $headers] upvar #0 $token state # set in [open ums.txt r]; set data [read $in]; close $in foreach line [lrange [split $state(body) \n] 11 end] { # foreach line [lrange [split $data \n] 11 end] if [string match "Gutschrift" [lindex $line 2]] { set date [mysql:date2sqldate [lindex $line 1]] set comment [lrange $line 3 end-6] set sender [lrange $line end-5 end-4] set amount [lindex $line end-1] regsub , $amount . amount if [llength [mysql::sel $db "SELECT * from bankaccount where date=\"$date\" and sender=\"$sender\" and comment=\"$comment\"" -list]]==0 { mysql::exec $db "INSERT into bankaccount (date , sender , comment , amount) values (\"$date\" , \"$sender\" , \"$comment\" , $amount);" } } } return 0 }