Software /
code /
prosody-modules
File
mod_webpresence/mod_webpresence.in.lua @ 94:941fd7d8b9b2
mod_muc_log: split into mod_muc_log and mod_muc_log_http
mod_muc_log: should be enabled per muc component which should log!
mod_muc_log_http: handle /me messages, add previous, next day links to day view, add link to speeqe.com to directly join the room,
make the window recalculate the content div size, scrollbars are only shown when needed
author | Thilo Cestonaro <thilo@cestona.ro> |
---|---|
date | Tue, 17 Nov 2009 21:19:17 +0100 |
parent | 4:63080b8973ee |
line wrap: on
line source
local jid_split = require "util.jid".prepped_split; if not require_resource then function require_resource(name) local f = io.open((config.get("*", "core", "presence_icons") or "")..name); if f then return f:read("*a"); end module:log("warn", "Failed to open image file %s", (config.get("*", "core", "presence_icons") or "")..name); return ""; end end local response_404 = { status = "404 Not Found", body = "<h1>Page Not Found</h1>Sorry, we couldn't find what you were looking for :(" }; local statuses = { "online", "away", "xa", "dnd", "chat", "offline" }; for _, status in ipairs(statuses) do statuses[status] = { status = "200 OK", headers = { ["Content-Type"] = "image/png" }, body = require_resource("icons/status_"..status..".png") }; end local function handle_request(method, body, request) local jid = request.url.path:match("[^/]+$"); if jid then local user, host = jid_split(jid); if host and not user then user, host = host, request.headers.host; if host then host = host:gsub(":%d+$", ""); end end if user and host then local user_sessions = hosts[host] and hosts[host].sessions[user]; if user_sessions then local status = user_sessions.top_resources[1]; if status and status.presence then status = status.presence:child_with_name("show"); if not status then status = "online"; else status = status:get_text(); end return statuses[status]; end end end end return statuses.offline; end local ports = config.get(module.host, "core", "http_ports") or { 5280 }; require "net.httpserver".new_from_config(ports, "status", handle_request);