Mercurial > prosody-modules
comparison mod_muc_log/mod_muc_log.lua @ 80:bed9a6b40fae
mod_proxy65: basic white list - access control list
| author | Thilo Cestonaro <thilo@cestona.ro> |
|---|---|
| date | Sun, 01 Nov 2009 16:42:04 +0100 |
| parents | 0dfd65bfedb0 |
| children | 9ceeab822e40 |
comparison
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); |
