2014-06-21 20:18:41 +02:00
|
|
|
# Data for Freifunk Map, Graph and Node List
|
2014-06-21 20:04:14 +02:00
|
|
|
|
2015-03-24 18:06:54 +01:00
|
|
|
[![Build Status](https://travis-ci.org/ffnord/ffmap-backend.svg?branch=master)](https://travis-ci.org/ffnord/ffmap-backend)
|
|
|
|
|
2014-06-21 20:04:14 +02:00
|
|
|
ffmap-backend gathers information on the batman network by invoking
|
2015-03-21 01:26:56 +01:00
|
|
|
|
|
|
|
* batctl,
|
|
|
|
* alfred-json and
|
|
|
|
* batadv-vis
|
|
|
|
|
2014-06-21 20:04:14 +02:00
|
|
|
as root (via sudo) and has this information placed into a target directory
|
|
|
|
as the file "nodes.json" and also updates the directory "nodes" with graphical
|
|
|
|
representations of uptimes and the number of clients connecting.
|
|
|
|
|
2015-03-21 01:26:56 +01:00
|
|
|
Run `backend.py --help` for a quick overview of all available options.
|
|
|
|
|
2014-06-21 20:04:14 +02:00
|
|
|
When executed without root privileges, we suggest to grant sudo permissions
|
|
|
|
within wrappers of those binaries, so no further changes are required in other
|
|
|
|
scripts:
|
|
|
|
|
2014-06-21 20:16:52 +02:00
|
|
|
<pre>
|
2014-06-21 20:04:14 +02:00
|
|
|
$ cat <<EOCAT > $HOME/batctl
|
|
|
|
#!/bin/sh
|
|
|
|
exec sudo /usr/sbin/batctl $*
|
|
|
|
EOCAT
|
2014-06-21 20:16:52 +02:00
|
|
|
</pre>
|
2014-06-21 20:04:14 +02:00
|
|
|
|
|
|
|
and analogously for batadv-vis. The entry for /etc/sudoers could be
|
|
|
|
whateveruser ALL=(ALL:ALL) NOPASSWD: /usr/sbin/batctl,/usr/sbin/batadv-vis,/usr/sbin/alfred-json
|
|
|
|
|
2014-06-21 20:16:52 +02:00
|
|
|
For the script's regular execution add the following to the crontab:
|
2014-06-21 20:18:41 +02:00
|
|
|
<pre>
|
2015-03-21 01:26:56 +01:00
|
|
|
* * * * * /path/to/ffmap-backend/backend.py -d /path/to/output -a /path/to/aliases.json --vpn ae:7f:58:7d:6c:2a --vpn d2:d0:93:63:f7:da
|
2014-06-21 20:18:41 +02:00
|
|
|
</pre>
|
2015-03-21 01:26:56 +01:00
|
|
|
|
|
|
|
# Data format
|
|
|
|
|
|
|
|
## nodes.json
|
|
|
|
|
|
|
|
{ 'nodes': {
|
|
|
|
node_id: { 'flags': { flags },
|
|
|
|
'firstseen': isoformat,
|
|
|
|
'lastseen': isoformat,
|
|
|
|
'nodeinfo': {...}, # copied from alfred type 158
|
|
|
|
'statistics': {
|
|
|
|
'uptime': double, # seconds
|
|
|
|
'memory_usage': double, # 0..1
|
|
|
|
'clients': double,
|
|
|
|
'rootfs_usage': double, # 0..1
|
|
|
|
'loadavg': double,
|
|
|
|
'gateway': mac
|
|
|
|
}
|
|
|
|
},
|
|
|
|
...
|
|
|
|
}
|
|
|
|
'timestamp': isoformat
|
|
|
|
}
|
|
|
|
|
|
|
|
### flags (bool)
|
|
|
|
|
|
|
|
- online
|
|
|
|
- gateway
|
2015-04-01 23:31:34 +02:00
|
|
|
|
|
|
|
# Removing owner information
|
|
|
|
|
|
|
|
If you'd like to redact information about the node owner from `nodes.json`,
|
|
|
|
you may use a filter like [jq]. In this case, specify an output directory
|
|
|
|
different from your webserver directory, e.g.:
|
|
|
|
|
|
|
|
./backend.py -d /ffmap-data
|
|
|
|
|
|
|
|
Don't write to files generated in there. ffmap-backend uses them as its
|
|
|
|
database.
|
|
|
|
|
|
|
|
After running ffmap-backend, copy `graph.json` to your webserver. Then,
|
|
|
|
filter `nodes.json` using `jq` like this:
|
|
|
|
|
|
|
|
jq '.nodes = (.nodes | with_entries(del(.value.nodeinfo.owner)))' \
|
|
|
|
< /ffmap-data/nodes.json > /var/www/data/nodes.json
|
|
|
|
|
|
|
|
This will remove owner information from nodes.json before copying the data
|
|
|
|
to your webserver.
|
|
|
|
|
|
|
|
[jq]: https://stedolan.github.io/jq/
|