From 65608325529fef64b4292679d739c4597d57e9d3 Mon Sep 17 00:00:00 2001 From: Jonathan Tripathy Date: Wed, 21 Jan 2015 15:48:22 -0800 Subject: [PATCH] MODULES-753 Fixes user adding and removing using either UID or string username. Tested with both negated and non-negated values and works on all supported operating systems. Remote whitespace --- lib/puppet/type/firewall.rb | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/lib/puppet/type/firewall.rb b/lib/puppet/type/firewall.rb index b2bccb9..0895b6c 100644 --- a/lib/puppet/type/firewall.rb +++ b/lib/puppet/type/firewall.rb @@ -737,20 +737,37 @@ Puppet::Type.newtype(:firewall) do # between string usernames and UIDs (integers). We also need to ignore # spaces as they are irrelevant with respect to rule sync. + # Remove whitespace is = is.gsub(/\s+/,'') + should = @should.first.to_s.gsub(/\s+/,'') + # Keep track of negation, but remove the '!' + is_negate = '' + should_negate = '' if is.start_with?('!') - lookup_id = is.gsub(/^!/,'') - negate = '!' - else - lookup_id = is - negate = '' + is = is.gsub(/^!/,'') + is_negate = '!' + end + if should.start_with?('!') + should = should.gsub(/^!/,'') + should_negate = '!' end - resolve = Etc.getpwuid(Integer(lookup_id)).name - resolve_with_negate = "#{negate}#{resolve}" + # If 'should' contains anything other than digits, + # we assume that we have to do a lookup to convert + # to UID + unless should[/[0-9]+/] == should + should = Etc.getpwnam(should).uid + end + + # If 'is' contains anything other than digits, + # we assume that we have to do a lookup to convert + # to UID + unless is[/[0-9]+/] == is + is = Etc.getpwnam(is).uid + end - return is.to_s == @should.first.to_s.gsub(/\s+/,'') || resolve_with_negate == @should.first.to_s.gsub(/\s+/,'') + return "#{is_negate}#{is}" == "#{should_negate}#{should}" end end -- 2.45.2