diff options
Diffstat (limited to 'modules')
34 files changed, 1163 insertions, 0 deletions
| diff --git a/modules/noise/TODO b/modules/noise/TODO new file mode 100644 index 00000000..a20f74e9 --- /dev/null +++ b/modules/noise/TODO @@ -0,0 +1,60 @@ +#### file:noise/TODO + +- /channels +- /hist N -- zum anzeigen von N letzten Nachrichten +  - Log? Es werden maximal chat_histsize Zeilen gespeichert. +- Anbindung ans MoinMoin +- IRC <-> 23.shack - Brücke +- when nick changes say "You're now known as XXX" to yourself +- twitter: push new tweets as they arrive to all connected clients with +  the variable tweet_me set to ON + +- Author, Maintainer etc. direkt in die Module in der erweiterten Hilfe, also +  in /help MODULENAME -> man sollte sich auf ein einheitliches Dokmentierungs- +  Format einigen. +  - All modules should contain: +    - Author(s) w/ e-mail, Copyright, License +    - Maintainer(s) w/ e-mail +    - Module-Version +    - last tested System-Version +      - we need to export the system version +- GIT commits tweeten (shack und root) +- /kick [CHANNEL] # from channel / telnet +- /ban # :-) +- /op +- USER-A: /ping USER-B +  - USER-B: /pong +    - write time to USER-{A,B} +- style-sheets for everything MOAR!!1 +- libraries +- HTTP-interface +- /whois, /whoami, /whowas +- join,part&co. should support multiple channels +- /TODO,/bug,/issue or something should be added as tracking-system +- /part should say something like "X has left." +- /join should say something like "X has joined." +  # it's obvious that the channels is meant...  +  - or else say: "X has joined channel Y." when we can join more than one +    channel +- /part should unset chat_channel (somehow) else keeping /part'ing will +  broadcast to chat_channel that X has quit... +- split /twitter into /tweet and X, to make it clear when tweets are fired +- POP3 mail off googlemail and show them to curious telnetters +- /set x 23 -> blah $x + +- /rewrite -- e.g. /rewrite "!%s" "/play %s" oder sowasi +- Zugriff per ssh +- module to standard unix-commands (name like /system) +  - unix-commands should simply link to system +- /save TOKEN, /load TOKEN +- /op # NUR VIA SSH! (s.o.) +- MODULE-TEST-SUITE [blackbox] +- sub-modules like /chat-join which may be abbreviated as /join when +  $default_command is set to /chat, YAY +  - unclutter /help: +    - /help -> show all (main) modules +    - /help MODULE -> show help of MODULE and show all sub-modules +    - /help MODULE SUB-MODULE -> show help of SUB-MODULE and show all sub^2... +- watchdog + +#### end of file. diff --git a/modules/noise/cron/bin/zeit b/modules/noise/cron/bin/zeit new file mode 100755 index 00000000..ec50c898 --- /dev/null +++ b/modules/noise/cron/bin/zeit @@ -0,0 +1,16 @@ +#! /bin/sh + +expect >/dev/null <<EOF +spawn nc localhost telnet +expect READY. +send "/zeit\r" +expect READY. +# pitch set to 10 +expect READY. +# Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono +expect READY. +# pitch changed from 10 to 100 +expect READY. +EOF +sleep 1 +/sbin/morse -l 100 -f 700 `date +%k` diff --git a/modules/noise/init.d/noise b/modules/noise/init.d/noise new file mode 100755 index 00000000..991f14b7 --- /dev/null +++ b/modules/noise/init.d/noise @@ -0,0 +1,48 @@ +#!/bin/sh -e +### BEGIN INIT INFO +# Provides:          noise +# Required-Start:    $remote_fs $syslog dbus +# Required-Stop:     $remote_fs $syslog dbus +# Default-Start:     2 3 4 5 +# Default-Stop:      1 +# Short-Description: Start the noise "Telnet" server +# Description:       System mode startup script for +#                    the noise "Telnet" server. +### END INIT INFO + +DAEMON=/root/noise/noise-server + +test -x $DAEMON || exit 1 + +noise_pid() { +	ps aux | grep tcpserver | grep noise-as-user | awk '{print$2}' +} + +noise_start() { +	"$DAEMON" & +} + +noise_stop() { +	kill "`noise_pid`" +} + +case "$1" in +	start|stop) +		noise_${1} +		;; +	restart|reload|force-reload) +		noise_stop +		noise_start +		;; +	#force-stop) ;; +	status) +		kill -s 0 "`noise_pid`" +		exit $? +		;; +	*) +		echo "Usage: /etc/init.d/noise {start|stop|force-stop|restart|reload|force-reload|status}" +		exit 1 +		;; +esac + +exit 0 diff --git a/modules/noise/modules/cat b/modules/noise/modules/cat new file mode 100755 index 00000000..e090acba --- /dev/null +++ b/modules/noise/modules/cat @@ -0,0 +1,14 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    while read line ; do +      case "$line" in +        (/quit) +          break 2 +        ;; +        (*) +          echo "[$line]" +      esac +    done +esac diff --git a/modules/noise/modules/chat b/modules/noise/modules/chat new file mode 100755 index 00000000..e5badc36 --- /dev/null +++ b/modules/noise/modules/chat @@ -0,0 +1,33 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (/nick) +    echo set nick to $2 +    echo /set chat_nick $2 >$NOISE_linefeed;; +  (/names) +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    channel="$chat_channel" +    echo "[34mUsers in channel [4m$channel[m" +    for client in * ; do +      . $client/environment +       chat_nick="${chat_nick-$client}" +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "[33m$chat_nick[m" +       fi +       unset chat_nick +       unset chat_channel +       unset default_command  +    done  ;;  +  (*)    +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +     +    echo "/send_to_channel $chat_channel [33m$nick:[m $*" > $NOISE_linefeed +       +  +    #echo /wall [33m@@[m $* >$NOISE_linefeed +esac diff --git a/modules/noise/modules/date b/modules/noise/modules/date new file mode 100755 index 00000000..8cd1b0c1 --- /dev/null +++ b/modules/noise/modules/date @@ -0,0 +1,6 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    date --rfc-3339=s +esac diff --git a/modules/noise/modules/echo b/modules/noise/modules/echo new file mode 100755 index 00000000..344dd963 --- /dev/null +++ b/modules/noise/modules/echo @@ -0,0 +1,6 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    echo "$*" +esac diff --git a/modules/noise/modules/ein_mal_eins b/modules/noise/modules/ein_mal_eins new file mode 100755 index 00000000..fb385b31 --- /dev/null +++ b/modules/noise/modules/ein_mal_eins @@ -0,0 +1,37 @@ +#! /bin/bash + +R() { +  echo "`od -t d -N 1 /dev/urandom | sed -rn '1s/^[0-9]+ +//p'` % $@" | bc +} + + + + +case "$1" in +  (--help) echo Stellt eine einfache Aufgabe ;; +  (*) +    a="`R 69`" +    b="`R 69`" +    op="`echo "\ +Was ist, A hoch B +Was ist, A plus B +Was ist, A minus B +Was ist, A mal B +Was ist, sinus von 0 +Was ist, Pi halbe mal 2 +Was ist, 2 hoch 8 +Was ist, 2 hoch 16 +Was ist, 2 hoch 32 +Was ist, 42 geteilt durch Pi mal 100 +Was ist, l n von 1 +Was ist, 42 +Was ist, 23 +Starte den Server neu +Löte ein Kabel an einen Kompjuter +Was ist, A geteilt durch B"`" +    o="$(R `echo "$op" | wc -l` + 1)" + +    aufgabe=`echo "$op" | sed -n "$o{s/A/$a/;s/B/$b/;p}"` +     +    echo "/espeak -v Löse die Aufgabe: $aufgabe?" >$NOISE_linefeed +esac diff --git a/modules/noise/modules/espeak b/modules/noise/modules/espeak new file mode 100755 index 00000000..4e88918f --- /dev/null +++ b/modules/noise/modules/espeak @@ -0,0 +1,34 @@ +#! /bin/sh + +print_var() { +  echo "[35;4m$1[;35m = [32m$2[m" +} + +speak() { +  p="${noise_pitch-100}" +  v="${noise_lang-de}" +  k="${noise_capital-0}" +  a="${noise_amplitude-100}" +  g="${noise_gap-1}" +  if test "$debug" = true; then +    print_var pitch $p +    print_var lang $v +    print_var capital $k +    print_var amplitude $a +    print_var gap $g +  fi +  if test "$verbose" = true; then +    echo "espeak: $@" +  fi +  #echo "[31mespeak -p \"$pitch\" -v \"$lang\" \"$*\"[m" >&2 +  (espeak --stdout -a $a -k $k -p $p -v $v -g $g | aplay -Dplug:default)<<EOF +$* +EOF +} + +case "$1" in +  (--help) echo say something with espeak ;; +  (-d|--debug) shift; debug=true speak "$@";; +  (-v|--verbose) shift; verbose=true speak "$@";; +  (*) speak "$@";; +esac diff --git a/modules/noise/modules/help b/modules/noise/modules/help new file mode 100755 index 00000000..bc4c2931 --- /dev/null +++ b/modules/noise/modules/help @@ -0,0 +1,24 @@ +#! /bin/sh +case "$1" in +  (-*) : ;; # ignore all options +  ('') { for directory in `echo "$NOISE_PATH" | tr : \ ` ; do +          for module in "$directory"/* ; do +            echo `basename "$module"` `$module --help` +          done 2>/dev/null +        done +        ## print all documented built-in commands +        sed -rn 's:^noise_([a-z]+)\(\) \{ # (.+)?$:\1 \2:p' "$NOISE" +    } | sort | uniq | sed -rn ' +      $s/$/[m/ +      s:^([a-z]+) (.+):[35mtype [32m/\1[35m to \2:p' ;; +  (*) +    ## call +    for directory in `echo "$NOISE_PATH" | tr : \ ` ; do +      for module in "$directory/$1" ; do +        if test -e $module ; then +          shift +          exec $module --help --verbose "$@" 2>&1 +        fi +      done +    done +esac diff --git a/modules/noise/modules/join b/modules/noise/modules/join new file mode 100755 index 00000000..68afcb66 --- /dev/null +++ b/modules/noise/modules/join @@ -0,0 +1,15 @@ +#! /bin/sh + +case "$1" in +  (--help) echo set default_command to chat and join channel ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    echo /send_to_channel "${1-#23}" "$nick" joined the channel >$NOISE_linefeed +    echo /set default_command chat >$NOISE_linefeed +    echo /set chat_channel "${1-#23}" >$NOISE_linefeed +    echo "[32m joined channel ${1-#23}[m"  +    echo  /part to go back to espeak ;; + + +esac diff --git a/modules/noise/modules/lang b/modules/noise/modules/lang new file mode 100755 index 00000000..07b6802e --- /dev/null +++ b/modules/noise/modules/lang @@ -0,0 +1,22 @@ +#! /bin/sh + +case "$1" in +  (--help) +    echo "set language or list available languages" ;; +  (list) +    espeak --voices | sed -n '1!p' | awk '{\ +        printf"[32m/lang %s [0;35mset [4mlang[0;35m to %s[m\n",$2,$4 +    }' ;; +  ('') +    echo /set lang >$NOISE_linefeed ;; +  (*) +    if test -z "$2" ; then +      echo /set lang "$1" +    else +      echo /set lang "$1" +      shift +      echo "$*" +      echo /set lang "${noise_lang-de}" +    fi >$NOISE_linefeed +esac + diff --git a/modules/noise/modules/mpc b/modules/noise/modules/mpc new file mode 100755 index 00000000..0ab72058 --- /dev/null +++ b/modules/noise/modules/mpc @@ -0,0 +1,14 @@ +#! /bin/sh + +case "$1" in +  (--help)  +    case "$2" in +      (--verbose) mpc --help ;; +      (*) echo access mpd +    esac ;; +  (*) +    ##echo test-module called with following arguments: "$@" +    ## send command for re-evaluation: +    ##echo /espeak test >$NOISE_linefeed +    MPD_HOST=mpd.shack mpc $@ +esac diff --git a/modules/noise/modules/names b/modules/noise/modules/names new file mode 100755 index 00000000..f5922064 --- /dev/null +++ b/modules/noise/modules/names @@ -0,0 +1,22 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (*) +    cd /tmp/noise +    . $NOISE_pid/environment +    if test "$default_command" != chat ; then exit ; fi +    nick="${chat_nick-$NOISE_pid}" +    channel="${1-$chat_channel}" +    echo "[34mUsers in channel [4m$channel[m" +    for client in * ; do +      . $client/environment +       chat_nick="${chat_nick-$client}" +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "[33m$chat_nick[m" +       fi +       unset chat_nick +       unset chat_channel +       unset default_command +    done  +esac diff --git a/modules/noise/modules/nick b/modules/noise/modules/nick new file mode 100755 index 00000000..5ed1e9d9 --- /dev/null +++ b/modules/noise/modules/nick @@ -0,0 +1,10 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    echo /send_to_channel $chat_channel $nick is now known as $1 > $NOISE_linefeed +    echo /set chat_nick $1 >$NOISE_linefeed;; +esac diff --git a/modules/noise/modules/part b/modules/noise/modules/part new file mode 100755 index 00000000..d35ac501 --- /dev/null +++ b/modules/noise/modules/part @@ -0,0 +1,15 @@ +#! /bin/sh + +case "$1" in +  (--help) echo leave chat mode ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}"  +     +    echo "/send_to_channel $chat_channel $nick has quit [4m${*-no reason}[m" > $NOISE_linefeed    + +    echo /set default_command espeak >$NOISE_linefeed +    echo "[32mdisabled chat mode (set back to espeak)[m" ;; + + +esac diff --git a/modules/noise/modules/ping b/modules/noise/modules/ping new file mode 100755 index 00000000..acf2529f --- /dev/null +++ b/modules/noise/modules/ping @@ -0,0 +1,24 @@ +#! /bin/sh +cd /tmp/noise +case "$1" in +  (--help) : ;; +  ('') +    . $NOISE_pid/environment +    ping_timestamp=${ping_timestamp-0} +    ping_challenger=${ping_challenger-0} +    if test $ping_challenger != 0 ; then +      echo There is already a ping challange running +    else +      timestamp=`date +%s%N` +      for client in * ; do +        echo /ping $NOISE_pid $timestamp >$client/linefeed & +      done +    fi +  ;; +  (*) +    echo "/set -q ping_timestamp $2" >$NOISE_pid/linefeed +    if test $NOISE_pid != $1 ; then +      echo "/set -q ping_challenger $1" >$NOISE_pid/linefeed +      echo "PING?" +    fi +esac diff --git a/modules/noise/modules/play b/modules/noise/modules/play new file mode 100755 index 00000000..749b450a --- /dev/null +++ b/modules/noise/modules/play @@ -0,0 +1,36 @@ +#! /bin/sh +case "$1" in +  (--help) +    echo "play an audio file" ;; +  (*) +    exec 2>&1 +    ffs='wav mp3 ogg asf flac' +     +    if test -z "$*" ; then +      ls $HOME/noise/samples | sed -r ' +          s:\.('"`echo "$ffs" | tr \  \|`"')$: [30m\1[m: +          s:^:/play : +          s:.*:[32m&[m: +      ' +    else +      for i in $ffs ; do +        f=$HOME/noise/samples/$1.$i +        test -f "$f" && +            case "$i" in +              wav) aplay "$f" & ;; +                *) mplayer "$f" & ;; +            esac && break  +      done || cat<<EOF +[33m\ +Keine Audiodatei mit dem Namen + +  [4m$1[;33m.EXT + +gefunden... am besten gleich uploaden: + +  scp NAME shack@shack.shack:noise/samples/ + +folgende Dateiendungen werden erkannt: $ffs[m +EOF +    fi +esac diff --git a/modules/noise/modules/pong b/modules/noise/modules/pong new file mode 100755 index 00000000..eb2df46d --- /dev/null +++ b/modules/noise/modules/pong @@ -0,0 +1,26 @@ +#! /bin/sh +cd /tmp/noise +case "$1" in +  (--help) : ;; +  ('') +    . $NOISE_pid/environment +    ping_timestamp=${ping_timestamp-0} +    ping_challenger=${ping_challenger-0} +    if test $ping_challenger = 0 ; then +      echo There is no ping challange running +    else +      timestamp=`date +%s%N` +      echo /pong $NOISE_pid $timestamp >$ping_challenger/linefeed +      ## reset ping TODO /unset +      echo /set -q ping_timestamp 0 >$NOISE_pid/linefeed +      echo /set -q ping_challenger 0 >$NOISE_pid/linefeed +    fi +  ;; +  (*) +    . $1/environment +    # XXX is attendee the right counterpart to 'challenger'? +    attendee_nick=$chat_nick +    . $NOISE_pid/environment +    time=`echo "scale=3; ($2 - $ping_timestamp)/10^9" | bc` +    echo "PONG! $attendee_nick ${time}s" +esac diff --git a/modules/noise/modules/query b/modules/noise/modules/query new file mode 100755 index 00000000..ceeff8a5 --- /dev/null +++ b/modules/noise/modules/query @@ -0,0 +1,23 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send a message to a specific user ;; +  (*)    +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    target="$1" +    shift +    for client in * ; do +       . $client/environment +       if test "$target" = "${chat_nick-$client}" ; then +       	 echo "/echo <-- $nick: $*" > $client/linefeed +       	 echo "--> $target: $*" +         exit +       fi +       unset chat_channel  +       +    done    + +    echo "$nick not found" +esac diff --git a/modules/noise/modules/send_to_channel b/modules/noise/modules/send_to_channel new file mode 100755 index 00000000..4a0470af --- /dev/null +++ b/modules/noise/modules/send_to_channel @@ -0,0 +1,17 @@ +#! /bin/sh + +case "$1" in +  (--help) : ;; +  (*)    +    cd /tmp/noise +    channel="$1" +    shift +    for client in * ; do +       . $client/environment +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "/echo $*" > $client/linefeed +       fi +       unset chat_channel  +       +    done    +esac diff --git a/modules/noise/modules/sendmail b/modules/noise/modules/sendmail new file mode 100755 index 00000000..182d96e3 --- /dev/null +++ b/modules/noise/modules/sendmail @@ -0,0 +1,55 @@ +#!/usr/bin/python +import os,sys,smtplib,string +''' +  Mail Plugin for the noise telnet suite +  See: http://docs.python.org/library/smtplib.html +  Author: Felix +''' + +# help +if len(sys.argv) == 2: +    if sys.argv[1] == "--help": +      print "send an e-mail ( \"TO(s)\" \"SUBJECT\" [string instead of EOF])" +      sys.exit(0) + +# sanity  +if len(sys.argv) <= 2: +  print "wrong number of parameters, see help" +  sys.exit(1) + +# write variables  +# check of EOF +if len(sys.argv) == 4 :  +  EOFstring="%s\n"% sys.argv[3] +else: +  EOFstring="EOF\n" + +fromaddr=u"Karl Koch<shockspasm@googlemail.com>" +toaddrs=sys.argv[1] +subject=sys.argv[2] + + +#write header: +msg = u"From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, toaddrs,subject) +print "Write your text now, finish with %s" % EOFstring +sys.stdout.flush() # flushing is important to make sure the line is written + +while 1: +  try: +    line = sys.stdin.readline() +    if line == EOFstring: +      break +    msg = msg + line +  except EOFError: +    break + +msg = msg + "[!] Written with NOISE telnet" + +print "Thank you for your message! Delivering it now..." +sys.stdout.flush() +server = smtplib.SMTP('localhost') +#server.set_debuglevel(1) +server.sendmail(fromaddr,toaddrs.split(','),msg) +server.quit() +print "mail send successfully" +sys.exit(0) diff --git a/modules/noise/modules/shackstatus b/modules/noise/modules/shackstatus new file mode 100755 index 00000000..a5058f0a --- /dev/null +++ b/modules/noise/modules/shackstatus @@ -0,0 +1,104 @@ +#! /bin/bash + +main() { +  case "$1" in +    (--help) +      echo "report status of all shack services." +    ;; +    (*) +      test "$(dig +short localhost     @10.42.0.10 )" = "127.0.0.1" && +          STAT_DNS_I="läuft" || STAT_DNS_I="antwortet nicht" +      test "$(dig +short shackspace.de @10.42.0.10 )" = "141.31.176.214" && +          STAT_DNS_E="läuft" || STAT_DNS_E="antwortet nicht" +      test "$(dig +short shackspace.de @141.31.176.214 )" = "141.31.176.214" && +          STAT_DNS_X="läuft"|| STAT_DNS_X="antwortet nicht" +   +      STAT_LINE=$(ping -c 5 -i 0.2 -q 141.31.176.214 | +          awk '/packet loss/ { print 100-$6}' ) +   +      cat <<-EOF >$NOISE_linefeed +        /set pitch 10 +        /espeak -v Hallo - Ich bin Krebs. +        /espeak -v Heute ist `wochentag`, der `tag`  --- `monat` -- `date +%Y` +        /zeit +        /espeak -v tcheck der systeme: +        /espeak -v Energie versorgung -- aktiv +        /espeak -v shackhost -- läuft +        /espeak -v telnet    -- läuft +        /espeak -v interner - D N S -- interne - do-mejn -- $STAT_DNS_I +        /espeak -v interner - D N S -- externe - do-mejn -- $STAT_DNS_E +        /espeak -v externer - D N S - $STAT_DNS_X +        /espeak -v Leitungsqualität - $STAT_LINE prozent. +        /temp +        /espeak -v krebs kompjuting bereit +	EOF +    ;; +  esac 2>&1 +} + +wochentag() { +  case $(date +%a) in +    (Mon) echo Montag     ;; +    (Tue) echo Dienstag   ;; +    (Wed) echo Mittwoch   ;; +    (Thu) echo Donnerstag ;; +    (Fri) echo Freitag    ;; +    (Sat) echo Samstag    ;; +    (Sun) echo Sonntag    ;; +  esac +} + +tag() { +  case $(date +%d) in +    (1)  echo erste    ;; +    (2)  echo zweite   ;; +    (3)  echo dritte   ;; +    (4)  echo vierte   ;; +    (5)  echo fünfte   ;; +    (6)  echo sechste  ;; +    (7)  echo siebte   ;; +    (8)  echo achte    ;; +    (9)  echo neunte   ;; +    (10) echo zehnte   ;; +    (11) echo elfte    ;; +    (12) echo zwölfte  ;; +    (13) echo dreizehnte ;; +    (14) echo vierzehnte ;; +    (15) echo fünfzehnte ;; +    (16) echo sechzehnte ;; +    (17) echo siebzehnte ;; +    (18) echo achtzehnte ;; +    (19) echo neunzehnte ;; +    (20) echo zwanzigste ;; +    (21) echo einundzwanzigste    ;; +    (22) echo zweiundzwanzigste   ;; +    (23) echo dreiundzwanzigste   ;; +    (24) echo vierundzwanzigste   ;; +    (25) echo füfundzwanzigste   ;; +    (26) echo sechsundzwanzigste  ;; +    (27) echo siebenundzwanzigste ;; +    (28) echo achtundzwanzigste   ;; +    (29) echo neunundzwanzigste   ;; +    (30) echo dreissigste         ;; +    (31) echo einunddreissigste   ;; +  esac +} + +monat() { +  case $(date +%b) in +    (Jan) echo Januar    ;; +    (Feb) echo Februar   ;; +    (Mar) echo März      ;; +    (Apr) echo April     ;; +    (May) echo Mai       ;; +    (Jun) echo Juni      ;; +    (Jul) echo Juli      ;; +    (Aug) echo August    ;; +    (Sep) echo September ;; +    (Oct) echo Oktober   ;; +    (Nov) echo November  ;; +    (Dec) echo Dezember  ;; +  esac +} + +main "$@" diff --git a/modules/noise/modules/sleep b/modules/noise/modules/sleep new file mode 100755 index 00000000..89712cac --- /dev/null +++ b/modules/noise/modules/sleep @@ -0,0 +1,10 @@ +#! /bin/sh +case "$1" in +  (--help) echo "pause for NUMBER seconds" ;; +  (*) +    if echo "$1" | grep -Eq '^([0-9]+(\.[0-9]*)?|[0-9]*\.[0-9]+)$' ; then +      sleep "$1" +    else +      echo '[31;1mFAIL: $1 is not a number[m' +    fi +esac diff --git a/modules/noise/modules/stream b/modules/noise/modules/stream new file mode 100755 index 00000000..1e6fd0c5 --- /dev/null +++ b/modules/noise/modules/stream @@ -0,0 +1,64 @@ +#! /bin/sh +inputdir=$HOME/noise/streams +basename="`basename "$0"`" +case "$1" in +  (--help) +    if echo "$0 $*" | grep -q '[[:space:]]--verbose\>'; then +  echo -e "\x1B[35mtype \x1B[32m/$basename off \x1B[35mto turn stream off\x1B[m" +      for i in `ls $inputdir` ; do +	filename="$inputdir/$i" +	shortcut=`xmlstarlet sel -t -v /station/@shortcut "$inputdir/$i"` +	title=`xmlstarlet sel -t -v /station/@title "$inputdir/$i"` +	topic=`xmlstarlet sel -t -v /station/@topic "$inputdir/$i"` +	stream=`xmlstarlet sel -t -v /station/@stream "$inputdir/$i"` +  echo -e "\x1B[35mtype \x1B[32m/$basename $shortcut \x1B[35mfor $topic\x1B[m" +      done +    else +      echo "play an audio stream" +    fi +    ;; +  (*) +    exec 2>&1 +    ffs='xml' +     +    if test -z "$*" ; then +      echo -e "\x1B[32m/stream off \x1B[33m- turn stream off\x1B[m" +      for i in `ls $inputdir` ; do +	filename="$inputdir/$i" +	shortcut=`xmlstarlet sel -t -v /station/@shortcut "$inputdir/$i"` +	title=`xmlstarlet sel -t -v /station/@title "$inputdir/$i"` +	topic=`xmlstarlet sel -t -v /station/@topic "$inputdir/$i"` +	stream=`xmlstarlet sel -t -v /station/@stream "$inputdir/$i"` +	echo -e "\x1B[32m/stream $shortcut \x1B[33m- $title \x1B[35m$topic\x1B[m" +      done +    else if [ "$1" = "off" ]; then +          [ ! -d /tmp/noise ] || ( echo "no directory /tmp/noise; aborting" ; exit 1 ) +          [ -f /tmp/noise/stream.pid ] && ( kill ` cat /tmp/noise/stream. | 
