Thu, 08 Jul 2010 23:56:53 +0100
prosodyctl: Force log output always to the console instead of using the config, which avoids creating log files as the wrong user
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
1099
diff
changeset
|
1 | -- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
2 | -- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
3 | -- Copyright (C) 2008-2010 Waqas Hussain |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
471
diff
changeset
|
4 | -- |
758 | 5 | -- This project is MIT/X11 licensed. Please see the |
6 | -- COPYING file in the source package for more information. | |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
471
diff
changeset
|
7 | -- |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
471
diff
changeset
|
8 | |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
471
diff
changeset
|
9 | |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | |
471
727d7bd97cd2
Fix for loading connlisteners when running without CFG_SOURCEDIR
Matthew Wild <mwild1@gmail.com>
parents:
467
diff
changeset
|
11 | local listeners_dir = (CFG_SOURCEDIR or ".").."/net/"; |
658
1952fdcf1017
Fix specifying ports in config, and SSL support
Matthew Wild <mwild1@gmail.com>
parents:
624
diff
changeset
|
12 | local server = require "net.server"; |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 | local log = require "util.logger".init("connlisteners"); |
2036
0f9c121713e1
connlisteners: Localize tostring, fixes possible traceback when LuaSec not installed
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
14 | local tostring = tostring; |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 | |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | local dofile, pcall, error = |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | dofile, pcall, error |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | module "connlisteners" |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | local listeners = {}; |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | function register(name, listener) |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | if listeners[name] and listeners[name] ~= listener then |
1099
127e6ae089f8
net.connlisteners: Lower log level of multiple listeners warning (not interesting to end-users)
Matthew Wild <mwild1@gmail.com>
parents:
908
diff
changeset
|
25 | log("debug", "Listener %s is already registered, not registering any more", name); |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | return false; |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | end |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | listeners[name] = listener; |
1099
127e6ae089f8
net.connlisteners: Lower log level of multiple listeners warning (not interesting to end-users)
Matthew Wild <mwild1@gmail.com>
parents:
908
diff
changeset
|
29 | log("debug", "Registered connection listener %s", name); |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 | return true; |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 | end |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 | |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 | function deregister(name) |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 | listeners[name] = nil; |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 | end |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 | |
127 | 37 | function get(name) |
38 | local h = listeners[name]; | |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 | if not h then |
624
04fe1a00aa16
Protect loading of connlisteners, to catch errors
Matthew Wild <mwild1@gmail.com>
parents:
615
diff
changeset
|
40 | local ok, ret = pcall(dofile, listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua"); |
2076
de2ae849b0b3
net.connlisteners: Log an error when a listener fails to load.
Waqas Hussain <waqas20@gmail.com>
parents:
2036
diff
changeset
|
41 | if not ok then |
de2ae849b0b3
net.connlisteners: Log an error when a listener fails to load.
Waqas Hussain <waqas20@gmail.com>
parents:
2036
diff
changeset
|
42 | log("error", "Error while loading listener '%s': %s", tostring(name), tostring(ret)); |
de2ae849b0b3
net.connlisteners: Log an error when a listener fails to load.
Waqas Hussain <waqas20@gmail.com>
parents:
2036
diff
changeset
|
43 | return nil, ret; |
de2ae849b0b3
net.connlisteners: Log an error when a listener fails to load.
Waqas Hussain <waqas20@gmail.com>
parents:
2036
diff
changeset
|
44 | end |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 | h = listeners[name]; |
127 | 46 | end |
47 | return h; | |
48 | end | |
49 | ||
50 | function start(name, udata) | |
721
51233a8ae3d4
net.connlisteners: Fix to report errors loading connlisteners
Matthew Wild <mwild1@gmail.com>
parents:
661
diff
changeset
|
51 | local h, err = get(name); |
127 | 52 | if not h then |
721
51233a8ae3d4
net.connlisteners: Fix to report errors loading connlisteners
Matthew Wild <mwild1@gmail.com>
parents:
661
diff
changeset
|
53 | error("No such connection module: "..name.. (err and (" ("..err..")") or ""), 0); |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 | end |
658
1952fdcf1017
Fix specifying ports in config, and SSL support
Matthew Wild <mwild1@gmail.com>
parents:
624
diff
changeset
|
55 | |
2101
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
56 | local interface = (udata and udata.interface) or h.default_interface or "*"; |
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
57 | local port = (udata and udata.port) or h.default_port or error("Can't start listener "..name.." because no port was specified, and it has no default port", 0); |
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
58 | local mode = (udata and udata.mode) or h.default_mode or 1; |
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
59 | local ssl = (udata and udata.ssl) or nil; |
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
60 | local autossl = udata and udata.type == "ssl"; |
466bd2cac62a
net.connlisteners: Standardise on new syntax for addserver(), and clean up a bit
Matthew Wild <mwild1@gmail.com>
parents:
2076
diff
changeset
|
61 | |
2551
5f15f21014c4
net.connlisteners: Return an error if no SSL context is supplied for a connection of type 'ssl'
Matthew Wild <mwild1@gmail.com>
parents:
2547
diff
changeset
|
62 | if autossl and not ssl then |
5f15f21014c4
net.connlisteners: Return an error if no SSL context is supplied for a connection of type 'ssl'
Matthew Wild <mwild1@gmail.com>
parents:
2547
diff
changeset
|
63 | return nil, "no ssl context"; |
739
1def06cd9311
Port to new server.lua, quite some changes, but I believe everything to be working
Matthew Wild <mwild1@gmail.com>
parents:
721
diff
changeset
|
64 | end |
658
1952fdcf1017
Fix specifying ports in config, and SSL support
Matthew Wild <mwild1@gmail.com>
parents:
624
diff
changeset
|
65 | |
2546
cadfb455a00c
net.connlisteners: Update for new server API, type == 'tls' now means little - all connections support TLS
Matthew Wild <mwild1@gmail.com>
parents:
2101
diff
changeset
|
66 | return server.addserver(interface, port, h, mode, autossl and ssl or nil); |
99
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 | end |
ba08b8a4eeef
Abstract connections with "connection listeners"
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 | |
467
66f145f5c932
Update Makefile to now pass config paths to prosody. Update prosody, modulemanager and connectionlisteners to obey these paths.
Matthew Wild <mwild1@gmail.com>
parents:
380
diff
changeset
|
69 | return _M; |