s4

changeset 739:c892a3633baa feature-annex

Annex-test: sessdb = main-sessdb
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 04 Jun 2020 20:31:25 +0900
parents d78944aa1cd2
children f2c7117f452e
files examples/common/default/default.css examples/common/default/html.m4.html s4-annex.sh s4-funcs.sh
diffstat 4 files changed, 63 insertions(+), 25 deletions(-) [+]
line diff
     1.1 --- a/examples/common/default/default.css	Thu Jun 04 07:38:18 2020 +0900
     1.2 +++ b/examples/common/default/default.css	Thu Jun 04 20:31:25 2020 +0900
     1.3 @@ -331,6 +331,20 @@
     1.4  input[type="reset"] {margin-left: 4em;}
     1.5  
     1.6  /*
     1.7 + * Annex
     1.8 + */
     1.9 +li.casmenu div {display: none; position: relative; width: 10%;
    1.10 +		min-width: 80%; margin-right: 0;}
    1.11 +li.casmenu div table {
    1.12 +    background: white; position: absolute; top: 0em; border: 3px solid navy;
    1.13 +}
    1.14 +li.casmenu:hover div, li.casmenu:active div,
    1.15 +li.casmenu div:hover, li.casmenu div:active
    1.16 +{display: block;}
    1.17 + 
    1.18 +
    1.19 +
    1.20 +/*
    1.21   * PR Web
    1.22   */
    1.23  body.pr {font-size: 200%;}
     2.1 --- a/examples/common/default/html.m4.html	Thu Jun 04 07:38:18 2020 +0900
     2.2 +++ b/examples/common/default/html.m4.html	Thu Jun 04 20:31:25 2020 +0900
     2.3 @@ -18,8 +18,8 @@
     2.4  <body class="_BODYCLASS_">
     2.5  <div class="topmenu">
     2.6  <ul>
     2.7 - <li><a href="?home" accesskey="1" title="Shortcut: 1
     2.8 -Home">ホーム</a></li>
     2.9 + <li class="casmenu"><a href="?home" accesskey="1" title="Shortcut: 1
    2.10 +Home">ホーム</a>_S4ANNEXES_</li>
    2.11   <!-- <li><a href="?blog">話題作成</a></li> -->
    2.12   <li><a href="?mems" accesskey="2" title="Shortcut: 2
    2.13  Members">参加者一覧</a></li>
     3.1 --- a/s4-annex.sh	Thu Jun 04 07:38:18 2020 +0900
     3.2 +++ b/s4-annex.sh	Thu Jun 04 20:31:25 2020 +0900
     3.3 @@ -7,7 +7,12 @@
     3.4    return		# Points to the same file
     3.5  fi
     3.6  
     3.7 -skey="skey-`basename $mydir`"
     3.8 +# Now S4ANNEX mode is ACTIVE
     3.9 +S4ANNEXNAME=`dirname $mydir`
    3.10 +sessdb=`dirname $S4MASTERDB`/sess.sq3
    3.11 +S4ANNEXES="<div><table><tr><th><a
    3.12 +	 href=\"$S4MASTERURL\">本館</a></th></tr></table><div>"
    3.13 +## skey="skey-`basename $mydir`"
    3.14  syncflag=$dbdir/usersynced
    3.15  userupdateflag=`dirname $S4MASTERDB`/`basename $userupdateflag`
    3.16  test ! -e "$userupdateflag"		&& return
    3.17 @@ -21,16 +26,10 @@
    3.18  #  then update
    3.19  # 
    3.20  
    3.21 -judgeequal() {
    3.22 -  read num
    3.23 -  test $num -eq 0 && touch $syncflag
    3.24 -  return $num
    3.25 -}
    3.26 -
    3.27  ## sqlite3 -cmd '.timer 1' -cmd '.echo 1' $db <<EOF
    3.28  err "Starting account synchronization"
    3.29  err "db=$db mas=$S4MASTERDB sess=$sessdb"
    3.30 -sqlite3 -bail -cmd 'PRAGMA FOREIGN_KEYS=on' $db <<EOF | judgeequal
    3.31 +num=$(sqlite3 -bail -cmd 'PRAGMA FOREIGN_KEYS=on' $db <<EOF
    3.32  ATTACH DATABASE "$S4MASTERDB" AS m;
    3.33  CREATE TABLE IF NOT EXISTS user(name, primary key(name));
    3.34  BEGIN;
    3.35 @@ -68,4 +67,8 @@
    3.36  -- SELECT rowid,* FROM user WHERE rowid NOT IN (SELECT rowid FROM m.user);
    3.37  DETACH DATABASE m;
    3.38  EOF
    3.39 -err Done
    3.40 +)
    3.41 +if [ $num -eq 0 ]; then
    3.42 +  touch $syncflag
    3.43 +fi
    3.44 +return $num
     4.1 --- a/s4-funcs.sh	Thu Jun 04 07:38:18 2020 +0900
     4.2 +++ b/s4-funcs.sh	Thu Jun 04 20:31:25 2020 +0900
     4.3 @@ -16,7 +16,6 @@
     4.4  searchlog=${SEARCHLOG:-$tmpdir/search.log}
     4.5  db=${DB:-$dbdir/cgi.sq3}
     4.6  sessdb=$dbdir/sess.sq3
     4.7 -skey='skey'			# Changed in s4-annex, if ANNEX mode
     4.8  userupdateflag=$dbdir/userupdate
     4.9  sesstb=tmp.sess
    4.10  workdb=$dbdir/tmpdata.sq3
    4.11 @@ -72,16 +71,30 @@
    4.12  err() {
    4.13    echo "[`date +%F-%T%z`] $@" 1>&3
    4.14  }
    4.15 -# If S4MASTERDB is set, behave as ANNEX s4
    4.16 -if [ -n "$S4MASTERDB" -a -s "$S4MASTERDB" ]; then
    4.17 -  . ./s4-annex.sh 2>> tmp/debug.out
    4.18 -fi
    4.19 -
    4.20 -
    4.21  case "$HTTP_USER_AGENT" in
    4.22    *i[Pp]hone*|*[Aa]ndroid*)	touchpanel=1 ;;
    4.23    *)				touchpanel="" ;;
    4.24  esac
    4.25 +
    4.26 +# If S4MASTERDB is set, behave as ANNEX s4
    4.27 +if [ -n "$S4MASTERDB" -a -s "$S4MASTERDB" ]; then
    4.28 +  # $S4ANNEX is set after s4-annex setup
    4.29 +  . ./s4-annex.sh 2>> tmp/debug.out
    4.30 +  err S4ANNEXES="$S4ANNEXES" S4ANNEXNAME=$S4ANNEXNAME
    4.31 +elif [ -n "$S4ANNEXES" ]; then
    4.32 +  # Master Site mode, which has annexes
    4.33 +  v=""
    4.34 +  for i in $S4ANNEXES; do
    4.35 +    _aname=${i%:*}; _apath=${i##*:}
    4.36 +    v=${v}"<tr><td>&rArr; <a href=\"$_apath\">$_aname</a></td></tr>$nl"
    4.37 +  done
    4.38 +  if [ -n "$v" ]; then
    4.39 +    i="<tr><th title=\"Annex\">別館</a></th></tr>$nl"
    4.40 +    S4ANNEXES="${touchpanel:+ : ▼}<div><table>$i$v</table></div>"
    4.41 +  fi
    4.42 +fi
    4.43 +
    4.44 +
    4.45  [ -f ./s4-cgi.sh ] && . ./s4-cgi.sh
    4.46  
    4.47  : <<EOF
    4.48 @@ -436,7 +449,8 @@
    4.49  }
    4.50  _m4() {
    4.51    #S4NAME=f,f,f
    4.52 -  m4 ${S4NAME:+"-D_S4NAME_=${S4NAME}"} ${S4CSS:+-D_S4CSS_="$S4CSS"} "$@"
    4.53 +  m4 ${S4NAME:+"-D_S4NAME_=${S4NAME}"} ${S4CSS:+-D_S4CSS_="$S4CSS"} \
    4.54 +     -D_S4ANNEXES_="${S4ANNEXES}" "$@"
    4.55  }
    4.56  ismember() {
    4.57    # $1=user, $2=group
    4.58 @@ -1214,9 +1228,10 @@
    4.59    for kv in `echo $HTTP_COOKIE|sed 's/[;, ]/ /g'`; do
    4.60      k="${kv%%=*}"
    4.61      v="`echo ${kv#*=}|nkf -Ww -mQ|sed -e 's/\"/\"\"/g'`"
    4.62 +err "GetCookie: $k=[$v]"
    4.63      case "$k" in
    4.64        user)	_user="$v" ;;
    4.65 -      $skey)	_skey="$v" ;;
    4.66 +      skey)	_skey="$v"; k=skey ;;
    4.67      esac
    4.68      query "replace into cookie values('$session', '$k', 'string', \"$v\");"
    4.69    done
    4.70 @@ -1341,7 +1356,7 @@
    4.71    newpswd=`genrandom` # newsalt=`genrandom 5`
    4.72    #encpswd=`mycrypt "$newpswd" "$newsalt"`
    4.73    encpswd=`echo $newpswd|mypwhash`
    4.74 -  dbsetbyid user $user pswd "$encpswd"
    4.75 +  dbsetbyid user $user pswd "$encpswd" && touch $userupdateflag
    4.76    # Avoid $user substitution with m4, because $url comes from user input.
    4.77    _m4 -D_PSWD_="$newpswd" -D_URL_="$url" -D_ADMIN_="$admin" \
    4.78       $msgdir/mail-newaccount.m4 \
    4.79 @@ -1376,8 +1391,8 @@
    4.80      newsession=`genrandom 34`
    4.81      if setskey "$user" "$newsession" &&
    4.82  	dbsetbyid user "$user" login "`date '+%F %T'`"; then
    4.83 -      err gencookie "user=$user" "$skey=$newsession"
    4.84 -      gencookie "user=$user" "$skey=$newsession"
    4.85 +      # err gencookie "user=$user" "skey=$newsession"
    4.86 +      gencookie "user=$user" "skey=$newsession"
    4.87        return 0
    4.88      else
    4.89        return 4		# Heavy load??
    4.90 @@ -2061,8 +2076,14 @@
    4.91    cond="gname in (select gname from grp_mem where user='$uname')"
    4.92    search_form_args=""
    4.93    if [ x"$user" = x"$uname" ]; then
    4.94 -    usermenu="<a href=\"?userconf\" accesskey=\"e\"
    4.95 -	 title=\"Shortcut: E${nl}Edit Profile\">プロフィールの編集</a> /
    4.96 +    if [ -z "$S4ANNEXNAME" ]; then
    4.97 +      usermenu="<a href=\"?userconf\" accesskey=\"e\"
    4.98 +	 title=\"Shortcut: E${nl}Edit Profile\">プロフィールの編集</a> / "
    4.99 +    elif [ -n "$S4MASTERURL" ]; then
   4.100 +      usermenu="<a href=\"$S4MASTERURL\" accesskey=\"e\"
   4.101 +	 title=\"Shortcut: E${nl}Main Site\">本館</a> / "
   4.102 +    fi
   4.103 +    usermenu="$usermenu
   4.104  	<a href=\"?blog\" accesskey=\"n\" title=\"Shortcut: N${nl}New blog\">新規話題の作成</a>"
   4.105      # Display folders
   4.106      sql="select count(id) from article_m where id