slitaz-dev-tools annotate tazwikiss/rootfs/var/www/wiki/plugins/wkp_Password.sh @ rev 256

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