Skip to content

Commit

Permalink
Add session target in data provider
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Zeleny authored and sgallagher committed Feb 6, 2012
1 parent 16dff70 commit 2d0550a
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/confdb/confdb.h
Expand Up @@ -114,6 +114,7 @@
#define CONFDB_DOMAIN_CHPASS_PROVIDER "chpass_provider"
#define CONFDB_DOMAIN_SUDO_PROVIDER "sudo_provider"
#define CONFDB_DOMAIN_AUTOFS_PROVIDER "autofs_provider"
#define CONFDB_DOMAIN_SESSION_PROVIDER "session_provider"
#define CONFDB_DOMAIN_COMMAND "command"
#define CONFDB_DOMAIN_TIMEOUT "timeout"
#define CONFDB_DOMAIN_ATTR "cn"
Expand Down
1 change: 1 addition & 0 deletions src/config/SSSDConfig.py
Expand Up @@ -87,6 +87,7 @@ class ProviderSubtypeInUse(SSSDConfigException): pass
'chpass_provider' : _('Password change provider'),
'sudo_provider' : _('SUDO provider'),
'autofs_provider' : _('Autofs provider'),
'session_provider' : _('Session-loading provider'),

# [domain]
'min_id' : _('Minimum user ID'),
Expand Down
6 changes: 4 additions & 2 deletions src/config/SSSDConfigTest.py
Expand Up @@ -496,7 +496,8 @@ def testListOptions(self):
'access_provider',
'chpass_provider',
'sudo_provider',
'autofs_provider' ]
'autofs_provider',
'session_provider']

self.assertTrue(type(options) == dict,
"Options should be a dictionary")
Expand Down Expand Up @@ -821,7 +822,8 @@ def testRemoveProvider(self):
'access_provider',
'chpass_provider',
'sudo_provider',
'autofs_provider']
'autofs_provider',
'session_provider']

self.assertTrue(type(options) == dict,
"Options should be a dictionary")
Expand Down
1 change: 1 addition & 0 deletions src/config/etc/sssd.api.conf
Expand Up @@ -60,6 +60,7 @@ access_provider = str, None, false
chpass_provider = str, None, false
sudo_provider = str, None, false
autofs_provider = str, None, false
session_provider = str, None, false

[domain]
# Options available to all domains
Expand Down
20 changes: 19 additions & 1 deletion src/providers/data_provider_be.c
Expand Up @@ -109,6 +109,7 @@ static struct bet_data bet_data[] = {
{BET_CHPASS, CONFDB_DOMAIN_CHPASS_PROVIDER, "sssm_%s_chpass_init"},
{BET_SUDO, CONFDB_DOMAIN_SUDO_PROVIDER, "sssm_%s_sudo_init"},
{BET_AUTOFS, CONFDB_DOMAIN_SUDO_PROVIDER, "sssm_%s_autofs_init"},
{BET_SESSION, CONFDB_DOMAIN_SESSION_PROVIDER, "sssm_%s_session_init"},
{BET_MAX, NULL, NULL}
};

Expand Down Expand Up @@ -577,8 +578,10 @@ static int be_pam_handler(DBusMessage *message, struct sbus_connection *conn)
case SSS_PAM_CHAUTHTOK_PRELIM:
target = BET_CHPASS;
break;
case SSS_PAM_SETCRED:
case SSS_PAM_OPEN_SESSION:
target = BET_SESSION;
break;
case SSS_PAM_SETCRED:
case SSS_PAM_CLOSE_SESSION:
pd->pam_status = PAM_SUCCESS;
goto done;
Expand Down Expand Up @@ -1697,6 +1700,21 @@ int be_process_init(TALLOC_CTX *mem_ctx,
"from provider [%s].\n", ctx->bet_info[BET_AUTOFS].mod_name));
}

ret = load_backend_module(ctx, BET_SESSION,
&ctx->bet_info[BET_SESSION],
ctx->bet_info[BET_ID].mod_name);
if (ret != EOK) {
if (ret != ENOENT) {
DEBUG(SSSDBG_FATAL_FAILURE, ("fatal error initializing data providers\n"));
return ret;
}
DEBUG(SSSDBG_CRIT_FAILURE, ("No Session module provided for [%s] !!\n",
be_domain));
} else {
DEBUG(SSSDBG_TRACE_ALL, ("Session backend target successfully loaded "
"from provider [%s].\n", ctx->bet_info[BET_SUDO].mod_name));
}

/* Handle SIGUSR1 to force offline behavior */
BlockSignals(false, SIGUSR1);
tes = tevent_add_signal(ctx->ev, ctx, SIGUSR1, 0,
Expand Down
1 change: 1 addition & 0 deletions src/providers/dp_backend.h
Expand Up @@ -51,6 +51,7 @@ enum bet_type {
BET_CHPASS,
BET_SUDO,
BET_AUTOFS,
BET_SESSION,
BET_MAX
};

Expand Down

0 comments on commit 2d0550a

Please sign in to comment.