enbrace is now multi-application resistant
authorshort <>
Fri, 5 Apr 2002 06:50:20 +0000 (06:50 +0000)
committershort <>
Fri, 5 Apr 2002 06:50:20 +0000 (06:50 +0000)
 - all known old patches in the past integrated as the "reverse"s
Autodetect calling of "/root/status/message/hint" vs. "/root/status/result/hint"
 - "/root/status/result/hint" present at least on kolar_ihc (194.213.51.34)
Log of all patching is diplayed before the final "success" message
[cs_CZ] enbrace je jiz nyni odolny vuci vicenasobne aplikaci
 - vsechny zname starsi patche byly integrovany jako "reverze"
Autodetekce volani "/root/status/message/hint" vs. "/root/status/result/hint"
 - "/root/status/result/hint" pouzit alespon na kolar_ihc (194.213.51.34)
Log vsech patchovani je zobrazen pred koncovou "success" zpravou

enbrace.bash

index 6888482..1cc0351 100755 (executable)
@@ -3,13 +3,6 @@
 # $Id$
 #
 # cd;echo 'default login anonymous password short@' >~/.netrc;echo -e 'bi\nhash\npass\ncd pub/priv/short/enbrace\nget enbrace.bash\nquit'|ftp vellum.cz;/usr/local/bin/bash enbrace.bash
-#
-# Patch multi-application liable files:
-# [cs_CZ] Soubory citlive na vicenasobnou aplikaci patche:
-#      /etc/rc.local
-#      /root/.login
-#      /etc/inetd.conf
-#      /etc/crontab
 
 function fatal
 {
@@ -48,6 +41,27 @@ EOF
        return 0
 }
 
