328 lines
7.6 KiB
Bash
Executable File
328 lines
7.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
rrdfile=ingress.rrd
|
|
|
|
graph_width=800
|
|
|
|
L1color=FFCF58
|
|
L2color=FFA52E
|
|
L3color=FF7110
|
|
L4color=E70000
|
|
L5color=FF2691
|
|
L6color=EF24CE
|
|
L7color=C221E1
|
|
L8color=9523F8
|
|
L9color=000000
|
|
L10color=000000
|
|
L11color=000000
|
|
L12color=000000
|
|
L13color=000000
|
|
L14color=000000
|
|
L15color=000000
|
|
L16color=000000
|
|
|
|
default_start=-604800
|
|
default_end=1209600
|
|
|
|
start=$default_start
|
|
end=$default_end
|
|
|
|
if [ -n "$QUERY_STRING" ]
|
|
then
|
|
query_data="${QUERY_STRING//&/
|
|
}"
|
|
exprtime='[[:alnum:]-]+'
|
|
exprgraph='[[:alpha:]_]+'
|
|
while read name value
|
|
do
|
|
case $name in
|
|
start)
|
|
[[ $value =~ $exprtime ]] && start=$value
|
|
;;
|
|
end)
|
|
[[ $value =~ $exprtime ]] && end=$value
|
|
;;
|
|
graph)
|
|
[[ $value =~ $exprgraph ]] && graph=$value
|
|
;;
|
|
esac
|
|
done <<<"${query_data//=/ }"
|
|
fi
|
|
|
|
if [ -z "$graph" ]
|
|
then
|
|
cat <<-EOHTML
|
|
content-type: text/html
|
|
Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
|
|
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '10 minutes')
|
|
refresh: 600
|
|
Cache-Control: max-age=3600, must-revalidate
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
|
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>IngRRD - Graph</title>
|
|
</head>
|
|
<body>
|
|
<table style="width:$(( graph_width + 97 ))px">
|
|
<tr>
|
|
<td>
|
|
<a href="?start=$(( start - 604800 ))&end=$end"><<</a>
|
|
<a href="?start=$(( start - 86400 ))&end=$end"><</a>
|
|
<a href="?start=$default_start&end=$end">R</a>
|
|
<a href="?start=$(( start + 86400 ))&end=$end">></a>
|
|
<a href="?start=$(( start + 604800 ))&end=$end">>></a>
|
|
</td>
|
|
<td align="center">
|
|
<div align="center"><a href="add.html">Add data</a></div>
|
|
</td>
|
|
<td align="right">
|
|
<a href="?start=$start&end=$(( end - 604800 ))"><<</a>
|
|
<a href="?start=$start&end=$(( end - 86400 ))"><</a>
|
|
<a href="?start=$start&end=$default_end">R</a>
|
|
<a href="?start=$start&end=$(( end + 86400 ))">></a>
|
|
<a href="?start=$start&end=$(( end + 604800 ))">>></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
EOHTML
|
|
|
|
# Show all stats
|
|
#for stat in AP Explorer Seer XM Hacker Builder Connector Mind_Controller MU Longest_Link Largest_Field Recharger Liberator Pioneer Purifier Neutralized Links_Destroyed Fields_Destroyed Walked Guardian Link_Maintained Link_Length_x_Days Field_Held Field_x_Days
|
|
# Show only AP and medals
|
|
for stat in AP Explorer Seer Hacker Builder Connector Mind_Controller Recharger Liberator Pioneer Purifier Guardian
|
|
do
|
|
cat <<-EOHTML
|
|
<div>
|
|
<img src="graph?graph=$stat&start=$start&end=$end" />
|
|
</div>
|
|
EOHTML
|
|
done
|
|
cat <<-EOHTML
|
|
</body></html>
|
|
EOHTML
|
|
else
|
|
now=$(date +%s)
|
|
cat <<-EOHEAD
|
|
content-type: image/png
|
|
Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
|
|
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '10 minutes')
|
|
Cache-Control: max-age=0, must-revalidate
|
|
|
|
EOHEAD
|
|
|
|
case $graph in
|
|
AP)
|
|
lvl1=0
|
|
lvl2=2500
|
|
lvl3=20000
|
|
lvl4=70000
|
|
lvl5=150000
|
|
lvl6=300000
|
|
lvl7=600000
|
|
lvl8=1200000
|
|
lvl9=2400000
|
|
lvl10=4000000
|
|
lvl11=6000000
|
|
lvl12=8400000
|
|
lvl13=12000000
|
|
lvl14=17000000
|
|
lvl15=24000000
|
|
lvl16=40000000
|
|
;;
|
|
Explorer)
|
|
bronze=100
|
|
silver=1000
|
|
gold=2000
|
|
platinum=10000
|
|
black=30000
|
|
;;
|
|
Seer)
|
|
bronze=10
|
|
silver=50
|
|
gold=200
|
|
platinum=500
|
|
black=5000
|
|
;;
|
|
Hacker)
|
|
bronze=2000
|
|
silver=10000
|
|
gold=30000
|
|
platinum=100000
|
|
black=200000
|
|
;;
|
|
Builder)
|
|
bronze=2000
|
|
silver=10000
|
|
gold=30000
|
|
platinum=100000
|
|
black=200000
|
|
;;
|
|
Connector)
|
|
bronze=50
|
|
silver=1000
|
|
gold=5000
|
|
platinum=25000
|
|
black=100000
|
|
;;
|
|
Mind_Controller)
|
|
bronze=100
|
|
silver=500
|
|
gold=2000
|
|
platinum=10000
|
|
black=40000
|
|
;;
|
|
Recharger)
|
|
bronze=100000
|
|
silver=1000000
|
|
gold=3000000
|
|
platinum=10000000
|
|
black=25000000
|
|
;;
|
|
Liberator)
|
|
bronze=100
|
|
silver=1000
|
|
gold=5000
|
|
platinum=15000
|
|
black=40000
|
|
;;
|
|
Pioneer)
|
|
bronze=20
|
|
silver=200
|
|
gold=1000
|
|
platinum=5000
|
|
black=20000
|
|
;;
|
|
Purifier)
|
|
bronze=2000
|
|
silver=10000
|
|
gold=30000
|
|
platinum=100000
|
|
black=300000
|
|
;;
|
|
Guardian)
|
|
bronze=3
|
|
silver=10
|
|
gold=20
|
|
platinum=90
|
|
black=150
|
|
;;
|
|
esac
|
|
|
|
if [[ $graph == AP ]]
|
|
then
|
|
thresholds=(
|
|
COMMENT:Levels
|
|
HRULE:$lvl2#$L1color:1
|
|
HRULE:$lvl2#$L2color:2
|
|
HRULE:$lvl3#$L3color:3
|
|
HRULE:$lvl4#$L4color:4
|
|
HRULE:$lvl5#$L5color:5
|
|
HRULE:$lvl6#$L6color:6
|
|
HRULE:$lvl7#$L7color:7
|
|
HRULE:$lvl8#$L8color:8
|
|
HRULE:$lvl9#$L9color:9
|
|
HRULE:$lvl10#$L10color:10
|
|
HRULE:$lvl11#$L11color:11
|
|
HRULE:$lvl12#$L12color:12
|
|
HRULE:$lvl13#$L13color:13
|
|
HRULE:$lvl14#$L14color:14
|
|
HRULE:$lvl15#$L15color:15
|
|
HRULE:$lvl16#$L16color:16\\n
|
|
)
|
|
draw=(
|
|
CDEF:arealvl1=data,$lvl2,LT,data,UNKN,IF
|
|
CDEF:arealvl2=data,$lvl2,$lvl3,LIMIT
|
|
CDEF:arealvl3=data,$lvl3,$lvl4,LIMIT
|
|
CDEF:arealvl4=data,$lvl4,$lvl5,LIMIT
|
|
CDEF:arealvl5=data,$lvl5,$lvl6,LIMIT
|
|
CDEF:arealvl6=data,$lvl6,$lvl7,LIMIT
|
|
CDEF:arealvl7=data,$lvl7,$lvl8,LIMIT
|
|
CDEF:arealvl8=data,$lvl8,$lvl9,LIMIT
|
|
CDEF:arealvl9=data,$lvl9,$lvl10,LIMIT
|
|
CDEF:arealvl10=data,$lvl10,$lvl11,LIMIT
|
|
CDEF:arealvl11=data,$lvl11,$lvl12,LIMIT
|
|
CDEF:arealvl12=data,$lvl12,$lvl13,LIMIT
|
|
CDEF:arealvl13=data,$lvl13,$lvl14,LIMIT
|
|
CDEF:arealvl14=data,$lvl14,$lvl15,LIMIT
|
|
CDEF:arealvl15=data,$lvl15,$lvl16,LIMIT
|
|
CDEF:arealvl16=data,$lvl16,GE,data,UNKN,IF
|
|
AREA:arealvl1#$L1color
|
|
AREA:arealvl2#$L2color
|
|
AREA:arealvl3#$L3color
|
|
AREA:arealvl4#$L4color
|
|
AREA:arealvl5#$L5color
|
|
AREA:arealvl6#$L6color
|
|
AREA:arealvl7#$L7color
|
|
AREA:arealvl8#$L8color
|
|
AREA:arealvl9#$L9color
|
|
AREA:arealvl10#$L10color
|
|
AREA:arealvl11#$L11color
|
|
AREA:arealvl12#$L12color
|
|
AREA:arealvl13#$L13color
|
|
AREA:arealvl14#$L14color
|
|
AREA:arealvl15#$L15color
|
|
AREA:arealvl16#$L16color
|
|
)
|
|
else
|
|
thresholds=(
|
|
COMMENT:Medals
|
|
HRULE:$bronze#A02020:$bronze
|
|
HRULE:$silver#808080:$silver
|
|
HRULE:$gold#A0A020:$gold
|
|
HRULE:$platinum#505050:$platinum
|
|
HRULE:$black#101010:$black\\n
|
|
)
|
|
draw=(
|
|
CDEF:areanone=data,$bronze,LT,data,UNKN,IF
|
|
CDEF:areabronze=data,$bronze,$silver,LIMIT
|
|
CDEF:areasilver=data,$silver,$gold,LIMIT
|
|
CDEF:areagold=data,$gold,$platinum,LIMIT
|
|
CDEF:areaplatinum=data,$platinum,$black,LIMIT
|
|
CDEF:areablack=data,$black,GE,data,UNKN,IF
|
|
#CDEF:tickblack=pred,$black,EQ
|
|
CDEF:tickbronze=pred,$bronze,0.995,*,$bronze,1.005,*,LIMIT
|
|
CDEF:ticksilver=pred,$silver,0.995,*,$silver,1.005,*,LIMIT
|
|
CDEF:tickgold=pred,$gold,0.995,*,$gold,1.005,*,LIMIT
|
|
CDEF:tickplatinum=pred,$platinum,0.995,*,$platinum,1.005,*,LIMIT
|
|
CDEF:tickblack=pred,$black,0.995,*,$black,1.005,*,LIMIT
|
|
TICK:tickbronze#0000FF50:1
|
|
TICK:ticksilver#0000FF50:1
|
|
TICK:tickgold#0000FF50:1
|
|
TICK:tickplatinum#0000FF50:1
|
|
TICK:tickblack#0000FF50:1
|
|
AREA:areanone#303030
|
|
AREA:areabronze#A02020
|
|
AREA:areasilver#808080
|
|
AREA:areagold#A0A020
|
|
AREA:areaplatinum#505050
|
|
AREA:areablack#101010
|
|
)
|
|
fi
|
|
|
|
(( start > 0 )) && start="+$start"
|
|
(( end > 0 )) && end="+$end"
|
|
rrdtool graph - \
|
|
-E -a PNG \
|
|
-w $graph_width \
|
|
-v $graph \
|
|
-s $start -e $end \
|
|
DEF:data=$rrdfile:$graph:MAX:step=3600 \
|
|
DEF:predict=$rrdfile:$graph:HWPREDICT \
|
|
DEF:fail=$rrdfile:$graph:FAILURES \
|
|
VDEF:intercept=data,LSLINT \
|
|
VDEF:growth=data,LSLSLOPE \
|
|
CDEF:pred=data,POP,COUNT,growth,*,intercept,+ \
|
|
"${thresholds[@]}" \
|
|
LINE1:predict#000000 \
|
|
LINE1:pred#FFFF00 \
|
|
"${draw[@]:-AREA:data#00BD27}" \
|
|
TICK:fail#ffffa0:1.0 \
|
|
VRULE:$now#000000 \
|
|
'GPRINT:data:MIN:min %6.2lf%S' \
|
|
'GPRINT:data:MAX:\tmax %6.2lf%S' \
|
|
'GPRINT:growth:\tgrowth %6.2lf%s/h\n'
|
|
fi
|