mod_posix: Move everything to util.startup
This allows greater control over the order of events.
Notably, the internal ordering between daemonization, initialization of
libunbound and setup of signal handling is sensitive.
libunbound starts a separate thread for processing DNS requests.
If this thread is started before signal handling has been set up, it
will not inherit the signal handlers and instead behave as it would have
before signal handlers were set up, i.e. cause the whole process to
immediately exit.
libunbound is usually initialized on the first DNS request, usually
triggered by an outgoing s2s connection attempt.
If daemonization happens before signals have been set up, signals may
not be processed at all.
local st = require "prosody.util.stanza"
global record moduleapi
get_name : function (moduleapi) : string
get_host : function (moduleapi) : string
enum host_type
"global"
"local"
"component"
end
get_host_type : function (moduleapi) : host_type
set_global : function (moduleapi)
add_feature : function (moduleapi, string)
add_identity : function (moduleapi, string, string, string) -- TODO enum?
add_extension : function (moduleapi, st.stanza_t)
fire_event : function (moduleapi, string, any) : any
type handler = function (any) : any
record util_events
-- TODO import def
end
hook_object_event : function (moduleapi, util_events, string, handler, number)
unhook_object_event : function (moduleapi, util_events, string, handler)
hook : function (moduleapi, string, handler, number)
hook_global : function (moduleapi, string, handler, number)
hook_tag : function (moduleapi, string, string, handler, number)
unhook : function (moduleapi, string, handler)
wrap_object_event : function (moduleapi, util_events, string, handler)
wrap_event : function (moduleapi, string, handler)
wrap_global : function (moduleapi, string, handler)
require : function (moduleapi, string) : table
depends : function (moduleapi, string) : table
shared : function (moduleapi, string) : table
type config_getter = function<A> (moduleapi, string, A) : A
get_option : config_getter<any>
get_option_scalar : config_getter<nil | boolean | number | string>
get_option_string : config_getter<string>
get_option_number : function (moduleapi, string, number, number, number) : number
get_option_integer : function (moduleapi, string, integer, integer, integer) : integer
get_option_boolean : config_getter<boolean>
get_option_enum : function<A> (moduleapi, string, ... : A) : A
get_option_period : function (moduleapi, string|number, string|number, string|number, string|number) : number
record util_array
-- TODO import def
{ any }
end
get_option_array : config_getter<util_array>
record util_set
-- TODO import def
_items : { any : boolean }
end
get_option_set : function (moduleapi, string, { any }) : util_set
get_option_inherited_set : function (moduleapi, string, { any }) : util_set
get_option_path : function (moduleapi, string, string, string) : string
context : function (moduleapi, string) : moduleapi
add_item : function (moduleapi, string, any)
remove_item : function (moduleapi, string, any)
get_host_items : function (moduleapi, string) : { any }
handle_items : function (moduleapi, string, handler, handler, boolean)
provides : function (moduleapi, string, table)
record util_session
-- TODO import def
send : function ( st.stanza_t | string )
end
send : function (moduleapi, st.stanza_t, util_session)
send_iq : function (moduleapi, st.stanza_t, util_session, number)
broadcast : function (moduleapi, { string }, st.stanza_t, function)
type timer_callback = function (number, ... : any) : number
record timer_wrapper
stop : function (timer_wrapper)
disarm : function (timer_wrapper)
reschedule : function (timer_wrapper, number)
end
add_timer : function (moduleapi, number, timer_callback, ... : any) : timer_wrapper
get_directory : function (moduleapi) : string
enum file_mode
"r" "w" "a" "r+" "w+" "a+"
end
load_resource : function (moduleapi, string, file_mode) : FILE
enum store_type
"keyval"
"keyval+"
"map"
"archive"
end
open_store : function (moduleapi, string, store_type)
enum stat_type
"amount"
"counter"
"rate"
"distribution"
"sizes"
"times"
end
record stats_conf
initial : number
units : string
type : string
end
measure : function (moduleapi, string, stat_type, stats_conf)
measure_object_event : function (moduleapi, util_events, string, string)
measure_event : function (moduleapi, string, string)
measure_global_event : function (moduleapi, string, string)
enum status_type
"error"
"warn"
"info"
"core"
end
set_status : function (moduleapi, status_type, string, boolean)
enum log_level
"debug"
"info"
"warn"
"error"
end
log_status : function (moduleapi, log_level, string, ... : any)
get_status : function (moduleapi) : status_type, string, number
-- added by modulemanager
name : string
host : string
_log : function (log_level, string, ... : any)
log : function (moduleapi, log_level, string, ... : any)
reloading : boolean
saved_state : any
record module_environment
module : moduleapi
end
environment : module_environment
path : string
resource_path : string
-- access control
may : function (moduleapi, string, table|string)
default_permission : function (string, string)
default_permissions : function (string, { string })
-- methods the module can add
load : function ()
add_host : function (moduleapi)
save : function () : any
restore : function (any)
unload : function ()
-- added by mod_http
http_url : function (moduleapi, string, string, string) : string
end
global module : moduleapi
global record common_event
stanza : st.stanza_t
record origin
send : function (st.stanza_t)
end
end
global record prosody
version : string
end
return module