wok-tiny annotate wiki/stuff/var/www/wiki/plugins/wkp_Password.sh @ rev 142

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Feb 27 17:43:23 2019 +0100 (2019-02-27)
parents 48d2c4c7a227
children
rev   line source
pascal@100 1 plugin="Password"
pascal@100 2 description_fr="Ajoute un mot de passe &agrave; une page avec {PASSWORD=code}"
pascal@100 3 description="Add a password to a page with {PASSWORD=something}"
pascal@100 4
pascal@100 5 pagepass_hash()
pascal@100 6 {
pascal@100 7 echo $1 | md5sum | cut -c1-8
pascal@100 8 }
pascal@100 9
pascal@100 10 init()
pascal@100 11 {
pascal@100 12 if grep -qs '{HASHPASSWORD=' $1; then
pascal@100 13 case "$(GET action)" in
pascal@100 14 pagepass|'') return ;;
pascal@100 15 esac
pascal@100 16 hash="$(sed '/{HASHPASSWORD=.*}/!d;s/.*{HASHPASSWORD=\([^}]*\)}.*/\1/;q' <$1)"
pascal@100 17 cookie="pagepass$(pagepass_hash $PWD$PAGE_txt)"
pascal@142 18 [ "$(COOKIE $cookie)" = "$hash" ] && return
pascal@100 19 header
pascal@100 20 echo "<script> history.go(-1); </script>"
pascal@100 21 exit 0
pascal@100 22 fi
pascal@100 23 }
pascal@100 24
pascal@100 25 action()
pascal@100 26 {
pascal@142 27 [ "$1" = "pagepass" ] || return 1
pascal@100 28 uri="$SCRIPT_NAME?page=$(POST page)&auth=$(POST auth)"
pascal@142 29 if [ "$(pagepass_hash $(POST pass))" = "$(POST hash)" ]; then
pascal@100 30 header "HTTP/1.0 302 Found" \
pascal@100 31 "location: $uri" \
pascal@100 32 "Set-Cookie: $(POST cookie)=$(POST hash)"
pascal@100 33 ## "Set-Cookie: $(POST cookie)=$(POST hash); Max-Age=3600; Path=$(dirname $SCRIPT_NAME); HttpOnly"
pascal@100 34 else
pascal@100 35 header "HTTP/1.0 302 Found" \
pascal@100 36 "location: $uri&error=1"
pascal@100 37 fi
pascal@100 38 exit 0
pascal@100 39 }
pascal@100 40
pascal@100 41 formatBegin()
pascal@100 42 {
pascal@100 43 hash="$(sed '/{HASHPASSWORD=.*}/!d;s/.*{HASHPASSWORD=\([^}]*\)}.*/\1/;q' <<EOT
pascal@100 44 $CONTENT
pascal@100 45 EOT
pascal@100 46 )"
pascal@100 47 cookie="pagepass$(pagepass_hash $PWD$PAGE_txt)"
pascal@100 48 if [ "$(COOKIE $cookie)" != "$hash" ]; then
pascal@100 49 editable=false
pascal@100 50 CONTENT="<form method=\"post\" action=\"?action=pagepass\">
pascal@100 51 <input type=\"hidden\" name=\"page\" value=\"$(GET page)\" /> \
pascal@100 52 <input type=\"hidden\" name=\"auth\" value=\"$(GET auth)\" /> \
pascal@100 53 <input type=\"hidden\" name=\"hash\" value=\"$hash\" /> \
pascal@100 54 <input type=\"hidden\" name=\"cookie\" value=\"$cookie\" /> \
pascal@100 55 $MDP <input type=\"text\" name=\"pass\" /> \
pascal@100 56 <input type=\"submit\" value=\"$DONE_BUTTON\" />
pascal@100 57 </form>"
pascal@100 58 else
pascal@100 59 CONTENT="$(sed 's/{HASHPASSWORD=[^}]*}//' <<EOT
pascal@100 60 $CONTENT
pascal@100 61 EOT
pascal@100 62 )"
pascal@100 63 fi
pascal@100 64 }
pascal@100 65
pascal@100 66 pagepass_sedexpr()
pascal@100 67 {
pascal@100 68 sed '/{PASSWORD=.*}/!d;s/.*{PASSWORD=\([^}]*\)}.*/\1/' $1 | \
pascal@100 69 while read pass; do
pascal@100 70 echo -n "-e 's|{PASSWORD=$pass|{HASHPASSWORD=$(pagepass_hash $pass)|' "
pascal@100 71 done
pascal@100 72 echo -n "-e 's|{PASSWORD=}||' "
pascal@100 73 }
pascal@100 74
pascal@100 75 writedPage()
pascal@100 76 {
pascal@100 77 eval sed -i $(pagepass_sedexpr $1) $1 $BACKUP_DIR$PAGE_TITLE/\*.bak
pascal@100 78 }