2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/*
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina Authors:
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina Pavel Březina <pbrezina@redhat.com>
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina Copyright (C) 2011 Red Hat
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina This program is free software; you can redistribute it and/or modify
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina it under the terms of the GNU General Public License as published by
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina the Free Software Foundation; either version 3 of the License, or
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina (at your option) any later version.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina This program is distributed in the hope that it will be useful,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina GNU General Public License for more details.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina You should have received a copy of the GNU General Public License
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina*/
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#ifndef _SUDOSRV_PRIVATE_H_
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#define _SUDOSRV_PRIVATE_H_
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#include <stdint.h>
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#include <talloc.h>
b0abb3bfdfd95951a23c9fc223c735805ffd2969Pavel Březina#include <sys/types.h>
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#include "src/db/sysdb.h"
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#include "responder/common/responder.h"
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#define SSS_SUDO_ERROR_OK 0
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
c47e9d522f0d87259e5074ea643daaa3dfcb8d92Pavel Březinaenum sss_dp_sudo_type {
e5b34f0166ae61468e53f369578e691ddb09cdd0Pavel Březina SSS_DP_SUDO_REFRESH_RULES,
e5b34f0166ae61468e53f369578e691ddb09cdd0Pavel Březina SSS_DP_SUDO_FULL_REFRESH
c47e9d522f0d87259e5074ea643daaa3dfcb8d92Pavel Březina};
c47e9d522f0d87259e5074ea643daaa3dfcb8d92Pavel Březina
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březinaenum sss_sudo_type {
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březina SSS_SUDO_DEFAULTS,
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březina SSS_SUDO_USER
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březina};
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastruct sudo_ctx {
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina struct resp_ctx *rctx;
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina /*
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina * options
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina */
c9aab1c04c399ca2d1abef74f6df22ced34983dcPavel Březina bool timed;
52e3ee5c5ff2c5a4341041826a803ad42d2b2de7Pavel Březina bool inverse_order;
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina};
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastruct sudo_cmd_ctx {
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina struct cli_ctx *cli_ctx;
41ef946f3f74a46b9e26118116e4811e259b30efPavel Březina struct sudo_ctx *sudo_ctx;
76db25eab9010a33657f35e5afc8477c996df7a3Pavel Březina enum sss_sudo_type type;
b0abb3bfdfd95951a23c9fc223c735805ffd2969Pavel Březina
b0abb3bfdfd95951a23c9fc223c735805ffd2969Pavel Březina /* input data */
46d3d2c731e8c7e138462e5b60a39a279dc77d81Pavel Březina uid_t uid;
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březina char *rawname;
20f82655b3a29cf0784ba5c912927d1ada1287dfPavel Březina
b0abb3bfdfd95951a23c9fc223c735805ffd2969Pavel Březina /* output data */
b0abb3bfdfd95951a23c9fc223c735805ffd2969Pavel Březina struct sysdb_attrs **rules;
5ff1c3c5a12930692cb6284d14f7fda3a974af8ePavel Březina uint32_t num_rules;
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina};
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinastruct sss_cmd_table *get_sudo_cmds(void);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březinastruct tevent_req *sudosrv_get_rules_send(TALLOC_CTX *mem_ctx,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina struct tevent_context *ev,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina struct sudo_ctx *sudo_ctx,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina enum sss_sudo_type type,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina uid_t uid,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina const char *username);
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březinaerrno_t sudosrv_get_rules_recv(TALLOC_CTX *mem_ctx,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina struct tevent_req *req,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina struct sysdb_attrs ***_rules,
b3ca35780617b2e5a7637f9888b089e8e26a4e8cPavel Březina uint32_t *_num_rules);
c47e9d522f0d87259e5074ea643daaa3dfcb8d92Pavel Březina
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březinaerrno_t sudosrv_parse_query(TALLOC_CTX *mem_ctx,
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březina uint8_t *query_body,
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březina size_t query_len,
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březina char **_rawname,
15d41c8f28259061e39715acdbbbaea778b6ecc8Pavel Březina uid_t *_uid);
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březina
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březinaerrno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březina uint32_t error,
5ff1c3c5a12930692cb6284d14f7fda3a974af8ePavel Březina uint32_t rules_num,
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březina struct sysdb_attrs **rules,
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březina uint8_t **_response_body,
710472d946f6c337a095699dfd79134fa8b9eab9Pavel Březina size_t *_response_len);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozekstruct tevent_req *
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozeksss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek struct resp_ctx *rctx,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek struct sss_domain_info *dom,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek bool fast_reply,
3d55c65fbe50074f6a63dcb8ae866c038a9e6b2bStephen Gallagher enum sss_dp_sudo_type type,
e5b34f0166ae61468e53f369578e691ddb09cdd0Pavel Březina const char *name,
5ff1c3c5a12930692cb6284d14f7fda3a974af8ePavel Březina uint32_t num_rules,
e5b34f0166ae61468e53f369578e691ddb09cdd0Pavel Březina struct sysdb_attrs **rules);
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozekerrno_t
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozeksss_dp_get_sudoers_recv(TALLOC_CTX *mem_ctx,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek struct tevent_req *req,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek dbus_uint16_t *err_maj,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek dbus_uint32_t *err_min,
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek char **err_msg);
3b09b74bf65867d882af87ec60e2a517b15264a6Jakub Hrozek
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#endif /* _SUDOSRV_PRIVATE_H_ */