sysdb_autofs.c revision 6ab9f4763b516c3a7cdc021f501f276dd805fc97
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek Jakub Hrozek <jhrozek@redhat.com>
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek Copyright (C) 2012 Red Hat
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek This program is free software; you can redistribute it and/or modify
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek it under the terms of the GNU General Public License as published by
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek the Free Software Foundation; either version 3 of the License, or
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek (at your option) any later version.
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek This program is distributed in the hope that it will be useful,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek but WITHOUT ANY WARRANTY; without even the implied warranty of
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek GNU General Public License for more details.
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek You should have received a copy of the GNU General Public License
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek along with this program. If not, see <http://www.gnu.org/licenses/>.
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek#define SYSDB_TMPL_AUTOFS_ENTRY SYSDB_NAME"=%s,"SYSDB_TMPL_CUSTOM
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozekstatic struct ldb_dn *
95f5e7963a36b7b68859ce91ae4b232088bbaa09Jakub Hrozek return sysdb_custom_dn(sysdb, mem_ctx, map_name, AUTOFS_MAP_SUBDIR);
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozekstatic struct ldb_dn *
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek const char *rdn;
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek ret = sysdb_dn_sanitize(tmp_ctx, entry_name, &clean_name);
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek ret = sysdb_dn_sanitize(tmp_ctx, entry_value, &clean_value);
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek rdn = talloc_asprintf(tmp_ctx, "%s%s", clean_name, clean_value);
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek dn = ldb_dn_new_fmt(mem_ctx, sysdb->ldb, SYSDB_TMPL_AUTOFS_ENTRY,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozeksysdb_save_autofsmap(struct sysdb_ctx *sysdb_ctx,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek const char *name,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_TRACE_FUNC, ("Adding autofs map %s\n", autofsmapname));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_OBJECTCLASS,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set map object class [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_AUTOFS_MAP_NAME, autofsmapname);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set map name [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_NAME, name);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set name attribute [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_time_t(attrs, SYSDB_LAST_UPDATE, now);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set sysdb lastUpdate [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_time_t(attrs, SYSDB_CACHE_EXPIRE,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set sysdb cache expire [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_store_custom(sysdb_ctx, name, AUTOFS_MAP_SUBDIR, attrs);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("sysdb_store_custom failed [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozeksysdb_delete_autofsmap(struct sysdb_ctx *sysdb_ctx,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek const char *name)
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_TRACE_FUNC, ("Deleting autofs map %s\n", name));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek return sysdb_delete_custom(sysdb_ctx, name, AUTOFS_MAP_SUBDIR);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sss_filter_sanitize(tmp_ctx, map_name, &safe_map_name);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ("Cannot sanitize map [%s] error [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek filter = talloc_asprintf(tmp_ctx, "(&(objectclass=%s)(%s=%s))",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek SYSDB_AUTOFS_MAP_OC, SYSDB_NAME, safe_map_name);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_search_custom(tmp_ctx, sysdb, filter,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ("Error looking up autofs map [%s]", safe_map_name));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ("More than one map named %s\n", safe_map_name));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozeksysdb_save_autofsentry(struct sysdb_ctx *sysdb_ctx,
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek const char *map,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek const char *key,
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek const char *name;
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ("Adding autofs entry [%s] - [%s]\n", key, value));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_OBJECTCLASS,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set entry object class [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_AUTOFS_ENTRY_KEY, key);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set entry key [%d]: %s\n",
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_AUTOFS_ENTRY_VALUE, value);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set entry key [%d]: %s\n",
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek name = talloc_asprintf(tmp_ctx, "%s%s", key, value);
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek ret = sysdb_attrs_add_string(attrs, SYSDB_NAME, name);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("Could not set name attribute [%d]: %s\n",
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek dn = sysdb_autofsentry_dn(tmp_ctx, sysdb_ctx, map, key, value);
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozeksysdb_del_autofsentry(struct sysdb_ctx *sysdb_ctx,
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek const char *map,
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek const char *key,
e75a152157e054a2ed46acecbe8b5cfb9853773cJakub Hrozek dn = sysdb_autofsentry_dn(sysdb_ctx, sysdb_ctx, map, key, value);
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozeksysdb_autofs_entries_by_map(TALLOC_CTX *mem_ctx,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek const char *attrs[] = { SYSDB_AUTOFS_ENTRY_KEY,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_TRACE_FUNC, ("Getting entries for map %s\n", mapname));
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek mapdn = sysdb_autofsmap_dn(tmp_ctx, sysdb, mapname);
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek filter = talloc_asprintf(tmp_ctx, "(objectclass=%s)",
f17d26a8db285622a5cd5f21c7488b62eedc2cf8Jakub Hrozek ret = sysdb_search_entry(tmp_ctx, sysdb, mapdn, LDB_SCOPE_ONELEVEL,
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_OP_FAILURE, ("sysdb search failed: %d\n", ret));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_TRACE_FUNC, ("No entries for the map\n"));
1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8Jakub Hrozek DEBUG(SSSDBG_TRACE_INTERNAL, ("found %d entries for map %s\n",
eb29ae58117ca88868491fe2240e27393c7a9068Jakub Hrozeksysdb_set_autofsmap_attr(struct sysdb_ctx *sysdb,
eb29ae58117ca88868491fe2240e27393c7a9068Jakub Hrozek const char *name,