lib | ||
nodedb | ||
.gitignore | ||
.travis.yml | ||
aliases.json_sample | ||
backend.py | ||
LICENSE | ||
README.md |
Data for Freifunk Map, Graph and Node List
ffmap-backend gathers information on the batman network by invoking
- batctl,
- alfred-json and
- batadv-vis
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.
Run backend.py --help
for a quick overview of all available options.
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:
$ cat < $HOME/batctl #!/bin/sh exec sudo /usr/sbin/batctl $* EOCAT
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
For the script's regular execution add the following to the crontab:
* * * * * /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
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
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.