1
0
mirror of https://github.com/altlinux/admc.git synced 2025-02-04 09:47:02 +03:00

load linked policies under OU's

in policy tree
This commit is contained in:
kevl 2022-05-16 15:33:09 +04:00
parent 2dfe183132
commit 49e5652ae3
3 changed files with 50 additions and 0 deletions

View File

@ -369,6 +369,10 @@ QString AdConfig::extended_rights_dn() const {
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 {
const bool supported = d->supported_control_list.contains(control_oid);

View File

@ -58,6 +58,7 @@ public:
QString schema_dn() const;
QString partitions_dn() const;
QString extended_rights_dn() const;
QString policies_dn() const;
bool control_is_supported(const QString &control_oid) const;
QString get_attribute_display_name(const Attribute &attribute, const ObjectClass &objectClass) const;

View File

@ -95,6 +95,51 @@ void PolicyOUImpl::fetch(const QModelIndex &index) {
// at the bottom of the policy tree
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) {