www.fabiankeil.de/blog-surrogat/2007/03/07/vidalia-freebsd-port.html

Neu im FreeBSD-Ports-Portfolio: Vidalia

Vidalia ist eine auf Qt4 basierende grafische Oberfläche für Tor. Vidalia soll vor allem Tor-Neulingen den Einstieg erleichtern und macht daher nur einen kleinen Teil der Tor-Funktionen zugänglich, ist aber auch dann nützlich, wenn man Tor gar nicht über Vidalia steuern, sondern lediglich bei der Arbeit beobachten möchte.

Vidalia stellt dazu die von Tor genutzte Bandbreite grafisch dar und markiert die Positionen der Tor-Router auf einer Weltkarte. Bestehende Verbindungen zwischen Tor-Routern werden durch Linien gekennzeichnet, zu den einzelnen Tor-Routern lässt sich ein Teil der zugehörigen Informationen von den Directory-Servern anzeigen.

[Vidalia-Screenshot: Tor-Router symbolisiert als rote Punkte auf einer Weltkarte, teilweise verbunden mit grünen Linien.]

Zweiter Versuch

Die Vidalia-Installation unter FreeBSD hatte ich schon mal vor etwa einem halben Jahr versucht, damals war Qt4 aber noch nicht in den Ports, die Installation artete in Gefrickel aus und wurde erstmal verschoben.

Seit Anfang Februar ist Qt4 über die Ports verfügbar, von der ausführlichen Anleitung ermutigt, habe ich es erneut versucht, diesmal erfolgreich:

Vollständig getestet habe ich den Port nur unter FreeBSD 6.2, ich vermute jedoch, dass er auch unter FreeBSD 5.x und 7 funktioniert. Ich habe ihn heute als ports/110034 eingereicht, er sollte in Lauf der nächsten Tage als net-mgmt/vidalia erscheinen.

Update 2007-03-09: Nach einer Korrektur der Abhängigkeiten (qt4-linguist fehlte in der ersten Version) ist Vidalia heute in FreeBSDs Ports-Collection angekommen.

Startprobleme unter E17

Vidalia benötigt eine Desktop-Umgebung mit systray-Unterstützung, Enlightenment hat keine, da der Rasterman nicht all zu viel von den systray-Icons hält.

Dass Vidalia einen systray-Icon hat war mir bereits von den Screenshots bekannt, dass es ohne den systray-Icon nicht funktioniert, weil die Fenster unzugänglich sind, geht aus den Bildern aber nicht klar hervor und sorgte für viel Freude bei der Fehlersuche.

Testweise habe ich schließlich mal wieder das Krap Desktop Environment angeworfen, wo die Vidalia-Zwiebel dann endlich erschien und den Weg zu den Fenstern freigab.

stalonetray to the rescue

[Screenshot: Vidalia-Zwiebel auf grauem Grund, ein Popup informiert über einen Circuit-Wechsel] KDE ist natürlich keine Lösung, glücklicherweise gibt es aber auch systray-Provider, die unabhängig vom Window-Manager sind.

Ich habe mir einige angesehen und bin bei stalonetray hängengeblieben. stalonetray überzeugt mit einem lässigen Namen und arbeitet gut genug mit Enlightenment zusammen, um Größe und Position zwischen Neustarts zu behalten.

Die Popups kommen nicht im E17-Design und sind dementsprechend häßlich, ich vermutet aber, dass dafür Qt verantwortlich ist.

Am liebsten wäre mir ein systray-Plugin für gkrellm, doch diese Marklücke scheint noch offen zu sein. Noch schöner wäre es, wenn Vidalia ein eigenständiges Fenster hätte, der Umweg über den Icon ist jedenfalls recht umständlich.

Qt-Risiken und -Nebenwirkungen

[Vidalia-Screenshot: Grüne Liniengrafik von Tors Bandbreiten-Nutzung] Der Qt-Abhängigkeit hat Vidalia wohl auch die Überfettung zu verdanken, auf meinem Rechner benötigt es im inaktiven Zustand bescheidene 40 MB Arbeitspeicher.

Beachtenswert ist auch der Bandbreitengraph: er mache zwar einen recht verpixelten Eindruck, ist aber derart effizient implementiert, dass er im Vollbild einen 1.5-Giga-Hertz-Prozessor auslastet – selbst wenn praktisch kein Tor-Verkehr darzustellen ist.

