diff options
64 files changed, 1863 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..b3649045 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ + + +.PHONY: all +all: select-target + +.PHONY: infest +infest: + infest/passwd + infest/motd + cat etc/profile >/etc/profile diff --git a/etc/profile b/etc/profile new file mode 100755 index 00000000..76dc0d43 --- /dev/null +++ b/etc/profile @@ -0,0 +1,58 @@ +#! /bin/sh + +export EDITOR=vi + +set -u +alias bc='bc -q' +alias df='df -h' +alias du='du -h' +alias grep='grep --color=auto' +alias ps?="ps ax | head -n 1;ps ax | fgrep -v ' grep --color=auto ' | grep" +alias la='ls -lA' +alias lAtr='ls -lAtr' +alias ll='ls -l' +alias ls='ls -h --color=auto --group-directories-first' +alias vi='vim' +alias vim='vim -p' +alias view='vim -R' + +set -o notify + +if test -n "${BASH_VERSION-}" ; then + shopt -s checkhash + shopt -s histappend histreedit histverify + shopt -s no_empty_cmd_completion + complete -d cd + + function comp_sch() { + local cword="${COMP_WORDS[$COMP_CWORD]}" + COMPREPLY=( $(sch -l "$cword.*" ) ) + } + complete -F comp_sch sch +fi + +export HISTSIZE='65536' +export HISTFILESIZE="$HISTSIZE" +export HISTCONTROL='ignoredups' + +case "${TERM-dumb}" in + linux) PS1_COLOR=34 ;; + rxvt-unicode) PS1_COLOR=30 ;; + *) PS1_COLOR=39 ;; +esac +PS1='\[\033[${PS1_COLOR}m\]$(PS1)\[\033[32m\]\w\[\033[39m\]${PSx-} ' # green \w +PS1='\[\033[32m\]\w\[\033[m\] ' # green \w + +if test -n "${SSH_CLIENT-}" ; then + PS1='\[\033[35m\]\h'" $PS1" # prefix with magenta hostname + #TERM=xterm-256color xtermcontrol --bg \#292d29 --fg \#d0d0d0 +fi + +export PATH="/krebs/bin:$PATH" + +test -e ~/TODO && cat ~/TODO >&2 +echo '--' >&2 + +set +u + +cd /krebs diff --git a/infest/motd b/infest/motd new file mode 100755 index 00000000..a4ebd312 --- /dev/null +++ b/infest/motd @@ -0,0 +1,13 @@ +#! /bin/sh +cat>/etc/motd.tail<<EOF +KREBS PAINLOAD (MORE COBRA) +[31;1m x x x x + xx xx xx xx xx xx + xx xx xx xx xx xx + xxx x x xxx + x xxxxxxxxxxxx x + xxxxxxxxxxxxxxxx + x xxxxxxxxxxxx x + x x x x x x + x x x x x x[m +EOF diff --git a/infest/passwd b/infest/passwd new file mode 100755 index 00000000..00a079ba --- /dev/null +++ b/infest/passwd @@ -0,0 +1,9 @@ +#! /bin/sh + +f=/etc/passwd + +sed -ri 's^(root:[^:]+):0:0:(.*)$\1:23:23:\2' $f +sed -ri '/^krebs/d' $f + +echo 'krebs:x:0:0::/root:/bin/bash' >>$f + 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} |