#!/bin/sh

MOD_SSL_SNAP=mod_ssl-SNAP-19991020

echo "Remember to make sure -O2 is on in openssl"

# builds have all been done on x15-cruise-basselope.mit.edu so far

APACHE=apache_1.3.9
SSL=openssl-0.9.4
MOD_SSL=mod_ssl-2.4.5-1.3.9
MOD_PERL=mod_perl-1.21
attach perl5

if [ "x$1" = "xcheck" ]; then

/mit/perl5/bin/perl -w <<EOR
use HTTP::Request::Common;
require LWP::UserAgent;
\$ua = new LWP::UserAgent;
\$ua->timeout(10);
\$resp = \$ua->request(GET 'http://www.modssl.org/');
if (@page = split '\n', \$resp->content()) {
    foreach \$i (0..\$#page) {
        \$_ = \$page[\$i];
        if (m/Release/) {
	    \$_ .= \$page[\$i+1];
            last;
        }
    }
    s/<.+?>/ /g;
    s/\s+/ /g;
    s/Release: //;
    print "mod_ssl: \$_\n";
} else {
    print "mod_ssl: failed to contact server\\n";
}
\$resp = \$ua->request(GET 'http://www.openssl.org/source/');
if (@page = split '\n', \$resp->content()) {
    \$_ = (grep(m/LATEST/, @page))[0];
    s/<.+?>//g;
    s/&.+?;/ /g;
    print "openssl: \$_\n";
} else {
    print "openssl: failed to contact server\\n";
}
#MOD_PERL
\$resp = \$ua->request(GET 'http://perl.apache.org/dist/');
if (@page = split '\n', \$resp->content()) {
    \$_ = (grep(m/mod_perl-/, @page))[0];
    s/<.+?>//g;
    s/\s+/ /g;
    print "mod_perl: \$_\n";
} else {
    print "mod_perl: failed to contact server\\n";
}
EOR

    exit
fi

DIR="/afs/sipb/machine/anxiety-closet/apachessl"

attach gnu
aklog sipb
WGET=/mit/gnu/bin/wget
GTAR=/mit/gnu/bin/gtar
PATH=/mit/gnu/bin:${PATH}
export PATH

APACHE_URL=http://www.apache.org/dist/${APACHE}.tar.gz
SSL_URL=http://www.openssl.org/source/${SSL}.tar.gz
if [ "x$MOD_SSL_SNAP" = "x" ]; then
    MOD_SSL_URL=http://www.modssl.org/source/${MOD_SSL}.tar.gz
else
    MOD_SSL=$MOD_SSL_SNAP
    MOD_SSL_URL=http://www.modssl.org/snapshot/${MOD_SSL}.tar.gz
fi
MOD_PERL_URL=http://perl.apache.org/dist/${MOD_PERL}.tar.gz

mkdir $DIR >> /dev/null 2>&1 
umask 2
cd $DIR

echo Downloading tarballs
if [ ! -r "${APACHE}.tar.gz" ]; then
    $WGET $APACHE_URL 
fi
if [ ! -r "${SSL}.tar.gz" ]; then
    $WGET $SSL_URL 
fi
if [ ! -r "${MOD_SSL}.tar.gz" ]; then
    $WGET $MOD_SSL_URL
fi
if [ ! -r "${MOD_PERL}.tar.gz" ]; then
    $WGET $MOD_PERL_URL
fi
echo Unpacking tarballs
if [ ! -d $APACHE ]; then
    echo $APACHE
    gtar -xzf ${APACHE}.tar.gz
fi
if [ ! -d $SSL ]; then
    echo $SSL
    gtar -xzf ${SSL}.tar.gz
fi
if [ ! -d $MOD_SSL ]; then
    echo $MOD_SSL
    gtar -xzf ${MOD_SSL}.tar.gz
fi
if [ ! -d $MOD_PERL ]; then
    echo $MOD_PERL
    gtar -xzf ${MOD_PERL}.tar.gz
fi

echo building $SSL ...
if [ ! -r "${SSL}-done" ]; then
    cd $SSL
    ./Configure solaris-sparcv7-gcc --prefix=$DIR/ssl
#   ./config --prefix=$DIR/ssl
    echo 
    echo
    echo starting to build
    echo
    echo
#    perl util/ssldir.pl $DIR/ssl
    make && make rehash && make test && make install && date > ../${SSL}-done
else
    echo "    done"
fi

