94f7256564
As Python interprets "(elem)" as string and not as tuple, maybe_node_by_mac() iterates over the single characters in the MAC- addressed passed as parameter when called parse_vis_data(). Most of the calls already use the "(elem, )" syntax to indicate that a tuple is passed. However, there is still one call for which this is not the case causing a noticable longer runtime due to calls to maybe_node_by_mac() that cannot yield any useful result. |
||
---|---|---|
nodedb | ||
.gitignore | ||
alfred.py | ||
aliases.json_sample | ||
bat2nodes.py | ||
batman.py | ||
d3mapbuilder.py | ||
ffhlwiki.py | ||
GlobalRRD.py | ||
LICENSE | ||
link.py | ||
mkmap.sh | ||
node.py | ||
nodedb.py | ||
NodeRRD.py | ||
README.md | ||
RRD.py | ||
rrddb.py |
Data for Freifunk Map, Graph and Node List
ffmap-backend gathers information on the batman network by invoking batctl 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.
The target directory is suggested to host all information for interpreting those node descriptions, e.g. as provided by https://github.com/ffnord/ffmap-d3.git . 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
The destination directory can be made directly available through apache:
$ cat /etc/apache2/site-enabled/000-default ... Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ... $ cat /etc/apache2/conf.d/freifunk Alias /map /home/ffmap/www/ Alias /firmware /home/freifunk/autoupdates/
To execute, run ./mkmap.sh ../www The script expects above described sudo-wrappers in the $HOME directory of the user executing the script. If those are not available, an error will occurr if not executed as root. Also, the tool realpath optionally allows to execute the script from anywhere in the directory tree.
For the script's regular execution add the following to the crontab:
*/5 * * * * /home/ffmap/ffmap-backend/mkmap.sh /home/ffmap/www