mirror of
https://github.com/altlinux/admc.git
synced 2025-09-10 17:44:16 +03:00
load linked policies under OU's
in policy tree
This commit is contained in:
@@ -369,6 +369,10 @@ QString AdConfig::extended_rights_dn() const {
|
|||||||
return QString("CN=Extended-Rights,%1").arg(configuration_dn());
|
return QString("CN=Extended-Rights,%1").arg(configuration_dn());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString AdConfig::policies_dn() const {
|
||||||
|
return QString("CN=Policies,CN=System,%1").arg(domain_dn());
|
||||||
|
}
|
||||||
|
|
||||||
bool AdConfig::control_is_supported(const QString &control_oid) const {
|
bool AdConfig::control_is_supported(const QString &control_oid) const {
|
||||||
const bool supported = d->supported_control_list.contains(control_oid);
|
const bool supported = d->supported_control_list.contains(control_oid);
|
||||||
|
|
||||||
|
@@ -58,6 +58,7 @@ public:
|
|||||||
QString schema_dn() const;
|
QString schema_dn() const;
|
||||||
QString partitions_dn() const;
|
QString partitions_dn() const;
|
||||||
QString extended_rights_dn() const;
|
QString extended_rights_dn() const;
|
||||||
|
QString policies_dn() const;
|
||||||
bool control_is_supported(const QString &control_oid) const;
|
bool control_is_supported(const QString &control_oid) const;
|
||||||
|
|
||||||
QString get_attribute_display_name(const Attribute &attribute, const ObjectClass &objectClass) const;
|
QString get_attribute_display_name(const Attribute &attribute, const ObjectClass &objectClass) const;
|
||||||
|
@@ -95,6 +95,51 @@ void PolicyOUImpl::fetch(const QModelIndex &index) {
|
|||||||
// at the bottom of the policy tree
|
// at the bottom of the policy tree
|
||||||
console->set_item_sort_index(all_policies_item->index(), 1);
|
console->set_item_sort_index(all_policies_item->index(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add policies linked to this OU
|
||||||
|
if (!is_domain) {
|
||||||
|
const QList<QString> gpo_list = [&]() {
|
||||||
|
const AdObject parent_object = ad.search_object(dn);
|
||||||
|
const QString gplink_string = parent_object.get_string(ATTRIBUTE_GPLINK);
|
||||||
|
const Gplink gplink = Gplink(gplink_string);
|
||||||
|
const QList<QString> out = gplink.get_gpo_list();
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}();
|
||||||
|
|
||||||
|
if (!gpo_list.isEmpty()) {
|
||||||
|
const QString base = g_adconfig->policies_dn();
|
||||||
|
const SearchScope scope = SearchScope_Children;
|
||||||
|
const QString filter = [&]() {
|
||||||
|
|
||||||
|
const QList<QString> subfilter_list = [&]() {
|
||||||
|
QList<QString> out;
|
||||||
|
|
||||||
|
for (const QString &gpo : gpo_list) {
|
||||||
|
const QString subfilter = filter_CONDITION(Condition_Equals, ATTRIBUTE_DN, gpo);
|
||||||
|
out.append(subfilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}();
|
||||||
|
|
||||||
|
const QString out = filter_OR(subfilter_list);
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}();
|
||||||
|
const QList<QString> attributes = {
|
||||||
|
ATTRIBUTE_DISPLAY_NAME
|
||||||
|
};
|
||||||
|
|
||||||
|
const QHash<QString, AdObject> results = ad.search(base, scope, filter, attributes);
|
||||||
|
|
||||||
|
for (const AdObject &object : results.values()) {
|
||||||
|
const QList<QStandardItem *> row = console->add_scope_item(ItemType_Policy, index);
|
||||||
|
|
||||||
|
console_policy_load(row, object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PolicyOUImpl::refresh(const QList<QModelIndex> &index_list) {
|
void PolicyOUImpl::refresh(const QList<QModelIndex> &index_list) {
|
||||||
|
Reference in New Issue
Block a user