diff --git a/.gitignore b/.gitignore index 5a98fc1..eb27ffd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/freeipa-4.8.4.tar.gz +SOURCES/freeipa-4.8.7.tar.gz diff --git a/.ipa.metadata b/.ipa.metadata index 8d08b2e..f2e66c8 100644 --- a/.ipa.metadata +++ b/.ipa.metadata @@ -1 +1 @@ -72c91f01b2039795223417dc6761edf8ee0f36ee SOURCES/freeipa-4.8.4.tar.gz +0099d799a77a757eeb4a95a69a38bdec24e45026 SOURCES/freeipa-4.8.7.tar.gz diff --git a/README.debrand b/README.debrand deleted file mode 100644 index 01c46d2..0000000 --- a/README.debrand +++ /dev/null @@ -1,2 +0,0 @@ -Warning: This package was configured for automatic debranding, but the changes -failed to apply. diff --git a/SOURCES/0001-DNS-install-check-Fix-overlapping-DNS-zone-from-the-master-itself_2c2cef7_rhbz#1784003.patch b/SOURCES/0001-DNS-install-check-Fix-overlapping-DNS-zone-from-the-master-itself_2c2cef7_rhbz#1784003.patch deleted file mode 100644 index 9fba237..0000000 --- a/SOURCES/0001-DNS-install-check-Fix-overlapping-DNS-zone-from-the-master-itself_2c2cef7_rhbz#1784003.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 2c2cef7063315766d893b275185b422be3f3c019 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner -Date: Dec 16 2019 20:37:17 +0000 -Subject: DNS install check: Fix overlapping DNS zone from the master itself - - -The change to allow overlapping zone to be from the master itself has -introduced two issues: The check for the master itself should only executed -if options.force and options.allow_zone_overlap are both false and the -reverse zone check later on was still handling ValueError instead of -dnsutil.DNSZoneAlreadyExists. - -Both issues have been fixed and the deployment with existing name servers -is properly working again. - -Fixes: https://pagure.io/freeipa/issue/8150 -Signed-off-by: Thomas Woerner -Reviewed-By: Florence Blanc-Renaud - ---- - -diff --git a/ipaserver/install/dns.py b/ipaserver/install/dns.py -index 36ba6f8..9f08e86 100644 ---- a/ipaserver/install/dns.py -+++ b/ipaserver/install/dns.py -@@ -135,15 +135,15 @@ def install_check(standalone, api, replica, options, hostname): - logger.warning("%s Please make sure that the domain is " - "properly delegated to this IPA server.", - e) -- -- hst = dnsutil.DNSName(hostname).make_absolute().to_text() -- if hst not in e.kwargs['ns']: -- raise ValueError(str(e)) -+ else: -+ hst = dnsutil.DNSName(hostname).make_absolute().to_text() -+ if hst not in e.kwargs['ns']: -+ raise ValueError(str(e)) - - for reverse_zone in options.reverse_zones: - try: - dnsutil.check_zone_overlap(reverse_zone) -- except ValueError as e: -+ except dnsutil.DNSZoneAlreadyExists as e: - if options.force or options.allow_zone_overlap: - logger.warning('%s', str(e)) - else: - diff --git a/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch b/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch new file mode 100644 index 0000000..0f0d3a5 --- /dev/null +++ b/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch @@ -0,0 +1,293 @@ +From c2ba333b9681d008d9c528a79dbdd76ce11a3ecd Mon Sep 17 00:00:00 2001 +From: Serhii Tsymbaliuk +Date: Thu, 28 May 2020 08:47:49 +0200 +Subject: [PATCH 01/22] WebUI: Fix "IPA Error 3007: RequirmentError" while + adding idoverrideuser association + +Add builder for association adder dialog which allows to override behavior of the component. +Replace default implementation with a custom one for idoverrideuser. +Replace text filter with 'ID view' select box in the idoverrideuser dialog. + +Ticket: https://pagure.io/freeipa/issue/8335 + +Signed-off-by: Serhii Tsymbaliuk +Reviewed-By: Alexander Bokovoy +--- + install/ui/src/freeipa/association.js | 13 ++++- + install/ui/src/freeipa/dialog.js | 73 ++++++++++++++++----------- + install/ui/src/freeipa/group.js | 14 +++++ + install/ui/src/freeipa/idviews.js | 58 +++++++++++++++++++++ + ipaserver/plugins/internal.py | 6 +++ + 5 files changed, 133 insertions(+), 31 deletions(-) + +diff --git a/install/ui/src/freeipa/association.js b/install/ui/src/freeipa/association.js +index f10ccb2a5..b083a79f9 100644 +--- a/install/ui/src/freeipa/association.js ++++ b/install/ui/src/freeipa/association.js +@@ -25,6 +25,7 @@ + define([ + 'dojo/_base/lang', + 'dojo/Deferred', ++ './builder', + './metadata', + './ipa', + './jquery', +@@ -38,7 +39,7 @@ define([ + './facet', + './search', + './dialog'], +- function(lang, Deferred, metadata_provider, IPA, $, metadata, ++ function(lang, Deferred, builder, metadata_provider, IPA, $, metadata, + navigation, phases, reg, rpc, su, text) { + + /** +@@ -1209,7 +1210,8 @@ exp.association_facet = IPA.association_facet = function (spec, no_init) { + + var pkeys = that.data.result.result[that.get_attribute_name()]; + +- var dialog = IPA.association_adder_dialog({ ++ var dialog = builder.build('association_adder_dialog', { ++ $type: that.other_entity.name, + title: title, + entity: that.entity, + pkey: pkey, +@@ -1675,6 +1677,13 @@ IPA.attr_read_only_evaluator = function(spec) { + return that; + }; + ++// Create a registry for adder dialogs where key is name of 'other entity'. ++// It allows to override dialogs for some specific cases of association ++// creation. ++var dialog_builder = builder.get('association_adder_dialog'); ++dialog_builder.factory = IPA.association_adder_dialog; ++reg.set('association_adder_dialog', dialog_builder.registry); ++ + phases.on('registration', function() { + var w = reg.widget; + var f = reg.field; +diff --git a/install/ui/src/freeipa/dialog.js b/install/ui/src/freeipa/dialog.js +index c153120df..d67d63b6d 100644 +--- a/install/ui/src/freeipa/dialog.js ++++ b/install/ui/src/freeipa/dialog.js +@@ -919,35 +919,7 @@ IPA.adder_dialog = function(spec) { + 'class': 'input-group col-md-12 adder-dialog-top' + }).appendTo(container); + +- var filter_placeholder = text.get('@i18n:association.filter_placeholder'); +- filter_placeholder = filter_placeholder.replace('${other_entity}', +- that.other_entity.metadata.label); +- +- that.filter_field = $('', { +- type: 'text', +- name: 'filter', +- 'class': 'form-control', +- 'placeholder': filter_placeholder, +- keyup: function(event) { +- if (event.keyCode === keys.ENTER) { +- that.search(); +- return false; +- } +- } +- }).appendTo(input_group); +- +- var input_group_btn = $('
', { +- 'class': 'input-group-btn' +- }).appendTo(input_group); +- +- that.find_button = IPA.button({ +- name: 'find', +- label: '@i18n:buttons.filter', +- click: function() { +- that.search(); +- return false; +- } +- }).appendTo(input_group_btn); ++ that.filter_field = that.get_filter_field(input_group); + + var row = $('
', { 'class': 'row adder-dialog-main'}).appendTo(container); + // +@@ -1132,6 +1104,49 @@ IPA.adder_dialog = function(spec) { + return that.filter_field.val(); + }; + ++ /** ++ * Return field for filtering available items ++ * ++ * Default implementation returns text input + "Filter" button. ++ * It can be overridden. ++ * ++ * @param {HTMLElement} input_group - container for a filter field ++ * @return {HTMLElement} ++ */ ++ that.get_filter_field = function(input_group) { ++ var filter_placeholder = text.get( ++ '@i18n:association.filter_placeholder' ++ ).replace('${other_entity}', that.other_entity.metadata.label); ++ ++ var filter_field = $('', { ++ type: 'text', ++ name: 'filter', ++ 'class': 'form-control', ++ 'placeholder': filter_placeholder, ++ keyup: function(event) { ++ if (event.keyCode === keys.ENTER) { ++ that.search(); ++ return false; ++ } ++ } ++ }).appendTo(input_group); ++ ++ var input_group_btn = $('
', { ++ 'class': 'input-group-btn' ++ }).appendTo(input_group); ++ ++ that.find_button = IPA.button({ ++ name: 'find', ++ label: '@i18n:buttons.filter', ++ click: function() { ++ that.search(); ++ return false; ++ } ++ }).appendTo(input_group_btn); ++ ++ return filter_field; ++ }; ++ + /** + * Clear rows in available table + */ +diff --git a/install/ui/src/freeipa/group.js b/install/ui/src/freeipa/group.js +index e46d8c7e3..2984bd4b2 100644 +--- a/install/ui/src/freeipa/group.js ++++ b/install/ui/src/freeipa/group.js +@@ -205,6 +205,20 @@ return { + add_title: '@i18n:objects.group.add_into_sudo', + remove_method: 'remove_user', + remove_title: '@i18n:objects.group.remove_from_sudo' ++ }, ++ { ++ $type: 'association', ++ name: 'member_idoverrideuser', ++ associator: IPA.serial_associator, ++ add_title: '@i18n:objects.group.add_idoverride_user', ++ remove_title: '@i18n:objects.group.remove_idoverride_users', ++ columns: [ ++ { ++ name: 'ipaanchoruuid', ++ label: '@i18n:objects.idoverrideuser.anchor_label', ++ link: false ++ } ++ ] + } + ], + standard_association_facets: true, +diff --git a/install/ui/src/freeipa/idviews.js b/install/ui/src/freeipa/idviews.js +index 35dc998c8..a4fca6205 100644 +--- a/install/ui/src/freeipa/idviews.js ++++ b/install/ui/src/freeipa/idviews.js +@@ -966,6 +966,58 @@ idviews.unapply_action = function(spec) { + return that; + }; + ++idviews.idoverrideuser_adder_dialog = function(spec) { ++ ++ spec = spec || {}; ++ ++ var that = IPA.association_adder_dialog(spec); ++ ++ that.base_search = that.search; ++ ++ that.search = function() { ++ // Search for users only in case a ID view is selected ++ if (that.get_filter()) { ++ that.base_search(); ++ } ++ }; ++ ++ /** ++ * Replace default text filter with a select box for filtering by ID view ++ */ ++ that.get_filter_field = function(input_group) { ++ ++ var filter_field = $('