0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu Yassir Elley <yelley@redhat.com>
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu Copyright (C) 2014 Red Hat
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu This program is free software; you can redistribute it and/or modify
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu it under the terms of the GNU General Public License as published by
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu the Free Software Foundation; either version 3 of the License, or
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu (at your option) any later version.
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu This program is distributed in the hope that it will be useful,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu but WITHOUT ANY WARRANTY; without even the implied warranty of
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu GNU General Public License for more details.
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu You should have received a copy of the GNU General Public License
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu along with this program. If not, see <http://www.gnu.org/licenses/>.
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescustatic struct ldb_dn *
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescusysdb_gpo_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *domain,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder ret = sysdb_dn_sanitize(NULL, gpo_guid, &clean_gpo_guid);
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu DEBUG(SSSDBG_TRACE_ALL, SYSDB_TMPL_GPO"\n", clean_gpo_guid, domain->name);
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu dn = ldb_dn_new_fmt(mem_ctx, domain->sysdb->ldb, SYSDB_TMPL_GPO,
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maedersysdb_gpo_store_gpo(struct sss_domain_info *domain,
b5056cf24da461ee868c4be7b803a76b677fa21dChristian Maeder update_msg->dn = sysdb_gpo_dn(update_msg, domain, gpo_guid);
30f8dde07878b0968841ecc0bdbc76e217607131Christian Maeder ret = sysdb_transaction_start(domain->sysdb);
30f8dde07878b0968841ecc0bdbc76e217607131Christian Maeder DEBUG(SSSDBG_CRIT_FAILURE, "Failed to start transaction\n");
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu /* Check for an existing gpo_guid entry */
30f8dde07878b0968841ecc0bdbc76e217607131Christian Maeder ret = sysdb_search_entry(tmp_ctx, domain->sysdb, update_msg->dn,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu /* Create new GPO */
30f8dde07878b0968841ecc0bdbc76e217607131Christian Maeder "Adding new GPO [gpo_guid:%s][gpo_version:%d]\n",
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder /* Add the objectClass */
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu lret = ldb_msg_add_empty(update_msg, SYSDB_OBJECTCLASS,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu lret = ldb_msg_add_string(update_msg, SYSDB_OBJECTCLASS,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu /* Add the GPO GUID */
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_GUID_ATTR,
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder lret = ldb_msg_add_string(update_msg, SYSDB_GPO_GUID_ATTR, gpo_guid);
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu /* Add the Version */
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_VERSION_ATTR,
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_VERSION_ATTR,
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder /* Add the Policy File Timeout */
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_TIMEOUT_ATTR,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu",
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder ((cache_timeout) ? (now + cache_timeout) : 0));
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu lret = ldb_add(domain->sysdb->ldb, update_msg);
30f8dde07878b0968841ecc0bdbc76e217607131Christian Maeder "Failed to add GPO: [%s]\n",
fa3f374c7da443b372c2560cbb7262edd732aa4dMihai Codescu /* Update the existing GPO */
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder DEBUG(SSSDBG_TRACE_ALL, "Updating new GPO [%s][%s]\n", domain->name, gpo_guid);
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder /* Add the Version */
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_VERSION_ATTR,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_VERSION_ATTR,
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu /* Add the Policy File Timeout */
0b06cf161496343f3320e45d228ad4bc2f1f2b0fMihai Codescu lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_TIMEOUT_ATTR,
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu",
d58b2e1dc7d2254fa2e10d8c0b5a498ac207d6eaChristian Maeder ((cache_timeout) ? (now + cache_timeout) : 0));
goto done;
goto done;
goto done;
goto done;
in_transaction = false;
done:
if (in_transaction) {
return ret;
const char *gpo_guid,
if (!base_dn) {
goto done;
if (lret) {
goto done;
goto done;
goto done;
done:
} else if (ret) {
return ret;
if (!base_dn) {
goto done;
if (lret) {
goto done;
goto done;
done:
} else if (ret) {
return ret;
static struct ldb_dn *
const char *result_name)
return NULL;
return dn;
const char *ini_key,
const char *ini_value)
if (!update_msg) {
goto done;
goto done;
goto done;
in_transaction = true;
NULL);
goto done;
goto done;
if (ini_value) {
NULL);
goto done;
goto done;
goto done;
if (ini_value) {
NULL);
goto done;
goto done;
NULL);
goto done;
goto done;
goto done;
goto done;
in_transaction = false;
done:
if (in_transaction) {
return ret;
static errno_t
const char **attrs,
if (!base_dn) {
goto done;
if (lret) {
goto done;
goto done;
done:
} else if (ret) {
return ret;
const char *ini_key,
const char **_ini_value)
goto done;
NULL);
goto done;
done:
} else if (ret) {
return ret;
goto done;
in_transaction = true;
goto done;
goto done;
goto done;
in_transaction = false;
done:
if (in_transaction) {
return ret;