initial commit
This commit is contained in:
commit
7453925561
82
add
Executable file
82
add
Executable file
@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
|
||||
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: 5,url=graph
|
||||
|
||||
EOHead
|
||||
|
||||
exec 2>&1
|
||||
|
||||
# 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"
|
||||
|
||||
if [[ $webuser == $AUTH_USER ]]
|
||||
then
|
||||
echo "Welcome agent $webuser"$'!\n\n'
|
||||
else
|
||||
echo 'Nice try!'
|
||||
exit
|
||||
fi
|
||||
declare -A POST
|
||||
exprdsname='^[[:upper:][:lower:]_]+$'
|
||||
exprvalue='^[[:digit:]]+$'
|
||||
while read dsname value
|
||||
do
|
||||
if [[ $dsname =~ $exprdsname ]] \
|
||||
&& [[ $value =~ $exprvalue ]]
|
||||
then
|
||||
POST["$dsname"]="$value"
|
||||
fi
|
||||
done < <(
|
||||
sed 's/&/\n/g;s/=/ /g'
|
||||
)
|
||||
|
||||
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"]}
|
||||
echo "$dsname....${POST["$dsname"]}"
|
||||
done
|
||||
rrdtool update ingress.rrd "$data"
|
||||
|
||||
if [ -n "$CACHE_DIR" ]
|
||||
then
|
||||
find "$CACHE_DIR" -type f -delete
|
||||
echo $'\nCache cleared!'
|
||||
fi
|
||||
94
add.html
Executable file
94
add.html
Executable file
@ -0,0 +1,94 @@
|
||||
#!/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
|
||||
)
|
||||
readprevvalues() {
|
||||
shift
|
||||
for arg
|
||||
do
|
||||
prevvalues+=( "$arg" )
|
||||
done
|
||||
}
|
||||
readprevvalues $(rrdtool lastupdate ingress.rrd | tail -n1)
|
||||
|
||||
cat <<-EOHTML
|
||||
content-type: text/xml
|
||||
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')
|
||||
|
||||
<?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 - Add data</title>
|
||||
</head>
|
||||
<body>
|
||||
<form method="post" action="add">
|
||||
<ul>
|
||||
EOHTML
|
||||
|
||||
for indice in ${!uinames[@]}
|
||||
do
|
||||
echo "<li><input type=\"text\" name=\"${dsnames[indice]}\" value=\"${prevvalues[indice]}\" /> ${uinames[indice]}</li>"
|
||||
done
|
||||
|
||||
cat <<-EOHTML
|
||||
</ul>
|
||||
<input type="hidden" name="time" value="$(date +%s)" />
|
||||
<button type="submit" name="submit" value="send">Send</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
EOHTML
|
||||
325
graph
Executable file
325
graph
Executable file
@ -0,0 +1,325 @@
|
||||
#!/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=(
|
||||
HRULE:$lvl2#$L1color:L1
|
||||
HRULE:$lvl2#$L2color:L2
|
||||
HRULE:$lvl3#$L3color:L3
|
||||
HRULE:$lvl4#$L4color:L4
|
||||
HRULE:$lvl5#$L5color:L5
|
||||
HRULE:$lvl6#$L6color:L6
|
||||
HRULE:$lvl7#$L7color:L7
|
||||
HRULE:$lvl8#$L8color:L8
|
||||
HRULE:$lvl9#$L9color:L9
|
||||
HRULE:$lvl10#$L10color:L10
|
||||
HRULE:$lvl11#$L11color:L11
|
||||
HRULE:$lvl12#$L12color:L12
|
||||
HRULE:$lvl13#$L13color:L13
|
||||
HRULE:$lvl14#$L14color:L14
|
||||
HRULE:$lvl15#$L15color:L15
|
||||
HRULE:$lvl16#$L16color:L16\\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=(
|
||||
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
|
||||
32
nginx.example.conf
Normal file
32
nginx.example.conf
Normal file
@ -0,0 +1,32 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name ingrrd.example.com;
|
||||
root /var/www/IngRRD/htdocs/;
|
||||
|
||||
access_log /var/log/nginx/ingrrd.example.com.access;
|
||||
location /cgi {
|
||||
include fastcgi_params;
|
||||
root /var/www/IngRRD/;
|
||||
fastcgi_param SCRIPT_FILENAME /var/www/IngRRD/$fastcgi_script_name;
|
||||
fastcgi_pass /var/run/fcgiwrap.sock;
|
||||
# If you activate clear_cache_on_update, it is recommended to
|
||||
# use a separate cache for this VHost.
|
||||
fastcgi_cache IngRRD;
|
||||
# ... so you can cache unchanged data for a long time
|
||||
fastcgi_cache_valid any 1h;
|
||||
fastcgi_cache_use_stale updating;
|
||||
fastcgi_cache_lock on;
|
||||
|
||||
location ~ ^/cgi/(.+)/add(\.html)? {
|
||||
auth_basic "Who are you?";
|
||||
auth_basic_user_file /var/www/IngRRD/htpass;
|
||||
include fastcgi_params;
|
||||
root /var/www/IngRRD/;
|
||||
fastcgi_param SCRIPT_FILENAME /var/www/IngRRD/$fastcgi_script_name;
|
||||
fastcgi_pass /var/run/fcgiwrap.sock;
|
||||
fastcgi_param AUTH_USER $remote_user;
|
||||
fastcgi_cache_valid any 1s;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user