summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJosh Cooper <josh@puppetlabs.com>2011-05-31 09:15:37 -0700
committerJosh Cooper <josh@puppetlabs.com>2011-05-31 09:15:37 -0700
commit9834dcdd831092464143700010ae73544eea42e8 (patch)
tree70aa53510b6660fedf0ae445b57581f6359bee04 /lib
parentd0592fabd27472ba0f5586393eff20e536f8766a (diff)
parentc02126df4804b42ecaca2cdff675be9c4e24aa54 (diff)
downloadpuppet-9834dcdd831092464143700010ae73544eea42e8.tar.gz
puppet-9834dcdd831092464143700010ae73544eea42e8.tar.xz
puppet-9834dcdd831092464143700010ae73544eea42e8.zip
Merge branch 'ticket/2.7.x/5966-auth-conf-hostname-regex' into 2.7.x
* ticket/2.7.x/5966-auth-conf-hostname-regex: (#5966) Add support for hostname regular expressions in auth.conf
Diffstat (limited to 'lib')
-rwxr-xr-xlib/puppet/network/authstore.rb19
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/puppet/network/authstore.rb b/lib/puppet/network/authstore.rb
index 4ddd14feb..51fd34138 100755
--- a/lib/puppet/network/authstore.rb
+++ b/lib/puppet/network/authstore.rb
@@ -182,9 +182,11 @@ module Puppet
# we'll return a pattern of puppet.reductivelabs.com
def interpolate(match)
clone = dup
- clone.pattern = clone.pattern.reverse.collect do |p|
- p.gsub(/\$(\d)/) { |m| match[$1.to_i] }
- end.join(".")
+ if @name == :dynamic
+ clone.pattern = clone.pattern.reverse.collect do |p|
+ p.gsub(/\$(\d)/) { |m| match[$1.to_i] }
+ end.join(".")
+ end
clone
end
@@ -199,8 +201,13 @@ module Puppet
# Does the name match our pattern?
def matchname?(name)
- name = munge_name(name)
- (pattern == name) or (not exact? and pattern.zip(name).all? { |p,n| p == n })
+ case @name
+ when :domain, :dynamic, :opaque
+ name = munge_name(name)
+ (pattern == name) or (not exact? and pattern.zip(name).all? { |p,n| p == n })
+ when :regex
+ Regexp.new(pattern.slice(1..-2)).match(name)
+ end
end
# Convert the name to a common pattern.
@@ -240,6 +247,8 @@ module Puppet
[:dynamic,:exact,nil,munge_name(value)]
when /^\w[-.@\w]*$/ # ? Just like a host name but allow '@'s and ending '.'s
[:opaque,:exact,nil,[value]]
+ when /^\/.*\/$/ # a regular expression
+ [:regex,:inexact,nil,value]
else
raise AuthStoreError, "Invalid pattern #{value}"
end