Uninteressantes von einem Anwendungsentwickler aus Linse
 

Dockstar Keylistener

Kategorie "Linux" Linux  Verfasst von christian christian  Verfasst am 18.10.2010 22:20 18.10.2010 22:20  3 Galeriebilder 3 Galeriebilder  6 Kommentare 6 Kommentare  7238 Hits 7238x  

Wie ich ja schon in einem anderen Beitrag erwähnte, hat mich ein Kumpel auf eine super Idee gebracht. Man schließt einen Ziffernblock an die Dockstar an, und kann über Tastenkombinationen Befehle ausführen.

Das Script welches das ganze realisiert liest /dev/tty0 aus. Dies ermöglicht ein Zeilenweises auslesen. Auch die Backspace-Taste funktioniert problemlos. Man kann also die Eingaben sogar noch korrigieren.

Zusätzlich kann man eine PIN definieren um bestimmte Befehle zu schützen. Bevor man diese PIN nicht eingegeben hat, funktionieren nur Befehle bei denen der Parameter must_authentificate auf false gesetzt ist.

Wurde die PIN richtig eingegeben, blinkt der NumLock drei mal. Das selbe bei der Eingabe des Logout-Codes. Gibt man eine Tastenkombination ein die nicht belegt ist, passiert einfach nichts. Bei einer richtigen Eingabe blinkt der NumLock einmal. Der Befehl wird natürlich auch ausgeführt. ;)

Alle Aktionen werden außerdem in einem Log gespeichert.

Damit das NumLock-Blinken funktioniert braucht man übrigens einen Ziffernblock der keinen eigenen NumLock hat. Ich musste mir extra einen neuen kaufen, da der, der hier jahrelang im Schrank lag leider genau so einer war. Im Media Markt bin ich dann fündig geworden. Es handelt sich dabei um ein Hama Slimline Keypad »SK120«.

Der Verkäufer hat extra die Packung aufgeschnitten und getestet. *Thumbs.up*

Ich hoffe das es hier einige Besucher gibt die meinen Keylistener mal ausprobieren. Würde mich sehr über ein Feedback freuen. ;)

Einrichtung

Die Einrichtung ist eigentlich ganz einfach. Das Archiv muss in einen beliebigen Ordner auf der Dockstar entpackt werden. Die Definition der Befehle finden in der Datei config.inc.php statt.

Der Parameter file definiert das Device-File welches abgehört werden soll. Der Parameter muss im Normalfall aber nicht angepasst werden. Für Login und Logout können jeweils die Codes und eine Mitteilung definiert werden, die dann in das Log geschrieben wird.

Unter bindings werden die eigentlichen Codes definiert. Hier ein Beispiel:

"123" => array( // <-- Der Code
   "command" => "/usr/bin/setleds -num < /dev/tty0", // <-- Num Lock LED ausschalten
   "logmessage" => "Test",
   "must_authentificate" => false, // <-- oder true
)

In Zeile 1 kann ein beliebiger Code definiert werden. Wie lang dieser ist, spielt hier keine Rolle.

Nun noch den Befehl und eine Log-Nachricht definieren und entscheiden, ob man den Befehl auch ausführen darf wenn man nicht angemeldet ist.

Die einzelnen Befehle müssen mit Kommata getrennt werden!

Gestartet wird der Listener über das beiliegende Shellscript. Einfach die Datei runscript.sh mit dem Parameter start, stop oder restart ausführen. Natürlich muss php5-cli installiert sein.

Außerdem sollte der Listener in einem Ordner betrieben werden, in dem er auch Dateien erstellen kann. Beim Start werden ein pid File und die Log-Datei erstellt.

Übrigens: Um einen neuen Befehl hinzuzufügen, brauch man den Listener nicht neu starten!

Eine neue Version ist in Arbeit. Siehe folgenden Beitrag.

 

Verwandte Beiträge

 
 

Shortlink

 



6 Kommentare

Avatar
1) Kruecke schrieb am 19.10.2010 um 21:43 Uhr
Ultimativ crazy! Also alles wie immer! xD
Avatar
2) Frodo13 schrieb am 01.11.2010 um 21:05 Uhr
Gibt es dazu eine kurzes HowTo für die Einrichtung? Danke
Avatar
3) christian schrieb am 01.11.2010 um 22:10 Uhr
So. Mal auf die schnelle eine Anleitung geschrieben.
Falls noch Fragen sind, nur raus damit.
Avatar
4) beastofrock schrieb am 01.12.2010 um 20:55 Uhr
habe es getestet, beim start-befehl kommt immer folgender fehler:
PHP Warning: file_put_contents(): Filename cannot be empty in /srv/OWN/scripts/keypad/lib/class.logger.php on line 26

