Software /
code /
prosody-modules
Comparison
mod_http_upload/mod_http_upload.lua @ 2691:92ddfc548ce8
mod_http_upload: Store filename and directory separately
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 15 Apr 2017 15:55:39 +0200 |
parent | 2690:43ad92c5b91a |
child | 2692:785465f8af3d |
comparison
equal
deleted
inserted
replaced
2690:43ad92c5b91a | 2691:92ddfc548ce8 |
---|---|
79 if not uploads then return true; end | 79 if not uploads then return true; end |
80 uploads = array(uploads); | 80 uploads = array(uploads); |
81 local expiry = os.time() - max_age; | 81 local expiry = os.time() - max_age; |
82 local upload_window = os.time() - 900; | 82 local upload_window = os.time() - 900; |
83 uploads:filter(function (item) | 83 uploads:filter(function (item) |
84 local filename = item.filename; | |
85 if item.dir then | |
86 filename = join_path(storage_path, item.dir, item.filename); | |
87 end | |
84 if item.time < expiry then | 88 if item.time < expiry then |
85 local deleted, whynot = os.remove(item.filename); | 89 local deleted, whynot = os.remove(filename); |
86 if not deleted then | 90 if not deleted then |
87 module:log("warn", "Could not delete expired upload %s: %s", item.filename, whynot or "delete failed"); | 91 module:log("warn", "Could not delete expired upload %s: %s", filename, whynot or "delete failed"); |
88 end | 92 end |
89 return false; | 93 return false; |
90 elseif item.time < upload_window and not lfs.attributes(item.filename) then | 94 elseif item.time < upload_window and not lfs.attributes(filename) then |
91 return false; -- File was not uploaded or has been deleted since | 95 return false; -- File was not uploaded or has been deleted since |
92 end | 96 end |
93 return true; | 97 return true; |
94 end); | 98 end); |
95 return datamanager.list_store(username, host, module.name, uploads); | 99 return datamanager.list_store(username, host, module.name, uploads); |
159 repeat random_dir = uuid(); | 163 repeat random_dir = uuid(); |
160 until lfs.mkdir(join_path(storage_path, random_dir)) | 164 until lfs.mkdir(join_path(storage_path, random_dir)) |
161 or not lfs.attributes(join_path(storage_path, random_dir, filename)) | 165 or not lfs.attributes(join_path(storage_path, random_dir, filename)) |
162 | 166 |
163 local ok = datamanager.list_append(username, host, module.name, { | 167 local ok = datamanager.list_append(username, host, module.name, { |
164 filename = join_path(storage_path, random_dir, filename), size = filesize, time = os.time() }); | 168 filename = filename, dir = random_dir, size = filesize, time = os.time() }); |
169 | |
165 if not ok then | 170 if not ok then |
166 origin.send(st.error_reply(stanza, "wait", "internal-server-failure")); | 171 origin.send(st.error_reply(stanza, "wait", "internal-server-failure")); |
167 return true; | 172 return true; |
168 end | 173 end |
169 | 174 |