Merge remote-tracking branch 'origin/master' into prod

* origin/master:
  fix timespan buttons
  centralize settings
  keep start / end settings
  nice menu
  fix medal links

Conflicts:
	add
This commit is contained in:
Vincent Riquer 2014-06-20 17:16:41 +02:00
commit 849bf65548
5 changed files with 322 additions and 262 deletions

26
README
View File

@ -1,35 +1,19 @@
settings
========
Edit to your need
graph
=====
RRD rendering.
Lines 7-22:
Level colors for the AP graph. Same as resonators/bursters for levels 1 to 8
(thanks @globulator).
Find a nice scheme for higher levels and send me your patch.
Lines 24,25:
You may want to adjust the default view (in seconds relative to the
current time).
Lines 93,95:
Choose which stats to show.
add.html
========
Update form. Should be prefilled with last inserted data.
No change needed.
add
===
Process POST data and updates RRD file. Optionally clears CGI cache.
Line 14:
Set to your CGI/fastcgi cache to enable cache purge on RRD updates
Line 19,21:
Choose the right scheme for the extraction of the username from the
URL.

66
add
View File

@ -1,33 +1,22 @@
#!/bin/bash
# Path to your fastcgi_cache (optional).
CACHE_DIR=/web/ingress-stats.riquer.fr/cache
## FIXME change this according to your URLs:
#
# /$user/add.html
#IFS=/ read garbage webuser garbage <<<"$REQUEST_URI"
# /cgi/$user/add.html
IFS=/ read garbage garbage webuser garbage <<<"$REQUEST_URI"
. settings
if [[ $REQUEST_METHOD != POST ]]
then
cat <<-EOHead
Content-type: text/plain
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')
refresh: 0,url=/cgi/$webuser/
refresh: 0,url=/cgi/$webuser/add.html
EOHead
if [[ $webuser == $AUTH_USER || $webuser == dev ]]
then
echo "Welcome agent $webuser"$'!\n\n'
else
echo 'Nice try!'
exit
fi
declare -A POST
exprdsname='^[[:upper:][:lower:]_]+$'
exprvalue='^[[:digit:]]+$'
exprvalue='^-?[[:digit:]]+$'
while read dsname value
do
if [[ $dsname =~ $exprdsname ]] \
@ -38,37 +27,26 @@ do
done < <(
sed 's/&/\n/g;s/=/ /g'
)
cat <<-EOHead
Content-type: text/plain
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')
refresh: 0,url=/cgi/$webuser/?start=${POST["start"]}&end=${POST["end"]}
EOHead
if [[ $webuser == $AUTH_USER || $webuser == dev ]]
then
echo "Welcome agent $webuser"$'!\n\n'
else
echo 'Nice try!'
exit
fi
dsnames=(
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
)
data=N
for dsname in "${dsnames[@]}"
do
data+=:${POST["$dsname"]}
data+=:${POST["$dsname"]:=U}
echo "$dsname....${POST["$dsname"]}"
done
rrdtool update ingress.rrd "$data"

View File

