summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lualib/lua_util.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua
index bcb697e2c..a7a0e6938 100644
--- a/lualib/lua_util.lua
+++ b/lualib/lua_util.lua
@@ -1431,4 +1431,20 @@ exports.is_skip_local_or_authed = function(task, conf, ip)
return false
end
+---[[[
+-- @function lua_util.maybe_smtp_quote_value(str)
+-- Checks string for the forbidden elements (tspecials in RFC and quote string if needed)
+-- @param {string} str input string
+-- @return {string} original or quoted string
+--]]]
+local tspecial = lpeg.S"()<>@,;:\\\"/[]?= \t\v"
+local special_match = lpeg.P((1 - tspecial)^0 * tspecial^1)
+exports.maybe_smtp_quote_value = function(str)
+ if special_match:match(str) then
+ return string.format('"%s"', str:gsub('"', '\\"'))
+ end
+
+ return str
+end
+
return exports