sudosrv.c revision 65976ea5e9767bfaced81dfb97dc87d59f50b57e
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina Pavel Březina <pbrezina@redhat.com>
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina Copyright (C) 2011 Red Hat
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina This program is free software; you can redistribute it and/or modify
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina it under the terms of the GNU General Public License as published by
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina the Free Software Foundation; either version 3 of the License, or
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina (at your option) any later version.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina This program is distributed in the hope that it will be useful,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina GNU General Public License for more details.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina You should have received a copy of the GNU General Public License
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina { MON_CLI_METHOD_RES_INIT, monitor_common_res_init },
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina { MON_CLI_METHOD_ROTATE, responder_logrotate },
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastruct sbus_interface monitor_sudo_interface = {
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastatic struct sbus_method sudo_dp_methods[] = {
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastatic void sudo_dp_reconnect_init(struct sbus_connection *conn,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina struct be_conn *be_conn = talloc_get_type(pvt, struct be_conn);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Did we reconnect successfully? */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina DEBUG(SSSDBG_TRACE_FUNC, ("Reconnected to the Data Provider.\n"));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Identify ourselves to the data provider */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* all fine */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Failed to reconnect */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina DEBUG(SSSDBG_FATAL_FAILURE, ("Could not reconnect to %s provider.\n",
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina sudo_ctx = talloc_zero(mem_ctx, struct sudo_ctx);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina DEBUG(SSSDBG_FATAL_FAILURE, ("fatal error initializing sudo_ctx\n"));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Enable automatic reconnection to the Data Provider */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina ("Failed to set up automatic reconnection\n"));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina for (iter = sudo_ctx->rctx->be_conns; iter; iter = iter->next) {
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina /* Get responder options */
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina /* Get cache_timeout option */
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina CONFDB_SUDO_CONF_ENTRY, CONFDB_SUDO_CACHE_TIMEOUT,
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina DEBUG(SSSDBG_FATAL_FAILURE, ("Error reading from confdb (%d) [%s]\n",
c9aab1c04c399ca2d1abef74f6df22ced34983dcPavel Březina /* Get sudo_timed option */
c9aab1c04c399ca2d1abef74f6df22ced34983dcPavel Březina DEBUG(SSSDBG_FATAL_FAILURE, ("Error reading from confdb (%d) [%s]\n",
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina /* Initialize in-memory cache */
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina ret = sudosrv_cache_init(sudo_ctx, 10, &sudo_ctx->cache);
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina ("Could not create hash table: [%s]", strerror(ret)));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina DEBUG(SSSDBG_TRACE_FUNC, ("SUDO Initialization complete\n"));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Set debug level to invalid value so we can deside if -d 0 was used. */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina pc = poptGetContext(argv[0], argc, argv, long_options, 0);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina fprintf(stderr, "\nInvalid option %s: %s\n\n",
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* set up things like debug, signals, daemonization, etc... */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina ret = server_setup("sssd[sudo]", 0, CONFDB_SUDO_CONF_ENTRY, &main_ctx);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* This is not fatal, don't return */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina DEBUG(SSSDBG_OP_FAILURE, ("Could not set up to exit "
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina "when parent process does\n"));
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* loop on main */