added function iwclient
[grml-etc-core.git] / etc / zsh / zshrc
index 91b39d7..b609ce2 100644 (file)
@@ -3,7 +3,7 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Mon Jun 04 23:21:01 CEST 2007 [mika]
+# Latest change: Sam Jun 09 18:44:38 CEST 2007 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
@@ -92,7 +92,7 @@
 # check for user, if not running as root set $SUDO to sudo
  (( EUID != 0 )) && SUDO='sudo' || SUDO=''
 
-  function salias() {
+  salias() {
     # creates an alias and precedes the command with
     # sudo if $EUID is not zero.
     local only=0 ; local multi=0
@@ -349,7 +349,7 @@ fi
      function compdef { }
   fi
 
-  is4 && autoload -U zed                  # use ZLE editor to edit a file or function
+  is4 && autoload -U zed # use ZLE editor to edit a file or function
 
   is4 && for mod in complist deltochar mathfunc ; do
              zmodload -i zsh/${mod} 2>/dev/null || print "Notice: no ${mod} available :("
@@ -820,7 +820,7 @@ Please use the wodim binary instead' ; return 1"
 
 # I hate lacking backward compability, so provide an alternative therefore
   if ! [ -x $(which apache2-ssl-certificate) ] ; then
-   function apache2-ssl-certificate(){
+     apache2-ssl-certificate(){
 
      print 'Debian does not ship apache2-ssl-certificate anymore (see #398520). :('
      print 'You might want to take a look at Debian the package ssl-cert as well.'
@@ -919,7 +919,7 @@ grmlcomp() {
 # zstyle ':completion:*' expand prefix suffix
 
 # automatic rehash? Credits go to Frank Terbeck
-# function my_accept () {
+# my_accept() {
 #   local buf
 #   [[ -z ${BUFFER} ]] && zle accept-line && return
 #   buf=( ${(z)BUFFER}  )
@@ -987,7 +987,7 @@ grmlcomp() {
 # {{{ grmlstuff
 grmlstuff() {
 # people should use 'grml-x'!
-  function startx() {
+  startx() {
     if [ -e /etc/X11/xorg.conf ] ; then
        [ -x /usr/bin/startx ] && /usr/bin/startx || /usr/X11R6/bin/startx
     else
@@ -998,7 +998,7 @@ If you want to use startx anyway please call \"/usr/bin/startx\"."
     fi
   }
 
-  function xinit() {
+  xinit() {
     if [ -e /etc/X11/xorg.conf ] ; then
        [ -x /usr/bin/xinit ] && /usr/bin/xinit || /usr/X11R6/bin/xinit
     else
@@ -1255,6 +1255,49 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
      setxkbmap us && echo 'Done' || echo 'Failed'
   }
 
+  # set up an ipv6 tunnel
+  ipv6-tunnel() {
+    case $1 in
+      start)
+       if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
+          print 'ipv6 tunnel already set up, nothing to be done.'
+          print 'execute: "ifconfig sit1 down ; ifconfig sit0 down" to remove ipv6-tunnel.' ; return 1
+       else
+          [ -n "$PUBLIC_IP" ] || local PUBLIC_IP=$(ifconfig $(route -n | awk '/^0\.0\.0\.0/{print $8; exit}') | \
+                                             awk '/inet addr:/ {print $2}' | tr -d 'addr:')
+          [ -n "$PUBLIC_IP" ] || { print 'No $PUBLIC_IP set and could not determine default one.' ; return 1 }
+          local IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x:1::1" $(print ${PUBLIC_IP//./ }))
+          print -n "Setting up ipv6 tunnel $IPV6ADDR via ${PUBLIC_IP}: "
+          ifconfig sit0 tunnel ::192.88.99.1 up
+          ifconfig sit1 add "$IPV6ADDR" && print done || print failed
+       fi
+       ;;
+      status)
+       if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
+          print 'ipv6 tunnel available' ; return 0
+       else
+          print 'ipv6 tunnel not available' ; return 1
+       fi
+       ;;
+      stop)
+       if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
+          print -n 'Stopping ipv6 tunnel (sit0 + sit1): '
+          ifconfig sit1 down ; ifconfig sit0 down && print done || print failed
+       else
+          print 'No ipv6 tunnel found, nothing to be done.' ; return 1
+       fi
+       ;;
+      *)
+       print "Usage: ipv6-tunnel [start|stop|status]">&2 ; return 1
+       ;;
+    esac
+  }
+
+  # run dhclient for wireless device
+  iwclient() {
+    salias dhclient "$(wavemon -d | awk '/device/{print $2}')"
+  }
+
   # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
   # bash() {
   #  NO_SWITCH="yes" command bash "$@"