Lines Matching defs:lreq
61 static void prepare_reply(struct LOCAL_request *lreq)
65 pd = lreq->preq->pd;
67 if (lreq->error != EOK && pd->pam_status == PAM_SUCCESS)
70 lreq->preq->callback(lreq->preq);
73 static void do_successful_login(struct LOCAL_request *lreq)
77 lreq->mod_attrs = sysdb_new_attrs(lreq);
78 NULL_CHECK_OR_JUMP(lreq->mod_attrs, "sysdb_new_attrs failed.\n",
79 lreq->error, ENOMEM, done);
81 ret = sysdb_attrs_add_long(lreq->mod_attrs,
84 lreq->error, ret, done);
86 ret = sysdb_attrs_add_long(lreq->mod_attrs, SYSDB_FAILED_LOGIN_ATTEMPTS, 0L);
88 lreq->error, ret, done);
90 ret = sysdb_set_user_attr(lreq->domain,
91 lreq->preq->pd->user,
92 lreq->mod_attrs, SYSDB_MOD_REP);
94 lreq->error, ret, done);
100 static void do_failed_login(struct LOCAL_request *lreq)
106 pd = lreq->preq->pd;
111 lreq->mod_attrs = sysdb_new_attrs(lreq);
112 NULL_CHECK_OR_JUMP(lreq->mod_attrs, "sysdb_new_attrs failed.\n",
113 lreq->error, ENOMEM, done);
115 ret = sysdb_attrs_add_long(lreq->mod_attrs,
118 lreq->error, ret, done);
120 failedLoginAttempts = ldb_msg_find_attr_as_int(lreq->res->msgs[0],
125 ret = sysdb_attrs_add_long(lreq->mod_attrs,
129 lreq->error, ret, done);
131 ret = sysdb_set_user_attr(lreq->domain,
132 lreq->preq->pd->user,
133 lreq->mod_attrs, SYSDB_MOD_REP);
135 lreq->error, ret, done);
141 static void do_pam_acct_mgmt(struct LOCAL_request *lreq)
146 pd = lreq->preq->pd;
148 disabled = ldb_msg_find_attr_as_string(lreq->res->msgs[0],
157 static void do_pam_chauthtok(struct LOCAL_request *lreq)
165 pd = lreq->preq->pd;
173 lreq->error = EINVAL;
177 ret = s3crypt_gen_salt(lreq, &salt);
179 lreq->error, ret, done);
182 ret = s3crypt_sha512(lreq, password, salt, &new_hash);
184 lreq->error, ret, done);
187 lreq->mod_attrs = sysdb_new_attrs(lreq);
188 NULL_CHECK_OR_JUMP(lreq->mod_attrs, "sysdb_new_attrs failed.\n",
189 lreq->error, ENOMEM, done);
191 ret = sysdb_attrs_add_string(lreq->mod_attrs, SYSDB_PWD, new_hash);
193 lreq->error, ret, done);
195 ret = sysdb_attrs_add_long(lreq->mod_attrs,
198 lreq->error, ret, done);
200 ret = sysdb_set_user_attr(lreq->domain,
201 lreq->preq->pd->user,
202 lreq->mod_attrs, SYSDB_MOD_REP);
204 lreq->error, ret, done);
212 struct LOCAL_request *lreq;
234 lreq = talloc_zero(preq, struct LOCAL_request);
235 if (!lreq) {
239 lreq->dbctx = preq->domain->sysdb;
240 if (lreq->dbctx == NULL) {
243 talloc_free(lreq);
246 lreq->domain = preq->domain;
247 lreq->ev = preq->cctx->ev;
248 lreq->preq = preq;
252 ret = sysdb_get_user_attr(lreq, preq->domain, preq->pd->user, attrs,
256 talloc_free(lreq);
270 lreq->error = EFAULT;
278 lreq->error = EINVAL;
282 lreq->res = res;
290 lreq->preq->cctx->priv == 1) {
298 lreq->error, ret, done);
302 lreq->error, LDB_ERR_NO_SUCH_ATTRIBUTE, done);
306 ret = s3crypt_sha512(lreq, password, pwdhash, &new_hash);
308 lreq->error, ret, done);
315 do_failed_login(lreq);
324 do_successful_login(lreq);
327 do_pam_chauthtok(lreq);
330 do_pam_acct_mgmt(lreq);
341 lreq->error = EINVAL;
348 prepare_reply(lreq);