Avatar
5) christian schrieb am 03.12.2010 um 14:11 Uhr
Entschuldige das ich mich erst jetzt melde.

Habe den Fehler gefunden. In der Logger Klasse wird zwar geprüft ob das Logfile existiert, falls dies nicht der Fall ist, wird das aber einfach ignoriert. Dann versucht der Logger ins leere zu Loggen und alles fliegt einem um die Ohren. ^^

Auf jeden Fall ist ab sofort eine gefixte Version online. Danke für die Meldung. :)
Avatar
6) christian schrieb am 23.01.2011 um 15:57 Uhr
Kleiner Hinweis. Falls es /usr/bin/setleds nicht geben sollte, einfach das Paket kbd installieren.


Kommentar verfassen

 
  
 (wird nicht angezeigt)
 (optional)
 
Information
Auf dem Bild befindet sich eine Mathe Aufgabe. Bitte gib das Ergebnis dieser Aufgabe in das Eingabefeld neben dem Bild ein.
Dies dient dazu, um SPAM Bots auszusperren, die keine Bilder lesen können.

Um das Captcha neu zu laden, klicke einfach auf das Reload Symbol.
Captcha neu laden Captcha 
Alle eingegebenen Daten werden an den Antispam Dienst Akismet gesendet um SPAM Kommentare zu erkennen. Bitte erstelle keine Kommentare wenn Du damit nicht einverstanden bist!
(Das machen übrigens 90% aller Wordpress-Blogs!)

Tag Cloud

28c3   3D   ASCII   Akismet   Allgemein   Animation   Apache   Arbeit   Arch Linux   Archos 5   Asterix & Obelix   Audio   Auto   BOINC   Bash   Bitlbee   Blog v2.0   Bluetooth   Bodenwerder   Bouncer (BNC)   Bundestagswahl 09   Bücher   CCC   Chromium   Comics   Computerspiele   Content Managment System   Creative Commons   CyanogenMod   Cybton   DAU Alarm   DLRG   Datenbanken   Datenschutz   Debian   Deutsches Rotes Kreuz   Domains   Drucken   EZFlash Vi   Eclipse   Eingabegeräte   Ekelhaft   Email   Essen   Ethernet   Evernote   ExtJS   Facebook   Fail2Ban   Fanartikel   Feiertage   Fernsehn   Firefox   Flash   Flattr   Fotografie   Fritz!Box   Fun   Fußball   GEZ   GPS   Gameboy Advance   Games   Git   Gnome   Google   Google Android   Google Android Hacking   Google+   Grafiken   Grand Theft Auto IV   HTC   HTC Desire Z   HTML   Handhelds   Handy   Handy Apps   Hardware   Hardware Hacking   Homebrew   ICQ   IRC   ImapFilter   Internet   Internet Explorer   Internet Relay Chat (IRC)   Internetzensur   Java   JavaScript   JeeGeek   Justiz   Kino   Konzert   Kultur   Kumpels   Legend of Zelda   Linux   Linux Mint   MS SQL Server   Marilyn Manson   Microsoft .NET   Minecraft   Mobile   Mozilla   Music Player Daemon (MPD)   Musik   MySQL   NPD   Natur   Netbeans   Netbooks   Netzwerk   Nintendo   Nintendo DS   Nintendo DSi   Nintendo Wii   Notebook   OpenOffice   OpenOffice Impress   OpenWRT   PC Hardware   PHP   Pandora   Papierkorb   Patentrecht   Pidgin   Piratenpartei   Piwik   Politik   Privat   Programmieren   Projekte   PulseAudio   QR-Code   RSS   Rammstein   Root   SD-Karte   SOGo Scalable OpenGroupware   SSH   SVN   Schlüsselband   Schule   Seagate Freeagent Dockstar   Server   Serversicherheit   Sesamstraße   Shellscripting   Shopping   Shortlinker   Skype   Social Networks   Software   Spam   Spenden   Spongebob   Straßenverkehr   Support   TV   Tablets   Technik   Textverarbeitung   Thunderbird   Truecrypt   Twitter   Typo3   UMTS   USA   USB   Ubuntu   Underground Shopping   Urheberrecht   Urlaub   VMWare   VNC   Vereine   Verkaufen   Verstärker   Videorecorder   Viren und andere Schädlinge   Virtual Box   Vorratsdatenspeicherung   WLAN   Wahlen   Webspace   Wehrdienst   Weserbergland   Willkommen   Windows   Windows 7   X11   XFCE   XML   XStylus   Zeitschriften   Zensur   bind9   ffmpeg   netcup   openSSL   r0ket   sim4000.de   vim   Überwachung   Überwachungsstaat   üäx.de   1337