projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mod_pubsub: Handle disco#info and disco#items
[prosody.git]
/
core
/
sessionmanager.lua
diff --git
a/core/sessionmanager.lua
b/core/sessionmanager.lua
index fd6ed96eafb75efcf55a6809a9eb5fbbb7d80bd3..d36591bfb34c2218c01c84388796409dbda57a88 100644
(file)
--- a/
core/sessionmanager.lua
+++ b/
core/sessionmanager.lua
@@
-25,8
+25,10
@@
local rm_load_roster = require "core.rostermanager".load_roster;
local config_get = require "core.configmanager".get;
local nameprep = require "util.encodings".stringprep.nameprep;
local resourceprep = require "util.encodings".stringprep.resourceprep;
local config_get = require "core.configmanager".get;
local nameprep = require "util.encodings".stringprep.nameprep;
local resourceprep = require "util.encodings".stringprep.resourceprep;
+local nodeprep = require "util.encodings".stringprep.nodeprep;
-local fire_event = require "core.eventmanager".fire_event;
+local initialize_filters = require "util.filters".initialize;
+local fire_event = prosody.events.fire_event;
local add_task = require "util.timer".add_task;
local gettime = require "socket".gettime;
local add_task = require "util.timer".add_task;
local gettime = require "socket".gettime;
@@
-49,8
+51,20
@@
function new_session(conn)
end
open_sessions = open_sessions + 1;
log("debug", "open sessions now: ".. open_sessions);
end
open_sessions = open_sessions + 1;
log("debug", "open sessions now: ".. open_sessions);
+
+ local filter = initialize_filters(session);
local w = conn.write;
local w = conn.write;
- session.send = function (t) w(conn, tostring(t)); end
+ session.send = function (t)
+ if t.name then
+ t = filter("stanzas/out", t);
+ end
+ if t then
+ t = filter("bytes/out", tostring(t));
+ if t then
+ return w(conn, t);
+ end
+ end
+ end
session.ip = conn:ip();
local conn_name = "c2s"..tostring(conn):match("[a-f0-9]+$");
session.log = logger.init(conn_name);
session.ip = conn:ip();
local conn_name = "c2s"..tostring(conn):match("[a-f0-9]+$");
session.log = logger.init(conn_name);
@@
-72,6
+86,7
@@
local resting_session = { -- Resting, not dead
close = function (session)
session.log("debug", "Attempt to close already-closed session");
end;
close = function (session)
session.log("debug", "Attempt to close already-closed session");
end;
+ filter = function (type, data) return data; end;
}; resting_session.__index = resting_session;
function retire_session(session)
}; resting_session.__index = resting_session;
function retire_session(session)
@@
-109,6
+124,8
@@
function destroy_session(session, err)
end
function make_authenticated(session, username)
end
function make_authenticated(session, username)
+ username = nodeprep(username);
+ if not username or #username == 0 then return nil, "Invalid username"; end
session.username = username;
if session.type == "c2s_unauthed" then
session.type = "c2s";
session.username = username;
if session.type == "c2s_unauthed" then
session.type = "c2s";