Mercurial > prosody-modules
comparison mod_http_upload/mod_http_upload.lua @ 2649:abea818eed7b
mod_http_upload: Rename variable to avoid name clash
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 26 Mar 2017 23:07:16 +0200 |
| parents | 4c92e2e897c8 |
| children | fef067b57305 |
comparison
equal
deleted
inserted
replaced
| 2648:4c92e2e897c8 | 2649:abea818eed7b |
|---|---|
| 95 return true; | 95 return true; |
| 96 end | 96 end |
| 97 local reply = st.reply(stanza); | 97 local reply = st.reply(stanza); |
| 98 reply:tag("slot", { xmlns = xmlns }); | 98 reply:tag("slot", { xmlns = xmlns }); |
| 99 | 99 |
| 100 local random; | 100 local random_dir; |
| 101 repeat random = uuid(); | 101 repeat random_dir = uuid(); |
| 102 until lfs.mkdir(join_path(storage_path, random)) | 102 until lfs.mkdir(join_path(storage_path, random_dir)) |
| 103 or not lfs.attributes(join_path(storage_path, random, filenams)) | 103 or not lfs.attributes(join_path(storage_path, random_dir, filenams)) |
| 104 | 104 |
| 105 datamanager.list_append(origin.username, origin.host, module.name, { | 105 datamanager.list_append(origin.username, origin.host, module.name, { |
| 106 filename = join_path(storage_path, random, filename), size = filesize, time = os.time() }); | 106 filename = join_path(storage_path, random_dir, filename), size = filesize, time = os.time() }); |
| 107 local slot = random.."/"..filename; | 107 local slot = random_dir.."/"..filename; |
| 108 pending_slots[slot] = origin.full_jid; | 108 pending_slots[slot] = origin.full_jid; |
| 109 local base_url = module:http_url(); | 109 local base_url = module:http_url(); |
| 110 local slot_url = url.parse(base_url); | 110 local slot_url = url.parse(base_url); |
| 111 slot_url.path = url.parse_path(slot_url.path or "/"); | 111 slot_url.path = url.parse_path(slot_url.path or "/"); |
| 112 t_insert(slot_url.path, random); | 112 t_insert(slot_url.path, random_dir); |
| 113 t_insert(slot_url.path, filename); | 113 t_insert(slot_url.path, filename); |
| 114 slot_url.path.is_directory = false; | 114 slot_url.path.is_directory = false; |
| 115 slot_url.path = url.build_path(slot_url.path); | 115 slot_url.path = url.build_path(slot_url.path); |
| 116 slot_url = url.build(slot_url); | 116 slot_url = url.build(slot_url); |
| 117 reply:tag("get"):text(slot_url):up(); | 117 reply:tag("get"):text(slot_url):up(); |
| 143 local uploader = pending_slots[path]; | 143 local uploader = pending_slots[path]; |
| 144 if not uploader then | 144 if not uploader then |
| 145 module:log("warn", "Attempt to upload to unknown slot %q", path); | 145 module:log("warn", "Attempt to upload to unknown slot %q", path); |
| 146 return; -- 404 | 146 return; -- 404 |
| 147 end | 147 end |
| 148 local random, filename = path:match("^([^/]+)/([^/]+)$"); | 148 local random_dir, filename = path:match("^([^/]+)/([^/]+)$"); |
| 149 if not random then | 149 if not random_dir then |
| 150 module:log("warn", "Invalid file path %q", path); | 150 module:log("warn", "Invalid file path %q", path); |
| 151 return 400; | 151 return 400; |
| 152 end | 152 end |
| 153 if #event.request.body > file_size_limit then | 153 if #event.request.body > file_size_limit then |
| 154 module:log("warn", "Uploaded file too large %d bytes", #event.request.body); | 154 module:log("warn", "Uploaded file too large %d bytes", #event.request.body); |
| 155 return 400; | 155 return 400; |
| 156 end | 156 end |
| 157 pending_slots[path] = nil; | 157 pending_slots[path] = nil; |
| 158 local full_filename = join_path(storage_path, random, filename); | 158 local full_filename = join_path(storage_path, random_dir, filename); |
| 159 if lfs.attributes(full_filename) then | 159 if lfs.attributes(full_filename) then |
| 160 module:log("warn", "File %s exists already, not replacing it", full_filename); | 160 module:log("warn", "File %s exists already, not replacing it", full_filename); |
| 161 return 409; | 161 return 409; |
| 162 end | 162 end |
| 163 local fh, ferr = io.open(full_filename, "w"); | 163 local fh, ferr = io.open(full_filename, "w"); |
| 175 if not ok then | 175 if not ok then |
| 176 module:log("error", "Could not write to file %s for upload: %s", full_filename, err); | 176 module:log("error", "Could not write to file %s for upload: %s", full_filename, err); |
| 177 os.remove(full_filename); | 177 os.remove(full_filename); |
| 178 return 500; | 178 return 500; |
| 179 end | 179 end |
| 180 module:log("info", "File uploaded by %s to slot %s", uploader, random); | 180 module:log("info", "File uploaded by %s to slot %s", uploader, random_dir); |
| 181 return 201; | 181 return 201; |
| 182 end | 182 end |
| 183 | 183 |
| 184 -- FIXME Duplicated from net.http.server | 184 -- FIXME Duplicated from net.http.server |
| 185 | 185 |
