From 9e1732f8e505ff08d960384b95701ae8250b0f29 Mon Sep 17 00:00:00 2001 From: "Charles E. Lehner" Date: Mon, 14 Sep 2020 12:02:16 -0400 Subject: Save history --- gemini.filter.dpi | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gemini.filter.dpi b/gemini.filter.dpi index f2e885b..7558980 100755 --- a/gemini.filter.dpi +++ b/gemini.filter.dpi @@ -251,6 +251,8 @@ serve_gemini_input() { serve_real_redirect "$url" } +blobs_dir=${ssb_path:-~/.${ssb_appname:-ssb}}/blobs + serve_gemini() { url=${1%%#*} url_noquery=${url%%\?*} @@ -277,7 +279,9 @@ serve_gemini_response() { read status meta send_status_msg "Status: $status" meta=$(echo "$meta" | sed 's/\s*$//') - case "$status" in + mkdir -p $blobs_dir/tmp ~/.dillo/gemini + tmp=$(mktemp $blobs_dir/tmp/XXXXXXXXXXXX) + tee "$tmp" | case "$status" in 1*) serve_input "$url" "$meta";; 2*) serve_success "$meta";; 3*) serve_redirect "$meta";; @@ -287,6 +291,16 @@ serve_gemini_response() { '') serve_missing_status "$meta";; *) serve_status_not_supported "$status" "$meta";; esac + dest=$blobs_dir/sha256/$(sha256sum "$tmp" | awk '{print substr($1, 1, 2) "/" substr($1, 3)}') + if test -e "$dest" && cmp -s "$tmp" "$dest" + then + # unchanged resource + rm "$tmp" + else + mkdir -p "${dest#/*}" + mv "$tmp" "$dest" + fi + printf "%s %s %s %s\n" "$(date -u +%FT%TZ)" "$dest" "$url" "$status $meta" >>~/.dillo/gemini/history.txt } case "$url" in -- cgit v1.2.3