Ffmap-backend und meshviewer

Das ist das erwartete Verhalten. Gateways sind ja auch nur normale Knoten im Mesh. Man kann jedoch Links als VPN markieren um diese auszublenden. Dafür gibt es im Backend die Option --vpn MAC [MAC, ...] (vgl. backend.py --help), mit der man einige im VPN vorkommende MACs als solche kennzeichnet. Das Backend markiert dann alle Links im entsprechenden Teilgraphen als VPN.

1 „Gefällt mir“

Irgendwie ist es gerade zum Mäuse melken.
Ich habe das neue Backend nach /opt/ffmap-backend installiert. Starte ich nun /opt/ffmap-backend/backend.py -d /var/www/mesh/data/ von Hand, funktioniert alles ohne Probleme.

Dann habe ich einen CronJob in /etc/cron.d/ffmap-backend eingerichtet:

# new backend for the meshviewer
*/1 * * * * root /opt/ffmap-backend/backend.py -d /var/www/mesh/data/

Dieser wird laut Logs auch ordnungsgemäß ausgeführt:

# tail -1 /var/log/syslog
Apr 12 12:38:01 map /USR/SBIN/CRON[6264]: (root) CMD (/opt/ffmap-backend/backend.py -d /var/www/mesh/data/)

Nur aktualisiert wird offenbar rein garnix. Hat jemand eine Idee, woran es liegen könnte, oder wo ich Debuggen kann? StdOut und StdErr hab ich schon in eine Datei gepiped, da kommt aber genau nix.

Wahrscheinlich unterscheidet sich das Environment des Cronjobs von dem deiner Shell (das ist bei vielen Distributionen so gedacht). Insbesondere PATH ist häufig anders gesetzt. Allerdings sollte der cron Mails mit den Ausgaben des Jobs schreiben.

Nachdem ich auch mit anderen cron Jobs Probleme hatte habe ich meine in dieser Form gestaltet:

*/1 * * * * /bin/bash --login /opt/ffmap-backend/backend.py -d /var/www/mesh/data/

Wobei die ich als Root die Jobs mit crontab -e eingetragen habe.

Warum lasst ihr das eigentlich alle als root laufen? Der Code ist darauf ausgelegt für nichts besondere Rechte zu brauchen und ihr holt euch damit ein unnötiges Sicherheitsrisiko ins System.

4 „Gefällt mir“

Bei mir läufts nur testweise als root, um Rechteprobleme auszuschließen.

Weils als Root läuft und anders nicht. Das alte Backend lief als explizieter User bei mir. Wieso das neue Backend das nicht will, weiß ich nicht, weil ich kriege irgendwie auch keine vernünftigen Logs davon. Ich denke mal das es ein Rechte Problem ist beim Aufruf von alfred-json oder sonstwas. Ich benutze Debian Wheezy.

Bei mir läuft das neue Backend nicht als unprivilegiert Benutzer:

# su - ffmap
$ /opt/ffmap-backend/backend.py -d /opt/ffmap-backend/data/
Can't connect to unix socket: Permission denied
Traceback (most recent call last):
  File "/opt/ffmap-backend/backend.py", line 154, in <module>
    main(options)
  File "/opt/ffmap-backend/backend.py", line 69, in main
    nodes.import_nodeinfo(nodedb['nodes'], alfred.nodeinfo(),
  File "/opt/ffmap-backend/lib/alfred.py", line 27, in nodeinfo
    return self._fetch(158)
  File "/opt/ffmap-backend/lib/alfred.py", line 23, in _fetch
    output = subprocess.check_output(cmd)
  File "/usr/lib/python3.2/subprocess.py", line 522, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['alfred-json', '-z', '-f', 'json', '-r', '158']' returned non-zero exit status 1

Weil:

$ alfred-json -z -f json -r 168
Can't connect to unix socket: Permission denied

//EDIT: Mit strace konnte ich rausfinden, dass /var/run/alfred.sock nicht geöffnet werden kann. Bringts was, die Rechte davon zu ändern, oder wird die beim nächsten Neustart von Alfred eh wieder neu angelegt?

connect(3, {sa_family=AF_FILE, path="/var/run/alfred.sock"}, 110) = -1 EACCES (Permission denied)
dup(2)                                  = 4
fcntl(4, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
brk(0)                                  = 0x1891000
brk(0x18b2000)                          = 0x18b2000
fstat(4, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1780e7d000
lseek(4, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
write(4, "Can't connect to unix socket: Pe"..., 48Can't connect to unix socket: Permission denied
) = 48
close(4)                                = 0
munmap(0x7f1780e7d000, 4096)            = 0
exit_group(1)                           = ?
2 „Gefällt mir“

Pack den ffmap user doch mal in die alfred Gruppe, der gehört der Socket doch auch.

Probleme dürfte es derzeit nur mit batctl gwl geben, da dass Zugang zum debugfs benötigt.

Ich hab’s bei mir nun mit Hilfe von sudo laufen. Brauchte aber noch ein paar Teaks hier und da.
Wrapper für alfred-json, batadv-vis und batctl in $home/bin/
Passende sudoers
Angepasste PATH-Variable im CronJob

//EDIT: Oder auch doch nicht. Es wird keine nodes.json erstellt…

Ich aktualisiere gerade ffmap-backend dahingehend, dass das leichter wird. Ich melde mich, wenn ich denke, dass das ohne großen Frickel testbar ist.

2 „Gefällt mir“

Der aktuelle HEAD sollte das nun einfacher hinbekommen. Zusätzlich die Anleitung, was eingerichtet werden muss:

Bei Problemen bitte zurückmelden.

unter map.hamburg.freifunk.net wird aktuell die neue Knotenkarte in Hamburg getestet…

Es klemmt noch an ein paar kleineren Ecken, das Meiste funktioniert aber schon sehr gut.

765 Knoten


Und hier noch ein paar:

7 Knoten

27 Knoten


45 Knoten



Über 1300 Knoten! WOW! :smiley:

1 „Gefällt mir“

Ich empfand es immer als sehr nützlich direkt die Clients an den Nodes im Graphen sehen zu können. Wäre es nicht eine gute Lösung diese als Zahl in dem Punkt darzustellen?

Im Moment werden die Punkte alle als ein Pfad gezeichnet. Wenn ich die noch individuell zeichnen würde, wird das wieder langsam im Firefox. Die Labels sind ja schon hart am Limit von dem was Firefox verträgt.

Ich hab hier mit Firefox keinerlei Probleme. Da dürfte ruhig noch was dazu kommen.
Ich fände Clients an den Nodes, in welcher Art auch immer, sehr hilfreich.

4 „Gefällt mir“

Hi hi,

kann mir mal jemand sagen, wo die nodes.json und nodelist.json im frontend liegen müssen?

Viele Grüße

Patrik

Die müssen garnicht im Frontend liegen. Der Pfad dazu kann in der lib/config.js konfiguriert werden (als Pfad zum Verzeichnis in dem nodes.json und graph.json liegen. nodelist.json ist für freifunk-karte.de gedacht). Das darf sogar ein anderer Webserver sein, sofern dort CORS aktiviert ist.

OK vielen Dank, sorry war etwas blind.

Viele Grüße

Patrik

Ich habe nochmal was. Folgenden Fehler bekomme ich, wenn ich grunt ausführt

Running „sass:dist“ (sass) task
Syntax error: Invalid CSS after "…nd (max-width: ": expected expression (e.g. 1px, bold), was „$minscreenwidth) {“
on line 365 of scss/main.scss
Use --trace for backtrace.

woran könnte das denn liegen?