===== 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'