diff options
Diffstat (limited to 'setup-acf.in')
-rw-r--r-- | setup-acf.in | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/setup-acf.in b/setup-acf.in new file mode 100644 index 0000000..3769a12 --- /dev/null +++ b/setup-acf.in @@ -0,0 +1,111 @@ +#!/bin/sh + +PROGRAM=setup-acf +VERSION=@VERSION@ + +PREFIX= +. $PREFIX/lib/libalpine.sh + +usage() { + echo "$PROGRAM [-ahn] [-l address] [PACKAGE...]" + exit 0; +} + +pkgs="acf-core acf-alpine-baselayout acf-apk-tools" + +while getopts "ahl:n" opt ; do + case $opt in + a) pkgs=`apk_fetch -l | grep ^acf-`;; + h) usage;; + l) address="$OPTARG";; + n) create_passwd=no;; + *) usage;; + esac +done +shift `expr $OPTIND - 1` + +while [ $# -gt 0 ]; do + pkgs="$pkgs acf-$1" + shift +done + +if [ "$create_passwd" != "no" ]; then + askpassword "root ACF" + if [ -f /etc/acf/passwd ]; then + mv /etc/acf/passwd /etc/acf/passwd.backup + fi + # this will show password on process list but we assume user is alone + # on the box at this stage + _md5passwd=$(echo -n "$_password" | md5sum) + echo "root:$_md5passwd:Admin account:ADMIN" >/etc/acf/passwd +fi + +# install packages +apk_add mini_httpd $pkgs || exit 1 + +# setup mini_httpd and start it +if [ -d /var/www/localhost/htdocs ]; then + mv /var/www/localhost/htdocs /var/www/localhost/htdocs.old +fi +mkdir -p /var/www/localhost/ +ln -s /usr/share/acf/www/ /var/www/localhost/htdocs +lbu add /var/www/localhost/htdocs + + +SSLDIR=/etc/ssl/mini_httpd +SSLCNF=$SSLDIR/mini_httpd.cnf +KEYFILE=$SSLDIR/server.key +CRTFILE=$SSLDIR/server.crt +PEMFILE=$SSLDIR/server.pem + +if [ -f $PEMFILE ]; then + echo "$PEMFILE already exist." +else + mkdir -p $SSLDIR +cat >$SSLCNF <<EOF +[ req ] +default_bits = 1024 +encrypt_key = yes +distinguished_name = req_dn +x509_extensions = cert_type +prompt = no + +[ req_dn ] +OU=HTTPS server +CN=$(hostname) +emailAddress=postmaster@example.com + +[ cert_type ] +nsCertType = server +EOF + echo "Generating certificates for HTTPS..." + openssl genrsa 2048 > $KEYFILE + openssl req -new -x509 -nodes -sha1 -days 3650 -key $KEYFILE \ + -config $SSLCNF > $CRTFILE + cat $KEYFILE >> $CRTFILE + rm $KEYFILE + mv $CRTFILE $PEMFILE +fi + +cat >/etc/mini_httpd.conf <<EOF +nochroot +dir=/var/www/localhost/htdocs +user=nobody +logfile=/var/log/mini_httpd.log +cgipat=cgi-bin** +certfile=$PEMFILE +port=443 +ssl +EOF +if [ -n "$address" ]; then + echo "host=$address" >> /etc/mini_httpd.conf +fi + +cat >/etc/conf.d/mini_httpd <<EOF +MINI_HTTPD_OPTS="-C /etc/mini_httpd.conf" +MINI_HTTPD_DOCROOT=/var/www/localhost/htdocs +EOF + +rc-update -q add mini_httpd default +/etc/init.d/mini_httpd restart + |