author | Kim Alvefur <zash@zash.se> |
Thu, 02 Jan 2020 10:49:37 +0100 | |
branch | 0.11 |
changeset 10585 | 10d6d0d91f4e |
parent 9976 | 240d3f1f7dee |
child 9979 | ca01c449357f |
permissions | -rw-r--r-- |
4741
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
1 |
local config = require "core.configmanager"; |
4856
3e3e282f20a3
portmanager: Support for per-port SSL certificates
Matthew Wild <mwild1@gmail.com>
parents:
4809
diff
changeset
|
2 |
local certmanager = require "core.certmanager"; |
4741
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
3 |
local server = require "net.server"; |
5391
0d49a4e9963b
portmanager: use_ipv6 defaults to true if luasocket has ipv6 support
Kim Alvefur <zash@zash.se>
parents:
5319
diff
changeset
|
4 |
local socket = require "socket"; |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
|
4741
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
6 |
local log = require "util.logger".init("portmanager"); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
local multitable = require "util.multitable"; |
4741
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
8 |
local set = require "util.set"; |
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
9 |
|
4857
0991a127ac43
portmanager: Remove unused import of 'package'
Matthew Wild <mwild1@gmail.com>
parents:
4856
diff
changeset
|
10 |
local table = table; |
4744
3be37768720d
portmanager: Fix breakage (import ALL the functions)
Matthew Wild <mwild1@gmail.com>
parents:
4743
diff
changeset
|
11 |
local setmetatable, rawset, rawget = setmetatable, rawset, rawget; |
6552
46d7ede2e037
portmanager: Remove unused import of pairs()
Matthew Wild <mwild1@gmail.com>
parents:
6295
diff
changeset
|
12 |
local type, tonumber, tostring, ipairs = type, tonumber, tostring, ipairs; |
4744
3be37768720d
portmanager: Fix breakage (import ALL the functions)
Matthew Wild <mwild1@gmail.com>
parents:
4743
diff
changeset
|
13 |
|
4741
0653476ac3a3
portmanager: Explicitly import some libraries
Matthew Wild <mwild1@gmail.com>
parents:
4687
diff
changeset
|
14 |
local prosody = prosody; |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
local fire_event = prosody.events.fire_event; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
17 |
local _ENV = nil; |
8558
4f0f5b49bb03
vairious: Add annotation when an empty environment is set [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7950
diff
changeset
|
18 |
-- luacheck: std none |
4742
23c2ece2c8bc
portmanager: Add module() definition
Matthew Wild <mwild1@gmail.com>
parents:
4741
diff
changeset
|
19 |
|
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 |
--- Config |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 |
|
5392
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
22 |
local default_interfaces = { }; |
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
23 |
local default_local_interfaces = { }; |
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
24 |
if config.get("*", "use_ipv4") ~= false then |
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
25 |
table.insert(default_interfaces, "*"); |
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
26 |
table.insert(default_local_interfaces, "127.0.0.1"); |
613959dbd0b2
portmanager: Add use_ipv4 option, default to true.
Kim Alvefur <zash@zash.se>
parents:
5391
diff
changeset
|
27 |
end |
5391
0d49a4e9963b
portmanager: use_ipv6 defaults to true if luasocket has ipv6 support
Kim Alvefur <zash@zash.se>
parents:
5319
diff
changeset
|
28 |
if socket.tcp6 and config.get("*", "use_ipv6") ~= false then |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 |
table.insert(default_interfaces, "::"); |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 |
table.insert(default_local_interfaces, "::1"); |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 |
|
7424
d6f12056afda
portmanager: Set default read size back to 4K
Kim Alvefur <zash@zash.se>
parents:
7081
diff
changeset
|
33 |
local default_mode = config.get("*", "network_default_read_size") or 4096; |
6041
a97591d2e1ad
portmanager: Make maximum read size configurable, and default to 4KB
Matthew Wild <mwild1@gmail.com>
parents:
5550
diff
changeset
|
34 |
|
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 |
--- Private state |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 |
|
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
37 |
-- service_name -> { service_info, ... } |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
38 |
local services = setmetatable({}, { __index = function (t, k) rawset(t, k, {}); return rawget(t, k); end }); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 |
|
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 |
-- service_name, interface (string), port (number) |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 |
local active_services = multitable.new(); |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 |
|
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 |
--- Private helpers |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 |
|
6666
d3023dd07cb6
portmanager, s2smanager, sessionmanager, stanza_router, storagemanager, usermanager, util.xml: Add luacheck annotations
Matthew Wild <mwild1@gmail.com>
parents:
6552
diff
changeset
|
45 |
local function error_to_friendly_message(service_name, port, err) --luacheck: ignore 212/service_name |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 |
local friendly_message = err; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 |
if err:match(" in use") then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 |
-- FIXME: Use service_name here |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 |
if port == 5222 or port == 5223 or port == 5269 then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 |
friendly_message = "check that Prosody or another XMPP server is " |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 |
.."not already running and using this port"; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 |
elseif port == 80 or port == 81 then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 |
friendly_message = "check that a HTTP server is not already using " |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 |
.."this port"; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 |
elseif port == 5280 then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 |
friendly_message = "check that Prosody or a BOSH connection manager " |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 |
.."is not already running"; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 |
else |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 |
friendly_message = "this port is in use by another application"; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 |
elseif err:match("permission") then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 |
friendly_message = "Prosody does not have sufficient privileges to use this port"; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 |
return friendly_message; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 |
|
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 |
--- Public API |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
69 |
local function activate(service_name) |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
70 |
local service_info = services[service_name][1]; |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 |
if not service_info then |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 |
return nil, "Unknown service: "..service_name; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 |
end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5550
diff
changeset
|
74 |
|
4616
03d9fe1bcdd3
portmanager: Fix pre-0.9 compatibility by taking default_interface and default_port from the listener instead of service table
Matthew Wild <mwild1@gmail.com>
parents:
4615
diff
changeset
|
75 |
local listener = service_info.listener; |
03d9fe1bcdd3
portmanager: Fix pre-0.9 compatibility by taking default_interface and default_port from the listener instead of service table
Matthew Wild <mwild1@gmail.com>
parents:
4615
diff
changeset
|
76 |
|
4615
29a9988c1e1b
portmanager: Allow services to specify their config option prefix
Matthew Wild <mwild1@gmail.com>
parents:
4612
diff
changeset
|
77 |
local config_prefix = (service_info.config_prefix or service_name).."_"; |
29a9988c1e1b
portmanager: Allow services to specify their config option prefix
Matthew Wild <mwild1@gmail.com>
parents:
4612
diff
changeset
|
78 |
if config_prefix == "_" then |
29a9988c1e1b
portmanager: Allow services to specify their config option prefix
Matthew Wild <mwild1@gmail.com>
parents:
4612
diff
changeset
|
79 |
config_prefix = ""; |
29a9988c1e1b
portmanager: Allow services to specify their config option prefix
Matthew Wild <mwild1@gmail.com>
parents:
4612
diff
changeset
|
80 |
end |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 |
|
4687
bd3a852b949a
portmanager: Fix selecting bind_interfaces from pre-0.9 config options.
Kim Alvefur <zash@zash.se>
parents:
4677
diff
changeset
|
82 |
local bind_interfaces = config.get("*", config_prefix.."interfaces") |
4615
29a9988c1e1b
portmanager: Allow services to specify their config option prefix
Matthew Wild <mwild1@gmail.com>
parents:
4612
diff
changeset
|
83 |
or config.get("*", config_prefix.."interface") -- COMPAT w/pre-0.9 |
5087
71a5a6a6c74c
portmanager: Support 'local_interfaces' config option (default for private listeners like components, telnet, etc.) (thanks mva)
Matthew Wild <mwild1@gmail.com>
parents:
5047
diff
changeset
|
84 |
or (service_info.private and (config.get("*", "local_interfaces") or default_local_interfaces)) |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 |
or config.get("*", "interfaces") |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 |
or config.get("*", "interface") -- COMPAT w/pre-0.9 |
4616
03d9fe1bcdd3
portmanager: Fix pre-0.9 compatibility by taking default_interface and default_port from the listener instead of service table
Matthew Wild <mwild1@gmail.com>
parents:
4615
diff
changeset
|
87 |
or listener.default_interface -- COMPAT w/pre0.9 |
4687
bd3a852b949a
portmanager: Fix selecting bind_interfaces from pre-0.9 config options.
Kim Alvefur <zash@zash.se>
parents:
4677
diff
changeset
|
88 |
or default_interfaces |
bd3a852b949a
portmanager: Fix selecting bind_interfaces from pre-0.9 config options.
Kim Alvefur <zash@zash.se>
parents:
4677
diff
changeset
|
89 |
bind_interfaces = set.new(type(bind_interfaces)~="table" and {bind_interfaces} or bind_interfaces); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5550
diff
changeset
|
90 |
|
5319
d20861bf900b
portmanager: Make sure foo_ports is a table
Kim Alvefur <zash@zash.se>
parents:
5225
diff
changeset
|
91 |
local bind_ports = config.get("*", config_prefix.."ports") |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 |
or service_info.default_ports |
4624
3e4715d44561
portmanager: Support 'default_port' in service options
Matthew Wild <mwild1@gmail.com>
parents:
4618
diff
changeset
|
93 |
or {service_info.default_port |
3e4715d44561
portmanager: Support 'default_port' in service options
Matthew Wild <mwild1@gmail.com>
parents:
4618
diff
changeset
|
94 |
or listener.default_port -- COMPAT w/pre-0.9 |
5319
d20861bf900b
portmanager: Make sure foo_ports is a table
Kim Alvefur <zash@zash.se>
parents:
5225
diff
changeset
|
95 |
} |
d20861bf900b
portmanager: Make sure foo_ports is a table
Kim Alvefur <zash@zash.se>
parents:
5225
diff
changeset
|
96 |
bind_ports = set.new(type(bind_ports) ~= "table" and { bind_ports } or bind_ports ); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 |
|
6041
a97591d2e1ad
portmanager: Make maximum read size configurable, and default to 4KB
Matthew Wild <mwild1@gmail.com>
parents:
5550
diff
changeset
|
98 |
local mode, ssl = listener.default_mode or default_mode; |
5549
cce17bcb7c94
portmanager: Include port numbers the service is listening on in the info logs.
Waqas Hussain <waqas20@gmail.com>
parents:
5432
diff
changeset
|
99 |
local hooked_ports = {}; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5550
diff
changeset
|
100 |
|
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 |
for interface in bind_interfaces do |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 |
for port in bind_ports do |
5399
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
103 |
local port_number = tonumber(port); |
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
104 |
if not port_number then |
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
105 |
log("error", "Invalid port number specified for service '%s': %s", service_info.name, tostring(port)); |
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
106 |
elseif #active_services:search(nil, interface, port_number) > 0 then |
7950
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
107 |
log("error", "Multiple services configured to listen on the same port ([%s]:%d): %s, %s", interface, port, |
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
108 |
active_services:search(nil, interface, port)[1][1].service.name or "<unnamed>", service_name or "<unnamed>"); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 |
else |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
110 |
local err; |
4856
3e3e282f20a3
portmanager: Support for per-port SSL certificates
Matthew Wild <mwild1@gmail.com>
parents:
4809
diff
changeset
|
111 |
-- Create SSL context for this service/port |
3e3e282f20a3
portmanager: Support for per-port SSL certificates
Matthew Wild <mwild1@gmail.com>
parents:
4809
diff
changeset
|
112 |
if service_info.encryption == "ssl" then |
6295
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
113 |
local global_ssl_config = config.get("*", "ssl") or {}; |
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
114 |
local prefix_ssl_config = config.get("*", config_prefix.."ssl") or global_ssl_config; |
9976
240d3f1f7dee
core.portmanager: Log debug message for each kind of TLS context created
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
115 |
log("debug", "Creating context for direct TLS service %s on port %d", service_info.name, port); |
6295
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
116 |
ssl, err = certmanager.create_context(service_info.name.." port "..port, "server", |
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
117 |
prefix_ssl_config[interface], |
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
118 |
prefix_ssl_config[port], |
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
119 |
prefix_ssl_config, |
6983
daaa52b3f45f
portmanager: Lower the priority of module-supplied TLS options
Kim Alvefur <zash@zash.se>
parents:
6791
diff
changeset
|
120 |
service_info.ssl_config or {}, |
6295
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
121 |
global_ssl_config[interface], |
cb12ff49503d
core.portmanager: Simplify and take advantage of new ssl config merging in certmanager
Kim Alvefur <zash@zash.se>
parents:
6054
diff
changeset
|
122 |
global_ssl_config[port]); |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
123 |
if not ssl then |
7950
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
124 |
log("error", "Error binding encrypted port for %s: %s", service_info.name, |
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
125 |
error_to_friendly_message(service_name, port_number, err) or "unknown error"); |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
126 |
end |
4856
3e3e282f20a3
portmanager: Support for per-port SSL certificates
Matthew Wild <mwild1@gmail.com>
parents:
4809
diff
changeset
|
127 |
end |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
128 |
if not err then |
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
129 |
-- Start listening on interface+port |
5399
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
130 |
local handler, err = server.addserver(interface, port_number, listener, mode, ssl); |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
131 |
if not handler then |
7950
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
132 |
log("error", "Failed to open server port %d on %s, %s", port_number, interface, |
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
133 |
error_to_friendly_message(service_name, port_number, err)); |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
134 |
else |
5550
557583904dc5
portmanager: Also include the interface the service is listening on
Kim Alvefur <zash@zash.se>
parents:
5549
diff
changeset
|
135 |
table.insert(hooked_ports, "["..interface.."]:"..port_number); |
5399
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
136 |
log("debug", "Added listening service %s to [%s]:%d", service_name, interface, port_number); |
13454b2b86bf
portmanager: Log error and fail to bind when port is invalid (not a number)
Matthew Wild <mwild1@gmail.com>
parents:
5392
diff
changeset
|
137 |
active_services:add(service_name, interface, port_number, { |
5009
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
138 |
server = handler; |
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
139 |
service = service_info; |
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
140 |
}); |
b27ba2c83dd4
portmanager: Show a friendly error message when initializing SSL fails (thanks MattJ for the entire patch that I fixed one line in)
Kim Alvefur <zash@zash.se>
parents:
4902
diff
changeset
|
141 |
end |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 |
end |
7950
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
146 |
log("info", "Activated service '%s' on %s", service_name, |
24170d74b00b
core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7424
diff
changeset
|
147 |
#hooked_ports == 0 and "no ports" or table.concat(hooked_ports, ", ")); |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
148 |
return true; |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
149 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
150 |
|
6791
d64c1f3c7e2e
portmanager: Add forward declarations
Kim Alvefur <zash@zash.se>
parents:
6782
diff
changeset
|
151 |
local close; -- forward declaration |
d64c1f3c7e2e
portmanager: Add forward declarations
Kim Alvefur <zash@zash.se>
parents:
6782
diff
changeset
|
152 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
153 |
local function deactivate(service_name, service_info) |
6689
c5b512cddda0
portmanager: Add luacheck annotations
Matthew Wild <mwild1@gmail.com>
parents:
6666
diff
changeset
|
154 |
for name, interface, port, n, active_service --luacheck: ignore 213/name 213/n |
4902
a7c799a7a34b
portmanager: Match service against service_info (:iter() doesn't match values)
Matthew Wild <mwild1@gmail.com>
parents:
4897
diff
changeset
|
155 |
in active_services:iter(service_name or service_info and service_info.name, nil, nil, nil) do |
a7c799a7a34b
portmanager: Match service against service_info (:iter() doesn't match values)
Matthew Wild <mwild1@gmail.com>
parents:
4897
diff
changeset
|
156 |
if service_info == nil or active_service.service == service_info then |
a7c799a7a34b
portmanager: Match service against service_info (:iter() doesn't match values)
Matthew Wild <mwild1@gmail.com>
parents:
4897
diff
changeset
|
157 |
close(interface, port); |
a7c799a7a34b
portmanager: Match service against service_info (:iter() doesn't match values)
Matthew Wild <mwild1@gmail.com>
parents:
4897
diff
changeset
|
158 |
end |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 |
end |
4897
1a90e5225b22
portmanager: Fix to deactivate services when they are unregistered (metatable:iter() wins)
Matthew Wild <mwild1@gmail.com>
parents:
4861
diff
changeset
|
160 |
log("info", "Deactivated service '%s'", service_name or service_info.name); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
163 |
local function register_service(service_name, service_info) |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
164 |
table.insert(services[service_name], service_info); |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
165 |
|
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
166 |
if not active_services:get(service_name) then |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
167 |
log("debug", "No active service for %s, activating...", service_name); |
4743
70d68e789d93
portmanager: Rename activate_service() to activate() (to match deactivate())
Matthew Wild <mwild1@gmail.com>
parents:
4742
diff
changeset
|
168 |
local ok, err = activate(service_name); |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
169 |
if not ok then |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
170 |
log("error", "Failed to activate service '%s': %s", service_name, err or "unknown error"); |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
171 |
end |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
172 |
end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5550
diff
changeset
|
173 |
|
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
174 |
fire_event("service-added", { name = service_name, service = service_info }); |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
175 |
return true; |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
176 |
end |
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
177 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
178 |
local function unregister_service(service_name, service_info) |
4897
1a90e5225b22
portmanager: Fix to deactivate services when they are unregistered (metatable:iter() wins)
Matthew Wild <mwild1@gmail.com>
parents:
4861
diff
changeset
|
179 |
log("debug", "Unregistering service: %s", service_name); |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
180 |
local service_info_list = services[service_name]; |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
181 |
for i, service in ipairs(service_info_list) do |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
182 |
if service == service_info then |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
183 |
table.remove(service_info_list, i); |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
184 |
end |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
185 |
end |
4897
1a90e5225b22
portmanager: Fix to deactivate services when they are unregistered (metatable:iter() wins)
Matthew Wild <mwild1@gmail.com>
parents:
4861
diff
changeset
|
186 |
deactivate(nil, service_info); |
1a90e5225b22
portmanager: Fix to deactivate services when they are unregistered (metatable:iter() wins)
Matthew Wild <mwild1@gmail.com>
parents:
4861
diff
changeset
|
187 |
if #service_info_list > 0 then -- Other services registered with this name |
1a90e5225b22
portmanager: Fix to deactivate services when they are unregistered (metatable:iter() wins)
Matthew Wild <mwild1@gmail.com>
parents:
4861
diff
changeset
|
188 |
activate(service_name); -- Re-activate with the next available one |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
189 |
end |
4612
8bb93860fe46
portmanager: Fire service-removed on unregister
Matthew Wild <mwild1@gmail.com>
parents:
4609
diff
changeset
|
190 |
fire_event("service-removed", { name = service_name, service = service_info }); |
4607
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
191 |
end |
7f45b2cb3c03
portmanager: Add unregister_service(), and allow multiple services with the same name (they get queued)
Matthew Wild <mwild1@gmail.com>
parents:
4598
diff
changeset
|
192 |
|
6791
d64c1f3c7e2e
portmanager: Add forward declarations
Kim Alvefur <zash@zash.se>
parents:
6782
diff
changeset
|
193 |
local get_service_at -- forward declaration |
d64c1f3c7e2e
portmanager: Add forward declarations
Kim Alvefur <zash@zash.se>
parents:
6782
diff
changeset
|
194 |
|
4677
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
195 |
function close(interface, port) |
6690
d1ee04683689
portmanager: Rename variable to avoid name conflict [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
6689
diff
changeset
|
196 |
local service, service_server = get_service_at(interface, port); |
4677
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
197 |
if not service then |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
198 |
return false, "port-not-open"; |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
199 |
end |
6690
d1ee04683689
portmanager: Rename variable to avoid name conflict [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
6689
diff
changeset
|
200 |
service_server:close(); |
4677
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
201 |
active_services:remove(service.name, interface, port); |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
202 |
log("debug", "Removed listening service %s from [%s]:%d", service.name, interface, port); |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
203 |
return true; |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
204 |
end |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
205 |
|
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
206 |
function get_service_at(interface, port) |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
207 |
local data = active_services:search(nil, interface, port)[1][1]; |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
208 |
return data.service, data.server; |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
209 |
end |
05d8b4099cf5
portmanager: Add get_service_at(interface, port) and close(interface, port)
Matthew Wild <mwild1@gmail.com>
parents:
4624
diff
changeset
|
210 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
211 |
local function get_service(service_name) |
5225
079e4cb23f89
portmanager: Return first service with the specified name from get_service() (instead of the array of possible services) (thanks xnyhps)
Matthew Wild <mwild1@gmail.com>
parents:
5087
diff
changeset
|
212 |
return (services[service_name] or {})[1]; |
4597
25d89c7d6aee
portmanager: Add get_service()
Matthew Wild <mwild1@gmail.com>
parents:
4583
diff
changeset
|
213 |
end |
4542
50aca1e0bfbd
portmanager: One manager to, in the darkness, bind them
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
214 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
215 |
local function get_active_services() |
4598
d2bcb959d713
portmanager: Add get_active_services()
Matthew Wild <mwild1@gmail.com>
parents:
4597
diff
changeset
|
216 |
return active_services; |
d2bcb959d713
portmanager: Add get_active_services()
Matthew Wild <mwild1@gmail.com>
parents:
4597
diff
changeset
|
217 |
end |
d2bcb959d713
portmanager: Add get_active_services()
Matthew Wild <mwild1@gmail.com>
parents:
4597
diff
changeset
|
218 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
219 |
local function get_registered_services() |
4618
1ec8122ddffe
portmanager: Add get_registered_services() to the public API
Matthew Wild <mwild1@gmail.com>
parents:
4617
diff
changeset
|
220 |
return services; |
1ec8122ddffe
portmanager: Add get_registered_services() to the public API
Matthew Wild <mwild1@gmail.com>
parents:
4617
diff
changeset
|
221 |
end |
1ec8122ddffe
portmanager: Add get_registered_services() to the public API
Matthew Wild <mwild1@gmail.com>
parents:
4617
diff
changeset
|
222 |
|
6782
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
223 |
-- Event handlers |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
224 |
|
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
225 |
prosody.events.add_handler("item-added/net-provider", function (event) |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
226 |
local item = event.item; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
227 |
register_service(item.name, item); |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
228 |
end); |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
229 |
prosody.events.add_handler("item-removed/net-provider", function (event) |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
230 |
local item = event.item; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
231 |
unregister_service(item.name, item); |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
232 |
end); |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
233 |
|
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
234 |
return { |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
235 |
activate = activate; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
236 |
deactivate = deactivate; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
237 |
register_service = register_service; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
238 |
unregister_service = unregister_service; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
239 |
close = close; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
240 |
get_service_at = get_service_at; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
241 |
get_service = get_service; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
242 |
get_active_services = get_active_services; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
243 |
get_registered_services = get_registered_services; |
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6691
diff
changeset
|
244 |
}; |