sss_override.c revision b69cb1787209e85cc246eb9a944242689bfe0c46
/*
Authors:
Pavel Březina <pbrezina@redhat.com>
Copyright (C) 2015 Red Hat
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include "tools/common/sss_tools.h"
#define LOCALVIEW SYSDB_LOCAL_VIEW_NAME
struct override_user {
const char *input_name;
const char *orig_name;
struct sss_domain_info *domain;
const char *name;
const char *home;
const char *shell;
const char *gecos;
};
struct override_group {
const char *input_name;
const char *orig_name;
struct sss_domain_info *domain;
const char *name;
};
struct sss_tool_ctx *tool_ctx,
struct poptOption *options,
const char **_input_name,
const char **_orig_name,
struct sss_domain_info **_domain)
{
enum sss_tool_opt require;
const char *input_name;
const char *orig_name;
struct sss_domain_info *domain;
int ret;
"object."), &input_name);
if (ret != EXIT_SUCCESS) {
return ret;
}
return ret;
}
*_orig_name = orig_name;
return EXIT_SUCCESS;
}
struct sss_tool_ctx *tool_ctx,
struct override_user *user)
{
struct poptOption options[] = {
};
}
struct sss_tool_ctx *tool_ctx,
struct override_user *user)
{
}
struct sss_tool_ctx *tool_ctx,
struct override_group *group)
{
struct poptOption options[] = {
};
}
struct sss_tool_ctx *tool_ctx,
struct override_group *group)
{
}
{
return ret;
}
if (is_local_view(viewname)) {
goto done;
"Only one view is supported. Nothing to do.\n", viewname);
goto done;
}
}
printf("SSSD needs to be restarted for the changes to take effect.\n");
}
done:
return ret;
}
{
char *anchor;
char *safe_dn;
return NULL;
}
return anchor;
}
const char *name,
const char *home,
const char *shell,
const char *gecos)
{
struct sysdb_attrs *attrs;
return NULL;
}
goto done;
}
}
if (uid != 0) {
goto done;
}
}
if (gid != 0) {
goto done;
}
}
goto done;
}
}
goto done;
}
}
goto done;
}
}
done:
return NULL;
}
return attrs;
}
struct override_user *user)
{
}
struct override_group *group)
{
}
enum sysdb_member_type type,
const char *name,
struct sss_domain_info *domain,
struct sss_domain_info *domains,
struct sss_domain_info **_new_domain)
{
struct sss_domain_info *dom;
struct ldb_result *res;
const char *dn;
const char *strtype;
bool check_next;
return NULL;
}
/* Ensure that the object is in cache. */
switch (type) {
case SYSDB_MEMBER_USER:
goto done;
}
break;
case SYSDB_MEMBER_GROUP:
goto done;
}
break;
default:
ret = ERR_INTERNAL;
goto done;
}
/* Find domain if it is unknown. */
check_next = true;
} else {
check_next = false;
}
do {
switch (type) {
case SYSDB_MEMBER_USER:
strtype = "user";
break;
case SYSDB_MEMBER_GROUP:
strtype = "group";
break;
default:
ret = ERR_INTERNAL;
goto done;
}
if (check_next) {
continue;
}
}
goto done;
ret = ERR_INTERNAL;
goto done;
}
check_next = false;
goto done;
}
goto done;
}
*_new_domain = dom;
done:
return NULL;
}
return dn;
}
struct sss_domain_info *domains,
struct override_user *user)
{
}
struct sss_domain_info *domains,
struct override_group *group)
{
}
enum sysdb_member_type type,
struct sysdb_attrs *attrs,
const char *obj_dn)
{
const char *anchor;
return ENOMEM;
}
goto done;
}
goto done;
}
goto done;
}
done:
return ret;
}
const char *obj_dn)
{
const char *anchor;
struct ldb_dn *override_dn;
struct ldb_message *msg;
int sret;
bool in_transaction = false;
return ENOMEM;
}
goto done;
}
if (override_dn == NULL) {
goto done;
}
goto done;
}
in_transaction = true;
goto done;
}
goto done;
}
goto done;
}
if (ret != LDB_SUCCESS) {
goto done;
}
"ldb_modify() failed: [%s](%d)[%s]\n",
goto done;
}
goto done;
}
in_transaction = false;
done:
if (in_transaction) {
}
}
return ret;
}
struct sss_tool_ctx *tool_ctx,
void *pvt)
{
struct sysdb_attrs *attrs;
const char *dn;
int ret;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
struct sss_tool_ctx *tool_ctx,
void *pvt)
{
const char *dn;
int ret;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
struct sss_tool_ctx *tool_ctx,
void *pvt)
{
struct sysdb_attrs *attrs;
const char *dn;
int ret;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
struct sss_tool_ctx *tool_ctx,
void *pvt)
{
const char *dn;
int ret;
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
{
struct sss_route_cmd commands[] = {
{"user-add", override_user_add},
{"user-del", override_user_del},
{"group-add", override_group_add},
{"group-del", override_group_del},
};
}