diff options
Diffstat (limited to 'extensions/email-libravatar.lua')
| -rw-r--r-- | extensions/email-libravatar.lua | 114 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 0 insertions, 114 deletions
diff --git a/extensions/email-libravatar.lua b/extensions/email-libravatar.lua deleted file mode 100644 index 812bef5..0000000 --- a/extensions/email-libravatar.lua +++ /dev/null @@ -1,114 +0,0 @@ --- cgit email-filter that shows a Libravatar icon next to author names. Use it --- with the email-filter or repo.email-filter setting and the lua: prefix. --- --- email-filter=lua:/path/to/email-libravatar.lua --- --- SUPPORTED LUA --- --- Lua 5.1, 5.2, 5.3, 5.4 and LuaJIT. Lua 5.5 is not supported, because luaossl --- has no 5.5 build. --- --- DEPENDENCY --- --- luaossl OpenSSL binding, provides openssl.digest --- <https://github.com/wahern/luaossl> --- --- # Debian and Ubuntu --- sudo apt install luarocks libssl-dev --- sudo luarocks --lua-version 5.1 install luaossl --- --- # Fedora --- sudo dnf install luarocks openssl-devel --- sudo luarocks --lua-version 5.1 install luaossl --- --- # macOS with Homebrew --- brew install luarocks openssl --- luarocks install luaossl OPENSSL_DIR="$(brew --prefix openssl)" --- --- PRIVACY --- --- Every page view sends the visitor's IP address and a hash of each --- committer's email to a third-party service. Leave this filter off if that is --- not acceptable for your instance. --- --- The secure CDN is always used, so the icon loads over https and is never --- blocked as mixed content. Addresses are hashed with MD5. - -local digest = require("openssl.digest") - --- --- ===== CONFIGURATION ===== --- - --- Pixel size of the avatar. -local avatar_size = 13 - --- Fallback style for an address with no avatar. See the Libravatar docs for --- the choices, for example retro, identicon, monsterid or mm. -local default_image = "retro" - --- Avatar endpoint. The secure CDN is used so the image loads over https. -local base_url = "https://seccdn.libravatar.org/avatar/" - --- Text for the image alt attribute. -local alt_text = "Libravatar" - --- --- ========================= --- - --- State shared across the open, write and close calls of one invocation. -local buffer = "" -local avatar = nil - -local function hash_hex(input) - local b = digest.new("md5"):final(input) - local x = "" - for i = 1, #b do - x = x .. string.format("%.2x", string.byte(b, i)) - end - return x -end - --- Take the address, strip the angle brackets if present, then trim and --- lowercase as the avatar services expect. Returns nil for a missing or empty --- address. -local function normalize_email(email) - if email == nil then - return nil - end - local inner = email:match("<(.*)>") - if inner ~= nil then - email = inner - end - email = (email:gsub("^%s*(.-)%s*$", "%1")):lower() - if email == "" then - return nil - end - return email -end - -function filter_open(email, page) - buffer = "" - local addr = normalize_email(email) - if addr == nil then - avatar = nil - else - avatar = hash_hex(addr) - end -end - -function filter_close() - if avatar == nil then - -- No usable address, render the name without an icon. - html(buffer) - else - html("<img src='" .. base_url .. avatar .. "?s=" .. avatar_size .. "&d=" .. default_image .. - "' width='" .. avatar_size .. "' height='" .. avatar_size .. "' alt='" .. alt_text .. "' /> " .. buffer) - end - return 0 -end - -function filter_write(str) - buffer = buffer .. str -end |
