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); |