Konfiguration

Vidalia kann entweder Tor selber starten und die komplette Kontrolle übernehmen, oder sich mit einem bereits vorhandenen Tor-Prozess verbinden. Bei mir macht es letzteres, da Tor in einem FreeBSD-Jail läuft und ich Vidalia außerdem nur für die bunten Bilder benötige.

Die aktuelle Vidalia-Version (0.0.11) bietet seltsamerweise keine Möglichkeit, die IP-Adresse des Tor-Control-Ports über die grafische Oberfläche zu ändern, dem FreeBSD-Port habe ich daher eine TOR_CONTROL_ADDR-Variable spendiert. Kompiliert mit:

make TOR_CONTROL_ADDR=10.0.0.2

arbeitet Vidalia ohne Probleme mit dem Tor-Prozess im Jail zusammen:

fk@TP51 ~ $sudo pfctl -ss -r
self tcp privoxy-jail:8118 <- privoxy-jail:52495       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:8123 <- privoxy-jail:63134       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:52495 -> privoxy-jail:8118       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:63134 -> privoxy-jail:8123       ESTABLISHED:ESTABLISHED
self tcp tor-jail:9050 <- privoxy-jail:56132       ESTABLISHED:ESTABLISHED
self tcp tor-jail:9050 <- privoxy-jail:55500       ESTABLISHED:ESTABLISHED
self tcp tor-jail:9050 <- privoxy-jail:55011       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:56132 -> tor-jail:9050       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:55500 -> tor-jail:9050       ESTABLISHED:ESTABLISHED
self tcp privoxy-jail:55011 -> tor-jail:9050       ESTABLISHED:ESTABLISHED
self tcp tor-jail:9051 <- tor-jail:59978       ESTABLISHED:ESTABLISHED
self tcp tor-jail:59978 -> tor-jail:9051       ESTABLISHED:ESTABLISHED
self tcp tor-jail:59613 -> tor-jail:9051       ESTABLISHED:ESTABLISHED
self tcp tor-jail:9051 <- tor-jail:59613       ESTABLISHED:ESTABLISHED
self tcp tor-jail:65167 -> TP51:57376 -> croup.uncg.edu:9001       ESTABLISHED:ESTABLISHED
self tcp tor-jail:58743 -> TP51:65418 -> c48185.upc-c.chello.nl:9001       ESTABLISHED:ESTABLISHED
self tcp tor-jail:53055 -> TP51:64929 -> h872384.serverkompetenz.net:9001       ESTABLISHED:ESTABLISHED
self tcp TP51:58966 -> tor.fabiankeil.de:22       ESTABLISHED:ESTABLISHED

Abhängigkeiten

Vidalia selbst kompiliert auf meinem Rechner in etwa fünf Minuten, bei Bau der Qt4-Ports sollte man jedoch viel Geduld mit bringen, oder gleich zu den Binär-Pakete greifen. Vidalias vollständige Abhängigkeiten (mit abgewählter Tor-Abhängigkeit) halten sich im Rahmen:

fk@TP51 ~ $pkg_info -r -x vidalia
Information for vidalia-0.0.11:

Depends on:
Dependency: libdrm-2.0.2
Dependency: perl-5.8.8
Dependency: qt4-uic-4.2.2
Dependency: qt4-rcc-4.2.2
Dependency: libiconv-1.9.2_2
Dependency: qt4-moc-4.2.2
Dependency: pkg-config-0.21
Dependency: freetype2-2.2.1_1
Dependency: expat-2.0.0_1
Dependency: gettext-0.14.5_2
Dependency: qmake-4.2.2
Dependency: png-1.2.14
Dependency: fontconfig-2.3.2_6,1
Dependency: glib-2.12.9
Dependency: qt4-corelib-4.2.2_2
Dependency: xorg-libraries-6.9.0_1
Dependency: qt4-xml-4.2.2_1
Dependency: qt4-network-4.2.2_1
Dependency: qt4-gui-4.2.2_1
Dependency: qt4-libQtAssistantClient-4.2.2_1
Dependency: qt4-linguist-4.2.2_1

Abgesehen von den Qt-Ports werden sie auf den meisten Rechnern bereits vorhanden sein.