USB-Herelist: Unterschied zwischen den Versionen

aus Metalab, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Wechseln zu: Navigation, Suche
(update: System läuft prinzipiell. Testen beginnt.)
(10 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
 
USB-Herelist verwaltet eine Liste von Personen, die sich im Metalab befinden.
 
USB-Herelist verwaltet eine Liste von Personen, die sich im Metalab befinden.
 +
 +
'''Zu tun: ''' Ausprobieren!
  
 
'''Status:''' Anfang der Beta-Phase
 
'''Status:''' Anfang der Beta-Phase
Zeile 13: Zeile 15:
  
 
== Erweiterbarkeit ==
 
== Erweiterbarkeit ==
* Gewünscht ist, dass die Information auf der Webseite dynamisch angezeigt wird. Dazu ist noch eine Schnittstelle zu definieren
+
* Die Information wird auf der Webseite des Metalabs angezeigt.
 
=== Bezug zu anderen Projekten ===
 
=== Bezug zu anderen Projekten ===
 
* consti: KnockKnock:
 
* consti: KnockKnock:
Zeile 22: Zeile 24:
 
** Bei Auftreten von Events: kommen, gehen -> UDP-Broadcasts, HTTP-GET-Requests an Web-Projekte
 
** 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
 
** Auf Anfrage ausgeben der Liste -> kleiner HTTP-Server, XML und plain text
* Vorschlag für MOS: -> [http://metalab.at/wiki/Diskussion:USB-Herelist#MOS-Schnittstelle Diskussion], [http://getsatisfaction.com/metalab/topics/herelist_schnittstellendefinition MOS-Bugtracker]
+
* Einbindung zu MOS:  
** HTTP-GET-Requests an eine URL mit /update-herelist.php?event=Nickname%20has%20left.
+
** 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.  
** HTTP-GET-Request serving auf einem Port mit plaintext-Liste oder, falls nötig, äußerst einfachem XML-RPC.
+
** 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.
 
** Wenn man ganz motiviert ist, kann man mit AJAX (lies: XMLHttpRequest) den Bildschirm in Echtzeit updaten.
* Schön ist auch, dass nirgends Polling benötigt wird.
+
* Schön ist auch, dass nirgends Polling notwendig ist.
  
 
== Begrenzung ==
 
== Begrenzung ==
Zeile 62: Zeile 64:
 
* Netzkabel steht unter Strom.
 
* Netzkabel steht unter Strom.
 
* Ubuntu verwendet upstart (statt inittab).
 
* Ubuntu verwendet upstart (statt inittab).
 
+
* Manuelle Updates a la curl -F herelist=@test.txt http://127.0.0.1:8000/hello/update-herelist/
== Links ==
+
 
* Die Diskussion findet sich auf der Liste von 2007-October beginnend mit [http://lists.metalab.at/pipermail/metalab/2007-October/002453.html diesem Eintrag].
 
* Die Diskussion findet sich auf der Liste von 2007-October beginnend mit [http://lists.metalab.at/pipermail/metalab/2007-October/002453.html diesem Eintrag].
 +
 +
 +
'''Mitwirkende''': [[Benutzer:DavidDraco|David Draco]]; MOS-Integration: [[Benutzer:Fin|Fin]]
 +
[[Kategorie:Projekte]][[Kategorie:Infrastruktur]]

Version vom 24. Januar 2013, 02:41 Uhr

USB-Herelist verwaltet eine Liste von Personen, die sich im Metalab befinden.

Zu tun: Ausprobieren!

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

  • Die Information wird auf der Webseite des Metalabs angezeigt.

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).
  • Manuelle Updates a la 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; MOS-Integration: Fin