summaryrefslogtreecommitdiffstats
path: root/server/responder/pam/pamsrv_cmd.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2009-02-27 20:32:31 +0100
committerSimo Sorce <ssorce@redhat.com>2009-03-02 09:02:22 -0500
commite65c65fc710fa030bfb8319efc43fcdc9ce5a26f (patch)
tree5e4a8f1e0e7e14ba0dcaa25023c851a7d5aa3cf5 /server/responder/pam/pamsrv_cmd.c
parenta997dc37a7f69387195299caafc98afa80d74960 (diff)
downloadsssd-e65c65fc710fa030bfb8319efc43fcdc9ce5a26f.tar.gz
sssd-e65c65fc710fa030bfb8319efc43fcdc9ce5a26f.tar.xz
sssd-e65c65fc710fa030bfb8319efc43fcdc9ce5a26f.zip
first version of LOCAL pam backend
Diffstat (limited to 'server/responder/pam/pamsrv_cmd.c')
-rw-r--r--server/responder/pam/pamsrv_cmd.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/server/responder/pam/pamsrv_cmd.c b/server/responder/pam/pamsrv_cmd.c
index 4fdded309..6c518695f 100644
--- a/server/responder/pam/pamsrv_cmd.c
+++ b/server/responder/pam/pamsrv_cmd.c
@@ -2,6 +2,8 @@
#include <talloc.h>
#include "util/util.h"
+#include "confdb/confdb.h"
+#include "responder/pam/pam_LOCAL_domain.h"
#include "responder/common/responder_common.h"
#include "responder/common/responder_cmd.h"
#include "responder/common/responder_packet.h"
@@ -125,9 +127,10 @@ static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd)
size_t blen;
int ret;
struct pam_data *pd;
+ char *default_domain;
pd = talloc(cctx, struct pam_data);
- if (pd == NULL) return ENOMEM;
+ if (pd == NULL) return ENOMEM;
sss_packet_get_body(cctx->creq->in, &body, &blen);
if (blen >= sizeof(uint32_t) &&
@@ -144,10 +147,26 @@ static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd)
return EINVAL;
}
+ if (pd->domain == NULL) {
+ ret = confdb_get_string(cctx->nctx->cdb, cctx, "config/domains",
+ "defaultDomain", "LOCAL", &default_domain);
+ if (ret != EOK) {
+ DEBUG(1, ("Failed to call confdb.\n"));
+ talloc_free(pd);
+ return ret;
+ }
+ pd->domain = default_domain;
+ DEBUG(4, ("Using default domain [%s].\n", pd->domain));
+ }
+
+ if ( strncasecmp(pd->domain,"LOCAL",5) == 0 ) {
+ return LOCAL_schedule_request(cctx, pam_reply, pd);
+ };
+
ret=pam_dp_send_req(cctx, pam_reply, PAM_DP_TIMEOUT, pd);
DEBUG(4, ("pam_dp_send_req returned %d\n", ret));
- return ret;
+ return ret;
}
static int pam_cmd_authenticate(struct cli_ctx *cctx) {