s4

annotate s4-newworld.sh @ 870:a7ae0d67edff

XXX: Lead password resetting to base world
author HIROSE Yuuji <yuuji@gentei.org>
date Wed, 07 Oct 2020 13:01:29 +0859
parents 567980314463
children 102c2b14c5d8
rev   line source
yuuji@771 1 #!/bin/ksh
yuuji@771 2 #!/bin/sh
yuuji@771 3 # Create New Wolrd in s4
yuuji@771 4 # Arguments:
yuuji@771 5 # $1 = World Display Name in UTF-8
yuuji@771 6 # $2 = World ShortName in alpha-numeric
yuuji@771 7 # $3 = World Description in UTF-8
yuuji@771 8 dispname=$1
yuuji@771 9 shortname=$2
yuuji@771 10 desc=$3
yuuji@771 11
yuuji@771 12 readvar() { # $1=varname $2=PromptString
yuuji@771 13 echo -n "${2:-$1=:} "
yuuji@771 14 read $1
yuuji@771 15 }
yuuji@771 16
yuuji@817 17 if [ -z "$HTTP_HOST" ]; then
yuuji@771 18 while true; do
yuuji@771 19 dispname=`echo $dispname | tr -d ': \t\n"' | fold -w 28 | head -1`
yuuji@771 20 test -n "$dispname" && break
yuuji@771 21 readvar dispname "分かりやすいWorld名14字以内"
yuuji@771 22 done
yuuji@771 23 while true; do
yuuji@771 24 shortname=`echo $shortname | tr -c -d '_0-9A-Za-z.-' | colrm 11`
yuuji@771 25 test -n "$shortname" && break
yuuji@771 26 readvar shortname "英数字のみ10字以内のWorldシンボル(URLの一部)"
yuuji@771 27 done
yuuji@771 28 while true; do
yuuji@771 29 desc=`echo $desc | tr -d ': \t\n"'`
yuuji@771 30 test -n "$desc" && break
yuuji@771 31 readvar desc "概要(どのような基準でこのWorldを使うかなど)"
yuuji@771 32 done
yuuji@771 33 fi
yuuji@771 34 echo "wl=$S4WORLDLIST"
yuuji@771 35 echo "$dispname:$shortname:$desc"
yuuji@817 36 # Create config
yuuji@817 37 DB=db/$shortname.sq3; export DB
yuuji@817 38 `dirname $0`/s4-init.sh
yuuji@817 39 . `dirname $0`/s4-config.sh
yuuji@817 40 if ! type htmlescape >/dev/null 2>&1; then
yuuji@817 41 . `dirname $0`/s4-funcs.sh ### > /dev/null 2>&1
yuuji@817 42 trap 'exit 1' INT QUIT
yuuji@817 43 fi
yuuji@817 44
yuuji@771 45 newworld=$(
yuuji@817 46 { echo $S4WORLDLIST | tr ' ' '\n' \
yuuji@771 47 | awk -F: "\$2 != \"$shortname\"{print}"
yuuji@771 48 echo "$dispname:$shortname:$desc"
yuuji@817 49 } | tr '\n' ' ' | sed 's/ $//' | tr -d '"'
yuuji@771 50 )
yuuji@771 51 if [ -z "$newworld" ]; then
yuuji@771 52 exit
yuuji@771 53 fi
yuuji@771 54
yuuji@817 55 masterdb=`(unset DB; . ./s4-config.sh; echo $DB)`
yuuji@817 56 S4MASTERDB=${masterdb:-db/cgi.sq3}
yuuji@817 57 echo Synching account: db=$db URL=$URL isCGI=$isCGI mas=$S4MASTERDB
yuuji@817 58 . ./s4-world.sh && syncaccount 'force'
yuuji@817 59 echo Synching done
yuuji@771 60 bgcolor=$(
yuuji@771 61 od -An -tu1 -N3 < /dev/urandom \
yuuji@771 62 | { read r g b
yuuji@771 63 r=$((192+r/4)); g=$((192+g/4)); b=$((192+b/4))
yuuji@771 64 printf "#%x%x%x" $r $g $b
yuuji@771 65 })
yuuji@771 66 cat<<-EOF > s4-config-$shortname.sh
yuuji@771 67 S4MASTERURL=\$URL
yuuji@785 68 URL=`dirname ${URL}.`/s4-world-$shortname$cgiext
yuuji@771 69 S4COLOR="$bgcolor" # Change this!
yuuji@771 70 DB=$dbdir/$shortname.sq3
yuuji@771 71 SESSDB=$dbdir/sess.sq3
yuuji@771 72 S4MASTERDB=$db
yuuji@771 73 S4CSS=$shortname.css
yuuji@771 74 TMPDIR=$tmpdir/$shortname
yuuji@771 75 EOF
yuuji@771 76 # Create CSS
yuuji@771 77 cat<<-EOF > $shortname.css
yuuji@771 78 body {background: $bgcolor;}
yuuji@771 79 body.moderated {background: $bgcolor; border: 3px gold solid;}
yuuji@771 80 EOF
yuuji@771 81 mkdir -m 1775 $tmpdir/$shortname
yuuji@771 82 # Update s4-config.sh
yuuji@771 83 cat<<-EOF | ed s4-config.sh
yuuji@771 84 g/^S4WORLDLIST=/d
yuuji@771 85 wq
yuuji@771 86 EOF
yuuji@817 87 echo "S4WORLDLIST=\"$newworld\"" >> s4-config.sh
yuuji@817 88
yuuji@771 89 (cd `dirname $0`; ln -s s4$cgiext s4-world-$shortname$cgiext)
yuuji@771 90 echo $newworld added