pacsrv.c revision 9e2c64c6d4f5560e27207193efea6536a566865e
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose PAC Responder
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose Copyright (C) Sumit Bose <sbose@redhat.com> 2011
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose This program is free software; you can redistribute it and/or modify
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose it under the terms of the GNU General Public License as published by
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose the Free Software Foundation; either version 3 of the License, or
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose (at your option) any later version.
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose This program is distributed in the hope that it will be useful,
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose but WITHOUT ANY WARRANTY; without even the implied warranty of
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose GNU General Public License for more details.
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose You should have received a copy of the GNU General Public License
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose along with this program. If not, see <http://www.gnu.org/licenses/>.
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose { MON_CLI_METHOD_RES_INIT, monitor_common_res_init },
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose/* TODO: check if this can be made generic for all responders */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bosestatic void pac_dp_reconnect_init(struct sbus_connection *conn,
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose struct be_conn *be_conn = talloc_get_type(pvt, struct be_conn);
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* Did we reconnect successfully? */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_OP_FAILURE, ("Reconnected to the Data Provider.\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* Identify ourselves to the data provider */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* all fine */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* Failed to reconnect */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("Could not reconnect to %s provider.\n",
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* FIXME: kill the frontend and let the monitor restart it ? */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* nss_shutdown(rctx); */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("fatal error initializing pac_ctx\n"));
2d257ccf620ce1b611f89cec8f0a94c88c2f2881Sumit Bose ret = confdb_get_string(pac_ctx->rctx->cdb, pac_ctx->rctx,
2d257ccf620ce1b611f89cec8f0a94c88c2f2881Sumit Bose CONFDB_PAC_CONF_ENTRY, CONFDB_SERVICE_ALLOWED_UIDS,
2d257ccf620ce1b611f89cec8f0a94c88c2f2881Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to get allowed UIDs.\n"));
2d257ccf620ce1b611f89cec8f0a94c88c2f2881Sumit Bose ret = csv_string_to_uid_array(pac_ctx->rctx, uid_str, true,
2d257ccf620ce1b611f89cec8f0a94c88c2f2881Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to set allowed UIDs.\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* Enable automatic reconnection to the Data Provider */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to set up automatic reconnection\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose for (iter = pac_ctx->rctx->be_conns; iter; iter = iter->next) {
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose err = sss_idmap_init(idmap_talloc, pac_ctx, idmap_free,
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_FATAL_FAILURE, ("sss_idmap_init failed.\n"));
f1a7e4a6e4f2d453077da8b3606feebb7669ef4fSumit Bose /* Set up file descriptor limits */
f1a7e4a6e4f2d453077da8b3606feebb7669ef4fSumit Bose ("Failed to set up file descriptor limit\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_TRACE_FUNC, ("PAC Initialization complete\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* Set debug level to invalid value so we can decide if -d 0 was used. */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose pc = poptGetContext(argv[0], argc, argv, long_options, 0);
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* set up things like debug, signals, daemonization, etc... */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose ret = server_setup("sssd[pac]", 0, CONFDB_PAC_CONF_ENTRY, &main_ctx);
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* This is not fatal, don't return */
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose DEBUG(SSSDBG_OP_FAILURE, ("Could not set up to exit when parent process does\n"));
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose /* loop on main */