s4

annotate s4-start.sh @ 1039:68a01c699acb

Fix HELP string for minitbl
author HIROSE Yuuji <yuuji@gentei.org>
date Sat, 06 Apr 2024 18:08:10 +0900
parents 6e24f1ecf13e
children
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@541 6 dp="password"
yuuji@541 7 # Default password: "$dp of $ADMIN"
yuuji@82 8
yuuji@82 9 script_dir=${SCRIPT_DIR:-scripts}
yuuji@82 10
yuuji@86 11 ADMIN=""
yuuji@86 12 TYPE="form1"
yuuji@82 13 ex=examples
yuuji@82 14
yuuji@82 15 usage() {
yuuji@82 16 cat<<EOF
yuuji@82 17 $myname `sed -n 3p $0`
yuuji@82 18 Usage: $myname [Options]
yuuji@82 19 Options are as follows:
yuuji@82 20 -h Show this help
yuuji@82 21 -a ADM Set ADMIN email address to ADM
yuuji@82 22 -f Force overwriting
yuuji@88 23 -g Guestonly mode(No login required)
yuuji@86 24 -t TYPE Construction type (defaults to $TYPE)
yuuji@521 25 -w Create CGI wrapper
yuuji@82 26
yuuji@82 27 TYPEs are one of directory names in examples except \`common'.
yuuji@82 28 EOF
yuuji@82 29 exit 0
yuuji@82 30 }
yuuji@521 31 while getopts a:fght:w f; do
yuuji@82 32 case $f in
yuuji@86 33 a) ADMIN=$OPTARG;;
yuuji@87 34 g) guest=1;;
yuuji@82 35 f) force=1;;
yuuji@521 36 w) wrap=1;;
yuuji@86 37 t) TYPE=$OPTARG;;
yuuji@82 38 \?|h) usage; exit 1;;
yuuji@82 39 esac
yuuji@82 40 done
yuuji@82 41 shift $(expr $OPTIND - 1)
yuuji@82 42
yuuji@86 43 if [ ! -d $ex/$TYPE ]; then
yuuji@82 44 cat<<EOF 1>&2
yuuji@86 45 Invalid type($TYPE).
yuuji@82 46 Types are one of as follows.
yuuji@82 47 `ls $ex|grep -v common | sed 's/^/ /'`
yuuji@82 48 EOF
yuuji@82 49 exit 1
yuuji@82 50 fi
yuuji@82 51
yuuji@86 52 if [ -z "$ADMIN" ]; then
yuuji@82 53 cat<<EOF 1>&2
yuuji@82 54 Administrator's email not specified.
yuuji@82 55 Please feed administrator email with \`-a' option.
yuuji@82 56 EOF
yuuji@82 57 exit 1
yuuji@82 58 fi
yuuji@82 59
yuuji@82 60 if ! cd $mydir; then
yuuji@82 61 echo "Script(s4-funcs.sh) not found in \`$mydir'." 1>&2
yuuji@82 62 exit 1
yuuji@82 63 fi
yuuji@82 64
yuuji@971 65 test -d tmp || mkdir -m 1750 tmp
yuuji@1028 66 test -d cache || mkdir -m 1755 cache
yuuji@88 67 . ./s4-funcs.sh
yuuji@86 68 if ! checkdomain $ADMIN; then
yuuji@82 69 cat<<EOF 1>&2
yuuji@86 70 Administrator's email - $ADMIN - is invalid(host not found).
yuuji@82 71 Please specify existing email address.
yuuji@82 72 EOF
yuuji@82 73 exit 3
yuuji@82 74 fi
yuuji@82 75
yuuji@82 76 if [ -d templ/form ]; then
yuuji@82 77 if [ -z "$force" ]; then
yuuji@82 78 echo "templ/ directory already exists. Remove it, then try again." 1>&2
yuuji@82 79 exit 4
yuuji@82 80 fi
yuuji@82 81 rm -rf templ/*
yuuji@82 82 fi
yuuji@82 83 mkdir templ
yuuji@1029 84 if (cd templ && cp -rL ../examples/$TYPE/* .); then
yuuji@82 85 if ./s4-init.sh; then
yuuji@82 86 cat<<EOF
yuuji@82 87 -------- The s4 System Successfully Installed --------
yuuji@82 88 EOF
yuuji@110 89 if [ -s scripts/s4-$TYPE.case ]; then
yuuji@110 90 casefile=scripts/s4-$TYPE.case
yuuji@107 91 else
yuuji@110 92 casefile=scripts/s4-default.case
yuuji@107 93 fi
yuuji@96 94 m4 -P -I scripts -D_SHELL_=`which sh` \
yuuji@524 95 -D__NOEDIT__="DO NOT EDIT THIS FILE MANUALLY -> scripts/s4-*.case" \
yuuji@107 96 -D_CASE_=$casefile s4.cgi.m4 > index.cgi && chmod +x index.cgi
yuuji@522 97 if [ "$wrap" ]; then
yuuji@522 98 mv -f index.cgi s4.cgi
yuuji@522 99 fi
yuuji@87 100 (echo "ADMIN=$ADMIN"
yuuji@526 101 echo "S4TYPE=$TYPE"
yuuji@95 102 [ "$guest" ] && echo "guestonlymode=1") >> s4-config.sh
yuuji@530 103 sqlite3 -cmd "pragma FOREIGH_KEYS=ON" $db \
yuuji@528 104 "REPLACE INTO user VALUES('$ADMIN');"
yuuji@541 105 dbsetbyid user "$ADMIN" pswd "`echo $dp of $ADMIN|mypwhash`"
yuuji@519 106 cat > .htaccess <<-EOF
yuuji@519 107 DirectoryIndex index.cgi
yuuji@519 108 AddHandler cgi-script .cgi
yuuji@519 109 EOF
yuuji@526 110 if [ -n "$wrap" ]; then
yuuji@529 111 type cc >/dev/null 2>&1 && CC=cc
yuuji@519 112 ${CC:-gcc} -o index.cgi pwrap.c \
yuuji@519 113 && chmod u+s index.cgi \
yuuji@519 114 && rc=0
yuuji@519 115 fi
yuuji@82 116 else
yuuji@82 117 echo Calling s4-init.sh 'FAILED!!'
yuuji@82 118 fi
yuuji@82 119 else
yuuji@82 120 echo Failed
yuuji@82 121 fi 1>&2
yuuji@82 122
yuuji@82 123 exit ${rc:-5}