home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / var / lib / dpkg / info / samba-common.postinst < prev    next >
Encoding:
Text File  |  2006-07-11  |  4.2 KB  |  140 lines

  1. #!/bin/sh
  2. #
  3. #
  4.  
  5. set -e
  6.  
  7. # Do debconf stuff here
  8. . /usr/share/debconf/confmodule
  9.  
  10. # We need a default smb.conf file. If one doesn't exist we put in place
  11. #    one that has some basic defaults.
  12. if [ ! -e /etc/samba/smb.conf ]; then
  13.     cp -a /usr/share/samba/smb.conf /etc/samba/
  14. fi
  15.  
  16. # Static tempfile location, dpkg-style
  17. TMPFILE=/etc/samba/smb.conf.dpkg-tmp
  18.  
  19. # ------------------------- Debconf questions start ---------------------
  20.  
  21. # Is the user configuring with debconf, or he/she prefers swat/manual
  22. #    config?
  23. db_get samba-common/do_debconf || true
  24. if [ "${RET}" = "true" ]; then
  25.     # Get workgroup name
  26.     db_get samba-common/workgroup || true
  27.     WORKGROUP="${RET}"
  28.  
  29.     # Oh my GOD, this is ugly.  Why would anyone put these
  30.     # characters in a workgroup name?  Why, Lord, why???
  31.     WORKGROUP=`echo $WORKGROUP | \
  32.                sed -e's/\\\\/\\\\\\\\/g
  33.                       s#/#\\\\/#g
  34.                       s/&/\\\&/g
  35.                       s/\\\$/\\\\\\\$/g'`
  36.  
  37.     sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  38.         /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
  39.             s/^\([[:space:]]*\)workgroup[[:space:]]*=.*/\1workgroup = ${WORKGROUP}/i" \
  40.         < /etc/samba/smb.conf >${TMPFILE}
  41.     mv -f ${TMPFILE} /etc/samba/smb.conf
  42.  
  43.     # Encrypt passwords?
  44.     db_get samba-common/encrypt_passwords || true
  45.     ENCRYPT_PASSWORDS="${RET}"
  46.  
  47.     sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  48.         /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
  49.                 s/^\([[:space:]]*\)encrypt passwords[[:space:]]*=.*/\1encrypt passwords = ${ENCRYPT_PASSWORDS}/i" \
  50.         < /etc/samba/smb.conf >${TMPFILE}
  51.     mv -f ${TMPFILE} /etc/samba/smb.conf
  52.  
  53.     # Install DHCP support
  54.     db_get samba-common/dhcp && DHCPVAL="$RET"
  55.     db_fget samba-common/dhcp applied || true
  56.     if [ "$DHCPVAL" = true ] && [ "$RET" != true ] && \
  57.        ! grep -q dhcp.conf /etc/samba/smb.conf
  58.     then
  59.         sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  60.             /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
  61.                 /wins server[[:space:]]*=/a \\
  62. \\
  63. # If we receive WINS server info from DHCP, override the options above. \\
  64.    include = /etc/samba/dhcp.conf
  65. }" < /etc/samba/smb.conf > ${TMPFILE}
  66.         mv -f ${TMPFILE} /etc/samba/smb.conf
  67.     elif [ "$RET" != true ] && grep -q dhcp.conf /etc/samba/smb.conf
  68.     then
  69.         :
  70.         # FIXME: here we /delete/ the lines?
  71.     fi
  72.     # Once we get here, the config has been applied, whatever
  73.     # it is.
  74.     if [ "$RET" != true ]; then
  75.         db_fset samba-common/dhcp applied true
  76.     fi
  77.  
  78.     # Update charset settings?
  79.     if ! grep -q "^[[:space:]]*unix charset[[:space:]]*=" /etc/samba/smb.conf
  80.     then
  81.         db_get samba-common/character_set || true
  82.         UNIXCHARSET="${RET}"
  83.         if [ -n "$UNIXCHARSET" ]
  84.         then
  85.             sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  86.                 s/^\([[:space:]]*\)character set/\1character set/i
  87.                 /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
  88.                     /^[[:space:]]*character set[[:space:]]*=/c \\
  89.    unix charset = $UNIXCHARSET
  90.                 }" < /etc/samba/smb.conf > ${TMPFILE}
  91.             mv -f ${TMPFILE} /etc/samba/smb.conf
  92.         fi
  93.     fi
  94.  
  95.     if grep -qi "^[[:space:]]*passdb backend[[:space:]]*=.*unixsam" /etc/samba/smb.conf
  96.     then
  97.         sed -e 's/^\([[:space:]]*\)passdb backend/\1passdb backend/i
  98.             /^[[:space:]]*passdb backend/ {
  99.                 s/unixsam/guest/i
  100.             }' < /etc/samba/smb.conf > ${TMPFILE}
  101.         mv -f ${TMPFILE} /etc/samba/smb.conf
  102.     fi
  103.  
  104.     if ! grep -q "^[[:space:]]*dos charset[[:space:]]*=" /etc/samba/smb.conf
  105.     then
  106.         db_get samba-common/codepage || true
  107.         DOSCHARSET="${RET}"
  108.         if [ -n "$DOSCHARSET" ]
  109.         then
  110.             sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  111.                 s/^\([[:space:]]*\)client code page/\1client code page/i
  112.                 /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
  113.                     /^[[:space:]]*client code page[[:space:]]*=/c \\
  114.    dos charset = $DOSCHARSET
  115. }" < /etc/samba/smb.conf > ${TMPFILE}
  116.             mv -f ${TMPFILE} /etc/samba/smb.conf
  117.         fi
  118.     fi
  119.  
  120.     if dpkg --compare-versions "$2" lt 2.999+3.0.alpha20-4 \
  121.        && ! grep -q "^[[:space:]]*panic action[[:space:]]*=" /etc/samba/smb.conf
  122.     then
  123.         sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
  124.             /^[[:space:]]*\[global\]/a \\
  125. \\
  126. # Do something sensible when Samba crashes: mail the admin a backtrace\\
  127.    panic action = /usr/share/samba/panic-action %d" < /etc/samba/smb.conf > ${TMPFILE}
  128.         mv -f ${TMPFILE} /etc/samba/smb.conf
  129.     fi
  130.  
  131. fi
  132.  
  133. chmod a+r /etc/samba/smb.conf
  134.  
  135. # ------------------------- Debconf questions end ---------------------
  136.  
  137. db_stop
  138.  
  139.  
  140.