s4

annotate s4-start.sh @ 521:356320f803dc

Option "-w" enables CGI wrapper
author HIROSE Yuuji <yuuji@gentei.org>
date Sat, 06 Apr 2019 17:41:27 +0900
parents 8d2a121cbc59
children 9060df7f079b
rev   line source
yuuji@82 1 #!/bin/sh
yuuji@82 2 # 愛
yuuji@82 3 # Start s4 - Generate s4.cgi
yuuji@82 4 mydir=`dirname $0`
yuuji@82 5 myname=`basename $0`
yuuji@82 6
yuuji@82 7 script_dir=${SCRIPT_DIR:-scripts}
yuuji@82 8
yuuji@86 9 ADMIN=""
yuuji@86 10 TYPE="form1"
yuuji@82 11 ex=examples
yuuji@82 12
yuuji@82 13 usage() {
yuuji@82 14 cat<<EOF
yuuji@82 15 $myname `sed -n 3p $0`
yuuji@82 16 Usage: $myname [Options]
yuuji@82 17 Options are as follows:
yuuji@82 18 -h Show this help
yuuji@82 19 -a ADM Set ADMIN email address to ADM
yuuji@82 20 -f Force overwriting
yuuji@88 21 -g Guestonly mode(No login required)
yuuji@86 22 -t TYPE Construction type (defaults to $TYPE)
yuuji@521 23 -w Create CGI wrapper
yuuji@82 24
yuuji@82 25 TYPEs are one of directory names in examples except \`common'.
yuuji@82 26 EOF
yuuji@82 27 exit 0
yuuji@82 28 }
yuuji@521 29 while getopts a:fght:w f; do
yuuji@82 30 case $f in
yuuji@86 31 a) ADMIN=$OPTARG;;
yuuji@87 32 g) guest=1;;
yuuji@82 33 f) force=1;;
yuuji@521 34 w) wrap=1;;
yuuji@86 35 t) TYPE=$OPTARG;;
yuuji@82 36 \?|h) usage; exit 1;;
yuuji@82 37 esac
yuuji@82 38 done
yuuji@82 39 shift $(expr $OPTIND - 1)
yuuji@82 40
yuuji@86 41 if [ ! -d $ex/$TYPE ]; then
yuuji@82 42 cat<<EOF 1>&2
yuuji@86 43 Invalid type($TYPE).
yuuji@82 44 Types are one of as follows.
yuuji@82 45 `ls $ex|grep -v common | sed 's/^/ /'`
yuuji@82 46 EOF
yuuji@82 47 exit 1
yuuji@82 48 fi
yuuji@82 49
yuuji@86 50 if [ -z "$ADMIN" ]; then
yuuji@82 51 cat<<EOF 1>&2
yuuji@82 52 Administrator's email not specified.
yuuji@82 53 Please feed administrator email with \`-a' option.
yuuji@82 54 EOF
yuuji@82 55 exit 1
yuuji@82 56 fi
yuuji@82 57
yuuji@82 58 if ! cd $mydir; then
yuuji@82 59 echo "Script(s4-funcs.sh) not found in \`$mydir'." 1>&2
yuuji@82 60 exit 1
yuuji@82 61 fi
yuuji@82 62
yuuji@88 63 . ./s4-funcs.sh
yuuji@86 64 if ! checkdomain $ADMIN; then
yuuji@82 65 cat<<EOF 1>&2
yuuji@86 66 Administrator's email - $ADMIN - is invalid(host not found).
yuuji@82 67 Please specify existing email address.
yuuji@82 68 EOF
yuuji@82 69 exit 3
yuuji@82 70 fi
yuuji@82 71
yuuji@82 72 if [ -d templ/form ]; then
yuuji@82 73 if [ -z "$force" ]; then
yuuji@82 74 echo "templ/ directory already exists. Remove it, then try again." 1>&2
yuuji@82 75 exit 4
yuuji@82 76 fi
yuuji@82 77 rm -rf templ/*
yuuji@82 78 fi
yuuji@82 79 mkdir templ
yuuji@104 80 if (cd templ && cp -r ../examples/$TYPE/* .); then
yuuji@82 81 if ./s4-init.sh; then
yuuji@82 82 cat<<EOF
yuuji@82 83 -------- The s4 System Successfully Installed --------
yuuji@82 84 EOF
yuuji@110 85 if [ -s scripts/s4-$TYPE.case ]; then
yuuji@110 86 casefile=scripts/s4-$TYPE.case
yuuji@107 87 else
yuuji@110 88 casefile=scripts/s4-default.case
yuuji@107 89 fi
yuuji@96 90 m4 -P -I scripts -D_SHELL_=`which sh` \
yuuji@107 91 -D_CASE_=$casefile s4.cgi.m4 > index.cgi && chmod +x index.cgi
yuuji@87 92 (echo "ADMIN=$ADMIN"
yuuji@95 93 [ "$guest" ] && echo "guestonlymode=1") >> s4-config.sh
yuuji@519 94 sq $db "REPLACE INTO user VALUES('$ADMIN');"
yuuji@519 95 cat > .htaccess <<-EOF
yuuji@519 96 DirectoryIndex index.cgi
yuuji@519 97 AddHandler cgi-script .cgi
yuuji@519 98 EOF
yuuji@521 99 if [ -n "$wrap" -a pwrap.c -nt index.cgi ]; then
yuuji@521 100 mv -f index.cgi s4.cgi &&
yuuji@519 101 ${CC:-gcc} -o index.cgi pwrap.c \
yuuji@519 102 && chmod u+s index.cgi \
yuuji@519 103 && rc=0
yuuji@519 104 fi
yuuji@82 105 else
yuuji@82 106 echo Calling s4-init.sh 'FAILED!!'
yuuji@82 107 fi
yuuji@82 108 else
yuuji@82 109 echo Failed
yuuji@82 110 fi 1>&2
yuuji@82 111
yuuji@82 112 exit ${rc:-5}