diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | modules/chat | 33 | ||||
-rwxr-xr-x | modules/date | 6 | ||||
-rwxr-xr-x | modules/echo (renamed from modules/msg) | 0 | ||||
-rwxr-xr-x | modules/join | 15 | ||||
-rwxr-xr-x | modules/names | 22 | ||||
-rwxr-xr-x | modules/nick | 10 | ||||
-rwxr-xr-x | modules/part | 15 | ||||
-rwxr-xr-x | modules/query | 23 | ||||
-rwxr-xr-x | modules/send_to_channel | 17 | ||||
-rwxr-xr-x | modules/sleep | 10 | ||||
-rwxr-xr-x | modules/test | 10 | ||||
-rwxr-xr-x | modules/twitter | 18 | ||||
-rwxr-xr-x | modules/wall | 5 | ||||
-rwxr-xr-x | modules/zeit | 4 | ||||
-rwxr-xr-x | noise | 36 | ||||
-rwxr-xr-x | noise-as-shack | 2 |
17 files changed, 200 insertions, 27 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..81154dd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +samples diff --git a/modules/chat b/modules/chat new file mode 100755 index 00000000..e5badc36 --- /dev/null +++ b/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/date b/modules/date new file mode 100755 index 00000000..8cd1b0c1 --- /dev/null +++ b/modules/date @@ -0,0 +1,6 @@ +#! /bin/sh +case "$1" in + (--help) : ;; + (*) + date --rfc-3339=s +esac diff --git a/modules/msg b/modules/echo index 344dd963..344dd963 100755 --- a/modules/msg +++ b/modules/echo diff --git a/modules/join b/modules/join new file mode 100755 index 00000000..68afcb66 --- /dev/null +++ b/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/names b/modules/names new file mode 100755 index 00000000..f5922064 --- /dev/null +++ b/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/nick b/modules/nick new file mode 100755 index 00000000..5ed1e9d9 --- /dev/null +++ b/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/part b/modules/part new file mode 100755 index 00000000..d35ac501 --- /dev/null +++ b/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/query b/modules/query new file mode 100755 index 00000000..ceeff8a5 --- /dev/null +++ b/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/send_to_channel b/modules/send_to_channel new file mode 100755 index 00000000..4a0470af --- /dev/null +++ b/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/sleep b/modules/sleep new file mode 100755 index 00000000..b8d350f7 --- /dev/null +++ b/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 + echo '[31;1mFAIL: $1 is not a number[m' + else + sleep "$1" + fi +esac diff --git a/modules/test b/modules/test index 30444bf7..2c0b8e0d 100755 --- a/modules/test +++ b/modules/test @@ -3,7 +3,11 @@ case "$1" in (--help) echo do some test-module related stuff ;; (*) - echo test-module called with following arguments: "$@" - ## send command for re-evaluation: - echo /espeak test >$NOISE_linefeed + + echo -n ">> " + read TEST + if [ $TEST == 'q' ]; then exit; fi + echo /wall [33m@@[m $TEST >$NOISE_linefeed + #sleep 1 + #sleep 1; echo /test >$NOISE_linefeed & esac diff --git a/modules/twitter b/modules/twitter index e8962657..49d092fb 100755 --- a/modules/twitter +++ b/modules/twitter @@ -22,6 +22,7 @@ def shorten(text): text = text.replace(" years", "y") text = text.replace(" year", "y") text = text.replace(" ago", "") + text = text.replace("a", "1") return text @@ -33,7 +34,7 @@ def parse(text): escape = "" if piece.startswith("@"): escape = "[33;4m" - if piece[1:].lower() == "shackspace": + if piece[1:].lower() == "shackspam" or piece[1:].lower() == "shackspace": escape = "[31;4m" elif piece.startswith("#"): @@ -48,16 +49,16 @@ def parse(text): return new if len(sys.argv) > 1 and sys.argv[1] == "--help": - print "read or post to the shackspace twitter timeline" + print "read or post to the shackspam twitter timeline" if len(sys.argv) == 3 and sys.argv[2] == "--verbose": print "call without parameters to read" - print "use /twitter [your tweet] to tweet something to the shackspace twitter timeline" + print "use /twitter [your tweet] to tweet something to the shackspam twitter timeline" exit() -api = twitter.Api(username="shackspace", password="0b0dallaf4lla") +api = twitter.Api(username="shackspam", password="sh4ckit") #api.SetXTwitterHeaders("Shackspace UTTERANCE","","0.00.0.01.42") @@ -93,7 +94,8 @@ else: a.reverse() for i in a: text = i.text - if i.user.screen_name.lower() == "shackspace": + ilen = len(i.user.screen_name) + len(shorten(i.GetRelativeCreatedAt())) + 2 + if i.user.screen_name.lower() == "shackspace" or i.user.screen_name.lower() == "shackspam": info = "[32;4m" + i.user.screen_name + "[m [34m" + shorten(i.GetRelativeCreatedAt()) + "[m" else: info = "[32m" + i.user.screen_name + "[m [34m" + shorten(i.GetRelativeCreatedAt()) + "[m" @@ -102,12 +104,12 @@ else: t = text.split(" ") tmp = "" for n in t: - if ((len(tmp) + len(n)) > 80): + if ((len(tmp) + len(n)) >= 80): print parse(tmp).encode("utf8") - tmp = " " *( len(info)-15) + tmp = " " * ilen tmp += " " + n - if len(tmp) > (len(info)-15+1): + if len(tmp) > ilen: print parse(tmp).encode("utf8") diff --git a/modules/wall b/modules/wall index fa7618fe..7c32d01d 100755 --- a/modules/wall +++ b/modules/wall @@ -2,8 +2,7 @@ case "$1" in (--help) : ;; (?*) - for client in /tmp/noise-client-* ; do - #echo /msg "$*`printf '\a'`" >$client - echo /msg "$*" >$client + for linefeed in /tmp/noise/*/linefeed ; do + echo /msg "$*" >$linefeed done esac diff --git a/modules/zeit b/modules/zeit index 75ffc20a..4c41fa10 100755 --- a/modules/zeit +++ b/modules/zeit @@ -9,10 +9,10 @@ case "$1" in M=`date +%M|sed 's/0*//'` echo /set pitch 10 case "$lang" in - (de|'') echo " Es ist $k Uhr $M" >$NOISE_linefeed ;; + (de|'') echo "/espeak Es ist $k Uhr $M" ;; (en|*-en) test -z "$M" || M="and $M minutes" - echo " It is $k o clock $M" >$NOISE_linefeed ;; + echo "/espeak It is $k o clock $M" ;; (*) echo "[31mError: unsupported [4mlang[0;31m = $lang[m" >&2 esac echo /set pitch ${noise_pitch-100} @@ -29,6 +29,12 @@ noise_set() { # set a variable eval "export noise_$1='$2' ; $echo \ \"[35;4m$1[0;35m changed from $old to [0;32m$2[m\"" fi + ## write variable to $env + if grep -q "^$1=" "$env" ; then + sed -ri "s'^($1)=(.*)\$'\1=\'$2\''" $env + else + echo "$1='$2'" >>$env + fi ;; esac } @@ -44,27 +50,35 @@ fail() { } cleanup() { - rm -f $linefeed kill $jobs + rm -f $linefeed $env + rmdir /tmp/noise/$$ 2>/dev/null + rmdir /tmp/noise 2>/dev/null } qname="`readlink -f "$0"`" dirname="`dirname "$qname"`" +export HOME='/home/shack' if test -d "$dirname/modules" ; then export NOISE_PATH="${NOISE_PATH+$NOISE_PATH:}$dirname/modules" export NOISE_PATH="${NOISE_PATH+$NOISE_PATH:}$HOME/noise/modules" fi -linefeed="/tmp/noise-client-$$" +mkdir -vp /tmp/noise/$$ +linefeed="/tmp/noise/$$/linefeed" +env="/tmp/noise/$$/environment" trap cleanup EXIT mkfifo $linefeed +touch $env ## ## ## readline() { { read && echo "$REPLY" ; } | sed -rn " s/[']//g - s:^/([a-z]+)([[:space:]]+(.*))?$:command=\1; args='\3';:p;t + s/~%/\n/g + s/([^\\])([#<>])/\1\\\\\2/g + s:^/([a-z_]+)([[:space:]]+(.*))?$:command=\1; args='\3';:p;t s@^([[:alnum:]_/+-]+):[[:space:]]*(.*)@command=lang; args='\1 \2';@p;t s@^\![[:space:]]*(.*)@command=play; args='\1';@p;t s:.*:command='$noise_default_command'; args='&';:p;t @@ -73,19 +87,13 @@ readline() { ## ## ## -export noise_prompt="[30mREADY.[m -" -export noise_default_command=espeak -## -## -## while echo -n "$noise_prompt" && eval "`readline`" ; do ## modcall for dir in `echo "$NOISE_PATH" | tr : \ ` ; do module="$dir/$command" if test -x "$module" ; then shift - eval 'NOISE="$0" NOISE_linefeed="$linefeed" "$module"' "$args" + eval 'NOISE="$0" NOISE_pid="$$" NOISE_linefeed="$linefeed" "$module"' "$args" continue 2 fi done @@ -110,6 +118,14 @@ EOF ## ## exec >>$linefeed +## +## +## +echo '/set prompt "[30mREADY.[m~%"' +echo '/set default_command espeak' +## +## +## while read ; do case $REPLY in (/quit) echo /quit ; exit ;; diff --git a/noise-as-shack b/noise-as-shack index c327bb81..10ae3c1c 100755 --- a/noise-as-shack +++ b/noise-as-shack @@ -1,4 +1,4 @@ #! /bin/sh qname="`readlink -f "$0"`" dirname="`dirname "$qname"`" -exec su - shack -c "$dirname"/noise +exec su - shack -c "env -i TCPREMOTEIP=\"$TCPREMOTEIP\" \"$dirname/noise\"" |