e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina/*
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina Authors:
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina Pavel Březina <pbrezina@redhat.com>
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina Copyright (C) 2011 Red Hat
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina This program is free software; you can redistribute it and/or modify
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina it under the terms of the GNU General Public License as published by
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina the Free Software Foundation; either version 3 of the License, or
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina (at your option) any later version.
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina This program is distributed in the hope that it will be useful,
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina GNU General Public License for more details.
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina You should have received a copy of the GNU General Public License
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina*/
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#ifndef _SDAP_SUDO_H_
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define _SDAP_SUDO_H_
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
cc2d77d5218c188119fa954c856e858cbde76947Pavel Březina#include "providers/backend.h"
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březina#include "providers/ldap/ldap_common.h"
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březina
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březinastruct sdap_sudo_ctx {
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina struct sdap_id_ctx *id_ctx;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina char **hostnames;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina char **ip_addr;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina bool include_netgroups;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina bool include_regexp;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina bool use_host_filter;
fb67530ec34740a18f56ff56614898d2bdaee36fPavel Březina
fb67530ec34740a18f56ff56614898d2bdaee36fPavel Březina bool full_refresh_done;
cb235ec146f1ba81c211f8506736edea436be28aPavel Březina
cb235ec146f1ba81c211f8506736edea436be28aPavel Březina bool run_hostinfo;
260366c37cafab011cf48760eaf04282098ef800Pavel Březina};
260366c37cafab011cf48760eaf04282098ef800Pavel Březina
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek/* Common functions from ldap_sudo.c */
895b8d884d0f5277e181fe1212ec0c0daaf3977dPavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březinaerrno_t sdap_sudo_init(TALLOC_CTX *mem_ctx,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina struct be_ctx *be_ctx,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina struct sdap_id_ctx *id_ctx,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina struct dp_method *dp_methods);
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek/* sdap async interface */
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březinastruct tevent_req *sdap_sudo_refresh_send(TALLOC_CTX *mem_ctx,
1ab2b07c71da6c19c3855e390d10156d598c06a2Pavel Březina struct sdap_sudo_ctx *sudo_ctx,
751a7930d5af7c1a3c36936e3c5b9205189c6b92Pavel Březina const char *ldap_filter,
751a7930d5af7c1a3c36936e3c5b9205189c6b92Pavel Březina const char *sysdb_filter);
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březina
f143937efc6cbb1eb84042979c83dd5b3f23a40cPavel Březinaint sdap_sudo_refresh_recv(TALLOC_CTX *mem_ctx,
f143937efc6cbb1eb84042979c83dd5b3f23a40cPavel Březina struct tevent_req *req,
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březina int *dp_error,
4684d427e7e10642ceff62128c3d22db87872c4cPavel Březina size_t *num_rules);
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březina
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinastruct tevent_req *sdap_sudo_full_refresh_send(TALLOC_CTX *mem_ctx,
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březina struct sdap_sudo_ctx *sudo_ctx);
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březina
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinaint sdap_sudo_full_refresh_recv(struct tevent_req *req,
fc19031212369d69a9693ac8777ce1e61a16fe93Pavel Březina int *dp_error);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinastruct tevent_req *sdap_sudo_smart_refresh_send(TALLOC_CTX *mem_ctx,
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březina struct sdap_sudo_ctx *sudo_ctx);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinaint sdap_sudo_smart_refresh_recv(struct tevent_req *req,
fc19031212369d69a9693ac8777ce1e61a16fe93Pavel Březina int *dp_error);
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březina
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březinastruct tevent_req *sdap_sudo_rules_refresh_send(TALLOC_CTX *mem_ctx,
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březina struct sdap_sudo_ctx *sudo_ctx,
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březina char **rules);
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březina
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březinaint sdap_sudo_rules_refresh_recv(struct tevent_req *req,
00fea5c2aaa0277bea522d2f61de75699ee2ed49Pavel Březina int *dp_error,
fc19031212369d69a9693ac8777ce1e61a16fe93Pavel Březina bool *deleted);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinaerrno_t
a13cf3d295a4a6654dfa7e4193c0a2bc8bb78e92Pavel Březinasdap_sudo_ptask_setup(struct be_ctx *be_ctx, struct sdap_sudo_ctx *sudo_ctx);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina/* host info */
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březinastruct tevent_req * sdap_sudo_get_hostinfo_send(TALLOC_CTX *mem_ctx,
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina struct sdap_options *opts,
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina struct be_ctx *be_ctx);
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březinaint sdap_sudo_get_hostinfo_recv(TALLOC_CTX *mem_ctx,
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina struct tevent_req *req,
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina char ***hostnames, char ***ip_addr);
5f73b623fc72e3b9b3590420825f30e618b4d4ddPavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina/* (&(objectClass=sudoRole)(|(cn=defaults)(sudoUser=ALL)%s)) */
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_FILTER_USER "(&(objectClass=%s)(|(%s=%s)(%s=ALL)%s))"
72985dbeba2d2eb8bc94d9ce62424aa6045c03cbPavel Březina#define SDAP_SUDO_FILTER_CLASS "(objectClass=%s)"
7a571a9d9be35360cc0f283fcd8124bda11ebf51Pavel Březina#define SDAP_SUDO_FILTER_DEFAULTS "(&(objectClass=%s)(%s=%s))"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_DEFAULTS "defaults"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_FILTER_USERNAME "(%s=%s)"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_FILTER_UID "(%s=#%u)"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_FILTER_GROUP "(%s=%%%s)"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#define SDAP_SUDO_FILTER_NETGROUP "(%s=+%s)"
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina
e9eeb4302e0e426c6cc1a4e65b95a6f7066e80b9Pavel Březina#endif /* _SDAP_SUDO_H_ */