sdap_sudo.h revision 260366c37cafab011cf48760eaf04282098ef800
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
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;
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina};
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina
260366c37cafab011cf48760eaf04282098ef800Pavel Březinaenum sdap_sudo_refresh_type {
260366c37cafab011cf48760eaf04282098ef800Pavel Březina SDAP_SUDO_REFRESH_FULL,
260366c37cafab011cf48760eaf04282098ef800Pavel Březina SDAP_SUDO_REFRESH_SMART,
260366c37cafab011cf48760eaf04282098ef800Pavel Březina SDAP_SUDO_REFRESH_RULES
260366c37cafab011cf48760eaf04282098ef800Pavel Březina};
260366c37cafab011cf48760eaf04282098ef800Pavel Březina
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek/* Common functions from ldap_sudo.c */
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozekvoid sdap_sudo_handler(struct be_req *breq);
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozekint sdap_sudo_init(struct be_ctx *be_ctx,
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek struct sdap_id_ctx *id_ctx,
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek struct bet_ops **ops,
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek void **pvt_data);
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek
5d00ee0e07dea78806df780db69e94900e5bb8c0Jakub Hrozek/* sdap async interface */
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březinastruct tevent_req *sdap_sudo_refresh_send(TALLOC_CTX *mem_ctx,
7a571a9d9be35360cc0f283fcd8124bda11ebf51Pavel Březina struct be_ctx *be_ctx,
7a571a9d9be35360cc0f283fcd8124bda11ebf51Pavel Březina struct sdap_options *opts,
751a7930d5af7c1a3c36936e3c5b9205189c6b92Pavel Březina struct sdap_id_conn_cache *conn_cache,
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,
f143937efc6cbb1eb84042979c83dd5b3f23a40cPavel Březina int *error,
4684d427e7e10642ceff62128c3d22db87872c4cPavel Březina char **usn,
4684d427e7e10642ceff62128c3d22db87872c4cPavel Březina size_t *num_rules);
efe918d7cb27a6ac5901748fc1f5879e3296c012Pavel Březina
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina/* timer */
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březinatypedef struct tevent_req * (*sdap_sudo_timer_fn_t)(TALLOC_CTX *mem_ctx,
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina struct sdap_sudo_ctx *sudo_ctx);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březinastruct tevent_req * sdap_sudo_timer_send(TALLOC_CTX *mem_ctx,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina struct tevent_context *ev,
7b74632f498dd1edf69294b597a4d92ec6d73b9fPavel Březina struct sdap_sudo_ctx *sudo_ctx,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina struct timeval when,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina time_t timeout,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina sdap_sudo_timer_fn_t fn);
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březinaint sdap_sudo_timer_recv(TALLOC_CTX *mem_ctx,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina struct tevent_req *req,
c407643004a02566e35a864ba0d8b0c0f88d9d67Pavel Březina struct tevent_req **_subreq);
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_ */