USB-Herelist
aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Version vom 16. Dezember 2007, 00:24 Uhr von DavidDraco (Diskussion | Beiträge) (huge step forward thanks to fin!)
USB-Herelist verwaltet eine Liste von Personen, die sich im Metalab befinden.
Zu tun: Terminal an einem guten Platz aufhängen. Datei:Herelist-howto.doc, Datei:Herelist-howto.pdf ausdrucken und dazuhängen. Anschalten und testen!
Status: Anfang der Beta-Phase
Funktion
- USB-Gerät (Stick, Kamera, MP3-Player) werden ins Terminal gesteckt
- Das Programm benutzt lsusb um die Gerätinformationen auszulesen (Hersteller, ID, Produkt) und bildet daraus einen SHA1-Hash
- Insbesondere wird das Gerät nicht gemountet.
- Falls noch nicht bekannt, kann man das Gerät zu seinem Nicknamen registrieren lassen (auch mehrere Geräte).
- Sonst: Bei reinstecken wird zwischen "im Lab" und "nicht im Lab" (auf der Herelist/nicht auf der Herelist) ge-toggled.
- Gespeicherte Informationen: Nickname, SHA1 der lsusb-Informationen.
- Nach einer Timeout-Zeit (derzeit 12h) wird man vom System auch ausgetragen.
Erweiterbarkeit
- Gewünscht ist, dass die Information auf der Webseite dynamisch angezeigt wird. Dazu ist noch eine Schnittstelle zu definieren
Bezug zu anderen Projekten
- consti: KnockKnock:
- Liest SNMP (Laptops die im Lab sind) und Barcodes. Läuft noch nicht.
- Sobald funktionsfähig, wird USB-Herelist auch in dieselbe Datenbank speichern. Die Schnittstelle, die andere Metalab-Komponenten beliefert, wird dann daraus die Informationen beziehen.
Schnittstellen
- Vorteil ist, dass beliebige Schnittstellen möglich sind
- Bei Auftreten von Events: kommen, gehen -> UDP-Broadcasts, HTTP-GET-Requests an Web-Projekte
- Auf Anfrage ausgeben der Liste -> kleiner HTTP-Server, XML und plain text
- Einbindung zu MOS:
- Das Terminalgerät schickt, wenn: Etwas geändert wurde oder 20 Minuten vergangen sind, einen update-request, der die Liste beinhaltet. Die Webseite liefert aus dem Cache aus, außer der Cache ist älter als 30 Minuten oder die Herelist leer ist.
- für eine Beispiel-Implementation siehe USB-Herelist/MOS.
- Wenn man ganz motiviert ist, kann man mit AJAX (lies: XMLHttpRequest) den Bildschirm in Echtzeit updaten.
- Schön ist auch, dass nirgends Polling notwendig ist.
Begrenzung
- USB-Herelist kann nicht zur Authentifizierung verwendet werden, dazu ist die Information zu unsicher.
- Insbesondere ist es kein Anmelde-, Schlüssel- oder RFID-Ersatz
- Es ist kein Logging vorgesehen. Die einzige Information die gespeichert wird ist der derzeitige Zustand.
Wert der Information
- Die Benutzung ist freiwillig, daher ist die Information sicher immer unvollständig.
- Leute, die das System benutzen, sagen damit anderen (evtl. über die Webseite), "Hi, ich bin im Lab!"
- Wenn ein USB-Gerät geklaut wurde oder nachgebaut, oder wenn jemand den Namen eines Anderen für sein Gerät einträgt, kann die Liste gefälscht werden. Bei 2 Produkten, die keine ProductID angeben, kann eine Überschneidung sogar unabsichtlich passieren. Das sollte aber auffallen.
Der Informationsgehalt lässt sich mit dem von Wikipedia vergleichen: unvollständig, fälschbar, nicht sicher, aber so gut wie immer richtig.
Wozu das alles
- Es ist oft nett, zu wissen, ob eine Person A im Lab ist, weil man vl. von A etwas braucht, quatschen will, etc.
- Das Schönste daran finde ich, dass es freiwillig ist.
Code
Datei:Usbherelist-2007-12-15.tar.bz2.
- Systemkonfiguration: 60 Zeilen.
- crontab für timeout
- /etc/event.d/tty2 für USB-Herelist auf tty2
- /etc/init.d/usbherelist-httpd für http-server starten/stoppen
- /etc/syslog.conf für fifo-Ausgabe, damit nicht als root die kernel-log angesehen werden muss
- /etc/visudo: lsusb als root
- Http-Server: 77 Zeilen (netcat + bash)
- plaintext (\n-Getrennte Liste) & pseudo-xmlrpc
- usb-herelist: 207 Zeilen.
- läuft auf tty2
Notizen
- tail hat einen Buffer. Das suckt. Aber: Workaround gefunden.
- Der Einschaltknopf ist am Notebook zwischen Display und Notebook, am Notebook, in der Mitte, unten ein weißes Zäpfen das man nach rechts drückt. Wird nicht runtergefahren, wenn man im laufenden Betrieb drückt.
- Netzkabel steht unter Strom.
- Ubuntu verwendet upstart (statt inittab).
- TODO: curl -F herelist=@test.txt http://127.0.0.1:8000/hello/update-herelist/
- Die Diskussion findet sich auf der Liste von 2007-October beginnend mit diesem Eintrag.
Mitwirkende: David Draco