#!/usr/bin/awk -f BEGIN { scriptname = ENVIRON["SCRIPT_NAME"] #for win32 isql=".\\isqlodbc.exe sqlite " #for unix #isql="./isqlodbc sqlite " print "Content-Type: text/html; charset=koi8-r \n\n" print "\n\n"; # query parse query_str = ENVIRON["QUERY_STRING"] n = split(query_str, querys, "&") for (i=1; i<=n; i++) { split(querys[i], data, "=") qr[data[1]] = data[2] } printf "
" printf "datefrom: " printf "dateto:
" printf " LOGIN user
" printf " IP user
" printf "" printf "" printf "
" #printf "query_str=%s\n
",query_str #print qr["rep"] if(qr["rep"]=="user") { cmd = isql " \"select " qr["userid"] ",sum(bytein),sum(byteout),sum(bytein+byteout) from log \ where ldate > '" qr["datefrom"] "' AND ldate < '" qr["dateto"] \ "' group by " qr["userid"] " order by sum(bytein+byteout) desc;\"" printf " " while( (cmd|getline result)>0) { split(result, rt, "|") printf "", scriptname,qr["datefrom"],qr["dateto"],qr["userid"],rt[1],rt[1],rt[2],rt[3],rt[4] totalbytein=totalbytein+rt[2]; totalbyteout=totalbyteout+rt[3]; totalbytesum=totalbytesum+rt[4]; } printf " \
user bytein byteout bytesum
%s <\/a>%d%d%d

Total users

%d

%d

%d
",totalbytein,totalbyteout, totalbytesum close(cmd) } if(qr["rep"]=="host") { cmd = isql "\"select sum(bytein+byteout), sum(bytein), sum(byteout),host from log \ where ldate > '" qr["datefrom"] "' AND ldate < '"qr["dateto"] \ "' AND " qr["userid"] " = '" qr["selectid"] \ "' group by host order by sum(bytein+byteout) desc;\"" printf "
Detail statistic for user: %s
",qr["selectid"] printf " " while( (cmd|getline result)>0) { split(result, rt, "|") printf "",rt[1],rt[2],rt[3],rt[4] totalbytein=totalbytein+rt[1]; totalbyteout=totalbyteout+rt[2]; totalbytesum=totalbytesum+rt[3]; } printf " \
sum byte bytein byteouthost
%d%d%d%s

%d

%d

%d

Total host
",totalbytein,totalbyteout, totalbytesum printf " " close(cmd) } printf " "; } # end BEGIN # decode urlencoded string function decode(text, hex, i, hextab, decoded, len, c, c1, c2, code) { split("0 1 2 3 4 5 6 7 8 9 a b c d e f", hex, " ") for (i=0; i<16; i++) hextab[hex[i+1]] = i # urldecode function from Heiner Steven # http://www.shelldorado.com/scripts/cmds/urldecode # decode %xx to ASCII char decoded = "" i = 1 len = length(text) while ( i <= len ) { c = substr (text, i, 1) if ( c == "%" ) { if ( i+2 <= len ) { c1 = tolower(substr(text, i+1, 1)) c2 = tolower(substr(text, i+2, 1)) if ( hextab [c1] != "" || hextab [c2] != "" ) { if ( (c1 >= 2 && (c1 != 7 && c2 != "F")) || (c1 == 0 && c2 ~ "[9acd]") ) { code = 0 + hextab [c1] * 16 + hextab [c2] + 0 c = sprintf ("%c", code) } else { c = " " } i = i + 2 } } } else if ( c == "+" ) { # special handling: "+" means " " c = " " } decoded = decoded c ++i } # change linebreaks to \n gsub(/\r\n/, "\n", decoded) # remove last linebreak sub(/[\n\r]*$/,"",decoded) return decoded }