mod_muc_log/mod_muc_log.lua
changeset 80 bed9a6b40fae
parent 62 0dfd65bfedb0
child 81 9ceeab822e40
equal deleted inserted replaced
79:34f5818c90e9 80:bed9a6b40fae
    11 local serialize = require "util.serialization".serialize;
    11 local serialize = require "util.serialization".serialize;
    12 local datamanager = require "util.datamanager";
    12 local datamanager = require "util.datamanager";
    13 local data_load, data_store, data_getpath = datamanager.load, datamanager.store, datamanager.getpath;
    13 local data_load, data_store, data_getpath = datamanager.load, datamanager.store, datamanager.getpath;
    14 local datastore = "muc_log";
    14 local datastore = "muc_log";
    15 local config = {};
    15 local config = {};
       
    16 local verifyAuthRequest = module:require "verifyhttpauth".verifyHttpAuthRequest;
       
    17 
    16 
    18 
    17 
    19 
    18 --[[ LuaFileSystem 
    20 --[[ LuaFileSystem 
    19 * URL: http://www.keplerproject.org/luafilesystem/index.html
    21 * URL: http://www.keplerproject.org/luafilesystem/index.html
    20 * Install: luarocks install luafilesystem
    22 * Install: luarocks install luafilesystem
   419 		return tmp;
   421 		return tmp;
   420 	else
   422 	else
   421 		return generateDayListSiteContentByRoom(bareRoomJid); -- fallback
   423 		return generateDayListSiteContentByRoom(bareRoomJid); -- fallback
   422 	end
   424 	end
   423 end
   425 end
   424 
   426 local requests = {};
   425 function handle_request(method, body, request)
   427 function handle_request(method, body, request)
   426 	local query = splitQuery(request.url.query);
   428 	local query = splitQuery(request.url.query);
   427 	local node, host = grepRoomJid(request.url.path);
   429 	local node, host = grepRoomJid(request.url.path);
   428 	
   430 	
   429 	if node ~= nil  and host ~= nil then
   431 	if node ~= nil  and host ~= nil then
   435 			else
   437 			else
   436 				local subject = ""
   438 				local subject = ""
   437 				if room._data ~= nil and room._data.subject ~= nil then
   439 				if room._data ~= nil and room._data.subject ~= nil then
   438 					subject = room._data.subject;
   440 					subject = room._data.subject;
   439 				end
   441 				end
   440 				return createDoc(parseDay(bare, subject, query));
   442 				local doc = createDoc(parseDay(bare, subject, query));
       
   443 				local id = "thisIsTheId";
       
   444 				requests[id] = request;
       
   445 				requests[id].doc = doc;
       
   446 				
       
   447 				verifyAuthRequest(request.url.path .. "?" .. request.url.query, "thilo@cestona.ro", id, function (id, confirmed)
       
   448 					if confirmed and requests[id] then
       
   449 						requests[id].send(requests[id].doc);
       
   450 					end
       
   451 				end)
       
   452 				return true;
   441 			end
   453 			end
   442 		else
   454 		else
   443 			return createDoc(generateRoomListSiteContent());
   455 			return createDoc(generateRoomListSiteContent());
   444 		end
   456 		end
   445 	else
   457 	else
   446 		return createDoc(generateRoomListSiteContent());
   458 		return createDoc(generateRoomListSiteContent());
   447 	end
   459 	end
   448 	return;
   460 	return;
   449 end
   461 end
   450 
   462 
   451 config = config_get(module:get_host(), "core", "muc_log");
   463 config = config_get(module:get_host(), "core", "muc_log") or {};
   452 
   464 
   453 httpserver.new_from_config({ config.http_port or true }, handle_request, { base = "muc_log" });
   465 httpserver.new_from_config({ config.http_port or true }, handle_request, { base = "muc_log" });
   454 
   466 
   455 module:hook("message/bare", logIfNeeded, 500);
   467 module:hook("message/bare", logIfNeeded, 500);
   456 module:hook("pre-message/bare", logIfNeeded, 500);
   468 module:hook("pre-message/bare", logIfNeeded, 500);