+function dopatch
+{
+       cat >/root/enbrace/dopatch.diff
+       (
+               echo "### $*";shift
+               if [ -d "$1" ];then
+                       cd "$1";shift
+               fi
+               rev="$1"
+               [ "$rev" = rev ] && shift
+               forw="$1"
+               [ "$forw" = forw ] && shift
+               set +e
+               [ "$forw" != forw ] && while patch -RsNEp0 $* </root/enbrace/dopatch.diff;do
+                       echo "--- successful reverse patch"
+                       done
+               [ "$rev" != rev ] && patch -sNEp0 $* </root/enbrace/dopatch.diff
+       ) 2>&1|tee -a /root/enbrace/dopatch.log
+       rm -f /root/enbrace/dopatch.diff
+}
+
 
 set -ex
 (
@@ -100,20 +114,51 @@ EOF
  echo ""
  echo ""
 EOF
-       cat >root-cshrc.diff <<EOF
+       sed 's/jan.kolar@jklabs.cz/videoprogress@mbox.cz/g' <rc.local.diff >rc.local.diffrev
+       cat >root-cshrc.diffremoveold <<EOF
 --- root/.cshrc-orig   Fri Feb 26 21:11:13 1999
 +++ root/.cshrc        Mon Sep 10 22:37:31 2001
-@@ -25,4 +25,7 @@
+@@ -25,4 +25,3 @@
  
  set local=\`ifconfig -a |grep inet |awk 'NR<2 {print \$2}'\`
  set prompt="\`echo \$local\` [\`whoami\`] -\\! # "
 -/root/status/message/hint
+EOF
+       cat >root-cshrc.diffremovenew <<EOF
+--- root/.cshrc-orig   Fri Feb 26 21:11:13 1999
++++ root/.cshrc        Mon Sep 10 22:37:31 2001
+@@ -25,4 +25,3 @@
+ set local=\`ifconfig -a |grep inet |awk 'NR<2 {print \$2}'\`
+ set prompt="\`echo \$local\` [\`whoami\`] -\\! # "
+-/root/status/result/hint
+EOF
+       cat >root-cshrc.diffrev1 <<EOF
+--- root/.cshrc-orig   Fri Feb 26 21:11:13 1999
++++ root/.cshrc        Mon Sep 10 22:37:31 2001
+@@ -25,3 +25,7 @@
+ set local=\`ifconfig -a |grep inet |awk 'NR<2 {print \$2}'\`
+ set prompt="\`echo \$local\` [\`whoami\`] -\\! # "
 +
 +# Jan Kolar <jan.kolar@jklabs.cz> /Lace
 +# Commented-out, must be placed in "~/.login"!
 +## /root/status/message/hint
 EOF
-       cat >root-login.diff <<EOF
+       sed 's/jan.kolar@jklabs.cz/videoprogress@mbox.cz/g' <root-cshrc.diffrev1 >root-cshrc.diffrev2
+       cat >root-cshrc.diff <<EOF
+--- root/.cshrc-orig   Fri Feb 26 21:11:13 1999
++++ root/.cshrc        Mon Sep 10 22:37:31 2001
+@@ -25,3 +25,7 @@
+ set local=\`ifconfig -a |grep inet |awk 'NR<2 {print \$2}'\`
+ set prompt="\`echo \$local\` [\`whoami\`] -\\! # "
++
++# Jan Kolar <jan.kolar@jklabs.cz> /Lace
++# Commented-out, must be placed in "~/.login"!
++## /root/status/message/hint or /root/status/result/hint
+EOF
+       cat >root-login.diffrev1 <<EOF
 --- root/.login-orig   Fri Feb 26 21:11:13 1999
 +++ root/.login        Mon Sep 10 22:37:52 2001
 @@ -58,3 +58,7 @@
@@ -125,6 +170,20 @@ EOF
 +# Moved in from "~/.cshrc"!
 +/root/status/message/hint
 EOF
+       sed 's/jan.kolar@jklabs.cz/videoprogress@mbox.cz/g' <root-login.diffrev1 >root-login.diffrev2
+       cat >root-login.diff <<EOF
+--- root/.login-orig   Fri Feb 26 21:11:13 1999
++++ root/.login        Mon Sep 10 22:37:52 2001
+@@ -58,3 +58,8 @@
+ #set prompt="\`hostname\` [root] -\\! # "
+ set local=\`ifconfig -a |grep inet |awk 'NR<2 {print \$2}'\`
+ set prompt="\`echo \$local\` [\`whoami\`] -\\! # "
++
++# Jan Kolar <jan.kolar@jklabs.cz> /Lace
++# Moved in from "~/.cshrc"!
++[ -x /root/status/message/hint ] && /root/status/message/hint
++[ -x /root/status/result/hint  ] && /root/status/result/hint
+EOF
        cat >root-mail.diff <<EOF
 --- /dev/null  Fri Mar 15 02:04:08 2002
 +++ root/.forward      Fri Mar 15 04:30:57 2002
@@ -209,9 +268,7 @@ EOF
 EOF
 
 # Sendmail
-       (cd /
-               patch -sENp0 </root/enbrace/sendmail.diff
-               )
+       dopatch "sendmail openrelay" / <sendmail.diff
        set +e;killall sendmail;set -e
 
 # OpenSSL
@@ -230,7 +287,7 @@ EOF
        ftpget "$openssh"
        tar xzf "$file"
        (cd "$base"
-               patch -sENp0 <../openssh-3.1p1-i386-unknown-freebsd2.2.5.diff
+               dopatch "OpenSSH FreeBSD compilation" forw <../openssh-3.1p1-i386-unknown-freebsd2.2.5.diff
                #make clean
                ./configure --with-ipv4-default \
                                --with-default-path="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin" \
@@ -238,18 +295,25 @@ EOF
                make 2>&1|tee errs2
                make install 2>&1|tee errs3
                )
-       patch -N /etc/rc.local <rc.local.diff
+       dopatch "OpenSSH rc.local startup -videoprogress@mbox.cz" rev /etc/rc.local <rc.local.diffrev
+       dopatch "OpenSSH rc.local startup" /etc/rc.local <rc.local.diff
        /usr/local/sbin/sshd
 
 # Apache
-       patch -N /usr/local/etc/httpd/conf/httpd.conf <httpd.conf.diff
+       dopatch "Apache proxy restriction" /usr/local/etc/httpd/conf/httpd.conf <httpd.conf.diff
        # We need to temporarily disable error checking as killall(1) MAY fail (why?)
        set +e;killall -HUP httpd;set -e
 
 # Root rcs
-       patch -N /root/.cshrc <root-cshrc.diff
-       patch -N /root/.login <root-login.diff
-       patch -N /root/.forward <root-mail.diff
+       dopatch "Login messages commented remove origold"        forw /root/.cshrc <root-cshrc.diffremoveold
+       dopatch "Login messages commented remove orignew"        forw /root/.cshrc <root-cshrc.diffremovenew
+       dopatch "Login messages commented -jan.kolar@jklabs.cz"   rev /root/.cshrc <root-cshrc.diffrev1
+       dopatch "Login messages commented -videoprogress@mbox.cz" rev /root/.cshrc <root-cshrc.diffrev2
+       dopatch "Login messages commented"                            /root/.cshrc <root-cshrc.diff
+       dopatch "Login messages added -jan.kolar@jklabs.cz"       rev /root/.login <root-login.diffrev1
+       dopatch "Login messages added -videoprogress@mbox.cz"     rev /root/.login <root-login.diffrev2
+       dopatch "Login messages added"                                /root/.login <root-login.diff
+       dopatch "root mail forwarding"                                /root/.forward <root-mail.diff
 
 # Sendmail-post
        set +e;killall -HUP inetd;set -e
@@ -260,6 +324,9 @@ EOF
                done
 
 # Finalization
-       echo "$0: success."
+       echo "$0: patch logs:"
+       echo "$0: -----------"
+       cat dopatch.log
+       echo "$0: success - check patch logs above!"
 ) 2>&1|tee enbrace.`date '+%Y-%m-%d-%H:%M:%S'`.log