@ -1,58 +1,26 @@
#!/bin/bash
exec 2>&1
uinames=(
AP
"Unique Portals Visited"
"Portals Discovered"
"XM Collected"
Hacks
"Resonators Deployed"
"Links Created"
"Control Fields Created"
"Mind Units Captured"
"Longest Link Ever Created"
"Largest Control Field"
"XM Recharged"
"Portals Captured"
"Unique Portals Captured"
"Resonators Destroyed"
"Portals Neutralized"
"Enemy Links Destroyed"
"Enemy Control Fields Destroyed"
"Distance Walked"
"Max Time Portal Held"
"Max Time Link Maintained"
"Max Link Length x Days"
"Max Time Field Held"
"Largest Field MUs x Days"
)
dsnames=(
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
)
. settings
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
;;
esac
done <<<"${query_data//=/ }"
fi
readprevvalues() {
shift
for arg
@ -75,6 +43,27 @@ Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
<title>IngRRD - Add data</title>
</head>
<body>
<table style="border:1px solid black; border-collapse:collapse">
<tr>
<td style="border:1px solid black"><a href="/cgi/$webuser/?start=$start&amp;end=$end">Overview</a></td>
<td style="border:1px solid black">
<table>
<tr>
<td rowspan="2"><a href="?hist&amp;start=$start&amp;end=$end">History /</a></td>
<td>
<a href="?hist&amp;start=$start&amp;end=$end">Medals</a>
</td>
</tr>
<tr>
<td>
<a href="?hist&amp;show=all&amp;start=$start&amp;end=$end">All</a>
</td>
</tr>
</table>
</td>
<td style="background:black; color:white">Add data</td>
</tr>
</table>
<form method="post" action="add">
<ul>
EOHTML
@ -87,6 +76,8 @@ done
cat <<-EOHTML
</ul>
<input type="hidden" name="time" value="$(date +%s)" />
<input type="hidden" name="start" value="$start" />
<input type="hidden" name="end" value="$end" />
<button type="submit" name="submit" value="send">Send</button>
</form>
</body>

206
index
View File

@ -1,119 +1,6 @@
#!/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
medals=(
Explorer
Seer
Hacker
Builder
Connector
Mind_Controller
Recharger
Liberator
Pioneer
Purifier
Guardian
)
## (0) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
lvl=( . 0 2500 20000 70000 150000 300000 600000 1200000 2400000 4000000 6000000 8400000 12000000 17000000 24000000 40000000 )
lvlsilver=( . 0 0 0 0 0 0 0 0 4 5 6 7 0 0 0 0 )
lvlgold=( . 0 0 0 0 0 0 0 0 1 2 4 6 7 0 0 0 )
lvlplatinum=( . 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 )
lvlblack=( . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 )
declare -A bronze silver gold platinum black
bronze["Explorer"]=100
silver["Explorer"]=1000
gold["Explorer"]=2000
platinum["Explorer"]=10000
black["Explorer"]=30000
bronze["Seer"]=10
silver["Seer"]=50
gold["Seer"]=200
platinum["Seer"]=500
black["Seer"]=5000
bronze["Hacker"]=2000
silver["Hacker"]=10000
gold["Hacker"]=30000
platinum["Hacker"]=100000
black["Hacker"]=200000
bronze["Builder"]=2000
silver["Builder"]=10000
gold["Builder"]=30000
platinum["Builder"]=100000
black["Builder"]=200000
bronze["Connector"]=50
silver["Connector"]=1000
gold["Connector"]=5000
platinum["Connector"]=25000
black["Connector"]=100000
bronze["Mind_Controller"]=100
silver["Mind_Controller"]=500
gold["Mind_Controller"]=2000
platinum["Mind_Controller"]=10000
black["Mind_Controller"]=40000
bronze["Recharger"]=100000
silver["Recharger"]=1000000
gold["Recharger"]=3000000
platinum["Recharger"]=10000000
black["Recharger"]=25000000
bronze["Liberator"]=100
silver["Liberator"]=1000
gold["Liberator"]=5000
platinum["Liberator"]=15000
black["Liberator"]=40000
bronze["Pioneer"]=20
silver["Pioneer"]=200
gold["Pioneer"]=1000
platinum["Pioneer"]=5000
black["Pioneer"]=20000
bronze["Purifier"]=2000
silver["Purifier"]=10000
gold["Purifier"]=30000
platinum["Purifier"]=100000
black["Purifier"]=300000
bronze["Guardian"]=3
silver["Guardian"]=10
gold["Guardian"]=20
platinum["Guardian"]=90
black["Guardian"]=150
. settings
if [ -n "$QUERY_STRING" ]
then
@ -169,11 +56,25 @@ then
if (( ! show_graphs ))
then
cat <<-EOHTML
<table>
<table style="border:1px solid black; border-collapse:collapse">
<tr>
<td style="background:black; color:white">Overview</td>
<td><a href="?hist">History / Trend</a></td>
<td><a href="add.html"><b>Add data</b></a></td>
<td style="border:1px solid black">
<table>
<tr>
<td rowspan="2"><a href="?hist&amp;start=$start&amp;end=$end">History /</a></td>
<td>
<a href="?hist&amp;start=$start&amp;end=$end">Medals</a>
</td>
</tr>
<tr>
<td>
<a href="?hist&amp;show=all&amp;start=$start&amp;end=$end">All</a>
</td>
</tr>
</table>
</td>
<td style="border:1px solid black"><a href="add.html?start=$start&amp;end=$end"><b>Add data</b></a></td>
</tr>
</table>
EOHTML
@ -249,7 +150,7 @@ then
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -269,7 +170,7 @@ then
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -289,7 +190,7 @@ then
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -309,7 +210,7 @@ then
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -353,7 +254,7 @@ then
cat <<-EOHTML
<a
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -382,7 +283,7 @@ then
cat <<-EOHTML
<a
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -411,7 +312,7 @@ then
cat <<-EOHTML
<a
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -440,7 +341,7 @@ then
cat <<-EOHTML
<a
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
href="#$stat">
href="?hist&amp;start=$start&amp;end=$end#$stat">
<img
width="30"
height="30"
@ -461,28 +362,57 @@ then
EOHTML
else
cat <<-EOHTML
<table style="border:1px solid black; border-collapse:collapse">
<tr>
<td><a href="?start=$start&amp;end=$end">Overview</a></td>
<td style="background:black; color:white">
<table>
<tr>
<td><a href="?">Overview</a></td>
<td style="background:black; color:white">History / Trend</td>
<td><a href="add.html"><b>Add data</b></a></td>
<td rowspan="2">History /</td>
EOHTML
if (( show_all ))
then
cat <<-EOHTML
<td style="background:white; color:black">
<a href="?hist&amp;start=$start&amp;end=$end">Medals</a>
</td>
</tr>
<tr>
<td style="background:#505050; color:white">All</td>
</tr>
EOHTML
else
cat <<-EOHTML
<td style="background:#505050; color:white">Medals</td>
</tr>
<tr>
<td style="background:white; color:black">
<a href="?hist&amp;show=all&amp;start=$start&amp;end=$end">All</a>
</td>
</tr>
EOHTML
fi
cat <<-EOHTML
</table>
</td>
<td><a href="add.html?start=$start&amp;end=$end"><b>Add data</b></a></td>
</tr>
</table>
<table style="width:$(( graph_width + 97 ))px">
<tr>
<td>
<a href="?start=$(( start - 604800 ))&amp;end=$end">&lt;&lt;</a>
<a href="?start=$(( start - 86400 ))&amp;end=$end">&lt;</a>
<a href="?start=$default_start&amp;end=$end">R</a>
<a href="?start=$(( start + 86400 ))&amp;end=$end">&gt;</a>
<a href="?start=$(( start + 604800 ))&amp;end=$end">&gt;&gt;</a>
<a href="?hist&amp;start=$(( start - 604800 ))&amp;end=$end">&lt;&lt;</a>
<a href="?hist&amp;start=$(( start - 86400 ))&amp;end=$end">&lt;</a>
<a href="?hist&amp;start=$default_start&amp;end=$end">R</a>
<a href="?hist&amp;start=$(( start + 86400 ))&amp;end=$end">&gt;</a>
<a href="?hist&amp;start=$(( start + 604800 ))&amp;end=$end">&gt;&gt;</a>
</td>
<td align="right">
<a href="?start=$start&amp;end=$(( end - 604800 ))">&lt;&lt;</a>
<a href="?start=$start&amp;end=$(( end - 86400 ))">&lt;</a>
<a href="?start=$start&amp;end=$default_end">R</a>
<a href="?start=$start&amp;end=$(( end + 86400 ))">&gt;</a>
<a href="?start=$start&amp;end=$(( end + 604800 ))">&gt;&gt;</a>
<a href="?hist&amp;start=$start&amp;end=$(( end - 604800 ))">&lt;&lt;</a>
<a href="?hist&amp;start=$start&amp;end=$(( end - 86400 ))">&lt;</a>
<a href="?hist&amp;start=$start&amp;end=$default_end">R</a>
<a href="?hist&amp;start=$start&amp;end=$(( end + 86400 ))">&gt;</a>
<a href="?hist&amp;start=$start&amp;end=$(( end + 604800 ))">&gt;&gt;</a>
</td>
</tr>
</table>

177
settings Normal file
View File

@ -0,0 +1,177 @@
# Path to your fastcgi_cache (optional).
#CACHE_DIR=/var/www/ingRRD/cache
## FIXME change this according to your URLs:
#
# /$user/add.html
#IFS=/ read garbage webuser garbage <<<"$REQUEST_URI"
# /cgi/$user/add.html
IFS=/ read garbage garbage webuser garbage <<<"$REQUEST_URI"
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
uinames=(
AP
"Unique Portals Visited"
"Portals Discovered"
"XM Collected"
Hacks
"Resonators Deployed"
"Links Created"
"Control Fields Created"
"Mind Units Captured"
"Longest Link Ever Created"
"Largest Control Field"
"XM Recharged"
"Portals Captured"
"Unique Portals Captured"
"Resonators Destroyed"
"Portals Neutralized"
"Enemy Links Destroyed"
"Enemy Control Fields Destroyed"
"Distance Walked"
"Max Time Portal Held"
"Max Time Link Maintained"
"Max Link Length x Days"
"Max Time Field Held"
"Largest Field MUs x Days"
)
dsnames=(
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
)
medals=(
Explorer
Seer
Hacker
Builder
Connector
Mind_Controller
Recharger
Liberator
Pioneer
Purifier
Guardian
)
## (0) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
lvl=( . 0 2500 20000 70000 150000 300000 600000 1200000 2400000 4000000 6000000 8400000 12000000 17000000 24000000 40000000 )
lvlsilver=( . 0 0 0 0 0 0 0 0 4 5 6 7 0 0 0 0 )
lvlgold=( . 0 0 0 0 0 0 0 0 1 2 4 6 7 0 0 0 )
lvlplatinum=( . 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 )
lvlblack=( . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 )
declare -A bronze silver gold platinum black
bronze["Explorer"]=100
silver["Explorer"]=1000
gold["Explorer"]=2000
platinum["Explorer"]=10000
black["Explorer"]=30000
bronze["Seer"]=10
silver["Seer"]=50
gold["Seer"]=200
platinum["Seer"]=500
black["Seer"]=5000
bronze["Hacker"]=2000
silver["Hacker"]=10000
gold["Hacker"]=30000
platinum["Hacker"]=100000
black["Hacker"]=200000
bronze["Builder"]=2000
silver["Builder"]=10000
gold["Builder"]=30000
platinum["Builder"]=100000
black["Builder"]=200000
bronze["Connector"]=50
silver["Connector"]=1000
gold["Connector"]=5000
platinum["Connector"]=25000
black["Connector"]=100000
bronze["Mind_Controller"]=100
silver["Mind_Controller"]=500
gold["Mind_Controller"]=2000
platinum["Mind_Controller"]=10000
black["Mind_Controller"]=40000
bronze["Recharger"]=100000
silver["Recharger"]=1000000
gold["Recharger"]=3000000
platinum["Recharger"]=10000000
black["Recharger"]=25000000
bronze["Liberator"]=100
silver["Liberator"]=1000
gold["Liberator"]=5000
platinum["Liberator"]=15000
black["Liberator"]=40000
bronze["Pioneer"]=20
silver["Pioneer"]=200
gold["Pioneer"]=1000
platinum["Pioneer"]=5000
black["Pioneer"]=20000
bronze["Purifier"]=2000
silver["Purifier"]=10000
gold["Purifier"]=30000
platinum["Purifier"]=100000
black["Purifier"]=300000
bronze["Guardian"]=3
silver["Guardian"]=10
gold["Guardian"]=20
platinum["Guardian"]=90
black["Guardian"]=150