mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
s3:winbindd Provide a winbindd_register_handlers() helper function for s3compat
This function provides a useful entry point for s3compat to set things up in winbindd. Andrew Bartlett
This commit is contained in:
parent
f5c0f90da5
commit
72e65a0521
@ -1010,6 +1010,106 @@ bool winbindd_use_cache(void)
|
||||
return !opt_nocache;
|
||||
}
|
||||
|
||||
void winbindd_register_handlers(void)
|
||||
{
|
||||
struct tevent_timer *te;
|
||||
/* Don't use winbindd_reinit_after_fork here as
|
||||
* we're just starting up and haven't created any
|
||||
* winbindd-specific resources we must free yet. JRA.
|
||||
*/
|
||||
|
||||
if (!NT_STATUS_IS_OK(reinit_after_fork(winbind_messaging_context(),
|
||||
winbind_event_context(),
|
||||
false))) {
|
||||
DEBUG(0,("reinit_after_fork() failed\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Setup signal handlers */
|
||||
|
||||
if (!winbindd_setup_sig_term_handler(true))
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_hup_handler(NULL))
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_chld_handler())
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_usr2_handler())
|
||||
exit(1);
|
||||
|
||||
CatchSignal(SIGPIPE, SIG_IGN); /* Ignore sigpipe */
|
||||
|
||||
/*
|
||||
* Ensure all cache and idmap caches are consistent
|
||||
* and initialized before we startup.
|
||||
*/
|
||||
if (!winbindd_cache_validate_and_initialize()) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* get broadcast messages */
|
||||
|
||||
if (!serverid_register_self(FLAG_MSG_GENERAL|FLAG_MSG_DBWRAP)) {
|
||||
DEBUG(1, ("Could not register myself in serverid.tdb\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* React on 'smbcontrol winbindd reload-config' in the same way
|
||||
as to SIGHUP signal */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_SMB_CONF_UPDATED, msg_reload_services);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_SHUTDOWN, msg_shutdown);
|
||||
|
||||
/* Handle online/offline messages. */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_OFFLINE, winbind_msg_offline);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_ONLINE, winbind_msg_online);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_DUMP_EVENT_LIST, winbind_msg_dump_event_list);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_VALIDATE_CACHE,
|
||||
winbind_msg_validate_cache);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_DUMP_DOMAIN_LIST,
|
||||
winbind_msg_dump_domain_list);
|
||||
|
||||
/* Register handler for MSG_DEBUG. */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_DEBUG,
|
||||
winbind_msg_debug);
|
||||
|
||||
netsamlogon_cache_init(); /* Non-critical */
|
||||
|
||||
/* clear the cached list of trusted domains */
|
||||
|
||||
wcache_tdc_clear();
|
||||
|
||||
if (!init_domain_list()) {
|
||||
DEBUG(0,("unable to initialize domain list\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
init_idmap_child();
|
||||
init_locator_child();
|
||||
|
||||
smb_nscd_flush_user_cache();
|
||||
smb_nscd_flush_group_cache();
|
||||
|
||||
te = tevent_add_timer(winbind_event_context(), NULL, timeval_zero(),
|
||||
rescan_trusted_domains, NULL);
|
||||
if (te == NULL) {
|
||||
DEBUG(0, ("Could not trigger rescan_trusted_domains()\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Main function */
|
||||
|
||||
int main(int argc, char **argv, char **envp)
|
||||
@ -1038,7 +1138,6 @@ int main(int argc, char **argv, char **envp)
|
||||
poptContext pc;
|
||||
int opt;
|
||||
TALLOC_CTX *frame = talloc_stackframe();
|
||||
struct tevent_timer *te;
|
||||
|
||||
/* glibc (?) likes to print "User defined signal 1" and exit if a
|
||||
SIGUSR[12] is received before a handler is installed */
|
||||
@ -1190,93 +1289,7 @@ int main(int argc, char **argv, char **envp)
|
||||
|
||||
TimeInit();
|
||||
|
||||
/* Don't use winbindd_reinit_after_fork here as
|
||||
* we're just starting up and haven't created any
|
||||
* winbindd-specific resources we must free yet. JRA.
|
||||
*/
|
||||
|
||||
if (!NT_STATUS_IS_OK(reinit_after_fork(winbind_messaging_context(),
|
||||
winbind_event_context(),
|
||||
false))) {
|
||||
DEBUG(0,("reinit_after_fork() failed\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Setup signal handlers */
|
||||
|
||||
if (!winbindd_setup_sig_term_handler(true))
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_hup_handler(NULL))
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_chld_handler())
|
||||
exit(1);
|
||||
if (!winbindd_setup_sig_usr2_handler())
|
||||
exit(1);
|
||||
|
||||
CatchSignal(SIGPIPE, SIG_IGN); /* Ignore sigpipe */
|
||||
|
||||
/*
|
||||
* Ensure all cache and idmap caches are consistent
|
||||
* and initialized before we startup.
|
||||
*/
|
||||
if (!winbindd_cache_validate_and_initialize()) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* get broadcast messages */
|
||||
|
||||
if (!serverid_register_self(FLAG_MSG_GENERAL|FLAG_MSG_DBWRAP)) {
|
||||
DEBUG(1, ("Could not register myself in serverid.tdb\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* React on 'smbcontrol winbindd reload-config' in the same way
|
||||
as to SIGHUP signal */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_SMB_CONF_UPDATED, msg_reload_services);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_SHUTDOWN, msg_shutdown);
|
||||
|
||||
/* Handle online/offline messages. */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_OFFLINE, winbind_msg_offline);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_ONLINE, winbind_msg_online);
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_DUMP_EVENT_LIST, winbind_msg_dump_event_list);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_VALIDATE_CACHE,
|
||||
winbind_msg_validate_cache);
|
||||
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_WINBIND_DUMP_DOMAIN_LIST,
|
||||
winbind_msg_dump_domain_list);
|
||||
|
||||
/* Register handler for MSG_DEBUG. */
|
||||
messaging_register(winbind_messaging_context(), NULL,
|
||||
MSG_DEBUG,
|
||||
winbind_msg_debug);
|
||||
|
||||
netsamlogon_cache_init(); /* Non-critical */
|
||||
|
||||
/* clear the cached list of trusted domains */
|
||||
|
||||
wcache_tdc_clear();
|
||||
|
||||
if (!init_domain_list()) {
|
||||
DEBUG(0,("unable to initialize domain list\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
init_idmap_child();
|
||||
init_locator_child();
|
||||
|
||||
smb_nscd_flush_user_cache();
|
||||
smb_nscd_flush_group_cache();
|
||||
winbindd_register_handlers();
|
||||
|
||||
/* setup listen sockets */
|
||||
|
||||
@ -1285,13 +1298,6 @@ int main(int argc, char **argv, char **envp)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
te = tevent_add_timer(winbind_event_context(), NULL, timeval_zero(),
|
||||
rescan_trusted_domains, NULL);
|
||||
if (te == NULL) {
|
||||
DEBUG(0, ("Could not trigger rescan_trusted_domains()\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
TALLOC_FREE(frame);
|
||||
/* Loop waiting for requests */
|
||||
while (1) {
|
||||
|
@ -52,6 +52,7 @@ bool winbindd_setup_sig_term_handler(bool parent);
|
||||
bool winbindd_setup_sig_hup_handler(const char *lfile);
|
||||
bool winbindd_use_idmap_cache(void);
|
||||
bool winbindd_use_cache(void);
|
||||
void winbindd_register_handlers(void);
|
||||
int main(int argc, char **argv, char **envp);
|
||||
|
||||
/* The following definitions come from winbindd/winbindd_ads.c */
|
||||
|
Loading…
x
Reference in New Issue
Block a user