author | Marco Cirillo <maranda@lightwitch.org> |
Thu, 22 Sep 2011 15:00:39 +0000 | |
changeset 439 | c01679811fe8 |
parent 395 | 77ca0947647b |
child 1343 | 7dbde05b48a9 |
permissions | -rw-r--r-- |
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
1 |
local filters = require "util.filters"; |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
2 |
local config = {} |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
3 |
config.file = module:get_option_string("crossdomain_file", ""); |
395 | 4 |
config.string = module:get_option_string("crossdomain_string", [[<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><site-control permitted-cross-domain-policies="master-only"/><allow-access-from domain="*" /></cross-domain-policy>]]); |
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
5 |
local string = '' |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
6 |
if not config.file ~= '' then |
395 | 7 |
local f = assert(io.open(config.file)); |
8 |
string = f:read("*all"); |
|
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
9 |
else |
395 | 10 |
string = config.string |
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
11 |
end |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
12 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
13 |
module:log("debug", "crossdomain string: "..string); |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
14 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
15 |
module:set_global(); |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
16 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
17 |
function filter_policy(data, session) |
395 | 18 |
-- Since we only want to check the first block of data, remove the filter |
19 |
filters.remove_filter(session, "bytes/in", filter_policy); |
|
20 |
if data == "<policy-file-request/>\0" then |
|
21 |
session.send(string.."\0"); |
|
22 |
return nil; -- Drop data to prevent it reaching the XMPP parser |
|
23 |
else |
|
24 |
return data; -- Pass data through, it wasn't a policy request |
|
25 |
end |
|
26 |
||
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
27 |
end |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
28 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
29 |
function filter_session(session) |
395 | 30 |
if session.type == "c2s_unauthed" then |
31 |
filters.add_filter(session, "bytes/in", filter_policy, -1); |
|
32 |
end |
|
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
33 |
end |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
34 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
35 |
function module.load() |
395 | 36 |
filters.add_filter_hook(filter_session); |
394
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
37 |
end |
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
38 |
|
4219f69be1cf
Let session.send() actually send the config string
leonbogaert@gmail.com
parents:
379
diff
changeset
|
39 |
function module.unload() |
395 | 40 |
filters.remove_filter_hook(filter_session); |
379 | 41 |
end |