author | Matthew Wild <mwild1@gmail.com> |
Fri, 07 Oct 2022 18:04:30 +0100 | |
changeset 12756 | 9ef8f248635c |
parent 12301 | 249eb306f668 |
child 12981 | 74b9e05af71e |
permissions | -rw-r--r-- |
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1238
diff
changeset
|
1 |
-- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2795
diff
changeset
|
2 |
-- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2795
diff
changeset
|
3 |
-- Copyright (C) 2008-2010 Waqas Hussain |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5452
diff
changeset
|
4 |
-- |
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1238
diff
changeset
|
5 |
-- This project is MIT/X11 licensed. Please see the |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1238
diff
changeset
|
6 |
-- COPYING file in the source package for more information. |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1238
diff
changeset
|
7 |
-- |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1238
diff
changeset
|
8 |
|
728
fa45dfb27ee5
mod_posix: Check version of pposix
Matthew Wild <mwild1@gmail.com>
parents:
723
diff
changeset
|
9 |
|
8015 | 10 |
local want_pposix_version = "0.4.0"; |
587 | 11 |
|
12 |
local pposix = assert(require "util.pposix"); |
|
5452
edf3db386a19
mod_posix: Improve error message for a pposix version mismatch
Matthew Wild <mwild1@gmail.com>
parents:
5451
diff
changeset
|
13 |
if pposix._VERSION ~= want_pposix_version then |
8169
bbedf564b9f9
mod_posix: Split long line [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8119
diff
changeset
|
14 |
module:log("warn", "Unknown version (%s) of binary pposix module, expected %s." |
bbedf564b9f9
mod_posix: Split long line [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8119
diff
changeset
|
15 |
.. "Perhaps you need to recompile?", tostring(pposix._VERSION), want_pposix_version); |
5452
edf3db386a19
mod_posix: Improve error message for a pposix version mismatch
Matthew Wild <mwild1@gmail.com>
parents:
5451
diff
changeset
|
16 |
end |
587 | 17 |
|
6878
12d68f7b1be0
mod_posix: Detect failure to load util.signal by first pcall return value not by type of the second
Kim Alvefur <zash@zash.se>
parents:
6877
diff
changeset
|
18 |
local have_signal, signal = pcall(require, "util.signal"); |
12d68f7b1be0
mod_posix: Detect failure to load util.signal by first pcall return value not by type of the second
Kim Alvefur <zash@zash.se>
parents:
6877
diff
changeset
|
19 |
if not have_signal then |
1062
f9a1ac50782b
mod_posix: Fix calls to log() (replace with module:log) and make some global accesses explicit
Matthew Wild <mwild1@gmail.com>
parents:
1061
diff
changeset
|
20 |
module:log("warn", "Couldn't load signal library, won't respond to SIGTERM"); |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
21 |
end |
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
22 |
|
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
23 |
local lfs = require "lfs"; |
2795
d6fcd13c07e7
mod_posix: Adjust file open mode depending on whether file exists (take that fopen designers!!!)
Matthew Wild <mwild1@gmail.com>
parents:
2793
diff
changeset
|
24 |
local stat = lfs.attributes; |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
25 |
|
1238
f4c08caca3e7
mod_posix: Use global prosody object
Matthew Wild <mwild1@gmail.com>
parents:
1119
diff
changeset
|
26 |
local prosody = _G.prosody; |
f4c08caca3e7
mod_posix: Use global prosody object
Matthew Wild <mwild1@gmail.com>
parents:
1119
diff
changeset
|
27 |
|
4623
403b56b78018
mod_posix, mod_bosh, mod_admin_telnet: Use module:set_global()
Kim Alvefur <zash@zash.se>
parents:
3555
diff
changeset
|
28 |
module:set_global(); -- we're a global module |
587 | 29 |
|
7734
a0ee83c4a82c
mod_posix: Use type-specific config API
Kim Alvefur <zash@zash.se>
parents:
6878
diff
changeset
|
30 |
local umask = module:get_option_string("umask", "027"); |
2440
11e3d16a128f
mod_posix: Set umask to 'umask' from the config, or 027
Matthew Wild <mwild1@gmail.com>
parents:
2438
diff
changeset
|
31 |
pposix.umask(umask); |
11e3d16a128f
mod_posix: Set umask to 'umask' from the config, or 027
Matthew Wild <mwild1@gmail.com>
parents:
2438
diff
changeset
|
32 |
|
1092
b547967d87fc
mod_posix: Don't let the server run as root without the magic run_as_root in config
Matthew Wild <mwild1@gmail.com>
parents:
1062
diff
changeset
|
33 |
-- Don't even think about it! |
3022
948d511f479c
mod_posix: Don't add a server-starting event handler while the server-starting event is being fired.
Waqas Hussain <waqas20@gmail.com>
parents:
2925
diff
changeset
|
34 |
if not prosody.start_time then -- server-starting |
11051
93cdd1ece689
mod_posix: Remove ancient undocumented user switching
Kim Alvefur <zash@zash.se>
parents:
10632
diff
changeset
|
35 |
if pposix.getuid() == 0 and not module:get_option_boolean("run_as_root") then |
93cdd1ece689
mod_posix: Remove ancient undocumented user switching
Kim Alvefur <zash@zash.se>
parents:
10632
diff
changeset
|
36 |
module:log("error", "Danger, Will Robinson! Prosody doesn't need to be run as root, so don't do it!"); |
93cdd1ece689
mod_posix: Remove ancient undocumented user switching
Kim Alvefur <zash@zash.se>
parents:
10632
diff
changeset
|
37 |
module:log("error", "For more information on running Prosody as root, see https://prosody.im/doc/root"); |
11834
7fe2fbfbdb1c
mod_posix: Exit with non-zero status code on problems
Kim Alvefur <zash@zash.se>
parents:
11183
diff
changeset
|
38 |
prosody.shutdown("Refusing to run as root", 1); |
3022
948d511f479c
mod_posix: Don't add a server-starting event handler while the server-starting event is being fired.
Waqas Hussain <waqas20@gmail.com>
parents:
2925
diff
changeset
|
39 |
end |
948d511f479c
mod_posix: Don't add a server-starting event handler while the server-starting event is being fired.
Waqas Hussain <waqas20@gmail.com>
parents:
2925
diff
changeset
|
40 |
end |
1092
b547967d87fc
mod_posix: Don't let the server run as root without the magic run_as_root in config
Matthew Wild <mwild1@gmail.com>
parents:
1062
diff
changeset
|
41 |
|
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
42 |
local pidfile; |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
43 |
local pidfile_handle; |
1032
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
44 |
|
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
45 |
local function remove_pidfile() |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
46 |
if pidfile_handle then |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
47 |
pidfile_handle:close(); |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
48 |
os.remove(pidfile); |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
49 |
pidfile, pidfile_handle = nil, nil; |
1032
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
50 |
end |
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
51 |
end |
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
52 |
|
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
53 |
local function write_pidfile() |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
54 |
if pidfile_handle then |
1032
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
55 |
remove_pidfile(); |
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
56 |
end |
7995
51396e0836cf
mod_posix: Use path variant of config API for pidfile option
Kim Alvefur <zash@zash.se>
parents:
7734
diff
changeset
|
57 |
pidfile = module:get_option_path("pidfile", nil, "data"); |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
58 |
if pidfile then |
3026
dec4527a7499
mod_posix: Fixed a global access.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
59 |
local err; |
2795
d6fcd13c07e7
mod_posix: Adjust file open mode depending on whether file exists (take that fopen designers!!!)
Matthew Wild <mwild1@gmail.com>
parents:
2793
diff
changeset
|
60 |
local mode = stat(pidfile) and "r+" or "w+"; |
d6fcd13c07e7
mod_posix: Adjust file open mode depending on whether file exists (take that fopen designers!!!)
Matthew Wild <mwild1@gmail.com>
parents:
2793
diff
changeset
|
61 |
pidfile_handle, err = io.open(pidfile, mode); |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
62 |
if not pidfile_handle then |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
63 |
module:log("error", "Couldn't write pidfile at %s; %s", pidfile, err); |
11834
7fe2fbfbdb1c
mod_posix: Exit with non-zero status code on problems
Kim Alvefur <zash@zash.se>
parents:
11183
diff
changeset
|
64 |
prosody.shutdown("Couldn't write pidfile", 1); |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
65 |
else |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
66 |
if not lfs.lock(pidfile_handle, "w") then -- Exclusive lock |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
67 |
local other_pid = pidfile_handle:read("*a"); |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
68 |
module:log("error", "Another Prosody instance seems to be running with PID %s, quitting", other_pid); |
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
69 |
pidfile_handle = nil; |
11834
7fe2fbfbdb1c
mod_posix: Exit with non-zero status code on problems
Kim Alvefur <zash@zash.se>
parents:
11183
diff
changeset
|
70 |
prosody.shutdown("Prosody already running", 1); |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
71 |
else |
3341
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
72 |
pidfile_handle:close(); |
3340
0769cc5f34b6
mod_posix: Truncate the pidfile before writing to ensure that we never overwrite with a PID shorter than the previous, and end with an invalid PID in the file.
Brian Cully <bjc@junctionnetworks.com>
parents:
3029
diff
changeset
|
73 |
pidfile_handle, err = io.open(pidfile, "w+"); |
0769cc5f34b6
mod_posix: Truncate the pidfile before writing to ensure that we never overwrite with a PID shorter than the previous, and end with an invalid PID in the file.
Brian Cully <bjc@junctionnetworks.com>
parents:
3029
diff
changeset
|
74 |
if not pidfile_handle then |
0769cc5f34b6
mod_posix: Truncate the pidfile before writing to ensure that we never overwrite with a PID shorter than the previous, and end with an invalid PID in the file.
Brian Cully <bjc@junctionnetworks.com>
parents:
3029
diff
changeset
|
75 |
module:log("error", "Couldn't write pidfile at %s; %s", pidfile, err); |
11834
7fe2fbfbdb1c
mod_posix: Exit with non-zero status code on problems
Kim Alvefur <zash@zash.se>
parents:
11183
diff
changeset
|
76 |
prosody.shutdown("Couldn't write pidfile", 1); |
3341
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
77 |
else |
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
78 |
if lfs.lock(pidfile_handle, "w") then |
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
79 |
pidfile_handle:write(tostring(pposix.getpid())); |
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
80 |
pidfile_handle:flush(); |
a8a3e662fea7
mod_posix: Some (perhaps temporary) changes to re-lock the pidfile after truncating, to avoid breaking prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
3340
diff
changeset
|
81 |
end |
3340
0769cc5f34b6
mod_posix: Truncate the pidfile before writing to ensure that we never overwrite with a PID shorter than the previous, and end with an invalid PID in the file.
Brian Cully <bjc@junctionnetworks.com>
parents:
3029
diff
changeset
|
82 |
end |
2793
08892e3f24bd
mod_posix: Lock pidfile when in use, shut down if we can't write or lock the pidfile
Matthew Wild <mwild1@gmail.com>
parents:
2074
diff
changeset
|
83 |
end |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
84 |
end |
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
85 |
end |
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
86 |
end |
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
87 |
|
10602
5cf481bee678
mod_posix: Support for command-line flags to override 'daemonize' config option
Matthew Wild <mwild1@gmail.com>
parents:
9767
diff
changeset
|
88 |
local daemonize = prosody.opts.daemonize; |
5cf481bee678
mod_posix: Support for command-line flags to override 'daemonize' config option
Matthew Wild <mwild1@gmail.com>
parents:
9767
diff
changeset
|
89 |
|
5cf481bee678
mod_posix: Support for command-line flags to override 'daemonize' config option
Matthew Wild <mwild1@gmail.com>
parents:
9767
diff
changeset
|
90 |
if daemonize == nil then |
5cf481bee678
mod_posix: Support for command-line flags to override 'daemonize' config option
Matthew Wild <mwild1@gmail.com>
parents:
9767
diff
changeset
|
91 |
-- Fall back to config file if not specified on command-line |
10632
25e178edbc2c
mod_posix: Add deprecation warning for the 'daemonize' option
Kim Alvefur <zash@zash.se>
parents:
10603
diff
changeset
|
92 |
daemonize = module:get_option_boolean("daemonize", nil); |
25e178edbc2c
mod_posix: Add deprecation warning for the 'daemonize' option
Kim Alvefur <zash@zash.se>
parents:
10603
diff
changeset
|
93 |
if daemonize ~= nil then |
25e178edbc2c
mod_posix: Add deprecation warning for the 'daemonize' option
Kim Alvefur <zash@zash.se>
parents:
10603
diff
changeset
|
94 |
module:log("warn", "The 'daemonize' option has been deprecated, specify -D or -F on the command line instead."); |
25e178edbc2c
mod_posix: Add deprecation warning for the 'daemonize' option
Kim Alvefur <zash@zash.se>
parents:
10603
diff
changeset
|
95 |
-- TODO: Write some docs and include a link in the warning. |
25e178edbc2c
mod_posix: Add deprecation warning for the 'daemonize' option
Kim Alvefur <zash@zash.se>
parents:
10603
diff
changeset
|
96 |
end |
10602
5cf481bee678
mod_posix: Support for command-line flags to override 'daemonize' config option
Matthew Wild <mwild1@gmail.com>
parents:
9767
diff
changeset
|
97 |
end |
2073
72784ce0c0e0
mod_posix: Switch config option to 'daemonize', fall back to 'no_daemonize' if not set, default behaviour remains the same... daemonize if mod_posix is loaded
Matthew Wild <mwild1@gmail.com>
parents:
1712
diff
changeset
|
98 |
|
5175
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
99 |
local function remove_log_sinks() |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
100 |
local lm = require "core.loggingmanager"; |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
101 |
lm.register_sink_type("console", nil); |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
102 |
lm.register_sink_type("stdout", nil); |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
103 |
lm.reload_logging(); |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
104 |
end |
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
105 |
|
2073
72784ce0c0e0
mod_posix: Switch config option to 'daemonize', fall back to 'no_daemonize' if not set, default behaviour remains the same... daemonize if mod_posix is loaded
Matthew Wild <mwild1@gmail.com>
parents:
1712
diff
changeset
|
106 |
if daemonize then |
587 | 107 |
local function daemonize_server() |
5177
add9ad38208e
mod_posix: Log a message explaining that we are detaching from the console
Kim Alvefur <zash@zash.se>
parents:
5175
diff
changeset
|
108 |
module:log("info", "Prosody is about to detach from the console, disabling further console output"); |
5175
fabaed7418a6
mod_posix: Remove console and stdout logging sinks before daemonizing
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
109 |
remove_log_sinks(); |
587 | 110 |
local ok, ret = pposix.daemonize(); |
111 |
if not ok then |
|
1062
f9a1ac50782b
mod_posix: Fix calls to log() (replace with module:log) and make some global accesses explicit
Matthew Wild <mwild1@gmail.com>
parents:
1061
diff
changeset
|
112 |
module:log("error", "Failed to daemonize: %s", ret); |
587 | 113 |
elseif ret and ret > 0 then |
114 |
os.exit(0); |
|
115 |
else |
|
1062
f9a1ac50782b
mod_posix: Fix calls to log() (replace with module:log) and make some global accesses explicit
Matthew Wild <mwild1@gmail.com>
parents:
1061
diff
changeset
|
116 |
module:log("info", "Successfully daemonized to PID %d", pposix.getpid()); |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
117 |
write_pidfile(); |
587 | 118 |
end |
119 |
end |
|
11066 | 120 |
module:hook("server-started", daemonize_server) |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
121 |
else |
1032
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
122 |
-- Not going to daemonize, so write the pid of this process |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
123 |
write_pidfile(); |
587 | 124 |
end |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
125 |
|
3537
7bbb19804d82
mod_posix: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents:
3481
diff
changeset
|
126 |
module:hook("server-stopped", remove_pidfile); |
1032
409f22d0430f
mod_posix: Remove pidfile on exit
Matthew Wild <mwild1@gmail.com>
parents:
991
diff
changeset
|
127 |
|
1118
239d4362a040
mod_posix: Reload the config and reopen log files on SIGHUP
Matthew Wild <mwild1@gmail.com>
parents:
1092
diff
changeset
|
128 |
-- Set signal handlers |
6878
12d68f7b1be0
mod_posix: Detect failure to load util.signal by first pcall return value not by type of the second
Kim Alvefur <zash@zash.se>
parents:
6877
diff
changeset
|
129 |
if have_signal then |
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
130 |
module:add_timer(0, function () |
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
131 |
signal.signal("SIGTERM", function () |
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
132 |
module:log("warn", "Received SIGTERM"); |
12301
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
133 |
prosody.main_thread:run(function () |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
134 |
prosody.unlock_globals(); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
135 |
prosody.shutdown("Received SIGTERM"); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
136 |
prosody.lock_globals(); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
137 |
end); |
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
138 |
end); |
1118
239d4362a040
mod_posix: Reload the config and reopen log files on SIGHUP
Matthew Wild <mwild1@gmail.com>
parents:
1092
diff
changeset
|
139 |
|
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
140 |
signal.signal("SIGHUP", function () |
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
141 |
module:log("info", "Received SIGHUP"); |
12301
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
142 |
prosody.main_thread:run(function () |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
143 |
prosody.reload_config(); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
144 |
end); |
9767
982529dd0bed
mod_posix: Don't reload logging twice
Kim Alvefur <zash@zash.se>
parents:
8666
diff
changeset
|
145 |
-- this also reloads logging |
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
146 |
end); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5452
diff
changeset
|
147 |
|
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
148 |
signal.signal("SIGINT", function () |
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
149 |
module:log("info", "Received SIGINT"); |
12301
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
150 |
prosody.main_thread:run(function () |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
151 |
prosody.unlock_globals(); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
152 |
prosody.shutdown("Received SIGINT"); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
153 |
prosody.lock_globals(); |
249eb306f668
mod_posix: Run signal handlers in the startup thread
Kim Alvefur <zash@zash.se>
parents:
11834
diff
changeset
|
154 |
end); |
8666
a7a9d9511dc1
mod_posix: Delay setting signal handlers until in the main thread
Matthew Wild <mwild1@gmail.com>
parents:
8238
diff
changeset
|
155 |
end); |
11183
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
156 |
|
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
157 |
signal.signal("SIGUSR1", function () |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
158 |
module:log("info", "Received SIGUSR1"); |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
159 |
module:fire_event("signal/SIGUSR1"); |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
160 |
end); |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
161 |
|
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
162 |
signal.signal("SIGUSR2", function () |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
163 |
module:log("info", "Received SIGUSR2"); |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
164 |
module:fire_event("signal/SIGUSR2"); |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
165 |
end); |
2332 | 166 |
end); |
991
cd0d75de8345
mod_posix: Allow logging and pidfile options to take effect without needing to daemonize. Add the ability to catch SIGTERM.
Matthew Wild <mwild1@gmail.com>
parents:
735
diff
changeset
|
167 |
end |
11183
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
168 |
|
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
169 |
-- For other modules to reference |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
170 |
features = { |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
171 |
signal_events = true; |
96da09c771a1
mod_posix: Hook and fire events on SIGUSR1/2
Matthew Wild <mwild1@gmail.com>
parents:
11066
diff
changeset
|
172 |
}; |