This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git


The following commit(s) were added to refs/heads/master by this push:
     new 75f7bcb4 Add maintenance banner filter
75f7bcb4 is described below

commit 75f7bcb42eb10bbcce34ece64de42c2dc3e3c657
Author: Sebb <s...@apache.org>
AuthorDate: Fri Jan 12 19:23:10 2024 +0000

    Add maintenance banner filter
---
 maintenance_banner.lua | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/maintenance_banner.lua b/maintenance_banner.lua
new file mode 100644
index 00000000..55ebe91d
--- /dev/null
+++ b/maintenance_banner.lua
@@ -0,0 +1,42 @@
+--[[
+  This is an output filter for HTML files
+  It adds a banner when maintenance mode is detected
+
+  It is invoked by the following file exists:
+  /srv/whimsy/www/maintenance.tct
+
+  The mod_lua API is described here:
+  https://httpd.apache.org/docs/current/mod/mod_lua.html#modifying_buckets
+
+  How it works:
+    For simplicity, we add the banner to the start of the page.
+
+    This is not really valid HTML, but seems to work in most cases, and avoids 
having to find a better
+    place to insert it. 
+
+]]--
+
+function output_filter(r)
+    -- We only filter text/html types
+    if not r.content_type:match("text/html") then return end
+
+    -- create the customised banner
+    local divstyle = 
'font-size:x-large;padding:15px;color:white;background:red;z-index:99;' ;
+    -- local astyle = 'color:white;text-decoration:underline' ; -- <a>
+    local div = ([[
+      <div style='%s'>
+        The Whimsy server is undergoing maintenance. Not all functions are 
available.
+        %s
+      </div>]]):format(divstyle, r.content_type)
+
+    -- add header:
+    coroutine.yield(div)
+
+    -- spit out the actual page
+    while bucket ~= nil do
+        coroutine.yield(bucket)
+    end
+
+    -- no need to add anything at the end of the content
+
+end

Reply via email to