changeset 3582:444e2306c99a

mod_http_muc_log: Add option to show OOB images
author Kim Alvefur <zash@zash.se>
date Sun, 05 May 2019 14:06:50 +0200
parents dbc67120097f
children a36412d4fafd
files mod_http_muc_log/README.markdown mod_http_muc_log/http_muc_log.html mod_http_muc_log/mod_http_muc_log.lua
diffstat 3 files changed, 22 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mod_http_muc_log/README.markdown	Sun May 05 14:05:00 2019 +0200
+++ b/mod_http_muc_log/README.markdown	Sun May 05 14:06:50 2019 +0200
@@ -50,6 +50,15 @@
 for rendering templates, with the pattern `"%b{}"` and HTML / XML
 escaping enabled.
 
+## Inline images
+
+Inline images can optionally be shown. This is disabled by default for
+privacy reasons.
+
+``` {.lua}
+http_muc_log_show_images = true
+```
+
 ## Calendar optimization
 
 The calendar view relies on an optional part of the Prosody archive
--- a/mod_http_muc_log/http_muc_log.html	Sun May 05 14:05:00 2019 +0200
+++ b/mod_http_muc_log/http_muc_log.html	Sun May 05 14:06:50 2019 +0200
@@ -89,6 +89,7 @@
 <b class="nick">{item.nick}</b>
 <em class="verb">{item.verb?}</em>
 <q class="body">{item.body?}</q>
+{item.oob.url&<figure><a rel="nofollow" href="{item.oob.url?}"><img style="max-height:9em;max-width:16em" alt="{item.oob.desc?}" src="{item.oob.url?}"/></a><figcaption>{item.oob.desc?}</figcaption></figure>}
 </li>}
 </ol>
 </div>
--- a/mod_http_muc_log/mod_http_muc_log.lua	Sun May 05 14:05:00 2019 +0200
+++ b/mod_http_muc_log/mod_http_muc_log.lua	Sun May 05 14:06:50 2019 +0200
@@ -28,6 +28,7 @@
 	return get_room_from_jid(jid);
 end
 
+local use_oob = module:get_option_boolean(module.name .. "_show_images", false);
 module:depends"http";
 
 local template;
@@ -268,8 +269,9 @@
 			-- TODO Distinguish between join and presence update
 			verb = item.attr.type == "unavailable" and "has left" or "has joined";
 		end
-		if body or verb then
-			logs[i], i = {
+		local oob = use_oob and item:get_child("x", "jabber:x:oob");
+		if body or verb or oob then
+			local line = {
 				key = key;
 				datetime = datetime.datetime(when);
 				time = datetime.time(when);
@@ -278,7 +280,14 @@
 				nick = select(3, jid_split(item.attr.from));
 				st_name = item.name;
 				st_type = item.attr.type;
-			}, i + 1;
+			};
+			if oob then
+				line.oob = {
+					url = oob:get_child_text("url");
+					desc = oob:get_child_text("desc");
+				}
+			end
+			logs[i], i = line, i + 1;
 		end
 		first = first or key;
 		last = key;