Mercurial > hgrepos > hgweb.cgi > s4
changeset 510:2a70b6c7ffad
Add search-log and %-escaping
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 14 Mar 2019 12:48:07 +0900 |
parents | d34b8f36501c |
children | f2dec8025291 |
files | s4-blog.sh s4-funcs.sh |
diffstat | 2 files changed, 32 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/s4-blog.sh Thu Mar 14 10:28:42 2019 +0900 +++ b/s4-blog.sh Thu Mar 14 12:48:07 2019 +0900 @@ -775,11 +775,18 @@ } searchart() { kwd=`getpar kwd|nkf -wZ1` # Convert Zenkaku-SPC to ASCII-SPC + bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` kwdgrp="" authcond="" if [ -z "$kwd" ]; then echo "検索語を指定してください" | html p; return fi + if logstart "$searchlog"; then + { echo "kwd=$kwd" + test -n "$bloglist" && echo "bloglist=$bloglist" + } >> $searchlog + logend "$searchlog" + fi if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then # Like '#1234', assume as artID rowid=$((${kwd#\#} + 0)) # Force to be a number @@ -820,7 +827,13 @@ if [ -n "$ctime" ]; then kc=$kc${kc:+" AND "}"ctime > '${ctime}'" else - kc=$kc${kc:+" AND "}"content LIKE '%$k%'" + e="" + case "$k" in + *${likeesc}*) e="" ;; # Giving up char-escaping + *%*|*_*) k=`echo "$k"|sed "s/\([%_]\)/${likeesc}\1/g"` + e=" ESCAPE '$likeesc'" ;; + esac + kc=$kc${kc:+" AND "}"content LIKE '%$k%'$e" fi done fi @@ -844,7 +857,6 @@ msg="(`linkhome $author` さんの書き込みから)" fi fi - bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` if [ -n "$bloglist" ]; then blogcond="AND bl.rid IN ($bloglist)" fi
--- a/s4-funcs.sh Thu Mar 14 10:28:42 2019 +0900 +++ b/s4-funcs.sh Thu Mar 14 12:48:07 2019 +0900 @@ -33,12 +33,14 @@ blogreadflagrowid=0 blogcutoffflagrowid=-1 querylog=$tmpdir/query.log +searchlog=$tmpdir/search.log tconfs="" imgcached=cache/img.`date +%Y/%m` conftbl=_tblconf nl=" " +likeesc=`printf '\037'` # ESCAPE char of LIKE operator iconcachekey="profimgcache_S" case "$HTTP_USER_AGENT" in *i[Pp]hone*|*[Aa]ndroid*) touchpanel=1 ;; @@ -309,9 +311,22 @@ EOF +logstart() { + echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> ${1:-$querylog} +} +logend() { + echo ">>>" >> ${1:-$querylog} +} sq() { # ./args.rb -cmd ".timeout 3000" "$@" - sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" + logstart + if [ -z "$1" ]; then + tee -a $querylog|sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" + else + echo "$@" >> $querylog + sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" + fi + logend } dbsetup() { [ -d $tmpdir ] || mkdir -m 1777 $tmpdir @@ -343,7 +358,7 @@ # simple redirection for the sake of speed. query() { echo ".once $sqo" >&5 - echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> $querylog + logstart if [ -z "$1" ]; then tee -a $querylog else @@ -351,7 +366,7 @@ echo "$@" fi >&5 cat $sqo - echo '>>>' >> $querylog + logend } _m4() { #_S4NAME_=f,f,f