summaryrefslogtreecommitdiffstats
path: root/elchos/root-image/krebs/lib/network
diff options
context:
space:
mode:
Diffstat (limited to 'elchos/root-image/krebs/lib/network')
-rw-r--r--elchos/root-image/krebs/lib/network100
1 files changed, 100 insertions, 0 deletions
diff --git a/elchos/root-image/krebs/lib/network b/elchos/root-image/krebs/lib/network
new file mode 100644
index 00000000..9863a803
--- /dev/null
+++ b/elchos/root-image/krebs/lib/network
@@ -0,0 +1,100 @@
+#@include core
+. /krebs/lib/core
+
+# TODO refactor this
+which_get_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -q -O-"
+ fi
+ else
+ echo "curl -L -s"
+ fi
+ return 0
+}
+
+which_head_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -O- --spider -S -q"
+ fi
+ else
+ echo "curl -L -I -s"
+ fi
+ return 0
+}
+
+http_get(){
+ eval "$(which_get_loader)" "${1?please provide url}"
+}
+http_head(){
+ eval "$(which_head_loader)" "${1?please provide url}" 2>&1
+}
+
+internet(){
+ secret=$(http_get http://krebsco.de/secret 2>/dev/null)
+ if [ "$secret" = "1337" ]; then
+ return 0
+ else
+ echo "cannot load secret or secret incorrect" >&2
+ return 1
+ fi
+}
+
+which_telnet(){
+ # find Telnet or similar and executes it at the end
+ # requires exist
+ # if env TELNET is set, will be trying to run this
+ # Tries the following things:
+ # telnet
+ # nc
+ # netcat
+ # busybox telnet
+ if [ -e "${TELNET:-does_not_exist}" ]; then
+ info "Will be using $TELNET as Telnet Client"
+ echo $TELNET
+ elif exists telnet ;then
+ command -v telnet
+ elif exists nc ;then
+ command -v nc
+ elif exists netcat;then
+ command -v netcat
+ elif exists busybox;then
+ echo `command -v busybox` telnet
+ else
+ die 'Cannot find telnet binary, please install either telnet-client or busybox or netcat or provided TELNET environment.'
+ fi
+}
+
+run_telnet(){
+ host="$1"
+ port="$2"
+ $(which_telnet) "$host" "$port"
+}
+
+send_irc(){
+ ## reads from stdin, writes to IRC
+ ##
+ ## requires func: exists() anytelnet()
+ if [ -z "${HOSTN:-}" ]; then
+ HOSTN="$(get_hostname)"
+ info "no HOSTN given, using $HOSTN instead"
+ fi
+ IRCCHANNEL=${IRCCHANNEL:-"#krebs_incoming"}
+ IRCSERVER=${IRCSERVER:-"irc.freenode.net"}
+ IRCPORT=${IRCPORT:-6667}
+ NICK="${NICK:-${HOSTN}_$(head /dev/urandom | tr -dc "0123456789" | head -c3)}"
+ info "starting irc connect as $NICK"
+ ( echo "NICK $NICK";
+ echo "USER $NICK $IRCSERVER bla : $NICK";
+ echo "JOIN $IRCCHANNEL";
+ sleep 23;
+ while read line; do echo "PRIVMSG $IRCCHANNEL :$line";sleep 1;done
+ sleep 5; ) | run_telnet $IRCSERVER $IRCPORT 2>/dev/null
+}