sudosrv_private.h revision 536dcc7fb975acfc126846a889d90332304e88ba
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce/*
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce Authors:
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce Pavel Březina <pbrezina@redhat.com>
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce Copyright (C) 2011 Red Hat
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce This program is free software; you can redistribute it and/or modify
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce it under the terms of the GNU General Public License as published by
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce the Free Software Foundation; either version 3 of the License, or
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce (at your option) any later version.
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce This program is distributed in the hope that it will be useful,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce but WITHOUT ANY WARRANTY; without even the implied warranty of
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce GNU General Public License for more details.
287e76479d68db4134274d4a4fca5fe0fbc9a605Jan Cholasta
287e76479d68db4134274d4a4fca5fe0fbc9a605Jan Cholasta You should have received a copy of the GNU General Public License
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce along with this program. If not, see <http://www.gnu.org/licenses/>.
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce*/
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#ifndef _SUDOSRV_PRIVATE_H_
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#define _SUDOSRV_PRIVATE_H_
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#include <stdint.h>
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#include <talloc.h>
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek#include <sys/types.h>
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#include "src/db/sysdb.h"
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#include "responder/common/responder.h"
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#define SSS_SUDO_ERROR_OK 0
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceenum sss_dp_sudo_type {
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce SSS_DP_SUDO_REFRESH_RULES,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce SSS_DP_SUDO_FULL_REFRESH
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce};
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceenum sss_sudo_type {
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce SSS_SUDO_DEFAULTS,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce SSS_SUDO_USER
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce};
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct sudo_ctx {
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct resp_ctx *rctx;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce int neg_timeout;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sss_nc_ctx *ncache;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce /*
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce * options
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce */
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce bool timed;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce bool inverse_order;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce};
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct sudo_cmd_ctx {
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct cli_ctx *cli_ctx;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sudo_ctx *sudo_ctx;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce enum sss_sudo_type type;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce /* input data */
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uid_t uid;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce char *username;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce const char *orig_username;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce const char *cased_username;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sss_domain_info *domain;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce bool check_next;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint32_t expired_rules_num;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce /* output data */
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sysdb_attrs **rules;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint32_t num_rules;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce};
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct sudo_dom_ctx {
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sudo_cmd_ctx *cmd_ctx;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sss_domain_info *domain;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce bool check_provider;
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce};
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct sss_cmd_table *get_sudo_cmds(void);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t sudosrv_cmd_done(struct sudo_cmd_ctx *cmd_ctx, int ret);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t sudosrv_get_sudorules(struct sudo_dom_ctx *dctx);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct tevent_req *sudosrv_parse_query_send(TALLOC_CTX *mem_ctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct resp_ctx *rctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint8_t *query_body,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce size_t query_len);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t sudosrv_parse_query_recv(TALLOC_CTX *mem_ctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct tevent_req *req,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uid_t *_uid,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce char **_username,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sss_domain_info **_domain);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint32_t error,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint32_t rules_num,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sysdb_attrs **rules,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce uint8_t **_response_body,
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek size_t *_response_len);
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcestruct tevent_req *
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcesss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct resp_ctx *rctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct sss_domain_info *dom,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce bool fast_reply,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce enum sss_dp_sudo_type type,
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek const char *name,
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek uint32_t num_rules,
8a5931bcc8e9034e4beb92fc9addf3f7fcf83fd6Michal Zidek struct sysdb_attrs **rules);
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorceerrno_t
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorcesss_dp_get_sudoers_recv(TALLOC_CTX *mem_ctx,
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce struct tevent_req *req,
e61044d99ce1e68057fda236f04a731f1f3f299aMichal Zidek dbus_uint16_t *err_maj,
e61044d99ce1e68057fda236f04a731f1f3f299aMichal Zidek dbus_uint32_t *err_min,
e61044d99ce1e68057fda236f04a731f1f3f299aMichal Zidek char **err_msg);
13df7b9e400211c717284fb841c849ba034ed348Michal Zidek
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce#endif /* _SUDOSRV_PRIVATE_H_ */
10eae23e2483733d4ca3c21f15b5bdb3f04c9839Simo Sorce