home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / lib / YaST2 / servers_non_y2 / ag_xauth < prev    next >
Text File  |  2006-11-29  |  2KB  |  76 lines

  1. #!/bin/bash
  2.  
  3. # File:        ag_xauth
  4. # Package:    Network configuration
  5. # Summary:    Agent for reading|writing X11 authority information
  6. # Authors:    Dan Vesely, Michal Svec <msvec@suse.cz>,
  7. #        Werner Fink, Martin Vidner
  8. # See:        xauth(1), X(7)
  9. #
  10. # $Id: ag_xauth 13266 2004-01-19 08:40:37Z mvidner $
  11. #
  12. # Add a key with a new hostname to $USER's XAUTHORITY
  13. # via xauth and sux.
  14. #
  15. #    string tmpfile = SCR::Read(.xauth.key);
  16. #    /* change hostname and other required stuff */
  17. #    SCR::Write(.xauth.key, tmpfile);
  18. #
  19. # Note that now the script returns and expects a file name with
  20. # the key data to avoid disclosing the key via ps.
  21. # Old ycp code will still work.
  22.  
  23. # If there's no DISPLAY, xauth and sux complain
  24. exec 2>/dev/null
  25.  
  26. # We want to parse English output
  27. export LC_ALL=C
  28.  
  29. while true ; do
  30.     IFS=
  31.     read COMMAND || exit
  32.     unset IFS
  33.     # strip leading backquote introduced by NI
  34.     COMMAND=${COMMAND#\`}
  35.  
  36.     case "$COMMAND" in
  37.     "result ("*)
  38.         exit
  39.         ;;
  40.  
  41.     "Read (.key)")
  42.         tmp=$(mktemp /root/.Xauthority-XXXXXX)
  43.         chmod 0600 $tmp
  44.         X=:${DISPLAY##*:}
  45.         Y=$(hostname -f)$X
  46.  
  47.         # Use autoconf-like replacement strings but escape them to
  48.         # guard againt possible future autoconfiscation of this script.
  49.         su - $USER --command="/usr/X11R6/bin/xauth list $X $Y" | sed \
  50.             -e "s/^$(cat /proc/sys/kernel/hostname)/add @HN\@/" \
  51.             -e "s/^$(hostname -f)/add @FQHN\@/"        > $tmp
  52.  
  53.         echo '"'$tmp'"'
  54.         ;;
  55.  
  56.     "Write (.key,"*)
  57.         tmp=$(mktemp /root/.Xauthority-XXXXXX)
  58.         chmod 0600 $tmp
  59.         file=$(echo "$COMMAND" | sed 's/^Write (.key, *"\(.*\)")/\1/')
  60.  
  61.         sed -e "s/@HN\@/$(cat /proc/sys/kernel/hostname)/" \
  62.         -e "s/@FQHN\@/$(hostname -f)/" < $file > $tmp
  63.  
  64.         /usr/X11R6/bin/xauth source $tmp
  65.         rm -f "$file" "$tmp"
  66.         sux -c exit - $USER
  67.         echo "true"
  68.         ;;
  69.  
  70.     *)
  71.         echo nil
  72.     esac
  73. done
  74.  
  75. # EOF
  76.