cd $DIR
echo configuring $APACHE with $MOD_SSL and $MOD_PERL ...
    PERLLIB=/usr/athena/lib/perl5/sun4-solaris/5.00404:/usr/athena/lib/perl5:/usr/athena/lib/perl5/site_perl/sun4-solaris:/usr/athena/lib/perl5/site_perl:/afs/athena/contrib/perl5/arch/sun4x_55/lib/perl5.004:/afs/athena/contrib/perl5/arch/share/perl5.004/site_perl
    export PERLLIB
if [ ! -r "${APACHE}-config-done" ]; then
    cd $MOD_SSL
    ./configure --with-apache=../$APACHE
    cd ../$MOD_PERL
    gyes | perl Makefile.PL USE_APACI=1 EVERYTHING=1 \
	SSL_BASE=$DIR/ssl \
	APACHE_PREFIX=$DIR/apachessl \
	APACI_ARGS=--enable-module=ssl,--enable-module=rewrite,--enable-module=auth_dbm
	date > ../$APACHE-config-done
    cd ..
else
    echo "    done"
fi

echo building $APACHE with $MOD_SSL and $MOD_PERL ...
if [ ! -r "${APACHE}-done" ]; then
    echo 
    echo
    echo Making apache
    echo
    echo
    cd $MOD_PERL
    make test && make install INSTALLPRIVLIB=$DIR/apachessl/lib/perl \
	INSTALLARCHLIB=$DIR/apachessl/lib/perl \
	INSTALLSITELIB=$DIR/apachessl/lib/perl \
	INSTALLSITEARCH=$DIR/apachessl/lib/perl \
	INSTALLBIN=$DIR/apachessl/foo INSTALLSCRIPT=$DIR/apachessl/bar \
	INSTALLMAN3DIR=$DIR/apachessl/man/man3 \
	INSTALLMAN1DIR=$DIR/apachessl/man/man1 && \
	date > ../$APACHE-done
else
    echo "    done"
fi

cd $DIR
echo Making tarballs
echo "    $SSL-built.tar.gz"
gtar -czf ${SSL}-built.tar.gz ssl/
echo "    apache-${MOD_SSL}-${MOD_PERL}.tar.gz"
gtar -czf apache-${MOD_SSL}-${MOD_PERL}.tar.gz apachessl/

echo "*** DONE ***"

echo To install:
echo cd /tmp
echo umask 2
echo scp `hostname`:$DIR/${SSL}-built.tar.gz .
echo gtar -xzf ${SSL}-built.tar.gz
echo rm ${SSL}-built.tar.gz
echo rm -rf /usr/local/ssl/\*
echo mv ssl/\* /usr/local/ssl/
echo scp `hostname`:$DIR/apache-${MOD_SSL}-${MOD_PERL}.tar.gz .
echo gtar -xzf apache-${MOD_SSL}-${MOD_PERL}.tar.gz
echo rm apache-${MOD_SSL}-${MOD_PERL}.tar.gz
echo diff apachessl/conf/httpd.conf.default /var/local/apachessl/conf/httpd.conf.default | more
echo mkdir apachessl-old
echo cd /var/local/apachessl
echo ksu
echo bin/apachectl stop
echo exit
echo mv bin htdocs icons include lib libexec man proxy /tmp/apachessl-old
echo cd /tmp/apachessl 
echo mv bin htdocs icons include lib libexec man proxy /var/local/apachessl
echo mv /tmp/apachessl-old/bin/apachectl /var/local/apachessl/bin
echo cd /var/local/apachessl
echo ksu
echo bin/apachectl start
echo exit
echo mv /tmp/apachessl-old/htdocs/manual/images/mod_perl.gif htdocs/manual/images/

#  #!/bin/sh
#  prefix=/afs/sipb/contrib/perl
#  exec_prefix="$prefix"/arch/"$ATHENA_SYS"

#  perl Makefile.PL \
#    INSTALLPRIVLIB="$prefix"/arch/share/perl5.004 \
#    INSTALLSITELIB="$prefix"/arch/share/perl5.004/site_perl \
#    INSTALLARCHLIB="$exec_prefix"/lib/perl5.004 \
#    INSTALLSITEARCH="$exec_prefix"/lib/perl5.004/site_perl \
#    INSTALLBIN="$exec_prefix"/bin \
#    INSTALLSCRIPT="$prefix"/arch/share/bin \
#    INSTALLMAN1DIR="$prefix"/man/man1 \
#    INSTALLMAN3DIR="$prefix"/man/man3
