aboutsummaryrefslogtreecommitdiffstats
path: root/lualib/rspamadm
diff options
context:
space:
mode:
authorJason Stephenson <j.stephenson@live.co.uk>2022-07-21 12:20:42 +0100
committerJason Stephenson <j.stephenson@live.co.uk>2022-07-21 12:20:42 +0100
commitc2559dc9fa65e05bf1e2aac0c56897d144184a22 (patch)
tree0e7f3004ea2e0c4ec39f529ce0a9e200a6044fd1 /lualib/rspamadm
parent239d6fc79857a9282885e94eb344a6fa15c451e8 (diff)
downloadrspamd-c2559dc9fa65e05bf1e2aac0c56897d144184a22.tar.gz
rspamd-c2559dc9fa65e05bf1e2aac0c56897d144184a22.zip
Refactor before adding support to extract option
Diffstat (limited to 'lualib/rspamadm')
-rw-r--r--lualib/rspamadm/mime.lua75
1 files changed, 39 insertions, 36 deletions
diff --git a/lualib/rspamadm/mime.lua b/lualib/rspamadm/mime.lua
index 5f063666d..96aed5ca4 100644
--- a/lualib/rspamadm/mime.lua
+++ b/lualib/rspamadm/mime.lua
@@ -878,52 +878,55 @@ local function sign_handler(opts)
end
end
---Strips directories and .extensions from a filename/path
-local function filename_only(filename)
- stripped_filename = filename:match(".*%/([^%.]*)")
- if not stripped_filename then
- stripped_filename = filename:match("(.*)%.")
+--Strips directories and .extensions (if present) from a filepath
+local function filename_only(filepath)
+ filename = filepath:match(".*%/([^%.]*)")
+ if not filename then
+ filename = filepath:match("(.*)%.")
end
- return stripped_filename
+ return filename
end
-local function dump_handler(opts)
- load_config(opts)
- rspamd_url.init(rspamd_config:get_tld_path())
+local function get_dump_content(task, opts)
+ if opts.ucl or opts.json or opts.messagepack then
+ local ucl_object = lua_mime.message_to_ucl(task)
+ local extension = output_fmt(opts)
+ return ucl.to_format(ucl_object, out_extension), extension
+ end
+ return tostring(task:get_content()), "mime"
+end
- for _,fname in ipairs(opts.file) do
+--Write the dump content to file or standard out
+local function write_dump_content(data, fname, extension, outdir)
+ if outdir then
+ if outdir:sub(-1) ~= "/" then
+ outdir = outdir .. "/"
+ end
- local task = load_task(opts, fname)
+ local outpath = string.format("%s%s.%s", outdir, filename_only(fname), extension)
+ local outfile = io.open(outpath, "w")
- local data_to_write = nil
- local out_extension = nil
- if opts.ucl or opts.json or opts.messagepack then
- local ucl_object = lua_mime.message_to_ucl(task)
- out_extension = output_fmt(opts)
- data_to_write = ucl.to_format(ucl_object, out_extension)
+ if outfile then
+ outfile:write(data)
+ outfile:close()
+ io.write(outpath.."\n")
else
- out_extension = "mime"
- data_to_write = tostring(task:get_content())
+ io.stderr:write(string.format("Unable to open: %s\n", outpath))
end
+ else
+ io.write(data)
+ end
+end
- if opts.outdir then
- if opts.outdir:sub(-1) ~= "/" then
- opts.outdir = opts.outdir .. "/"
- end
+local function dump_handler(opts)
+ load_config(opts)
+ rspamd_url.init(rspamd_config:get_tld_path())
- local outpath = string.format("%s%s.%s", opts.outdir, filename_only(fname), out_extension)
- local outfile = io.open(outpath, "w")
-
- if outfile then
- outfile:write(data_to_write)
- outfile:close()
- io.write(outpath.."\n")
- else
- io.stderr:write(string.format("Unable to open: %s\n", outpath))
- end
- else
- io.write(data_to_write)
- end
+ for _,fname in ipairs(opts.file) do
+ local task = load_task(opts, fname)
+
+ local data, extension = get_dump_content(task, opts)
+ write_dump_content(data, fname, extension, opts.outdir)
task:destroy() -- No automatic dtor
end