===== 23.shack ===== {{tag>project software computing infrastructure}} {{process:shack-heritage-badge.png}} auf telnet.shack port 23/tcp laeuft ein service der diversen audio-foo per cmdline bereit stellt. ==== struktur ==== Jede ausführbare Datei im Verzeichnis ''/root/noise/modules'' steht dem Benutzer als Befehl zur Verfügung. So kann beispielsweise ein neuer Befehl ''/foo'' hinzugefügt werden indem die Datei ''/root/noise/modules/foo'' erstellt wird. Befehle werden auch Module genannt. Module sollten folgende Eingenschaften aufweisen: * Wird das Modul mit dem Argument ''--help'' aufgerufen, so sollte es eine kurze Befehlsbeschreibung ausgeben. Diese Beschreibung ... * ... sollte genau eine Zeile lang sein. * ... sollte keine Escapesequenzen beinhalten. * ... sollte maximal 42 Zeichen lang sein. * Wird das Modul mit den Argumenten ''--help'' und ''--verbose'' aufgerufen, so sollte es eine vollständige Befehlsbeschreibung ausgeben. Diese Beschreibung ... * ... kann beliebig viele Zeilen lang sein. Jede dieser Zeilen ... * ... sollte maximal 78 Zeichen lang sein. * ... sollte normalen Text in lila darstellen. * Lila kann in Shell mit ''echo -e 'normaler text \x1B[35mLILA TEXT\x1B[m normaler Text''' erzeugt werden. * ... sollte Befehle und dazugehörige Argumente in grün darstellen. * Grün kann in Shell mit ''echo -e 'normal \x1B[35mgrün\x1B[m wieder normal''' erzeugt werden. ==== user-interface ==== nc telnet.shack 23 ''/help'' listet die vorhandenen module ''/modulname (parameter)'' startet das angegebene modul module stand 2010-12-28: type /chat to send text to everyone with @@ prepended type /espeak to say something with espeak type /join to set default_command to chat and join channel type /lang to set language or list available languages type /mpc to access mpd type /names to send text to everyone with @@ prepended type /nick to send text to everyone with @@ prepended type /part to leave chat mode type /play to play an audio file type /query to send a message to a specific user type /quit to exit type /sendmail to send an e-mail ( "TO(s)" "SUBJECT" [string instead of EOF]) type /set to set a variable type /shackstatus to report status of all shack services. type /sleep to pause for NUMBER seconds type /stream to play an audio stream type /test to do some test-module related stuff type /twitter to Bug Robert to implement Twitter-OAuth! type /unset to unset a variable type /vvs to query VVS type /zeit to say current time === interne kommunikation === die mit ''/'' angefuehrten kommandos koennen an eine named pipe uebergeben werden, um komplexere ausgaben zu erzeugen. diese wird unter ''/tmp/noise//linefeed'' bereit gestellt. der aktuelle pfad kann aus der variablen ''$NOISE_linefeed'' gelesen werden. === /set === mit ''/set'' koennen betriebsparameter gesetzt werden * ''/set pitch 10'' .. ''/set pitch 100'' - tonhoehe der sprachsynthese === /play === die durch ''/play'' abrufbaren audio-clips liegen auf ''shack@shack:noise/samples/'' ''/play'' ohne optionen listet die aufrufbaren clips === /stream === die durch ''/stream'' abrufbaren streams sind auf ''shack@shack:noise/streams/'' konfgurierbar ''/stream'' ohne optionen listet die aufrufbaren streams ''/stream off'' schaltet das streaming ab. == sample config == fuer jeden stream wird unter ''shack@shack:noise/streams/'' eine datei angelegt. deren name ist ohne bedeutung und muss lediglich auf ''.xml'' enden. title="Secret Agent on SomaFM" shortcut="secagent" topic="The soundtrack for your stylish, mysterious, dangerous life" stream="http://somafm.com/startstream=secretagent.pls" website="http://somafm.com/" /> == funktion == bei aufruf wird der beschriebene stream mit mplayer in hintergrund abgespielt. dessen pid wird in ''/tmp/noise/stream.pid'' abgelegt. beim aufruf eines ''/stream''-kommandos wird zunaechst diese datei gelesen und die darin hinterlegte pid gekillt. === /zeit === ''/zeit'' gibt die aktuelle Uhrzeit per espeak aus. Die automatische Ansage alle 30 Minuten wird von der Datei ''/etc/cron.d/noise-zeit'' gesteuert. === /shackstatus === verbalisierter systemcheck beim systemstart. hierzu gehoert die datei ''/etc/cron.d/noise-shackstatus'' ==== GIT-Repository ==== einchecken von aenderungen: cd ~root/noise export GIT_COMMITTER_NAME= GIT_AUTHOR_NAME= git add modules/stream git commit -m 'added module: stream'