diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-06-02 17:51:14 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-06-02 17:51:14 +0100 |
commit | 828f40f911a2f14ed4a83ce8c70e203887af3361 (patch) | |
tree | 067011a90e96d07c6bee1bdf849a680d684fd128 | |
parent | 881dc8a1052b66d189426b0323005ad8aca2b38c (diff) | |
download | prosody-828f40f911a2f14ed4a83ce8c70e203887af3361.tar.gz prosody-828f40f911a2f14ed4a83ce8c70e203887af3361.zip |
sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
-rw-r--r-- | core/sessionmanager.lua | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/core/sessionmanager.lua b/core/sessionmanager.lua index fd6ed96e..a3c4c5ad 100644 --- a/core/sessionmanager.lua +++ b/core/sessionmanager.lua @@ -26,6 +26,7 @@ local config_get = require "core.configmanager".get; local nameprep = require "util.encodings".stringprep.nameprep; local resourceprep = require "util.encodings".stringprep.resourceprep; +local filters_initialize = require "util.filters".initialize; local fire_event = require "core.eventmanager".fire_event; local add_task = require "util.timer".add_task; local gettime = require "socket".gettime; @@ -49,8 +50,20 @@ function new_session(conn) end open_sessions = open_sessions + 1; log("debug", "open sessions now: ".. open_sessions); + + local filter = filters_initialize(session); 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); |