#!/bin/bash

# usage: ./bw.sh
# needs: xgraph, standard tools like awk etc.

# important vars:
MYIP=128.30.28.19  # <- CHANGE TO YOUR SERVER'S IP NUMBER
XGRAPH=`which xgraph`
CACHEDDIRECTORY=~/.tor/cached-directory  # <- PLEASE CHECK
DATAFILE=./datafileforbw

# settings for graph 
echo 'TitleText: Machinecount per bandwidthrange' > ${DATAFILE}
echo 'NoLegend: true' >> ${DATAFILE}
echo 'NoLines: true' >> ${DATAFILE}
echo 'LargePixels: false' >> ${DATAFILE}
echo 'XUnitText: Bandwidth' >> ${DATAFILE}
echo 'YUnitText: Machinecount' >> ${DATAFILE}
echo 'BarGraph: true' >> ${DATAFILE}
echo 'BarBase: 0' >> ${DATAFILE}
echo 'BarWidth: 20000' >> ${DATAFILE}

# extract data for your server: 
echo >> ${DATAFILE}
echo '"my server"' >> ${DATAFILE}
grep -A 5 ${MYIP} ${CACHEDDIRECTORY}  | \
tail -1 | \
awk '{print $4}' | \
awk '{print $1, 0; print $1, 1}' | \
cat >> ${DATAFILE}

# extract data for all servers
# (that looooooong awk line is for grouping the data
#  into fixed intervals for bandwidth)
echo >> ${DATAFILE}
echo '"all servers"' >> ${DATAFILE}
grep bandwidth ${CACHEDDIRECTORY} | \
awk '{print $4}' | \
sort -n | \
awk '{print(($1>=000000)+($1>050000)+($1>100000)+($1>150000)+($1>200000)+($1>250000)+($1>300000)+($1>350000)+($1>400000)+($1>450000)+($1>500000)+($1>550000)+($1>600000)+($1>650000)+($1>700000)+($1>750000)+($1>800000)+($1>850000)+($1>900000)+($1>950000)+($1>1000000)+($1>1050000)+($1>1100000)+($1>1550000)+($1>1200000)+($1>1250000)+($1>1300000)+($1>1350000)+($1>1400000)+($1>1450000))}' | \
awk '{print 50000*$1-25000}' | \
uniq -c | \
awk '{print $2, $1 }' | \
sort -n | \
cat >> ${DATAFILE}

# display exact bandwidth for your server also to stdout:
grep -A 5 ${MYIP} ${CACHEDDIRECTORY}  | \
tail -1 | \
awk '{print $4}'

# use ${DATAFILE} to create graph:
${XGRAPH} ${DATAFILE}
