repo: fmrl action: commit revision: path_from: revision_from: bb84fbb8ac0853c1a775bc9a2e7f7918ccc7abfb: path_to: revision_to:
commit bb84fbb8ac0853c1a775bc9a2e7f7918ccc7abfb Author: epochDate: Mon Jun 27 07:01:07 2022 +0000 added opengraph support diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -7,5 +7,7 @@ all:
install:
install -Dt $(PREFIX)/var/www/fmrl/ index.cgi
install -Dt $(PREFIX)/var/www/sites/hacking/cgi-bin/ fmrl-svg.cgi
- install -Dt $(PREFIX)/var/www/sites/hacking/cgi-bin/ fmrl-uri.cgi
+ install -Dt $(PREFIX)/var/www/sites/hacking/cgi-bin/ fmrl-og.cgi
+ install -Dt $(PREFIX)/var/www/lib/ fmrl-og-inline.cgi
install -Dt $(PREFIX)/var/www/sites/hacking/cgi-bin/ fmrl-client.cgi
+ install -Dt $(PREFIX)/var/www/sites/hacking/cgi-bin/ fmrl-uri.cgi
diff --git a/fmrl-og-inline.cgi b/fmrl-og-inline.cgi
new file mode 100755
index 0000000000000000000000000000000000000000..dd277c190a750954e52673669fa10409cbd8ce2f
--- /dev/null
+++ b/fmrl-og-inline.cgi
@@ -0,0 +1,21 @@
+#!/bin/sh
+user="$(printf "%s\n" "$QUERY_STRING" | tr '&' '\n' | grep ^user= | cut -d= -f2-)"
+host="${HTTP_HOST}"
+if [ -z "$user" ];then
+ printf 'Content-Type: text/plain\r\n\r\n'
+else
+ file="/var/www/fmrl/.users/$user"
+ u_avatar="https://thebackupbox.net$(jq -r .avatar.original < "$file" | html_entities_encode)"
+ u_name="$(jq -r .name < "$file" | html_entities_encode)"
+ u_emoji="$(jq -r .emoji < "$file" | html_entities_encode)"
+ u_status="$(jq -r .status < "$file" | html_entities_encode)"
+ u_media="$(jq -r .media < "$file" | html_entities_encode)"
+ u_media_type="$(jq -r .media_type < "$file" | tr -cd '0-9')"
+ media_verb="reading,watching,watching,listening to,listening to,playing"
+ u_media_verb="$(printf "%s\n" "$media_verb" | cut -d, -f${u_media_type})"
+ self_url="https://thebackupbox.net/cgi-bin/fmrl-og.cgi?user=${user}"
+ printf ' \n' "$u_avatar"
+ printf ' \n' "$u_status" "$u_media_verb" "$u_media"
+ printf ' \n' "$u_name" "$user" "$host"
+ printf ' \n' "$user" "$host"
+fi
diff --git a/fmrl-og.cgi b/fmrl-og.cgi
new file mode 100755
index 0000000000000000000000000000000000000000..2a3bd2883364151840dbefb24c43044a723ae346
--- /dev/null
+++ b/fmrl-og.cgi
@@ -0,0 +1,40 @@
+#!/bin/sh
+user="$(printf "%s\n" "$QUERY_STRING" | tr '&' '\n' | grep ^user= | cut -d= -f2-)"
+host="${HTTP_HOST}"
+if [ -z "$user" ];then
+ printf 'Content-Type: text/plain\r\n\r\n'
+else
+ file="/var/www/fmrl/.users/$user"
+ last_modified="$(stat -c '%Y' "${file}")"
+ if [ "${HTTP_IF_MODIFIED_SINCE}" ];then
+ if_modified_since="$(date "+%s" --date="$(printf '%s\n' "${HTTP_IF_MODIFIED_SINCE}" | cut -d+ -f1)")"
+ if [ "${if_modified_since}" -ge "${last_modified}" ];then
+ printf 'Status: 304 Not Modified\r\n\r\n'
+ exit 0
+ fi
+ fi
+ u_avatar="https://thebackupbox.net$(jq -r .avatar.original < "$file" | html_entities_encode)"
+ #u_avatar="data:image/png;base64,$(wget -qO- http://thebackupbox.net$(jq -r .avatar.original < "$file") | base64 | tr -d '\n')"
+ u_name="$(jq -r .name < "$file" | html_entities_encode)"
+ u_emoji="$(jq -r .emoji < "$file" | html_entities_encode)"
+ u_status="$(jq -r .status < "$file" | html_entities_encode)"
+ u_media="$(jq -r .media < "$file" | html_entities_encode)"
+ u_media_type="$(jq -r .media_type < "$file" | tr -cd '0-9')"
+ media_verb="reading,watching,watching,listening to,listening to,playing"
+ u_media_verb="$(printf "%s\n" "$media_verb" | cut -d, -f${u_media_type})"
+ self_url="https://thebackupbox.net/cgi-bin/fmrl-og.cgi?user=${user}"
+ printf "Expires: %s\r\n" "$(rfc7231date)"
+ printf "Content-Type: text/html\r\n\r\n"
+ printf '\n'
+ printf ' \n'
+ #printf ' ' "$u_avatar"
+ printf ' ' "$u_avatar"
+ printf ' ' "$u_status" "$u_media_verb" "$u_media"
+ printf ' ' "$u_name" "$user" "$host"
+ printf ' ' "$user" "$host"
+ printf ' \n'
+ printf ' \n'
+ printf ' open-graph test of fmrl for user %s@%s\n' "$user" "$host"
+ printf ' \n'
+ printf '\n'
+fi
diff --git a/index.cgi b/index.cgi
--- a/index.cgi
+++ b/index.cgi
@@ -17,6 +17,7 @@ case "$PATH_INFO" in
# fi
user="$(printf "%s\n" "$PATH_INFO" | cut -d/ -f3)"
user_file="/var/www/fmrl/.users/${user}"
+ user_data="$(cat "${user_file}")"
if [ "HTTP_TRANSFER_ENCODING" = "chunked" ];then
printf "Status: 501 Not Implemented\r\n"
printf "Content-Type: text/plain\r\n\r\n"
@@ -44,7 +45,7 @@ case "$PATH_INFO" in
avatar_original="/cgi-bin/xface.cgi?$(printf "%s\n" "${HTTPSESS_X_FACE_QS_SAFE}" | sed 's|"|%22|g')"
else ### if there is no xface either, use the previously defined avatar.
echo "no xface found :/"
- avatar_original="$(cat ".users/${user}" | jq -r .avatar.original)"
+ avatar_original="$(printf "%s\n" "${user_data}" | jq -r .avatar.original)"
if [ ! "$avatar_original" ];then ### if there wasn't a previously defined avatar, set it to no-face
echo "no previous value either. using no-face"
avatar_original="/cgi-bin/xface.cgi?$(printf "%s\n" "${HTTPSESS_X_FACE_QS_SAFE}" | sed 's|"|%22|g')"
@@ -54,27 +55,27 @@ case "$PATH_INFO" in
name="$(printf "%s\n" "$input_json" | jq -r .name//empty | sed 's|"|\\"|g')"
if [ ! "$name" ];then
- name="$(cat ".users/${user}" | jq -r .name//empty | sed 's|"|\\"|g')"
+ name="$(printf "%s\n" "${user_data}" | jq -r .name//empty | sed 's|"|\\"|g')"
fi
status="$(printf "%s\n" "$input_json" | jq -r .status//empty | sed 's|"|\\"|g')"
if [ ! "$status" ];then
- status="$(cat ".users/${user}" | jq -r .status//empty | sed 's|"|\\"|g')"
+ status="$(printf "%s\n" "${user_data}" | jq -r .status//empty | sed 's|"|\\"|g')"
fi
emoji="$(printf "%s\n" "$input_json" | jq -r .emoji//empty | sed 's|"|\\"|g')"
if [ ! "$emoji" ];then
- emoji="$(cat ".users/${user}" | jq -r .emoji//empty | sed 's|"|\\"|g')"
+ emoji="$(printf "%s\n" "${user_data}" | jq -r .emoji//empty | sed 's|"|\\"|g')"
fi
media="$(printf "%s\n" "$input_json" | jq -r .media//empty | sed 's|"|\\"|g')"
if [ ! "$media" ];then
- media="$(cat ".users/${user}" | jq -r .media//empty | sed 's|"|\\"|g')"
+ media="$(printf "%s\n" "${user_data}" | jq -r .media//empty | sed 's|"|\\"|g')"
fi
media_type="$(printf "%s\n" "$input_json" | jq -r .media_type//empty | tr -cd '0-9')"
if [ ! "$media_type" ];then
- media_type="$(cat ".users/${user}" | jq -r .media_type//empty)"
+ media_type="$(printf "%s\n" "${user_data}" | jq -r .media_type//empty)"
if [ ! "$media_type" ];then
media_type=0 #will help find buggy clients
fi
@@ -82,10 +83,10 @@ case "$PATH_INFO" in
uri="$(printf "%s\n" "$input_json" | jq -r .uri//empty | sed 's|"|\\"|g')"
if [ ! "$uri" ];then
- uri="$(cat ".users/${user}" | jq -r .uri//empty | sed 's|"|\\"|g')"
+ uri="$(printf "%s\n" "${user_data}" | jq -r .uri//empty | sed 's|"|\\"|g')"
fi
- json="$(cat <<-END
+ json="$(cat <
-----END OF PAGE-----