X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=usr%2Fshare%2Fcarnet-upgrade%2Ffunctions.sh;h=16f3d2306f5c89d3e0af48a23849a30a1aed0140;hb=5d929e88076c0d1e268525b609aead29b8a6eb00;hp=3c179a19e7ab2135c2bbe0b8f2a9d51b80608869;hpb=537d173be1b7f9bea2e605b026b762ddd3e7d268;p=carnet-upgrade.git diff --git a/usr/share/carnet-upgrade/functions.sh b/usr/share/carnet-upgrade/functions.sh index 3c179a1..16f3d23 100644 --- a/usr/share/carnet-upgrade/functions.sh +++ b/usr/share/carnet-upgrade/functions.sh @@ -198,7 +198,7 @@ run_post_upgrade() { ### run_actions() { - local line lineno lineno2 f n name action + local line lineno lineno2 f n name action testmsg [ "$DEBUG" ] && set -vx name="$1" f="$2" @@ -224,12 +224,14 @@ run_actions() { done test=$(echo "$line" | sed 's/ */ /g'| awk -F' ' '{print $1}') action=$(echo "$line" | sed 's/ */ /g'| awk -F' ' '{print $2}') + testmsg="" + [ "$test" != "true" ] && testmsg="if '$test'" if eval $test; then - log "$(printf 'action %02d' $lineno) starting: '${action}' if '$test'" + log "$(printf 'action %02d' $lineno) starting: '${action}' $testmsg " eval $action - log "$(printf 'action %02d' $lineno) finished: '${action}'" + log "$(printf 'action %02d' $lineno) finished: '${action}' $testmsg" else - log "$(printf 'action %02d' $lineno) skipping: '${action}' if '$test'" + log "$(printf 'action %02d' $lineno) skipping: '${action}' $testmsg" fi [ "$lineno2" -gt "$lineno" ] && lineno=$lineno2 done @@ -302,8 +304,8 @@ upgrade () { # funkcija utrpa ispravan sources.list create_sources_list () { - [ -f /etc/apt/sources.list -a ! -f /etc/apt/sources.list.cn-upgrade ] && mv /etc/apt/sources.list /etc/apt/sources.list.cn-upgrade - cp /usr/share/carnet-upgrade/sources.list /etc/apt + [ -f /etc/apt/sources.list -a ! -f /etc/apt/sources.list.cn3-upgrade ] && mv /etc/apt/sources.list /etc/apt/sources.list.cn3-upgrade + cp /usr/share/carnet-upgrade/files/etc/apt/sources.list /etc/apt notice "Novi sadrzaj datoteke /etc/apt/sources.list: `cat /etc/apt/sources.list`" @@ -332,54 +334,183 @@ add_group_proc () { # backup_slapd_db backup_slapd_db () { - if [ ! -f /var/backups/slapcat.cn-upgrade ]; then + local ldap_backup=/var/backups/slapcat.cn3-upgrade + + if [ ! -f $ldap_backup ]; then [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius stop || true if [ -x /etc/init.d/slapd -a -d /var/lib/ldap ]; then /etc/init.d/slapd stop || true - if slapcat -l /var/backups/slapcat.cn-upgrade; then - log "/var/backups/slapcat.cn-upgrade created" - notice "Napravljen backup slapd baze u /var/backups/slapcat.cn-upgrade." + if slapcat -l $ldap_backup; then + log "$ldap_backup created" + notice "Napravljen backup slapd baze u $ldap_backup." fi /etc/init.d/slapd start || true fi [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius start || true else - log "slapd backup already at /var/backups/slapcat.cn-upgrade, skipping" - notice "Backup slapd baze u /var/backups/slapcat.cn-upgrade vec postoji!" + log "slapd backup already at $ldap_backup, skipping" + notice "Backup slapd baze u $ldap_backup vec postoji!" fi } # backup etc direktorija backup_etc_dir () { - if [ ! -f /var/backups/etc.tar.gz ]; then - if tar cfz /var/backups/etc.tar.gz /etc 2> /dev/null; then - log "/var/backups/etc.tar.gz created" - notice "Napravljen backup /etc direktorija u /var/backups/etc.tar.gz." + local etc_backup=/var/backups/etc.cn3-upgrade.tar.gz + + if [ ! -f $etc_backup ]; then + if tar cfz $etc_backup /etc 2> /dev/null; then + log "$etc_backup created" + notice "Napravljen backup /etc direktorija u $etc_backup." fi else - log "/etc backup already present in /var/backups/etc.tar.gz, skipping." - notice "Backup /etc direktorija u /var/backups/etc.tar.gz vec postoji!" + log "/etc backup already present in $etc_backup, skipping." + notice "Backup /etc direktorija u $etc_backup vec postoji!" fi } # fixaj /etc/default/raid2 fix_etc_default_raid2 () { if [ -f /etc/default/raid2 ]; then - sed "s/^AUTOSTART.*/AUTOSTART=true/g" /etc/default/raid2 > /etc/default/raid2.cn-upgrade.$$ - chown --reference=/etc/default/raid2 /etc/default/raid2.cn-upgrade.$$ - chmod --reference=/etc/default/raid2 /etc/default/raid2.cn-upgrade.$$ + sed "s/^AUTOSTART.*/AUTOSTART=true/g" /etc/default/raid2 > /etc/default/raid2.cn3-upgrade.$$ + chown --reference=/etc/default/raid2 /etc/default/raid2.cn3-upgrade.$$ + chmod --reference=/etc/default/raid2 /etc/default/raid2.cn3-upgrade.$$ - if ! cmp -s /etc/default/raid2.cn-upgrade.$$ /etc/default/raid2; then + if ! cmp -s /etc/default/raid2.cn3-upgrade.$$ /etc/default/raid2; then log "Fixed /etc/default/raid2 AUTOSTART option." - mv /etc/default/raid2.cn-upgrade.$$ /etc/default/raid2 + mv /etc/default/raid2.cn3-upgrade.$$ /etc/default/raid2 else - rm /etc/default/raid2.cn-upgrade.$$ + rm /etc/default/raid2.cn3-upgrade.$$ fi fi } +# restore distribution config file +restore_config () { + local file + + for file in "$@"; do + if [ -e "$file" ]; then + # backup changes + [ ! -e "$file.cn3-upgrade" ] && mv "$file" "$file.cn3-upgrade" + + # install original + cp "/usr/share/carnet-upgrade/files/$file" "$file" + fi + done +} + +# restore modified config to their package defaults +# so the upgrade doesn't complain so much +restore_configs () { + restore_config /etc/bind/named.conf.options + restore_config /etc/default/ntpdate + restore_config /etc/default/oidentd + restore_config /etc/default/postgrey + restore_config /etc/default/saslauthd + restore_config /etc/default/slapd + restore_config /etc/dovecot/dovecot.conf + restore_config /etc/init.d/mysql + restore_config /etc/init.d/slapd + restore_config /etc/issue + restore_config /etc/issue.net + restore_config /etc/logrotate.d/mysql-server + restore_config /etc/mysql/my.cnf + restore_config /etc/ntp.conf + restore_config /etc/pam.d/login + restore_config /etc/php4/apache/php.ini + restore_config /etc/php4/cgi/php.ini + restore_config /etc/php4/cli/php.ini + restore_config /etc/postgrey/whitelist_clients + restore_config /etc/security/limits.conf + restore_config /etc/squirrelmail/apache.conf + restore_config /etc/sysctl.conf + restore_config /etc/vsftpd.conf + restore_config /etc/xinetd.conf + + # orphaned config file - no owner + rm -f /etc/logcheck/ignore.d.server/imap + + # aide switched to ucf, move old configs aside + for file in /etc/aide/aide.conf /etc/cron.daily/aide /etc/default/aide; do + [ ! -e "$file.cn3-upgrade" ] && mv "$file" "$file.cn3-upgrade" + rm -f "$file" + done +} + +# make a silent installation of carnet and srce keyrings +install_keyrings () { + pkgadd carnet-keyring srce-keyring + pkgadd dpkg apt + + dpkg-reconfigure carnet-keyring srce-keyring + update +} + +# make a silent upgrade to new libc6 +upgrade_libc () { + DEBIAN_FRONTEND=noninteractive pkgadd libc6 +} + +# upgrade apache -> apache2 +upgrade_apache () { + # bugfix for apache2-cn postinst + mkdir -p /etc/apache2 + touch /etc/apache2/httpd.conf + + pkgadd php4-odbc php4-xslt mktemp + + # apache2 conflicts with these + pkgrm apache aosi-aai aosi-www-aai php4-cn squirrelmail-cn + + # apache2-cn postinst needs new mktemp + pkgadd apache2-cn php5-cn aosi-aai aosi-www-aai # squirrelmail-cn +} + +upgrade_amavis () { + # remove diversion + if [ -L /etc/init.d/amavis -a -f /etc/init.d/amavis.amavisd-new ]; then + rm -f /etc/init.d/amavis + dpkg-divert --quiet --remove /etc/init.d/amavis + fi + + # move old config aside + local conf=/etc/amavis/amavisd.conf + if [ -e $conf -a ! -e $conf.cn3-upgrade ]; then + mv $conf $conf.cn3-upgrade + fi + + pkgadd amavisd-cn amavisd-new +} + +# fix openldap-aai postinst user handling +upgrade_openldap () { + apt-get -y$s install openldap-aai || true + chown -R openldap:openldap /var/lib/ldap + /etc/init.d/slapd restart + dpkg --configure -a +} + +# workaround postfix-cn dependencies +upgrade_postfix () { + pkgadd sasl2-bin + pkgadd postfix postfix-cn +} + +# workaround dovecot-cn dependencies +upgrade_dovecot () { + pkgadd dovecot-imapd dovecot-pop3d + pkgadd dovecot-cn +} + +# workaround ntp-cn dependencies +upgrade_ntp () { + pkgadd ntp ntpdate + # pkgrm ntp-server + pkgadd ntp-cn +} + # instaliraj zadnji freeradius; uvjeti u queue fileovima install_freeradius () { pkgadd --force-yes freeradius-cn freeradius=1.0.5-0 freeradius-ldap=1.0.5-0 @@ -433,11 +564,11 @@ fix_aidexfer_conf() { fix_issue () { cat > /etc/issue < /etc/issue.net <