X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=cgilite%2Fsession.sh;fp=cgilite%2Fsession.sh;h=b52ac0a5cc6fab71ba8a7926c27ac692a5c867de;hp=93cc2f4e93f88c46f3d4dfea29b79ef402b8cf09;hb=028ca40e8f741f3bf7acbba15d61e4479ab570d2;hpb=199c6d80e8f32d6eff65a06f540eabe47411ab56 diff --git a/cgilite/session.sh b/cgilite/session.sh index 93cc2f4..b52ac0a 100755 --- a/cgilite/session.sh +++ b/cgilite/session.sh @@ -86,3 +86,20 @@ update_session(){ SESSION_KEY="$(update_session)" SET_COOKIE 0 session="$SESSION_KEY" Path=/ SameSite=Strict HttpOnly SESSION_ID="${SESSION_KEY%% *}" + +SESSION_BIND() { + local key="$1" value="$2" + SET_COOKIE session "$key"="${value} $(session_mac "$value" "$SESSION_ID")" +} + +SESSION_VAR() { + local key="$1" + local value sig + value="$(COOKIE "$key")" + sig="${value##* }" value="${value% *}" + if [ "$sig" = "$(session_mac "$value" "$SESSION_ID")" ]; then + printf %s\\n "$value" + else + return 1 + fi +}