9 Jul, 2020
On a previous version of this site, I had a static HTML that I wanted to be able to accept comments on.
The solution I chose was as follows:
First we'll need lua CJSON.
Just install it globally, mod_lua will pick it up:
sudo apt install -y lua-cjson
Now we'll enable mod_rewrite:
sudo a2enmod rewrite
Next add some rewrite config to the siteroot directory:
<Directory /home/siteroot/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
LogLevel alert rewrite:trace6
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^blog/(.+?)/index\.html$ /blog/comment.lua?action=comment&post=$1
</Directory>
Tip: Look in the Apache error or rewrite log with [rewrite
prefixed lines to see any problems.
Here's the lua handler at blog/comment.lua
:
local cjson = require "cjson"
function handle(r)
local GET, GETMULTI = r:parseargs()
local POST, POSTMULTI = r:parsebody(1024*1024)
local json = cjson.encode({
author = POST['author'] or "Anon",
comment = POST['comment'] or ""
})
local file = io.open(string.format("/home/siteroot/blog/%s/_contrib/comment_%s.json", GET['post'], os.time()), "w")
file:write(json)
file:close(file)
local handle = io.popen([[/usr/bin/python3 -u /home/apply2.py /home/siteroot -f -a]])
local result = handle:read("*a")
handle:close()
local file = io.open(string.format("/home/siteroot/blog/%s/index.html", GET['post']), "r")
result = file:read('*a')
file:close(file)
local html, i = string.gsub(result, "<h1>", '<p class="success">Comment added successfully</p><h1>')
r:puts(html)
end
Be the first to comment.
Copyright James Gardner 1996-2020 All Rights Reserved. Admin.