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 diff
1.1 --- a/s4-blog.sh Thu Mar 14 10:28:42 2019 +0900 1.2 +++ b/s4-blog.sh Thu Mar 14 12:48:07 2019 +0900 1.3 @@ -775,11 +775,18 @@ 1.4 } 1.5 searchart() { 1.6 kwd=`getpar kwd|nkf -wZ1` # Convert Zenkaku-SPC to ASCII-SPC 1.7 + bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` 1.8 kwdgrp="" 1.9 authcond="" 1.10 if [ -z "$kwd" ]; then 1.11 echo "検索語を指定してください" | html p; return 1.12 fi 1.13 + if logstart "$searchlog"; then 1.14 + { echo "kwd=$kwd" 1.15 + test -n "$bloglist" && echo "bloglist=$bloglist" 1.16 + } >> $searchlog 1.17 + logend "$searchlog" 1.18 + fi 1.19 if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then 1.20 # Like '#1234', assume as artID 1.21 rowid=$((${kwd#\#} + 0)) # Force to be a number 1.22 @@ -820,7 +827,13 @@ 1.23 if [ -n "$ctime" ]; then 1.24 kc=$kc${kc:+" AND "}"ctime > '${ctime}'" 1.25 else 1.26 - kc=$kc${kc:+" AND "}"content LIKE '%$k%'" 1.27 + e="" 1.28 + case "$k" in 1.29 + *${likeesc}*) e="" ;; # Giving up char-escaping 1.30 + *%*|*_*) k=`echo "$k"|sed "s/\([%_]\)/${likeesc}\1/g"` 1.31 + e=" ESCAPE '$likeesc'" ;; 1.32 + esac 1.33 + kc=$kc${kc:+" AND "}"content LIKE '%$k%'$e" 1.34 fi 1.35 done 1.36 fi 1.37 @@ -844,7 +857,6 @@ 1.38 msg="(`linkhome $author` さんの書き込みから)" 1.39 fi 1.40 fi 1.41 - bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` 1.42 if [ -n "$bloglist" ]; then 1.43 blogcond="AND bl.rid IN ($bloglist)" 1.44 fi
2.1 --- a/s4-funcs.sh Thu Mar 14 10:28:42 2019 +0900 2.2 +++ b/s4-funcs.sh Thu Mar 14 12:48:07 2019 +0900 2.3 @@ -33,12 +33,14 @@ 2.4 blogreadflagrowid=0 2.5 blogcutoffflagrowid=-1 2.6 querylog=$tmpdir/query.log 2.7 +searchlog=$tmpdir/search.log 2.8 2.9 tconfs="" 2.10 imgcached=cache/img.`date +%Y/%m` 2.11 conftbl=_tblconf 2.12 nl=" 2.13 " 2.14 +likeesc=`printf '\037'` # ESCAPE char of LIKE operator 2.15 iconcachekey="profimgcache_S" 2.16 case "$HTTP_USER_AGENT" in 2.17 *i[Pp]hone*|*[Aa]ndroid*) touchpanel=1 ;; 2.18 @@ -309,9 +311,22 @@ 2.19 2.20 EOF 2.21 2.22 +logstart() { 2.23 + echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> ${1:-$querylog} 2.24 +} 2.25 +logend() { 2.26 + echo ">>>" >> ${1:-$querylog} 2.27 +} 2.28 sq() { 2.29 # ./args.rb -cmd ".timeout 3000" "$@" 2.30 - sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" 2.31 + logstart 2.32 + if [ -z "$1" ]; then 2.33 + tee -a $querylog|sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" 2.34 + else 2.35 + echo "$@" >> $querylog 2.36 + sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" 2.37 + fi 2.38 + logend 2.39 } 2.40 dbsetup() { 2.41 [ -d $tmpdir ] || mkdir -m 1777 $tmpdir 2.42 @@ -343,7 +358,7 @@ 2.43 # simple redirection for the sake of speed. 2.44 query() { 2.45 echo ".once $sqo" >&5 2.46 - echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> $querylog 2.47 + logstart 2.48 if [ -z "$1" ]; then 2.49 tee -a $querylog 2.50 else 2.51 @@ -351,7 +366,7 @@ 2.52 echo "$@" 2.53 fi >&5 2.54 cat $sqo 2.55 - echo '>>>' >> $querylog 2.56 + logend 2.57 } 2.58 _m4() { 2.59 #_S4NAME_=f,f,f