sysdb.h revision 4611802d41d8954a3040f39403590adb920ca521
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/*
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SSSD
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher System Database Header
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher Copyright (C) Simo Sorce <ssorce@redhat.com> 2008
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher This program is free software; you can redistribute it and/or modify
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher it under the terms of the GNU General Public License as published by
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher the Free Software Foundation; either version 3 of the License, or
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher (at your option) any later version.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher This program is distributed in the hope that it will be useful,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher but WITHOUT ANY WARRANTY; without even the implied warranty of
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher GNU General Public License for more details.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher You should have received a copy of the GNU General Public License
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher along with this program. If not, see <http://www.gnu.org/licenses/>.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher*/
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#ifndef __SYS_DB_H__
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define __SYS_DB_H__
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#include "util/util.h"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#include "confdb/confdb.h"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#include <tevent.h>
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define CACHE_SYSDB_FILE "cache_%s.ldb"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define LOCAL_SYSDB_FILE "sssd.ldb"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_BASE "cn=sysdb"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DOM_BASE "cn=%s,cn=sysdb"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_USERS_CONTAINER "cn=users"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GROUPS_CONTAINER "cn=groups"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CUSTOM_CONTAINER "cn=custom"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_CONTAINER "cn=Netgroups"
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce#define SYSDB_RANGE_CONTAINER "cn=ranges"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_USER_BASE SYSDB_USERS_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_GROUP_BASE SYSDB_GROUPS_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM_BASE SYSDB_CUSTOM_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_NETGROUP_BASE SYSDB_NETGROUP_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_RANGE_BASE SYSDB_RANGE_CONTAINER","SYSDB_BASE
cbaba2f47da96c4191971bce86f03afb3f88864aSimo Sorce
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_CLASS "subdomain"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_USER_CLASS "user"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GROUP_CLASS "group"
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce#define SYSDB_NETGROUP_CLASS "netgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HOST_CLASS "host"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HOSTGROUP_CLASS "hostgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SELINUX_USERMAP_CLASS "selinuxusermap"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SELINUX_CLASS "selinux"
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce#define SYSDB_ID_RANGE_CLASS "idRange"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DOMAIN_ID_RANGE_CLASS "domainIDRange"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TRUSTED_AD_DOMAIN_RANGE_CLASS "TrustedADDomainRange"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce#define SYSDB_NAME "name"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NAME_ALIAS "nameAlias"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_OBJECTCLASS "objectClass"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NEXTID "nextID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_UIDNUM "uidNumber"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GIDNUM "gidNumber"
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce#define SYSDB_CREATE_TIME "createTimestamp"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWD "userPassword"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_FULLNAME "fullName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HOMEDIR "homeDirectory"
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce#define SYSDB_SHELL "loginShell"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MEMBEROF "memberOf"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DISABLED "disabled"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MEMBER "member"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MEMBERUID "memberUid"
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce#define SYSDB_GHOST "ghost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_POSIX "isPosix"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_USER_CATEGORY "userCategory"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HOST_CATEGORY "hostCategory"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GROUP_TYPE "groupType"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GECOS "gecos"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_LOGIN "lastLogin"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_ONLINE_AUTH "lastOnlineAuth"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_FAILED_LOGIN "lastFailedLogin"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_FAILED_LOGIN_ATTEMPTS "failedLoginAttempts"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_UPDATE "lastUpdate"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CACHE_EXPIRE "dataExpireTimestamp"
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce#define SYSDB_INITGR_EXPIRE "initgrExpireTimestamp"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_AUTHORIZED_SERVICE "authorizedService"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_AUTHORIZED_HOST "authorizedHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_TRIPLE "netgroupTriple"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_NETGROUP_MEMBER "originalMemberNisNetgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_NETGROUP_EXTERNAL_HOST "originalExternalHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_DOMAIN "nisDomain"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_MEMBER "memberNisNetgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DESCRIPTION "description"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_FQDN "fqdn"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SERVERHOSTNAME "serverHostname"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CACHEDPWD "cachedPassword"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_UUID "uniqueID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SID "objectSID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PRIMARY_GROUP "ADPrimaryGroupID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PRIMARY_GROUP_GIDNUM "origPrimaryGroupGidNumber"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SID_STR "objectSIDString"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_UPN "userPrincipalName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CANONICAL_UPN "canonicalUserPrincipalName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CCACHE_FILE "ccacheFile"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_DN "originalDN"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MODSTAMP "originalModifyTimestamp"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBEROF "originalMemberOf"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBER "orig_member"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBER_USER "originalMemberUser"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBER_HOST "originalMemberHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_USN "entryUSN"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HIGH_USN "highestUSN"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SSH_PUBKEY "sshPublicKey"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_REALM "realmName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_FLAT "flatName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_ID "domainID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_MPG "mpg"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_ENUM "enumerate"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_FOREST "memberOfForest"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_BASE_ID "baseID"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_ID_RANGE_SIZE "idRangeSize"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_BASE_RID "baseRID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SECONDARY_BASE_RID "secondaryBaseRID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DOMAIN_ID "domainID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ID_RANGE_TYPE "idRangeType"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
cbaba2f47da96c4191971bce86f03afb3f88864aSimo Sorce#define SYSDB_NEXTID_FILTER "("SYSDB_NEXTID"=*)"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_UC "objectclass="SYSDB_USER_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GC "objectclass="SYSDB_GROUP_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NC "objectclass="SYSDB_NETGROUP_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MPGC "|("SYSDB_UC")("SYSDB_GC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWNAM_FILTER "(&("SYSDB_UC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWUID_FILTER "(&("SYSDB_UC")("SYSDB_UIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWSID_FILTER "(&("SYSDB_UC")("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWUPN_FILTER "(&("SYSDB_UC")(|("SYSDB_UPN"=%s)("SYSDB_CANONICAL_UPN"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWENT_FILTER "("SYSDB_UC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRNAM_FILTER "(&("SYSDB_GC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRGID_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRSID_FILTER "(&("SYSDB_GC")("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRENT_FILTER "("SYSDB_GC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRNAM_MPG_FILTER "(&("SYSDB_MPGC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_GRGID_MPG_FILTER "(&("SYSDB_MPGC")("SYSDB_GIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRENT_MPG_FILTER "("SYSDB_MPGC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_INITGR_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=*))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_FILTER "(&("SYSDB_NC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_TRIPLES_FILTER "(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_MEMBEROF"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SID_FILTER "(&(|("SYSDB_UC")("SYSDB_GC"))("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HAS_ENUMERATED "has_enumerated"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DEFAULT_ATTRS SYSDB_LAST_UPDATE, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_CACHE_EXPIRE, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_INITGR_EXPIRE, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov SYSDB_OBJECTCLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PW_ATTRS {SYSDB_NAME, SYSDB_UIDNUM, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_GIDNUM, SYSDB_GECOS, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_HOMEDIR, SYSDB_SHELL, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_DEFAULT_ATTRS, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_PRIMARY_GROUP_GIDNUM, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_SID_STR, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher NULL}
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRSRC_ATTRS {SYSDB_NAME, SYSDB_GIDNUM, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_MEMBERUID, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_GHOST, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_DEFAULT_ATTRS, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher NULL}
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_ATTRS {SYSDB_NAME, SYSDB_NETGROUP_TRIPLE, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov SYSDB_NETGROUP_MEMBER, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_DEFAULT_ATTRS, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher NULL}
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_INITGR_ATTR SYSDB_MEMBEROF
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_INITGR_ATTRS {SYSDB_GIDNUM, SYSDB_POSIX, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_DEFAULT_ATTRS, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_ORIG_DN, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_SID_STR, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_NAME, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher NULL}
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_USER SYSDB_NAME"=%s,"SYSDB_TMPL_USER_BASE
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_TMPL_GROUP SYSDB_NAME"=%s,"SYSDB_TMPL_GROUP_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_NETGROUP SYSDB_NAME"=%s,"SYSDB_TMPL_NETGROUP_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM_SUBTREE "cn=%s,"SYSDB_TMPL_CUSTOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM SYSDB_NAME"=%s,cn=%s,"SYSDB_TMPL_CUSTOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_RANGE SYSDB_NAME"=%s,"SYSDB_TMPL_RANGE_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MOD_ADD LDB_FLAG_MOD_ADD
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MOD_DEL LDB_FLAG_MOD_DELETE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MOD_REP LDB_FLAG_MOD_REPLACE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* sysdb version check macros */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_ERROR_HINT \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Removing cache files in "DB_PATH" should fix the issue, " \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher "but note that removing cache files will also remove all of your " \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher "cached credentials.\n")
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_LOWER_ERROR(ret) do { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher if (ret == EUCLEAN) { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Lower version of database is expected!\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_VERSION_ERROR_HINT; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher } \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher} while(0)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_HIGHER_ERROR(ret) do { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher if (ret == EMEDIUMTYPE) { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Higher version of database is expected!\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("In order to upgrade the database, you must run SSSD.\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_VERSION_ERROR_HINT; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher } \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher} while(0)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* use this in daemons */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_ERROR_DAEMON(ret) \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_VERSION_LOWER_ERROR(ret)
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* use this in tools */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_ERROR(ret) \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_VERSION_LOWER_ERROR(ret); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_VERSION_HIGHER_ERROR(ret)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct confdb_ctx;
1a7529bf5f867b43e0475f7f9ac0cd8671fb16f1Pavel Březinastruct sysdb_ctx;
1a7529bf5f867b43e0475f7f9ac0cd8671fb16f1Pavel Březina
47db32cd9cb2147bb40909352569d7c8274365dbPavel Březinastruct sysdb_attrs {
1a7529bf5f867b43e0475f7f9ac0cd8671fb16f1Pavel Březina int num;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message_element *a;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher};
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* sysdb_attrs helper functions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct sysdb_attrs *sysdb_new_attrs(TALLOC_CTX *mem_ctx);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct range_info {
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov char *name;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t base_id;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t id_range_size;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t base_rid;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t secondary_base_rid;
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov char *trusted_dom_sid;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char *range_type;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher};
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* values are copied in the structure, allocated on "attrs" */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_val(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, const struct ldb_val *val);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_string(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, const char *str);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_attrs_add_lower_case_string(struct sysdb_attrs *attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name, const char *str);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_mem(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const void *mem, size_t size);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_bool(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, bool value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_long(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, long value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_uint32(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, uint32_t value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_time_t(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, time_t value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_lc_name_alias(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_copy_values(struct sysdb_attrs *src,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct sysdb_attrs *dst,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_el(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message_element **el);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_el_ext(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool alloc, struct ldb_message_element **el);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_steal_string(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, char *str);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_string(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **string);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherconst char **sss_ldb_el_to_string_list(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message_element *el);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_string_array(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher TALLOC_CTX *mem_ctx, const char ***string);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_get_bool(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_uint16_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint16_t *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_int32_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int32_t *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_uint32_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_replace_name(struct sysdb_attrs *attrs, const char *oldname,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *newname);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_users_from_str_list(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *attr_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *list);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_primary_name(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *ldap_attr,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **_primary);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_get_aliases(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *primary,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool lowercase,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char ***_aliases);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs **attr_list,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t attr_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *ldap_attr,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char ***name_list);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_real_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **_cname);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msgs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs ***attrs);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* convert an ldb error into an errno error */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_error_to_errno(int ldberr);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* DNs related helper functions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_rdn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *dn, char **_name, char **_val);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_user_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_group_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_netgroup_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_netgroup_base_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashoverrno_t sysdb_group_dn_name(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *dn_str, char **name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_domain_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_base_dn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_custom_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *object_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *subtree_name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_custom_subtree_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *subtree_name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherchar *sysdb_user_strdn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *domain, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherchar *sysdb_group_strdn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *domain, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_context *sysdb_ctx_get_ldb(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint compare_ldb_dn_comp_num(const void *m1, const void *m2);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions to start and finish transactions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_start(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_commit(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_cancel(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions related to subdomains */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_domain_create(struct sysdb_ctx *sysdb, const char *domain_name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_subdomain_store(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, const char *realm,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *flat_name, const char *domain_id,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool mpg, bool enumerate, const char *forest);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_subdomains(struct sss_domain_info *domain);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_master_domain_update(struct sss_domain_info *domain);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *flat, const char *id,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char* forest);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_subdomain_delete(struct sysdb_ctx *sysdb, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_ranges(TALLOC_CTX *mem_ctx, struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *range_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct range_info ***range_list);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_ranges(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct range_info **ranges);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Sysdb initialization.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * call this function *only* once to initialize the database and get
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * the sysdb ctx */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_init(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domains,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool allow_upgrade);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* used to initialize only one domain database.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * Do NOT use if sysdb_init has already been called */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_domain_init(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *db_path,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_ctx **_ctx);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions to retrieve information from sysdb
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * These functions automatically starts an operation
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * therefore they cannot be called within a transaction */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_getpwnam(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_getpwuid(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uid_t uid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_enumpwent(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_getgrnam(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_getgrgid(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_enumgrent(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct sysdb_netgroup_ctx {
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum {SYSDB_NETGROUP_TRIPLE_VAL, SYSDB_NETGROUP_GROUP_VAL} type;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher union {
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct {
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char *hostname;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char *username;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char *domainname;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher } triple;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char *groupname;
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov } value;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher};
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_getnetgr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *netgroup,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_initgroups(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_user_attr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attributes,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_netgroup_attr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *netgrname,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attributes,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result **res);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions that modify the databse
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * they have to be called within a transaction
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * See sysdb_transaction_send()/_recv() */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Permissive modify */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sss_ldb_modify_permissive(struct ldb_context *ldb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message *msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Delete Entry */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_delete_entry(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool ignore_not_found);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_recursive(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *dn,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov bool ignore_not_found);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Search Entry */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_entry(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_ctx *sysdb,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct ldb_dn *base_dn,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov enum ldb_scope scope,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *filter,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char **attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov size_t *_msgs_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message ***_msgs);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SSS_LDB_SEARCH(ret, ldb, mem_ctx, _result, base, scope, attrs, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov exp_fmt, ...) do { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int _sls_lret; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov _sls_lret = ldb_search(ldb, mem_ctx, _result, base, scope, attrs, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov exp_fmt, ##__VA_ARGS__); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ret = sysdb_error_to_errno(_sls_lret); \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov if (ret == EOK && (*_result)->count == 0) { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ret = ENOENT; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher } \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher} while(0)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search User (by uid, sid or name) */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_search_user_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_uid(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uid_t uid,
274fe6a4f8bcb23e31929430110c0b52e9ce233aJakub Hrozek const char **attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_sid_str(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sid_str,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_upn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sid_str,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search Group (by gid, sid or name) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_gid(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_sid_str(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sid_str,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search Netgroup (by name) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_netgroup_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message **msg);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace entry attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *entry_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int mod_op);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace user attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_user_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int mod_op);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace group attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_group_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov int mod_op);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace netgroup attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_netgroup_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int mod_op);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Allocate a new id */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_new_id(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t *id);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add user (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uid_t uid, gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *gecos,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *homedir,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *shell);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add user (all checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uid_t uid, gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *gecos,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *homedir,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *shell,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *orig_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int cache_timeout,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t now);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Add group (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, gid_t gid);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add group (all checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int cache_timeout,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t now);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_add_incomplete_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *original_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sid_str,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool posix,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t now);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add netgroup (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_netgroup(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name, const char *description);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_netgroup(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *description,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov char **missing,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int cache_timeout,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov time_t now);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* mod_op must be either LDB_FLAG_MOD_ADD or LDB_FLAG_MOD_DELETE */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_mod_group_member(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov struct ldb_dn *member_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *group_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int mod_op);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_store_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *pwd,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uid_t uid, gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *gecos,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *homedir,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *shell,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *orig_dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char **remove_attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint64_t cache_timeout,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t now);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_store_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher gid_t gid,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint64_t cache_timeout,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t now);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherenum sysdb_member_type {
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_MEMBER_USER,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_MEMBER_GROUP,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_MEMBER_NETGROUP,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher SYSDB_MEMBER_SERVICE,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher};
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_group_member(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *group,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *member,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum sysdb_member_type type,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool is_dn);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_remove_group_member(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *group,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *member,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum sysdb_member_type type,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool is_dn);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_members(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *member,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum sysdb_member_type type,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *add_groups,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *del_groups);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_members_dn(struct sss_domain_info *member_domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *member,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum sysdb_member_type type,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *add_groups,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *del_groups);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Password caching function.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * If you are in a transaction ignore sysdb and pass in the handle.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * If you are not in a transaction pass NULL in handle and provide sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * in this case a transaction will be automatically started and the
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce * function will be completely wrapped in it's own sysdb transaction */
f7fa22da5d865221f84371d6b522444e1591164cSumit Boseint sysdb_cache_password(struct sss_domain_info *domain,
64af76e2bef2565caa9738f675c108a4b3789237Simo Sorce const char *username,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *password);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t check_failed_login_attempts(struct confdb_ctx *cdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message *ldb_msg,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher uint32_t *failed_login_attempts,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher time_t *delayed_until);
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_cache_auth(struct sss_domain_info *domain,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher const char *name,
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce const char *password,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher struct confdb_ctx *cdb,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov bool just_check,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher time_t *_expire_date,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher time_t *_delayed_until);
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_store_custom(struct sss_domain_info *domain,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher const char *object_name,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher const char *subtree_name,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher struct sysdb_attrs *attrs);
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorceint sysdb_search_custom(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *filter,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher const char *subtree_name,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher const char **attrs,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher size_t *msgs_count,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagher struct ldb_message ***msgs);
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_search_custom_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *object_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *subtree_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *_count,
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce struct ldb_message ***_msgs);
64af76e2bef2565caa9738f675c108a4b3789237Simo Sorce
9acfb09f7969a69f58bd45c856b01700541853caLukas Slebodnikint sysdb_delete_custom(struct sss_domain_info *domain,
64af76e2bef2565caa9738f675c108a4b3789237Simo Sorce const char *object_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *subtree_name);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_asq_search(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *base_dn,
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek const char *expression,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *asq_attribute,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *msgs_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message ***msgs);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_search_users(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sub_filter,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *msgs_count,
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce struct ldb_message ***msgs);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, uid_t uid);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_groups(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sub_filter,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *msgs_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message ***msgs);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, gid_t gid);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_netgroups(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sub_filter,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher size_t *msgs_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_message ***msgs);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_netgroup(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
71829db25d6a0beb63066d912702ac1b7787dbe2Jakub Hrozekint sysdb_delete_by_sid(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *sid_str);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_to_list(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_attrs **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher int attr_count,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *attr_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char ***_list);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_netgr_to_entries(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_result *res,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sysdb_netgroup_ctx ***entries);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashoverrno_t sysdb_dn_sanitize(TALLOC_CTX *mem_ctx, const char *input,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher char **sanitized);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_bool(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *dn,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *attr_name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool *value);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct ldb_dn *dn,
const char *cn_value,
const char *attr_name,
bool value);
errno_t sysdb_has_enumerated(struct sss_domain_info *domain,
bool *has_enumerated);
errno_t sysdb_set_enumerated(struct sss_domain_info *domain,
bool enumerated);
errno_t sysdb_remove_attrs(struct sss_domain_info *domain,
const char *name,
enum sysdb_member_type type,
char **remove_attrs);
errno_t sysdb_get_direct_parents(TALLOC_CTX *mem_ctx,
struct sss_domain_info *dom,
enum sysdb_member_type mtype,
const char *name,
char ***_direct_parents);
/* === Functions related to ID-mapping === */
#define SYSDB_IDMAP_CONTAINER "cn=id_mappings"
#define SYSDB_IDMAP_SUBTREE "idmap"
#define SYSDB_IDMAP_MAPPING_OC "id_mapping"
#define SYSDB_IDMAP_FILTER "(objectClass="SYSDB_IDMAP_MAPPING_OC")"
#define SYSDB_IDMAP_SID_ATTR "objectSID"
#define SYSDB_IDMAP_SLICE_ATTR "slice"
#define SYSDB_IDMAP_ATTRS { \
SYSDB_NAME, \
SYSDB_IDMAP_SID_ATTR, \
SYSDB_IDMAP_SLICE_ATTR, \
NULL }
#define SYSDB_TMPL_IDMAP_BASE SYSDB_IDMAP_CONTAINER",cn=%s,"SYSDB_BASE
#define SYSDB_TMPL_IDMAP SYSDB_IDMAP_SID_ATTR"=%s,"SYSDB_TMPL_IDMAP_BASE
errno_t sysdb_idmap_store_mapping(struct sss_domain_info *domain,
const char *dom_name,
const char *dom_sid,
id_t slice_num);
errno_t sysdb_idmap_get_mappings(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
struct ldb_result **_result);
errno_t sysdb_search_object_by_sid(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
const char *sid_str,
const char **attrs,
struct ldb_result **msg);
/* === Functions related to GPOs === */
#define SYSDB_GPO_CONTAINER "cn=gpos,cn=ad,cn=custom"
/* === Functions related to GPO entries === */
#define SYSDB_GPO_OC "gpo"
#define SYSDB_GPO_FILTER "(objectClass="SYSDB_GPO_OC")"
#define SYSDB_GPO_GUID_FILTER "(&(objectClass="SYSDB_GPO_OC")("SYSDB_GPO_GUID_ATTR"=%s))"
#define SYSDB_GPO_GUID_ATTR "gpoGUID"
#define SYSDB_GPO_VERSION_ATTR "gpoVersion"
#define SYSDB_GPO_TIMEOUT_ATTR "gpoPolicyFileTimeout"
#define SYSDB_TMPL_GPO_BASE SYSDB_GPO_CONTAINER","SYSDB_DOM_BASE
#define SYSDB_TMPL_GPO SYSDB_GPO_GUID_ATTR"=%s,"SYSDB_TMPL_GPO_BASE
#define SYSDB_GPO_ATTRS { \
SYSDB_NAME, \
SYSDB_GPO_GUID_ATTR, \
SYSDB_GPO_VERSION_ATTR, \
SYSDB_GPO_TIMEOUT_ATTR, \
NULL }
errno_t sysdb_gpo_store_gpo(struct sss_domain_info *domain,
const char *gpo_guid,
int gpo_version,
int cache_timeout,
time_t now);
errno_t sysdb_gpo_get_gpo_by_guid(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
const char *gpo_guid,
struct ldb_result **_result);
errno_t sysdb_gpo_get_gpos(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
struct ldb_result **_result);
/* === Functions related to GPO Result object === */
#define SYSDB_GPO_RESULT_OC "gpo_result"
#define SYSDB_GPO_RESULT_FILTER "(objectClass="SYSDB_GPO_RESULT_OC")"
#define SYSDB_TMPL_GPO_RESULT_BASE SYSDB_GPO_CONTAINER","SYSDB_DOM_BASE
#define SYSDB_TMPL_GPO_RESULT "cn=%s,"SYSDB_TMPL_GPO_RESULT_BASE
errno_t sysdb_gpo_get_gpo_result_object(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
struct ldb_result **_result);
errno_t sysdb_gpo_delete_gpo_result_object(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain);
errno_t sysdb_gpo_store_gpo_result_setting(struct sss_domain_info *domain,
const char *policy_setting_key,
const char *policy_setting_value);
errno_t sysdb_gpo_get_gpo_result_setting(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
const char *policy_setting_key,
const char **policy_setting_value);
#endif /* __SYS_DB_H__ */