Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 968fb36a1d13190d5ed9d2ee3bf64b87 > scriptlet

sympa-3.2.1-4mdk.i586.rpm

PREIN

/bin/sh
# Create "sympa" group if it is not already there
if ! grep -q "^sympa:" /etc/group; then
  echo "Adding system group: sympa."
  /usr/sbin/groupadd sympa
fi

# Add "apache" in group "sympa" so that it could access
# /etc/sympa/wwsympa.conf and therefore a working wwsympa ;-)
if ! grep -q "^sympa:.*\<apache\>" /etc/group; then
  echo "Adding apache in group sympa."
  comma="";
  [ -n "$(grep '^sympa:' /etc/group | sed -e 's/^sympa:.*:.*://')" ] && comma=",";
  perl -pi -e "s/^(sympa:.*)/\1${comma}apache/" /etc/group
fi

# Create "sympa" user if it is not already there
home_s_pw=`sed -n -e "/^sympa:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\):.*/s//\1/p" /etc/passwd`
if [ -z "$home_s_pw" ]; then
  echo "Adding system user: sympa."
  /usr/sbin/useradd -u 89 -m -g sympa -d /var/lib/sympa sympa -c "Sympa mailing-list manager" -s "/bin/false"
elif [ "$home_s_pw" != "/var/lib/sympa" ]; then
  echo "Problem: user \"sympa\" already exists with a home different from /var/lib/sympa"
  exit 0
fi

PREUN

/bin/sh
if [ $1 = 0 ]; then service sympa stop > /dev/null 2>/dev/null || :; /sbin/chkconfig --del sympa; fi;

POSTIN

/bin/sh
if [ $1 = 1 ]; then /sbin/chkconfig --add sympa; else if [ -f /var/lock/subsys/sympa ]; then service sympa restart > /dev/null 2>/dev/null || : ; fi; fi; 

# Install sympa.conf
if [ ! -f "/etc/sympa/sympa.conf" ]; then
  cp /usr/share/sympa/examples/config/sympa.conf /etc/sympa/sympa.conf
fi

# Add new parameters
if ! grep -q "^[:space:]*spool[:space:]\+" /etc/sympa/sympa.conf; then
  echo -e "\n## Parent directory containing all spools\n"	>> /etc/sympa/sympa.conf
  echo -e "spool\t\t/var/spool/sympa\n"				>> /etc/sympa/sympa.conf
fi
if ! grep -q "^[:space:]*spool[:space:]\+" /etc/sympa/sympa.conf; then
  echo -e "\n## Temporary directory\n"		>> /etc/sympa/sympa.conf
  echo -e "tmpdir\t\t/var/spool/sympa\n"	>> /etc/sympa/sympa.conf
fi

# Setup a correct hostname
perl -pi -e "s|MY_HOST|${HOSTNAME}|g" /etc/sympa/sympa.conf

# Ensure permissions and ownerships are right
chown -R root.root /usr/lib/sympa
chown -R sympa.sympa /var/spool/sympa
chmod -R ug=rwX,o=X /var/spool/sympa
chown -R sympa.sympa /var/run/sympa

chown -R sympa.sympa /etc/sympa/*
chmod 0640 /etc/sympa/sympa.conf

if [ -e "/var/log/sympa" ] && [ ! -f "/var/log/sympa" ]; then
  echo "Problem: /var/log/sympa.log already exists but it is not a file!"
fi
touch /var/log/sympa || /bin/true
chown sympa.sympa /var/log/sympa
chmod 0640 /var/log/sympa

chown sympa.sympa /usr/lib/sympa/bin/queue
chown sympa.sympa /usr/lib/sympa/bin/bouncequeue

# Get rid of the old /etc/sympa/config directory
if [ -d "/etc/sympa/config" ]; then
  rm -f /etc/sympa/config/helpfile
  rm -f /etc/sympa/config/helpfile.advanced
  rm -f /etc/sympa/config/lists
  rmdir /etc/sympa/config || true
fi

# Try to add some sample entries in /etc/aliases for sympa
# TODO: handle updates from sympa 2.x entries to sympa 3.x entries ?
#       (sympa, listmaster, bounce+*, sympa-request, sympa-owner)
for a_file in /etc/aliases /etc/postfix/aliases; do
  if [ -f ${a_file} ]; then
    if [ `grep -c sympa ${a_file}` -eq 0 ]; then
      cp -f ${a_file} ${a_file}.rpmorig
      echo >> ${a_file}
      echo "# added by sympa-3.2.1 rpm " $(date) >> ${a_file}
      if [ `grep -c listmaster ${a_file}` -eq 0 ]; then
        echo "# listmaster:     root" >> ${a_file}
      fi
      echo "# sympa:          \"|/var/lib/sympa/bin/queue 0 sympa\"" >> ${a_file}
      echo "# sympa-request:  listmaster@${HOSTNAME}" >> ${a_file}
      echo "# sympa-owner:    listmaster@${HOSTNAME}" >> ${a_file}
      echo "" >> ${a_file}
      # (gb) The user have to manually comment out the new aliases
      # and then invoke: /usr/bin/newaliases
      echo "Your new aliases have been set up in ${a_file}. Please check them out before running /usr/bin/newaliases"
    else
      # Possibly fix up bad paths in aliases file
      perl -pi -e "s|/var/lib/sympa/bin/queue|/usr/lib/sympa/bin/queue|" ${a_file}
      /usr/bin/newaliases
    fi
  fi
done

# Setup log facility for Sympa
if [ -f /etc/syslog.conf ] ;then
  if [ `grep -c sympa /etc/syslog.conf` -eq 0 ] ;then
    typeset -i cntlog
    cntlog=0
    while [ `grep -c local${cntlog} /etc/syslog.conf` -gt 0 ];do cntlog=${cntlog}+1;done
    if [ ${cntlog} -le 9 ];then
      echo "# added by sympa-3.2.1 rpm $(date)" >> /etc/syslog.conf
      echo "local${cntlog}.*       /var/log/sympa" >> /etc/syslog.conf
    fi    
  fi
fi

# Fix syslog variable for the correct subsystem to use in config files
cntlog=`sed -n -e "/^local.*sympa/s|^local\([0-9][0-9]*\)\.\*[ \t]*/var/log/sympa|\1|p" < /etc/syslog.conf`
for conffile in /etc/sympa/sympa.conf; do
  perl -pi -e "s|syslog(\s+)LOCAL[0-9]+|syslog\1LOCAL${cntlog}|" $conffile
done

# Eventually, add queue to sendmail security shell
if [ -d /etc/smrsh ]; then
  if [ ! -e /etc/smrsh/queue ]; then
    ln -s /var/lib/sympa/bin/queue /etc/smrsh/queue
  fi
fi

##
## WWSympa postinstall
##

# Install wwsympa.conf
if [ ! -f "/etc/sympa/wwsympa.conf" ]; then
  cp /usr/share/sympa/examples/wwsympa.conf /etc/sympa/wwsympa.conf
fi

# Setup a correct hostname
perl -pi -e "s|MY_HOST|${HOSTNAME}|g" /etc/sympa/wwsympa.conf

# Ensure permissions are correctly set for wwsympa.conf
chmod 0640 /etc/sympa/wwsympa.conf

# Setup log facility for Sympa
if [ -f /etc/syslog.conf ] ;then
  if [ `grep -c sympa /etc/syslog.conf` -eq 0 ] ;then
    typeset -i cntlog
    cntlog=0
    while [ `grep -c local${cntlog} /etc/syslog.conf` -gt 0 ];do cntlog=${cntlog}+1;done
    if [ ${cntlog} -le 9 ];then
      echo "# added by sympa-3.2.1 rpm $(date)" >> /etc/syslog.conf
      echo "local${cntlog}.*       /var/log/sympa" >> /etc/syslog.conf
    fi    
  fi
fi

# Fix syslog variable for the correct subsystem to use in config files
cntlog=`sed -n -e "/^local.*sympa/s|^local\([0-9][0-9]*\)\.\*[ \t]*/var/log/sympa|\1|p" < /etc/syslog.conf`
for conffile in /etc/sympa/wwsympa.conf; do
  perl -pi -e "s|syslog(\s+)LOCAL[0-9]+|syslog\1LOCAL${cntlog}|" $conffile
done

POSTUN

/bin/sh
#if [ $1 = 0 ]; then
#  if [ -d "/var/lib/sympa" ]; then
#    rm -rf /var/lib/sympa/*
#  fi
#fi
if [ ! -d "/var/lib/sympa" ]; then
  /usr/sbin/userdel -r sympa
  /usr/sbin/groupdel sympa  
fi
if [ $1 = 0 -a -d /etc/smrsh ]; then
  if [ -L /etc/smrsh/queue ]; then
    rm -f /etc/smrsh/queue
  fi
fi

##
## Sympa file list
##