s4
annotate s4-start.sh @ 869:b2bb87a9b8a1
Supply main-db path on invocation from commandline
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 10 Sep 2020 12:11:37 +0859 |
parents | 1c784b64d9f0 |
children | 10803d78f07c |
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@88 | 65 . ./s4-funcs.sh |
yuuji@86 | 66 if ! checkdomain $ADMIN; then |
yuuji@82 | 67 cat<<EOF 1>&2 |
yuuji@86 | 68 Administrator's email - $ADMIN - is invalid(host not found). |
yuuji@82 | 69 Please specify existing email address. |
yuuji@82 | 70 EOF |
yuuji@82 | 71 exit 3 |
yuuji@82 | 72 fi |
yuuji@82 | 73 |
yuuji@82 | 74 if [ -d templ/form ]; then |
yuuji@82 | 75 if [ -z "$force" ]; then |
yuuji@82 | 76 echo "templ/ directory already exists. Remove it, then try again." 1>&2 |
yuuji@82 | 77 exit 4 |
yuuji@82 | 78 fi |
yuuji@82 | 79 rm -rf templ/* |
yuuji@82 | 80 fi |
yuuji@82 | 81 mkdir templ |
yuuji@104 | 82 if (cd templ && cp -r ../examples/$TYPE/* .); then |
yuuji@82 | 83 if ./s4-init.sh; then |
yuuji@82 | 84 cat<<EOF |
yuuji@82 | 85 -------- The s4 System Successfully Installed -------- |
yuuji@82 | 86 EOF |
yuuji@110 | 87 if [ -s scripts/s4-$TYPE.case ]; then |
yuuji@110 | 88 casefile=scripts/s4-$TYPE.case |
yuuji@107 | 89 else |
yuuji@110 | 90 casefile=scripts/s4-default.case |
yuuji@107 | 91 fi |
yuuji@96 | 92 m4 -P -I scripts -D_SHELL_=`which sh` \ |
yuuji@524 | 93 -D__NOEDIT__="DO NOT EDIT THIS FILE MANUALLY -> scripts/s4-*.case" \ |
yuuji@107 | 94 -D_CASE_=$casefile s4.cgi.m4 > index.cgi && chmod +x index.cgi |
yuuji@522 | 95 if [ "$wrap" ]; then |
yuuji@522 | 96 mv -f index.cgi s4.cgi |
yuuji@522 | 97 fi |
yuuji@87 | 98 (echo "ADMIN=$ADMIN" |
yuuji@526 | 99 echo "S4TYPE=$TYPE" |
yuuji@95 | 100 [ "$guest" ] && echo "guestonlymode=1") >> s4-config.sh |
yuuji@530 | 101 sqlite3 -cmd "pragma FOREIGH_KEYS=ON" $db \ |
yuuji@528 | 102 "REPLACE INTO user VALUES('$ADMIN');" |
yuuji@541 | 103 dbsetbyid user "$ADMIN" pswd "`echo $dp of $ADMIN|mypwhash`" |
yuuji@519 | 104 cat > .htaccess <<-EOF |
yuuji@519 | 105 DirectoryIndex index.cgi |
yuuji@519 | 106 AddHandler cgi-script .cgi |
yuuji@519 | 107 EOF |
yuuji@526 | 108 if [ -n "$wrap" ]; then |
yuuji@529 | 109 type cc >/dev/null 2>&1 && CC=cc |
yuuji@519 | 110 ${CC:-gcc} -o index.cgi pwrap.c \ |
yuuji@519 | 111 && chmod u+s index.cgi \ |
yuuji@519 | 112 && rc=0 |
yuuji@519 | 113 fi |
yuuji@82 | 114 else |
yuuji@82 | 115 echo Calling s4-init.sh 'FAILED!!' |
yuuji@82 | 116 fi |
yuuji@82 | 117 else |
yuuji@82 | 118 echo Failed |
yuuji@82 | 119 fi 1>&2 |
yuuji@82 | 120 |
yuuji@82 | 121 exit ${rc:-5} |