mod_http_upload/mod_http_upload.lua
changeset 2695 92ddfc548ce8
parent 2694 43ad92c5b91a
child 2696 785465f8af3d
equal deleted inserted replaced
2694:43ad92c5b91a 2695: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