nss_utils.c revision 7c074ba2f923985ab0d4f9d6a5e01ff3f2f0a7a8
a8c5a86d183db25a57bf193c06b41e092ec2e151Timo Sirainen/*
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen Authors:
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen Pavel Březina <pbrezina@redhat.com>
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen Copyright (C) 2016 Red Hat
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen This program is free software; you can redistribute it and/or modify
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen it under the terms of the GNU General Public License as published by
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen the Free Software Foundation; either version 3 of the License, or
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen (at your option) any later version.
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen This program is distributed in the hope that it will be useful,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen but WITHOUT ANY WARRANTY; without even the implied warranty of
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen GNU General Public License for more details.
4fe3f07477bae6da3fb8d8fa9bab10ab82ada2bdTimo Sirainen
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen You should have received a copy of the GNU General Public License
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen along with this program. If not, see <http://www.gnu.org/licenses/>.
5411e6f71afb0f753cdf831f4da4ee73e928796eTimo Sirainen*/
4865df74dad010a65ab63734b3ca1349ce38dc57Timo Sirainen
89d6cd658eabf46e07e40037b0e641ed9be1a2a3Timo Sirainen#include <talloc.h>
89d6cd658eabf46e07e40037b0e641ed9be1a2a3Timo Sirainen#include <ldb.h>
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen
4fe3f07477bae6da3fb8d8fa9bab10ab82ada2bdTimo Sirainen#include "util/util.h"
1df39b899804fd1dbc560f75382364822935c857Timo Sirainen#include "confdb/confdb.h"
1df39b899804fd1dbc560f75382364822935c857Timo Sirainen#include "responder/common/responder.h"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen#include "responder/nss/nss_private.h"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenconst char *
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainennss_get_name_from_msg(struct sss_domain_info *domain,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen struct ldb_message *msg)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen{
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen const char *name;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen /* If domain has a view associated we return overridden name
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen * if possible. */
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if (DOM_HAS_VIEWS(domain)) {
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen name = ldb_msg_find_attr_as_string(msg, OVERRIDE_PREFIX SYSDB_NAME,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen NULL);
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if (name != NULL) {
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen return name;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen }
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen }
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen /* Otherwise we try to return name override from
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen * Default Truest View for trusted users. */
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen name = ldb_msg_find_attr_as_string(msg, SYSDB_DEFAULT_OVERRIDE_NAME, NULL);
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if (name != NULL) {
a356c4736fe6041142c6096045bc00c15a80af4eTimo Sirainen return name;
a356c4736fe6041142c6096045bc00c15a80af4eTimo Sirainen }
a356c4736fe6041142c6096045bc00c15a80af4eTimo Sirainen
a356c4736fe6041142c6096045bc00c15a80af4eTimo Sirainen /* If no override is found we return the original name. */
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen return ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL);
a356c4736fe6041142c6096045bc00c15a80af4eTimo Sirainen}
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenconst char *
c4900d31385344bfadaee53a897daeafdb3063d8Timo Sirainennss_get_pwfield(struct nss_ctx *nctx,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen struct sss_domain_info *dom)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen{
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if (dom->pwfield != NULL) {
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen return dom->pwfield;
34a45b80c8ed18861c6e343fe40adbe360fc6badTimo Sirainen }
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen return nctx->pwfield;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen}
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen