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
K (fame)
(documented the removal of code from MOS.)
 
(7 dazwischenliegende Versionen von 2 Benutzern 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.
== Aktuelles ==
 
'''Status:''' Anfang der Beta-Phase
 
'''Metalab-Hauptseitenintegration:''' Ich hab mitgekriegt, dass es in Django geschrieben ist, also hab ich eine einfache fehlertolerante, offline-fähige Implementation geschrieben: [[USB-Herelist/MOS]].
 
  
 +
'''Zu tun: ''' Ausprobieren!
 +
 +
'''Status:''' MOS-Code entfernt in https://github.com/Metalab/mos/commit/de6e06cee345c23ce22908163f7b1c2fdcc50249
  
 
== Funktion ==
 
== Funktion ==
Zeile 15: 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 24: 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:  
 
** 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.  
 
** 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 Implementation siehe [[USB-Herelist/MOS]].
+
** 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 notwendig ist.
 
* Schön ist auch, dass nirgends Polling notwendig ist.
Zeile 64: Zeile 64:
 
* Netzkabel steht unter Strom.
 
* Netzkabel steht unter Strom.
 
* Ubuntu verwendet upstart (statt inittab).
 
* Ubuntu verwendet upstart (statt inittab).
* TODO: curl -F herelist=@test.txt http://127.0.0.1:8000/hello/update-herelist/
+
* 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 [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''': [[David Draco]]
+
'''Mitwirkende''': [[Benutzer:DavidDraco|David Draco]]; MOS-Integration: [[Benutzer:Fin|Fin]]
 +
 
 +
[[Kategorie:Infrastruktur]]

Aktuelle Version vom 10. Mai 2014, 01:48 Uhr

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

Zu tun: Ausprobieren!

Status: MOS-Code entfernt in https://github.com/Metalab/mos/commit/de6e06cee345c23ce22908163f7b1c2fdcc50249

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