From cda7d862bc4ced5e1c3979102a1aa919bed991c6 Mon Sep 17 00:00:00 2001 From: Tobias Kaesser Date: Wed, 6 Nov 2019 16:30:32 +0100 Subject: [PATCH] MODULES-10063, extend apt::key to support deeplinks, current implementation only supports baseurls --- REFERENCE.md | 2 +- lib/puppet/type/apt_key.rb | 2 +- manifests/key.pp | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 0987e27..d9175d5 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -520,7 +520,7 @@ Default value: `undef` ##### `server` -Data type: `Pattern[/\A((hkp|hkps|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$/]` +Data type: `Pattern[/\A((hkp|hkps|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?(\/[a-zA-Z\d\-_]+)*\/?$/]` Specifies a keyserver to provide the GPG key. Valid options: a string containing a domain name or a full URL (http://, https://, hkp:// or hkps://). The hkps:// protocol is currently only supported on Ubuntu 18.04. diff --git a/lib/puppet/type/apt_key.rb b/lib/puppet/type/apt_key.rb index 8c5c84c..e543b96 100644 --- a/lib/puppet/type/apt_key.rb +++ b/lib/puppet/type/apt_key.rb @@ -68,7 +68,7 @@ Puppet::Type.newtype(:apt_key) do desc 'The key server to fetch the key from based on the ID. It can either be a domain name or url.' defaultto :'keyserver.ubuntu.com' - newvalues(%r{\A((hkp|hkps|http|https)://)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$}) + newvalues(%r{\A((hkp|hkps|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?(\/[a-zA-Z\d\-_]+)*\/?$}) end newparam(:options) do diff --git a/manifests/key.pp b/manifests/key.pp index 8ef3ef1..1ffdef1 100644 --- a/manifests/key.pp +++ b/manifests/key.pp @@ -36,13 +36,13 @@ # Passes additional options to `apt-key adv --keyserver-options`. # define apt::key ( - Pattern[/\A(0x)?[0-9a-fA-F]{8}\Z/, /\A(0x)?[0-9a-fA-F]{16}\Z/, /\A(0x)?[0-9a-fA-F]{40}\Z/] $id = $title, - Enum['present', 'absent', 'refreshed'] $ensure = present, - Optional[String] $content = undef, - Optional[Pattern[/\Ahttps?:\/\//, /\Aftp:\/\//, /\A\/\w+/]] $source = undef, - Pattern[/\A((hkp|hkps|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$/] $server = $::apt::keyserver, - Boolean $weak_ssl = false, - Optional[String] $options = $::apt::key_options, + Pattern[/\A(0x)?[0-9a-fA-F]{8}\Z/, /\A(0x)?[0-9a-fA-F]{16}\Z/, /\A(0x)?[0-9a-fA-F]{40}\Z/] $id = $title, + Enum['present', 'absent', 'refreshed'] $ensure = present, + Optional[String] $content = undef, + Optional[Pattern[/\Ahttps?:\/\//, /\Aftp:\/\//, /\A\/\w+/]] $source = undef, + Pattern[/\A((hkp|hkps|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?(\/[a-zA-Z\d\-_]+)*\/?$/] $server = $::apt::keyserver, + Boolean $weak_ssl = false, + Optional[String] $options = $::apt::key_options, ) { case $ensure { -- 2.32.3